edit after chmod target dir
This commit is contained in:
parent
65015934d7
commit
e6044ae790
88 changed files with 9528 additions and 2 deletions
4
PKGBUILD
4
PKGBUILD
|
@ -32,8 +32,8 @@ install=$pkgname.install
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
install -d "$pkgdir"/etc
|
install -d "$pkgdir"/etc
|
||||||
cp -rf "$srcdir"/$pkgname-$pkgver/etc "$pkgdir"
|
cp -rf "$srcdir"/$pkgname/etc "$pkgdir"
|
||||||
install -d "$pkgdir"/usr
|
install -d "$pkgdir"/usr
|
||||||
cp -rf "$srcdir"/$pkgname-$pkgver/usr "$pkgdir"
|
cp -rf "$srcdir"/$pkgname/usr "$pkgdir"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
80
garuda-common-settings/FETCH_HEAD
Normal file
80
garuda-common-settings/FETCH_HEAD
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
65015934d7d06404a66deae70a893146ae254e6c not-for-merge branch 'bluish-branch' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
2c9248f9d75fc9958ee06f1e2c4bfd4ede0d5476 not-for-merge branch 'master' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
57cf5462ab1edf6914c38452360452e008d47f58 not-for-merge 'refs/merge-requests/2/head' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
0bf8cf28a13c7010324a67b414c7cde003ff8532 not-for-merge 'refs/merge-requests/2/merge' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
02c4c13a54ac43c56a1fb8ecf4ed75bb8fe6962a not-for-merge 'refs/merge-requests/3/head' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
8a79b923452c3683023f49c81d3c17663e6708a5 not-for-merge 'refs/merge-requests/3/merge' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
4a6e40fb542458949e7e273d3e4fdd9ab7e2fe48 not-for-merge 'refs/merge-requests/4/head' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
2e42d421ad96302b3ce626017f8ec8c015643eb8 not-for-merge 'refs/merge-requests/4/merge' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
cd6beb3941783761f21db742d31a5cb63fca68f7 not-for-merge 'refs/merge-requests/5/head' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
1b0bc10039c38736f81cf06e5ba9abf4d26026db not-for-merge 'refs/merge-requests/5/merge' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
0a7db7e485335b77c189bf17b0f4f2f6b746db8f not-for-merge 'refs/merge-requests/6/head' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
cf593f6d9f626d6508f838aa2d7c38452d0889c8 not-for-merge 'refs/merge-requests/6/merge' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
9211a58624f9df6f94720cc2928e77218f027cb6 not-for-merge 'refs/merge-requests/7/head' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
28c2124e52cbaccaa5e40ef7f2a4ac93afe7be41 not-for-merge 'refs/merge-requests/7/merge' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
ffa74e7dc3d136b29ee8ff39b379fd2874e8f425 not-for-merge tag '1.0.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
5093c511110ce0900461ffdf6d2e49e367e5e283 not-for-merge tag '1.1.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
5093c511110ce0900461ffdf6d2e49e367e5e283 not-for-merge tag '1.1.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
5093c511110ce0900461ffdf6d2e49e367e5e283 not-for-merge tag '1.1.3' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
31bd9f0e44aa973e03b35e1bf3f4eb92d8fe59e5 not-for-merge tag '1.2.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
fd710119c271a9a4209a3b09481761cce129ef2f not-for-merge tag '1.2.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
01852945b42f751a9c823bb3809ab704f1968fb7 not-for-merge tag '1.2.3' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
fc15f8b3eb1b51c38f5c7540e2b7564523e012ba not-for-merge tag '1.2.4' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
ced1c7c5bb3b1ebb49ff04bf9e6931d6ed2e1151 not-for-merge tag '1.2.5' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
6687f67fefa24c1fd49f4894be071c54833a6289 not-for-merge tag '1.2.6' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
97e5c3d781c1ec3838dcd04b2db7c0022550021e not-for-merge tag '1.2.7' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
23dfa2af146a85b86eb118cdd62dba5b325ba538 not-for-merge tag '1.2.8' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
00c7fcf3c7b33e081801f63123e5ca7e52da5eab not-for-merge tag '1.2.9' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
05bdada235ad778b4e338754740c7b73c2265aac not-for-merge tag '1.3.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
34ae9560c51f1394f6b19b88dcf7a37cb6bc1365 not-for-merge tag '1.3.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
1124414af8cd0cbbe3ae2789e00f4fa10fe508aa not-for-merge tag '1.4.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
7d93dbd35eba1d140f363ed74f7e8d9779db3903 not-for-merge tag '1.4.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
d9a3fbc93391cda432890c1a30c71fbd936631b3 not-for-merge tag '1.4.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
3008d02fee68a069769bd6adb59be80f68b50368 not-for-merge tag '1.4.3' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
2727cd113b61878821c676155bc70cb5817adee6 not-for-merge tag '1.4.4' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
4a6b288952e3f2072f1a5ff719b9e52ab6bcd8aa not-for-merge tag '1.4.5' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
034051cbb4edae0cc7f2f438d93e5940532ef6e9 not-for-merge tag '2.0.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
ae0ea6a329f227c5dd1b3cecfe2bd017ea289966 not-for-merge tag '2.0.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
509af3db23437db11b962afba2dd3f0c61362b94 not-for-merge tag '2.0.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
f1a8a1a7d68afaaa630545c01b0bf4f81b69ca21 not-for-merge tag '2.0.3' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
842bd9711343428f7e63beae611b59459affa125 not-for-merge tag '2.0.4' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
892ccc3b63e6867758202097b6a3dd63cc52c19b not-for-merge tag '2.1.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
d74438ee6fae0b2c1456884f445cdd587e8c6de9 not-for-merge tag '2.1.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
5a59260464009dbbb5dcb4cb3c5ed4d9941fa174 not-for-merge tag '2.1.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
f122c5aff7dcb378dcc12a6b4bf85c0fd9088a39 not-for-merge tag '2.2.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
dcaa1d32a32c2580a51f01b8ae56a17d9bba4114 not-for-merge tag '2.2.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
140795a08e75ef68d89c1bf46e52b6efcd2d0f0f not-for-merge tag '2.2.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
cd129aa9f4b2b67d0a81378c6e9c0ffbd367f07e not-for-merge tag '2.3.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
21b1a6be25060a73d95f27ddef2ce892aecb8483 not-for-merge tag '2.4.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
8dfe129aeafe0207a9125f8cca99b1fc02b3c238 not-for-merge tag '2.4.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
d5680db6ee6816635360b558da54ea72551cc30b not-for-merge tag '2.4.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
863c9b4e651c0c702ccd31baa1c475af41a0a29c not-for-merge tag '2.4.3' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
0e9dee7bccc00156e66d51cb142f288067bb08d3 not-for-merge tag '2.4.4' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
6a980152a69034362937c6579b06463b398f7167 not-for-merge tag '2.4.6' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
883261a610311023e5d6a438b0f768b6e30a5c7f not-for-merge tag '2.5.0' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
8d8de27eb84aac0a53187e901127595403ab6d8b not-for-merge tag '2.5.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
50577314227ce319d5e002610c59ecd65d5c5489 not-for-merge tag '2.5.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
8e5b36b2bd0a46901bf8320ed44e75b2dc392098 not-for-merge tag '2.5.3' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
5d44aed2ed5cbf3001b136ab1077f0991f0bdd43 not-for-merge tag '2.5.4' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
4907183622758d364ae9f574ff8d1b48c73854a0 not-for-merge tag '2.5.5' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
6089e29bd94ab7d2c69ad99a5d37a5c4e15a9602 not-for-merge tag '2.5.6' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
fa323e698984660635d70237b5f0b030bb704aff not-for-merge tag '2.5.7' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
58f1185dc7d564ef29edb99442bdd30de22437ee not-for-merge tag '2.5.8' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
3bee321867c0534ee63ac443bd7c69676b93e101 not-for-merge tag '2.6.1' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
8cd319e3ccc0cb48e26450dd9bb631f8ce59da83 not-for-merge tag '2.6.10' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
42cbbf597a60a4390206865e8fcf719b5585b97d not-for-merge tag '2.6.11' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
493d089b930cb5943e55dbca11d6380b2c8d49b8 not-for-merge tag '2.6.12' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
47fd8f533346cf5c78bec05d3408e4765cf767c1 not-for-merge tag '2.6.13' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
8183f88e2e5c8998ac9228905c135fa6fad39b8d not-for-merge tag '2.6.14' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
f9ed84e9448f063184aac27bee19b258f925cd7c not-for-merge tag '2.6.15' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
1a40ada700a376a6aa887e1836a9776dfabc4b02 not-for-merge tag '2.6.16' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
d1e980192ca29d3ee9c5eb8558b868310f686be0 not-for-merge tag '2.6.17' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
97ad33de505224bb4afaf8c1fdc5e8dd9d4690ac not-for-merge tag '2.6.18' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
711f32cfb9c58050d9583ad6e5ff28c16da1944e not-for-merge tag '2.6.2' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
709d32977b88091657d622e2f6b66c55fdd76824 not-for-merge tag '2.6.3' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
ef5d7f428a2d714b10ff47ea0a805d30e41c0472 not-for-merge tag '2.6.4' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
c1c82187419699accad2cbcb07d58af36c244172 not-for-merge tag '2.6.5' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
2987bba05374d6d1d6fc6c23a8831c0ed8cba6db not-for-merge tag '2.6.6' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
59d794d3a7bc87bdb8983cf49d5fda178e63d847 not-for-merge tag '2.6.7' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
636fe36eed56d22f976a04c0d95190699cdf236e not-for-merge tag '2.6.8' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
c3526753009f3ba5a2c3f896851d25b7bfab23df not-for-merge tag '2.6.9' of https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
1
garuda-common-settings/HEAD
Normal file
1
garuda-common-settings/HEAD
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ref: refs/heads/master
|
8
garuda-common-settings/config
Normal file
8
garuda-common-settings/config
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[core]
|
||||||
|
repositoryformatversion = 0
|
||||||
|
filemode = true
|
||||||
|
bare = true
|
||||||
|
[remote "origin"]
|
||||||
|
url = https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
fetch = +refs/*:refs/*
|
||||||
|
mirror = true
|
1
garuda-common-settings/description
Normal file
1
garuda-common-settings/description
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Unnamed repository; edit this file 'description' to name the repository.
|
15
garuda-common-settings/hooks/applypatch-msg.sample
Executable file
15
garuda-common-settings/hooks/applypatch-msg.sample
Executable file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to check the commit log message taken by
|
||||||
|
# applypatch from an e-mail message.
|
||||||
|
#
|
||||||
|
# The hook should exit with non-zero status after issuing an
|
||||||
|
# appropriate message if it wants to stop the commit. The hook is
|
||||||
|
# allowed to edit the commit message file.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "applypatch-msg".
|
||||||
|
|
||||||
|
. git-sh-setup
|
||||||
|
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
|
||||||
|
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
|
||||||
|
:
|
24
garuda-common-settings/hooks/commit-msg.sample
Executable file
24
garuda-common-settings/hooks/commit-msg.sample
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to check the commit log message.
|
||||||
|
# Called by "git commit" with one argument, the name of the file
|
||||||
|
# that has the commit message. The hook should exit with non-zero
|
||||||
|
# status after issuing an appropriate message if it wants to stop the
|
||||||
|
# commit. The hook is allowed to edit the commit message file.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "commit-msg".
|
||||||
|
|
||||||
|
# Uncomment the below to add a Signed-off-by line to the message.
|
||||||
|
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
||||||
|
# hook is more suited to it.
|
||||||
|
#
|
||||||
|
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||||
|
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
||||||
|
|
||||||
|
# This example catches duplicate Signed-off-by lines.
|
||||||
|
|
||||||
|
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
||||||
|
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
||||||
|
echo >&2 Duplicate Signed-off-by lines.
|
||||||
|
exit 1
|
||||||
|
}
|
174
garuda-common-settings/hooks/fsmonitor-watchman.sample
Executable file
174
garuda-common-settings/hooks/fsmonitor-watchman.sample
Executable file
|
@ -0,0 +1,174 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use IPC::Open2;
|
||||||
|
|
||||||
|
# An example hook script to integrate Watchman
|
||||||
|
# (https://facebook.github.io/watchman/) with git to speed up detecting
|
||||||
|
# new and modified files.
|
||||||
|
#
|
||||||
|
# The hook is passed a version (currently 2) and last update token
|
||||||
|
# formatted as a string and outputs to stdout a new update token and
|
||||||
|
# all files that have been modified since the update token. Paths must
|
||||||
|
# be relative to the root of the working tree and separated by a single NUL.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "query-watchman" and set
|
||||||
|
# 'git config core.fsmonitor .git/hooks/query-watchman'
|
||||||
|
#
|
||||||
|
my ($version, $last_update_token) = @ARGV;
|
||||||
|
|
||||||
|
# Uncomment for debugging
|
||||||
|
# print STDERR "$0 $version $last_update_token\n";
|
||||||
|
|
||||||
|
# Check the hook interface version
|
||||||
|
if ($version ne 2) {
|
||||||
|
die "Unsupported query-fsmonitor hook version '$version'.\n" .
|
||||||
|
"Falling back to scanning...\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $git_work_tree = get_working_dir();
|
||||||
|
|
||||||
|
my $retry = 1;
|
||||||
|
|
||||||
|
my $json_pkg;
|
||||||
|
eval {
|
||||||
|
require JSON::XS;
|
||||||
|
$json_pkg = "JSON::XS";
|
||||||
|
1;
|
||||||
|
} or do {
|
||||||
|
require JSON::PP;
|
||||||
|
$json_pkg = "JSON::PP";
|
||||||
|
};
|
||||||
|
|
||||||
|
launch_watchman();
|
||||||
|
|
||||||
|
sub launch_watchman {
|
||||||
|
my $o = watchman_query();
|
||||||
|
if (is_work_tree_watched($o)) {
|
||||||
|
output_result($o->{clock}, @{$o->{files}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub output_result {
|
||||||
|
my ($clockid, @files) = @_;
|
||||||
|
|
||||||
|
# Uncomment for debugging watchman output
|
||||||
|
# open (my $fh, ">", ".git/watchman-output.out");
|
||||||
|
# binmode $fh, ":utf8";
|
||||||
|
# print $fh "$clockid\n@files\n";
|
||||||
|
# close $fh;
|
||||||
|
|
||||||
|
binmode STDOUT, ":utf8";
|
||||||
|
print $clockid;
|
||||||
|
print "\0";
|
||||||
|
local $, = "\0";
|
||||||
|
print @files;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub watchman_clock {
|
||||||
|
my $response = qx/watchman clock "$git_work_tree"/;
|
||||||
|
die "Failed to get clock id on '$git_work_tree'.\n" .
|
||||||
|
"Falling back to scanning...\n" if $? != 0;
|
||||||
|
|
||||||
|
return $json_pkg->new->utf8->decode($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub watchman_query {
|
||||||
|
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
|
||||||
|
or die "open2() failed: $!\n" .
|
||||||
|
"Falling back to scanning...\n";
|
||||||
|
|
||||||
|
# In the query expression below we're asking for names of files that
|
||||||
|
# changed since $last_update_token but not from the .git folder.
|
||||||
|
#
|
||||||
|
# To accomplish this, we're using the "since" generator to use the
|
||||||
|
# recency index to select candidate nodes and "fields" to limit the
|
||||||
|
# output to file names only. Then we're using the "expression" term to
|
||||||
|
# further constrain the results.
|
||||||
|
my $last_update_line = "";
|
||||||
|
if (substr($last_update_token, 0, 1) eq "c") {
|
||||||
|
$last_update_token = "\"$last_update_token\"";
|
||||||
|
$last_update_line = qq[\n"since": $last_update_token,];
|
||||||
|
}
|
||||||
|
my $query = <<" END";
|
||||||
|
["query", "$git_work_tree", {$last_update_line
|
||||||
|
"fields": ["name"],
|
||||||
|
"expression": ["not", ["dirname", ".git"]]
|
||||||
|
}]
|
||||||
|
END
|
||||||
|
|
||||||
|
# Uncomment for debugging the watchman query
|
||||||
|
# open (my $fh, ">", ".git/watchman-query.json");
|
||||||
|
# print $fh $query;
|
||||||
|
# close $fh;
|
||||||
|
|
||||||
|
print CHLD_IN $query;
|
||||||
|
close CHLD_IN;
|
||||||
|
my $response = do {local $/; <CHLD_OUT>};
|
||||||
|
|
||||||
|
# Uncomment for debugging the watch response
|
||||||
|
# open ($fh, ">", ".git/watchman-response.json");
|
||||||
|
# print $fh $response;
|
||||||
|
# close $fh;
|
||||||
|
|
||||||
|
die "Watchman: command returned no output.\n" .
|
||||||
|
"Falling back to scanning...\n" if $response eq "";
|
||||||
|
die "Watchman: command returned invalid output: $response\n" .
|
||||||
|
"Falling back to scanning...\n" unless $response =~ /^\{/;
|
||||||
|
|
||||||
|
return $json_pkg->new->utf8->decode($response);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub is_work_tree_watched {
|
||||||
|
my ($output) = @_;
|
||||||
|
my $error = $output->{error};
|
||||||
|
if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
|
||||||
|
$retry--;
|
||||||
|
my $response = qx/watchman watch "$git_work_tree"/;
|
||||||
|
die "Failed to make watchman watch '$git_work_tree'.\n" .
|
||||||
|
"Falling back to scanning...\n" if $? != 0;
|
||||||
|
$output = $json_pkg->new->utf8->decode($response);
|
||||||
|
$error = $output->{error};
|
||||||
|
die "Watchman: $error.\n" .
|
||||||
|
"Falling back to scanning...\n" if $error;
|
||||||
|
|
||||||
|
# Uncomment for debugging watchman output
|
||||||
|
# open (my $fh, ">", ".git/watchman-output.out");
|
||||||
|
# close $fh;
|
||||||
|
|
||||||
|
# Watchman will always return all files on the first query so
|
||||||
|
# return the fast "everything is dirty" flag to git and do the
|
||||||
|
# Watchman query just to get it over with now so we won't pay
|
||||||
|
# the cost in git to look up each individual file.
|
||||||
|
my $o = watchman_clock();
|
||||||
|
$error = $output->{error};
|
||||||
|
|
||||||
|
die "Watchman: $error.\n" .
|
||||||
|
"Falling back to scanning...\n" if $error;
|
||||||
|
|
||||||
|
output_result($o->{clock}, ("/"));
|
||||||
|
$last_update_token = $o->{clock};
|
||||||
|
|
||||||
|
eval { launch_watchman() };
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
die "Watchman: $error.\n" .
|
||||||
|
"Falling back to scanning...\n" if $error;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_working_dir {
|
||||||
|
my $working_dir;
|
||||||
|
if ($^O =~ 'msys' || $^O =~ 'cygwin') {
|
||||||
|
$working_dir = Win32::GetCwd();
|
||||||
|
$working_dir =~ tr/\\/\//;
|
||||||
|
} else {
|
||||||
|
require Cwd;
|
||||||
|
$working_dir = Cwd::cwd();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $working_dir;
|
||||||
|
}
|
8
garuda-common-settings/hooks/post-update.sample
Executable file
8
garuda-common-settings/hooks/post-update.sample
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to prepare a packed repository for use over
|
||||||
|
# dumb transports.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "post-update".
|
||||||
|
|
||||||
|
exec git update-server-info
|
14
garuda-common-settings/hooks/pre-applypatch.sample
Executable file
14
garuda-common-settings/hooks/pre-applypatch.sample
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to verify what is about to be committed
|
||||||
|
# by applypatch from an e-mail message.
|
||||||
|
#
|
||||||
|
# The hook should exit with non-zero status after issuing an
|
||||||
|
# appropriate message if it wants to stop the commit.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "pre-applypatch".
|
||||||
|
|
||||||
|
. git-sh-setup
|
||||||
|
precommit="$(git rev-parse --git-path hooks/pre-commit)"
|
||||||
|
test -x "$precommit" && exec "$precommit" ${1+"$@"}
|
||||||
|
:
|
49
garuda-common-settings/hooks/pre-commit.sample
Executable file
49
garuda-common-settings/hooks/pre-commit.sample
Executable file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to verify what is about to be committed.
|
||||||
|
# Called by "git commit" with no arguments. The hook should
|
||||||
|
# exit with non-zero status after issuing an appropriate message if
|
||||||
|
# it wants to stop the commit.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "pre-commit".
|
||||||
|
|
||||||
|
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
against=HEAD
|
||||||
|
else
|
||||||
|
# Initial commit: diff against an empty tree object
|
||||||
|
against=$(git hash-object -t tree /dev/null)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If you want to allow non-ASCII filenames set this variable to true.
|
||||||
|
allownonascii=$(git config --type=bool hooks.allownonascii)
|
||||||
|
|
||||||
|
# Redirect output to stderr.
|
||||||
|
exec 1>&2
|
||||||
|
|
||||||
|
# Cross platform projects tend to avoid non-ASCII filenames; prevent
|
||||||
|
# them from being added to the repository. We exploit the fact that the
|
||||||
|
# printable range starts at the space character and ends with tilde.
|
||||||
|
if [ "$allownonascii" != "true" ] &&
|
||||||
|
# Note that the use of brackets around a tr range is ok here, (it's
|
||||||
|
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||||
|
# the square bracket bytes happen to fall in the designated range.
|
||||||
|
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||||
|
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||||
|
then
|
||||||
|
cat <<\EOF
|
||||||
|
Error: Attempt to add a non-ASCII file name.
|
||||||
|
|
||||||
|
This can cause problems if you want to work with people on other platforms.
|
||||||
|
|
||||||
|
To be portable it is advisable to rename the file.
|
||||||
|
|
||||||
|
If you know what you are doing you can disable this check using:
|
||||||
|
|
||||||
|
git config hooks.allownonascii true
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If there are whitespace errors, print the offending file names and fail.
|
||||||
|
exec git diff-index --check --cached $against --
|
13
garuda-common-settings/hooks/pre-merge-commit.sample
Executable file
13
garuda-common-settings/hooks/pre-merge-commit.sample
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to verify what is about to be committed.
|
||||||
|
# Called by "git merge" with no arguments. The hook should
|
||||||
|
# exit with non-zero status after issuing an appropriate message to
|
||||||
|
# stderr if it wants to stop the merge commit.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "pre-merge-commit".
|
||||||
|
|
||||||
|
. git-sh-setup
|
||||||
|
test -x "$GIT_DIR/hooks/pre-commit" &&
|
||||||
|
exec "$GIT_DIR/hooks/pre-commit"
|
||||||
|
:
|
53
garuda-common-settings/hooks/pre-push.sample
Executable file
53
garuda-common-settings/hooks/pre-push.sample
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# An example hook script to verify what is about to be pushed. Called by "git
|
||||||
|
# push" after it has checked the remote status, but before anything has been
|
||||||
|
# pushed. If this script exits with a non-zero status nothing will be pushed.
|
||||||
|
#
|
||||||
|
# This hook is called with the following parameters:
|
||||||
|
#
|
||||||
|
# $1 -- Name of the remote to which the push is being done
|
||||||
|
# $2 -- URL to which the push is being done
|
||||||
|
#
|
||||||
|
# If pushing without using a named remote those arguments will be equal.
|
||||||
|
#
|
||||||
|
# Information about the commits which are being pushed is supplied as lines to
|
||||||
|
# the standard input in the form:
|
||||||
|
#
|
||||||
|
# <local ref> <local oid> <remote ref> <remote oid>
|
||||||
|
#
|
||||||
|
# This sample shows how to prevent push of commits where the log message starts
|
||||||
|
# with "WIP" (work in progress).
|
||||||
|
|
||||||
|
remote="$1"
|
||||||
|
url="$2"
|
||||||
|
|
||||||
|
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
||||||
|
|
||||||
|
while read local_ref local_oid remote_ref remote_oid
|
||||||
|
do
|
||||||
|
if test "$local_oid" = "$zero"
|
||||||
|
then
|
||||||
|
# Handle delete
|
||||||
|
:
|
||||||
|
else
|
||||||
|
if test "$remote_oid" = "$zero"
|
||||||
|
then
|
||||||
|
# New branch, examine all commits
|
||||||
|
range="$local_oid"
|
||||||
|
else
|
||||||
|
# Update to existing branch, examine new commits
|
||||||
|
range="$remote_oid..$local_oid"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for WIP commit
|
||||||
|
commit=$(git rev-list -n 1 --grep '^WIP' "$range")
|
||||||
|
if test -n "$commit"
|
||||||
|
then
|
||||||
|
echo >&2 "Found WIP commit in $local_ref, not pushing"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
169
garuda-common-settings/hooks/pre-rebase.sample
Executable file
169
garuda-common-settings/hooks/pre-rebase.sample
Executable file
|
@ -0,0 +1,169 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2006, 2008 Junio C Hamano
|
||||||
|
#
|
||||||
|
# The "pre-rebase" hook is run just before "git rebase" starts doing
|
||||||
|
# its job, and can prevent the command from running by exiting with
|
||||||
|
# non-zero status.
|
||||||
|
#
|
||||||
|
# The hook is called with the following parameters:
|
||||||
|
#
|
||||||
|
# $1 -- the upstream the series was forked from.
|
||||||
|
# $2 -- the branch being rebased (or empty when rebasing the current branch).
|
||||||
|
#
|
||||||
|
# This sample shows how to prevent topic branches that are already
|
||||||
|
# merged to 'next' branch from getting rebased, because allowing it
|
||||||
|
# would result in rebasing already published history.
|
||||||
|
|
||||||
|
publish=next
|
||||||
|
basebranch="$1"
|
||||||
|
if test "$#" = 2
|
||||||
|
then
|
||||||
|
topic="refs/heads/$2"
|
||||||
|
else
|
||||||
|
topic=`git symbolic-ref HEAD` ||
|
||||||
|
exit 0 ;# we do not interrupt rebasing detached HEAD
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$topic" in
|
||||||
|
refs/heads/??/*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 0 ;# we do not interrupt others.
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Now we are dealing with a topic branch being rebased
|
||||||
|
# on top of master. Is it OK to rebase it?
|
||||||
|
|
||||||
|
# Does the topic really exist?
|
||||||
|
git show-ref -q "$topic" || {
|
||||||
|
echo >&2 "No such branch $topic"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Is topic fully merged to master?
|
||||||
|
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
|
||||||
|
if test -z "$not_in_master"
|
||||||
|
then
|
||||||
|
echo >&2 "$topic is fully merged to master; better remove it."
|
||||||
|
exit 1 ;# we could allow it, but there is no point.
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Is topic ever merged to next? If so you should not be rebasing it.
|
||||||
|
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
|
||||||
|
only_next_2=`git rev-list ^master ${publish} | sort`
|
||||||
|
if test "$only_next_1" = "$only_next_2"
|
||||||
|
then
|
||||||
|
not_in_topic=`git rev-list "^$topic" master`
|
||||||
|
if test -z "$not_in_topic"
|
||||||
|
then
|
||||||
|
echo >&2 "$topic is already up to date with master"
|
||||||
|
exit 1 ;# we could allow it, but there is no point.
|
||||||
|
else
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
|
||||||
|
/usr/bin/perl -e '
|
||||||
|
my $topic = $ARGV[0];
|
||||||
|
my $msg = "* $topic has commits already merged to public branch:\n";
|
||||||
|
my (%not_in_next) = map {
|
||||||
|
/^([0-9a-f]+) /;
|
||||||
|
($1 => 1);
|
||||||
|
} split(/\n/, $ARGV[1]);
|
||||||
|
for my $elem (map {
|
||||||
|
/^([0-9a-f]+) (.*)$/;
|
||||||
|
[$1 => $2];
|
||||||
|
} split(/\n/, $ARGV[2])) {
|
||||||
|
if (!exists $not_in_next{$elem->[0]}) {
|
||||||
|
if ($msg) {
|
||||||
|
print STDERR $msg;
|
||||||
|
undef $msg;
|
||||||
|
}
|
||||||
|
print STDERR " $elem->[1]\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
' "$topic" "$not_in_next" "$not_in_master"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
<<\DOC_END
|
||||||
|
|
||||||
|
This sample hook safeguards topic branches that have been
|
||||||
|
published from being rewound.
|
||||||
|
|
||||||
|
The workflow assumed here is:
|
||||||
|
|
||||||
|
* Once a topic branch forks from "master", "master" is never
|
||||||
|
merged into it again (either directly or indirectly).
|
||||||
|
|
||||||
|
* Once a topic branch is fully cooked and merged into "master",
|
||||||
|
it is deleted. If you need to build on top of it to correct
|
||||||
|
earlier mistakes, a new topic branch is created by forking at
|
||||||
|
the tip of the "master". This is not strictly necessary, but
|
||||||
|
it makes it easier to keep your history simple.
|
||||||
|
|
||||||
|
* Whenever you need to test or publish your changes to topic
|
||||||
|
branches, merge them into "next" branch.
|
||||||
|
|
||||||
|
The script, being an example, hardcodes the publish branch name
|
||||||
|
to be "next", but it is trivial to make it configurable via
|
||||||
|
$GIT_DIR/config mechanism.
|
||||||
|
|
||||||
|
With this workflow, you would want to know:
|
||||||
|
|
||||||
|
(1) ... if a topic branch has ever been merged to "next". Young
|
||||||
|
topic branches can have stupid mistakes you would rather
|
||||||
|
clean up before publishing, and things that have not been
|
||||||
|
merged into other branches can be easily rebased without
|
||||||
|
affecting other people. But once it is published, you would
|
||||||
|
not want to rewind it.
|
||||||
|
|
||||||
|
(2) ... if a topic branch has been fully merged to "master".
|
||||||
|
Then you can delete it. More importantly, you should not
|
||||||
|
build on top of it -- other people may already want to
|
||||||
|
change things related to the topic as patches against your
|
||||||
|
"master", so if you need further changes, it is better to
|
||||||
|
fork the topic (perhaps with the same name) afresh from the
|
||||||
|
tip of "master".
|
||||||
|
|
||||||
|
Let's look at this example:
|
||||||
|
|
||||||
|
o---o---o---o---o---o---o---o---o---o "next"
|
||||||
|
/ / / /
|
||||||
|
/ a---a---b A / /
|
||||||
|
/ / / /
|
||||||
|
/ / c---c---c---c B /
|
||||||
|
/ / / \ /
|
||||||
|
/ / / b---b C \ /
|
||||||
|
/ / / / \ /
|
||||||
|
---o---o---o---o---o---o---o---o---o---o---o "master"
|
||||||
|
|
||||||
|
|
||||||
|
A, B and C are topic branches.
|
||||||
|
|
||||||
|
* A has one fix since it was merged up to "next".
|
||||||
|
|
||||||
|
* B has finished. It has been fully merged up to "master" and "next",
|
||||||
|
and is ready to be deleted.
|
||||||
|
|
||||||
|
* C has not merged to "next" at all.
|
||||||
|
|
||||||
|
We would want to allow C to be rebased, refuse A, and encourage
|
||||||
|
B to be deleted.
|
||||||
|
|
||||||
|
To compute (1):
|
||||||
|
|
||||||
|
git rev-list ^master ^topic next
|
||||||
|
git rev-list ^master next
|
||||||
|
|
||||||
|
if these match, topic has not merged in next at all.
|
||||||
|
|
||||||
|
To compute (2):
|
||||||
|
|
||||||
|
git rev-list master..topic
|
||||||
|
|
||||||
|
if this is empty, it is fully merged to "master".
|
||||||
|
|
||||||
|
DOC_END
|
24
garuda-common-settings/hooks/pre-receive.sample
Executable file
24
garuda-common-settings/hooks/pre-receive.sample
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to make use of push options.
|
||||||
|
# The example simply echoes all push options that start with 'echoback='
|
||||||
|
# and rejects all pushes when the "reject" push option is used.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "pre-receive".
|
||||||
|
|
||||||
|
if test -n "$GIT_PUSH_OPTION_COUNT"
|
||||||
|
then
|
||||||
|
i=0
|
||||||
|
while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
|
||||||
|
do
|
||||||
|
eval "value=\$GIT_PUSH_OPTION_$i"
|
||||||
|
case "$value" in
|
||||||
|
echoback=*)
|
||||||
|
echo "echo from the pre-receive-hook: ${value#*=}" >&2
|
||||||
|
;;
|
||||||
|
reject)
|
||||||
|
exit 1
|
||||||
|
esac
|
||||||
|
i=$((i + 1))
|
||||||
|
done
|
||||||
|
fi
|
42
garuda-common-settings/hooks/prepare-commit-msg.sample
Executable file
42
garuda-common-settings/hooks/prepare-commit-msg.sample
Executable file
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to prepare the commit log message.
|
||||||
|
# Called by "git commit" with the name of the file that has the
|
||||||
|
# commit message, followed by the description of the commit
|
||||||
|
# message's source. The hook's purpose is to edit the commit
|
||||||
|
# message file. If the hook fails with a non-zero status,
|
||||||
|
# the commit is aborted.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "prepare-commit-msg".
|
||||||
|
|
||||||
|
# This hook includes three examples. The first one removes the
|
||||||
|
# "# Please enter the commit message..." help message.
|
||||||
|
#
|
||||||
|
# The second includes the output of "git diff --name-status -r"
|
||||||
|
# into the message, just before the "git status" output. It is
|
||||||
|
# commented because it doesn't cope with --amend or with squashed
|
||||||
|
# commits.
|
||||||
|
#
|
||||||
|
# The third example adds a Signed-off-by line to the message, that can
|
||||||
|
# still be edited. This is rarely a good idea.
|
||||||
|
|
||||||
|
COMMIT_MSG_FILE=$1
|
||||||
|
COMMIT_SOURCE=$2
|
||||||
|
SHA1=$3
|
||||||
|
|
||||||
|
/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
|
||||||
|
|
||||||
|
# case "$COMMIT_SOURCE,$SHA1" in
|
||||||
|
# ,|template,)
|
||||||
|
# /usr/bin/perl -i.bak -pe '
|
||||||
|
# print "\n" . `git diff --cached --name-status -r`
|
||||||
|
# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
|
||||||
|
# *) ;;
|
||||||
|
# esac
|
||||||
|
|
||||||
|
# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
||||||
|
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
|
||||||
|
# if test -z "$COMMIT_SOURCE"
|
||||||
|
# then
|
||||||
|
# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
|
||||||
|
# fi
|
78
garuda-common-settings/hooks/push-to-checkout.sample
Executable file
78
garuda-common-settings/hooks/push-to-checkout.sample
Executable file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# An example hook script to update a checked-out tree on a git push.
|
||||||
|
#
|
||||||
|
# This hook is invoked by git-receive-pack(1) when it reacts to git
|
||||||
|
# push and updates reference(s) in its repository, and when the push
|
||||||
|
# tries to update the branch that is currently checked out and the
|
||||||
|
# receive.denyCurrentBranch configuration variable is set to
|
||||||
|
# updateInstead.
|
||||||
|
#
|
||||||
|
# By default, such a push is refused if the working tree and the index
|
||||||
|
# of the remote repository has any difference from the currently
|
||||||
|
# checked out commit; when both the working tree and the index match
|
||||||
|
# the current commit, they are updated to match the newly pushed tip
|
||||||
|
# of the branch. This hook is to be used to override the default
|
||||||
|
# behaviour; however the code below reimplements the default behaviour
|
||||||
|
# as a starting point for convenient modification.
|
||||||
|
#
|
||||||
|
# The hook receives the commit with which the tip of the current
|
||||||
|
# branch is going to be updated:
|
||||||
|
commit=$1
|
||||||
|
|
||||||
|
# It can exit with a non-zero status to refuse the push (when it does
|
||||||
|
# so, it must not modify the index or the working tree).
|
||||||
|
die () {
|
||||||
|
echo >&2 "$*"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Or it can make any necessary changes to the working tree and to the
|
||||||
|
# index to bring them to the desired state when the tip of the current
|
||||||
|
# branch is updated to the new commit, and exit with a zero status.
|
||||||
|
#
|
||||||
|
# For example, the hook can simply run git read-tree -u -m HEAD "$1"
|
||||||
|
# in order to emulate git fetch that is run in the reverse direction
|
||||||
|
# with git push, as the two-tree form of git read-tree -u -m is
|
||||||
|
# essentially the same as git switch or git checkout that switches
|
||||||
|
# branches while keeping the local changes in the working tree that do
|
||||||
|
# not interfere with the difference between the branches.
|
||||||
|
|
||||||
|
# The below is a more-or-less exact translation to shell of the C code
|
||||||
|
# for the default behaviour for git's push-to-checkout hook defined in
|
||||||
|
# the push_to_deploy() function in builtin/receive-pack.c.
|
||||||
|
#
|
||||||
|
# Note that the hook will be executed from the repository directory,
|
||||||
|
# not from the working tree, so if you want to perform operations on
|
||||||
|
# the working tree, you will have to adapt your code accordingly, e.g.
|
||||||
|
# by adding "cd .." or using relative paths.
|
||||||
|
|
||||||
|
if ! git update-index -q --ignore-submodules --refresh
|
||||||
|
then
|
||||||
|
die "Up-to-date check failed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! git diff-files --quiet --ignore-submodules --
|
||||||
|
then
|
||||||
|
die "Working directory has unstaged changes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# This is a rough translation of:
|
||||||
|
#
|
||||||
|
# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
|
||||||
|
if git cat-file -e HEAD 2>/dev/null
|
||||||
|
then
|
||||||
|
head=HEAD
|
||||||
|
else
|
||||||
|
head=$(git hash-object -t tree --stdin </dev/null)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! git diff-index --quiet --cached --ignore-submodules $head --
|
||||||
|
then
|
||||||
|
die "Working directory has staged changes"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! git read-tree -u -m "$commit"
|
||||||
|
then
|
||||||
|
die "Could not update working tree to new HEAD"
|
||||||
|
fi
|
77
garuda-common-settings/hooks/sendemail-validate.sample
Executable file
77
garuda-common-settings/hooks/sendemail-validate.sample
Executable file
|
@ -0,0 +1,77 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# An example hook script to validate a patch (and/or patch series) before
|
||||||
|
# sending it via email.
|
||||||
|
#
|
||||||
|
# The hook should exit with non-zero status after issuing an appropriate
|
||||||
|
# message if it wants to prevent the email(s) from being sent.
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "sendemail-validate".
|
||||||
|
#
|
||||||
|
# By default, it will only check that the patch(es) can be applied on top of
|
||||||
|
# the default upstream branch without conflicts in a secondary worktree. After
|
||||||
|
# validation (successful or not) of the last patch of a series, the worktree
|
||||||
|
# will be deleted.
|
||||||
|
#
|
||||||
|
# The following config variables can be set to change the default remote and
|
||||||
|
# remote ref that are used to apply the patches against:
|
||||||
|
#
|
||||||
|
# sendemail.validateRemote (default: origin)
|
||||||
|
# sendemail.validateRemoteRef (default: HEAD)
|
||||||
|
#
|
||||||
|
# Replace the TODO placeholders with appropriate checks according to your
|
||||||
|
# needs.
|
||||||
|
|
||||||
|
validate_cover_letter () {
|
||||||
|
file="$1"
|
||||||
|
# TODO: Replace with appropriate checks (e.g. spell checking).
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_patch () {
|
||||||
|
file="$1"
|
||||||
|
# Ensure that the patch applies without conflicts.
|
||||||
|
git am -3 "$file" || return
|
||||||
|
# TODO: Replace with appropriate checks for this patch
|
||||||
|
# (e.g. checkpatch.pl).
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
validate_series () {
|
||||||
|
# TODO: Replace with appropriate checks for the whole series
|
||||||
|
# (e.g. quick build, coding style checks, etc.).
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
# main -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1
|
||||||
|
then
|
||||||
|
remote=$(git config --default origin --get sendemail.validateRemote) &&
|
||||||
|
ref=$(git config --default HEAD --get sendemail.validateRemoteRef) &&
|
||||||
|
worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) &&
|
||||||
|
git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" &&
|
||||||
|
git config --replace-all sendemail.validateWorktree "$worktree"
|
||||||
|
else
|
||||||
|
worktree=$(git config --get sendemail.validateWorktree)
|
||||||
|
fi || {
|
||||||
|
echo "sendemail-validate: error: failed to prepare worktree" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
unset GIT_DIR GIT_WORK_TREE
|
||||||
|
cd "$worktree" &&
|
||||||
|
|
||||||
|
if grep -q "^diff --git " "$1"
|
||||||
|
then
|
||||||
|
validate_patch "$1"
|
||||||
|
else
|
||||||
|
validate_cover_letter "$1"
|
||||||
|
fi &&
|
||||||
|
|
||||||
|
if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL"
|
||||||
|
then
|
||||||
|
git config --unset-all sendemail.validateWorktree &&
|
||||||
|
trap 'git worktree remove -ff "$worktree"' EXIT &&
|
||||||
|
validate_series
|
||||||
|
fi
|
128
garuda-common-settings/hooks/update.sample
Executable file
128
garuda-common-settings/hooks/update.sample
Executable file
|
@ -0,0 +1,128 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# An example hook script to block unannotated tags from entering.
|
||||||
|
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
||||||
|
#
|
||||||
|
# To enable this hook, rename this file to "update".
|
||||||
|
#
|
||||||
|
# Config
|
||||||
|
# ------
|
||||||
|
# hooks.allowunannotated
|
||||||
|
# This boolean sets whether unannotated tags will be allowed into the
|
||||||
|
# repository. By default they won't be.
|
||||||
|
# hooks.allowdeletetag
|
||||||
|
# This boolean sets whether deleting tags will be allowed in the
|
||||||
|
# repository. By default they won't be.
|
||||||
|
# hooks.allowmodifytag
|
||||||
|
# This boolean sets whether a tag may be modified after creation. By default
|
||||||
|
# it won't be.
|
||||||
|
# hooks.allowdeletebranch
|
||||||
|
# This boolean sets whether deleting branches will be allowed in the
|
||||||
|
# repository. By default they won't be.
|
||||||
|
# hooks.denycreatebranch
|
||||||
|
# This boolean sets whether remotely creating branches will be denied
|
||||||
|
# in the repository. By default this is allowed.
|
||||||
|
#
|
||||||
|
|
||||||
|
# --- Command line
|
||||||
|
refname="$1"
|
||||||
|
oldrev="$2"
|
||||||
|
newrev="$3"
|
||||||
|
|
||||||
|
# --- Safety check
|
||||||
|
if [ -z "$GIT_DIR" ]; then
|
||||||
|
echo "Don't run this script from the command line." >&2
|
||||||
|
echo " (if you want, you could supply GIT_DIR then run" >&2
|
||||||
|
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
||||||
|
echo "usage: $0 <ref> <oldrev> <newrev>" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- Config
|
||||||
|
allowunannotated=$(git config --type=bool hooks.allowunannotated)
|
||||||
|
allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
|
||||||
|
denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
|
||||||
|
allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
|
||||||
|
allowmodifytag=$(git config --type=bool hooks.allowmodifytag)
|
||||||
|
|
||||||
|
# check for no description
|
||||||
|
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
||||||
|
case "$projectdesc" in
|
||||||
|
"Unnamed repository"* | "")
|
||||||
|
echo "*** Project description file hasn't been set" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Check types
|
||||||
|
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
||||||
|
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
|
||||||
|
if [ "$newrev" = "$zero" ]; then
|
||||||
|
newrev_type=delete
|
||||||
|
else
|
||||||
|
newrev_type=$(git cat-file -t $newrev)
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$refname","$newrev_type" in
|
||||||
|
refs/tags/*,commit)
|
||||||
|
# un-annotated tag
|
||||||
|
short_refname=${refname##refs/tags/}
|
||||||
|
if [ "$allowunannotated" != "true" ]; then
|
||||||
|
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
||||||
|
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
refs/tags/*,delete)
|
||||||
|
# delete tag
|
||||||
|
if [ "$allowdeletetag" != "true" ]; then
|
||||||
|
echo "*** Deleting a tag is not allowed in this repository" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
refs/tags/*,tag)
|
||||||
|
# annotated tag
|
||||||
|
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo "*** Tag '$refname' already exists." >&2
|
||||||
|
echo "*** Modifying a tag is not allowed in this repository." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
refs/heads/*,commit)
|
||||||
|
# branch
|
||||||
|
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
||||||
|
echo "*** Creating a branch is not allowed in this repository" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
refs/heads/*,delete)
|
||||||
|
# delete branch
|
||||||
|
if [ "$allowdeletebranch" != "true" ]; then
|
||||||
|
echo "*** Deleting a branch is not allowed in this repository" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
refs/remotes/*,commit)
|
||||||
|
# tracking branch
|
||||||
|
;;
|
||||||
|
refs/remotes/*,delete)
|
||||||
|
# delete tracking branch
|
||||||
|
if [ "$allowdeletebranch" != "true" ]; then
|
||||||
|
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Anything else (is there anything else?)
|
||||||
|
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# --- Finished
|
||||||
|
exit 0
|
6
garuda-common-settings/info/exclude
Normal file
6
garuda-common-settings/info/exclude
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# git ls-files --others --exclude-from=.git/info/exclude
|
||||||
|
# Lines that start with '#' are comments.
|
||||||
|
# For a project mostly in C, the following would be a good set of
|
||||||
|
# exclude patterns (uncomment them if you want to use them):
|
||||||
|
# *.[oa]
|
||||||
|
# *~
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
83
garuda-common-settings/packed-refs
Normal file
83
garuda-common-settings/packed-refs
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
# pack-refs with: peeled fully-peeled sorted
|
||||||
|
65015934d7d06404a66deae70a893146ae254e6c refs/heads/bluish-branch
|
||||||
|
2c9248f9d75fc9958ee06f1e2c4bfd4ede0d5476 refs/heads/master
|
||||||
|
57cf5462ab1edf6914c38452360452e008d47f58 refs/merge-requests/2/head
|
||||||
|
0bf8cf28a13c7010324a67b414c7cde003ff8532 refs/merge-requests/2/merge
|
||||||
|
02c4c13a54ac43c56a1fb8ecf4ed75bb8fe6962a refs/merge-requests/3/head
|
||||||
|
8a79b923452c3683023f49c81d3c17663e6708a5 refs/merge-requests/3/merge
|
||||||
|
4a6e40fb542458949e7e273d3e4fdd9ab7e2fe48 refs/merge-requests/4/head
|
||||||
|
2e42d421ad96302b3ce626017f8ec8c015643eb8 refs/merge-requests/4/merge
|
||||||
|
cd6beb3941783761f21db742d31a5cb63fca68f7 refs/merge-requests/5/head
|
||||||
|
1b0bc10039c38736f81cf06e5ba9abf4d26026db refs/merge-requests/5/merge
|
||||||
|
0a7db7e485335b77c189bf17b0f4f2f6b746db8f refs/merge-requests/6/head
|
||||||
|
cf593f6d9f626d6508f838aa2d7c38452d0889c8 refs/merge-requests/6/merge
|
||||||
|
9211a58624f9df6f94720cc2928e77218f027cb6 refs/merge-requests/7/head
|
||||||
|
28c2124e52cbaccaa5e40ef7f2a4ac93afe7be41 refs/merge-requests/7/merge
|
||||||
|
ffa74e7dc3d136b29ee8ff39b379fd2874e8f425 refs/tags/1.0.0
|
||||||
|
5093c511110ce0900461ffdf6d2e49e367e5e283 refs/tags/1.1.1
|
||||||
|
5093c511110ce0900461ffdf6d2e49e367e5e283 refs/tags/1.1.2
|
||||||
|
5093c511110ce0900461ffdf6d2e49e367e5e283 refs/tags/1.1.3
|
||||||
|
31bd9f0e44aa973e03b35e1bf3f4eb92d8fe59e5 refs/tags/1.2.1
|
||||||
|
fd710119c271a9a4209a3b09481761cce129ef2f refs/tags/1.2.2
|
||||||
|
01852945b42f751a9c823bb3809ab704f1968fb7 refs/tags/1.2.3
|
||||||
|
fc15f8b3eb1b51c38f5c7540e2b7564523e012ba refs/tags/1.2.4
|
||||||
|
ced1c7c5bb3b1ebb49ff04bf9e6931d6ed2e1151 refs/tags/1.2.5
|
||||||
|
6687f67fefa24c1fd49f4894be071c54833a6289 refs/tags/1.2.6
|
||||||
|
97e5c3d781c1ec3838dcd04b2db7c0022550021e refs/tags/1.2.7
|
||||||
|
23dfa2af146a85b86eb118cdd62dba5b325ba538 refs/tags/1.2.8
|
||||||
|
00c7fcf3c7b33e081801f63123e5ca7e52da5eab refs/tags/1.2.9
|
||||||
|
05bdada235ad778b4e338754740c7b73c2265aac refs/tags/1.3.0
|
||||||
|
34ae9560c51f1394f6b19b88dcf7a37cb6bc1365 refs/tags/1.3.1
|
||||||
|
1124414af8cd0cbbe3ae2789e00f4fa10fe508aa refs/tags/1.4.0
|
||||||
|
7d93dbd35eba1d140f363ed74f7e8d9779db3903 refs/tags/1.4.1
|
||||||
|
d9a3fbc93391cda432890c1a30c71fbd936631b3 refs/tags/1.4.2
|
||||||
|
3008d02fee68a069769bd6adb59be80f68b50368 refs/tags/1.4.3
|
||||||
|
2727cd113b61878821c676155bc70cb5817adee6 refs/tags/1.4.4
|
||||||
|
4a6b288952e3f2072f1a5ff719b9e52ab6bcd8aa refs/tags/1.4.5
|
||||||
|
034051cbb4edae0cc7f2f438d93e5940532ef6e9 refs/tags/2.0.0
|
||||||
|
ae0ea6a329f227c5dd1b3cecfe2bd017ea289966 refs/tags/2.0.1
|
||||||
|
509af3db23437db11b962afba2dd3f0c61362b94 refs/tags/2.0.2
|
||||||
|
f1a8a1a7d68afaaa630545c01b0bf4f81b69ca21 refs/tags/2.0.3
|
||||||
|
842bd9711343428f7e63beae611b59459affa125 refs/tags/2.0.4
|
||||||
|
892ccc3b63e6867758202097b6a3dd63cc52c19b refs/tags/2.1.0
|
||||||
|
d74438ee6fae0b2c1456884f445cdd587e8c6de9 refs/tags/2.1.1
|
||||||
|
5a59260464009dbbb5dcb4cb3c5ed4d9941fa174 refs/tags/2.1.2
|
||||||
|
f122c5aff7dcb378dcc12a6b4bf85c0fd9088a39 refs/tags/2.2.0
|
||||||
|
dcaa1d32a32c2580a51f01b8ae56a17d9bba4114 refs/tags/2.2.1
|
||||||
|
140795a08e75ef68d89c1bf46e52b6efcd2d0f0f refs/tags/2.2.2
|
||||||
|
cd129aa9f4b2b67d0a81378c6e9c0ffbd367f07e refs/tags/2.3.0
|
||||||
|
21b1a6be25060a73d95f27ddef2ce892aecb8483 refs/tags/2.4.0
|
||||||
|
8dfe129aeafe0207a9125f8cca99b1fc02b3c238 refs/tags/2.4.1
|
||||||
|
d5680db6ee6816635360b558da54ea72551cc30b refs/tags/2.4.2
|
||||||
|
863c9b4e651c0c702ccd31baa1c475af41a0a29c refs/tags/2.4.3
|
||||||
|
0e9dee7bccc00156e66d51cb142f288067bb08d3 refs/tags/2.4.4
|
||||||
|
6a980152a69034362937c6579b06463b398f7167 refs/tags/2.4.6
|
||||||
|
883261a610311023e5d6a438b0f768b6e30a5c7f refs/tags/2.5.0
|
||||||
|
8d8de27eb84aac0a53187e901127595403ab6d8b refs/tags/2.5.1
|
||||||
|
50577314227ce319d5e002610c59ecd65d5c5489 refs/tags/2.5.2
|
||||||
|
8e5b36b2bd0a46901bf8320ed44e75b2dc392098 refs/tags/2.5.3
|
||||||
|
5d44aed2ed5cbf3001b136ab1077f0991f0bdd43 refs/tags/2.5.4
|
||||||
|
4907183622758d364ae9f574ff8d1b48c73854a0 refs/tags/2.5.5
|
||||||
|
6089e29bd94ab7d2c69ad99a5d37a5c4e15a9602 refs/tags/2.5.6
|
||||||
|
fa323e698984660635d70237b5f0b030bb704aff refs/tags/2.5.7
|
||||||
|
58f1185dc7d564ef29edb99442bdd30de22437ee refs/tags/2.5.8
|
||||||
|
3bee321867c0534ee63ac443bd7c69676b93e101 refs/tags/2.6.1
|
||||||
|
8cd319e3ccc0cb48e26450dd9bb631f8ce59da83 refs/tags/2.6.10
|
||||||
|
42cbbf597a60a4390206865e8fcf719b5585b97d refs/tags/2.6.11
|
||||||
|
493d089b930cb5943e55dbca11d6380b2c8d49b8 refs/tags/2.6.12
|
||||||
|
47fd8f533346cf5c78bec05d3408e4765cf767c1 refs/tags/2.6.13
|
||||||
|
8183f88e2e5c8998ac9228905c135fa6fad39b8d refs/tags/2.6.14
|
||||||
|
f9ed84e9448f063184aac27bee19b258f925cd7c refs/tags/2.6.15
|
||||||
|
1a40ada700a376a6aa887e1836a9776dfabc4b02 refs/tags/2.6.16
|
||||||
|
d1e980192ca29d3ee9c5eb8558b868310f686be0 refs/tags/2.6.17
|
||||||
|
^7204ff360d3965f7480e79bfd30b09028fb82183
|
||||||
|
97ad33de505224bb4afaf8c1fdc5e8dd9d4690ac refs/tags/2.6.18
|
||||||
|
^2c9248f9d75fc9958ee06f1e2c4bfd4ede0d5476
|
||||||
|
711f32cfb9c58050d9583ad6e5ff28c16da1944e refs/tags/2.6.2
|
||||||
|
709d32977b88091657d622e2f6b66c55fdd76824 refs/tags/2.6.3
|
||||||
|
ef5d7f428a2d714b10ff47ea0a805d30e41c0472 refs/tags/2.6.4
|
||||||
|
c1c82187419699accad2cbcb07d58af36c244172 refs/tags/2.6.5
|
||||||
|
2987bba05374d6d1d6fc6c23a8831c0ed8cba6db refs/tags/2.6.6
|
||||||
|
59d794d3a7bc87bdb8983cf49d5fda178e63d847 refs/tags/2.6.7
|
||||||
|
636fe36eed56d22f976a04c0d95190699cdf236e refs/tags/2.6.8
|
||||||
|
c3526753009f3ba5a2c3f896851d25b7bfab23df refs/tags/2.6.9
|
1403
pkg/garuda-common-settings/.BUILDINFO
Normal file
1403
pkg/garuda-common-settings/.BUILDINFO
Normal file
File diff suppressed because it is too large
Load diff
45
pkg/garuda-common-settings/.INSTALL
Normal file
45
pkg/garuda-common-settings/.INSTALL
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Font-icon directories
|
||||||
|
FONT_DIRS="/usr/share/fonts/TTF /usr/share/fonts/OTF /usr/share/fonts/misc"
|
||||||
|
ICON_DIR="/usr/share/icons/hicolor"
|
||||||
|
GLIB_SCHEMA_DIR="usr/share/glib-2.0/schemas"
|
||||||
|
|
||||||
|
# Font-related commands
|
||||||
|
update_fonts() {
|
||||||
|
mkfontscale "$FONT_DIRS" >/dev/null 2>&1
|
||||||
|
mkfontdir "$FONT_DIRS" >/dev/null 2>&1
|
||||||
|
fc-cache -s >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# GTK related commands
|
||||||
|
update_gtk() {
|
||||||
|
glib-compile-schemas $GLIB_SCHEMA_DIR
|
||||||
|
gtk-update-icon-cache -ftq $ICON_DIR
|
||||||
|
/bin/sh -c 'dconf update'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Post installation
|
||||||
|
post_install() {
|
||||||
|
systemctl enable btrfs-balance.timer
|
||||||
|
systemctl enable btrfs-defrag.timer
|
||||||
|
systemctl enable btrfs-scrub.timer
|
||||||
|
systemctl enable btrfs-trim.timer
|
||||||
|
systemctl enable garuda-pacman-lock
|
||||||
|
systemctl --global enable psd
|
||||||
|
|
||||||
|
post_upgrade
|
||||||
|
}
|
||||||
|
|
||||||
|
# Post upgrade
|
||||||
|
post_upgrade() {
|
||||||
|
echo "Attempting to enable services..."
|
||||||
|
systemctl enable btrfs-balance.timer
|
||||||
|
systemctl enable btrfs-defrag.timer
|
||||||
|
systemctl enable btrfs-scrub.timer
|
||||||
|
systemctl enable btrfs-trim.timer
|
||||||
|
systemctl enable garuda-pacman-lock
|
||||||
|
systemctl --global enable psd
|
||||||
|
|
||||||
|
echo "Performing misc postinstall operations..."
|
||||||
|
update_fonts
|
||||||
|
update_gtk
|
||||||
|
}
|
BIN
pkg/garuda-common-settings/.MTREE
Normal file
BIN
pkg/garuda-common-settings/.MTREE
Normal file
Binary file not shown.
34
pkg/garuda-common-settings/.PKGINFO
Normal file
34
pkg/garuda-common-settings/.PKGINFO
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# Generated by makepkg 6.0.2
|
||||||
|
# using fakeroot version 1.32.1
|
||||||
|
pkgname = garuda-common-settings
|
||||||
|
pkgbase = garuda-common-settings
|
||||||
|
pkgver = git-1
|
||||||
|
pkgdesc = Garuda Linux common settings
|
||||||
|
url = https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings
|
||||||
|
builddate = 1699497851
|
||||||
|
packager = Unknown Packager
|
||||||
|
size = 146950
|
||||||
|
arch = any
|
||||||
|
license = GPL
|
||||||
|
conflict = systemd-swap
|
||||||
|
conflict = ipw2100-fw
|
||||||
|
conflict = ipw2200-fw
|
||||||
|
backup = etc/sudoers.d/editor
|
||||||
|
backup = etc/sudoers.d/insults
|
||||||
|
backup = etc/sudoers.d/pwfeedback
|
||||||
|
depend = btrfsmaintenance
|
||||||
|
depend = garuda-bash-config
|
||||||
|
depend = garuda-hooks
|
||||||
|
depend = garuda-icons
|
||||||
|
depend = garuda-migrations
|
||||||
|
depend = garuda-update
|
||||||
|
depend = garuda-wallpapers
|
||||||
|
depend = profile-sync-daemon
|
||||||
|
depend = zram-generator
|
||||||
|
depend = systemd-oomd-defaults
|
||||||
|
depend = noto-color-emoji-fontconfig
|
||||||
|
optdepend = garuda-browser-settings: Garuda Linux Browser settings
|
||||||
|
optdepend = performance-tweaks: Tuning for best performance
|
||||||
|
optdepend = powersave-tweaks: Tuning for lower power usage
|
||||||
|
optdepend = pacutils: Required for garuda-inxi funstuff
|
||||||
|
makedepend = polkit
|
|
@ -0,0 +1,6 @@
|
||||||
|
if [[ ! $GRUB_CMDLINE_LINUX_DEFAULT =~ ibt=[^[:space:]]+ ]]; then
|
||||||
|
GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT:+$GRUB_CMDLINE_LINUX_DEFAULT }ibt=off"
|
||||||
|
fi
|
||||||
|
if [ -z "${GRUB_DISABLE_OS_PROBER+x}" ]; then
|
||||||
|
GRUB_DISABLE_OS_PROBER=false
|
||||||
|
fi
|
21
pkg/garuda-common-settings/etc/grub.d/61_custom_leave_options
Executable file
21
pkg/garuda-common-settings/etc/grub.d/61_custom_leave_options
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/sh
|
||||||
|
exec tail -n +3 $0
|
||||||
|
# This file provides an easy way to add custom menu entries. Simply type the
|
||||||
|
# menu entries you want to add after this comment. Be careful not to change
|
||||||
|
# the 'exec tail' line above.
|
||||||
|
|
||||||
|
menuentry "Shutdown" --class shutdown {
|
||||||
|
echo "System shutting down..."
|
||||||
|
halt
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry "Restart" --class restart {
|
||||||
|
echo "System rebooting..."
|
||||||
|
reboot
|
||||||
|
}
|
||||||
|
|
||||||
|
#if [ ${grub_platform} == "efi" ]; then
|
||||||
|
# menuentry "Firmware Setup (UEFI)" --class recovery {
|
||||||
|
# fwsetup
|
||||||
|
# }
|
||||||
|
#fi
|
37
pkg/garuda-common-settings/etc/skel/.config/autostart/garuda-welcome.desktop
Executable file
37
pkg/garuda-common-settings/etc/skel/.config/autostart/garuda-welcome.desktop
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Categories=GNOME;GTK;System;Garuda-Setup;
|
||||||
|
Comment=Display welcome message
|
||||||
|
Comment[ca]=Mostra un missatge de benvinguda
|
||||||
|
Comment[cs]=Zobrazuje uvítací obrazovku
|
||||||
|
Comment[de]=Willkommensgruß anzeigen
|
||||||
|
Comment[el]=Εμφάνιση μήνυμα καλωσορίσματος
|
||||||
|
Comment[es]=Muestra un mensaje de bienvenida
|
||||||
|
Comment[fr]=Afficher un message de bienvenue
|
||||||
|
Comment[it]=Visualizza un messaggio di benvenuto
|
||||||
|
Comment[ja]=Welcome メッセージの表示
|
||||||
|
Comment[lt]=Rodyti pasisveikinimo pranešimą
|
||||||
|
Comment[nl]=Laat welkomstbericht zien
|
||||||
|
Comment[pt]=Mostra uma messagem de boas-vindas
|
||||||
|
Comment[ru]=Показ приветственного сообщения
|
||||||
|
Comment[sv]=Visa välkomstmeddelande
|
||||||
|
Encoding=UTF-8
|
||||||
|
Exec=garuda-welcome
|
||||||
|
Icon=garuda-welcome
|
||||||
|
Name=Garuda Welcome
|
||||||
|
Name[ca]=Garuda Welcome
|
||||||
|
Name[cs]=Garuda Vítejte
|
||||||
|
Name[de]=Garuda Willkommen
|
||||||
|
Name[el]=Garuda Welcome
|
||||||
|
Name[es]=Garuda Bienvenida
|
||||||
|
Name[fr]=Garuda Bienvenue
|
||||||
|
Name[it]=Garuda Benvenuto
|
||||||
|
Name[ja]=Garuda Welcome
|
||||||
|
Name[lt]=Garuda Pasveikinimas
|
||||||
|
Name[nl]=Garuda Welkom
|
||||||
|
Name[pt]=Garuda_Boas-vindas do Garuda
|
||||||
|
Name[ru]=Garuda Приветствие
|
||||||
|
Name[sv]=Garuda Välkommen
|
||||||
|
NoDisplay=false
|
||||||
|
Terminal=false
|
||||||
|
TryExec=garuda-welcome
|
||||||
|
Type=Application
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Categories=System;Monitor;
|
||||||
|
Comment=Does the initial user setup
|
||||||
|
Exec=bash -c "systemctl --user enable --now gamemoded;setup_dxvk install;rm ~/.config/autostart/initial-user-setup.desktop"
|
||||||
|
Icon=setup
|
||||||
|
Name=Initial user setup
|
||||||
|
StartupNotify=false
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
|
@ -0,0 +1,51 @@
|
||||||
|
[bleachbit]
|
||||||
|
auto_hide = True
|
||||||
|
check_beta = False
|
||||||
|
check_online_updates = True
|
||||||
|
dark_mode = True
|
||||||
|
delete_confirmation = True
|
||||||
|
debug = False
|
||||||
|
exit_done = False
|
||||||
|
shred = False
|
||||||
|
units_iec = False
|
||||||
|
|
||||||
|
[tree]
|
||||||
|
evolution = True
|
||||||
|
evolution.cache = True
|
||||||
|
firefox.crash_reports = True
|
||||||
|
firefox = True
|
||||||
|
firefox.backup = True
|
||||||
|
firefox.cache = True
|
||||||
|
gnome = True
|
||||||
|
gnome.run = True
|
||||||
|
gnome.search_history = True
|
||||||
|
journald = True
|
||||||
|
journald.clean = True
|
||||||
|
system.desktop_entry = True
|
||||||
|
system = True
|
||||||
|
system.recent_documents = True
|
||||||
|
system.localizations = True
|
||||||
|
system.trash = True
|
||||||
|
system.rotated_logs = True
|
||||||
|
system.tmp = True
|
||||||
|
system.clipboard = True
|
||||||
|
system.cache = True
|
||||||
|
deepscan.ds_store = True
|
||||||
|
deepscan = True
|
||||||
|
deepscan.backup = True
|
||||||
|
deepscan.tmp = True
|
||||||
|
deepscan.thumbs_db = True
|
||||||
|
deepscan.vim_swap_root = True
|
||||||
|
deepscan.vim_swap_user = True
|
||||||
|
x11 = True
|
||||||
|
x11.debug_logs = True
|
||||||
|
thumbnails = True
|
||||||
|
thumbnails.cache = True
|
||||||
|
thunderbird = True
|
||||||
|
thunderbird.cache = True
|
||||||
|
thunderbird.cookies = True
|
||||||
|
thunderbird.index = True
|
||||||
|
thunderbird.passwords = True
|
||||||
|
thunderbird.vacuum = True
|
||||||
|
firefox.vacuum = True
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
{
|
||||||
|
"file": 1,
|
||||||
|
"format": 1
|
||||||
|
}{
|
||||||
|
"autoadd_queued": false,
|
||||||
|
"autoconnect": false,
|
||||||
|
"autoconnect_host_id": null,
|
||||||
|
"autostart_localhost": false,
|
||||||
|
"check_new_releases": true,
|
||||||
|
"close_to_tray": true,
|
||||||
|
"connection_limit_list": [
|
||||||
|
50,
|
||||||
|
100,
|
||||||
|
200,
|
||||||
|
300,
|
||||||
|
500
|
||||||
|
],
|
||||||
|
"createtorrent.trackers": [],
|
||||||
|
"default_load_path": null,
|
||||||
|
"edit_trackers_dialog_height": null,
|
||||||
|
"edit_trackers_dialog_width": null,
|
||||||
|
"enable_appindicator": true,
|
||||||
|
"enable_system_tray": true,
|
||||||
|
"enabled_plugins": [],
|
||||||
|
"focus_add_dialog": true,
|
||||||
|
"focus_main_window_on_add": true,
|
||||||
|
"interactive_add": true,
|
||||||
|
"language": null,
|
||||||
|
"lock_tray": false,
|
||||||
|
"pieces_color_completed": [
|
||||||
|
4883,
|
||||||
|
26985,
|
||||||
|
56540
|
||||||
|
],
|
||||||
|
"pieces_color_downloading": [
|
||||||
|
65535,
|
||||||
|
55255,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"pieces_color_missing": [
|
||||||
|
65535,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"pieces_color_waiting": [
|
||||||
|
4874,
|
||||||
|
56494,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"pref_dialog_height": 500,
|
||||||
|
"pref_dialog_width": 450,
|
||||||
|
"show_connection_manager_on_start": true,
|
||||||
|
"show_new_releases": true,
|
||||||
|
"show_piecesbar": false,
|
||||||
|
"show_rate_in_title": false,
|
||||||
|
"show_sidebar": true,
|
||||||
|
"show_statusbar": true,
|
||||||
|
"show_tabsbar": true,
|
||||||
|
"show_toolbar": true,
|
||||||
|
"sidebar_position": 170,
|
||||||
|
"sidebar_show_owners": true,
|
||||||
|
"sidebar_show_trackers": true,
|
||||||
|
"sidebar_show_zero": false,
|
||||||
|
"standalone": true,
|
||||||
|
"start_in_tray": true,
|
||||||
|
"tabsbar_position": 235,
|
||||||
|
"tray_download_speed_list": [
|
||||||
|
5.0,
|
||||||
|
10.0,
|
||||||
|
30.0,
|
||||||
|
80.0,
|
||||||
|
300.0
|
||||||
|
],
|
||||||
|
"tray_password": "",
|
||||||
|
"tray_upload_speed_list": [
|
||||||
|
5.0,
|
||||||
|
10.0,
|
||||||
|
30.0,
|
||||||
|
80.0,
|
||||||
|
300.0
|
||||||
|
],
|
||||||
|
"window_height": 480,
|
||||||
|
"window_maximized": false,
|
||||||
|
"window_width": 640,
|
||||||
|
"window_x_pos": 303,
|
||||||
|
"window_y_pos": 124
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<oor:items xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="SymbolStyle" oor:op="fuse"><value>breeze_dark</value></prop></item>
|
||||||
|
<item oor:path="/org.openoffice.Office.Common/Misc"><prop oor:name="UseOpenCL" oor:op="fuse"><value>false</value></prop></item>
|
||||||
|
<item oor:path="/org.openoffice.Office.Common/VCL"><prop oor:name="ForceOpenGL" oor:op="fuse"><value>false</value></prop></item>
|
||||||
|
<item oor:path="/org.openoffice.Office.Common/VCL"><prop oor:name="UseOpenGL" oor:op="fuse"><value>false</value></prop></item>
|
||||||
|
</oor:items>
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 Ján Priner
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Aspell plugin for Micro
|
||||||
|
|
||||||
|
This is a spellchecking plugin for [Micro](https://micro-editor.github.io/) editor.
|
||||||
|
For help see [the help file](help/aspell.md).
|
|
@ -0,0 +1,658 @@
|
||||||
|
VERSION = "1.3.0"
|
||||||
|
|
||||||
|
local micro = import("micro")
|
||||||
|
local shell = import("micro/shell")
|
||||||
|
local buffer = import("micro/buffer")
|
||||||
|
local config = import("micro/config")
|
||||||
|
local util = import("micro/util")
|
||||||
|
local utf = import("unicode/utf8")
|
||||||
|
|
||||||
|
config.RegisterCommonOption("aspell", "check", "auto")
|
||||||
|
config.RegisterCommonOption("aspell", "lang", "")
|
||||||
|
config.RegisterCommonOption("aspell", "dict", "")
|
||||||
|
config.RegisterCommonOption("aspell", "sugmode", "normal")
|
||||||
|
config.RegisterCommonOption("aspell", "args", "")
|
||||||
|
|
||||||
|
function init()
|
||||||
|
config.MakeCommand("addpersonal", addpersonal, config.NoComplete)
|
||||||
|
config.MakeCommand("acceptsug", acceptsug, config.NoComplete)
|
||||||
|
config.MakeCommand("togglecheck", togglecheck, config.NoComplete)
|
||||||
|
config.AddRuntimeFile("aspell", config.RTHelp, "help/aspell.md")
|
||||||
|
end
|
||||||
|
|
||||||
|
local filterModes = {
|
||||||
|
xml = "sgml",
|
||||||
|
["c++"] = "ccpp",
|
||||||
|
c = "ccpp",
|
||||||
|
html = "html",
|
||||||
|
html4 = "html",
|
||||||
|
html5 = "html",
|
||||||
|
perl = "perl",
|
||||||
|
perl6 = "perl",
|
||||||
|
tex = "tex",
|
||||||
|
markdown = "markdown",
|
||||||
|
groff = "nroff",
|
||||||
|
man = "nroff",
|
||||||
|
["git-commit"] = "url",
|
||||||
|
mail = "email"
|
||||||
|
-- Aspell has comment mode, in which only lines starting with # are checked
|
||||||
|
-- but it doesn't work for some reason
|
||||||
|
}
|
||||||
|
|
||||||
|
local lock = false
|
||||||
|
local next = nil
|
||||||
|
|
||||||
|
function runAspell(buf, onExit, ...)
|
||||||
|
local options = {"pipe", "--encoding=utf-8"}
|
||||||
|
if filterModes[buf:FileType()] then
|
||||||
|
options[#options + 1] = "--mode=" .. filterModes[buf:FileType()]
|
||||||
|
end
|
||||||
|
if buf.Settings["aspell.lang"] ~= "" then
|
||||||
|
options[#options + 1] = "--lang=" .. buf.Settings["aspell.lang"]
|
||||||
|
end
|
||||||
|
if buf.Settings["aspell.dict"] ~= "" then
|
||||||
|
options[#options + 1] = "--master=" .. buf.Settings["aspell.dict"]
|
||||||
|
end
|
||||||
|
if buf.Settings["aspell.sugmode"] ~= "" then
|
||||||
|
options[#options + 1] = "--sug-mode=" .. buf.Settings["aspell.sugmode"]
|
||||||
|
end
|
||||||
|
for _, argument in ipairs(split(buf.Settings["aspell.args"], " ")) do
|
||||||
|
options[#options + 1] = argument
|
||||||
|
end
|
||||||
|
|
||||||
|
local job = shell.JobSpawn("aspell", options, nil,
|
||||||
|
nil, onExit, buf, unpack(arg))
|
||||||
|
-- Enable terse mode
|
||||||
|
shell.JobSend(job, "!\n")
|
||||||
|
for i=0, buf:LinesNum() - 1 do
|
||||||
|
local line = util.String(buf:LineBytes(i))
|
||||||
|
-- Escape for aspell (it interprets lines that start
|
||||||
|
-- with % @ ^ ! etc.)
|
||||||
|
line = "^" .. line .. "\n"
|
||||||
|
|
||||||
|
shell.JobSend(job, line)
|
||||||
|
end
|
||||||
|
job.Stdin:Close()
|
||||||
|
end
|
||||||
|
|
||||||
|
function spellcheck(buf)
|
||||||
|
local check = buf.Settings["aspell.check"]
|
||||||
|
local readcheck = buf.Type.Readonly
|
||||||
|
if (check == "on" or (check == "auto" and filterModes[buf:FileType()])) and (not readcheck) then
|
||||||
|
if lock then
|
||||||
|
next = buf
|
||||||
|
else
|
||||||
|
lock = true
|
||||||
|
runAspell(buf, highlight)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- If we aren't supposed to spellcheck, clear the messages
|
||||||
|
buf:ClearMessages("aspell")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Parses the output of Aspell and returns the list of all misspells.
|
||||||
|
function parseOutput(out)
|
||||||
|
local patterns = {"^# (.-) (%d+)$", "^& (.-) %d+ (%d+): (.+)$"}
|
||||||
|
|
||||||
|
if out:find("command not found") then
|
||||||
|
micro.InfoBar():Error(
|
||||||
|
"Make sure that Aspell is installed and available in your PATH")
|
||||||
|
return {}
|
||||||
|
elseif not out:find("International Ispell Version") then
|
||||||
|
-- Something went wrong, we'll show what Aspell has to say
|
||||||
|
micro.InfoBar():Error("Aspell: " .. out)
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local misspells = {}
|
||||||
|
|
||||||
|
local linenumber = 1
|
||||||
|
local lines = split(out, "\n")
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
if line == "" then
|
||||||
|
linenumber = linenumber + 1
|
||||||
|
else
|
||||||
|
for _, pattern in ipairs(patterns) do
|
||||||
|
if string.find(line, pattern) then
|
||||||
|
local word, offset, suggestions = string.match(line, pattern)
|
||||||
|
offset = tonumber(offset)
|
||||||
|
local len = utf.RuneCountInString(word)
|
||||||
|
|
||||||
|
misspells[#misspells + 1] = {
|
||||||
|
word = word,
|
||||||
|
mstart = buffer.Loc(offset - 1, linenumber - 1),
|
||||||
|
mend = buffer.Loc(offset - 1 + len, linenumber - 1),
|
||||||
|
suggestions = suggestions and split(suggestions, ", ") or {},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return misspells
|
||||||
|
end
|
||||||
|
|
||||||
|
function highlight(out, args)
|
||||||
|
local buf = args[1]
|
||||||
|
|
||||||
|
buf:ClearMessages("aspell")
|
||||||
|
|
||||||
|
-- This is a hack that keeps the text shifted two columns to the right
|
||||||
|
-- even when no gutter messages are shown
|
||||||
|
local msg = "This message shouldn't be visible (Aspell plugin)"
|
||||||
|
local bmsg = buffer.NewMessageAtLine("aspell", msg, 0, buffer.MTError)
|
||||||
|
buf:AddMessage(bmsg)
|
||||||
|
|
||||||
|
for _, misspell in ipairs(parseOutput(out)) do
|
||||||
|
local msg = nil
|
||||||
|
if #(misspell.suggestions) > 0 then
|
||||||
|
msg = misspell.word .. " -> " .. table.concat(misspell.suggestions, ", ")
|
||||||
|
else
|
||||||
|
msg = misspell.word .. " ->X"
|
||||||
|
end
|
||||||
|
local bmsg = buffer.NewMessage("aspell", msg, misspell.mstart,
|
||||||
|
misspell.mend, buffer.MTWarning)
|
||||||
|
buf:AddMessage(bmsg)
|
||||||
|
end
|
||||||
|
|
||||||
|
lock = false
|
||||||
|
if next ~= nil then
|
||||||
|
spellcheck(next)
|
||||||
|
next = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function parseMessages(messages)
|
||||||
|
local patterns = {"^(.-) %-> (.+)$", "^(.-) %->X$"}
|
||||||
|
|
||||||
|
if messages == nil then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
|
||||||
|
local misspells = {}
|
||||||
|
|
||||||
|
for i=1, #messages do
|
||||||
|
local message = messages[i]
|
||||||
|
if message.Owner == "aspell" then
|
||||||
|
for _, pattern in ipairs(patterns) do
|
||||||
|
if string.find(message.Msg, pattern) then
|
||||||
|
local word, suggestions = string.match(message.Msg, pattern)
|
||||||
|
|
||||||
|
misspells[#misspells + 1] = {
|
||||||
|
word = word,
|
||||||
|
mstart = -message.Start,
|
||||||
|
mend = -message.End,
|
||||||
|
suggestions = suggestions and split(suggestions, ", ") or {},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return misspells
|
||||||
|
end
|
||||||
|
|
||||||
|
function togglecheck(bp, args)
|
||||||
|
local buf = bp.Buf
|
||||||
|
local check = buf.Settings["aspell.check"]
|
||||||
|
if check == "on" or (check == "auto" and filterModes[buf:FileType()]) then
|
||||||
|
buf.Settings["aspell.check"] = "off"
|
||||||
|
else
|
||||||
|
buf.Settings["aspell.check"] = "on"
|
||||||
|
end
|
||||||
|
spellcheck(buf)
|
||||||
|
if args then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function addpersonal(bp, args)
|
||||||
|
local buf = bp.Buf
|
||||||
|
|
||||||
|
local loc = buf:GetActiveCursor().Loc
|
||||||
|
|
||||||
|
for _, misspell in ipairs(parseMessages(buf.Messages)) do
|
||||||
|
local wordInBuf = util.String(buf:Substr(misspell.mstart, misspell.mend))
|
||||||
|
if loc:GreaterEqual(misspell.mstart) and loc:LessEqual(misspell.mend)
|
||||||
|
and wordInBuf == misspell.word then
|
||||||
|
local options = {"pipe", "--encoding=utf-8"}
|
||||||
|
if buf.Settings["aspell.lang"] ~= "" then
|
||||||
|
options[#options + 1] = "--lang=" .. buf.Settings["aspell.lang"]
|
||||||
|
end
|
||||||
|
if buf.Settings["aspell.dict"] ~= "" then
|
||||||
|
options[#options + 1] = "--master=" .. buf.Settings["aspell.dict"]
|
||||||
|
end
|
||||||
|
for _, argument in ipairs(split(buf.Settings["aspell.args"], " ")) do
|
||||||
|
options[#options + 1] = argument
|
||||||
|
end
|
||||||
|
|
||||||
|
local job = shell.JobSpawn("aspell", options, nil, nil, function ()
|
||||||
|
spellcheck(buf)
|
||||||
|
end)
|
||||||
|
shell.JobSend(job, "*" .. misspell.word .. "\n#\n")
|
||||||
|
job.Stdin:Close()
|
||||||
|
|
||||||
|
if args then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if args then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function acceptsug(bp, args)
|
||||||
|
local buf = bp.Buf
|
||||||
|
local n = nil
|
||||||
|
if args and #args > 0 then
|
||||||
|
n = tonumber(args[1])
|
||||||
|
end
|
||||||
|
|
||||||
|
local loc = buf:GetActiveCursor().Loc
|
||||||
|
|
||||||
|
for _, misspell in ipairs(parseMessages(buf.Messages)) do
|
||||||
|
local wordInBuf = util.String(buf:Substr(misspell.mstart, misspell.mend))
|
||||||
|
if loc:GreaterEqual(misspell.mstart) and loc:LessEqual(misspell.mend)
|
||||||
|
and wordInBuf == misspell.word then
|
||||||
|
if misspell.suggestions[n] then
|
||||||
|
-- If n is in the range we'll accept n-th suggestion
|
||||||
|
buf:GetActiveCursor():GotoLoc(misspell.mend)
|
||||||
|
buf:Replace(misspell.mstart, misspell.mend, misspell.suggestions[n])
|
||||||
|
|
||||||
|
spellcheck(buf)
|
||||||
|
if args then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
elseif #(misspell.suggestions) > 0 then
|
||||||
|
-- If n is 0 indicating acceptsug was called with no arguments
|
||||||
|
-- we will cycle through the suggestions autocomplete-like
|
||||||
|
buf:GetActiveCursor():GotoLoc(misspell.mend)
|
||||||
|
buf:Remove(misspell.mstart, misspell.mend)
|
||||||
|
buf:Autocomplete(function ()
|
||||||
|
return misspell.suggestions, misspell.suggestions
|
||||||
|
end)
|
||||||
|
|
||||||
|
spellcheck(buf)
|
||||||
|
if args then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if args then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
function split(str, pat)
|
||||||
|
local t = {}
|
||||||
|
local fpat = "(.-)" .. pat
|
||||||
|
local last_end = 1
|
||||||
|
local s, e, cap = str:find(fpat, 1)
|
||||||
|
while s do
|
||||||
|
if s ~= 1 or cap ~= "" then
|
||||||
|
table.insert(t, cap)
|
||||||
|
end
|
||||||
|
last_end = e+1
|
||||||
|
s, e, cap = str:find(fpat, last_end)
|
||||||
|
end
|
||||||
|
if last_end <= #str then
|
||||||
|
cap = str:sub(last_end)
|
||||||
|
table.insert(t, cap)
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
-- We need to spellcheck every time, the buffer is modified. Sadly there's
|
||||||
|
-- no such thing as onBufferModified()
|
||||||
|
|
||||||
|
function onBufferOpen(buf)
|
||||||
|
spellcheck(buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The following callbacks are undocumented
|
||||||
|
|
||||||
|
function onRune(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onCycleAutocompleteBack(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The following were copied from help keybindings
|
||||||
|
|
||||||
|
-- function onCursorUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCursorDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCursorPageUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCursorPageDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCursorLeft(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCursorRight(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCursorStart(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCursorEnd(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectToStart(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectToEnd(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectLeft(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectRight(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectToStartOfText(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectToStartOfTextToggle(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onWordRight(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onWordLeft(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectWordRight(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectWordLeft(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
function onMoveLinesUp(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onMoveLinesDown(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onDeleteWordRight(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onDeleteWordLeft(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- function onSelectLine(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectToStartOfLine(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectToEndOfLine(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
function onInsertNewline(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onInsertSpace(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onBackspace(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onDelete(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- function onCenter(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
function onInsertTab(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- function onSave(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSaveAll(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSaveAs(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onFind(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onFindLiteral(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onFindNext(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onFindPrevious(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
function onUndo(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onRedo(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- function onCopy(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCopyLine(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
function onCut(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onCutLine(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onDuplicateLine(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onDeleteLine(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onIndentSelection(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onOutdentSelection(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onOutdentLine(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onIndentLine(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
function onPaste(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- function onSelectAll(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onOpenFile(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onStart(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onEnd(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onPageUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onPageDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectPageUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSelectPageDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onHalfPageUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onHalfPageDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onStartOfLine(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onEndOfLine(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onStartOfText(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onStartOfTextToggle(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onParagraphPrevious(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onParagraphNext(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onToggleHelp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onToggleDiffGutter(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onToggleRuler(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onJumpLine(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onClearStatus(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onShellMode(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onCommandMode(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onQuit(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onQuitAll(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onAddTab(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onPreviousTab(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onNextTab(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onNextSplit(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onUnsplit(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onVSplit(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onHSplit(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onPreviousSplit(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onToggleMacro(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
function onPlayMacro(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- function onSuspend(bp) -- Unix only
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onScrollUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onScrollDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSpawnMultiCursor(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSpawnMultiCursorUp(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSpawnMultiCursorDown(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSpawnMultiCursorSelect(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onRemoveMultiCursor(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onRemoveAllMultiCursors(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onSkipMultiCursor(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onNone(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
-- function onJumpToMatchingBrace(bp)
|
||||||
|
-- end
|
||||||
|
|
||||||
|
function onAutocomplete(bp)
|
||||||
|
spellcheck(bp.Buf)
|
||||||
|
end
|
|
@ -0,0 +1,76 @@
|
||||||
|
# Aspell plugin
|
||||||
|
|
||||||
|
The text will be checked for misspells as you type. It understands the syntax
|
||||||
|
of XML, HTML, TeX and Markdown. On C++, C and Perl only comments and string
|
||||||
|
literals will be checked.
|
||||||
|
|
||||||
|
You need to have Aspell installed and available in your PATH. It does not come
|
||||||
|
with this plugin. If you are on Windows, you can install Aspell through
|
||||||
|
[MSYS2](https://www.msys2.org/).
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
* `aspell.check`: controls whether spellchecking is performed. Possible values
|
||||||
|
are `on`, `off` and `auto`. When set to `auto`, the file will be checked
|
||||||
|
only if it's one of these filetypes: XML, C++, C, HTML, Perl, TeX,
|
||||||
|
Markdown, Groff/Troff, Manpage, Email or Git commit. Defaults to `auto`.
|
||||||
|
|
||||||
|
* `aspell.lang`: language to use. Two letter language code, optionally followed
|
||||||
|
by an underscore or a dash and a two letter country code. It will be passed
|
||||||
|
to Aspell in the `--lang` option.
|
||||||
|
|
||||||
|
* `aspell.dict`: dictionary to use. Run `aspell dicts` in a terminal to see
|
||||||
|
available dictionaries. It will be passed to Aspell in the `--master` option.
|
||||||
|
|
||||||
|
If both `aspell.dict` and `aspell.lang` are left empty (which is the default),
|
||||||
|
Aspell will follow locale settings.
|
||||||
|
|
||||||
|
* `aspell.sugmode`: one of `ultra`, `fast`, `normal`, `slow` or `bad-spellers`.
|
||||||
|
It will be passed to Aspell in the `--sug-mode` option. Defaults to `normal`.
|
||||||
|
You may wish to change it to `fast`, if you feel that the spellchecking is
|
||||||
|
too slow. For an explanation of what each option does, see
|
||||||
|
http://aspell.net/man-html/Notes-on-the-Different-Suggestion-Modes.html
|
||||||
|
|
||||||
|
* `aspell.args`: additional command line arguments, that will be passed to
|
||||||
|
Aspell.
|
||||||
|
|
||||||
|
When you change some of these settings while in Micro using `setlocal` or
|
||||||
|
`set`, you might not see the effect until you modify a buffer.
|
||||||
|
|
||||||
|
You can also disable or enable spellchecking for specific file types in your
|
||||||
|
`settings.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"*.txt": {
|
||||||
|
"aspell.check": "on"
|
||||||
|
},
|
||||||
|
"ft:markdown": {
|
||||||
|
"aspell.check": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
* `togglecheck`: turns the spellchecking on/off. You can bind it to a key as
|
||||||
|
`lua:aspell.addpersonal`. The effect's the same as changing `aspell.check`
|
||||||
|
using `setlocal`.
|
||||||
|
|
||||||
|
* `addpersonal`: adds the word the cursor is on to your personal dictionary, so
|
||||||
|
that it won't be highlighted as a misspell anymore. You can bind it to a key
|
||||||
|
as `lua:aspell.addpersonal`.
|
||||||
|
|
||||||
|
* `acceptsug 'n'?`: accepts the nth suggestion for the word the cursor is on.
|
||||||
|
You can bind it to a key as `lua:aspell.acceptsug`. If `n` is not provided or
|
||||||
|
this command is invoked with a keyboard shortcut, it will start to cycle
|
||||||
|
through the suggestions. Use `Tab` and `Backtab` to cycle through them.
|
||||||
|
|
||||||
|
You can also use them in chain keybindings with `,`, `&` and `|` (see
|
||||||
|
`help keybindings`). Example `bindings.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Tab": "Autocomplete|lua:aspell.acceptsug|IndentSelection|InsertTab"
|
||||||
|
}
|
||||||
|
```
|
|
@ -0,0 +1,43 @@
|
||||||
|
[{
|
||||||
|
"Name": "aspell",
|
||||||
|
"Description": "Spellchecking with Aspell",
|
||||||
|
"Tags": ["spellchecking", "spelling", "aspell", "spellchecker"],
|
||||||
|
"Website": "https://github.com/priner/micro-aspell-plugin",
|
||||||
|
"Versions": [
|
||||||
|
{
|
||||||
|
"Version": "1.3.0",
|
||||||
|
"Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.3.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "1.2.1",
|
||||||
|
"Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.2.1.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "1.2.0",
|
||||||
|
"Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.2.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "1.1.0",
|
||||||
|
"Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.1.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "1.0.0",
|
||||||
|
"Url": "https://github.com/priner/micro-aspell-plugin/archive/v1.0.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
|
@ -0,0 +1 @@
|
||||||
|
Provides a `fzf` command in micro to open a file in the current pane using fzf.
|
|
@ -0,0 +1,38 @@
|
||||||
|
VERSION = "1.1.1"
|
||||||
|
|
||||||
|
local micro = import("micro")
|
||||||
|
local shell = import("micro/shell")
|
||||||
|
local config = import("micro/config")
|
||||||
|
local buffer = import("micro/buffer")
|
||||||
|
|
||||||
|
function fzf(bp)
|
||||||
|
if shell.TermEmuSupported then
|
||||||
|
local err = shell.RunTermEmulator(bp, "fzf", false, true, fzfOutput, {bp})
|
||||||
|
if err ~= nil then
|
||||||
|
micro.InfoBar():Error(err)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
local output, err = shell.RunInteractiveShell("fzf", false, true)
|
||||||
|
if err ~= nil then
|
||||||
|
micro.InfoBar():Error(err)
|
||||||
|
else
|
||||||
|
fzfOutput(output, {bp})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function fzfOutput(output, args)
|
||||||
|
local bp = args[1]
|
||||||
|
local strings = import("strings")
|
||||||
|
output = strings.TrimSpace(output)
|
||||||
|
if output ~= "" then
|
||||||
|
local buf, err = buffer.NewBufferFromFile(output)
|
||||||
|
if err == nil then
|
||||||
|
bp:OpenBuffer(buf)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function init()
|
||||||
|
config.MakeCommand("fzf", fzf, config.NoComplete)
|
||||||
|
end
|
|
@ -0,0 +1,32 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"Name": "fzf",
|
||||||
|
"Description": "adds support to opening files via fzf",
|
||||||
|
"Website": "https://github.com/samdmarshall/micro-fzf-plugin",
|
||||||
|
"Tags": ["fzf"],
|
||||||
|
"Versions": [
|
||||||
|
{
|
||||||
|
"Version": "1.1.1",
|
||||||
|
"Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/fzf-1.1.1.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.0-1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "1.1.0",
|
||||||
|
"Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/fzf-1.1.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.0-1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "1.0.5",
|
||||||
|
"Url": "https://github.com/samdmarshall/micro-fzf-plugin/archive/v1.0.5.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=1.1.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Misspell Plugin for Micro
|
||||||
|
|
||||||
|
This repository holds the misspell plugin for micro.
|
||||||
|
|
||||||
|
Install with `> plugin install misspell`,
|
||||||
|
https://github.com/client9/misspell needs to be in your PATH.
|
||||||
|
This plugin will lint text for spelling mistakes.
|
|
@ -0,0 +1,9 @@
|
||||||
|
VERSION = "0.2.0"
|
||||||
|
|
||||||
|
local config = import("micro/config")
|
||||||
|
|
||||||
|
function init()
|
||||||
|
-- uses the default linter plugin
|
||||||
|
-- matches any filetype
|
||||||
|
linter.makeLinter("misspell", "", "misspell", {"%f"}, "%f:%l:%c: %m", {}, false, true)
|
||||||
|
end
|
|
@ -0,0 +1,22 @@
|
||||||
|
[{
|
||||||
|
"Name": "misspell",
|
||||||
|
"Description": "plugin that corrects commonly misspelled words",
|
||||||
|
"Tags": ["spell", "check", "misspell"],
|
||||||
|
"Website": "https://github.com/onodera-punpun/micro-misspell-plugin",
|
||||||
|
"Versions": [
|
||||||
|
{
|
||||||
|
"Version": "0.2.0",
|
||||||
|
"Url": "https://github.com/micro-editor/updated-plugins/releases/download/v1.0.0/misspell-0.2.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.0-1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "0.1.0",
|
||||||
|
"Url": "https://github.com/onodera-punpun/micro-misspell-plugin/archive/0.1.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=1.0.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
|
@ -0,0 +1,6 @@
|
||||||
|
Version 1.2.1
|
||||||
|
* Fixed utf8 character count
|
||||||
|
|
||||||
|
Version 1.2.0
|
||||||
|
+ Now counts lines
|
||||||
|
+ Added Support for counting lines, words and characters in selection
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2020 bananaapple
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Micro Word Count Plugin
|
||||||
|
|
||||||
|
Word, character and line counter for micro editor.
|
||||||
|
(forked from https://github.com/adamnpeace/micro-wc-plugin)
|
|
@ -0,0 +1,25 @@
|
||||||
|
# WordCount (wc) Plugin #
|
||||||
|
|
||||||
|
The wc plugin provides the user with the ability to count either
|
||||||
|
characters or strings in any text being edited with micro.
|
||||||
|
|
||||||
|
A word is defined as a string of characters delimited by white
|
||||||
|
space characters. White space characters are the set of characters
|
||||||
|
for which the iswspace(3) function returns true.
|
||||||
|
|
||||||
|
A line is defined as a string of characters delimited by \n
|
||||||
|
characters, or by the beginning or end of the file. \r\n line
|
||||||
|
endings will be counted correctly as well, since there is only
|
||||||
|
one \n per \r\n.
|
||||||
|
|
||||||
|
Character count includes white space and newline characters.
|
||||||
|
|
||||||
|
To initiate the function, you can either:
|
||||||
|
|
||||||
|
Press "F5"
|
||||||
|
|
||||||
|
Or run:
|
||||||
|
|
||||||
|
```
|
||||||
|
> wc
|
||||||
|
```
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"name": "wc",
|
||||||
|
"description": "Word count plugin",
|
||||||
|
"website": "",
|
||||||
|
"install": "",
|
||||||
|
"version": "1.2.1",
|
||||||
|
"require": [
|
||||||
|
"micro >= 2.0.0"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
[{
|
||||||
|
"Name": "wc",
|
||||||
|
"Description": "Plugin to count words/characters in micro",
|
||||||
|
"Tags": ["wc", "word", "character", "count"],
|
||||||
|
"Website": "https://github.com/adamnpeace/micro-wc-plugin",
|
||||||
|
"Versions": [
|
||||||
|
{
|
||||||
|
"Version": "1.1.0",
|
||||||
|
"Url": "https://github.com/adamnpeace/micro-wc-plugin/archive/v1.1.0.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=2.0.0-1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Version": "1.0.1",
|
||||||
|
"Url": "https://github.com/adamnpeace/micro-wc-plugin/archive/v1.0.1.zip",
|
||||||
|
"Require": {
|
||||||
|
"micro": ">=1.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
|
@ -0,0 +1,37 @@
|
||||||
|
VERSION = "1.2.1"
|
||||||
|
|
||||||
|
local micro = import("micro")
|
||||||
|
local config = import("micro/config")
|
||||||
|
local util = import("micro/util")
|
||||||
|
local utf8 = import("unicode/utf8")
|
||||||
|
|
||||||
|
function init()
|
||||||
|
config.MakeCommand("wc", wordCount, config.NoComplete)
|
||||||
|
config.AddRuntimeFile("wc", config.RTHelp, "help/wc.md")
|
||||||
|
config.TryBindKey("F5", "lua:wc.wordCount", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
function wordCount(bp)
|
||||||
|
-- Buffer of selection/whole document
|
||||||
|
local buffer
|
||||||
|
--Get active cursor (to get selection)
|
||||||
|
local cursor = bp.Buf:GetActiveCursor()
|
||||||
|
--If cursor exists and there is selection, convert selection byte[] to string
|
||||||
|
if cursor and cursor:HasSelection() then
|
||||||
|
buffer = util.String(cursor:GetSelection())
|
||||||
|
else
|
||||||
|
--no selection, convert whole buffer byte[] to string
|
||||||
|
buffer = util.String(bp.Buf:Bytes())
|
||||||
|
end
|
||||||
|
--length of the buffer/selection (string), utf8 friendly
|
||||||
|
charCount = utf8.RuneCountInString(buffer)
|
||||||
|
--Get word/line count using gsub's number of substitutions
|
||||||
|
-- number of substitutions, pattern: %S+ (more than one non-whitespace characters)
|
||||||
|
local _ , wordCount = buffer:gsub("%S+","")
|
||||||
|
-- number of substitutions, pattern: \n (number of newline characters)
|
||||||
|
local _, lineCount = buffer:gsub("\n", "")
|
||||||
|
--add one to line count (since we're counting separators not lines above)
|
||||||
|
lineCount = lineCount + 1
|
||||||
|
--display the message
|
||||||
|
micro.InfoBar():Message("Lines:" .. lineCount .. " Words:"..wordCount.." Characters:"..charCount)
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"autosu": true,
|
||||||
|
"colorscheme": "geany",
|
||||||
|
"mkparents": true
|
||||||
|
}
|
146
pkg/garuda-common-settings/etc/skel/.config/mpv/mpv.conf
Normal file
146
pkg/garuda-common-settings/etc/skel/.config/mpv/mpv.conf
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
#
|
||||||
|
# Example mpv configuration file
|
||||||
|
#
|
||||||
|
# Warning:
|
||||||
|
#
|
||||||
|
# The commented example options usually do _not_ set the default values. Call
|
||||||
|
# mpv with --list-options to see the default values for most options. There is
|
||||||
|
# no builtin or example mpv.conf with all the defaults.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Configuration files are read system-wide from /usr/local/etc/mpv.conf
|
||||||
|
# and per-user from ~/.config/mpv/mpv.conf, where per-user settings override
|
||||||
|
# system-wide settings, all of which are overridden by the command line.
|
||||||
|
#
|
||||||
|
# Configuration file settings and the command line options use the same
|
||||||
|
# underlying mechanisms. Most options can be put into the configuration file
|
||||||
|
# by dropping the preceding '--'. See the man page for a complete list of
|
||||||
|
# options.
|
||||||
|
#
|
||||||
|
# Lines starting with '#' are comments and are ignored.
|
||||||
|
#
|
||||||
|
# See the CONFIGURATION FILES section in the man page
|
||||||
|
# for a detailed description of the syntax.
|
||||||
|
#
|
||||||
|
# Profiles should be placed at the bottom of the configuration file to ensure
|
||||||
|
# that settings wanted as defaults are not restricted to specific profiles.
|
||||||
|
|
||||||
|
##################
|
||||||
|
# video settings #
|
||||||
|
##################
|
||||||
|
|
||||||
|
# Start in fullscreen mode by default.
|
||||||
|
fs=yes
|
||||||
|
|
||||||
|
# force starting with centered window
|
||||||
|
#geometry=50%:50%
|
||||||
|
|
||||||
|
# don't allow a new window to have a size larger than 90% of the screen size
|
||||||
|
#autofit-larger=90%x90%
|
||||||
|
|
||||||
|
# Do not close the window on exit.
|
||||||
|
#keep-open=yes
|
||||||
|
|
||||||
|
# Do not wait with showing the video window until it has loaded. (This will
|
||||||
|
# resize the window once video is loaded. Also always shows a window with
|
||||||
|
# audio.)
|
||||||
|
#force-window=immediate
|
||||||
|
|
||||||
|
# Disable the On Screen Controller (OSC).
|
||||||
|
#osc=no
|
||||||
|
|
||||||
|
# Keep the player window on top of all other windows.
|
||||||
|
#ontop=yes
|
||||||
|
|
||||||
|
# Specify high quality video rendering preset (for --vo=gpu only)
|
||||||
|
# Can cause performance problems with some drivers and GPUs.
|
||||||
|
#profile=gpu-hq
|
||||||
|
|
||||||
|
# Force video to lock on the display's refresh rate, and change video and audio
|
||||||
|
# speed to some degree to ensure synchronous playback - can cause problems
|
||||||
|
# with some drivers and desktop environments.
|
||||||
|
#video-sync=display-resample
|
||||||
|
|
||||||
|
# Enable hardware decoding if available. Often, this does not work with all
|
||||||
|
# video outputs, but should work well with default settings on most systems.
|
||||||
|
# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs
|
||||||
|
# may or may not help.
|
||||||
|
hwdec=auto
|
||||||
|
#vo=gpu
|
||||||
|
#gpu-context=wayland
|
||||||
|
|
||||||
|
# Block X11 compositing
|
||||||
|
x11-bypass-compositor=no
|
||||||
|
|
||||||
|
##################
|
||||||
|
# audio settings #
|
||||||
|
##################
|
||||||
|
|
||||||
|
# Specify default audio device. You can list devices with: --audio-device=help
|
||||||
|
# The option takes the device string (the stuff between the '...').
|
||||||
|
#audio-device=alsa/default
|
||||||
|
|
||||||
|
# Do not filter audio to keep pitch when changing playback speed.
|
||||||
|
#audio-pitch-correction=no
|
||||||
|
|
||||||
|
# Output 5.1 audio natively, and upmix/downmix audio with a different format.
|
||||||
|
#audio-channels=5.1
|
||||||
|
# Disable any automatic remix, _if_ the audio output accepts the audio format.
|
||||||
|
# of the currently played file. See caveats mentioned in the manpage.
|
||||||
|
# (The default is "auto-safe", see manpage.)
|
||||||
|
#audio-channels=auto
|
||||||
|
volume-max=250
|
||||||
|
##################
|
||||||
|
# other settings #
|
||||||
|
##################
|
||||||
|
|
||||||
|
# Pretend to be a web browser. Might fix playback with some streaming sites,
|
||||||
|
# but also will break with shoutcast streams.
|
||||||
|
#user-agent="Mozilla/5.0"
|
||||||
|
|
||||||
|
# cache settings
|
||||||
|
#
|
||||||
|
# Use 150MB input cache by default. The cache is enabled for network streams only.
|
||||||
|
#cache-default=153600
|
||||||
|
#
|
||||||
|
# Use 150MB input cache for everything, even local files.
|
||||||
|
#cache=153600
|
||||||
|
#
|
||||||
|
# Disable the behavior that the player will pause if the cache goes below a
|
||||||
|
# certain fill size.
|
||||||
|
#cache-pause=no
|
||||||
|
#
|
||||||
|
# Read ahead about 5 seconds of audio and video packets.
|
||||||
|
#demuxer-readahead-secs=5.0
|
||||||
|
#
|
||||||
|
# Raise readahead from demuxer-readahead-secs to this value if a cache is active.
|
||||||
|
#cache-secs=50.0
|
||||||
|
|
||||||
|
# Display English subtitles if available.
|
||||||
|
#slang=en
|
||||||
|
|
||||||
|
# Play Finnish audio if available, fall back to English otherwise.
|
||||||
|
#alang=fi,en
|
||||||
|
|
||||||
|
# Change subtitle encoding. For Arabic subtitles use 'cp1256'.
|
||||||
|
# If the file seems to be valid UTF-8, prefer UTF-8.
|
||||||
|
# (You can add '+' in front of the codepage to force it.)
|
||||||
|
#sub-codepage=cp1256
|
||||||
|
|
||||||
|
# You can also include other configuration files.
|
||||||
|
#include=/path/to/the/file/you/want/to/include
|
||||||
|
|
||||||
|
############
|
||||||
|
# Profiles #
|
||||||
|
############
|
||||||
|
|
||||||
|
# The options declared as part of profiles override global default settings,
|
||||||
|
# but only take effect when the profile is active.
|
||||||
|
|
||||||
|
# The following profile can be enabled on the command line with: --profile=eye-cancer
|
||||||
|
|
||||||
|
#[eye-cancer]
|
||||||
|
#sharpen=5
|
||||||
|
|
||||||
|
#keepaspect=no
|
||||||
|
save-position-on-quit
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"AurRpcUrl": "https://aurapi.moson.org/rpc",
|
||||||
|
"AurTimeout": 5000,
|
||||||
|
"AurSearchDelay": 500,
|
||||||
|
"AurUseDifferentCommands": false,
|
||||||
|
"AurInstallCommand": "",
|
||||||
|
"AurUpgradeCommand": "",
|
||||||
|
"DisableAur": false,
|
||||||
|
"MaxResults": 500,
|
||||||
|
"PacmanDbPath": "/var/lib/pacman/",
|
||||||
|
"PacmanConfigPath": "/etc/pacman.conf",
|
||||||
|
"InstallCommand": "paru -S",
|
||||||
|
"UninstallCommand": "paru -Rs",
|
||||||
|
"SysUpgradeCommand": "paru",
|
||||||
|
"SearchMode": "Contains",
|
||||||
|
"SearchBy": "Name",
|
||||||
|
"CacheExpiry": 10,
|
||||||
|
"DisableCache": false,
|
||||||
|
"ColorScheme": "Arch Linux",
|
||||||
|
"BorderStyle": "Double",
|
||||||
|
"ShowPkgbuildCommand": "curl -s \"{url}\"|less",
|
||||||
|
"ShowPkgbuildInternally": true,
|
||||||
|
"ComputeRequiredBy": false,
|
||||||
|
"GlyphStyle": "Angled-No-X",
|
||||||
|
"DisableNewsFeed": false,
|
||||||
|
"FeedURLs": "https://archlinux.org/feeds/news/",
|
||||||
|
"FeedMaxItems": 5,
|
||||||
|
"SaveWindowLayout": false,
|
||||||
|
"LeftProportion": 4,
|
||||||
|
"Transparent": false,
|
||||||
|
"PackageColumnWidth": 0,
|
||||||
|
"EnableAutoSuggest": false
|
||||||
|
}
|
69
pkg/garuda-common-settings/etc/skel/.config/psd/psd.conf
Normal file
69
pkg/garuda-common-settings/etc/skel/.config/psd/psd.conf
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
#
|
||||||
|
# $XDG_CONFIG_HOME/psd/psd.conf
|
||||||
|
#
|
||||||
|
# For documentation, refer man 1 psd or to the wiki page
|
||||||
|
# https://wiki.archlinux.org/index.php/Profile-sync-daemon
|
||||||
|
|
||||||
|
## NOTE the following:
|
||||||
|
## To protect data from corruption, in the event that you do make an edit while
|
||||||
|
## psd is active, any changes made will be applied the next time you start psd.
|
||||||
|
|
||||||
|
# Uncomment and set to "yes" to use overlayfs instead of a full copy to reduce
|
||||||
|
# the memory costs and to improve sync/unsync operations. Note that your kernel
|
||||||
|
# MUST have this module available in order to use this mode
|
||||||
|
#
|
||||||
|
#USE_OVERLAYFS="no"
|
||||||
|
|
||||||
|
# Uncomment and set to "yes" to resync on suspend to reduce potential data loss.
|
||||||
|
# Note that your system MUST have gdbus from glib2 installed to use this mode.
|
||||||
|
#USE_SUSPSYNC="no"
|
||||||
|
|
||||||
|
# List any browsers in the array below to have managed by psd. Useful if you do
|
||||||
|
# not wish to have all possible browser profiles managed which is the default if
|
||||||
|
# this array is left commented.
|
||||||
|
#
|
||||||
|
# Possible values:
|
||||||
|
# chromium
|
||||||
|
# chromium-dev
|
||||||
|
# conkeror.mozdev.org
|
||||||
|
# epiphany
|
||||||
|
# falkon
|
||||||
|
# firefox
|
||||||
|
# firefox-trunk
|
||||||
|
# google-chrome
|
||||||
|
# google-chrome-beta
|
||||||
|
# google-chrome-unstable
|
||||||
|
# heftig-aurora
|
||||||
|
# icecat
|
||||||
|
# inox
|
||||||
|
# luakit
|
||||||
|
# midori
|
||||||
|
# opera
|
||||||
|
# opera-beta
|
||||||
|
# opera-developer
|
||||||
|
# opera-legacy
|
||||||
|
# otter-browser
|
||||||
|
# qupzilla
|
||||||
|
# qutebrowser
|
||||||
|
# palemoon
|
||||||
|
# rekonq
|
||||||
|
# seamonkey
|
||||||
|
# surf
|
||||||
|
# vivaldi
|
||||||
|
# vivaldi-snapshot
|
||||||
|
#
|
||||||
|
BROWSERS=(firedragon firefox chromium opera vivaldi google-chrome otter-browser)
|
||||||
|
|
||||||
|
# Uncomment and set to "no" to completely disable the crash recovery feature.
|
||||||
|
#
|
||||||
|
# The default is to create crash recovery backups if the system is ungracefully
|
||||||
|
# powered-down due to a kernel panic, hitting the reset switch, battery going
|
||||||
|
# dead, etc. Some users keep very diligent backups and don't care to have this
|
||||||
|
# feature enabled.
|
||||||
|
USE_BACKUPS="yes"
|
||||||
|
|
||||||
|
# Uncomment and set to an integer that is the maximum number of crash recovery
|
||||||
|
# snapshots to keep (the oldest ones are delete first).
|
||||||
|
#
|
||||||
|
# The default is to save the most recent 5 crash recovery snapshots.
|
||||||
|
BACKUP_LIMIT=2
|
|
@ -0,0 +1,10 @@
|
||||||
|
[gui]
|
||||||
|
gui=DefaultGUI
|
||||||
|
iconset=Breeze-dark
|
||||||
|
qt_style=kvantum
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
5018
pkg/garuda-common-settings/etc/skel/.config/vlc/vlcrc
Normal file
5018
pkg/garuda-common-settings/etc/skel/.config/vlc/vlcrc
Normal file
File diff suppressed because it is too large
Load diff
1
pkg/garuda-common-settings/etc/sudoers.d/editor
Normal file
1
pkg/garuda-common-settings/etc/sudoers.d/editor
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Defaults editor=/usr/bin/micro
|
1
pkg/garuda-common-settings/etc/sudoers.d/insults
Normal file
1
pkg/garuda-common-settings/etc/sudoers.d/insults
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Defaults insults
|
1
pkg/garuda-common-settings/etc/sudoers.d/pwfeedback
Normal file
1
pkg/garuda-common-settings/etc/sudoers.d/pwfeedback
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Defaults pwfeedback
|
21
pkg/garuda-common-settings/etc/xdg/autostart/conky.desktop
Executable file
21
pkg/garuda-common-settings/etc/xdg/autostart/conky.desktop
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Categories=System;Monitor;
|
||||||
|
Comment=
|
||||||
|
Comment=
|
||||||
|
Exec=conky --daemonize --pause=1
|
||||||
|
GenericName=
|
||||||
|
GenericName=
|
||||||
|
Icon=conky-logomark-violet
|
||||||
|
MimeType=
|
||||||
|
Name=conky
|
||||||
|
Name=conky
|
||||||
|
Path=
|
||||||
|
StartupNotify=false
|
||||||
|
Terminal=false
|
||||||
|
TerminalOptions=
|
||||||
|
TryExec=conky
|
||||||
|
Type=Application
|
||||||
|
X-DBUS-ServiceName=
|
||||||
|
X-DBUS-StartupType=
|
||||||
|
X-KDE-SubstituteUID=false
|
||||||
|
X-KDE-Username=
|
77
pkg/garuda-common-settings/etc/xdg/autostart/org.flameshot.Flameshot.desktop
Executable file
77
pkg/garuda-common-settings/etc/xdg/autostart/org.flameshot.Flameshot.desktop
Executable file
|
@ -0,0 +1,77 @@
|
||||||
|
#!/usr/bin/env xdg-open
|
||||||
|
[Desktop Entry]
|
||||||
|
Actions=Configure;Capture;Launcher;
|
||||||
|
Categories=Graphics;
|
||||||
|
Comment=Powerful yet simple to use screenshot software.
|
||||||
|
Comment[de]=Schlichte, leistungsstarke Screenshot-Software
|
||||||
|
Comment[es]=Software de captura de pantalla potente y fácil de usar.
|
||||||
|
Comment[fr]=Logiciel de capture d'écran puissant et simple d'utilisation.
|
||||||
|
Comment[ja]=パワフルで使いやすいスクリーンショットソフトウェア。
|
||||||
|
Comment[pl]=Proste w użyciu narzędzie do zrzutów ekranu
|
||||||
|
Comment[ru]=Простой и функциональный инструмент для создания скриншотов
|
||||||
|
Comment[sk]=Mocný, no tiež jednoduchý softvér na zachytávanie obrazovky.
|
||||||
|
Comment[sr]=Једноставан, а моћан алат за снимање екрана
|
||||||
|
Comment[uk]=Потужний простий у використанні додаток для створення знімків екрану.
|
||||||
|
Comment[zh_CN]=强大又易用的屏幕截图软件
|
||||||
|
Exec=flameshot
|
||||||
|
GenericName=Screenshot tool
|
||||||
|
GenericName[es]=Herramienta de captura de pantalla
|
||||||
|
GenericName[fr]=Outil de capture d'écran
|
||||||
|
GenericName[ja]=スクリーンショットツール
|
||||||
|
GenericName[pl]=Zrzuty ekranu
|
||||||
|
GenericName[ru]=Создание скриншотов
|
||||||
|
GenericName[sk]=Nástroj na zachytávanie obrazovky
|
||||||
|
GenericName[sr]=Снимач екрана
|
||||||
|
GenericName[uk]=Інструмент скриншотів
|
||||||
|
GenericName[zh_CN]=屏幕截图工具
|
||||||
|
Icon=org.flameshot.Flameshot
|
||||||
|
Keywords=flameshot;screenshot;capture;shutter;
|
||||||
|
Keywords[de]=flameshot;screenshot;Bildschirmfoto;Aufnahme;
|
||||||
|
Keywords[es]=flameshot;screenshot;capture;shutter;captura;
|
||||||
|
Keywords[fr]=flameshot;capture d'écran;capter;shutter;
|
||||||
|
Keywords[ja]=flameshot;screenshot;capture;shutter;スクリーンショット;キャプチャー;
|
||||||
|
Keywords[zh_CN]=flameshot;screenshot;capture;shutter;截图;屏幕;
|
||||||
|
Name=Flameshot
|
||||||
|
Name[zh_CN]=火焰截图
|
||||||
|
StartupNotify=false
|
||||||
|
Terminal=false
|
||||||
|
TryExec=flameshot
|
||||||
|
Type=Application
|
||||||
|
X-DBUS-ServiceName=org.flameshot.Flameshot
|
||||||
|
X-DBUS-StartupType=Unique
|
||||||
|
X-KDE-DBUS-Restricted-Interfaces=org_kde_kwin_effect-screenshot
|
||||||
|
|
||||||
|
[Desktop Action Configure]
|
||||||
|
Exec=flameshot config
|
||||||
|
Name=Configure
|
||||||
|
Name[de]=Einstellungen
|
||||||
|
Name[es]=Configurar
|
||||||
|
Name[fr]=Configurer
|
||||||
|
Name[ja]=設定
|
||||||
|
Name[pl]=Konfiguruj
|
||||||
|
Name[ru]=Настройки
|
||||||
|
Name[sk]=Nastaviť
|
||||||
|
Name[sr]=Подешавања
|
||||||
|
Name[uk]=Налаштувати
|
||||||
|
Name[zh_CN]=配置
|
||||||
|
|
||||||
|
[Desktop Action Capture]
|
||||||
|
Exec=flameshot gui --delay 500
|
||||||
|
Name=Take screenshot
|
||||||
|
Name[de]=Bildschirmfoto aufnehmen
|
||||||
|
Name[es]=Tomar captura de pantalla
|
||||||
|
Name[fr]=Prendre une capture d'écran
|
||||||
|
Name[ja]=スクリーンショットを撮る
|
||||||
|
Name[pl]=Zrzut ekranu
|
||||||
|
Name[ru]=Сделать скриншот
|
||||||
|
Name[sk]=Zachytiť obrazovku
|
||||||
|
Name[sr]=Сними екран
|
||||||
|
Name[uk]=Зробити знімок
|
||||||
|
Name[zh_CN]=进行截图
|
||||||
|
|
||||||
|
[Desktop Action Launcher]
|
||||||
|
Exec=flameshot launcher
|
||||||
|
Name=Open launcher
|
||||||
|
Name[de]=Starter öffnen
|
||||||
|
Name[sk]=Otvoriť spúšťač
|
||||||
|
Name[zh_CN]=打开启动器
|
88
pkg/garuda-common-settings/etc/xdg/autostart/redshift-gtk.desktop
Executable file
88
pkg/garuda-common-settings/etc/xdg/autostart/redshift-gtk.desktop
Executable file
|
@ -0,0 +1,88 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Categories=Utility;
|
||||||
|
Comment=Color temperature adjustment tool
|
||||||
|
Comment[be]=Інструмент рэгулявання каляровай тэмпературы
|
||||||
|
Comment[ca]=Eina per a l'ajust de la temperatura de color
|
||||||
|
Comment[cs]=Nástroj pro přizpůsobení barevné teploty
|
||||||
|
Comment[da]=Justeringsværktøj for farvetemperatur
|
||||||
|
Comment[de]=Farbtemperaturanpassungswerkzeug
|
||||||
|
Comment[en_GB]=Colour temperature adjustment tool
|
||||||
|
Comment[es]=Herramienta para el ajuste de la temperatura de color
|
||||||
|
Comment[fr]=Outil de réglage de la température de couleur
|
||||||
|
Comment[he]=כלי להתאמת טמפרטורת צבע
|
||||||
|
Comment[hu]=Színhőmérséklet beállító eszköz
|
||||||
|
Comment[it]=Strumento per la regolazione della temperatura del colore
|
||||||
|
Comment[ja]=色温度の調整ツール
|
||||||
|
Comment[lt]=Spalvos temperatūros reguliavimo įrankis
|
||||||
|
Comment[nb]=Justeringsverktøy for fargetemperatur
|
||||||
|
Comment[nl]=Hulpmiddel voor het bijstellen van de kleurtemperatuur
|
||||||
|
Comment[pl]=Narzędzie do dostosowywania temperatury barwowej
|
||||||
|
Comment[pt_BR]=Ferramenta de ajuste de temperatura de cor
|
||||||
|
Comment[ru]=Инструмент регулирования цветовой температуры
|
||||||
|
Comment[sr]=Алатка за прилагођавање температуре боје
|
||||||
|
Comment[sv]=Justeringsverktyg för färgtemperaturer
|
||||||
|
Comment[tr]=Renk sıcaklığı ayarlama aracı
|
||||||
|
Comment[uk]=Знаряддя налаштувань колірної температури
|
||||||
|
Comment[zh_CN]=色温调节工具
|
||||||
|
Comment[zh_TW]=色溫調整工具
|
||||||
|
Exec=redshift-gtk
|
||||||
|
GenericName=Color temperature adjustment
|
||||||
|
GenericName[be]=Рэгуляванне каляровай тэмпературы
|
||||||
|
GenericName[ca]=Ajust de la temperatura de color
|
||||||
|
GenericName[cs]=Nastavení teploty barev
|
||||||
|
GenericName[da]=Justering af farvetemperatur
|
||||||
|
GenericName[de]=Farbtemperaturanpassung
|
||||||
|
GenericName[en_GB]=Colour temperature adjustment
|
||||||
|
GenericName[es]=Ajuste de la temperatura de color
|
||||||
|
GenericName[fr]=Réglage de la température de couleur
|
||||||
|
GenericName[he]=התאמת טמפרטורת צבע
|
||||||
|
GenericName[hu]=Színhőmérséklet beállítása
|
||||||
|
GenericName[it]=Regolazione della temperatura del colore
|
||||||
|
GenericName[ja]=色温度の調整
|
||||||
|
GenericName[lt]=Spalvos temperatūros reguliavimas
|
||||||
|
GenericName[nb]=Justering av fargetemperatur
|
||||||
|
GenericName[nl]=Bijstelling van kleurtemperatuur
|
||||||
|
GenericName[pl]=Dostosowanie temperatury barwowej
|
||||||
|
GenericName[pt_BR]=Ajuste de temperatura de cor
|
||||||
|
GenericName[ru]=Настройка цветовой температуры
|
||||||
|
GenericName[sr]=Прилагођавање температуре боје
|
||||||
|
GenericName[sv]=Färgtemperaturjustering
|
||||||
|
GenericName[tr]=Renk sıcaklığı ayarı
|
||||||
|
GenericName[uk]=Налаштування колірної температури
|
||||||
|
GenericName[zh_CN]=色温调节
|
||||||
|
GenericName[zh_TW]=色溫調整
|
||||||
|
Hidden=false
|
||||||
|
Icon=redshift
|
||||||
|
Name=Redshift
|
||||||
|
Name[be]=Redshift
|
||||||
|
Name[ca]=Redshift
|
||||||
|
Name[cs]=Redshift
|
||||||
|
Name[da]=Redshift
|
||||||
|
Name[de]=Redshift
|
||||||
|
Name[en_GB]=Redshift
|
||||||
|
Name[es]=Redshift
|
||||||
|
Name[fr]=Redshift
|
||||||
|
Name[he]=Redshift
|
||||||
|
Name[hu]=Redshift
|
||||||
|
Name[it]=Redshift
|
||||||
|
Name[ja]=Redshift
|
||||||
|
Name[lt]=Redshift
|
||||||
|
Name[nb]=Rødskift
|
||||||
|
Name[pl]=Redshift
|
||||||
|
Name[pt]=Redshift
|
||||||
|
Name[pt_BR]=Redshift
|
||||||
|
Name[ro]=Redshift
|
||||||
|
Name[ru]=Redshift
|
||||||
|
Name[sr]=Редшифт
|
||||||
|
Name[sv]=Redshift
|
||||||
|
Name[tr]=Redshift
|
||||||
|
Name[uk]=Redshift
|
||||||
|
Name[zh_CN]=红移
|
||||||
|
Name[zh_TW]=Redshift
|
||||||
|
StartupNotify=true
|
||||||
|
Terminal=false
|
||||||
|
TryExec=redshift-gtk
|
||||||
|
Type=Application
|
||||||
|
X-GNOME-Autostart-enabled=true
|
||||||
|
|
87
pkg/garuda-common-settings/usr/bin/garuda-inxi
Executable file
87
pkg/garuda-common-settings/usr/bin/garuda-inxi
Executable file
|
@ -0,0 +1,87 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ -t 1 ] ; then
|
||||||
|
c_134=$'\033[1;34m'
|
||||||
|
c_131=$'\033[1;31m'
|
||||||
|
c_off=$'\033[0m'
|
||||||
|
else
|
||||||
|
c0="c0"
|
||||||
|
fi
|
||||||
|
|
||||||
|
detect_dual_boot() {
|
||||||
|
if [[ $EUID -eq 0 ]] && [[ -x /usr/bin/os-prober ]]; then
|
||||||
|
local OSPROBER_OUT="$(os-prober)" || { DUALBOOT="Os-prober error"; exit; }
|
||||||
|
echo $OSPROBER_OUT | grep -q "Windows Boot Manager" &> /dev/null && DUALBOOT="Yes" || DUALBOOT="No/Undetected"
|
||||||
|
elif [[ -x /usr/bin/efibootmgr ]] && [ -d /boot/efi ]; then
|
||||||
|
local EFIBOOTMGR_OUT="$(efibootmgr)" || { DUALBOOT="Efibootmgr error"; exit; }
|
||||||
|
echo $EFIBOOTMGR_OUT | grep -q "Windows Boot Manager" &> /dev/null && DUALBOOT="Probably (Run as root to verify)" || DUALBOOT="No/Undetected"
|
||||||
|
elif [[ -x /usr/bin/os-prober ]]; then
|
||||||
|
DUALBOOT="<superuser required>"
|
||||||
|
else
|
||||||
|
DUALBOOT="No detection tool installed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_snapshots() {
|
||||||
|
if [ -d /.snapshots ] || pacman -Qq snapper-support &> /dev/null; then
|
||||||
|
printf "snapper "
|
||||||
|
elif [ -d /run/timeshift ] || pacman -Qq timeshift-support &> /dev/null; then
|
||||||
|
printf "timeshift "
|
||||||
|
elif pacman -Qq snapper &> /dev/null; then
|
||||||
|
printf "snapper(custom) "
|
||||||
|
elif pacman -Qq timeshift &> /dev/null; then
|
||||||
|
printf "timeshift(custom) "
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_relevant_software() {
|
||||||
|
local RELEVANT=()
|
||||||
|
local packages
|
||||||
|
packages="$(pacman -Qq garuda-dracut-support mkinitcpio dracut nvidia-dkms 2> /dev/null | xargs || true)"
|
||||||
|
|
||||||
|
systemctl is-enabled tlp &> /dev/null && RELEVANT+=("tlp")
|
||||||
|
systemctl is-active NetworkManager &> /dev/null && RELEVANT+=("NetworkManager")
|
||||||
|
systemctl is-active connman &> /dev/null && RELEVANT+=("connman")
|
||||||
|
|
||||||
|
if [[ "$packages" =~ (^| )garuda-dracut-support($| ) ]]; then
|
||||||
|
RELEVANT+=("dracut")
|
||||||
|
elif [[ "$packages" =~ (^| )dracut($| ) ]]; then
|
||||||
|
RELEVANT+=("dracut(custom)")
|
||||||
|
fi
|
||||||
|
[[ "$packages" =~ (^| )mkinitcpio($| ) ]] && RELEVANT+=("mkinitcpio")
|
||||||
|
[[ "$packages" =~ (^| )nvidia-dkms($| ) ]] && RELEVANT+=("nvidia-dkms")
|
||||||
|
|
||||||
|
detect_snapshots
|
||||||
|
|
||||||
|
local RELEVANT_SOFTWARE="${RELEVANT[*]}"
|
||||||
|
[ -z "$RELEVANT_SOFTWARE" ] && RELEVANT_SOFTWARE="None"
|
||||||
|
echo "$RELEVANT_SOFTWARE"
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_system_update() {
|
||||||
|
local last_update
|
||||||
|
last_update="$(date -r /var/lib/garuda/last_update +%s 2> /dev/null)" || { echo "Unknown/Never"; return; }
|
||||||
|
local reboot=""
|
||||||
|
if [ "$last_update" -gt "$(date -r /proc +%s)" ]; then
|
||||||
|
reboot=" ${c_131}↻${c_off}"
|
||||||
|
fi
|
||||||
|
echo -e "$(date -d"@$last_update" +%F)${reboot}"
|
||||||
|
}
|
||||||
|
|
||||||
|
inxi -Faz${c0} --zv
|
||||||
|
|
||||||
|
echo -e "${c_134}Garuda ($(pacman -Q garuda-common-settings | awk '{print $2}')):${c_off}"
|
||||||
|
install_date="$(head -n1 /var/log/pacman.log | cut -d " " -f1 | cut -c 2-11)"
|
||||||
|
echo -e "${c_134} System install date:${c_off} ${install_date}"
|
||||||
|
echo -e "${c_134} Last full system update:${c_off} $(generate_system_update)"
|
||||||
|
echo -e "${c_134} Is partially upgraded: ${c_off} $([ -e /var/lib/garuda/partial_upgrade ] && echo Yes || echo No)"
|
||||||
|
echo -e "${c_134} Relevant software: ${c_off} $(generate_relevant_software)"
|
||||||
|
detect_dual_boot &> /dev/null
|
||||||
|
echo -e "${c_134} Windows dual boot: ${c_off} ${DUALBOOT}"
|
||||||
|
echo -e "${c_134} Failed units: ${c_off} $(systemctl list-units --failed --full --all --plain --no-legend | awk '{printf("%s ",$1)}')"
|
||||||
|
if [ "$1" == "funstuff" ]; then
|
||||||
|
update_count="$(paclog --grep="starting full system upgrade" | wc -l)"
|
||||||
|
echo -e "${c_134} Total system updates: ${c_off} ${update_count}"
|
||||||
|
echo -e "${c_134} --> Updates per week: ${c_off} $(( ${update_count}/(($(date +%s) - $(date --date="$install_date" +%s) )/(60*60*24*7)) ))"
|
||||||
|
fi
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
# This should be removed after the next KDE update
|
||||||
|
# Created 2023-02-20
|
||||||
|
|
||||||
|
[keyfile]
|
||||||
|
unmanaged-devices=interface-name:lo
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Prevent annoying beep from the pc speaker.
|
||||||
|
blacklist pcspkr
|
3
pkg/garuda-common-settings/usr/lib/modprobe.d/noime.conf
Normal file
3
pkg/garuda-common-settings/usr/lib/modprobe.d/noime.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Intel VPRO remote access technology driver.
|
||||||
|
blacklist mei
|
||||||
|
blacklist mei_me
|
|
@ -0,0 +1,15 @@
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
#
|
||||||
|
# This file is part of steamos-customizations.
|
||||||
|
#
|
||||||
|
# Copyright © 2022 Valve Corporation.
|
||||||
|
#
|
||||||
|
# steamos-customizations is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 2.1 of the License,
|
||||||
|
# or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This is required due to some games being unable to reuse their TCP ports
|
||||||
|
# if they're killed and restarted quickly - the default timeout is too large.
|
||||||
|
|
||||||
|
net.ipv4.tcp_fin_timeout = 5
|
12
pkg/garuda-common-settings/usr/lib/sysctl.d/20-sched.conf
Normal file
12
pkg/garuda-common-settings/usr/lib/sysctl.d/20-sched.conf
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
#
|
||||||
|
# This file is part of steamos-customizations.
|
||||||
|
#
|
||||||
|
# Copyright © 2022 Valve Corporation.
|
||||||
|
#
|
||||||
|
# steamos-customizations is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public License as
|
||||||
|
# published by the Free Software Foundation; either version 2.1 of the License,
|
||||||
|
# or (at your option) any later version.
|
||||||
|
|
||||||
|
kernel.sched_cfs_bandwidth_slice_us = 3000
|
|
@ -0,0 +1,15 @@
|
||||||
|
# The swappiness sysctl parameter represents the kernel's preference (or avoidance) of swap space. Swappiness can have a value between 0 and 200, the default value is 60.
|
||||||
|
# A low value causes the kernel to avoid swapping, a higher value causes the kernel to try to use swap space. Using a low value on sufficient memory is known to improve responsiveness on many systems.
|
||||||
|
vm.swappiness=133
|
||||||
|
|
||||||
|
# Disable NMI watchdog: This action will speed up your boot and shutdown, because one less module is loaded. Additionally disabling watchdog timers increases performance and lowers power consumption
|
||||||
|
kernel.nmi_watchdog = 0
|
||||||
|
|
||||||
|
# Enable the sysctl setting kernel.unprivileged_userns_clone to allow normal users to run unprivileged containers.
|
||||||
|
kernel.unprivileged_userns_clone=1
|
||||||
|
|
||||||
|
# To hide any kernel messages from the console
|
||||||
|
kernel.printk = 3 3 3 3
|
||||||
|
|
||||||
|
# the key combination of Alt+SysRq+<b/e/f/s/u> will result in Magic SysRQ invocation
|
||||||
|
kernel.sysrq=1
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Journal]
|
||||||
|
SystemMaxUse=50M
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Manager]
|
||||||
|
DefaultLimitNOFILE=1048576
|
||||||
|
DefaultLimitNPROC=1048576
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Manager]
|
||||||
|
DefaultTimeoutStopSec=10s
|
||||||
|
DefaultTimeoutAbortSec=10s
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Pacman lock cleaner
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=rm -f /var/lib/pacman/db.lck
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Optimizing pacman hooks
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=bash -c "if /usr/lib/garuda/is-snapshot-boot; then rm -f /etc/pacman.d/hooks/01-snapshot-reject.hook; else ln -fs /dev/null /etc/pacman.d/hooks/01-snapshot-reject.hook; fi"
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Manager]
|
||||||
|
DefaultLimitNOFILE=1048576
|
||||||
|
DefaultLimitNPROC=1048576
|
|
@ -0,0 +1,3 @@
|
||||||
|
[Manager]
|
||||||
|
DefaultTimeoutStopSec=10s
|
||||||
|
DefaultTimeoutAbortSec=10s
|
|
@ -0,0 +1,5 @@
|
||||||
|
[zram0]
|
||||||
|
host-memory-limit = none
|
||||||
|
zram-fraction = 1
|
||||||
|
max-zram-size = none
|
||||||
|
compression-algorithm = zstd
|
|
@ -0,0 +1 @@
|
||||||
|
w /sys/module/zswap/parameters/enabled - - - - 0
|
|
@ -0,0 +1 @@
|
||||||
|
d /var/log/garuda 1755 root root
|
|
@ -0,0 +1 @@
|
||||||
|
w /proc/sys/dev/hpet/max-user-freq - - - - 3072
|
|
@ -0,0 +1 @@
|
||||||
|
w /sys/class/rtc/rtc0/max_user_freq - - - - 3072
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Hpet permissions
|
||||||
|
KERNEL=="rtc0", GROUP="realtime"
|
||||||
|
KERNEL=="hpet", GROUP="realtime"
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Reboot To UEFI
|
||||||
|
Name[de]=Neustart (UEFI)
|
||||||
|
Comment=Reboot the machine to UEFI
|
||||||
|
Comment=Neustart im UEFI Modus
|
||||||
|
Exec=systemctl reboot --firmware-setup
|
||||||
|
Icon=system-reboot
|
||||||
|
Categories=System;X-Leave;
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Suspend/Hibernate
|
||||||
|
Name[de]=Ruhezustand
|
||||||
|
Comment=Suspend device, then hibernate
|
||||||
|
Comment[de]=Die Sitzung speichern, danach Ruhezustand
|
||||||
|
Exec=systemctl suspend-then-hibernate
|
||||||
|
Icon=system-suspend
|
||||||
|
Categories=System;X-Leave;
|
|
@ -0,0 +1,71 @@
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if (action.id.indexOf("org.freedesktop.udisks2.") == 0 &&
|
||||||
|
subject.isInGroup("wheel"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
|
||||||
|
action.id == "org.freedesktop.udisks2.filesystem-mount" ||
|
||||||
|
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
|
||||||
|
action.id == "org.freedesktop.udisks.filesystem-fstab") &&
|
||||||
|
subject.isInGroup("wheel"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.freedesktop.login1.power-off" ||
|
||||||
|
action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
|
||||||
|
action.id == "org.freedesktop.login1.reboot" ||
|
||||||
|
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
|
||||||
|
action.id == "org.freedesktop.login1.hibernate" ||
|
||||||
|
action.id == "org.freedesktop.login1.hibernate-multiple-sessions" ||
|
||||||
|
action.id == "org.freedesktop.login1.suspend" ||
|
||||||
|
action.id == "org.freedesktop.login1.suspend-multiple-sessions") &&
|
||||||
|
subject.isInGroup("wheel"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.freedesktop.upower.hibernate" ||
|
||||||
|
action.id == "org.freedesktop.upower.suspend") &&
|
||||||
|
subject.isInGroup("wheel"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.blueman.network.setup" ||
|
||||||
|
action.id == "org.blueman.dhcp.client" ||
|
||||||
|
action.id == "org.blueman.rfkill.setstate" ||
|
||||||
|
action.id == "org.blueman.pppd.pppconnect") &&
|
||||||
|
subject.isInGroup("wheel"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.opensuse.cupspkhelper.mechanism.all-edit") &&
|
||||||
|
subject.isInGroup("wheel"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.corectrl.helper.init" ||
|
||||||
|
action.id == "org.corectrl.helperkiller.init") &&
|
||||||
|
subject.isInGroup("wheel"))
|
||||||
|
{
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in a new issue