mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-27 21:45:41 +00:00
Compare commits
841 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
49b7fa43ad | ||
|
|
8f652a2a9b | ||
|
|
b81adc62b1 | ||
|
|
fd044776b9 | ||
| 5472634f08 | |||
| 33db70e725 | |||
| 56b2fdabf1 | |||
| 3f2d1b85ed | |||
|
|
0bd72c6d51 | ||
|
|
69684c23b9 | ||
|
|
28a36b5d6b | ||
|
|
00fd6fc5dc | ||
|
|
abfe7cc011 | ||
|
|
95e21a124b | ||
|
|
5178bec1a0 | ||
|
|
1b94674e6b | ||
|
|
7e9d2df990 | ||
| 91be3b9edc | |||
| 6bfcd38773 | |||
| 74a3d58417 | |||
| 7b6e95c4ab | |||
| 88a2b3dadf | |||
|
|
416523660a | ||
|
|
1e15c0cad2 | ||
|
|
93129c0fd0 | ||
|
|
7c835df7dc | ||
|
|
729efdd406 | ||
| ebb22064ce | |||
|
|
c4a55efd7c | ||
|
|
508b44fd48 | ||
|
|
2fdcd839a4 | ||
|
|
cdf791bb63 | ||
|
|
cd72b003a0 | ||
| bb93200f52 | |||
|
|
7715e1c8b0 | ||
|
|
e91f31a049 | ||
|
|
56791753f7 | ||
| e9bd3708fa | |||
| 0a2b0b8a45 | |||
|
|
1be21eb247 | ||
|
|
dd89164b8b | ||
|
|
aae39dd913 | ||
|
|
4ab8182d90 | ||
|
|
b281efc576 | ||
|
|
35ede87808 | ||
|
|
2e184aa6c1 | ||
|
|
ffd4121eef | ||
|
|
a424347974 | ||
|
|
574cafed0e | ||
|
|
099a80c78b | ||
|
|
081ac55dd7 | ||
|
|
4136b66d9f | ||
|
|
4183bc0a24 | ||
|
|
cc8578ed4c | ||
| 65d5040af2 | |||
| 5606cff9fd | |||
| 530ce0df4f | |||
|
|
f6252c871e | ||
| caf5722b95 | |||
|
|
185562737c | ||
| 579685e4ee | |||
| 9ece4c64c6 | |||
| b413eefd37 | |||
| 06c1275fa5 | |||
| c2a5d45998 | |||
| 94038a71bf | |||
| 4bfa54972e | |||
| 25831458aa | |||
|
|
41315f7c53 | ||
|
|
fecbb3568c | ||
| f18d08ec5f | |||
| b9fac1a444 | |||
| a5fe70d3c2 | |||
| fdaa1883a7 | |||
|
|
e67abce6ed | ||
|
|
ab07793804 | ||
|
|
ba87c82d51 | ||
|
|
cf5ce57a57 | ||
|
|
17a0dfd6e1 | ||
|
|
e3e0f99eaf | ||
|
|
3399288a81 | ||
|
|
fe0d7408cf | ||
|
|
0223e08da8 | ||
|
|
bfe46f0a90 | ||
|
|
a60ce374b5 | ||
| 5f59851c7a | |||
|
|
9c68e8b05c | ||
| 84e3351125 | |||
| 363ae046c8 | |||
|
|
9ac792b924 | ||
|
|
e377d9212a | ||
|
|
125fd027f7 | ||
|
|
ecd099edbd | ||
| 3baa7547e1 | |||
|
|
782eeb78ec | ||
|
|
7b211489fd | ||
| d3ec2e7332 | |||
|
|
0b11f6456a | ||
|
|
58064a7b9b | ||
|
|
4723d5c61c | ||
|
|
4e0e4b8883 | ||
|
|
5b6f43e22f | ||
| ca594f9b2d | |||
| 685a843d78 | |||
| 470acd8956 | |||
| a6907d890e | |||
|
|
c37fdb7cd3 | ||
| bad1ce2a34 | |||
| e67d4285b6 | |||
| f577ad28a9 | |||
|
|
e9ac5e48ac | ||
|
|
cc01f4fdde | ||
| 52a5f226e9 | |||
|
|
9b94302270 | ||
|
|
fe7e9173d0 | ||
|
|
fb5aae3deb | ||
| 036392d38a | |||
| 2cb11292d4 | |||
| a163d6338a | |||
| 191488c081 | |||
| cc47614280 | |||
| 91cde60dba | |||
| 5dea757707 | |||
| f8833fca73 | |||
| 9cd99dbc88 | |||
| 14f67cb5ca | |||
|
|
4ce76fbd70 | ||
|
|
ca68803fb9 | ||
| fb97f10f64 | |||
| 6dbbc439b3 | |||
| 368fbfc7c8 | |||
| d6d5a8ca36 | |||
|
|
d65c25819f | ||
|
|
62c620efad | ||
| 07fe18af75 | |||
|
|
29d3676b38 | ||
| 0b9e1803d4 | |||
|
|
c45ad9710d | ||
| cf7ca2109f | |||
| 1531647e01 | |||
|
|
15aff17f03 | ||
|
|
42a5b79048 | ||
| a72c8ff33a | |||
| 19d9035214 | |||
| 7ca077c852 | |||
| 48604d81d6 | |||
|
|
405e68f895 | ||
| 6d62352127 | |||
| 017d82abc5 | |||
|
|
24ad4bf5b7 | ||
| 07264c594f | |||
|
|
7b58f660ac | ||
|
|
b000f2b0c4 | ||
| 4d548687e1 | |||
| 519d8398de | |||
| 2203bb3957 | |||
|
|
ddafdfe3c9 | ||
| a3f35b2d18 | |||
| 90020a4998 | |||
| 0f806c172d | |||
|
|
e8eb9b98b2 | ||
| 7e0a88cf8f | |||
| f72f57ebf0 | |||
| b5e56e2cbb | |||
|
|
179938132c | ||
|
|
bae84c176c | ||
| be8a6761af | |||
| c348f3625f | |||
| 094f19c99c | |||
| 5a23ae8f01 | |||
|
|
ee47821089 | ||
|
|
b834ce04f7 | ||
|
|
6a62d73d7f | ||
|
|
440842ed34 | ||
|
|
d0563e4a29 | ||
|
|
bc404bfbea | ||
| 923f881725 | |||
| ccc5903290 | |||
|
|
786efc48fa | ||
| 2a11a28422 | |||
| 812a27ea61 | |||
| e73e61f01b | |||
| 314679b4fc | |||
|
|
516b27384a | ||
|
|
9e1af3053d | ||
|
|
9e4f8741b3 | ||
| c0995c1b49 | |||
| c9f1e824c3 | |||
| 3d301daeb1 | |||
| 8b4198dc90 | |||
| 66461f9b1b | |||
| 80851d1efd | |||
|
|
c457c0f3ab | ||
| 9936e4bd76 | |||
| c3a45e2653 | |||
| 506360a027 | |||
|
|
00074ec3ff | ||
|
|
7c7daf89ea | ||
|
|
267c54aa56 | ||
|
|
d72409efc0 | ||
| 3d9e0477b0 | |||
| cfab48eee0 | |||
| 624920b2ab | |||
|
|
fd82f1e36c | ||
|
|
48ec8cd7a7 | ||
|
|
3a61bd2b72 | ||
| 895b0ad353 | |||
| 3c733ec7eb | |||
| 5321ad7bd7 | |||
| 196077bea9 | |||
|
|
75147c7dd6 | ||
| f28ad41f67 | |||
| 61b66d3114 | |||
| 282f760a4f | |||
| 4a9c9b4cb9 | |||
| 16311ee5b4 | |||
| 2fddfa82c0 | |||
| 8f5f44db2d | |||
| 8ad1f5c4d0 | |||
| ac0aa1fbc0 | |||
| e8c6794ff6 | |||
| 4de9a649f0 | |||
|
|
e7f115680e | ||
| f3b4551d0c | |||
| 64725c57dc | |||
| b32ee414e3 | |||
|
|
6ea7807718 | ||
| 6a776bd3dd | |||
| 6ffe581326 | |||
| 5d476e8eed | |||
|
|
bf84c67f08 | ||
| 9cb400dd3f | |||
| fce649619a | |||
| 8b0148e468 | |||
| 9cb27eb9dc | |||
| f1ed88a98e | |||
| ec35f1cb1e | |||
| dab8504cfd | |||
| 0f9a76e36f | |||
|
|
97244d5287 | ||
| 50ea9bea89 | |||
| 688469ad8b | |||
|
|
af32914d71 | ||
|
|
840bd85232 | ||
| c81ee240bf | |||
| e215fe0a2f | |||
| 38e340ac8d | |||
| c9383f955c | |||
| 8eeaea802a | |||
| d626731736 | |||
| e459cd99e7 | |||
| 3e4391adda | |||
| a6400943d2 | |||
| 5ec8e89641 | |||
|
|
115dac4fb4 | ||
|
|
405e2d5c77 | ||
| 535925aeaf | |||
|
|
7fa29ae3d6 | ||
|
|
b1a01b6717 | ||
|
|
b9d2ee01ed | ||
| e81938a04d | |||
| 3bbcb248ba | |||
| 17194755e6 | |||
| 45f95422ef | |||
| b8f0bb570e | |||
| a0d8069455 | |||
|
|
8b1eb0a582 | ||
|
|
9cb10250c5 | ||
| 2836ed19cf | |||
| 21eb5086a9 | |||
| 56f49ab314 | |||
| 5e1a2d0dd0 | |||
| 5fdd26bf80 | |||
| 0c93dd9ad8 | |||
| 9deb613b5b | |||
|
|
bf4031c238 | ||
| 087b33cc97 | |||
|
|
361657cdec | ||
| 4855e56f3c | |||
| c119d4c20b | |||
| 4815e8678b | |||
| 31a45fed19 | |||
| 5aae400c92 | |||
| 26e11047ce | |||
| 1f0826c7e7 | |||
| 9f71f3c8aa | |||
| 5d929c6466 | |||
| afc04db93a | |||
|
|
eca0321e21 | ||
| def3372b9a | |||
|
|
5aaa177756 | ||
| 31a6ea351d | |||
| 333995c7f4 | |||
| d6b24c27a1 | |||
| 89ae4003f9 | |||
| 7a008c3ae8 | |||
| a6f89e80bd | |||
| 3d987e491e | |||
| e1729fd925 | |||
| 4e5dae4161 | |||
| 6b30ebfddb | |||
|
|
0aafae5d97 | ||
| 32cc561d20 | |||
| 784fddea64 | |||
| 0a058aaf22 | |||
| ff6876a56d | |||
| ccbd29fc40 | |||
| 9251225d3e | |||
| 241eed66f5 | |||
| 6de8e92968 | |||
| 2cdda605ef | |||
| 87a4ec8ecf | |||
| 87613d10ec | |||
| f6dc193f6a | |||
| 4adbbdb47a | |||
| bdbe10f612 | |||
| 531488001f | |||
| 4f2b47d5c3 | |||
|
|
dfbdb89aca | ||
|
|
c9489ae50f | ||
| 9fdb4cdfb0 | |||
| f4da515120 | |||
| fae9665671 | |||
| d5e34d168b | |||
| e8b43d76dc | |||
| 4f9757ad2b | |||
| 611a3bfa72 | |||
| 10da4ea372 | |||
| 68525d5ae4 | |||
|
|
7311f2576e | ||
| 721d3c0d15 | |||
| c82e183ff9 | |||
| 1b6a93650b | |||
| aa85bb0c72 | |||
| ceb452aa68 | |||
| 467a1c2ff9 | |||
| f73cd32309 | |||
| 0be2a5b879 | |||
| 8c015ac251 | |||
| 894ec12fd8 | |||
| 8cf3602de1 | |||
| 57c4f0438e | |||
|
|
02907d6a6b | ||
|
|
127edd1b2c | ||
|
|
76dc53b50a | ||
| f88a5298b2 | |||
| b436472bbb | |||
| 4e4a2eaab1 | |||
| d59204f25f | |||
| b299e3df1e | |||
| 5bcc06d53b | |||
|
|
7c09a7ff74 | ||
| 88efedf26b | |||
|
|
cdd68748e0 | ||
|
|
f8ff2699e6 | ||
| c5e06888b8 | |||
|
|
4f138eee73 | ||
|
|
90258e5105 | ||
| efc53fc9bf | |||
|
|
f62c17d940 | ||
|
|
fb15b93887 | ||
|
|
222276486a | ||
|
|
4446d59e73 | ||
| a22709a0f0 | |||
| 76598ad33b | |||
| 56ccb7c136 | |||
|
|
b6d933d018 | ||
| f9856a27b9 | |||
| b36b52ad57 | |||
| 1e60ccf49b | |||
|
|
9ca9439b9a | ||
| 6d30ae7e84 | |||
| 031e124663 | |||
| bb50c9fe18 | |||
| 8e608de501 | |||
|
|
8917b7736b | ||
| 18ff879f1d | |||
| c5a258d7be | |||
| 7525f1f71d | |||
| 3b665bdba0 | |||
| 99477364bd | |||
|
|
629fdf6d4c | ||
| 1288599b1f | |||
| be3a68fecb | |||
| 101e4da1d6 | |||
| 23430a609a | |||
| bb0d56e403 | |||
| d3b08bdf4f | |||
| e1ec501c55 | |||
| f92c3407f0 | |||
| b5971439b6 | |||
| 8ea8a2797a | |||
| b0f9222482 | |||
| 825ccc1031 | |||
| dab7a8a38a | |||
| 1dbc7ae5cd | |||
| 7038da568e | |||
| bfcaa26070 | |||
| f6488aecce | |||
| ad166e8012 | |||
| 2a76a414a0 | |||
| bb8ddf0bba | |||
| bf3e746010 | |||
|
|
b9957e4f0e | ||
| e1deba4ccf | |||
| 36e4de3035 | |||
| 3eab1faeab | |||
| 1eb4098646 | |||
| f7db8cae15 | |||
| 97dd3dc21d | |||
| 6da6797f1b | |||
|
|
88356f1392 | ||
| 174bb842e9 | |||
| f6e7590118 | |||
| 498996a6e2 | |||
| 0961985fb4 | |||
| 293452604d | |||
|
|
9582f18c7d | ||
| 051e3604ee | |||
| 09d62dd159 | |||
| 8a3763e168 | |||
| c37793f649 | |||
| 7bc7230990 | |||
| 067df4e34b | |||
| 4d28499423 | |||
| b685af82fb | |||
|
|
b8a4b82431 | ||
| 0b03acebd8 | |||
| d172b86cb8 | |||
| f910dfb9ac | |||
| ee95d57ba0 | |||
| f8a317f3c7 | |||
| 3762e10932 | |||
| afda96902b | |||
| 3060b6ad66 | |||
|
|
4f154cf509 | ||
| 863d803483 | |||
| 07bb2b56d1 | |||
| 84a753100e | |||
| c8b01f3fda | |||
| 8e6a110aac | |||
| a8baa1671f | |||
| 2ccdd042f6 | |||
|
|
8cf43ed555 | ||
| e22094e0da | |||
| 6186c5cba4 | |||
| c453dcbf84 | |||
| 4daaa62aed | |||
| f56d5682d1 | |||
| 439638b686 | |||
| a8a473a46d | |||
| eb91a43bbd | |||
|
|
193fae662e | ||
|
|
117ca1a944 | ||
| 1f1a6d42ad | |||
| cca265cd99 | |||
| cc6abb53ba | |||
| ab34c148a6 | |||
|
|
910b29ed9f | ||
| 3fb0a75a62 | |||
|
|
f73abb508b | ||
|
|
1dd3d952cf | ||
| 1ffd6e1569 | |||
| a76033a48a | |||
| 34dc18883e | |||
| 832d8b94f3 | |||
| c40eb765f8 | |||
|
|
1bb7e9076b | ||
|
|
17821dfefa | ||
| 19327947ed | |||
| 2356fc4c61 | |||
| 45219deccb | |||
| 5471aba1a4 | |||
|
|
6f6ee3611c | ||
|
|
d8f9cdf265 | ||
| abb6de05be | |||
| 60ef48e918 | |||
| e58c79a3c3 | |||
| d47f21286d | |||
| 3f108c9353 | |||
|
|
4a68146786 | ||
|
|
cf79e61943 | ||
| 43dcb303a0 | |||
| 1b03f0bbd6 | |||
| 8a52c9a97e | |||
| 8e84c3aef7 | |||
| acd2f7fc6d | |||
| 1e4aa1558a | |||
| b314c0ba76 | |||
| ece46561c4 | |||
| 196d217c34 | |||
| 7d2fc55791 | |||
| 74fb12f093 | |||
|
|
d7988bcad7 | ||
| 320ae35dcd | |||
| 0964253be5 | |||
|
|
f3f7ecc522 | ||
|
|
b88de0c3ae | ||
| c5e6860595 | |||
| b5a3c34fc3 | |||
| 87c89cf828 | |||
|
|
8d57c9425e | ||
|
|
cfe97d81a7 | ||
| 2f13ad324a | |||
|
|
d203fc9d51 | ||
| bf279b6def | |||
| 87926f8d9b | |||
| 6b056f6072 | |||
| 823cdbc07f | |||
| 0f6157eb04 | |||
| 721fe614a7 | |||
| 5ea16d4653 | |||
| 900e6a8f85 | |||
| 16673de789 | |||
| c732a75184 | |||
|
|
96280e6e9b | ||
| 5ab0f89765 | |||
| d585d61537 | |||
| 746646ae55 | |||
|
|
6e69ec6410 | ||
| af123e5138 | |||
| 3879289559 | |||
| 392628e733 | |||
| aa70eab5fb | |||
| e5311ca285 | |||
| d5618c9b5f | |||
| d091f5a88f | |||
| cb9195e3ad | |||
| c91cc387b6 | |||
| 083091ea46 | |||
| 7ff74f0e15 | |||
| 9d1f62fcca | |||
| a563e82e33 | |||
| 62ff7836e7 | |||
| 88cb573027 | |||
| 82772d8208 | |||
|
|
240035569c | ||
|
|
9697c200f9 | ||
| fd11f9966b | |||
| 722b3c0cde | |||
| 4fcb9d9741 | |||
| fc232f26f7 | |||
| 8b078309cf | |||
| 5a8f990e52 | |||
| c76c5d08b0 | |||
| b2857e226c | |||
| dfbac0c736 | |||
| fdd713908c | |||
| 60210c9bec | |||
| eaf8d2bdca | |||
| cc00055626 | |||
|
|
567de68844 | ||
|
|
ed0b229757 | ||
| c8b6243c0b | |||
|
|
21a92eb145 | ||
| 8ec317f582 | |||
|
|
42201d8b68 | ||
|
|
0c003ae5b9 | ||
| d383031ec8 | |||
|
|
fa5e5f16da | ||
| f82396236e | |||
| b127c2514d | |||
|
|
b06ac3bc0f | ||
|
|
7e4ea90a05 | ||
|
|
d264a33d21 | ||
| 224ee56461 | |||
|
|
8147490c65 | ||
|
|
c6d501347a | ||
|
|
d8044f2b6a | ||
|
|
1b3fe6d12e | ||
| 76b66d8c61 | |||
| 9c8644de17 | |||
| 120345b562 | |||
| 8accd4a60b | |||
| 8fb03660ad | |||
| 8b2dc74f2a | |||
| 8fa63e63bb | |||
| 4ca5b63b75 | |||
| 5a59872377 | |||
| 38419eda28 | |||
| fc85dbaa6c | |||
| 250e7f5666 | |||
| 8f96922033 | |||
| 4c4de2dc26 | |||
| b8c163e028 | |||
| 0a974c2a17 | |||
| fd8d72ab38 | |||
| 0908a23231 | |||
| 2e070eed83 | |||
| e22762255d | |||
| 093f58f129 | |||
| 9b6e39b4af | |||
|
|
6f1e1a0416 | ||
| 36e0f36e06 | |||
| e2c37d29e8 | |||
| 78716fa8ce | |||
| 81e9b20eb6 | |||
|
|
94e58b307b | ||
| 98aca096a9 | |||
| 121e31c7d4 | |||
| f6bcd10ac5 | |||
| 619c772fcc | |||
| 746d44151c | |||
| b9585209be | |||
| 930dcf00c4 | |||
| bb8e3bba56 | |||
| 6431c2e6dc | |||
| 248eca1ae6 | |||
| 4b1ab2e1b8 | |||
| c0f537439b | |||
| 9ab132d37c | |||
| 2b9ddc232b | |||
| 1a244ce0b1 | |||
| fdc0f45b23 | |||
| 3fa90eef3b | |||
| 7ea7c12f0b | |||
| f76492b942 | |||
| 7947340663 | |||
| 300c48b1e9 | |||
| 772527cc66 | |||
|
|
370fdcbcbe | ||
| b32c86bac2 | |||
| 8d85809b1c | |||
| 7fc40e3eab | |||
|
|
1aca769ebf | ||
| 57df4edf6c | |||
| 240ac35aa8 | |||
| ad0ba59b67 | |||
| bbc26e66dd | |||
| 1803d41969 | |||
| 34d547433f | |||
| dff4b9a9c5 | |||
| c33404eb27 | |||
| 99e7578d60 | |||
| d8011728c7 | |||
| 2f67d4a2e2 | |||
|
|
ef37681087 | ||
|
|
0c014033d1 | ||
|
|
14635009d2 | ||
| 70118fee52 | |||
|
|
0dce28ea6a | ||
| ba15f82302 | |||
| d4972ea30d | |||
| ed7263dfee | |||
| 4cda063305 | |||
| d251ea9cdc | |||
| bc4e906ff6 | |||
| 75c36bacf9 | |||
| e7cda5ac0c | |||
| 41024b1eb5 | |||
| 74afeb61c8 | |||
| 104bc369bc | |||
| 57e63847ce | |||
| 2dc08e5e51 | |||
| 989b5b5111 | |||
| 24a5dd1ff6 | |||
| 5826e35853 | |||
| e329868568 | |||
| dc76fa8914 | |||
| 3413365d41 | |||
| 37299f4893 | |||
| 71a78c6e0c | |||
| 3f8a4deb05 | |||
| ffe288aba3 | |||
| 28a1fc2831 | |||
| 28aae89f70 | |||
| e8fe5c570b | |||
| 26f6024292 | |||
| 4e4692321b | |||
| 3ea221ccf9 | |||
| e7774c4ab1 | |||
| 1f2ca90ca5 | |||
| adecceda7a | |||
| 8a3b2e703c | |||
| 1ee726e30c | |||
| 9857c8eb00 | |||
| a919d9544e | |||
| 7bc7921a17 | |||
| 735807f245 | |||
| 6d531e2d40 | |||
| 77f89c0f48 | |||
| 7f3c7b7e1c | |||
| fc16b8231e | |||
| 64a626d5c4 | |||
| 54816c2ce9 | |||
| 3acaea5611 | |||
| e4a313abe7 | |||
| 0b1c75cbdd | |||
| cab0f4da49 | |||
| cef15eddce | |||
| f8987818b8 | |||
|
|
15d1f6a59a | ||
| ba586fca7d | |||
|
|
d93bc7aae3 | ||
| 77b0428cec | |||
| 387432b27b | |||
| 88fa706b75 | |||
| 96ce9fec0c | |||
| 66d5fbc8ac | |||
| cc3ceb4176 | |||
| 0f9c69bb65 | |||
| c754746b9f | |||
| df5cab6a88 | |||
| b9ddba4666 | |||
| 77e92ef15e | |||
| 383bc2b052 | |||
| 0e109c3da3 | |||
| 50abd5aa30 | |||
| 082e27fb0a | |||
| e05e68f5d1 | |||
| 074c169e3c | |||
| 636ea749ac | |||
| da2a2e0f81 | |||
| 0ef12b61ac | |||
| c6fc3db52f | |||
| 1bde81a673 | |||
| d60248f356 | |||
| 40e8b9443b | |||
| 8a032a2804 | |||
| 367be373c4 | |||
| cf2f98d5c0 | |||
| a3704f7db9 | |||
| 7c359ffea0 | |||
| 9542624323 | |||
|
|
b0d74bad1a | ||
| fcade15933 | |||
| 6860909d39 | |||
| 493ad17c15 | |||
|
|
0495ac1ea8 | ||
| 9b5d372a74 | |||
| 9d04343a26 | |||
|
|
4aa0fba682 | ||
| ad6482b34a | |||
| 113e27734a | |||
| 378abfe896 | |||
| eadf1e5c84 | |||
| ea4d185fb4 | |||
| 22bd8ca870 | |||
| 7ee81b005c | |||
| 3faf8224e8 | |||
| d028f37c00 | |||
| 1df05ac0ba | |||
| e54e202281 | |||
| c226943aa9 | |||
| dda4b65458 | |||
| 7d564d0b4d | |||
| bc30e5f7a6 | |||
| 9e2f7e8f1b | |||
| 7b47e49804 | |||
| 1be7649122 | |||
| 453d54bc7f | |||
| 7ede7b9ac1 | |||
| a90743a09c | |||
| 185d28e587 | |||
|
|
37f023351d | ||
| 39523e9234 | |||
|
|
1f8fc0d289 | ||
| c083d2a20a | |||
| 75c6a0bccd | |||
| 5ce86b3229 | |||
| 885189e4ff | |||
| 8f3f4d7ed9 | |||
| 03a1b5fb85 | |||
| 7b83f6e943 | |||
| 261ff41e28 | |||
| 36ad2a2ad9 | |||
|
|
a4d5b87272 | ||
| f953bff183 | |||
| aba33a20a4 | |||
| a20e1e1419 | |||
| 8328f4cd19 | |||
| 4383b130a9 | |||
| 8143999f2a | |||
| 523bec769f | |||
| dee215a29e | |||
| 755ac0fa2c | |||
| a69f1f9f9c | |||
| 934ecb2335 | |||
| 4b6b887ca8 | |||
| fb0b9044eb | |||
| 74ca882192 | |||
| b904f0b60e | |||
| 13764775ca | |||
| 1f7b92285b | |||
| 1f22aee5e3 | |||
| 7dddf3ed75 | |||
| 62cd8cbda4 | |||
| 7dcebc8615 | |||
| 2e6a1582bf | |||
| c316a8eb2f | |||
| 4a493abedf | |||
| a395397a02 | |||
| 33f839c842 | |||
| 8b55ac1bba | |||
| 856ca00f1b | |||
| c5bbe4add5 | |||
| d2904274cb | |||
| 7ce8c78920 | |||
| 71301a6436 | |||
| e4f925e5b0 | |||
| 63ebd6df47 | |||
| d598aade16 | |||
| 1b49de9645 | |||
| d56338e233 | |||
| ef6ccb92c0 | |||
| 16bb91dd81 | |||
| e7f078fe96 | |||
| 49778fe936 | |||
| 6a718a41b1 | |||
| f392938e9e | |||
| 7fb38fe8f3 | |||
| 639cbe4939 | |||
| 1dc84a9cc5 | |||
| 6ae753d257 | |||
| b7c9d4851a | |||
| 4699233d46 | |||
| a5895abfa0 | |||
| fae34d10ef | |||
| c0448b5e7f | |||
| 4d7cc568af | |||
| 01a2815a68 | |||
| 39e896f331 | |||
| 622c8f991a | |||
| 88894a33a5 | |||
| acbfd34e7d | |||
| bac03a0b7b | |||
| a96bf921a2 | |||
| b5df60851f | |||
| 2e682c58fa | |||
| cb28e274ca | |||
| 4572c42eea | |||
| cec1edb269 | |||
| bfe7e93b60 | |||
| 1b80c8b7ed | |||
| c7c3493259 | |||
| 0e797d36ae | |||
|
|
0beb386f4a | ||
|
|
cc0e668cd9 | ||
|
|
d6f7aecf6c | ||
|
|
5253b69e37 | ||
| 12080f59e1 |
1
.browserslistrc
Normal file
1
.browserslistrc
Normal file
@@ -0,0 +1 @@
|
||||
extends @ivuorinen/browserslist-config
|
||||
@@ -8,18 +8,26 @@ indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.php]
|
||||
[*.fish]
|
||||
max_line_length = 80
|
||||
|
||||
[*.md]
|
||||
max_line_length = 120
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.lua]
|
||||
max_line_length = 90
|
||||
|
||||
[*.{php,fish}]
|
||||
indent_size = 4
|
||||
|
||||
[.git{ignore,modules}]
|
||||
indent_style = tab
|
||||
indent_size = 1
|
||||
|
||||
[*.plist]
|
||||
indent_size = 1
|
||||
indent_style = tab
|
||||
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*}]
|
||||
[{local/bin/*,**/*.sh,**/zshrc,config/*,scripts/*}]
|
||||
indent_size = 2
|
||||
tab_width = 2
|
||||
shell_variant = bash # --language-variant
|
||||
binary_next_line = true
|
||||
switch_case_indent = true # --case-indent
|
||||
@@ -27,3 +35,17 @@ space_redirects = true
|
||||
keep_padding = false
|
||||
function_next_line = true # --func-next-line
|
||||
|
||||
[{*.plist,config/git/**,**/config/git/**}]
|
||||
indent_size = 1
|
||||
indent_style = tab
|
||||
|
||||
# Ignore the entire "third_party" directory when calling shfmt on directories,
|
||||
# such as "shfmt -l -w .". When formatting files directly,
|
||||
# like "shfmt -w third_party/foo.sh" or "shfmt --filename=third_party/foo.sh",
|
||||
# the ignore logic is applied only when the --apply-ignore flag is given.
|
||||
[{tools/**,local/bin/asdf/**,config/cheat/cheatsheets/**,config/tmux/plugins/**}]
|
||||
ignore = true
|
||||
|
||||
[plan]
|
||||
trim_trailing_whitespace = false
|
||||
max_line_length = off
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
{
|
||||
"Version": "2.7.0",
|
||||
"Verbose": false,
|
||||
"Debug": false,
|
||||
"IgnoreDefaults": false,
|
||||
"SpacesAftertabs": false,
|
||||
"SpacesAfterTabs": false,
|
||||
"NoColor": false,
|
||||
"Exclude": [],
|
||||
"Exclude": [
|
||||
"base/plan",
|
||||
"config/fish/completions/.*",
|
||||
"config/fish/conf.d/.*",
|
||||
"config/fish/functions/.*",
|
||||
"config/fzf/key-bindings.fish",
|
||||
"config/irssi/scripts/autorun/.*",
|
||||
"config/vim/autoload/.*",
|
||||
"docs/.*",
|
||||
"local/man/.*",
|
||||
"local/share/.*"
|
||||
],
|
||||
"AllowedContentTypes": [],
|
||||
"PassedFiles": [],
|
||||
"Disable": {
|
||||
53
.gitattributes
vendored
53
.gitattributes
vendored
@@ -1,4 +1,4 @@
|
||||
## GITATTRIBUTES FOR WEB PROJECTS
|
||||
## GITATTRIBUTES
|
||||
#
|
||||
# These settings are for any web project.
|
||||
#
|
||||
@@ -20,20 +20,23 @@
|
||||
*.bat text eol=crlf
|
||||
*.cmd text eol=crlf
|
||||
*.coffee text
|
||||
*.css text diff=css
|
||||
*.htm text diff=html
|
||||
*.html text diff=html
|
||||
*.css text diff=css eol=lf
|
||||
*.fish text diff=shell eol=lf
|
||||
*.htm text diff=html eol=lf
|
||||
*.html text diff=html eol=lf
|
||||
*.inc text
|
||||
*.ini text
|
||||
*.js text
|
||||
*.json text
|
||||
*.jsx text
|
||||
*.less text
|
||||
*.lua text diff=lua eol=lf
|
||||
*.ls text
|
||||
*.map text -diff
|
||||
*.od text
|
||||
*.onlydata text
|
||||
*.php text diff=php
|
||||
*.plist text eol=lf
|
||||
*.pl text
|
||||
*.ps1 text eol=crlf
|
||||
*.py text diff=python
|
||||
@@ -41,15 +44,18 @@
|
||||
*.sass text
|
||||
*.scm text
|
||||
*.scss text diff=css
|
||||
*.sh text eol=lf
|
||||
*.sh text eol=lf diff=shell
|
||||
.husky/* text eol=lf
|
||||
*.sql text
|
||||
*.styl text
|
||||
*.tag text
|
||||
*.tmux text eol=lf diff=tmux
|
||||
*.ts text
|
||||
*.tsx text
|
||||
*.vim text eol=lf
|
||||
*.xml text
|
||||
*.xhtml text diff=html
|
||||
*.zsh text diff=zsh eol=lf
|
||||
|
||||
# Docker
|
||||
Dockerfile text
|
||||
@@ -68,6 +74,7 @@ Dockerfile text
|
||||
AUTHORS text
|
||||
CHANGELOG text
|
||||
CHANGES text
|
||||
CODEOWNERS text
|
||||
CONTRIBUTING text
|
||||
COPYING text
|
||||
copyright text
|
||||
@@ -78,6 +85,7 @@ LICENSE text
|
||||
NEWS text
|
||||
readme text
|
||||
*README* text
|
||||
# Files literally named "TODO", not a todo list item
|
||||
TODO text
|
||||
|
||||
# Templates
|
||||
@@ -105,6 +113,8 @@ TODO text
|
||||
*.config text
|
||||
.editorconfig text
|
||||
.env text
|
||||
*.env text
|
||||
*.env.* text
|
||||
.gitattributes text
|
||||
.gitconfig text
|
||||
.htaccess text
|
||||
@@ -113,7 +123,8 @@ package.json text eol=lf
|
||||
package-lock.json text eol=lf -diff
|
||||
pnpm-lock.yaml text eol=lf -diff
|
||||
.prettierrc text
|
||||
yarn.lock text -diff
|
||||
# Ensure yarn.lock shows textual diffs
|
||||
yarn.lock text eol=lf
|
||||
*.toml text
|
||||
*.yaml text
|
||||
*.yml text
|
||||
@@ -208,20 +219,38 @@ Procfile text
|
||||
|
||||
*.gitignore text
|
||||
*.gitkeep text
|
||||
.gitattributes export-ignore
|
||||
.gitattributes text export-ignore
|
||||
*.gitattributes text export-ignore
|
||||
.gitmodules text export-ignore
|
||||
*.gitmodules text export-ignore
|
||||
**/.gitignore export-ignore
|
||||
**/.gitkeep export-ignore
|
||||
|
||||
# Repo specials
|
||||
local/bin/* text eol=lf
|
||||
local/bin/* text eol=lf diff=shell
|
||||
local/bin/*.md text eol=lf diff=markdown
|
||||
config/antigen.zsh text
|
||||
git/* text
|
||||
**/git/* text
|
||||
**/alias text
|
||||
ssh/* text
|
||||
ssh/shared.d/* text
|
||||
ssh/local.d/* text
|
||||
|
||||
# Git Crypt special files
|
||||
*-secret filter=git-crypt diff=git-crypt
|
||||
*.key filter=git-crypt diff=git-crypt
|
||||
secrets/** filter=git-crypt diff=git-crypt
|
||||
# Auto-generated rules - 2025-04-16 10:28:04
|
||||
# Shell scripts detected by content
|
||||
install text eol=lf diff=shell
|
||||
|
||||
# File extension-based rules
|
||||
*.1 text eol=lf
|
||||
*.applescript text eol=lf
|
||||
*.d/work-git text eol=lf
|
||||
*.dirs text eol=lf
|
||||
*.example text eol=lf
|
||||
*.itermcolors text eol=lf
|
||||
*.locale text eol=lf
|
||||
*.python-version text eol=lf
|
||||
*.snippets text eol=lf
|
||||
*.theme text eol=lf
|
||||
*.yamlfmt text eol=lf
|
||||
*.bats text eol=lf diff=shell
|
||||
|
||||
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* @ivuorinen
|
||||
30
.github/CODE_OF_CONDUCT.md
vendored
30
.github/CODE_OF_CONDUCT.md
vendored
@@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
- Demonstrating empathy and kindness toward other people
|
||||
- Being respectful of differing opinions, viewpoints, and experiences
|
||||
- Giving and gracefully accepting constructive feedback
|
||||
- Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
- Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
- The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
- Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
- Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
@@ -60,7 +60,7 @@ representative at an online or offline event.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
ismo@ivuorinen.net.
|
||||
<ismo@ivuorinen.net>.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
@@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
@@ -116,7 +116,7 @@ the community.
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
@@ -124,5 +124,5 @@ enforcement ladder](https://github.com/mozilla/diversity).
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
<https://www.contributor-covenant.org/faq>. Translations are available at
|
||||
<https://www.contributor-covenant.org/translations>.
|
||||
|
||||
98
.github/README.md
vendored
98
.github/README.md
vendored
@@ -6,7 +6,10 @@ aware of yet. As I find more interesting tools, configs and other stuff,
|
||||
this repository will live accordingly.
|
||||
|
||||
Please for the love of everything good do not use these 1:1 as your own dotfiles,
|
||||
fork or download the repo as a zip and go from there with your own configs.
|
||||
fork or download the repository as a zip and go from there with your own configs.
|
||||
|
||||
It would be nice if you'd add an issue linking to your fork or repo so I can
|
||||
see what interesting stuff you've done with it. Sharing is caring.
|
||||
|
||||
## Setup
|
||||
|
||||
@@ -23,7 +26,11 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
## The looks
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Interesting files and locations
|
||||
|
||||
@@ -31,11 +38,17 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
|
||||
| Path | Description |
|
||||
| ------------------- | -------------------------------------------- |
|
||||
| `.github` | GitHub Repository configuration files. |
|
||||
| `.github` | GitHub Repository configuration files, meta. |
|
||||
| `hosts/{hostname}/` | Configs that should apply to that host only. |
|
||||
| `local/bin` | Helper scripts that I've collected or wrote. |
|
||||
| `scripts` | Setup scripts. |
|
||||
|
||||
### Host specific configuration
|
||||
|
||||
Configurations under `hosts/<hostname>` are applied only when running on the
|
||||
matching machine. Each host folder contains its own `install.conf.yaml` that
|
||||
is processed by Dotbot during installation.
|
||||
|
||||
### dotfile folders
|
||||
|
||||
| Repo | Destination | Description |
|
||||
@@ -45,9 +58,26 @@ fork or download the repo as a zip and go from there with your own configs.
|
||||
| `local/` | `.local/` | XDG Base folder: `bin`, `share` and `state` |
|
||||
| `ssh/` | `.ssh/` | SSH Configurations. |
|
||||
|
||||
### dfm - the dotfiles manager
|
||||
### `dfm` - the dotfiles manager
|
||||
|
||||
`.local/bin/dfm` is a shell script that has some tools that help with dotfiles management.
|
||||
[`.local/bin/dfm`][dfm] is a shell script that has some tools that help with dotfiles management.
|
||||
|
||||
Running `dfm` gives you a list of available commands.
|
||||
|
||||
#### Documentation generation
|
||||
|
||||
`dfm docs` generates Markdown documentation under the `docs/` directory. The
|
||||
subcommands are:
|
||||
|
||||
```bash
|
||||
dfm docs alias # regenerate alias table
|
||||
dfm docs folders # document interesting folders
|
||||
dfm docs keybindings # update keybinding docs for tmux, nvim and others
|
||||
dfm docs all # run every docs task
|
||||
```
|
||||
|
||||
The `docs/` folder contains generated cheat sheets, keybindings and other
|
||||
reference files. New documentation can be added without modifying this README.
|
||||
|
||||
## Configuration
|
||||
|
||||
@@ -62,51 +92,33 @@ The folder structure follows [XDG Base Directory Specification][xdg] where possi
|
||||
| `$XDG_DATA_HOME` | `$HOME/.local/share` | User-specific data files |
|
||||
| `$XDG_STATE_HOME` | `$HOME/.local/state` | App state that should persist between restarts |
|
||||
|
||||
#### XDG_BIN_HOME (`$HOME/.local/bin`)
|
||||
Please see [docs/folders.md][docs-folders] for more information.
|
||||
|
||||
`$XDG_BIN_HOME` defines directory that contains local binaries.
|
||||
## Managing submodules
|
||||
|
||||
User-specific executable files may be stored in `$HOME/.local/bin`.
|
||||
Distributions should ensure this directory shows up in the UNIX `$PATH`
|
||||
environment variable, at an appropriate place.
|
||||
This repository uses Git submodules for external dependencies. After cloning,
|
||||
run:
|
||||
|
||||
#### XDG_DATA_HOME (`$HOME/.local/share`)
|
||||
```bash
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
`$XDG_DATA_HOME` defines the base directory relative to which
|
||||
user-specific _data files_ should be stored.
|
||||
To pull submodule updates later use:
|
||||
|
||||
If `$XDG_DATA_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.local/share` should be used.
|
||||
```bash
|
||||
git submodule update --remote --merge
|
||||
```
|
||||
|
||||
#### XDG_CONFIG_HOME (`$HOME/.config`)
|
||||
The helper script `add-submodules.sh` documents how each submodule is added and
|
||||
configured. Submodules are automatically updated by the
|
||||
[update-submodules.yml](.github/workflows/update-submodules.yml) workflow.
|
||||
|
||||
`$XDG_CONFIG_HOME` defines the base directory relative to which
|
||||
user-specific _configuration files_ should be stored.
|
||||
## Testing
|
||||
|
||||
If `$XDG_CONFIG_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.config` should be used.
|
||||
|
||||
#### XDG_STATE_HOME (`$HOME/.local/state`)
|
||||
|
||||
`$XDG_STATE_HOME` defines the base directory relative to which
|
||||
user-specific _state files_ should be stored.
|
||||
|
||||
If `$XDG_STATE_HOME` is either not set or empty,
|
||||
a default equal to `$HOME/.local/state` should be used.
|
||||
|
||||
The `$XDG_STATE_HOME` contains _state data_ that should
|
||||
_persist between (application) restarts_, but that is not important or
|
||||
portable enough to the user that it should be stored in `$XDG_DATA_HOME`.
|
||||
|
||||
- It may contain:
|
||||
- actions history (logs, history, recently used files, …)
|
||||
- current state of the application that can be reused
|
||||
on a restart (view, layout, open files, undo history, …)
|
||||
|
||||
#### XDG_DATA_DIRS
|
||||
|
||||
`$XDG_DATA_DIRS` defines the preference-ordered set of base directories
|
||||
to search for data files in addition to the `$XDG_DATA_HOME` base directory.
|
||||
The directories in `$XDG_DATA_DIRS` should be seperated with a colon ':'.
|
||||
Shell scripts under `local/bin` are validated with [Bats](https://github.com/bats-core/bats-core).
|
||||
Run `yarn test` to execute every test file. Bats is installed as a development
|
||||
dependency, so run `yarn install` first if needed.
|
||||
|
||||
[dfm]: https://github.com/ivuorinen/dotfiles/blob/main/local/bin/dfm
|
||||
[docs-folders]: https://github.com/ivuorinen/dotfiles/blob/main/docs/folders.md
|
||||
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
|
||||
1
.github/dependabot.yml
vendored
1
.github/dependabot.yml
vendored
@@ -1,3 +1,4 @@
|
||||
---
|
||||
version: 2
|
||||
updates:
|
||||
# Maintain dependencies for GitHub Actions
|
||||
|
||||
2
.github/renovate.json
vendored
2
.github/renovate.json
vendored
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": ["local>ivuorinen/.github:renovate-config"]
|
||||
"extends": ["local>ivuorinen/renovate-config"]
|
||||
}
|
||||
|
||||
BIN
.github/screenshots/oh-my-posh.png
vendored
Normal file
BIN
.github/screenshots/oh-my-posh.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-dark.png
vendored
Normal file
BIN
.github/screenshots/tmux-nvim-kickstart-dark.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 85 KiB |
BIN
.github/screenshots/tmux-nvim-kickstart-light.png
vendored
Normal file
BIN
.github/screenshots/tmux-nvim-kickstart-light.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
21
.github/workflows/changelog.yml
vendored
21
.github/workflows/changelog.yml
vendored
@@ -1,17 +1,32 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Debug Changelog # Workflow name displayed on GitHub
|
||||
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
debug-changelog:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Create changelog text
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@v1
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: 'Echo results'
|
||||
id: output-changelog
|
||||
run: |
|
||||
|
||||
71
.github/workflows/linters.yml
vendored
71
.github/workflows/linters.yml
vendored
@@ -1,39 +1,38 @@
|
||||
name: reviewdog
|
||||
on: [push]
|
||||
---
|
||||
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
|
||||
name: Lint Code Base
|
||||
|
||||
# yamllint disable-line
|
||||
on:
|
||||
pull_request:
|
||||
branches: [master, main]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
linters:
|
||||
name: Linters
|
||||
runs-on: self-hosted
|
||||
Linter:
|
||||
name: PR Lint
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
packages: read
|
||||
pull-requests: write
|
||||
statuses: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: GitHub Actions
|
||||
uses: reviewdog/action-actionlint@v1
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Yarn Lock Changes
|
||||
uses: Simek/yarn-lock-changes@61d1a0595070b79c1abdc8e1e5a5f5d98b18918c # v0.12.2
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
- name: detect-secrets
|
||||
uses: reviewdog/action-detect-secrets@master
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
- name: markdownlint
|
||||
uses: reviewdog/action-markdownlint@v0
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
reporter: github-pr-review
|
||||
- name: shfmt
|
||||
uses: reviewdog/action-shfmt@v1
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
shfmt_flags: |
|
||||
--find
|
||||
--list
|
||||
--write
|
||||
--diff
|
||||
--simplify
|
||||
--language-dialect bash
|
||||
--indent 2
|
||||
--binary-next-line
|
||||
--case-indent
|
||||
--space-redirects
|
||||
--func-next-line
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Run PR Lint
|
||||
uses: ivuorinen/actions/pr-lint@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
||||
|
||||
40
.github/workflows/new-release.yml
vendored
40
.github/workflows/new-release.yml
vendored
@@ -1,34 +1,48 @@
|
||||
name: Release Daily State # Workflow name displayed on GitHub
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Release Daily State
|
||||
|
||||
on:
|
||||
workflow_dispatch: # Trigger manually
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '30 20 * * *' # UTC is 2-3 hours behind Europe/Helsinki, my timezone
|
||||
permissions:
|
||||
contents: write
|
||||
- cron: '0 21 * * *' # 00:00 at Europe/Helsinki
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
new-daily-release:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions: write-all
|
||||
|
||||
outputs:
|
||||
created: ${{ steps.daily-version.outputs.created }}
|
||||
version: ${{ steps.daily-version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4 # Checkout our working repository
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- name: Create tag if necessary
|
||||
uses: fregante/daily-version-action@v2
|
||||
uses: fregante/daily-version-action@fb1a60b7c4daf1410cd755e360ebec3901e58588 # v2.1.3
|
||||
id: daily-version
|
||||
|
||||
- name: Create changelog text
|
||||
if: steps.daily-version.outputs.created
|
||||
id: changelog
|
||||
uses: loopwerk/tag-changelog@v1
|
||||
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
config_file: .github/tag-changelog-config.js
|
||||
|
||||
- name: Create release
|
||||
if: steps.daily-version.outputs.created
|
||||
uses: actions/create-release@latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
uses: softprops/action-gh-release@6da8fa9354ddfdc4aeace5fc48d7f679b5214090 # v2.4.1
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag_name: ${{ steps.daily-version.outputs.version }}
|
||||
release_name: Release ${{ steps.daily-version.outputs.version }}
|
||||
name: Release ${{ steps.daily-version.outputs.version }}
|
||||
body: ${{ steps.changelog.outputs.changes }}
|
||||
|
||||
38
.github/workflows/pre-commit-autoupdate.yml
vendored
Normal file
38
.github/workflows/pre-commit-autoupdate.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Pre-commit autoupdate
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# At 04:00 on Monday and Thursday.
|
||||
- cron: '0 4 * * 1,4'
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
auto-update:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
|
||||
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
|
||||
|
||||
- run: pip install pre-commit && pre-commit autoupdate
|
||||
|
||||
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: update/pre-commit-hooks
|
||||
title: 'chore: update pre-commit hooks'
|
||||
commit-message: 'chore: update pre-commit hooks'
|
||||
body: Update versions of pre-commit hooks to latest version.
|
||||
28
.github/workflows/semantic-pr.yml
vendored
Normal file
28
.github/workflows/semantic-pr.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Semantic PR
|
||||
|
||||
# yamllint disable-line
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- opened
|
||||
- edited
|
||||
- synchronize
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
semantic-pr:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
validateSingleCommit: true
|
||||
32
.github/workflows/sync-labels.yml
vendored
Normal file
32
.github/workflows/sync-labels.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Sync labels
|
||||
|
||||
# yamllint disable-line rule:truthy
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- .github/workflows/sync-labels.yml
|
||||
- .github/labels.yml
|
||||
schedule:
|
||||
- cron: '34 5 * * *'
|
||||
workflow_call:
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
SyncLabels:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
steps:
|
||||
- uses: ivuorinen/actions/sync-labels@ff0ca4bc920c518b2ce2dc20c5e5a6e95f76dee0 # v2025.11.02
|
||||
56
.github/workflows/update-submodules.yml
vendored
56
.github/workflows/update-submodules.yml
vendored
@@ -1,36 +1,56 @@
|
||||
---
|
||||
# $schema: "https://json.schemastore.org/github-workflow.json"
|
||||
name: Update submodules
|
||||
|
||||
on:
|
||||
schedule: [{ cron: 0 3 * * * }]
|
||||
schedule:
|
||||
# At 04:00 on Monday and Thursday.
|
||||
- cron: '0 4 * * 1'
|
||||
workflow_dispatch:
|
||||
permissions:
|
||||
contents: write
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
update-submodules:
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions: write-all
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
fetch-depth: 2
|
||||
token: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
- name: Config Git User
|
||||
shell: bash
|
||||
run: |
|
||||
git config --global user.name "${{ github.actor }}"
|
||||
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
|
||||
- name: Update submodules
|
||||
run: |
|
||||
if git commit -am"chore(git): Update submodules (automated)
|
||||
|
||||
$(git submodule --quiet foreach \
|
||||
'tag="$(git describe --tags --abbrev=0 origin/HEAD)"
|
||||
if [ "$(git describe --tags)" != "$tag" ]; then
|
||||
git checkout --quiet "$tag"
|
||||
echo "$name" "$tag"
|
||||
fi')"
|
||||
then
|
||||
- name: Update submodules
|
||||
shell: bash
|
||||
run: |
|
||||
git submodule sync
|
||||
git submodule foreach --quiet "
|
||||
tag=\"$(git describe --tags --abbrev=0 origin/HEAD)\"
|
||||
if [ \"$(git describe --tags)\" != \"$tag\" ]; then
|
||||
git checkout --quiet \"$tag\"
|
||||
echo \"$name updated to $tag\"
|
||||
fi
|
||||
"
|
||||
|
||||
if git diff --quiet; then
|
||||
echo "No updates for submodules."
|
||||
else
|
||||
git add .
|
||||
git commit -m "chore(git): Update submodules (automated)"
|
||||
git show --raw
|
||||
git push
|
||||
fi
|
||||
|
||||
58
.gitignore
vendored
58
.gitignore
vendored
@@ -1,23 +1,57 @@
|
||||
Brewfile.lock.json
|
||||
*.log
|
||||
!.gitkeep
|
||||
*-secret
|
||||
*.bak
|
||||
*.log
|
||||
*.socket
|
||||
*.swp
|
||||
*.old
|
||||
*cache
|
||||
.env
|
||||
.idea
|
||||
.nfs*
|
||||
.scannerwork
|
||||
.vscode
|
||||
Brewfile.lock.json
|
||||
antidote_plugins.zsh
|
||||
config/alacritty/theme-active.toml
|
||||
config/cheat/cheatsheets/pure-bash-bible/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/git/credentials
|
||||
config/gnupg/S.*
|
||||
config/gnupg/private-keys-v1.d
|
||||
config/gnupg/s
|
||||
config/iterm2/AppSupport
|
||||
config/npm/npmrc
|
||||
config/nvim/lazy-lock.json
|
||||
config/nvim/spell/*
|
||||
!config/nvim/spell/.gitkeep
|
||||
config/git/local.d/*
|
||||
!config/git/local.d/.gitkeep
|
||||
config/vim/fzf
|
||||
config/vim/plugged/*
|
||||
config/zed/*
|
||||
!config/zed/settings.json
|
||||
config/zsh/.zcompdump
|
||||
iTermServer-*
|
||||
lazy-lock.json
|
||||
local/share/fonts/*
|
||||
local/bin/asdf/plugins/*
|
||||
lock
|
||||
node_modules
|
||||
ssh/local.d/*
|
||||
!ssh/local.d/.gitkeep
|
||||
!.gitkeep
|
||||
.env
|
||||
local/share/fonts/*
|
||||
node_modules
|
||||
.nfs*
|
||||
*.socket
|
||||
iTermServer-*
|
||||
lock
|
||||
config/iterm2/AppSupport
|
||||
|
||||
config/fish/fish_variables
|
||||
**/exports.secret.fish
|
||||
**/exports-secret.fish
|
||||
config/fish/completions/asdf.fish
|
||||
config/vim/.netrwhist
|
||||
config/vim/extra/*
|
||||
config/gh/hosts.yml
|
||||
dependency-check-report.html
|
||||
local/bin/yabai
|
||||
local/man/yabai.1
|
||||
config/op/plugins/used_items/gh.json
|
||||
config/zed/settings.json
|
||||
*.tmp.*
|
||||
config/op/plugins/gh.json
|
||||
config/fish/fish_variables.*
|
||||
|
||||
43
.gitmodules
vendored
43
.gitmodules
vendored
@@ -1,4 +1,4 @@
|
||||
# vim: set expandtab:
|
||||
# vim: noexpandtab filetype=gitconfig
|
||||
[submodule "dotbot"]
|
||||
path = tools/dotbot
|
||||
url = https://github.com/anishathalye/dotbot.git
|
||||
@@ -23,32 +23,63 @@
|
||||
path = config/tmux/plugins/tmux-continuum
|
||||
url = https://github.com/tmux-plugins/tmux-continuum
|
||||
ignore = dirty
|
||||
[submodule "tmux/tmux-resurrect"]
|
||||
path = config/tmux/plugins/tmux-resurrect
|
||||
url = https://github.com/tmux-plugins/tmux-resurrect
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-sensible"]
|
||||
path = config/tmux/plugins/tmux-sensible
|
||||
url = https://github.com/tmux-plugins/tmux-sensible.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-sessionist"]
|
||||
path = config/tmux/plugins/tmux-sessionist
|
||||
url = https://github.com/tmux-plugins/tmux-sessionist.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-yank"]
|
||||
path = config/tmux/plugins/tmux-yank
|
||||
url = https://github.com/tmux-plugins/tmux-yank.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-window-name"]
|
||||
path = config/tmux/plugins/tmux-window-name
|
||||
url = https://github.com/ofirgall/tmux-window-name.git
|
||||
url = https://github.com/ivuorinen/tmux-window-name.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "dotbot-pip"]
|
||||
path = tools/dotbot-pip
|
||||
url = https://github.com/sobolevn/dotbot-pip.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-suspend"]
|
||||
path = config/tmux/plugins/tmux-suspend
|
||||
url = https://github.com/MunifTanjim/tmux-suspend.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-mode-indicator"]
|
||||
path = config/tmux/plugins/tmux-mode-indicator
|
||||
url = https://github.com/MunifTanjim/tmux-mode-indicator.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-current-pane-hostname"]
|
||||
path = config/tmux/plugins/tmux-current-pane-hostname
|
||||
url = https://github.com/soyuka/tmux-current-pane-hostname.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "cheat-tldr"]
|
||||
path = config/cheat/cheatsheets/tldr
|
||||
url = https://github.com/ivuorinen/cheatsheet-tldr.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-dark-notify"]
|
||||
path = config/tmux/plugins/tmux-dark-notify
|
||||
url = https://github.com/ivuorinen/tmux-dark-notify.git
|
||||
ignore = dirty
|
||||
|
||||
[submodule "antidote"]
|
||||
path = tools/antidote
|
||||
url = https://github.com/mattmc3/antidote.git
|
||||
shallow = true
|
||||
ignore = dirty
|
||||
|
||||
[submodule "tmux/tmux-resurrect"]
|
||||
path = config/tmux/plugins/tmux-resurrect
|
||||
url = https://github.com/tmux-plugins/tmux-resurrect.git
|
||||
|
||||
1
.go-version
Normal file
1
.go-version
Normal file
@@ -0,0 +1 @@
|
||||
1.25.3
|
||||
9
.ignore
9
.ignore
@@ -1,6 +1,11 @@
|
||||
**/__pycache__/**
|
||||
*.pyc
|
||||
.git/**
|
||||
config/cheat/cheatsheets/community/**
|
||||
tools/dotbot/**
|
||||
config/tmux/plugins/**
|
||||
config/vim/plugged/**
|
||||
node_modules
|
||||
tools/antidote/**
|
||||
tools/dotbot-brew/**
|
||||
tools/dotbot-include/**
|
||||
node_modules
|
||||
tools/dotbot/**
|
||||
|
||||
3
.luarc.json
Normal file
3
.luarc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"diagnostics.globals": ["vim"]
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
# only care about files that are under our control
|
||||
# only care about files that are directly under our control
|
||||
.git/*
|
||||
config/cheat/cheatsheets/community/*
|
||||
config/cheat/cheatsheets/tldr/*
|
||||
config/op/plugins/used_plugins/*
|
||||
config/tmux/plugins/*
|
||||
tools/*
|
||||
config/vim/*
|
||||
local/bin/asdf/*
|
||||
node_modules/*
|
||||
|
||||
tools/*
|
||||
|
||||
27
.mega-linter.yml
Normal file
27
.mega-linter.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
# Configuration file for MegaLinter
|
||||
# See all available variables at
|
||||
# https://megalinter.io/configuration/ and in linters documentation
|
||||
APPLY_FIXES: all
|
||||
SHOW_ELAPSED_TIME: false # Show elapsed time at the end of MegaLinter run
|
||||
PARALLEL: true
|
||||
VALIDATE_ALL_CODEBASE: true
|
||||
FILEIO_REPORTER: false # Generate file.io report
|
||||
GITHUB_STATUS_REPORTER: true # Generate GitHub status report
|
||||
IGNORE_GENERATED_FILES: true # Ignore generated files
|
||||
JAVASCRIPT_DEFAULT_STYLE: prettier # Default style for JavaScript
|
||||
PRINT_ALPACA: false # Print Alpaca logo in console
|
||||
SARIF_REPORTER: true # Generate SARIF report
|
||||
SHOW_SKIPPED_LINTERS: false # Show skipped linters in MegaLinter log
|
||||
TYPESCRIPT_DEFAULT_STYLE: prettier # Default style for TypeScript
|
||||
DISABLE_LINTERS:
|
||||
- REPOSITORY_DEVSKIM
|
||||
- JAVASCRIPT_ES
|
||||
YAML_YAMLLINT_CONFIG_FILE: .yamllint.yml
|
||||
MARKDOWN_MARKDOWNLINT_CONFIG_FILE: .markdownlint.json
|
||||
JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.json
|
||||
TYPESCRIPT_ES_CONFIG_FILE: .eslintrc.json
|
||||
REPOSITORY_GIT_DIFF_DISABLE_ERRORS: true
|
||||
FILTER_REGEX_EXCLUDE: >
|
||||
(node_modules|tools|config/cheat/cheatsheets/community|config/cheat/cheatsheets/tldr|config/fzf|config/zsh|config/tmux/plugins)
|
||||
|
||||
66
.pre-commit-config.yaml
Normal file
66
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
- id: requirements-txt-fixer
|
||||
- id: detect-aws-credentials
|
||||
- id: detect-private-key
|
||||
- id: trailing-whitespace
|
||||
args: [--markdown-linebreak-ext=md]
|
||||
- id: check-case-conflict
|
||||
- id: check-merge-conflict
|
||||
- id: check-executables-have-shebangs
|
||||
- id: check-shebang-scripts-are-executable
|
||||
- id: check-symlinks
|
||||
- id: check-toml
|
||||
- id: check-xml
|
||||
- id: check-yaml
|
||||
args: [--allow-multiple-documents]
|
||||
- id: end-of-file-fixer
|
||||
- id: mixed-line-ending
|
||||
args: [--fix=auto]
|
||||
- id: pretty-format-json
|
||||
args: [--autofix, --no-sort-keys]
|
||||
|
||||
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||
rev: v0.45.0
|
||||
hooks:
|
||||
- id: markdownlint
|
||||
args: [-c, .markdownlint.json, --fix]
|
||||
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.37.1
|
||||
hooks:
|
||||
- id: yamllint
|
||||
|
||||
- repo: https://github.com/koalaman/shellcheck-precommit
|
||||
rev: v0.11.0
|
||||
hooks:
|
||||
- id: shellcheck
|
||||
|
||||
- repo: https://github.com/scop/pre-commit-shfmt
|
||||
rev: v3.12.0-2
|
||||
hooks:
|
||||
- id: shfmt
|
||||
|
||||
- repo: https://github.com/rhysd/actionlint
|
||||
rev: v1.7.8
|
||||
hooks:
|
||||
- id: actionlint
|
||||
|
||||
- repo: https://github.com/renovatebot/pre-commit-hooks
|
||||
rev: 41.168.5
|
||||
hooks:
|
||||
- id: renovate-config-validator
|
||||
|
||||
- repo: https://github.com/JohnnyMorganz/StyLua
|
||||
rev: v2.3.0
|
||||
hooks:
|
||||
- id: stylua # or stylua-system / stylua-github
|
||||
|
||||
- repo: https://github.com/hugoh/pre-commit-fish.git
|
||||
rev: v1.2
|
||||
hooks:
|
||||
- id: fish_syntax
|
||||
- id: fish_indent
|
||||
@@ -1,8 +1,16 @@
|
||||
# vim: ft=gitignore
|
||||
.mypy_cache/*
|
||||
tools/dotbot*
|
||||
local/bin/antigen.zsh
|
||||
config/cheat/cheatsheets/community
|
||||
config/tmux/plugins/*
|
||||
lazy-lock.json
|
||||
Brewfile.lock.json
|
||||
|
||||
base/plan
|
||||
config/cheat/cheatsheets/community
|
||||
config/cheat/cheatsheets/tldr
|
||||
config/fzf/*
|
||||
config/nvim/*
|
||||
config/op/plugins/used_plugins/*
|
||||
config/tmux/plugins/*
|
||||
config/zsh/*
|
||||
lazy-lock.json
|
||||
local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools/antidote/*
|
||||
tools/dotbot*
|
||||
|
||||
@@ -8,6 +8,7 @@ module.exports = {
|
||||
options: {
|
||||
printWidth: 120,
|
||||
proseWrap: 'preserve',
|
||||
tabWidth: 2,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
"@ivuorinen/prettier-config"
|
||||
@@ -1 +1 @@
|
||||
3.12
|
||||
3.14.0
|
||||
|
||||
3
.releaserc.json
Normal file
3
.releaserc.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": ["@ivuorinen/semantic-release-config"]
|
||||
}
|
||||
1
.serena/.gitignore
vendored
Normal file
1
.serena/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/cache
|
||||
67
.serena/memories/areas_for_improvement.md
Normal file
67
.serena/memories/areas_for_improvement.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Areas for Improvement
|
||||
|
||||
## Code Quality Enhancements
|
||||
|
||||
### 1. Configuration Management
|
||||
|
||||
- **Inconsistent indentation**: Mixed tabs/spaces across config files
|
||||
- **Line length management**: Need consistent enforcement of limits
|
||||
- **Template standardization**: Memory files need consistent formatting template
|
||||
|
||||
### 2. Linting Configuration Improvements
|
||||
|
||||
- **Shellcheck exclusions**: Add proper ignore patterns for submodules
|
||||
- **EditorConfig refinement**: Some rules too strict for generated/third-party content
|
||||
- **Prettier ignore patterns**: Better exclusion of binary/generated files
|
||||
|
||||
### 3. Testing Infrastructure
|
||||
|
||||
- **Bats test errors**: Tests failing due to missing `rm` command in PATH
|
||||
- **Test coverage**: Limited test coverage for shell functions
|
||||
- **CI/CD integration**: Need automated linting in GitHub Actions
|
||||
|
||||
### 4. Documentation Gaps
|
||||
|
||||
- **Onboarding docs**: Missing clear setup instructions for new contributors
|
||||
- **Troubleshooting guide**: Need common error resolution steps
|
||||
- **Architecture overview**: Missing high-level system architecture
|
||||
|
||||
## Performance & Maintenance
|
||||
|
||||
### 5. Submodule Management
|
||||
|
||||
- **Large submodules**: Some submodules contain unnecessary files
|
||||
- **Update frequency**: Need systematic submodule update process
|
||||
- **Dependency tracking**: Better documentation of submodule purposes
|
||||
|
||||
### 6. Cross-Platform Considerations
|
||||
|
||||
- **Darwin-specific paths**: Some hardcoded macOS paths could be parameterized
|
||||
- **Shell compatibility**: More testing across bash/zsh/fish environments
|
||||
- **Tool availability**: Better fallbacks when optional tools missing
|
||||
|
||||
### 7. Security & Privacy
|
||||
|
||||
- **Secret management**: Better examples for secret configuration
|
||||
- **Permission handling**: Some scripts could use more restrictive permissions
|
||||
- **Audit trail**: Track configuration changes and their impact
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### 8. Automation Opportunities
|
||||
|
||||
- **Auto-formatting**: Pre-commit hooks for consistent formatting
|
||||
- **Dependency updates**: Automated updates for package.json dependencies
|
||||
- **Health checks**: Scripts to validate configuration integrity
|
||||
|
||||
### 9. Error Handling
|
||||
|
||||
- **Graceful degradation**: Better fallbacks when tools unavailable
|
||||
- **Error messages**: More informative error output
|
||||
- **Recovery procedures**: Automated recovery from common failures
|
||||
|
||||
### 10. Modularity
|
||||
|
||||
- **Configuration splitting**: Some large config files could be modularized
|
||||
- **Feature flags**: Optional components for minimal installations
|
||||
- **Host-specific configs**: Better organization of machine-specific settings
|
||||
50
.serena/memories/code_style_conventions.md
Normal file
50
.serena/memories/code_style_conventions.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# Code Style and Conventions
|
||||
|
||||
## EditorConfig Rules (.editorconfig)
|
||||
|
||||
- **Charset**: UTF-8
|
||||
- **Line endings**: LF
|
||||
- **Indent style**: Spaces (except for specific files)
|
||||
- **Indent size**: 2 spaces (default)
|
||||
- **Final newline**: Required
|
||||
- **Trailing whitespace**: Trimmed
|
||||
|
||||
### Language-specific Rules
|
||||
|
||||
- **Fish scripts**: 4-space indent, 80 char line limit
|
||||
- **PHP files**: 4-space indent
|
||||
- **Markdown**: 120 char line limit
|
||||
- **Lua**: 90 char line limit
|
||||
- **Git files**: Tab indentation
|
||||
- **Shell scripts**: 2-space indent with specific shfmt settings
|
||||
|
||||
## Prettier Configuration
|
||||
|
||||
- Extends `@ivuorinen/prettier-config`
|
||||
- **Trailing commas**: Always
|
||||
- **Markdown**: 120 char width, preserve prose wrapping
|
||||
|
||||
## ESLint Configuration
|
||||
|
||||
- Extends `@ivuorinen` base configuration
|
||||
- Applied to JavaScript/TypeScript files
|
||||
|
||||
## Shell Script Standards (.shellcheckrc)
|
||||
|
||||
- External sources following enabled
|
||||
- Disabled checks: SC2039, SC2166, SC2154, SC1091, SC2174, SC2016
|
||||
- Must include shebang or `# shellcheck shell=bash`
|
||||
|
||||
## Formatting Tools
|
||||
|
||||
- **Shell scripts**: shfmt with specific rules
|
||||
- **Markdown**: markdownlint + prettier
|
||||
- **JavaScript/TypeScript**: prettier + eslint
|
||||
- **YAML**: yamllint
|
||||
|
||||
## Naming Conventions
|
||||
|
||||
- **Shell functions**: Use `x-` prefix for cross-shell compatibility
|
||||
- **Environment variables**: UPPERCASE with underscores
|
||||
- **File names**: lowercase with hyphens for scripts
|
||||
- **Directory structure**: lowercase, organized by tool/purpose
|
||||
80
.serena/memories/critical_linting_errors.md
Normal file
80
.serena/memories/critical_linting_errors.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# Critical Linting Errors That Must Be Fixed
|
||||
|
||||
## Current Status: BLOCKING Issues Identified
|
||||
|
||||
The linting system has revealed 150+ violations across multiple categories that must be addressed immediately.
|
||||
|
||||
## EditorConfig Violations (High Priority)
|
||||
|
||||
### Missing Final Newlines
|
||||
|
||||
- All `.serena/memories/*.md` files missing final newlines
|
||||
- Multiple project configuration files affected
|
||||
- This is a BLOCKING issue per user instructions
|
||||
|
||||
### Line Length Violations
|
||||
|
||||
- Fish shell configs exceed 80-character limit (`.editorconfig` enforced)
|
||||
- Memory files have lines exceeding 120-character limit
|
||||
- WezTerm configuration files have long lines
|
||||
|
||||
### Indentation Errors
|
||||
|
||||
- Git configuration using tabs instead of spaces
|
||||
- WezTerm color scheme files using tabs vs spaces
|
||||
- Perl scripts with inconsistent indentation
|
||||
|
||||
## Markdownlint Issues (Memory Files)
|
||||
|
||||
### Systematic Problems Across All Memory Files
|
||||
|
||||
- Missing blank lines around headings (MD022)
|
||||
- Lists not surrounded by blank lines (MD032)
|
||||
- Fenced code blocks not surrounded by blank lines (MD031)
|
||||
- Trailing punctuation in headings (MD026)
|
||||
- Missing language specification for fenced code blocks (MD040)
|
||||
- Missing final newlines (MD047)
|
||||
|
||||
### Specific Files Affected
|
||||
|
||||
- `areas_for_improvement.md`: 20+ violations
|
||||
- `code_style_conventions.md`: 15+ violations
|
||||
- `critical_linting_errors.md`: 25+ violations
|
||||
- `darwin_system_utilities.md`: 15+ violations
|
||||
- `immediate_action_items.md`: 25+ violations
|
||||
- `project_overview.md`: 15+ violations
|
||||
- `project_structure.md`: 20+ violations
|
||||
- `shellcheck_issues.md`: 15+ violations
|
||||
- `suggested_commands.md`: 25+ violations
|
||||
- `task_completion_checklist.md`: 10+ violations
|
||||
|
||||
## Prettier Formatting Issues
|
||||
|
||||
### JSON Configuration Files
|
||||
|
||||
- `.commitlintrc.json`, `.eslintrc.json`, `.luarc.json`
|
||||
- `.releaserc.json`, `.github/renovate.json`
|
||||
- Host-specific configurations in `config/` directory
|
||||
|
||||
### YAML Files
|
||||
|
||||
- `.mega-linter.yml` formatting inconsistencies
|
||||
- Various configuration files needing formatting
|
||||
|
||||
## Immediate Action Required
|
||||
|
||||
1. **Fix memory files**: Apply markdown formatting rules
|
||||
2. **Run auto-fixers**: `yarn fix` to address automatic fixes
|
||||
3. **Manual corrections**: Address remaining EditorConfig violations
|
||||
4. **Validation**: Ensure `yarn lint` passes completely
|
||||
|
||||
## Impact Assessment
|
||||
|
||||
These violations prevent:
|
||||
|
||||
- Successful CI/CD pipeline execution
|
||||
- Code quality standards compliance
|
||||
- Pre-commit hook success
|
||||
- Project maintainability standards
|
||||
|
||||
Per user instructions: "Linting issues ARE NOT ACCEPTABLE" and "EditorConfig problems are blocking errors"
|
||||
66
.serena/memories/darwin_system_utilities.md
Normal file
66
.serena/memories/darwin_system_utilities.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Darwin (macOS) System Utilities
|
||||
|
||||
## Available Command Paths
|
||||
|
||||
Based on the current system setup:
|
||||
|
||||
### Core System Commands
|
||||
|
||||
- `git`: `/opt/homebrew/bin/git` (Homebrew version)
|
||||
- `find`: `/usr/bin/find` (system version)
|
||||
- `cd`: shell built-in command
|
||||
- `ls`: aliased to `eza -h -s=type --git --icons --group-directories-first`
|
||||
- `grep`: aliased to `grep --color`
|
||||
|
||||
### Modern Alternatives (Rust-based)
|
||||
|
||||
- `fd`: `/Users/ivuorinen/.local/share/cargo/bin/fd` (modern find)
|
||||
- `rg`: `/Users/ivuorinen/.local/share/cargo/bin/rg` (ripgrep for text search)
|
||||
|
||||
## Recommended Usage Patterns
|
||||
|
||||
### File Search
|
||||
|
||||
```bash
|
||||
# Use fd instead of find when possible
|
||||
fd "*.sh" # Find shell scripts
|
||||
fd -t f -e lua # Find Lua files
|
||||
find . -name "*.sh" # Fallback to system find
|
||||
```
|
||||
|
||||
### Text Search
|
||||
|
||||
```bash
|
||||
# Use rg (ripgrep) instead of grep when possible
|
||||
rg "function.*bash" # Search for bash functions
|
||||
rg -t shell "export" # Search in shell files only
|
||||
grep "pattern" file.txt # Fallback to system grep
|
||||
```
|
||||
|
||||
### Directory Navigation
|
||||
|
||||
```bash
|
||||
# Use eza features via ls alias
|
||||
ls # Shows icons, git status, grouped directories
|
||||
ls -la # Long format with hidden files
|
||||
cd /full/path # Always use full paths in scripts
|
||||
```
|
||||
|
||||
## Path Configuration
|
||||
|
||||
The system is configured with these PATH priorities:
|
||||
|
||||
1. `~/.local/bin` (user scripts)
|
||||
2. `~/.dotfiles/local/bin` (dotfiles scripts)
|
||||
3. `~/.local/share/bob/nvim-bin` (Neovim)
|
||||
4. `~/.local/share/cargo/bin` (Rust tools like fd, rg)
|
||||
5. `/opt/homebrew/bin` (Homebrew packages)
|
||||
6. `/usr/local/bin` (system packages)
|
||||
|
||||
## Shell Compatibility
|
||||
|
||||
The dotfiles support multiple shells through `config/shared.sh`:
|
||||
|
||||
- Functions prefixed with `x-` work across bash, zsh, and fish
|
||||
- Path management handled automatically per shell
|
||||
- Environment variables set appropriately per shell
|
||||
114
.serena/memories/immediate_action_items.md
Normal file
114
.serena/memories/immediate_action_items.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Immediate Action Items - Priority Order
|
||||
|
||||
## HIGH PRIORITY (Must Fix Before Any Development)
|
||||
|
||||
### 1. Fix Memory File Formatting (BLOCKING)
|
||||
|
||||
```bash
|
||||
# These files prevent any linting from passing:
|
||||
- .serena/memories/code_style_conventions.md
|
||||
- .serena/memories/darwin_system_utilities.md
|
||||
- .serena/memories/project_overview.md
|
||||
- .serena/memories/project_structure.md
|
||||
- .serena/memories/suggested_commands.md
|
||||
- .serena/memories/task_completion_checklist.md
|
||||
|
||||
# Issues: Missing final newlines, markdown formatting, line length
|
||||
# Impact: Blocks all linting commands
|
||||
```
|
||||
|
||||
### 2. Fix Fish Shell Line Length Violations (BLOCKING)
|
||||
|
||||
```bash
|
||||
# Files exceeding 80-char limit:
|
||||
config/fish/alias.fish (4 violations)
|
||||
config/fish/exports.fish (15 violations)
|
||||
|
||||
# These are CRITICAL - Fish config has strict limits
|
||||
# Must be fixed before any fish-related changes
|
||||
```
|
||||
|
||||
### 3. Fix Git Configuration Indentation (BLOCKING)
|
||||
|
||||
```bash
|
||||
# Files with tab/space mixing:
|
||||
config/git/shared (40+ violations)
|
||||
hosts/s/config/git/overrides/config
|
||||
hosts/s/config/git/local.d/work-git
|
||||
|
||||
# Impact: Git configuration may not work correctly
|
||||
```
|
||||
|
||||
## MEDIUM PRIORITY (Fix During Next Development Cycle)
|
||||
|
||||
### 4. Prettier Formatting Issues
|
||||
|
||||
```bash
|
||||
# 17 files need prettier formatting:
|
||||
yarn fix:prettier
|
||||
# Most are JSON/YAML configuration files
|
||||
```
|
||||
|
||||
### 5. WezTerm Color Scheme Indentation
|
||||
|
||||
```bash
|
||||
# All files in config/wezterm/colors/ using tabs instead of spaces
|
||||
# Affects terminal appearance configuration
|
||||
```
|
||||
|
||||
### 6. Update Linting Configuration
|
||||
|
||||
```bash
|
||||
# Add shellcheck exclusions for submodules:
|
||||
# - tools/antidote/
|
||||
# - config/tmux/plugins/
|
||||
# - config/vim/extra/fzf/
|
||||
# - config/cheat/cheatsheets/tldr/
|
||||
```
|
||||
|
||||
## LOW PRIORITY (Future Improvements)
|
||||
|
||||
### 7. Test Infrastructure
|
||||
|
||||
```bash
|
||||
# Fix bats test PATH issues
|
||||
# Tests pass but show rm command not found errors
|
||||
```
|
||||
|
||||
### 8. Documentation Updates
|
||||
|
||||
```bash
|
||||
# Add troubleshooting section to AGENTS.md
|
||||
# Create shellcheck exclusion documentation
|
||||
```
|
||||
|
||||
## Immediate Commands to Run
|
||||
|
||||
### Step 1: Auto-fix What's Possible
|
||||
|
||||
```bash
|
||||
yarn fix:prettier # Fix 17 files
|
||||
yarn fix:markdown # Attempt markdown fixes
|
||||
```
|
||||
|
||||
### Step 2: Manual Fixes Required
|
||||
|
||||
- Add final newlines to all memory files
|
||||
- Wrap long lines in Fish configuration files
|
||||
- Convert tabs to spaces in Git configuration files
|
||||
|
||||
### Step 3: Verify Progress
|
||||
|
||||
```bash
|
||||
yarn lint:ec # Check EditorConfig compliance
|
||||
yarn lint:markdown # Check markdown issues
|
||||
yarn lint:prettier # Check remaining prettier issues
|
||||
```
|
||||
|
||||
## Success Criteria
|
||||
|
||||
✅ `yarn lint` passes without errors
|
||||
✅ All EditorConfig violations resolved
|
||||
✅ Memory files properly formatted
|
||||
✅ Fish configuration under line limits
|
||||
✅ Git configuration uses consistent indentation
|
||||
61
.serena/memories/project_overview.md
Normal file
61
.serena/memories/project_overview.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# .dotfiles Project Overview
|
||||
|
||||
## Purpose
|
||||
|
||||
This is a comprehensive personal dotfiles repository for managing development
|
||||
environment configurations across macOS systems. The project uses **Dotbot** as
|
||||
the primary installation framework to manage symlinks and setup configurations.
|
||||
|
||||
## Key Features
|
||||
|
||||
- Automated configuration management using Dotbot
|
||||
- Support for multiple development tools and applications
|
||||
- Host-specific configurations in `/hosts/` directory
|
||||
- Comprehensive testing and linting setup with pre-commit hooks
|
||||
- Cross-shell compatibility (bash, zsh, fish)
|
||||
- Large collection of custom utility scripts in `local/bin/`
|
||||
- Git submodules for external tools (dotbot, antidote, tmux plugins)
|
||||
- Environment-specific configurations (secrets management)
|
||||
|
||||
## Recent Notable Changes (from git status)
|
||||
|
||||
- New everforest color theme configurations added
|
||||
- Multiple temporary fish configuration files present
|
||||
- Updates to various configuration files (.commitlintrc.json, .eslintrc.json, etc.)
|
||||
- New x-pr-comments script and documentation added
|
||||
- Various tmux plugin updates
|
||||
- Husky configuration relocated from base/ to config/husky/
|
||||
|
||||
## Tech Stack
|
||||
|
||||
- **Shell**: Bash (primary), with Fish and Zsh support
|
||||
- **Configuration Manager**: Dotbot with plugins (asdf, brew, include, pip)
|
||||
- **Package Manager**: Yarn 1.22.22 (Node.js), Homebrew (macOS), pipx (Python)
|
||||
- **Testing**: Bats test framework, custom test-all.sh script
|
||||
- **Linting**: MegaLinter, Prettier, ESLint, Markdownlint, ShellCheck, EditorConfig
|
||||
- **Automation**: Pre-commit hooks, GitHub Actions, Renovate
|
||||
|
||||
## Project Structure Highlights
|
||||
|
||||
- `/config/` - Main configuration directory (74+ subdirectories)
|
||||
- `/local/bin/` - Custom utility scripts (100+ scripts with documentation)
|
||||
- `/hosts/` - Host-specific configurations
|
||||
- `/tools/` - Git submodules for external tools
|
||||
- `/base/` - Base configuration files
|
||||
- `/secrets/` - Secret management configurations
|
||||
- `/scripts/` - Installation and setup scripts
|
||||
- `/.github/` - GitHub Actions workflows and configurations
|
||||
|
||||
## Target System
|
||||
|
||||
- **Platform**: Darwin (macOS) - Version 24.6.0
|
||||
- **Architecture**: Universal (Intel/Apple Silicon via Homebrew)
|
||||
- **Dependencies**: Git, Homebrew, Yarn, various CLI tools managed via asdf/aqua
|
||||
|
||||
## Development Environment
|
||||
|
||||
- Node.js managed via nvm/asdf
|
||||
- Go version specified (.go-version)
|
||||
- Python version specified (.python-version)
|
||||
- Package management via Yarn with lockfile
|
||||
- TypeScript support for configuration files
|
||||
116
.serena/memories/project_structure.md
Normal file
116
.serena/memories/project_structure.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Project Structure
|
||||
|
||||
## Root Directory
|
||||
|
||||
```text
|
||||
.dotfiles/
|
||||
├── install # Main installation script (Dotbot runner)
|
||||
├── install.conf.yaml # Dotbot configuration
|
||||
├── package.json # Node.js dependencies for linting/testing (Yarn managed)
|
||||
├── AGENTS.md # Project documentation and guidelines
|
||||
├── test-all.sh # Bats test runner
|
||||
├── add-submodules.sh # Git submodule management
|
||||
└── .serena/ # Claude Code/Serena analysis cache (new)
|
||||
```
|
||||
|
||||
## Main Directories
|
||||
|
||||
### `config/` (74+ subdirectories)
|
||||
|
||||
Configuration files for development tools and applications:
|
||||
|
||||
- `git/` - Git configuration with delta integration and everforest theme
|
||||
- `nvim/` - Neovim configuration with Lua plugins
|
||||
- `tmux/` - Tmux configuration with multiple plugins (dark-notify, window-name, etc.)
|
||||
- `fish/` - Fish shell configuration with completions and functions
|
||||
- `zsh/` - Zsh configuration with antidote plugin manager
|
||||
- `fzf/` - Fuzzy finder configuration with everforest theme
|
||||
- `wezterm/` - WezTerm terminal configuration
|
||||
- `homebrew/` - Homebrew environment configuration
|
||||
- `starship.toml` - Starship prompt configuration
|
||||
- `shared.sh` - Cross-shell compatibility functions
|
||||
- `aerospace/`, `amethyst/`, `yabai/`, `skhd/` - Window managers
|
||||
- `direnv/`, `asdf/`, `aqua/` - Development environment tools
|
||||
- `gpg-tui/`, `op/`, `gh/` - Security and CLI tools
|
||||
- Theme configurations: everforest color schemes across multiple tools
|
||||
|
||||
### `base/`
|
||||
|
||||
Dotfiles that get symlinked to home directory with `.` prefix:
|
||||
|
||||
- Contains traditional dotfiles like `.bashrc`, `.zshrc`, etc.
|
||||
- `plan` - Planning/note-taking configuration
|
||||
- `shellcheckrc` - ShellCheck rules
|
||||
|
||||
### `local/`
|
||||
|
||||
- `bin/` - 100+ custom scripts with comprehensive documentation
|
||||
- Homegrown utilities (dfm, git tools, backup scripts, etc.)
|
||||
- Sourced utilities (from skx/sysadmin-util, mvdan/dotfiles)
|
||||
- Each script has corresponding .md documentation
|
||||
- Recent additions: x-pr-comments for GitHub PR analysis
|
||||
- `share/fonts/` - JetBrains Mono font files
|
||||
- `man/` - Manual pages
|
||||
|
||||
### `ssh/`
|
||||
|
||||
SSH configuration files (mode 0600/0700)
|
||||
|
||||
- `shared.d/` - Shared SSH configurations for specific hosts
|
||||
|
||||
### `tools/` (Git submodules)
|
||||
|
||||
External tools and Dotbot plugins:
|
||||
|
||||
- `dotbot/` - Dotbot installation framework
|
||||
- `dotbot-*` - Dotbot plugins (asdf, brew, include, pip)
|
||||
- `antidote/` - Zsh plugin manager
|
||||
- Various tmux plugins (continuum, resurrect, yank, etc.)
|
||||
|
||||
### `hosts/`
|
||||
|
||||
Host-specific configurations:
|
||||
|
||||
- `air/`, `s/`, `v/` - Individual host configurations
|
||||
- Applied after main configuration
|
||||
|
||||
### `secrets/`
|
||||
|
||||
Secret and credential management configuration
|
||||
|
||||
### `scripts/`
|
||||
|
||||
Installation and setup automation scripts
|
||||
|
||||
### `.github/`
|
||||
|
||||
- GitHub Actions workflows
|
||||
- Renovate configuration
|
||||
- Issue templates and documentation
|
||||
|
||||
### Development Configuration Files
|
||||
|
||||
- `.editorconfig` - Editor configuration rules
|
||||
- `.prettierrc.js` - Prettier formatting rules
|
||||
- `.eslintrc.json` - ESLint linting rules
|
||||
- `.commitlintrc.json` - Commit message linting
|
||||
- `.shellcheckrc` - ShellCheck configuration
|
||||
- `.mega-linter.yml` - MegaLinter configuration
|
||||
- `.luarc.json` - Lua language server configuration
|
||||
- `.nvmrc`, `.go-version`, `.python-version` - Version management
|
||||
- Various ignore files (.gitignore, .prettierignore, .yamlignore, etc.)
|
||||
|
||||
## Testing Infrastructure
|
||||
|
||||
- `tests/` - Bats test files
|
||||
- `test-all.sh` - Main test runner
|
||||
- Pre-commit hooks for automated testing
|
||||
- GitHub Actions for CI/CD
|
||||
|
||||
## Recent Structural Changes
|
||||
|
||||
- Husky configuration moved from `base/huskyrc` to `config/husky/init.sh`
|
||||
- Addition of everforest theme configurations across multiple tools
|
||||
- New .serena directory for AI analysis caching
|
||||
- Multiple temporary fish configuration files (everforest themes)
|
||||
- Enhanced git configuration with delta and everforest theming
|
||||
62
.serena/memories/shellcheck_issues.md
Normal file
62
.serena/memories/shellcheck_issues.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# ShellCheck Issues Analysis
|
||||
|
||||
## Critical Shell Script Problems
|
||||
|
||||
### Missing Shebangs (SC2148)
|
||||
|
||||
Multiple shell scripts missing proper shebang lines:
|
||||
|
||||
- `tools/antidote/tests/` - Test scripts
|
||||
- `config/vim/*/test/lib/common.sh` - FZF test libraries
|
||||
- `config/tmux/plugins/*/scripts/helpers.sh` - Plugin helper scripts
|
||||
- Various submodule scripts
|
||||
|
||||
### Syntax Errors (SC1036, SC1088, SC1073)
|
||||
|
||||
- `config/vim/fzf/test/lib/common.sh` - Invalid ERB template syntax
|
||||
- `config/cheat/cheatsheets/tldr/` - Markdown files incorrectly parsed as shell
|
||||
- `tmux-sessionist/scripts/list_sessions.sh` - Brace parsing errors
|
||||
|
||||
### Variable Assignment Issues (SC1007, SC2155)
|
||||
|
||||
- `config/vim/extra/fzf/test/lib/common.sh` - Incorrect empty variable assignments
|
||||
- Multiple tmux plugin scripts - Declare and assign should be separate
|
||||
|
||||
### Quoting Problems (SC2086, SC2006)
|
||||
|
||||
- Unquoted variable expansions in tmux plugin scripts
|
||||
- Legacy backtick usage instead of $(...) syntax
|
||||
- Missing quotes around variable expansions
|
||||
|
||||
## Third-Party Code Issues
|
||||
|
||||
### Submodule Problems
|
||||
|
||||
Most shellcheck errors are in **third-party submodules**:
|
||||
|
||||
- `tools/antidote/` - Zsh plugin manager
|
||||
- `config/tmux/plugins/` - Tmux plugins
|
||||
- `config/vim/extra/fzf/` - FZF integration
|
||||
- `config/cheat/cheatsheets/tldr/` - Cheat sheet collection
|
||||
|
||||
### Recommendation
|
||||
|
||||
- These should be **excluded from shellcheck** via configuration
|
||||
- Focus linting only on **project-owned scripts**
|
||||
- Add shellcheck ignore patterns for submodule directories
|
||||
|
||||
## Project-Owned Script Issues
|
||||
|
||||
### Main Scripts Status
|
||||
|
||||
- `install` - ✅ Clean (no shellcheck errors)
|
||||
- `test-all.sh` - ✅ Clean
|
||||
- `add-submodules.sh` - ✅ Clean
|
||||
- `config/shared.sh` - ✅ Clean
|
||||
- Scripts in `local/bin/` - ✅ Mostly clean
|
||||
|
||||
### Minor Issues Found
|
||||
|
||||
- Some scripts could benefit from stricter quoting
|
||||
- Consistent shebang usage across all scripts
|
||||
- Consider adding `set -euo pipefail` to more scripts
|
||||
121
.serena/memories/suggested_commands.md
Normal file
121
.serena/memories/suggested_commands.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# Essential Commands for .dotfiles Development
|
||||
|
||||
## Installation & Setup
|
||||
|
||||
```bash
|
||||
# Initial setup - install linting tools and dependencies
|
||||
yarn install
|
||||
|
||||
# Install/update all dotfiles configurations
|
||||
./install
|
||||
|
||||
# Update git submodules (multiple approaches)
|
||||
git submodule update --remote --merge
|
||||
git submodule update --init --recursive --force
|
||||
bash add-submodules.sh
|
||||
```
|
||||
|
||||
## Development Commands
|
||||
|
||||
```bash
|
||||
# Linting (run all linters - ALWAYS fix all issues)
|
||||
yarn lint
|
||||
|
||||
# Individual linting commands
|
||||
yarn lint:markdown # Markdownlint
|
||||
yarn lint:prettier # Prettier check
|
||||
yarn lint:ec # EditorConfig checker
|
||||
|
||||
# Auto-fixing (use these BEFORE manual linting)
|
||||
yarn fix # Fix all format issues
|
||||
yarn fix:markdown # Fix markdown formatting
|
||||
yarn fix:prettier # Fix prettier formatting
|
||||
|
||||
# Testing
|
||||
yarn test # Run all Bats tests
|
||||
bash test-all.sh # Alternative test runner
|
||||
```
|
||||
|
||||
## Pre-commit Hooks (Comprehensive)
|
||||
|
||||
Current pre-commit configuration includes:
|
||||
|
||||
- **Security**: detect-aws-credentials, detect-private-key
|
||||
- **File integrity**: check-case-conflict, check-merge-conflict, check-symlinks
|
||||
- **Shell scripts**: shellcheck, shfmt (formatting)
|
||||
- **YAML/JSON**: yamllint, check-yaml, check-toml, pretty-format-json
|
||||
- **Markdown**: markdownlint with auto-fix
|
||||
- **Lua**: stylua formatting for Neovim configs
|
||||
- **Fish**: fish_syntax, fish_indent for shell configs
|
||||
- **GitHub Actions**: actionlint validation
|
||||
- **Renovate**: renovate-config-validator
|
||||
- **General**: trailing-whitespace, end-of-file-fixer, mixed-line-ending
|
||||
|
||||
```bash
|
||||
# Run pre-commit manually
|
||||
pre-commit run --all-files
|
||||
```
|
||||
|
||||
## Version Management
|
||||
|
||||
```bash
|
||||
# Check current versions
|
||||
node --version # Managed by nvm (.nvmrc: v20.18.1)
|
||||
go version # Managed by asdf (.go-version)
|
||||
python --version # Managed by asdf (.python-version)
|
||||
```
|
||||
|
||||
## System Utilities (Darwin-specific)
|
||||
|
||||
```bash
|
||||
# Modern CLI tools available
|
||||
ls # aliased to eza with icons and git info
|
||||
grep # aliased to grep --color
|
||||
fd pattern # modern find alternative
|
||||
rg pattern # ripgrep for text search
|
||||
bat file # modern cat with syntax highlighting
|
||||
```
|
||||
|
||||
## Project-specific Scripts (100+ available)
|
||||
|
||||
```bash
|
||||
# Dotfiles management
|
||||
bash local/bin/dfm install all
|
||||
|
||||
# Git utilities
|
||||
git-dirty # Check for dirty git repositories
|
||||
git-fsck-dirs # Run fsck on git directories
|
||||
git-update-dirs # Update multiple git directories
|
||||
|
||||
# Development utilities
|
||||
x-pr-comments <pr> # Analyze GitHub PR comments (NEW)
|
||||
x-set-php-aliases # Generate PHP version aliases
|
||||
x-env-list # List environment variables
|
||||
x-open-ports # Check open network ports
|
||||
|
||||
# Backup utilities
|
||||
x-backup-folder # Backup directories
|
||||
x-backup-mysql-with-prefix # MySQL backup with prefix
|
||||
```
|
||||
|
||||
## Configuration Management
|
||||
|
||||
```bash
|
||||
# Load shell configurations
|
||||
source config/shared.sh # Cross-shell compatibility functions
|
||||
source x-set-php-aliases # PHP version management
|
||||
|
||||
# Host-specific configurations
|
||||
# Automatically applied: hosts/{hostname}/
|
||||
```
|
||||
|
||||
## Quality Assurance (CRITICAL)
|
||||
|
||||
**All linting errors are BLOCKING and must be fixed:**
|
||||
|
||||
- EditorConfig violations are considered blocking errors
|
||||
- ShellCheck warnings must be addressed
|
||||
- Prettier formatting must be consistent
|
||||
- Markdownlint rules must be followed
|
||||
- NEVER use --no-verify with git operations
|
||||
- ALWAYS run autofixers before manual intervention
|
||||
115
.serena/memories/task_completion_checklist.md
Normal file
115
.serena/memories/task_completion_checklist.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Task Completion Checklist
|
||||
|
||||
When completing any development task in this dotfiles repository, follow this
|
||||
checklist to ensure compliance with project standards.
|
||||
|
||||
## Required Steps (BLOCKING)
|
||||
|
||||
### 1. Code Quality Checks
|
||||
|
||||
```bash
|
||||
# Run all linting tools - MUST PASS with zero errors
|
||||
yarn lint
|
||||
|
||||
# Individual checks if needed:
|
||||
yarn lint:markdown # Markdownlint validation
|
||||
yarn lint:prettier # Prettier formatting check
|
||||
yarn lint:ec # EditorConfig compliance verification
|
||||
```
|
||||
|
||||
### 2. Shell Script Validation (if applicable)
|
||||
|
||||
```bash
|
||||
# All shell scripts must pass shellcheck without warnings
|
||||
find . -path ./node_modules -prune -o -name '*.sh' -print0 | xargs -0 shellcheck
|
||||
|
||||
# For individual scripts:
|
||||
shellcheck path/to/script.sh
|
||||
```
|
||||
|
||||
### 3. Testing Infrastructure
|
||||
|
||||
```bash
|
||||
# Run all tests - MUST PASS completely
|
||||
yarn test
|
||||
# OR alternative runner
|
||||
bash test-all.sh
|
||||
|
||||
# For specific test categories:
|
||||
# Bats tests in tests/ directory
|
||||
# Individual script functionality tests
|
||||
```
|
||||
|
||||
### 4. EditorConfig Compliance (CRITICAL)
|
||||
|
||||
- **BLOCKING REQUIREMENT**: EditorConfig violations prevent completion
|
||||
- All code must follow `.editorconfig` rules exactly:
|
||||
- UTF-8 charset
|
||||
- LF line endings
|
||||
- Final newline required
|
||||
- Trailing whitespace removal
|
||||
- Language-specific indentation (2-space default, 4-space for Fish)
|
||||
- Use autofixers before attempting manual fixes
|
||||
- Never modify linting configuration to bypass errors
|
||||
|
||||
## Auto-fixing Protocol
|
||||
|
||||
```bash
|
||||
# ALWAYS run auto-fixers first, in this order:
|
||||
yarn fix # Fix all auto-fixable issues
|
||||
yarn fix:markdown # Fix markdown formatting violations
|
||||
yarn fix:prettier # Fix code formatting issues
|
||||
|
||||
# Verify fixes applied correctly:
|
||||
yarn lint # Should show reduced error count
|
||||
```
|
||||
|
||||
## Pre-commit Hook Integration
|
||||
|
||||
Current pre-commit configuration enforces:
|
||||
|
||||
- Security checks (credentials, private keys)
|
||||
- Shell script validation (shellcheck, shfmt)
|
||||
- Markdown formatting (markdownlint with auto-fix)
|
||||
- YAML/JSON validation and formatting
|
||||
- Lua formatting (stylua for Neovim configs)
|
||||
- Fish shell syntax validation
|
||||
- GitHub Actions validation (actionlint)
|
||||
- Renovate configuration validation
|
||||
|
||||
## Memory File Maintenance
|
||||
|
||||
When updating memory files:
|
||||
|
||||
1. Follow markdown best practices (blank lines around headings/lists)
|
||||
2. Specify language for fenced code blocks
|
||||
3. Ensure final newline exists
|
||||
4. Respect line length limits (120 chars for markdown)
|
||||
5. Use proper heading hierarchy
|
||||
|
||||
## Critical Success Criteria
|
||||
|
||||
✅ **REQUIRED FOR TASK COMPLETION:**
|
||||
|
||||
- `yarn lint` exits with code 0 (no errors)
|
||||
- `yarn test` passes all test suites
|
||||
- EditorConfig compliance verified
|
||||
- No trailing whitespace or missing final newlines
|
||||
- Shell scripts have proper shebangs and pass shellcheck
|
||||
- All temporary/cache files cleaned up
|
||||
|
||||
❌ **BLOCKING ISSUES:**
|
||||
|
||||
- Any linting errors or warnings
|
||||
- EditorConfig violations of any kind
|
||||
- Test failures or incomplete test coverage
|
||||
- Use of `--no-verify` flag with git operations
|
||||
- Modified linting configurations to bypass errors
|
||||
|
||||
## Quality Assurance Notes
|
||||
|
||||
- **Use `which command`** to get full paths in scripts
|
||||
- **Prefer modern tools**: `rg` over `grep`, `fd` over `find`, `bat` over `cat`
|
||||
- **Test cross-shell compatibility**: bash, zsh, fish
|
||||
- **Validate host-specific configurations** don't break general setup
|
||||
- **Document any new utilities** in `local/bin/README.md`
|
||||
90
.serena/project.yml
Normal file
90
.serena/project.yml
Normal file
@@ -0,0 +1,90 @@
|
||||
# language of the project (csharp, python, rust, java, typescript, go, cpp, or ruby)
|
||||
# * For C, use cpp
|
||||
# * For JavaScript, use typescript
|
||||
# Special requirements:
|
||||
# * csharp: Requires the presence of a .sln file in the project folder.
|
||||
language: bash
|
||||
|
||||
# whether to use the project's gitignore file to ignore files
|
||||
# Added on 2025-04-07
|
||||
ignore_all_files_in_gitignore: true
|
||||
# list of additional paths to ignore
|
||||
# same syntax as gitignore, so you can use * and **
|
||||
# Was previously called `ignored_dirs`, please update your config if you are using that.
|
||||
# Added (renamed) on 2025-04-07
|
||||
ignored_paths:
|
||||
- '*.swp'
|
||||
- '*.tmp'
|
||||
- '*.tmp.*'
|
||||
- '.DS_Store'
|
||||
- '.git/**'
|
||||
- /config/cheat/cheatsheets/community/**
|
||||
- /config/cheat/cheatsheets/pure-bash-bible/**
|
||||
- /config/cheat/cheatsheets/tldr/**
|
||||
- /config/fish/cheatsheets/community/**
|
||||
- /config/fzf/**
|
||||
- /config/nvim/snippets/**
|
||||
- /config/nvim/spell/**
|
||||
- /config/op/plugins/**
|
||||
- /config/tmux/plugins/**
|
||||
- /config/vim/extra/**
|
||||
- /config/zsh/completions/**
|
||||
- /config/zsh/plugins/**
|
||||
- /local/man/fzf
|
||||
- /local/share/fonts
|
||||
- /tools/antidote
|
||||
- /tools/dotbot
|
||||
- /tools/dotbot-*/**
|
||||
- node_modules/**
|
||||
|
||||
# whether the project is in read-only mode
|
||||
# If set to true, all editing tools will be disabled and attempts to use them will result in an error
|
||||
# Added on 2025-04-18
|
||||
read_only: false
|
||||
|
||||
# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details.
|
||||
# Below is the complete list of tools for convenience.
|
||||
# To make sure you have the latest list of tools, and to view their descriptions,
|
||||
# execute `uv run scripts/print_tool_overview.py`.
|
||||
#
|
||||
# * `activate_project`: Activates a project by name.
|
||||
# * `check_onboarding_performed`: Checks whether project onboarding was already performed.
|
||||
# * `create_text_file`: Creates/overwrites a file in the project directory.
|
||||
# * `delete_lines`: Deletes a range of lines within a file.
|
||||
# * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
|
||||
# * `execute_shell_command`: Executes a shell command.
|
||||
# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
|
||||
# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
|
||||
# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
|
||||
# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
|
||||
# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file.
|
||||
# * `initial_instructions`: Gets the initial instructions for the current project.
|
||||
# Should only be used in settings where the system prompt cannot be set,
|
||||
# e.g. in clients you have no control over, like Claude Desktop.
|
||||
# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
|
||||
# * `insert_at_line`: Inserts content at a given line in a file.
|
||||
# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
|
||||
# * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
|
||||
# * `list_memories`: Lists memories in Serena's project-specific memory store.
|
||||
# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
|
||||
# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
|
||||
# * `read_file`: Reads a file within the project directory.
|
||||
# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
|
||||
# * `remove_project`: Removes a project from the Serena configuration.
|
||||
# * `replace_lines`: Replaces a range of lines within a file with new content.
|
||||
# * `replace_symbol_body`: Replaces the full definition of a symbol.
|
||||
# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
|
||||
# * `search_for_pattern`: Performs a search for a pattern in the project.
|
||||
# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
|
||||
# * `switch_modes`: Activates modes by providing a list of their names
|
||||
# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
|
||||
# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
|
||||
# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
|
||||
# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
|
||||
excluded_tools: []
|
||||
|
||||
# initial prompt for the project. It will always be given to the LLM upon activating the project
|
||||
# (contrary to the memories, which are loaded on demand).
|
||||
initial_prompt: ''
|
||||
|
||||
project_name: '.dotfiles'
|
||||
@@ -24,3 +24,7 @@ disable=SC1091
|
||||
# SC2174: When used with -p, -m only applies to the deepest directory.
|
||||
# https://github.com/koalaman/shellcheck/wiki/SC2174
|
||||
disable=SC2174
|
||||
|
||||
# SC2016: Expressions don't expand in single quotes, use double quotes for that.
|
||||
# https://www.shellcheck.net/wiki/SC2016
|
||||
disable=SC2016
|
||||
|
||||
16
.yamlignore
Normal file
16
.yamlignore
Normal file
@@ -0,0 +1,16 @@
|
||||
# vim: ft=gitignore
|
||||
.mypy_cache/*
|
||||
Brewfile.lock.json
|
||||
config/cheat/cheatsheets/community
|
||||
config/cheat/cheatsheets/tldr
|
||||
config/fzf/*
|
||||
config/nvim/*
|
||||
config/op/plugins/used_plugins/*
|
||||
config/tmux/plugins/*
|
||||
config/vim/plugged/*
|
||||
config/zsh/*
|
||||
lazy-lock.json
|
||||
local/bin/antigen.zsh
|
||||
local/bin/asdf
|
||||
tools/antidote/*
|
||||
tools/dotbot*
|
||||
21
.yamllint.yml
Normal file
21
.yamllint.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
extends: default
|
||||
|
||||
ignore: |
|
||||
node_modules
|
||||
tools
|
||||
config/tmux/plugins
|
||||
|
||||
rules:
|
||||
empty-lines:
|
||||
level: warning
|
||||
max: 1
|
||||
line-length:
|
||||
max: 200
|
||||
level: warning
|
||||
truthy:
|
||||
check-keys: false
|
||||
comments:
|
||||
min-spaces-from-content: 1
|
||||
trailing-spaces:
|
||||
level: warning
|
||||
55
AGENTS.md
Normal file
55
AGENTS.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Project guidelines
|
||||
|
||||
This repository contains configuration files and helper scripts for managing
|
||||
a development environment.
|
||||
Dotbot drives installation, and host-specific folders under `hosts/` contain extra configs.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Run `yarn install` to fetch linting tools and the Bats test framework.
|
||||
2. Re-run `yarn install` whenever `package.json` changes.
|
||||
3. Yarn is the package manager of choice; avoid `npm` commands.
|
||||
|
||||
## Keeping the repository up to date
|
||||
|
||||
1. Update submodules with `git submodule update --remote --merge`.
|
||||
2. Pull the latest changes and run `./install`.
|
||||
|
||||
## Linting and tests
|
||||
|
||||
- Format files with:
|
||||
|
||||
```bash
|
||||
yarn fix:prettier
|
||||
yarn fix:markdown
|
||||
```
|
||||
|
||||
- Shell scripts must pass `shellcheck`.
|
||||
|
||||
```bash
|
||||
find . -path ./node_modules -prune -o -name '*.sh' -print0 | xargs -0 shellcheck
|
||||
```
|
||||
|
||||
- Ensure `.editorconfig` rules pass:
|
||||
|
||||
```bash
|
||||
tools/install-ec.sh
|
||||
ec
|
||||
```
|
||||
|
||||
- Execute tests with `yarn test` when code changes.
|
||||
|
||||
## Debugging lint issues
|
||||
|
||||
- `yarn lint:prettier` and `yarn lint:markdown` show formatting errors.
|
||||
- Ensure shell scripts have a shebang or `# shellcheck shell=bash` directive.
|
||||
- Consult `.shellcheckrc` for project specific checks.
|
||||
|
||||
Scripts rely on helpers in `config/shared.sh` so they run under Bash, Zsh and Fish by default.
|
||||
|
||||
## Commits and PRs
|
||||
|
||||
- Use Semantic Commit messages: `type(scope): summary`.
|
||||
- Keep PR titles in the same format.
|
||||
|
||||
<!-- vim: set ft=markdown spell spelllang=en_us cc=80 : -->
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
git submodule sync --recursive
|
||||
|
||||
# dotbot and plugins
|
||||
git submodule add --name dotbot \
|
||||
-f https://github.com/anishathalye/dotbot.git tools/dotbot
|
||||
@@ -13,6 +15,11 @@ git submodule add --name dotbot-pip \
|
||||
# other repos
|
||||
git submodule add --name cheat-community \
|
||||
-f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
||||
git submodule add --name cheat-tldr \
|
||||
-f https://github.com/ivuorinen/cheatsheet-tldr.git config/cheat/cheatsheets/tldr
|
||||
git submodule add --name antidote \
|
||||
--depth 1 \
|
||||
-f https://github.com/mattmc3/antidote.git tools/antidote
|
||||
|
||||
# tmux plugin manager and plugins
|
||||
git submodule add --name tmux/tmux-continuum \
|
||||
@@ -20,7 +27,7 @@ git submodule add --name tmux/tmux-continuum \
|
||||
git submodule add --name tmux/tmux-mode-indicator \
|
||||
-f https://github.com/MunifTanjim/tmux-mode-indicator.git config/tmux/plugins/tmux-mode-indicator
|
||||
git submodule add --name tmux/tmux-resurrect \
|
||||
-f https://github.com/tmux-plugins/tmux-resurrect config/tmux/plugins/tmux-resurrect
|
||||
-f https://github.com/tmux-plugins/tmux-resurrect.git config/tmux/plugins/tmux-resurrect
|
||||
git submodule add --name tmux/tmux-sensible \
|
||||
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
|
||||
git submodule add --name tmux/tmux-sessionist \
|
||||
@@ -28,18 +35,38 @@ git submodule add --name tmux/tmux-sessionist \
|
||||
git submodule add --name tmux/tmux-suspend \
|
||||
-f https://github.com/MunifTanjim/tmux-suspend.git config/tmux/plugins/tmux-suspend
|
||||
git submodule add --name tmux/tmux-window-name \
|
||||
-f https://github.com/ofirgall/tmux-window-name.git config/tmux/plugins/tmux-window-name
|
||||
-f https://github.com/ivuorinen/tmux-window-name.git config/tmux/plugins/tmux-window-name
|
||||
git submodule add --name tmux/tmux-yank \
|
||||
-f https://github.com/tmux-plugins/tmux-yank.git config/tmux/plugins/tmux-yank
|
||||
git submodule add --name tmux/tmux-current-pane-hostname \
|
||||
-f https://github.com/soyuka/tmux-current-pane-hostname.git config/tmux/plugins/tmux-current-pane-hostname
|
||||
git submodule add --name tmux/tmux-dark-notify \
|
||||
-f https://github.com/ivuorinen/tmux-dark-notify.git config/tmux/plugins/tmux-dark-notify
|
||||
|
||||
# Takes submodules and sets them to ignore all changes
|
||||
for MODULE in $(git config --file .gitmodules --get-regexp path | awk '{ print $2 }'); do
|
||||
git config "submodule.${MODULE}.ignore" all
|
||||
echo "Ignoring submodule changes for submodule.${MODULE}..."
|
||||
git config "submodule.${MODULE}.ignore" "dirty"
|
||||
done
|
||||
|
||||
# Mark certain repositories shallow
|
||||
git config -f .gitmodules submodule.antidote.shallow true
|
||||
|
||||
# remove old submodules
|
||||
[ -d "config/tmux/plugins/tpm" ] && rm -rf config/tmux/plugins/tpm
|
||||
[ -d "config/tmux/plugins/tmux" ] && rm -rf config/tmux/plugins/tmux
|
||||
[ -d "config/tmux/plugins/tmux-menus" ] && rm -rf config/tmux/plugins/tmux-menus
|
||||
[ -d "tools/dotbot-crontab" ] && rm -rf tools/dotbot-crontab
|
||||
[ -d "tools/dotbot-snap" ] && rm -rf tools/dotbot-snap
|
||||
folders=(
|
||||
"config/tmux/plugins/tpm"
|
||||
"config/tmux/plugins/tmux"
|
||||
"config/tmux/plugins/tmux-menus"
|
||||
"tools/dotbot-crontab"
|
||||
"tools/dotbot-snap"
|
||||
"config/nvim-kickstart"
|
||||
"local/bin/asdf"
|
||||
"local/asdf"
|
||||
"tools/dotbot-asdf"
|
||||
)
|
||||
|
||||
for folder in "${folders[@]}"; do
|
||||
[ -d "$folder" ] \
|
||||
&& rm -rf "$folder" \
|
||||
&& msgr run_done "Removed old submodule $folder"
|
||||
done
|
||||
|
||||
104
base/bashrc
104
base/bashrc
@@ -1,100 +1,30 @@
|
||||
# this is my bashrc config. there are many like it, but this one is mine.
|
||||
# shellcheck shell=bash
|
||||
|
||||
# Defaults
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
export PATH="$HOME/.local/bin:$HOME/.dotfiles/local/bin:$HOME/.local/go/bin:$PATH"
|
||||
# shellcheck source=scripts/shared.sh
|
||||
# source "$DOTFILES/scripts/shared.sh"
|
||||
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$PATH"
|
||||
export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
# Explicitly set XDG folders
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
# custom variables
|
||||
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
if [ -n "${GHOSTTY_RESOURCES_DIR}" ]; then
|
||||
builtin source "${GHOSTTY_RESOURCES_DIR}/shell-integration/bash/ghostty.bash"
|
||||
fi
|
||||
|
||||
# shellcheck source=../config/fzf/fzf.bash
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
||||
source "${DOTFILES}/config/fzf/fzf.bash"
|
||||
|
||||
# Import ssh keys in keychain
|
||||
ssh-add -A 2>/dev/null
|
||||
|
||||
# Enable the subsequent settings only in interactive sessions
|
||||
case $- in
|
||||
*i*) ;;
|
||||
*) return ;;
|
||||
esac
|
||||
|
||||
# Path to your oh-my-bash installation.
|
||||
export OSH="$HOME/.local/share/oh-my-bash"
|
||||
|
||||
[ -d "$OSH" ] && {
|
||||
export OSH_THEME="powerline-multiline"
|
||||
|
||||
# PowerLine theme config
|
||||
export POWERLINE_LEFT_PROMPT="cwd scm"
|
||||
export POWERLINE_RIGHT_PROMPT="python_venv ruby in_vim battery user_info"
|
||||
|
||||
# Display red dots whilst waiting for completion.
|
||||
export COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
export DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# To disable the uses of "sudo" by oh-my-bash, please set "false" to
|
||||
# this variable. The default behavior for the empty value is "true".
|
||||
export OMB_USE_SUDO=true
|
||||
|
||||
# To enable/disable display of Python virtualenv and condaenv
|
||||
export OMB_PROMPT_SHOW_PYTHON_VENV=true # enable
|
||||
# OMB_PROMPT_SHOW_PYTHON_VENV=false # disable
|
||||
|
||||
# Which completions would you like to load? (completions can be found in ~/.oh-my-bash/completions/*)
|
||||
# Custom completions may be added to ~/.oh-my-bash/custom/completions/
|
||||
# Example format: completions=(ssh git bundler gem pip pip3)
|
||||
# Add wisely, as too many completions slow down shell startup.
|
||||
export completions=(
|
||||
git
|
||||
composer
|
||||
ssh
|
||||
)
|
||||
|
||||
# Which aliases would you like to load? (aliases can be found in ~/.oh-my-bash/aliases/*)
|
||||
# Custom aliases may be added to ~/.oh-my-bash/custom/aliases/
|
||||
# Example format: aliases=(vagrant composer git-avh)
|
||||
# Add wisely, as too many aliases slow down shell startup.
|
||||
export aliases=(
|
||||
general
|
||||
)
|
||||
|
||||
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-bash/plugins/*)
|
||||
# Custom plugins may be added to ~/.oh-my-bash/custom/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
export plugins=(
|
||||
git
|
||||
bashmarks
|
||||
)
|
||||
|
||||
# Which plugins would you like to conditionally load? (plugins can be found in ~/.oh-my-bash/plugins/*)
|
||||
# Custom plugins may be added to ~/.oh-my-bash/custom/plugins/
|
||||
# Example format:
|
||||
# if [ "$DISPLAY" ] || [ "$SSH" ]; then
|
||||
# plugins+=(tmux-autoattach)
|
||||
# fi
|
||||
|
||||
source "$OSH/oh-my-bash.sh"
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='mvim'
|
||||
# fi
|
||||
x-have antidot && {
|
||||
eval "$(antidot init)"
|
||||
}
|
||||
|
||||
PROMPT_DIRTRIM=3
|
||||
PROMPT_COMMAND='PS1_CMD1=$(git branch --show-current 2>/dev/null)'
|
||||
PS1='\[\e[95m\]\u\[\e[0m\]@\[\e[38;5;22;2m\]\h\[\e[0m\] \[\e[38;5;33m\]\w\[\e[0m\] \[\e[92;2m\]${PS1_CMD1}\n\[\e[39m\]➜\[\e[0m\] '
|
||||
|
||||
# Added by LM Studio CLI (lms)
|
||||
export PATH="$PATH:$HOME/.lmstudio/bin"
|
||||
|
||||
1
base/envrc
Normal file
1
base/envrc
Normal file
@@ -0,0 +1 @@
|
||||
use node
|
||||
@@ -20,10 +20,20 @@
|
||||
"value": "Ismo Vuorinen"
|
||||
}
|
||||
],
|
||||
"masf": [
|
||||
{
|
||||
"key": "user.email",
|
||||
"value": "ismo@masf.fi"
|
||||
},
|
||||
{
|
||||
"key": "user.name",
|
||||
"value": "Ismo Vuorinen"
|
||||
}
|
||||
],
|
||||
"work": [
|
||||
{
|
||||
"key": "user.email",
|
||||
"value": "ismo.vuorinen@vincit.fi"
|
||||
"value": "ismo.vuorinen@svea.com"
|
||||
},
|
||||
{
|
||||
"key": "user.name",
|
||||
@@ -31,4 +41,4 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/env bash
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
|
||||
6
base/ignore
Normal file
6
base/ignore
Normal file
@@ -0,0 +1,6 @@
|
||||
Applications/
|
||||
Library/
|
||||
Movies/
|
||||
Music/
|
||||
Pictures/
|
||||
Google Drive/
|
||||
1
base/nvmrc
Normal file
1
base/nvmrc
Normal file
@@ -0,0 +1 @@
|
||||
v22.14.0
|
||||
@@ -12,5 +12,3 @@
|
||||
~-.__| /_ - ~ ^| /- _ `..-' f: f:
|
||||
| / | / ~-. `-. _||_||_
|
||||
|_____| |_____| ~ - . _ _ _ _ _>
|
||||
|
||||
|
||||
|
||||
@@ -4,4 +4,3 @@
|
||||
# paths in source statements (since 0.8.0).
|
||||
external-sources=true
|
||||
includeAllWorkspaceSymbols=true
|
||||
|
||||
|
||||
18
base/zshenv
18
base/zshenv
@@ -1,18 +0,0 @@
|
||||
# shellcheck shell=bash
|
||||
# vim: filetype=zsh
|
||||
|
||||
export PATH="$HOME/.local/bin:$HOME/.dotfiles/local/bin:$HOME/.local/go/bin:$PATH"
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
# Explicitly set XDG folders
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
|
||||
# custom variables
|
||||
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
117
base/zshrc
Executable file → Normal file
117
base/zshrc
Executable file → Normal file
@@ -1,82 +1,65 @@
|
||||
# this is my zsh config. there are many like it, but this one is mine.
|
||||
# https://zsh.sourceforge.io/Intro/intro_3.html
|
||||
# shellcheck shell=bash
|
||||
|
||||
source "$DOTFILES/scripts/shared.sh"
|
||||
# export VERBOSE=1
|
||||
# export DEBUG=1
|
||||
autoload -U promptinit; promptinit
|
||||
|
||||
export COMPLETION_WAITING_DOTS=true
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
LOCAL_SHARE="$HOME/.local/share"
|
||||
export PATH="$HOME/.local/bin:$DOTFILES/local/bin:$LOCAL_SHARE/nvim/mason/bin:$LOCAL_SHARE/bob/nvim-bin:$LOCAL_SHARE/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
export SHARED_SCRIPTS_SOURCED=0
|
||||
|
||||
path_append "/opt/homebrew/bin"
|
||||
if type brew &> /dev/null; then
|
||||
eval "$(brew shellenv)"
|
||||
FPATH="$HOMEBREW_PREFIX/share/zsh/site-functions:${FPATH}"
|
||||
fi
|
||||
source "$DOTFILES/config/shared.sh"
|
||||
|
||||
path_append "/usr/local/bin"
|
||||
path_prepend "$XDG_DATA_HOME/cargo/bin"
|
||||
path_prepend "$XDG_BIN_HOME"
|
||||
path_prepend "$HOME/.local/go/bin"
|
||||
path_prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
# zsh completions directory
|
||||
[ -z "$ZSH_COMPLETIONS" ] && export ZSH_COMPLETIONS="$XDG_CONFIG_HOME/zsh/completion"
|
||||
|
||||
source "$DOTFILES/config/exports-shell"
|
||||
source "$DOTFILES/config/exports-apps"
|
||||
source "$DOTFILES/config/alias"
|
||||
source "$DOTFILES/config/functions"
|
||||
# Add zsh completions to FPATH, compinit will be called later
|
||||
FPATH="$ZSH_COMPLETIONS:$FPATH"
|
||||
|
||||
export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
||||
ZSH_COMPDUMP="$XDG_CACHE_HOME/zsh/zcompdump-${SHORT_HOST}-${ZSH_VERSION}"
|
||||
|
||||
# Add completion scripts to zsh path
|
||||
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
||||
source "$DOTFILES/config/zsh/antidote.zsh"
|
||||
|
||||
# Try to load antigen, if present
|
||||
ANTIGEN_ZSH_PATH="$XDG_BIN_HOME/antigen.zsh"
|
||||
# shellcheck source=../../.local/bin/antigen.zsh
|
||||
[[ -f "$ANTIGEN_ZSH_PATH" ]] && source "$ANTIGEN_ZSH_PATH"
|
||||
# Function to source FZF configuration
|
||||
source_fzf_config()
|
||||
{
|
||||
local fzf_config="${DOTFILES}/config/fzf/fzf.zsh"
|
||||
if [[ -f "$fzf_config" ]]; then
|
||||
# shellcheck source=config/fzf/fzf.zsh
|
||||
source "$fzf_config"
|
||||
fi
|
||||
}
|
||||
|
||||
# antigen is present
|
||||
antigen use oh-my-zsh
|
||||
# Function to set up tmux window name plugin if tmux is active
|
||||
setup_tmux_window_name_plugin()
|
||||
{
|
||||
if [[ -n "$TMUX" ]]; then
|
||||
local tmux_window_name_plugin="$TMUX_PLUGINS/tmux-window-name/scripts/rename_session_windows.py"
|
||||
if [[ -f "$tmux_window_name_plugin" ]]; then
|
||||
tmux_window_name()
|
||||
{
|
||||
($tmux_window_name_plugin &)
|
||||
}
|
||||
add-zsh-hook chpwd tmux_window_name
|
||||
tmux_window_name
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
export ZSH_TMUX_AUTOSTART=true
|
||||
export ZSH_TMUX_CONFIG="$DOTFILES/config/tmux/tmux.conf"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
source_fzf_config
|
||||
setup_tmux_window_name_plugin
|
||||
x-have antidot && eval "$(antidot init)"
|
||||
|
||||
export NVM_DIR="$XDG_CONFIG_HOME/nvm"
|
||||
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
|
||||
autoload -Uz compinit bashcompinit
|
||||
compinit -d $ZSH_COMPDUMP
|
||||
bashcompinit
|
||||
|
||||
# z, the zsh version
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
antigen bundle z
|
||||
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||
export P10K_CONFIG="$DOTFILES/config/zsh/p10k.zsh"
|
||||
[[ ! -f "$P10K_CONFIG" ]] || source "$P10K_CONFIG"
|
||||
|
||||
# these should be always available
|
||||
antigen bundle tmux
|
||||
antigen bundle colored-man-pages
|
||||
antigen bundle command-not-found
|
||||
antigen bundle ssh-agent
|
||||
antigen bundle jreese/zsh-titles
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
|
||||
# these should be available if there's need
|
||||
have brew && antigen bundle brew
|
||||
have php && antigen bundle php
|
||||
have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
|
||||
# nvm is a strange beast
|
||||
zstyle ':omz:plugins:nvm' autoload yes
|
||||
antigen bundle nvm
|
||||
# antigen bundle "$DOTFILES/config/zsh/plugins/nvm-auto-use"
|
||||
|
||||
# nice to have stuff
|
||||
antigen bundle gcloud
|
||||
|
||||
# this needs to be the last item
|
||||
antigen bundle zsh-users/zsh-syntax-highlighting
|
||||
antigen apply
|
||||
|
||||
# shellcheck source=../config/fzf/fzf.zsh
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.zsh" ] \
|
||||
&& source "${DOTFILES}/config/fzf/fzf.zsh"
|
||||
|
||||
# Start starship
|
||||
eval "$(starship init zsh)"
|
||||
# Added by LM Studio CLI (lms)
|
||||
export PATH="$PATH:$HOME/.lmstudio/bin"
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
--container-architecture linux/amd64
|
||||
-P ubuntu-latest=catthehacker/ubuntu:act-latest
|
||||
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
|
||||
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
|
||||
|
||||
251
config/aerospace/aerospace.toml
Normal file
251
config/aerospace/aerospace.toml
Normal file
@@ -0,0 +1,251 @@
|
||||
# Start AeroSpace at login
|
||||
start-at-login = false
|
||||
|
||||
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
|
||||
enable-normalization-flatten-containers = true
|
||||
enable-normalization-opposite-orientation-for-nested-containers = true
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
|
||||
# The 'accordion-padding' specifies the size of accordion padding
|
||||
# You can set 0 to disable the padding feature
|
||||
accordion-padding = 10
|
||||
|
||||
# Possible values: tiles|accordion
|
||||
default-root-container-layout = 'tiles'
|
||||
|
||||
# Possible values: horizontal|vertical|auto
|
||||
# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation,
|
||||
# tall monitor (anything higher than wide) gets vertical orientation
|
||||
default-root-container-orientation = 'auto'
|
||||
|
||||
# Mouse follows focus when focused monitor changes
|
||||
# Drop it from your config, if you don't like this behavior
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks
|
||||
# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse
|
||||
# Fallback value (if you omit the key): on-focused-monitor-changed = []
|
||||
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
||||
|
||||
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
|
||||
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
|
||||
# Also see: https://nikitabobko.github.io/AeroSpace/goodness#disable-hide-app
|
||||
automatically-unhide-macos-hidden-apps = true
|
||||
|
||||
# [[on-window-detected]]
|
||||
# if.app-id = 'com.apple.systempreferences'
|
||||
# if.app-name-regex-substring = 'settings'
|
||||
# if.window-title-regex-substring = 'substring'
|
||||
# if.workspace = 'workspace-name'
|
||||
# if.during-aerospace-startup = true
|
||||
# check-further-callbacks = true
|
||||
# run = ['layout floating', 'move-node-to-workspace S'] # The callback itself
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-name-regex-substring = 'settings' # All settings
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.systempreferences' # macOS System Preferences
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.1password.1password' # 1Password
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'org.ferdium.ferdium-app' # Ferdium, has WhatsApp etc.
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.jetbrains.PhpStorm' # PhpStorm
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.finder' # Finder
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.Preview' # Preview
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.mail' # Mail
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.DanPristupov.Fork' # Fork
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.flexibits.fantastical2.mac' # Fantastical
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'org.whispersystems.signal-desktop' # Signal
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.tidal.desktop' # TIDAL
|
||||
run = ['layout floating', 'move-node-to-workspace 2'] # Float and move to workspace 2
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.TV' # Apple TV app
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.setapp.DesktopClient' # Setapp
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.electron.dockerdesktop' # Docker Desktop
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.tinyspeck.slackmacgap' # Slack
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'md.obsidia' # Obsidian
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.todoist.mac.Todoist' # Todoist
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.apple.backup.launcher' # TimeMachine
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.philipyoungg.session-setapp' # Session app (Setapp)
|
||||
run = ['layout floating']
|
||||
|
||||
[[on-window-detected]]
|
||||
if.app-id = 'com.microsoft.rdc.macos' # Remote Desktop
|
||||
run = ['layout floating']
|
||||
|
||||
# Possible values: (qwerty|dvorak)
|
||||
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
|
||||
[key-mapping]
|
||||
preset = 'qwerty'
|
||||
|
||||
# Gaps between windows (inner-*) and between monitor edges (outer-*).
|
||||
# Possible values:
|
||||
# - Constant: gaps.outer.top = 8
|
||||
# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24]
|
||||
# In this example, 24 is a default value when there is no match.
|
||||
# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'.
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors
|
||||
[gaps]
|
||||
inner.horizontal = 5
|
||||
inner.vertical = 5
|
||||
outer.top = [{ monitor.'^built-in retina display$' = 0 }, 0]
|
||||
outer.right = 0
|
||||
outer.bottom = 0
|
||||
outer.left = 0
|
||||
|
||||
# 'main' binding mode declaration
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
# 'main' binding mode must be always presented
|
||||
# Fallback value (if you omit the key): mode.main.binding = {}
|
||||
[mode.main.binding]
|
||||
|
||||
cmd-h = [] # Disable "hide application"
|
||||
cmd-alt-h = [] # Disable "hide others"
|
||||
|
||||
# All possible keys:
|
||||
# - Letters. a, b, c, ..., z
|
||||
# - Numbers. 0, 1, 2, ..., 9
|
||||
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
|
||||
# - F-keys. f1, f2, ..., f20
|
||||
# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
|
||||
# leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
|
||||
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
|
||||
# keypadMinus, keypadMultiply, keypadPlus
|
||||
# - Arrows. left, down, up, right
|
||||
|
||||
# All possible modifiers: cmd, alt, ctrl, shift
|
||||
|
||||
# All possible commands: https://nikitabobko.github.io/AeroSpace/commands
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget
|
||||
# You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3)
|
||||
# alt-enter = '''exec-and-forget osascript -e '
|
||||
# tell application "Terminal"
|
||||
# do script
|
||||
# activate
|
||||
# end tell'
|
||||
# '''
|
||||
|
||||
# alt-cmd-shift-f = 'fullscreen'
|
||||
# alt-shift-f = 'layout floating'
|
||||
# alt-shift-tab = 'move-workspace-to-monitor --wrap-around next'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
|
||||
alt-h = 'focus left'
|
||||
alt-j = 'focus down'
|
||||
alt-k = 'focus up'
|
||||
alt-l = 'focus right'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
|
||||
alt-shift-1 = 'workspace 1' # Main
|
||||
alt-shift-2 = 'workspace 2' # Media
|
||||
ctrl-shift-1 = 'move-node-to-workspace 1' # Move node to Main
|
||||
ctrl-shift-2 = 'move-node-to-workspace 2' # Move node to Media
|
||||
|
||||
alt-shift-tab = 'workspace-back-and-forth' # Switch between workspaces
|
||||
ctrl-shift-tab = 'move-workspace-to-monitor --wrap-around prev'
|
||||
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
|
||||
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
|
||||
alt-a = 'mode apps'
|
||||
alt-s = 'mode service'
|
||||
alt-m = 'mode move'
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-m │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.move.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
|
||||
1 = ['move-node-to-workspace 1 --focus-follows-window']
|
||||
2 = ['move-node-to-workspace 2 --focus-follows-window']
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#move
|
||||
h = 'move left'
|
||||
j = 'move down'
|
||||
k = 'move up'
|
||||
l = 'move right'
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#join-with
|
||||
shift-h = 'join-with left'
|
||||
shift-j = 'join-with down'
|
||||
shift-k = 'join-with up'
|
||||
shift-l = 'join-with right'
|
||||
# https://nikitabobko.github.io/AeroSpace/commands#resize
|
||||
ctrl-h = 'resize smart -70'
|
||||
ctrl-l = 'resize smart +70'
|
||||
shift-left = 'resize smart +70'
|
||||
shift-right = 'resize smart -70'
|
||||
# https://nikitabobko.github.io/AeroSpace/commands#flatten-workspace-tree
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-a │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.apps.binding]
|
||||
esc = ['reload-config', 'mode main']
|
||||
b = ['exec-and-forget open -a /Applications/Brave Browser.app', 'mode main'] # Browser
|
||||
c = ['exec-and-forget open -a /Applications/Ferdium.app', 'mode main'] # Chat
|
||||
g = ['exec-and-forget open -a /Applications/Ghostty.app', 'mode main'] # Ghostty
|
||||
o = ['exec-and-forget open -a /Applications/Obsidian.app', 'mode main'] # Obsidian
|
||||
s = ['exec-and-forget open -a /Applications/Slack.app', 'mode main'] # Slack
|
||||
t = ['exec-and-forget open -a /Applications/TIDAL.app', 'mode main'] # Tidal
|
||||
w = ['exec-and-forget open -a /Applications/WezTerm.app', 'mode main'] # WezTerm
|
||||
|
||||
# ╭──────────────────────────────────────────────────────────╮
|
||||
# │ alt-s │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
[mode.service.binding]
|
||||
esc = ['reload-config', 'mode main'] # reload config
|
||||
r = ['flatten-workspace-tree', 'mode main'] # reset layout
|
||||
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
|
||||
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
|
||||
backspace = ['close-all-windows-but-current', 'mode main']
|
||||
52
config/alacritty/alacritty.toml
Normal file
52
config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,52 @@
|
||||
import = [
|
||||
# Default to night if the copied one doesn't exist.
|
||||
"~/.dotfiles/config/alacritty/theme-night.toml",
|
||||
"~/.config/alacritty/theme-active.toml"
|
||||
]
|
||||
|
||||
[env]
|
||||
TERM = "xterm-256color"
|
||||
|
||||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
|
||||
[font]
|
||||
size = 14.0
|
||||
|
||||
[font.glyph_offset]
|
||||
x = 0
|
||||
y = 0
|
||||
|
||||
[font.normal]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "ExtraLight"
|
||||
|
||||
[font.italic]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "Italic"
|
||||
|
||||
[font.bold]
|
||||
family = "JetBrainsMonoNL Nerd Font Mono"
|
||||
style = "Bold"
|
||||
|
||||
[font.offset]
|
||||
x = 0
|
||||
y = 0
|
||||
|
||||
[selection]
|
||||
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
|
||||
save_to_clipboard = true
|
||||
|
||||
[window]
|
||||
decorations = "Full"
|
||||
dynamic_title = true
|
||||
opacity = 0.98
|
||||
blur = true
|
||||
|
||||
[window.dimensions]
|
||||
columns = 200
|
||||
lines = 75
|
||||
|
||||
[window.padding]
|
||||
x = 5
|
||||
y = 5
|
||||
@@ -1,206 +0,0 @@
|
||||
---
|
||||
# Configuration for Alacritty, the GPU enhanced terminal emulator
|
||||
|
||||
# Any items in the `env` entry below will be added as
|
||||
# environment variables. Some entries may override variables
|
||||
# set by alacritty it self.
|
||||
env:
|
||||
# TERM env customization.
|
||||
#
|
||||
# If this property is not set, alacritty will set it to xterm-256color.
|
||||
#
|
||||
# Note that some xterm terminfo databases don't declare support for italics.
|
||||
# You can verify this by checking for the presence of `smso` and `sitm` in
|
||||
# `infocmp xterm-256color`.
|
||||
TERM: xterm-256color
|
||||
|
||||
# Window dimensions in character columns and lines
|
||||
# (changes require restart)
|
||||
window:
|
||||
dynamic_title: true
|
||||
dimensions:
|
||||
columns: 130
|
||||
lines: 40
|
||||
|
||||
# Adds this many blank pixels of padding around the window
|
||||
# Units are physical pixels; this is not DPI aware.
|
||||
# (change requires restart)
|
||||
padding:
|
||||
x: 5
|
||||
y: 5
|
||||
|
||||
decorations: buttonless
|
||||
|
||||
opacity: 0.97
|
||||
|
||||
# When true, bold text is drawn using the bright variant of colors.
|
||||
draw_bold_text_with_bright_colors: true
|
||||
|
||||
# Font configuration (changes require restart)
|
||||
font:
|
||||
# The normal (roman) font face to use.
|
||||
normal:
|
||||
family: JetBrainsMonoNL Nerd Font Mono
|
||||
# Style can be specified to pick a specific face.
|
||||
style: ExtraLight
|
||||
|
||||
# The bold font face
|
||||
bold:
|
||||
family: JetBrainsMonoNL Nerd Font Mono
|
||||
# Style can be specified to pick a specific face.
|
||||
style: Bold
|
||||
|
||||
# The italic font face
|
||||
italic:
|
||||
family: JetBrainsMonoNL Nerd Font Mono
|
||||
# Style can be specified to pick a specific face.
|
||||
style: Italic
|
||||
|
||||
# Point size of the font
|
||||
size: 14.0
|
||||
|
||||
# Offset is the extra space around each character. offset.y can be thought of
|
||||
# as modifying the linespacing, and offset.x as modifying the letter spacing.
|
||||
offset:
|
||||
x: 0
|
||||
y: 0
|
||||
|
||||
# Glyph offset determines the locations of the glyphs within their cells with
|
||||
# the default being at the bottom. Increase the x offset to move the glyph to
|
||||
# the right, increase the y offset to move the glyph upward.
|
||||
glyph_offset:
|
||||
x: 0
|
||||
y: 0
|
||||
|
||||
# Should display the render timer
|
||||
debug.render_timer: false
|
||||
|
||||
# TokyoNight Alacritty Colors (storm)
|
||||
colors:
|
||||
# Default colors
|
||||
primary:
|
||||
background: '0x24283b'
|
||||
foreground: '0xc0caf5'
|
||||
|
||||
# Normal colors
|
||||
normal:
|
||||
black: '0x1d202f'
|
||||
red: '0xf7768e'
|
||||
green: '0x9ece6a'
|
||||
yellow: '0xe0af68'
|
||||
blue: '0x7aa2f7'
|
||||
magenta: '0xbb9af7'
|
||||
cyan: '0x7dcfff'
|
||||
white: '0xa9b1d6'
|
||||
|
||||
# Bright colors
|
||||
bright:
|
||||
black: '0x414868'
|
||||
red: '0xf7768e'
|
||||
green: '0x9ece6a'
|
||||
yellow: '0xe0af68'
|
||||
blue: '0x7aa2f7'
|
||||
magenta: '0xbb9af7'
|
||||
cyan: '0x7dcfff'
|
||||
white: '0xc0caf5'
|
||||
|
||||
indexed_colors:
|
||||
- { index: 16, color: '0xff9e64' }
|
||||
- { index: 17, color: '0xdb4b4b' }
|
||||
|
||||
key_bindings:
|
||||
- { key: V, mods: Command, action: Paste }
|
||||
- { key: C, mods: Command, action: Copy }
|
||||
- { key: Q, mods: Command, action: Quit }
|
||||
- { key: W, mods: Command, action: Quit }
|
||||
- { key: N, mods: Command, action: SpawnNewInstance }
|
||||
- { key: Home, chars: "\eOH", mode: AppCursor }
|
||||
- { key: Home, chars: "\e[1~", mode: ~AppCursor }
|
||||
- { key: End, chars: "\eOF", mode: AppCursor }
|
||||
- { key: End, chars: "\e[4~", mode: ~AppCursor }
|
||||
- { key: PageUp, mods: Shift, chars: "\e[5;2~" }
|
||||
- { key: PageUp, mods: Control, chars: "\e[5;5~" }
|
||||
- { key: PageUp, chars: "\e[5~" }
|
||||
- { key: PageDown, mods: Shift, chars: "\e[6;2~" }
|
||||
- { key: PageDown, mods: Control, chars: "\e[6;5~" }
|
||||
- { key: PageDown, chars: "\e[6~" }
|
||||
- { key: Left, mods: Shift, chars: "\e[1;2D" }
|
||||
- { key: Left, mods: Control, chars: "\e[1;5D" }
|
||||
- { key: Left, mods: Alt, chars: "\e[1;3D" }
|
||||
- { key: Left, chars: "\e[D", mode: ~AppCursor }
|
||||
- { key: Left, chars: "\eOD", mode: AppCursor }
|
||||
- { key: Right, mods: Shift, chars: "\e[1;2C" }
|
||||
- { key: Right, mods: Control, chars: "\e[1;5C" }
|
||||
- { key: Right, mods: Alt, chars: "\e[1;3C" }
|
||||
- { key: Right, chars: "\e[C", mode: ~AppCursor }
|
||||
- { key: Right, chars: "\eOC", mode: AppCursor }
|
||||
- { key: Up, mods: Shift, chars: "\e[1;2A" }
|
||||
- { key: Up, mods: Control, chars: "\e[1;5A" }
|
||||
- { key: Up, mods: Alt, chars: "\e[1;3A" }
|
||||
- { key: Up, chars: "\e[A", mode: ~AppCursor }
|
||||
- { key: Up, chars: "\eOA", mode: AppCursor }
|
||||
- { key: Down, mods: Shift, chars: "\e[1;2B" }
|
||||
- { key: Down, mods: Control, chars: "\e[1;5B" }
|
||||
- { key: Down, mods: Alt, chars: "\e[1;3B" }
|
||||
- { key: Down, chars: "\e[B", mode: ~AppCursor }
|
||||
- { key: Down, chars: "\eOB", mode: AppCursor }
|
||||
- { key: Tab, mods: Shift, chars: "\e[Z" }
|
||||
- { key: F1, chars: "\eOP" }
|
||||
- { key: F2, chars: "\eOQ" }
|
||||
- { key: F3, chars: "\eOR" }
|
||||
- { key: F4, chars: "\eOS" }
|
||||
- { key: F5, chars: "\e[15~" }
|
||||
- { key: F6, chars: "\e[17~" }
|
||||
- { key: F7, chars: "\e[18~" }
|
||||
- { key: F8, chars: "\e[19~" }
|
||||
- { key: F9, chars: "\e[20~" }
|
||||
- { key: F10, chars: "\e[21~" }
|
||||
- { key: F11, chars: "\e[23~" }
|
||||
- { key: F12, chars: "\e[24~" }
|
||||
- { key: Back, chars: '' }
|
||||
- { key: Back, mods: Alt, chars: "\e" }
|
||||
- { key: Insert, chars: "\e[2~" }
|
||||
- { key: Delete, chars: "\e[3~" }
|
||||
|
||||
# shortcuts for tmux. the leader key is control-b (0x02)
|
||||
- { key: W, mods: Command, chars: "\x02&" } # close tab (kill)
|
||||
- { key: T, mods: Command, chars: "\x02c" } # new tab
|
||||
- { key: RBracket, mods: Command|Shift, chars: "\x02n" } # select next tab
|
||||
- { key: LBracket, mods: Command|Shift, chars: "\x02p" } # select previous tab
|
||||
- { key: RBracket, mods: Command, chars: "\x02o" } # select next pane
|
||||
- { key: LBracket, mods: Command, chars: "\x02;" } # select last (previously used) pane
|
||||
- { key: F, mods: Command, chars: "\x02/" } # search (upwards) (see tmux.conf)
|
||||
|
||||
# Mouse bindings
|
||||
#
|
||||
# Currently doesn't support modifiers. Both the `mouse` and `action` fields must
|
||||
# be specified.
|
||||
#
|
||||
# Values for `mouse`:
|
||||
# - Middle
|
||||
# - Left
|
||||
# - Right
|
||||
# - Numeric identifier such as `5`
|
||||
#
|
||||
# Values for `action`:
|
||||
# - Paste
|
||||
# - PasteSelection
|
||||
# - Copy (TODO)
|
||||
mouse_bindings:
|
||||
- { mouse: Middle, action: PasteSelection }
|
||||
|
||||
mouse:
|
||||
double_click: { threshold: 300 }
|
||||
triple_click: { threshold: 300 }
|
||||
|
||||
selection:
|
||||
semantic_escape_chars: ',│`|:"'' ()[]{}<>'
|
||||
# Shell
|
||||
#
|
||||
# You can set shell.program to the path of your favorite shell, e.g. /bin/fish.
|
||||
# Entries in shell.args are passed unmodified as arguments to the shell.
|
||||
#
|
||||
#shell:
|
||||
# program: /bin/bash
|
||||
# args:
|
||||
# - --login
|
||||
40
config/alacritty/theme-day.toml
Normal file
40
config/alacritty/theme-day.toml
Normal file
@@ -0,0 +1,40 @@
|
||||
# TokyoNight Alacritty Colors: Day
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
background = '#e1e2e7'
|
||||
foreground = '#3760bf'
|
||||
|
||||
#[colors.cursor]
|
||||
#cursor = '#3760bf'
|
||||
#text = '#e1e2e7'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#e9e9ed'
|
||||
red = '#f52a65'
|
||||
green = '#587539'
|
||||
yellow = '#8c6c3e'
|
||||
blue = '#2e7de9'
|
||||
magenta = '#9854f1'
|
||||
cyan = '#007197'
|
||||
white = '#6172b0'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#a1a6c5'
|
||||
red = '#f52a65'
|
||||
green = '#587539'
|
||||
yellow = '#8c6c3e'
|
||||
blue = '#2e7de9'
|
||||
magenta = '#9854f1'
|
||||
cyan = '#007197'
|
||||
white = '#3760bf'
|
||||
|
||||
# Indexed Colors
|
||||
[[colors.indexed_colors]]
|
||||
index = 16
|
||||
color = '#b15c00'
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 17
|
||||
color = '#c64343'
|
||||
40
config/alacritty/theme-night.toml
Normal file
40
config/alacritty/theme-night.toml
Normal file
@@ -0,0 +1,40 @@
|
||||
# TokyoNight Alacritty Colors: Storm
|
||||
# Default colors
|
||||
[colors.primary]
|
||||
background = '#24283b'
|
||||
foreground = '#c0caf5'
|
||||
|
||||
#[colors.cursor]
|
||||
#cursor = '#c0caf5'
|
||||
#text = '#24283b'
|
||||
|
||||
# Normal colors
|
||||
[colors.normal]
|
||||
black = '#1d202f'
|
||||
red = '#f7768e'
|
||||
green = '#9ece6a'
|
||||
yellow = '#e0af68'
|
||||
blue = '#7aa2f7'
|
||||
magenta = '#bb9af7'
|
||||
cyan = '#7dcfff'
|
||||
white = '#a9b1d6'
|
||||
|
||||
# Bright colors
|
||||
[colors.bright]
|
||||
black = '#414868'
|
||||
red = '#f7768e'
|
||||
green = '#9ece6a'
|
||||
yellow = '#e0af68'
|
||||
blue = '#7aa2f7'
|
||||
magenta = '#bb9af7'
|
||||
cyan = '#7dcfff'
|
||||
white = '#c0caf5'
|
||||
|
||||
# Indexed Colors
|
||||
[[colors.indexed_colors]]
|
||||
index = 16
|
||||
color = '#ff9e64'
|
||||
|
||||
[[colors.indexed_colors]]
|
||||
index = 17
|
||||
color = '#db4b4b'
|
||||
224
config/alias
224
config/alias
@@ -1,78 +1,40 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck source="../scripts/shared.sh"
|
||||
# shellcheck disable=1091,2139
|
||||
DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
# Get installed php versions from brew and setup aliases
|
||||
function x-set-php-aliases
|
||||
{
|
||||
have brew && {
|
||||
local php_versions=()
|
||||
while IFS="" read -r line; do php_versions+=("$line"); done < <(brew_installed | grep '^php')
|
||||
|
||||
php_error_reporting='-d error_reporting=22527'
|
||||
|
||||
for version in "${php_versions[@]}"; do
|
||||
# drop the dot from version (8.0 -> 80)
|
||||
local php_abbr="${version//\./}"
|
||||
# replace "php@" with "p" so "php@80" becomes "p80"
|
||||
local php_alias="${php_abbr//php@/p}"
|
||||
|
||||
# Fetch the exec path once
|
||||
php_exec="$(brew --prefix "$version")/bin/php"
|
||||
|
||||
# Raw PHP without error_reporting flag.
|
||||
# shellcheck disable=SC2139
|
||||
alias "${php_alias}"r="$php_exec"
|
||||
# PHP with error_reporting flag.
|
||||
# shellcheck disable=SC2139,SC2140
|
||||
alias "$php_alias"="$php_exec $php_error_reporting"
|
||||
# Local PHP Server.
|
||||
# shellcheck disable=SC2139,SC2140
|
||||
alias "${php_alias}s"="$php_exec -S localhost:9000"
|
||||
# Use composer with specific PHP and error_reporting flag on.
|
||||
# shellcheck disable=SC2139,SC2140
|
||||
alias "${php_alias}c"="$php_exec $php_error_reporting $(which composer)"
|
||||
done
|
||||
}
|
||||
}
|
||||
|
||||
if [[ $(uname) == 'Darwin' ]]; then
|
||||
|
||||
x-set-php-aliases
|
||||
|
||||
# Laravel Sail shortcut
|
||||
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
||||
|
||||
# Flush Directory Service cache
|
||||
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
||||
|
||||
# Lock the screen
|
||||
alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"
|
||||
|
||||
# Empty the Trash on all mounted volumes and the main HDD
|
||||
# Also, clear Apple’s System Logs to improve shell startup speed
|
||||
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
|
||||
fi
|
||||
|
||||
# Be nice
|
||||
alias please="sudo "
|
||||
|
||||
# Color the grep output
|
||||
alias grep='grep --color'
|
||||
alias grep="grep --color"
|
||||
|
||||
! have eza && alias ls='ls --color=auto'
|
||||
have eza && {
|
||||
alias ls='eza -h -s=type --git --icons --group-directories-first'
|
||||
x-have eza && {
|
||||
alias ls="eza -h -s=type --git --icons --group-directories-first"
|
||||
}
|
||||
|
||||
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
|
||||
|
||||
# Easier navigation: .., ..., ....
|
||||
alias ..="cd .."
|
||||
alias ...="cd ../.."
|
||||
alias ....="cd ../../.."
|
||||
|
||||
# Get git repository root path
|
||||
get_git_root()
|
||||
{
|
||||
# check that we are in a git repository
|
||||
if git rev-parse --is-inside-work-tree &> /dev/null; then
|
||||
git rev-parse --show-toplevel
|
||||
else
|
||||
>&2 msgr err "Not in a git repository"
|
||||
fi
|
||||
}
|
||||
|
||||
# cd to git root directory
|
||||
alias cdgr='cd "$(git root)"'
|
||||
alias cdgr='cd "$(get_git_root)"'
|
||||
|
||||
# interesting folders, and shortcuts
|
||||
alias .='cd $HOME'
|
||||
alias .b='cd $XDG_BIN_HOME'
|
||||
alias .c='cd $HOME/Code'
|
||||
alias .d='cd $DOTFILES'
|
||||
alias .l='cd $HOME/.local'
|
||||
alias .o='cd $HOME/Code/ivuorinen/obsidian/'
|
||||
|
||||
# Shortcuts for listing
|
||||
alias ll="ls -la"
|
||||
@@ -82,13 +44,10 @@ alias l="ls -a"
|
||||
alias cd..="cd .."
|
||||
alias sl="ls"
|
||||
|
||||
# List only directories
|
||||
alias lsd="ls -lF | grep '^d'"
|
||||
|
||||
# IP addresses
|
||||
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
||||
alias x-ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
||||
alias localip="ipconfig getifaddr en1"
|
||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //'"
|
||||
alias ips="ifconfig -a | grep -o 'inet6\? \(\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\)\|[a-fA-F0-9:]\+\)' | sed -e 's/inet6* //' | sort"
|
||||
|
||||
# Show/hide hidden files in Finder
|
||||
alias show="defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder"
|
||||
@@ -103,13 +62,17 @@ alias flush="dscacheutil -flushcache"
|
||||
# Update locatedb
|
||||
alias updatedb="sudo /usr/libexec/locate.updatedb"
|
||||
|
||||
# Always return full history
|
||||
alias history="history 1"
|
||||
# Date helpers
|
||||
alias isodate="date +'%Y-%m-%d'"
|
||||
alias x-datetime="date +'%Y-%m-%d %H:%M:%S'"
|
||||
alias x-timestamp="date +'%s'"
|
||||
|
||||
# tmux: automatically attach or create session with name 'main'
|
||||
alias tmux='tmux new-session -A -s main'
|
||||
# tmux: attach or create new session
|
||||
alias ta='tmux attach || tmux'
|
||||
# nvim aliases
|
||||
alias vi='nvim'
|
||||
alias vim='nvim'
|
||||
|
||||
# xdg-ninja aliases for better experience
|
||||
alias xdg='xdg-ninja --skip-ok --skip-unsupported'
|
||||
|
||||
# watch with: differences, precise, beep and color
|
||||
alias watchx='watch -dpbc'
|
||||
@@ -119,8 +82,6 @@ alias zapds='find . -name ".DS_Store" -print -delete'
|
||||
alias zappyc="find . -type f -name '*.pyc' -ls -delete"
|
||||
# Run all zaps
|
||||
alias zapall="zapds && zappyc"
|
||||
# tail with follow flag on
|
||||
alias t='tail -f'
|
||||
# directory usage, return only the total
|
||||
alias dn='du -chd1'
|
||||
# Mirror site with wget
|
||||
@@ -128,6 +89,7 @@ alias mirror_site='wget -m -k -K -E -e robots=off'
|
||||
# Mirror stdout to stderr, useful for seeing data going through a pipe
|
||||
alias peek='tee >(cat 1>&2)'
|
||||
|
||||
# Runs Gitlab code quality scanner
|
||||
alias code_scanner='docker run
|
||||
--env SOURCE_CODE="$PWD"
|
||||
--volume "${PWD}":/code
|
||||
@@ -135,80 +97,46 @@ alias code_scanner='docker run
|
||||
registry.gitlab.com/gitlab-org/ci-cd/codequality:"${CODEQUALITY_VERSION:-latest}"
|
||||
/code'
|
||||
|
||||
# Runs trivy container image scanner
|
||||
alias trivy_scan='docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy'
|
||||
# Opens dotfiles with $EDITOR
|
||||
alias zedit='$EDITOR ~/.dotfiles'
|
||||
# Open irssi with my configurations
|
||||
alias irssi='irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi'
|
||||
# Configures wget to use correct wget-hsts file
|
||||
alias wget='wget --hsts-file=$XDG_DATA_HOME/wget-hsts'
|
||||
# Configures svn to use correct config directory
|
||||
alias svn='svn --config-dir $XDG_CONFIG_HOME/subversion'
|
||||
|
||||
alias irssi="irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_CONFIG_HOME/irssi"
|
||||
# Laravel artisan shortcut
|
||||
alias art='[ -f artisan ] && php artisan || php vendor/bin/artisan'
|
||||
|
||||
if [[ -f "$HOME/.aliases.local" ]]; then
|
||||
# shellcheck disable=SC1091
|
||||
source "$HOME/.aliases.local"
|
||||
# Laravel Sail shortcut
|
||||
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
|
||||
|
||||
if [[ $(uname) == 'Darwin' ]]; then
|
||||
|
||||
# Flush Directory Service cache
|
||||
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
||||
|
||||
# Lock the screen
|
||||
alias afk="osascript -e 'tell application \"System Events\" to keystroke \"q\" using {command down,control down}'"
|
||||
|
||||
# Empty the Trash on all mounted volumes and the main HDD
|
||||
# Also, clear Apple's System Logs to improve shell startup speed
|
||||
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
|
||||
|
||||
# Using herd for php now, so this is not needed anymore
|
||||
# x-set-php-aliases
|
||||
fi
|
||||
|
||||
alias wget=wget --hsts-file="$XDG_DATA_HOME/wget-hsts"
|
||||
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
|
||||
|
||||
# Alacritty preexec hook to update dynamic title
|
||||
preexec()
|
||||
{
|
||||
print -Pn "\e]0;$1%~\a"
|
||||
}
|
||||
|
||||
# Update dotfiles
|
||||
dfu()
|
||||
{
|
||||
(
|
||||
cd "$DOTFILES" && git pull --ff-only && ./install -q
|
||||
)
|
||||
}
|
||||
|
||||
# Weather in Tampere, or other city
|
||||
weather()
|
||||
{
|
||||
# https://github.com/chubin/wttr.in#usage
|
||||
local city="${1:-Tampere}"
|
||||
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
|
||||
}
|
||||
|
||||
# Docker
|
||||
ssh-docker()
|
||||
{
|
||||
docker exec -it "$@" bash
|
||||
}
|
||||
|
||||
# All the dig info
|
||||
digga()
|
||||
{
|
||||
dig +nocmd "$1" any +multiline +noall +answer
|
||||
}
|
||||
|
||||
# Rector project to php version 8.2 by default.
|
||||
rector()
|
||||
{
|
||||
local php="${1:-82}"
|
||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||
"/project/$1" \
|
||||
--set "php${php}" \
|
||||
--autoload-file /project/vendor/autoload.php
|
||||
}
|
||||
|
||||
# Commit everything
|
||||
commit()
|
||||
{
|
||||
commitMessage="$*"
|
||||
|
||||
if [ "$commitMessage" = "" ]; then
|
||||
commitMessage="Automated commit"
|
||||
fi
|
||||
|
||||
git add .
|
||||
eval "git commit -a -m '${commitMessage}'"
|
||||
}
|
||||
|
||||
scheduler()
|
||||
{
|
||||
while :; do
|
||||
php artisan schedule:run
|
||||
echo "Sleeping 60 seconds..."
|
||||
sleep 60
|
||||
done
|
||||
}
|
||||
X_ALIAS_FILES=(
|
||||
"$HOME/.config/alias-secret"
|
||||
"$HOME/.config/alias-$(hostname)"
|
||||
"$HOME/.config/alias-$(hostname)-secret"
|
||||
)
|
||||
for aliasFile in "${X_ALIAS_FILES[@]}"; do
|
||||
# shellcheck source=$HOME/.config/alias-secret
|
||||
[ -f "$aliasFile" ] && source "$aliasFile" && msgr ok "Sourced $aliasFile"
|
||||
done
|
||||
unset X_ALIAS_FILES
|
||||
|
||||
364
config/amethyst/amethyst.yml
Normal file
364
config/amethyst/amethyst.yml
Normal file
@@ -0,0 +1,364 @@
|
||||
---
|
||||
# Default settings for amethyst
|
||||
# Repo: `https://github.com/ianyh/Amethyst`
|
||||
#
|
||||
# Note due to issue 1419 (https://github.com/ianyh/Amethyst/issues/1419) some
|
||||
# config values may conflict and not work if they are the same as the default
|
||||
# values for amathyst. You can see these values on GitHub at
|
||||
# https://github.com/ianyh/Amethyst/blob/development/Amethyst/default.amethyst
|
||||
# If you're experiencing conflicts and the settings are the same as the default,
|
||||
# comment out the commands in this file.
|
||||
#
|
||||
# Move this file to: `~/.amethyst.yml`
|
||||
# In order to register changes restart Amethyst.
|
||||
# If you experience issues pulling in the changes you can also
|
||||
# quit Amethyst and run: `defaults delete com.amethyst.Amethyst.plist`
|
||||
# This removes the current preferences and causes Amethyst to restart
|
||||
# with default preferences and pull configs from this file.
|
||||
|
||||
# layouts - Ordered list of layouts to use by layout key
|
||||
# (default tall, wide, fullscreen, and column).
|
||||
layouts:
|
||||
- bsp
|
||||
- tall
|
||||
# - fullscreen
|
||||
# - tall-right
|
||||
# - wide
|
||||
# - two-pane
|
||||
# - middle-wide
|
||||
- 3column-left
|
||||
# - 3column-middle
|
||||
# - 3column-right
|
||||
# - 4column-left
|
||||
# - 4column-right
|
||||
# - column
|
||||
# - row
|
||||
# - floating
|
||||
- widescreen-tall
|
||||
# - widescreen-tall-right
|
||||
# - bsp
|
||||
|
||||
# First mod (default option + shift).
|
||||
mod1:
|
||||
- option
|
||||
- shift
|
||||
# - control
|
||||
# - command
|
||||
|
||||
# Second mod (default option + shift + control).
|
||||
mod2:
|
||||
- option
|
||||
- shift
|
||||
- control
|
||||
# - command
|
||||
|
||||
# Commands:
|
||||
# special key values
|
||||
# space
|
||||
# enter
|
||||
# up
|
||||
# right
|
||||
# down
|
||||
# left
|
||||
|
||||
# special characters require quotes
|
||||
# '.'
|
||||
# ','
|
||||
|
||||
# Move to the next layout in the list.
|
||||
cycle-layout:
|
||||
mod: mod1
|
||||
key: space
|
||||
|
||||
# Move to the previous layout in the list.
|
||||
cycle-layout-backward:
|
||||
mod: mod2
|
||||
key: space
|
||||
|
||||
# Shrink the main pane by a percentage of the screen
|
||||
# dimension as defined by window-resize-step.
|
||||
# Note that not all layouts respond to this command.
|
||||
shrink-main:
|
||||
mod: mod1
|
||||
key: h
|
||||
|
||||
# Expand the main pane by a percentage of the screen dimension
|
||||
# as defined by window-resize-step. Note that not all layouts
|
||||
# respond to this command.
|
||||
expand-main:
|
||||
mod: mod1
|
||||
key: l
|
||||
|
||||
# Increase the number of windows in the main pane.
|
||||
# Note that not all layouts respond to this command.
|
||||
increase-main:
|
||||
mod: mod1
|
||||
key: ','
|
||||
|
||||
# Decrease the number of windows in the main pane.
|
||||
# Note that not all layouts respond to this command.
|
||||
decrease-main:
|
||||
mod: mod1
|
||||
key: '.'
|
||||
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command1:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command2:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command3:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
# General purpose command for custom layouts.
|
||||
# Functionality is layout-dependent.
|
||||
# command4:
|
||||
# mod: <NONE>
|
||||
# key: <NONE>
|
||||
|
||||
# Focus the next window in the list going counter-clockwise.
|
||||
focus-ccw:
|
||||
mod: mod1
|
||||
key: j
|
||||
|
||||
# Focus the next window in the list going clockwise.
|
||||
focus-cw:
|
||||
mod: mod1
|
||||
key: k
|
||||
|
||||
# Focus the main window in the list.
|
||||
focus-main:
|
||||
mod: mod1
|
||||
key: m
|
||||
|
||||
# Focus the next screen in the list going counter-clockwise.
|
||||
focus-screen-ccw:
|
||||
mod: mod1
|
||||
key: p
|
||||
|
||||
# Focus the next screen in the list going clockwise.
|
||||
focus-screen-cw:
|
||||
mod: mod1
|
||||
key: n
|
||||
|
||||
# Move the currently focused window onto the next
|
||||
# screen in the list going counter-clockwise.
|
||||
swap-screen-ccw:
|
||||
mod: mod2
|
||||
key: h
|
||||
|
||||
# Move the currently focused window onto the next
|
||||
# screen in the list going clockwise.
|
||||
swap-screen-cw:
|
||||
mod: mod2
|
||||
key: l
|
||||
|
||||
# Swap the position of the currently focused window with
|
||||
# the next window in the list going counter-clockwise.
|
||||
swap-ccw:
|
||||
mod: mod2
|
||||
key: j
|
||||
|
||||
# Swap the position of the currently focused window with
|
||||
# the next window in the list going clockwise.
|
||||
swap-cw:
|
||||
mod: mod2
|
||||
key: k
|
||||
|
||||
# Swap the position of the currently focused window
|
||||
# with the main window in the list.
|
||||
swap-main:
|
||||
mod: mod1
|
||||
key: enter
|
||||
|
||||
# Move focus to the n-th screen in the list; e.g.,
|
||||
# focus-screen-3 will move mouse focus to the 3rd screen.
|
||||
# Note that the main window in the given screen will be focused.
|
||||
# focus-screen-n:
|
||||
# focus-screen-<screen-number>:
|
||||
# mod: mod1
|
||||
# key: y
|
||||
# Move the currently focused window to the n-th screen;
|
||||
# e.g., throw-screen-3 will move the window to the 3rd screen.
|
||||
# throw-screen-n:
|
||||
# throw-screen-<screen-number>:
|
||||
# mod: mod1
|
||||
# key: u
|
||||
# Move the currently focused window to the n-th space;
|
||||
# e.g., throw-space-3 will move the window to the 3rd space.
|
||||
# throw-space-<screen-number>:
|
||||
# mod: mod1
|
||||
# key: i
|
||||
|
||||
# Select tall layout
|
||||
# select-tall-layout:
|
||||
# mod: mod1
|
||||
# key: a
|
||||
|
||||
# Select wide layout
|
||||
# select-wide-layout:
|
||||
# mod: mod1
|
||||
# key: s
|
||||
|
||||
# Select fullscreen layout
|
||||
select-fullscreen-layout:
|
||||
mod: mod1
|
||||
key: d
|
||||
|
||||
# Select column layout
|
||||
select-column-layout:
|
||||
mod: mod1
|
||||
key: f
|
||||
|
||||
# Move the currently focused window to the space to the left.
|
||||
throw-space-left:
|
||||
mod: mod2
|
||||
key: left
|
||||
|
||||
# Move currently the focused window to the space to the right.
|
||||
throw-space-right:
|
||||
mod: mod2
|
||||
key: right
|
||||
|
||||
# Toggle the floating state of the currently focused window;
|
||||
# i.e., if it was floating make it tiled and if it was
|
||||
# tiled make it floating.
|
||||
toggle-float:
|
||||
mod: mod1
|
||||
key: t
|
||||
|
||||
# Display the layout HUD with the current layout on each screen.
|
||||
display-current-layout:
|
||||
mod: mod1
|
||||
key: i
|
||||
|
||||
# Turn on or off tiling entirely.
|
||||
toggle-tiling:
|
||||
mod: mod1
|
||||
key: t
|
||||
|
||||
# Rerun the current layout's algorithm.
|
||||
reevaluate-windows:
|
||||
mod: mod1
|
||||
key: z
|
||||
|
||||
# Turn on or off focus-follows-mouse.
|
||||
toggle-focus-follows-mouse:
|
||||
mod: mod2
|
||||
key: x
|
||||
|
||||
# Automatically quit and reopen Amethyst.
|
||||
relaunch-amethyst:
|
||||
mod: mod2
|
||||
key: z
|
||||
|
||||
# disable screen padding on builtin display
|
||||
disable-padding-on-builtin-display: false
|
||||
|
||||
# Boolean flag for whether to add margins between
|
||||
# windows (default false).
|
||||
window-margins: false
|
||||
|
||||
# Boolean flag for whether to set window margins if there is
|
||||
# only one window on the screen, assuming window margins
|
||||
# are enabled (default false).
|
||||
smart-window-margins: true
|
||||
|
||||
# # Add 10px margin between windows
|
||||
# window-margins: true
|
||||
# window-margin-size: 5
|
||||
# The size of the margins between windows (in px, default 0).
|
||||
window-margin-size: 0
|
||||
|
||||
# The max number of windows that may be visible on a screen
|
||||
# at one time before additional windows are minimized.
|
||||
# A value of 0 disables the feature.
|
||||
window-max-count: 0
|
||||
|
||||
# The smallest height that a window can be sized to
|
||||
# regardless of its layout frame (in px, default 0).
|
||||
window-minimum-height: 0
|
||||
|
||||
# The smallest width that a window can be sized to
|
||||
# regardless of its layout frame (in px, default 0)
|
||||
window-minimum-width: 0
|
||||
|
||||
# List of bundle identifiers for applications to either be automatically
|
||||
# floating or automatically tiled based on floating-is-blacklist (default []).
|
||||
floating: []
|
||||
|
||||
# Boolean flag determining behavior of the floating list.
|
||||
# true if the applications should be floating and all others tiled.
|
||||
# false if the applications should be tiled and all others floating (default true).
|
||||
floating-is-blacklist: false
|
||||
|
||||
# true if screen frames should exclude the status bar.
|
||||
# false if the screen frames should include the status bar (default false).
|
||||
ignore-menu-bar: false
|
||||
|
||||
# true if windows smaller than a 500px square should
|
||||
# be floating by default (default true)
|
||||
float-small-windows: true
|
||||
|
||||
# true if the mouse should move position to the center of a window
|
||||
# when it becomes focused (default false).
|
||||
# Note that this is largely incompatible with focus-follows-mouse.
|
||||
mouse-follows-focus: false
|
||||
|
||||
# true if the windows underneath the mouse should become focused as
|
||||
# the mouse moves (default false). Note that this is largely
|
||||
# incompatible with mouse-follows-focus
|
||||
focus-follows-mouse: false
|
||||
|
||||
# true if dragging and dropping windows on to each other
|
||||
# should swap their positions (default false).
|
||||
mouse-swaps-windows: true
|
||||
|
||||
# true if changing the frame of a window with the mouse should update the
|
||||
# layout to accommodate the change (default false).
|
||||
# Note that not all layouts will be able to respond to the change.
|
||||
mouse-resizes-windows: true
|
||||
|
||||
# true to display the name of the layout when a new layout is selected (default true).
|
||||
enables-layout-hud: true
|
||||
|
||||
# true to display the name of the layout when moving to a new space (default true).
|
||||
enables-layout-hud-on-space-change: true
|
||||
|
||||
# true to get updates to beta versions of the software (default false).
|
||||
use-canary-build: false
|
||||
|
||||
# true to insert new windows into the first position and
|
||||
# false to insert new windows into the last position (default false).
|
||||
new-windows-to-main: false
|
||||
|
||||
# true to automatically move to a space when throwing a window to it (default true).
|
||||
follow-space-thrown-windows: true
|
||||
|
||||
# The integer percentage of the screen dimension to increment
|
||||
# and decrement main pane ratios by (default 5).
|
||||
window-resize-step: 5
|
||||
|
||||
# Padding to apply between windows and the left edge of the screen (in px, default 0).
|
||||
screen-padding-left: 0
|
||||
|
||||
# Padding to apply between windows and the right edge of the screen (in px, default 0).
|
||||
screen-padding-right: 0
|
||||
|
||||
# Padding to apply between windows and the top edge of the screen (in px, default 0).
|
||||
screen-padding-top: 0
|
||||
|
||||
# Padding to apply between windows and the bottom edge of the screen (in px, default 0).
|
||||
screen-padding-bottom: 0
|
||||
|
||||
# true to maintain layout state across application executions (default true).
|
||||
restore-layouts-on-launch: true
|
||||
|
||||
# true to display some optional debug information in the layout HUD (default false).
|
||||
debug-layout-info: true
|
||||
35
config/amethyst/layouts/almost-maximize.js
Normal file
35
config/amethyst/layouts/almost-maximize.js
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Almost Maximize
|
||||
* Almost maximizes the window to the screen, leaving a small margin.
|
||||
*
|
||||
* @author Ville Viklund <https://github.com/ville6000>
|
||||
*
|
||||
* @param {Object} windows - All windows in the current space.
|
||||
* @param {Object} screenFrame - The frame of the current screen.
|
||||
* @param {Object} state - The state of the current space.
|
||||
* @param {Object} extendedFrames - The frames of the windows in the current space.
|
||||
* @return {Object} - The frames for the windows in the current space.
|
||||
*/
|
||||
function layout() {
|
||||
return {
|
||||
name: 'Almost Maximize',
|
||||
getFrameAssignments: (windows, screenFrame, state, extendedFrames) => {
|
||||
const width = screenFrame.width * 0.95
|
||||
const height = screenFrame.height * 0.95
|
||||
const x = (screenFrame.width - width) / 2
|
||||
const y = (screenFrame.height - height) / 2
|
||||
const windowFrames = {}
|
||||
|
||||
windows.forEach(window => {
|
||||
windowFrames[window.id] = {
|
||||
Y: screenFrame.y + y,
|
||||
x: screenFrame.x + x,
|
||||
width,
|
||||
height,
|
||||
}
|
||||
})
|
||||
|
||||
return windowFrames
|
||||
},
|
||||
}
|
||||
}
|
||||
15
config/aqua/aqua.yaml
Normal file
15
config/aqua/aqua.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/aqua-yaml.json
|
||||
# aqua - Declarative CLI Version Manager
|
||||
# https://aquaproj.github.io/
|
||||
# checksum:
|
||||
# enabled: true
|
||||
# require_checksum: true
|
||||
# supported_envs:
|
||||
# - all
|
||||
registries:
|
||||
- type: standard
|
||||
ref: v4.346.0 # renovate: depName=aquaproj/aqua-registry
|
||||
packages:
|
||||
- name: cli/cli
|
||||
version: 'v2.69.0'
|
||||
5
config/asdf/asdfrc
Normal file
5
config/asdf/asdfrc
Normal file
@@ -0,0 +1,5 @@
|
||||
# See the docs for explanations: https://asdf-vm.com/manage/configuration.html
|
||||
|
||||
legacy_version_file=yes
|
||||
use_release_candidates=no
|
||||
concurrency=auto
|
||||
27
config/asdf/cargo-packages
Normal file
27
config/asdf/cargo-packages
Normal file
@@ -0,0 +1,27 @@
|
||||
// A cargo subcommand for checking and applying
|
||||
// updates to installed executables
|
||||
cargo-update
|
||||
// Cargo cache management utility
|
||||
cargo-cache
|
||||
// An incremental parsing system for programming tools
|
||||
tree-sitter-cli
|
||||
// a subprocess caching utility
|
||||
bkt
|
||||
// a structural diff that understands syntax
|
||||
difftastic
|
||||
// A simple, fast and user-friendly alternative to 'find'
|
||||
fd-find
|
||||
// recursively searches directories for a
|
||||
// regex pattern while respecting your gitignore
|
||||
ripgrep
|
||||
// A version manager for neovim
|
||||
bob-nvim
|
||||
// bottom, btm - A cross-platform graphical process/system monitor with
|
||||
// a customizable interface and a multitude of features.
|
||||
bottom
|
||||
// A modern alternative to ls
|
||||
eza
|
||||
// Tmux Sessionizer: A tool for opening git repositories as tmux sessions
|
||||
tmux-sessionizer
|
||||
// zoxide, a smarter cd command
|
||||
zoxide
|
||||
1
config/asdf/gem-packages
Normal file
1
config/asdf/gem-packages
Normal file
@@ -0,0 +1 @@
|
||||
bundler
|
||||
27
config/asdf/golang-packages
Normal file
27
config/asdf/golang-packages
Normal file
@@ -0,0 +1,27 @@
|
||||
// These are golang packages I use,
|
||||
// so they should be available with all versions
|
||||
|
||||
// Git Profile allows you to switch between user profiles in git repos
|
||||
github.com/dotzero/git-profile@latest
|
||||
// An extensible command line tool or library to format yaml files.
|
||||
github.com/google/yamlfmt/cmd/yamlfmt@latest
|
||||
// Parsing HTML at the command line
|
||||
github.com/ericchiang/pup@latest
|
||||
// HTML to Markdown converter
|
||||
github.com/suntong/html2md@latest
|
||||
// cheat allows you to create and view interactive cheatsheets on the cli.
|
||||
github.com/cheat/cheat/cmd/cheat@latest
|
||||
// Render markdown on the CLI, with pizzazz! 💅
|
||||
github.com/charmbracelet/glow@latest
|
||||
// Static checker for GitHub Actions workflow files
|
||||
github.com/rhysd/actionlint/cmd/actionlint@latest
|
||||
// Cleans up your $HOME from those pesky dotfiles
|
||||
github.com/doron-cohen/antidot@latest
|
||||
// FZF is a general-purpose command-line fuzzy finder.
|
||||
github.com/junegunn/fzf@latest
|
||||
// gopls, the Go language server
|
||||
golang.org/x/tools/gopls@latest
|
||||
// A language for writing HTML user interfaces in Go.
|
||||
github.com/a-h/templ/cmd/templ@latest
|
||||
// A terminal session manager
|
||||
github.com/joshmedeski/sesh/v2@latest
|
||||
7
config/asdf/npm-packages
Normal file
7
config/asdf/npm-packages
Normal file
@@ -0,0 +1,7 @@
|
||||
blade-formatter
|
||||
corepack
|
||||
editorconfig-checker
|
||||
github-release-notes
|
||||
neovim
|
||||
npm
|
||||
stylelint-lsp
|
||||
20
config/asdf/plugin-versions
Normal file
20
config/asdf/plugin-versions
Normal file
@@ -0,0 +1,20 @@
|
||||
1password-cli https://github.com/NeoHsu/asdf-1password-cli.git f5d5aab
|
||||
age https://github.com/threkk/asdf-age.git 396bdf6
|
||||
asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git b5862c1
|
||||
direnv https://github.com/asdf-community/asdf-direnv.git 6ff3dbe
|
||||
dotenv-linter https://github.com/wesleimp/asdf-dotenv-linter.git 1369f53
|
||||
editorconfig-checker https://github.com/gabitchov/asdf-editorconfig-checker.git 585c1d5
|
||||
fd https://gitlab.com/wt0f/asdf-fd.git 17d56e0
|
||||
github-cli https://github.com/bartlomiejdanek/asdf-github-cli.git e0605b7
|
||||
golang https://github.com/asdf-community/asdf-golang.git e2527a3
|
||||
hadolint https://github.com/devlincashman/asdf-hadolint.git c8eb88b
|
||||
kubectl https://github.com/asdf-community/asdf-kubectl.git 2fb3b57
|
||||
pre-commit https://github.com/jonathanmorley/asdf-pre-commit.git 26bfc42
|
||||
ripgrep https://gitlab.com/wt0f/asdf-ripgrep.git e836665
|
||||
rust https://github.com/code-lever/asdf-rust.git 95acf4f
|
||||
shellcheck https://github.com/luizm/asdf-shellcheck.git 66200ff
|
||||
shfmt https://github.com/luizm/asdf-shfmt.git a42c5ff
|
||||
terragrunt https://github.com/ohmer/asdf-terragrunt.git 29f2935
|
||||
tf-summarize https://github.com/adamcrews/asdf-tf-summarize.git 880ad26
|
||||
yamllint https://github.com/ericcornelissen/asdf-yamllint.git e4cfb17
|
||||
yq https://github.com/sudermanjr/asdf-yq.git 772992f
|
||||
4
config/asdf/python-packages
Normal file
4
config/asdf/python-packages
Normal file
@@ -0,0 +1,4 @@
|
||||
ansible
|
||||
pipenv
|
||||
neovim
|
||||
libtmux
|
||||
71
config/cheat/cheatsheets/personal/printf
Normal file
71
config/cheat/cheatsheets/personal/printf
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
tags: [printf, bash, zsh]
|
||||
---
|
||||
|
||||
# printf
|
||||
|
||||
The printf command accepts the following syntax:
|
||||
|
||||
`printf [-v var] [format specifiers] [arguments]`
|
||||
|
||||
- [-v var]
|
||||
The optional -v flag assigns the output to the [var]
|
||||
variable instead of printing it in standard output.
|
||||
|
||||
- [format specifiers]
|
||||
Format specifiers are strings that determine the methods of
|
||||
formatting specifiers. The following section includes a
|
||||
list of accepted specifiers.
|
||||
|
||||
- [arguments]
|
||||
Arguments can be any value or variable, and the [format specifiers]
|
||||
point to the [arguments]. If there are more arguments than format
|
||||
specifiers, the format string is reused until it interprets
|
||||
the last argument.
|
||||
|
||||
If there are fewer format specifiers than arguments, number formats
|
||||
are set to zero (0), while string formats are set to null (empty).
|
||||
|
||||
## printf Specifiers
|
||||
|
||||
Format Description
|
||||
------ -----------
|
||||
%c Treat the arguments as a single character.
|
||||
%d Treat the input as a decimal (integer) number (base 10).
|
||||
%e Treats the input as an exponential floating-point number.
|
||||
%f Treat the input as a floating-point number.
|
||||
%i Treat the input as an integer number (base 10).
|
||||
%o Treats the input as an octal number (base 8).
|
||||
%s Treat the input as a string of characters.
|
||||
%u Treat the input as an unsigned decimal (integer) number.
|
||||
%x Treats the input as a hexadecimal number (base 16).
|
||||
%% Print a percent sign.
|
||||
%Wd Print the W integer X digits wide.
|
||||
%(format)T Outputs a date-time string resulting from using format as a
|
||||
format string for strftime. The corresponding argument can
|
||||
be the number of seconds since Epoch (January 1, 1970, 00:00),
|
||||
-1 (the current time), or -2 (shell startup time).
|
||||
Not specifying an argument uses the current time as the default value.
|
||||
\% Print a percent sign.
|
||||
\n Prints a newline character.
|
||||
\t Print a tab character.
|
||||
|
||||
Some format specifiers accept format modifiers that modify their actions.
|
||||
Enter the modifiers between the % character and the character that
|
||||
specifies the format.
|
||||
|
||||
Available format modifiers are:
|
||||
|
||||
<N>. Enter a number that specifies a minimum field width.
|
||||
If the output text is shorter, it's padded with spaces.
|
||||
If the text is longer, the field expands.
|
||||
. (dot). When used with a field width modifier, the field doesn't
|
||||
expand for longer text. Instead, the text is truncated.
|
||||
-. Left-aligns the printed text. The default alignment is right.
|
||||
0. Pads the numbers with zeros instead of spaces.
|
||||
<space>. Pads a positive number with a space, and a negative
|
||||
number with a minus (-).
|
||||
+. Prints all numbers signed (+ for positive, - for negative).
|
||||
'. For decimal conversions, applies the thousands grouping
|
||||
separator to the integer portion of the output according
|
||||
to the current LC_NUMERIC file.
|
||||
1
config/cheat/cheatsheets/tldr
Submodule
1
config/cheat/cheatsheets/tldr
Submodule
Submodule config/cheat/cheatsheets/tldr added at a60bdfc18c
@@ -1,12 +1,13 @@
|
||||
---
|
||||
# The editor to use with 'cheat -e <sheet>'. Defaults to $EDITOR or $VISUAL.
|
||||
# editor: $EDITOR
|
||||
|
||||
# Should 'cheat' always colorize output?
|
||||
colorize: true
|
||||
colorize: false
|
||||
# Which 'chroma' colorscheme should be applied to the output?
|
||||
# Options are available here:
|
||||
# https://github.com/alecthomas/chroma/tree/master/styles
|
||||
style: 'catppuccin'
|
||||
# style: 'tokyonight-day'
|
||||
# Which 'chroma' "formatter" should be applied?
|
||||
# One of: "terminal", "terminal256", "terminal16m"
|
||||
formatter: terminal256
|
||||
@@ -37,7 +38,7 @@ pager: less -FRX
|
||||
#
|
||||
# This is very useful when you would like to maintain, for example, a
|
||||
# "pristine" repository of community cheatsheets on one cheatpath, and an
|
||||
# editable personal reponsity of cheatsheets on another cheatpath.
|
||||
# editable personal repository of cheatsheets on another cheatpath.
|
||||
#
|
||||
# Cheatpaths can be also configured to automatically apply tags to cheatsheets
|
||||
# on certain paths, which can be useful for querying purposes.
|
||||
@@ -60,20 +61,20 @@ cheatpaths:
|
||||
path: ~/.config/cheat/cheatsheets/community
|
||||
tags: [community]
|
||||
readonly: true
|
||||
- name: pure-bash-bible
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
||||
tags: [pure-bash-bible]
|
||||
readonly: true
|
||||
- name: tldr
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/tldr/tldr
|
||||
tags: [tldr]
|
||||
readonly: true
|
||||
# If you have personalized cheatsheets, list them last. They will take
|
||||
# precedence over the more global cheatsheets.
|
||||
- name: personal
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
||||
tags: [personal]
|
||||
readonly: false
|
||||
- name: pure-bash-bible
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
||||
tags: [pure-bash-bible]
|
||||
readonly: true
|
||||
- name: tldr
|
||||
path: ~/.dotfiles/config/cheat/cheatsheets/tldr
|
||||
tags: [tldr]
|
||||
readonly: true
|
||||
# While it requires no configuration here, it's also worth noting that
|
||||
# cheat will automatically append directories named '.cheat' within the
|
||||
# current working directory to the 'cheatpath'. This can be very useful if
|
||||
|
||||
@@ -56,11 +56,11 @@ TERM xterm*
|
||||
RESET 0 # reset to "normal" color
|
||||
DIR 01;34 # directory
|
||||
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
|
||||
# numerical value, the color is as for the file pointed to.)
|
||||
MULTIHARDLINK 00 # regular file with more than one link
|
||||
FIFO 40;33 # pipe
|
||||
SOCK 01;35 # socket
|
||||
DOOR 01;35 # door
|
||||
# numerical value, the color is as for the file pointed to.)
|
||||
MULTIHARDLINK 00 # regular file with more than one link
|
||||
FIFO 40;33 # pipe
|
||||
SOCK 01;35 # socket
|
||||
DOOR 01;35 # door
|
||||
BLK 40;33;01 # block device driver
|
||||
CHR 40;33;01 # character device driver
|
||||
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file ...
|
||||
|
||||
12
config/direnv/direnv.toml
Normal file
12
config/direnv/direnv.toml
Normal file
@@ -0,0 +1,12 @@
|
||||
[global]
|
||||
disable_stdin = false
|
||||
load_dotenv = true
|
||||
hide_env_diff = false
|
||||
|
||||
[whitelist]
|
||||
prefix = [
|
||||
"~/Code/"
|
||||
]
|
||||
exact = [
|
||||
"~/.dotfiles/.envrc"
|
||||
]
|
||||
6
config/direnv/lib/use_asdf.sh
Normal file
6
config/direnv/lib/use_asdf.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
### Do not edit. This was autogenerated by 'asdf direnv setup' ###
|
||||
# shellcheck shell=bash
|
||||
use_asdf()
|
||||
{
|
||||
source_env "$(asdf direnv envrc "$@")"
|
||||
}
|
||||
462
config/exports
462
config/exports
@@ -2,7 +2,463 @@
|
||||
# shellcheck shell=bash
|
||||
# vim: filetype=zsh
|
||||
|
||||
source "$DOTFILES/config/exports-shell"
|
||||
source "$DOTFILES/config/exports-apps"
|
||||
# Set XDG directories if not already set
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
[ -z "$XDG_CONFIG_HOME" ] && export XDG_CONFIG_HOME="$HOME/.config"
|
||||
[ -z "$XDG_DATA_HOME" ] && export XDG_DATA_HOME="$HOME/.local/share"
|
||||
[ -z "$XDG_CACHE_HOME" ] && export XDG_CACHE_HOME="$HOME/.cache"
|
||||
[ -z "$XDG_STATE_HOME" ] && export XDG_STATE_HOME="$HOME/.local/state"
|
||||
[ -z "$XDG_BIN_HOME" ] && export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
have nvim && export EDITOR="nvim"
|
||||
# if DOTFILES is not set, set it to the default location
|
||||
[ -z "$DOTFILES" ] && export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
export PATH="$XDG_BIN_HOME:$DOTFILES/local/bin:$XDG_DATA_HOME/bob/nvim-bin:$XDG_DATA_HOME/cargo/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
|
||||
if ! command -v msg &> /dev/null; then
|
||||
# Function to print messages if VERBOSE is enabled
|
||||
# $1 - message (string)
|
||||
msg()
|
||||
{
|
||||
[[ $VERBOSE -eq 1 ]] && msgr msg "-> $1"
|
||||
return 0
|
||||
}
|
||||
fi
|
||||
|
||||
# Cache commands using bkt if installed
|
||||
if command -v bkt &> /dev/null; then
|
||||
bkt()
|
||||
{
|
||||
command bkt --cache-dir="$XDG_CACHE_HOME/bkt" "$@"
|
||||
}
|
||||
else
|
||||
# If bkt isn't installed, skip its arguments and just execute directly.
|
||||
# Optionally write a msg to stderr suggesting users install bkt.
|
||||
bkt()
|
||||
{
|
||||
while [[ $1 == --* ]]; do shift; done
|
||||
"$@"
|
||||
}
|
||||
fi
|
||||
|
||||
# Shorthand for checking if the system has the bin in path,
|
||||
# this version does not use caching.
|
||||
# Usage: have_command php && php -v
|
||||
have_command()
|
||||
{
|
||||
[ -z "$1" ] && {
|
||||
echo "Usage: have_command <command>"
|
||||
return 1
|
||||
}
|
||||
|
||||
command -v "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Shorthand for checking if the system has the bin in path,
|
||||
# this version uses caching.
|
||||
# Usage: have php && php -v
|
||||
have()
|
||||
{
|
||||
bkt -- which "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Function to run dark-notify and change alacritty theme
|
||||
# It uses flock to prevent running multiple instances.
|
||||
# Install flock with `brew install flock` on macOS.
|
||||
darknotify_alacritty()
|
||||
{
|
||||
x-have flock && [[ -f /tmp/dark-notify-alacritty.lock ]] && return
|
||||
x-have dark-notify && {
|
||||
# subprocess is used to prevent the command from showing it was backgrounded
|
||||
(
|
||||
flock /tmp/dark-notify-alacritty.lock dark-notify \
|
||||
-c "$HOME/.dotfiles/local/bin/x-change-alacritty-theme" &
|
||||
) &> /dev/null
|
||||
}
|
||||
return 0
|
||||
}
|
||||
# darknotify_alacritty
|
||||
|
||||
# Function to list installed Homebrew packages using bkt caching
|
||||
brew_installed()
|
||||
{
|
||||
bkt -- brew list
|
||||
}
|
||||
|
||||
# Shorthand for checking if a Homebrew package is installed
|
||||
# Usage: have_brew php && php -v
|
||||
have_brew()
|
||||
{
|
||||
! have brew && return 125
|
||||
|
||||
if bkt -- brew list "$1" &> /dev/null; then
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Alacritty preexec hook to update dynamic title
|
||||
preexec()
|
||||
{
|
||||
print -n -P "\e]0;$1%~\a"
|
||||
}
|
||||
|
||||
# Update dotfiles
|
||||
dfu()
|
||||
{
|
||||
(
|
||||
cd "$DOTFILES" && git rebase --ff --autostash && ./install
|
||||
)
|
||||
}
|
||||
|
||||
# Weather in Tampere, or other city
|
||||
weather()
|
||||
{
|
||||
# https://github.com/chubin/wttr.in#usage
|
||||
local city="${1:-Tampere}"
|
||||
curl "http://wttr.in/${city// /+}?2nFQM&lang=fi"
|
||||
}
|
||||
|
||||
# Docker
|
||||
ssh_docker()
|
||||
{
|
||||
docker exec -it "$@" bash
|
||||
}
|
||||
|
||||
# Rector project to php version 8.2 by default.
|
||||
rector()
|
||||
{
|
||||
local php="${1:-82}"
|
||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||
"/project/" \
|
||||
--set "php${php}" \
|
||||
--autoload-file /project/vendor/autoload.php
|
||||
}
|
||||
|
||||
# Commit everything
|
||||
commit()
|
||||
{
|
||||
local commitMessage="$*"
|
||||
|
||||
if [ -z "$commitMessage" ]; then
|
||||
commitMessage="Automated commit"
|
||||
fi
|
||||
|
||||
git add .
|
||||
git commit -a -m "$commitMessage"
|
||||
}
|
||||
|
||||
scheduler()
|
||||
{
|
||||
while :; do
|
||||
php artisan schedule:run
|
||||
echo "Sleeping 60 seconds..."
|
||||
sleep 60
|
||||
done
|
||||
}
|
||||
|
||||
# Run command silently
|
||||
# Usage: silent uptime
|
||||
silent()
|
||||
{
|
||||
"$@" >&/dev/null
|
||||
}
|
||||
|
||||
# Check if a file contains non-ascii characters
|
||||
nonascii()
|
||||
{
|
||||
LC_ALL=C grep -n '[^[:print:][:space:]]' "${@}"
|
||||
}
|
||||
|
||||
# Remove non-ascii characters from string
|
||||
# Usage: strip_nonascii "string"
|
||||
strip_nonascii()
|
||||
{
|
||||
# shellcheck disable=SC2001
|
||||
echo "$1" | LC_ALL=C sed 's/[^[:print:][:space:]]//g'
|
||||
}
|
||||
|
||||
# Slugify a string
|
||||
# Usage: slugify "string"
|
||||
slugify()
|
||||
{
|
||||
echo "$1" | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr '[:upper:]' '[:lower:]'
|
||||
}
|
||||
|
||||
# https://stackoverflow.com/a/85932
|
||||
fn_exists()
|
||||
{
|
||||
declare -f -F "$1" > /dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
# Creates a random string
|
||||
rnd()
|
||||
{
|
||||
echo $RANDOM | md5sum | head -c 20
|
||||
}
|
||||
|
||||
# return sha256sum for file
|
||||
# $1 - filename (string)
|
||||
get_sha256sum()
|
||||
{
|
||||
sha256sum "$1" | head -c 64
|
||||
}
|
||||
|
||||
# Replaceable file
|
||||
#
|
||||
# $1 - filename (string)
|
||||
# $2 - filename (string)
|
||||
#
|
||||
# Returns 1 when replaceable, 0 when not replaceable.
|
||||
replaceable()
|
||||
{
|
||||
FILE1="$1"
|
||||
FILE2="$2"
|
||||
|
||||
[[ ! -r $FILE1 ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "File 1 ($FILE1) does not exist"
|
||||
return 0
|
||||
}
|
||||
[[ ! -r $FILE2 ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "File 2 ($FILE2) does not exist, replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
FILE1_HASH=$(get_sha256sum "$FILE1")
|
||||
FILE2_HASH=$(get_sha256sum "$FILE2")
|
||||
|
||||
[[ $FILE1_HASH == "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 1 ($FILE1)"
|
||||
return 0
|
||||
}
|
||||
[[ $FILE2_HASH == "" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr err "Could not get hash for file 2 ($FILE2), replaceable"
|
||||
return 1
|
||||
}
|
||||
|
||||
[[ $FILE1_HASH == "$FILE2_HASH" ]] && {
|
||||
[[ $VERBOSE -eq 1 ]] && msgr ok "Files match, not replaceable: $FILE1"
|
||||
return 0
|
||||
}
|
||||
|
||||
[[ $VERBOSE -eq 1 ]] && msgr warn "Files do not match ($FILE1_HASH != $FILE2_HASH), replaceable"
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
export COMPLETION_WAITING_DOTS=true
|
||||
|
||||
# Bash completion file location
|
||||
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
|
||||
|
||||
# History env variables
|
||||
export HIST_STAMPS="yyyy-mm-dd"
|
||||
export HISTFILE="${XDG_STATE_HOME}/zsh/history"
|
||||
# Larger bash history (allow 32³ entries; default is 500)
|
||||
export HISTSIZE=32768
|
||||
export HISTFILESIZE=$HISTSIZE
|
||||
# don't put duplicate lines or lines starting with space in the history.
|
||||
# See bash(1) for more options
|
||||
export HISTCONTROL=ignoreboth
|
||||
# Make some commands not show up in history
|
||||
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
|
||||
# And include the parameter for ZSH
|
||||
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
|
||||
|
||||
# Less history location
|
||||
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
|
||||
|
||||
# Highlight section titles in manual pages
|
||||
# export LESS_TERMCAP_md="$ORANGE"
|
||||
|
||||
# zsh autoloaded terminfo
|
||||
# export TERMINFO="${XDG_DATA_HOME}/terminfo"
|
||||
# export TERMINFO_DIRS="${XDG_DATA_HOME}/terminfo":/usr/share/terminfo
|
||||
|
||||
# Don't clear the screen after quitting a manual page
|
||||
export MANPAGER="less -X"
|
||||
|
||||
# Always enable colored `grep` output
|
||||
export GREP_OPTIONS="--color=auto"
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
hash shopt 2> /dev/null && shopt -s checkwinsize
|
||||
|
||||
# shellcheck disable=SC2155
|
||||
export SHORT_HOST=$(hostname -s)
|
||||
|
||||
# Antidote configuration
|
||||
# https://getantidote.github.io/
|
||||
msg "Setting up Antidote configuration"
|
||||
export ANTIDOTE_DIR="$DOTFILES/tools/antidote"
|
||||
export ANTIDOTE_HOME="$XDG_CACHE_HOME/antidote"
|
||||
export ANTIDOTE_PLUGINS="$XDG_CONFIG_HOME/zsh/antidote_plugins"
|
||||
|
||||
# Ansible configuration
|
||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||
msg "Setting up Ansible configuration"
|
||||
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
|
||||
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
|
||||
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
# aws
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
|
||||
# https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
|
||||
msg "Setting up AWS configuration"
|
||||
export AWS_CONFIG_FILE="${XDG_STATE_HOME}/aws/config"
|
||||
export AWS_SHARED_CREDENTIALS_FILE="${XDG_STATE_HOME}/aws/credentials"
|
||||
export AWS_DATA_PATH="${XDG_DATA_HOME}/aws"
|
||||
export AWS_DEFAULT_REGION="eu-west-1"
|
||||
export AWS_DEFAULT_OUTPUT="table"
|
||||
export AWS_CONFIGURE_KEYS=true
|
||||
export AWS_CONFIGURE_REGION=true
|
||||
export AWS_CONFIGURE_OUTPUT=true
|
||||
export AWS_CONFIGURE_PROFILE=true
|
||||
export AWS_CONFIGURE_PROMPT=true
|
||||
export AWS_CONFIGURE_PROMPT_DEFAULT="default"
|
||||
|
||||
# bob manages nvim versions
|
||||
msg "Setting up bob configuration"
|
||||
x-path-prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
|
||||
# bkt (shell command caching tool) configuration
|
||||
msg "Setting up bkt configuration"
|
||||
export BKT_TTL=1m
|
||||
|
||||
# brew, https://docs.brew.sh/Manpage
|
||||
msg "Setting up Homebrew configuration"
|
||||
export HOMEBREW_NO_ANALYTICS=true
|
||||
export HOMEBREW_NO_ENV_HINTS=true
|
||||
export HOMEBREW_BUNDLE_MAS_SKIP=true
|
||||
export HOMEBREW_BUNDLE_FILE="$XDG_CONFIG_HOME/homebrew/Brewfile"
|
||||
x-have brew && {
|
||||
eval "$(brew shellenv)"
|
||||
}
|
||||
|
||||
# composer, https://getcomposer.org/
|
||||
msg "Setting up Composer configuration"
|
||||
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
|
||||
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
|
||||
export PATH="$COMPOSER_BIN:$PATH"
|
||||
|
||||
# direnv, https://direnv.net/
|
||||
# https://direnv.net/docs/hook.html
|
||||
# Set the hook to show the direnv message in a different color
|
||||
# export DIRENV_LOG_FORMAT=$'\033[2mdirenv: %s\033[0m'
|
||||
export DIRENV_LOG_FORMAT=
|
||||
|
||||
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
||||
msg "Setting up Docker configuration"
|
||||
export DOCKER_CONFIG="${XDG_CONFIG_HOME}/docker"
|
||||
x-dc "$DOCKER_CONFIG"
|
||||
# Docker: Disable snyk ad
|
||||
export DOCKER_SCAN_SUGGEST=false
|
||||
|
||||
# fzf
|
||||
export FZF_BASE="${XDG_CONFIG_HOME}/fzf"
|
||||
export FZF_DEFAULT_OPTS='--height 40% --tmux bottom,40% --layout reverse --border top'
|
||||
|
||||
# GnuPG
|
||||
# https://gnupg.org/documentation/manuals/gnupg/Invoking-GPG.html
|
||||
msg "Setting up GnuPG configuration"
|
||||
export GNUPGHOME="${XDG_DATA_HOME}/gnupg"
|
||||
|
||||
# Go
|
||||
# https://golang.org/doc/code.html
|
||||
msg "Setting up Go configuration"
|
||||
export GOPATH="$XDG_DATA_HOME/go"
|
||||
export GOBIN="$XDG_BIN_HOME"
|
||||
|
||||
# Lando
|
||||
export PATH="$HOME/.lando/bin${PATH+:$PATH}" #landopath
|
||||
|
||||
# NPM: Add npm packages to path
|
||||
msg "Setting up NPM configuration"
|
||||
x-have node && {
|
||||
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
||||
export PATH="$NVM_NODE_BIN_DIR:$PATH"
|
||||
}
|
||||
|
||||
# oh-my-posh (omp) configuration
|
||||
msg "Setting up oh-my-posh configuration"
|
||||
export OHMYPOSH_CFG="$DOTFILES/config/omp/own.toml"
|
||||
|
||||
# op (1Password cli) is present
|
||||
msg "Setting up 1Password CLI configuration"
|
||||
export OP_CACHE="$XDG_STATE_HOME/1password"
|
||||
|
||||
# Python
|
||||
#
|
||||
# pyenv, python environments
|
||||
msg "Setting up Python configuration"
|
||||
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
|
||||
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
||||
## for MichaelAquilina/zsh-autoswitch-virtualenv
|
||||
export AUTOSWITCH_VIRTUAL_ENV_DIR="$WORKON_HOME"
|
||||
export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
|
||||
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
|
||||
x-have pyenv && eval "$(pyenv init -)"
|
||||
|
||||
# Rust / cargo
|
||||
msg "Setting up Rust/Cargo configuration"
|
||||
export RUST_WITHOUT=rust-docs
|
||||
|
||||
# screen
|
||||
# https://www.gnu.org/software/screen/manual/screen.html
|
||||
msg "Setting up screen configuration"
|
||||
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
||||
|
||||
# sonarlint
|
||||
# https://www.sonarlint.org/
|
||||
msg "Setting up Sonarlint configuration"
|
||||
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
|
||||
|
||||
# terraform
|
||||
# https://www.terraform.io/docs/cli/config/config-file.html
|
||||
# https://www.terraform.io/docs/cli/config/environment-variables.html
|
||||
msg "Setting up Terraform configuration"
|
||||
export TF_DATA_DIR="$XDG_STATE_HOME/terraform"
|
||||
export TF_CLI_CONFIG_FILE="$XDG_CONFIG_HOME/terraform/terraformrc"
|
||||
export TF_PLUGIN_CACHE_DIR="$XDG_CACHE_HOME/terraform/plugin-cache"
|
||||
|
||||
# tmux
|
||||
# https://tmux.github.io/
|
||||
msg "Setting up tmux configuration"
|
||||
export TMUX_TMPDIR="$XDG_STATE_HOME/tmux"
|
||||
export TMUX_CONF_DIR="$XDG_CONFIG_HOME/tmux"
|
||||
export TMUX_PLUGINS="$TMUX_CONF_DIR/plugins"
|
||||
export TMUX_CONF="$TMUX_CONF_DIR/tmux.conf"
|
||||
## These settings are for zsh-tmux
|
||||
export ZSH_TMUX_AUTOSTART=true
|
||||
export ZSH_TMUX_CONFIG="$TMUX_CONF"
|
||||
export ZSH_TMUX_UNICODE=true
|
||||
export ZSH_TMUX_AUTOQUIT=false
|
||||
export ZSH_TMUX_DEFAULT_SESSION_NAME=main
|
||||
|
||||
# tms, https://github.com/jrmoulton/tmux-sessionizer
|
||||
export TMS_CONFIG_FILE="${XDG_CONFIG_HOME}/tms/config.toml"
|
||||
|
||||
# wakatime, https://github.com/wakatime/wakatime-cli
|
||||
msg "Setting up Wakatime configuration"
|
||||
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
|
||||
x-dc "$WAKATIME_HOME"
|
||||
|
||||
# Misc
|
||||
msg "Setting up miscellaneous configuration"
|
||||
export ZSHZ_DATA="$XDG_STATE_HOME/z"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="${XDG_CACHE_HOME}/sqlite_history"
|
||||
|
||||
[ -f "$XDG_CONFIG_HOME/exports-secret" ] && source "$XDG_CONFIG_HOME/exports-secret"
|
||||
[ -f "$XDG_CONFIG_HOME/exports-local" ] && source "$XDG_CONFIG_HOME/exports-local"
|
||||
# shellcheck source=./exports-lakka
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)"
|
||||
# shellcheck source=./exports-lakka-secret
|
||||
[ -f "$XDG_CONFIG_HOME/exports-$(hostname)-secret" ] && source "$XDG_CONFIG_HOME/exports-$(hostname)-secret"
|
||||
|
||||
@@ -1,120 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# shellcheck enable=external-sources
|
||||
# shellcheck disable=1091,2139
|
||||
# vim: filetype=bash
|
||||
|
||||
# Antigen configuration
|
||||
# https://github.com/zsh-users/antigen/wiki/Configuration
|
||||
export ADOTDIR="$XDG_DATA_HOME/antigen"
|
||||
export ANTIGEN_SYSTEM_RECEIPT_F=".local/share/antigen/antigen_system_lastupdate"
|
||||
export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
|
||||
|
||||
# Ansible configuration
|
||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
|
||||
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
|
||||
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||
x-dc "$ANSIBLE_HOME"
|
||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||
|
||||
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
||||
|
||||
# bob manages nvim versions
|
||||
path_prepend "$XDG_DATA_HOME/bob/nvim-bin"
|
||||
have nvim && export EDITOR="nvim"
|
||||
|
||||
export HOMEBREW_NO_ENV_HINTS=true
|
||||
|
||||
# composer, https://getcomposer.org/
|
||||
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
|
||||
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
|
||||
path_append "$COMPOSER_BIN"
|
||||
|
||||
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
||||
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
|
||||
x-dc "$DOCKER_CONFIG"
|
||||
# Docker: Disable snyk ad
|
||||
export DOCKER_SCAN_SUGGEST=false
|
||||
|
||||
# ffmpeg
|
||||
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
|
||||
have ffmpeg && x-dc "$FFMPEG_DATADIR"
|
||||
|
||||
# GnuPG
|
||||
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||
|
||||
# Go
|
||||
export GOPATH="$XDG_DATA_HOME/go"
|
||||
export GOBIN="$XDG_BIN_HOME"
|
||||
|
||||
# nb, https://xwmx.github.io/nb/
|
||||
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
|
||||
export NB_DIR="$XDG_STATE_HOME/nb"
|
||||
|
||||
# NPM: Add npm packages to path
|
||||
have node && {
|
||||
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
||||
path_append "$NVM_NODE_BIN_DIR"
|
||||
}
|
||||
|
||||
# op (1Password cli) is present
|
||||
export OP_CACHE="$XDG_STATE_HOME/1password"
|
||||
have op && {
|
||||
[ "$DOTFILES_CURRENT_SHELL" = "zsh" ] && {
|
||||
eval "$(op completion zsh)"
|
||||
compdef _op op
|
||||
}
|
||||
}
|
||||
|
||||
# Python
|
||||
#
|
||||
# pyenv, python environments
|
||||
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
|
||||
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
||||
have pyenv && {
|
||||
path_append "$PYENV_ROOT/shims"
|
||||
eval "$(pyenv init -)"
|
||||
}
|
||||
|
||||
# Ruby
|
||||
#
|
||||
# including: bundler, rbenv
|
||||
export GEM_HOME="${XDG_DATA_HOME}"/gem
|
||||
export GEM_SPEC_CACHE="${XDG_CACHE_HOME}"/gem
|
||||
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
|
||||
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
|
||||
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
|
||||
export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
|
||||
x-dc "$RBENV_ROOT"
|
||||
have gem && path_append "${GEM_HOME}/bin"
|
||||
have rbenv && {
|
||||
[ "$DOTFILES_CURRENT_SHELL" = "zsh" ] && eval "$(rbenv init - zsh)"
|
||||
[ "$DOTFILES_CURRENT_SHELL" = "bash" ] && eval "$(rbenv init - bash)"
|
||||
}
|
||||
|
||||
# Rust / cargo
|
||||
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
|
||||
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||
path_append "$CARGO_HOME/bin"
|
||||
|
||||
# screen
|
||||
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
||||
|
||||
# sonarlint
|
||||
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
|
||||
|
||||
# tldr / tealdeer
|
||||
export TEALDEER_CONFIG_DIR="$XDG_CONFIG_HOME/tealdeer/"
|
||||
|
||||
# tmux
|
||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||
|
||||
# wakatime, https://github.com/wakatime/wakatime-cli
|
||||
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
|
||||
x-dc "$WAKATIME_HOME"
|
||||
|
||||
# Misc
|
||||
export BAT_THEME="ansi"
|
||||
export CHEAT_USE_FZF=true
|
||||
export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history
|
||||
@@ -1,20 +1,25 @@
|
||||
# lakka exports
|
||||
|
||||
## LUA
|
||||
have luarocks && $(luarocks path --bin)
|
||||
if command -v luarocks &> /dev/null; then
|
||||
eval "$(luarocks path --bin)"
|
||||
fi
|
||||
|
||||
path_prepend "$HOME/.local/go/bin"
|
||||
export PATH="$HOME/.local/go/bin:$PATH"
|
||||
|
||||
alias logrotate='/usr/sbin/logrotate -s $HOME/logs/state'
|
||||
alias logrotate='/usr/sbin/logrotate -s "$HOME/logs/state"'
|
||||
alias nano='nano -wS -$'
|
||||
alias gpg=gpg2
|
||||
|
||||
ACME_PATH="$HOME/.acme.sh"
|
||||
# shellcheck source=$HOME/.acme.sh/acme.sh.env
|
||||
[[ -s "$ACME_PATH/acme.sh.env" ]] && . "$ACME_PATH/acme.sh.env"
|
||||
if [[ -s "$ACME_PATH/acme.sh.env" ]]; then
|
||||
source "$ACME_PATH/acme.sh.env"
|
||||
fi
|
||||
|
||||
export RVM_PATH="$HOME/.rvm"
|
||||
export PATH="$RVM_PATH/bin:$PATH"
|
||||
# shellcheck source=$HOME/.rvm/scripts/rvm
|
||||
[[ -s "$RVM_PATH/scripts/rvm" ]] && source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
|
||||
|
||||
if [[ -s "$RVM_PATH/scripts/rvm" ]]; then
|
||||
source "$RVM_PATH/scripts/rvm" # Load RVM into a shell session *as a function*
|
||||
fi
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
# shellcheck disable=1091,2046
|
||||
# vim: filetype=bash
|
||||
|
||||
export DOTFILES="$HOME/.dotfiles"
|
||||
|
||||
# Explicitly set XDG folders
|
||||
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
export XDG_CONFIG_HOME="$HOME/.config"
|
||||
export XDG_DATA_HOME="$HOME/.local/share"
|
||||
export XDG_STATE_HOME="$HOME/.local/state"
|
||||
|
||||
# custom variables
|
||||
export XDG_BIN_HOME="$HOME/.local/bin"
|
||||
export XDG_CACHE_HOME="$HOME/.cache"
|
||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||
|
||||
export LC_ALL=fi_FI.UTF-8
|
||||
|
||||
# Bash completion file location
|
||||
export BASH_COMPLETION_USER_FILE="${XDG_CONFIG_HOME}/bash-completion/bash_completion"
|
||||
|
||||
# History env variables
|
||||
export HIST_STAMPS="yyyy-mm-dd"
|
||||
# Larger bash history (allow 32³ entries; default is 500)
|
||||
export HISTSIZE=32768
|
||||
export HISTFILESIZE=$HISTSIZE
|
||||
# don't put duplicate lines or lines starting with space in the history.
|
||||
# See bash(1) for more options
|
||||
export HISTCONTROL=ignoreboth
|
||||
# Make some commands not show up in history
|
||||
export HISTIGNORE="ls:cd:cd -:pwd:exit:date:* --help"
|
||||
# And include the parameter for ZSH
|
||||
export HISTORY_IGNORE="(ls|cd|cd -|pwd|exit|date|* --help)"
|
||||
|
||||
# Less history location
|
||||
export LESSHISTFILE="$XDG_STATE_HOME"/less/history
|
||||
|
||||
# Highlight section titles in manual pages
|
||||
export LESS_TERMCAP_md="$ORANGE"
|
||||
|
||||
# zsh autoloaded terminfo
|
||||
export TERMINFO="$XDG_DATA_HOME"/terminfo
|
||||
export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
|
||||
|
||||
# Don’t clear the screen after quitting a manual page
|
||||
export MANPAGER="less -X"
|
||||
|
||||
# Always enable colored `grep` output
|
||||
export GREP_OPTIONS="--color=auto"
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
hash shopt 2> /dev/null && shopt -s checkwinsize
|
||||
|
||||
# Set dircolors based on the file, if it exists
|
||||
have dircolors && eval $(dircolors "$XDG_CONFIG_HOME/dircolors")
|
||||
|
||||
# If we are using zsh, color our dir lists and such
|
||||
if [ "$DOTFILES_CURRENT_SHELL" = "-zsh" ]; then
|
||||
[[ $ZSH_VERSION != "" ]] && {
|
||||
autoload -U colors zsh/terminfo compinit
|
||||
colors
|
||||
compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION"
|
||||
|
||||
x-dc "$XDG_CACHE_HOME/zsh"
|
||||
x-dc "$XDG_STATE_HOME/zsh"
|
||||
export HISTFILE="$XDG_STATE_HOME/zsh/history"
|
||||
zstyle ':completion:*' cache-path "$XDG_CACHE_HOME/zsh/zcompcache"
|
||||
zstyle ':completion:*' list-colors "$LS_COLORS"
|
||||
|
||||
# Load iterm2 shell integration
|
||||
# https://iterm2.com/documentation-shell-integration.html
|
||||
[[ -f "$XDG_BIN_HOME/iterm2_shell_integration.zsh" ]] \
|
||||
&& source "$XDG_BIN_HOME/iterm2_shell_integration.zsh"
|
||||
}
|
||||
fi
|
||||
|
||||
# If we are using bash
|
||||
if [ "$DOTFILES_CURRENT_SHELL" = "bash" ]; then
|
||||
# shellcheck source=../config/fzf/fzf.bash
|
||||
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] &&
|
||||
source "${DOTFILES}/config/fzf/fzf.bash"
|
||||
fi
|
||||
96
config/fish/alias.fish
Normal file
96
config/fish/alias.fish
Normal file
@@ -0,0 +1,96 @@
|
||||
# Set aliases for fish shell
|
||||
|
||||
alias vim='vim -u "$XDG_CONFIG_HOME/vim/vimrc"'
|
||||
|
||||
# eza aliases if eza is installed
|
||||
if type -q eza >/dev/null
|
||||
function eza_git -d "Use eza and its git options if in a git repo"
|
||||
if git rev-parse --is-inside-work-tree &>/dev/null
|
||||
eza --group-directories-first --icons=always \
|
||||
--smart-group --git $argv
|
||||
else
|
||||
eza --group-directories-first \
|
||||
--icons=always \
|
||||
--smart-group $argv
|
||||
end
|
||||
end
|
||||
|
||||
function lsa --wraps='eza_git -al' --description 'eza -al'
|
||||
eza_git -al $argv
|
||||
end
|
||||
|
||||
function ls --wraps='eza_git' --description eza
|
||||
eza_git $argv
|
||||
end
|
||||
|
||||
function ll --wraps='eza_git -l' --description 'eza -l'
|
||||
eza_git -l $argv
|
||||
end
|
||||
|
||||
function l --wraps='eza_git' --description eza
|
||||
eza_git $argv
|
||||
end
|
||||
end
|
||||
|
||||
# Edit fish alias file
|
||||
function .a \
|
||||
--wraps='nvim ~/.dotfiles/config/fish/alias.fish' \
|
||||
--description 'edit alias.fish'
|
||||
nvim ~/.dotfiles/config/fish/alias.fish $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my projects are stored
|
||||
function .c --wraps='cd ~/Code' --description 'cd ~/Code'
|
||||
cd ~/Code $argv
|
||||
end
|
||||
|
||||
# Go to the directory where the dotfiles are stored
|
||||
function .d --wraps='cd ~/.dotfiles' --description 'cd ~/.dotfiles'
|
||||
cd ~/.dotfiles $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my work codes are stored
|
||||
function .s --wraps='cd ~/Code/s' --description 'cd ~/Code/s'
|
||||
cd ~/Code/s $argv
|
||||
end
|
||||
|
||||
# Go to the directory where my personal codes are stored
|
||||
function .p --wraps='cd ~/Code/ivuorinen' --description 'cd ~/Code/ivuorinen'
|
||||
cd ~/Code/ivuorinen $argv
|
||||
end
|
||||
|
||||
# shortcut to commit with a message
|
||||
function commit \
|
||||
--wraps='git commit -a -m "chore: automated commit"' \
|
||||
--description 'commit shortcut'
|
||||
set -l commitMessage $argv
|
||||
git add .
|
||||
|
||||
if test -z "$commitMessage"
|
||||
if type -q aicommits
|
||||
aicommits --type conventional
|
||||
else
|
||||
git commit -a -m "chore: automated commit"
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
git commit -a -m "$commitMessage"
|
||||
end
|
||||
|
||||
function configure_tide \
|
||||
--description 'Configure tide with the lean style and my preferences'
|
||||
tide configure \
|
||||
--auto \
|
||||
--style=Lean \
|
||||
--prompt_colors='True color' \
|
||||
--show_time=No \
|
||||
--lean_prompt_height='Two lines' \
|
||||
--prompt_connection=Disconnected \
|
||||
--prompt_spacing=Sparse \
|
||||
--icons='Many icons' \
|
||||
--transient=Yes
|
||||
end
|
||||
|
||||
# Random abbreviations
|
||||
abbr --add stats onefetch --nerd-fonts --true-color never
|
||||
71
config/fish/completions/app.fish
Normal file
71
config/fish/completions/app.fish
Normal file
@@ -0,0 +1,71 @@
|
||||
# @halostatue/fish-macos/completions/app.fish:v7.0.1
|
||||
|
||||
complete --command app --erase
|
||||
|
||||
complete --command app --arguments bundleid \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Show bundle IDs for macOS apps'
|
||||
|
||||
complete --command app --arguments find \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Find macOS apps by pattern'
|
||||
|
||||
complete --command app --arguments frontmost \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows the front-most application'
|
||||
|
||||
complete --command app --arguments icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Extracts a MacOS app icon as a png file'
|
||||
|
||||
complete --command app --arguments quit \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Quit macOS apps by pattern'
|
||||
|
||||
for subcommand in bundleid find
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option a --long-option all --description 'Show all matches'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option q --long-option quiet --description 'Quiet (show no output)'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for app '$subcommand
|
||||
end
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'bundleid \
|
||||
--short-option s --long-option short --description 'Show only the bundle ID'
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option b --long-option bundle-id --description 'Shows the app bundle ID'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option p --long-option path --description 'Shows the app path'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option n --long-option name --description 'Shows the app name'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option P --long-option pid --description 'Shows the PID of the app'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option a --long-option all --description 'Shows all details'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'frontmost \
|
||||
--short-option h --long-option help --description 'Help for app 'frontmost
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option o --long-option output --description 'Extracts to this file or directory' \
|
||||
--force-files
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option w --long-option width --description 'Uses this pixel width' \
|
||||
--no-files
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'icon \
|
||||
--short-option h --long-option help --description 'Help for app 'icon
|
||||
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option x --long-option exact --description 'Exact matches only'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option r --long-option restart --description 'Restart after quit'
|
||||
complete --command app --condition '__fish_seen_subcommand_from 'quit \
|
||||
--short-option h --long-option help --description 'Help for app 'quit
|
||||
124
config/fish/completions/aqua.fish
Normal file
124
config/fish/completions/aqua.fish
Normal file
@@ -0,0 +1,124 @@
|
||||
# aqua fish shell completion
|
||||
|
||||
function __fish_aqua_no_subcommand --description 'Test if there has been any subcommand yet'
|
||||
for i in (commandline -opc)
|
||||
if contains -- $i init install i generate g update-aqua upa update-checksum upc update up completion bash zsh fish help h help h which info remove rm vacuum cp policy allow deny init init-policy exec list generate-registry gr version root-dir help h
|
||||
return 1
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l log-level -r -d 'log level'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l config -s c -r -d 'configuration file path'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l disable-cosign -d 'Disable Cosign verification'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l disable-slsa -d 'Disable SLSA verification'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l disable-github-artifact-attestation -d 'Disable GitHub Artifact Attestations verification'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l trace -r -d 'trace output file path'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l cpu-profile -r -d 'cpu profile output file path'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n __fish_aqua_no_subcommand -f -l version -s v -d 'print the version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a init -d 'Create a configuration file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l use-import-dir -s u -d 'Use import_dir'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l import-dir -s i -r -d import_dir
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l create-dir -s d -d 'Create a directory named aqua and create aqua.yaml in it'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'install i' -d 'Install tools'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l only-link -s l -d 'create links but skip downloading packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l test -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1691'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from install i' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'generate g' -d 'Search packages in registries and output the configuration interactively'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l f -r -d 'the file path of packages list. When the value is "-", the list is passed from the standard input'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l i -d 'Insert packages to configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l pin -d 'Pin version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l g -d 'Insert packages in a global configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l detail -s d -d 'Output additional fields such as description and link'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l o -r -d 'inserted file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l select-version -s s -d 'Select the installed version interactively. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate g' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-aqua upa' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'update-aqua upa' -d 'Update aqua'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'update-checksum upc' -d 'Create or Update aqua-checksums.json'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l all -s a -d 'Create or Update all aqua-checksums.json including global configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.0.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/1769'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update-checksum upc' -f -l prune -d 'Remove unused checksums'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'update up' -d 'Update registries and packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l i -d 'Select packages with fuzzy finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l select-version -s s -d 'Select the version with fuzzy finder. Default to display 30 versions, use --limit/-l to change it.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-registry -s r -d 'Update only registries'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l only-package -s p -d 'Update only packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l limit -s l -r -d 'The maximum number of versions. Non-positive number refers to no limit.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from update up' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a completion -d 'Output shell completion script for bash, zsh, or fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from completion' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from bash' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a bash -d 'Output shell completion script for bash'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from zsh' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a zsh -d 'Output shell completion script for zsh'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a fish -d 'Output shell completion script for fish'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from fish' -f -l help -s h -d 'show help'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from fish' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from completion' -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a which -d 'Output the absolute file path of the given command'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from which' -f -l version -s v -d 'Output the given package version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from info' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a info -d 'Show information'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'remove rm' -d 'Uninstall packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l all -s a -d 'uninstall all packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l mode -s m -r -d 'Removed target modes. l: link, p: package'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from remove rm' -f -l i -d 'Select packages with a Fuzzy Finder'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a vacuum -d 'Remove unused installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l init -d 'Create timestamp files.'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from vacuum' -f -l days -s d -r -d 'Expiration days'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a cp -d 'Copy executable files in a directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l o -r -d 'destination directory'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l all -s a -d 'install all aqua configuration packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l tags -s t -r -d 'filter installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from cp' -f -l exclude-tags -r -d 'exclude installed packages with tags'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a policy -d 'Manage Policy'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from allow' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a allow -d 'Allow a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from deny' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a deny -d 'Deny a policy file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n '__fish_seen_subcommand_from policy' -a init -d 'Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from init-policy' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a init-policy -d '[Deprecated] Create a policy file if it doesn\'t exist'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from exec' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a exec -d 'Execute tool'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a list -d 'List packages in Registries'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l installed -s i -d 'List installed packages'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from list' -f -l all -s a -d 'List global configuration packages too'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'generate-registry gr' -d 'Generate a registry\'s package configuration'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l out-testdata -r -d 'A file path where the testdata is outputted'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l cmd -r -d 'A list of commands joined with commas \',\''
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l generate-config -s c -r -d 'A configuration file path'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l limit -s l -r -d 'the maximum number of versions'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l deep -d 'This flag was deprecated and had no meaning from aqua v2.15.0. This flag will be removed in aqua v3.0.0. https://github.com/aquaproj/aqua/issues/2351'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from generate-registry gr' -f -l init -d 'Generate a configuration file'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from version' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a version -d 'Show version'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from root-dir' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a root-dir -d 'Output the aqua root directory (AQUA_ROOT_DIR)'
|
||||
complete -c aqua -n '__fish_seen_subcommand_from help h' -f -l help -s h -d 'show help'
|
||||
complete -r -c aqua -n __fish_aqua_no_subcommand -a 'help h' -d 'Shows a list of commands or help for one command'
|
||||
71
config/fish/completions/bob.fish
Normal file
71
config/fish/completions/bob.fish
Normal file
@@ -0,0 +1,71 @@
|
||||
# Print an optspec for argparse to handle cmd's options that are independent of any subcommand.
|
||||
function __fish_bob_global_optspecs
|
||||
string join \n h/help V/version
|
||||
end
|
||||
|
||||
function __fish_bob_needs_command
|
||||
# Figure out if the current invocation already has a command.
|
||||
set -l cmd (commandline -opc)
|
||||
set -e cmd[1]
|
||||
argparse -s (__fish_bob_global_optspecs) -- $cmd 2>/dev/null
|
||||
or return
|
||||
if set -q argv[1]
|
||||
# Also print the command, so this can be used to figure out what it is.
|
||||
echo $argv[1]
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function __fish_bob_using_subcommand
|
||||
set -l cmd (__fish_bob_needs_command)
|
||||
test -z "$cmd"
|
||||
and return 1
|
||||
contains -- $cmd[1] $argv
|
||||
end
|
||||
|
||||
complete -c bob -n __fish_bob_needs_command -s h -l help -d 'Print help'
|
||||
complete -c bob -n __fish_bob_needs_command -s V -l version -d 'Print version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a use -d 'Switch to the specified version, by default will auto-invoke install command if the version is not installed already'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a install -d 'Install the specified version, can also be used to update out-of-date nightly version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a sync -d 'If Config::version_sync_file_location is set, the version in that file will be parsed and installed'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a uninstall -d 'Uninstall the specified version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a rm -d 'Uninstall the specified version'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a rollback -d 'Rollback to an existing nightly rollback'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a erase -d 'Erase any change bob ever made, including neovim installation, neovim version downloads and registry changes'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a list -d 'List all installed and used versions'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a ls -d 'List all installed and used versions'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a list-remote
|
||||
complete -c bob -n __fish_bob_needs_command -f -a ls-remote
|
||||
complete -c bob -n __fish_bob_needs_command -f -a complete -d 'Generate shell completion'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a update -d 'Update existing version |nightly|stable|--all|'
|
||||
complete -c bob -n __fish_bob_needs_command -f -a run
|
||||
complete -c bob -n __fish_bob_needs_command -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
complete -c bob -n "__fish_bob_using_subcommand use" -s n -l no-install -d 'Whether not to auto-invoke install command'
|
||||
complete -c bob -n "__fish_bob_using_subcommand use" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c bob -n "__fish_bob_using_subcommand install" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c bob -n "__fish_bob_using_subcommand sync" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand uninstall" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c bob -n "__fish_bob_using_subcommand rm" -s h -l help -d 'Print help (see more with \'--help\')'
|
||||
complete -c bob -n "__fish_bob_using_subcommand rollback" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand erase" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand list" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand ls" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand list-remote" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand ls-remote" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand complete" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand update" -s a -l all -d 'Apply the update to all versions'
|
||||
complete -c bob -n "__fish_bob_using_subcommand update" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand run" -s h -l help -d 'Print help'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a use -d 'Switch to the specified version, by default will auto-invoke install command if the version is not installed already'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a install -d 'Install the specified version, can also be used to update out-of-date nightly version'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a sync -d 'If Config::version_sync_file_location is set, the version in that file will be parsed and installed'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a uninstall -d 'Uninstall the specified version'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a rollback -d 'Rollback to an existing nightly rollback'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a erase -d 'Erase any change bob ever made, including neovim installation, neovim version downloads and registry changes'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a list -d 'List all installed and used versions'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a list-remote
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a complete -d 'Generate shell completion'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a update -d 'Update existing version |nightly|stable|--all|'
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a run
|
||||
complete -c bob -n "__fish_bob_using_subcommand help; and not __fish_seen_subcommand_from use install sync uninstall rollback erase list list-remote complete update run help" -f -a help -d 'Print this message or the help of the given subcommand(s)'
|
||||
234
config/fish/completions/docker.fish
Executable file
234
config/fish/completions/docker.fish
Executable file
@@ -0,0 +1,234 @@
|
||||
# fish completion for docker -*- shell-script -*-
|
||||
|
||||
function __docker_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
function __docker_perform_completion
|
||||
__docker_debug "Starting __docker_perform_completion"
|
||||
|
||||
# Extract all args except the last one
|
||||
set -l args (commandline -opc)
|
||||
# Extract the last arg and escape it in case it is a space
|
||||
set -l lastArg (string escape -- (commandline -ct))
|
||||
|
||||
__docker_debug "args: $args"
|
||||
__docker_debug "last arg: $lastArg"
|
||||
|
||||
# Disable ActiveHelp which is not supported for fish shell
|
||||
set -l requestComp "DOCKER_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
|
||||
|
||||
__docker_debug "Calling $requestComp"
|
||||
set -l results (eval $requestComp 2> /dev/null)
|
||||
|
||||
# Some programs may output extra empty lines after the directive.
|
||||
# Let's ignore them or else it will break completion.
|
||||
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||
for line in $results[-1..1]
|
||||
if test (string trim -- $line) = ""
|
||||
# Found an empty line, remove it
|
||||
set results $results[1..-2]
|
||||
else
|
||||
# Found non-empty line, we have our proper output
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
set -l comps $results[1..-2]
|
||||
set -l directiveLine $results[-1]
|
||||
|
||||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||
# completions must be prefixed with the flag
|
||||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||
|
||||
__docker_debug "Comps: $comps"
|
||||
__docker_debug "DirectiveLine: $directiveLine"
|
||||
__docker_debug "flagPrefix: $flagPrefix"
|
||||
|
||||
for comp in $comps
|
||||
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||
end
|
||||
|
||||
printf "%s\n" "$directiveLine"
|
||||
end
|
||||
|
||||
# this function limits calls to __docker_perform_completion, by caching the result behind $__docker_perform_completion_once_result
|
||||
function __docker_perform_completion_once
|
||||
__docker_debug "Starting __docker_perform_completion_once"
|
||||
|
||||
if test -n "$__docker_perform_completion_once_result"
|
||||
__docker_debug "Seems like a valid result already exists, skipping __docker_perform_completion"
|
||||
return 0
|
||||
end
|
||||
|
||||
set --global __docker_perform_completion_once_result (__docker_perform_completion)
|
||||
if test -z "$__docker_perform_completion_once_result"
|
||||
__docker_debug "No completions, probably due to a failure"
|
||||
return 1
|
||||
end
|
||||
|
||||
__docker_debug "Performed completions and set __docker_perform_completion_once_result"
|
||||
return 0
|
||||
end
|
||||
|
||||
# this function is used to clear the $__docker_perform_completion_once_result variable after completions are run
|
||||
function __docker_clear_perform_completion_once_result
|
||||
__docker_debug ""
|
||||
__docker_debug "========= clearing previously set __docker_perform_completion_once_result variable =========="
|
||||
set --erase __docker_perform_completion_once_result
|
||||
__docker_debug "Successfully erased the variable __docker_perform_completion_once_result"
|
||||
end
|
||||
|
||||
function __docker_requires_order_preservation
|
||||
__docker_debug ""
|
||||
__docker_debug "========= checking if order preservation is required =========="
|
||||
|
||||
__docker_perform_completion_once
|
||||
if test -z "$__docker_perform_completion_once_result"
|
||||
__docker_debug "Error determining if order preservation is required"
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $__docker_perform_completion_once_result[-1])
|
||||
__docker_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveKeepOrder 32
|
||||
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
|
||||
__docker_debug "Keeporder is: $keeporder"
|
||||
|
||||
if test $keeporder -ne 0
|
||||
__docker_debug "This does require order preservation"
|
||||
return 0
|
||||
end
|
||||
|
||||
__docker_debug "This doesn't require order preservation"
|
||||
return 1
|
||||
end
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __docker_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
function __docker_prepare_completions
|
||||
__docker_debug ""
|
||||
__docker_debug "========= starting completion logic =========="
|
||||
|
||||
# Start fresh
|
||||
set --erase __docker_comp_results
|
||||
|
||||
__docker_perform_completion_once
|
||||
__docker_debug "Completion results: $__docker_perform_completion_once_result"
|
||||
|
||||
if test -z "$__docker_perform_completion_once_result"
|
||||
__docker_debug "No completion, probably due to a failure"
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $__docker_perform_completion_once_result[-1])
|
||||
set --global __docker_comp_results $__docker_perform_completion_once_result[1..-2]
|
||||
|
||||
__docker_debug "Completions are: $__docker_comp_results"
|
||||
__docker_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveError 1
|
||||
set -l shellCompDirectiveNoSpace 2
|
||||
set -l shellCompDirectiveNoFileComp 4
|
||||
set -l shellCompDirectiveFilterFileExt 8
|
||||
set -l shellCompDirectiveFilterDirs 16
|
||||
|
||||
if test -z "$directive"
|
||||
set directive 0
|
||||
end
|
||||
|
||||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||
if test $compErr -eq 1
|
||||
__docker_debug "Received error directive: aborting."
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||
__docker_debug "File extension filtering or directory filtering not supported"
|
||||
# Do full file completion instead
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||
|
||||
__docker_debug "nospace: $nospace, nofiles: $nofiles"
|
||||
|
||||
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||
# we need to count the number of valid completions.
|
||||
# To do so, we will filter on prefix as the completions we have received
|
||||
# may not already be filtered so as to allow fish to match on different
|
||||
# criteria than the prefix.
|
||||
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||
set -l prefix (commandline -t | string escape --style=regex)
|
||||
__docker_debug "prefix: $prefix"
|
||||
|
||||
set -l completions (string match -r -- "^$prefix.*" $__docker_comp_results)
|
||||
set --global __docker_comp_results $completions
|
||||
__docker_debug "Filtered completions are: $__docker_comp_results"
|
||||
|
||||
# Important not to quote the variable for count to work
|
||||
set -l numComps (count $__docker_comp_results)
|
||||
__docker_debug "numComps: $numComps"
|
||||
|
||||
if test $numComps -eq 1; and test $nospace -ne 0
|
||||
# We must first split on \t to get rid of the descriptions to be
|
||||
# able to check what the actual completion will be.
|
||||
# We don't need descriptions anyway since there is only a single
|
||||
# real completion which the shell will expand immediately.
|
||||
set -l split (string split --max 1 \t $__docker_comp_results[1])
|
||||
|
||||
# Fish won't add a space if the completion ends with any
|
||||
# of the following characters: @=/:.,
|
||||
set -l lastChar (string sub -s -1 -- $split)
|
||||
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||
# In other cases, to support the "nospace" directive we trick the shell
|
||||
# by outputting an extra, longer completion.
|
||||
__docker_debug "Adding second completion to perform nospace directive"
|
||||
set --global __docker_comp_results $split[1] $split[1].
|
||||
__docker_debug "Completions are now: $__docker_comp_results"
|
||||
end
|
||||
end
|
||||
|
||||
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||
# To be consistent with bash and zsh, we only trigger file
|
||||
# completion when there are no other completions
|
||||
__docker_debug "Requesting file completion"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q docker
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "docker " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c docker -e
|
||||
|
||||
# this will get called after the two calls below and clear the $__docker_perform_completion_once_result global
|
||||
complete -c docker -n __docker_clear_perform_completion_once_result
|
||||
# The call to __docker_prepare_completions will setup __docker_comp_results
|
||||
# which provides the program's completion choices.
|
||||
# If this doesn't require order preservation, we don't use the -k flag
|
||||
complete -c docker -n 'not __docker_requires_order_preservation && __docker_prepare_completions' -f -a '$__docker_comp_results'
|
||||
# otherwise we use the -k flag
|
||||
complete -k -c docker -n '__docker_requires_order_preservation && __docker_prepare_completions' -f -a '$__docker_comp_results'
|
||||
70
config/fish/completions/finder.fish
Normal file
70
config/fish/completions/finder.fish
Normal file
@@ -0,0 +1,70 @@
|
||||
# @halostatue/fish-macos/completions/finder.fish:v7.0.1
|
||||
|
||||
complete --command finder --erase
|
||||
|
||||
complete --command finder --arguments track \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Enables Finder PWD tracking'
|
||||
complete --command finder --arguments untrack \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Disables Finder PWD tracking'
|
||||
complete --command finder --arguments pwd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Prints the path of the Finder window'
|
||||
complete --command finder --arguments cd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes to the path of the Finder window'
|
||||
complete --command finder --arguments pushd \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Pushes to the path of the Finder window'
|
||||
complete --command finder --arguments update \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Updates the Finder to PWD'
|
||||
complete --command finder --arguments list \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to list view with PWD'
|
||||
complete --command finder --arguments icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to icon view with PWD'
|
||||
complete --command finder --arguments column \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Sets Finder to column view with PWD'
|
||||
complete --command finder --arguments hidden \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows or hides `hidden` files'
|
||||
complete --command finder --arguments desktop-icons \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Shows or hides desktop icons'
|
||||
complete --command finder --arguments clean \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Cleans .DS_Store files'
|
||||
complete --command finder --arguments quarantine \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Works with file quarantine data'
|
||||
complete --command finder --arguments selected \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Print Finder selected files'
|
||||
|
||||
for subcommand in cd clean column desktop-icons hidden icon list pushd pwd quarantine selected track untrack update
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for finder '$subcommand
|
||||
end
|
||||
|
||||
for subcommand in hidden desktop-icons
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments off --description 'Turns '$subcommand' off'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments on --description 'Turns '$subcommand' on'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments toggle --description 'Toggles '$subcommand
|
||||
complete --command finder --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments status --description 'Shows the status of '$subcommand
|
||||
end
|
||||
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments show --description 'Shows quarantine events'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments clear --description 'Clears all quarantine events'
|
||||
complete --command finder --condition '__fish_seen_subcommand_from 'quarantine \
|
||||
--arguments clean --description 'Removes 'quarantine' attributes from files' \
|
||||
--require-parameter --force-files
|
||||
7
config/fish/completions/fisher.fish
Normal file
7
config/fish/completions/fisher.fish
Normal file
@@ -0,0 +1,7 @@
|
||||
complete --command fisher --exclusive --long help --description "Print help"
|
||||
complete --command fisher --exclusive --long version --description "Print version"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins"
|
||||
complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex"
|
||||
complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)"
|
||||
8
config/fish/completions/fzf_configure_bindings.fish
Normal file
8
config/fish/completions/fzf_configure_bindings.fish
Normal file
@@ -0,0 +1,8 @@
|
||||
complete fzf_configure_bindings --no-files
|
||||
complete fzf_configure_bindings --long help --short h --description "Print help" --condition "not __fish_seen_argument --help -h"
|
||||
complete fzf_configure_bindings --long directory --description "Change the key binding for Search Directory" --condition "not __fish_seen_argument --directory"
|
||||
complete fzf_configure_bindings --long git_log --description "Change the key binding for Search Git Log" --condition "not __fish_seen_argument --git_log"
|
||||
complete fzf_configure_bindings --long git_status --description "Change the key binding for Search Git Status" --condition "not __fish_seen_argument --git_status"
|
||||
complete fzf_configure_bindings --long history --description "Change the key binding for Search History" --condition "not __fish_seen_argument --history"
|
||||
complete fzf_configure_bindings --long processes --description "Change the key binding for Search Processes" --condition "not __fish_seen_argument --processes"
|
||||
complete fzf_configure_bindings --long variables --description "Change the key binding for Search Variables" --condition "not __fish_seen_argument --variables"
|
||||
175
config/fish/completions/git-profile.fish
Normal file
175
config/fish/completions/git-profile.fish
Normal file
@@ -0,0 +1,175 @@
|
||||
# fish completion for git-profile -*- shell-script -*-
|
||||
|
||||
function __git_profile_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
function __git_profile_perform_completion
|
||||
__git_profile_debug "Starting __git_profile_perform_completion"
|
||||
|
||||
# Extract all args except the last one
|
||||
set -l args (commandline -opc)
|
||||
# Extract the last arg and escape it in case it is a space
|
||||
set -l lastArg (string escape -- (commandline -ct))
|
||||
|
||||
__git_profile_debug "args: $args"
|
||||
__git_profile_debug "last arg: $lastArg"
|
||||
|
||||
set -l requestComp "$args[1] __complete $args[2..-1] $lastArg"
|
||||
|
||||
__git_profile_debug "Calling $requestComp"
|
||||
set -l results (eval $requestComp 2> /dev/null)
|
||||
|
||||
# Some programs may output extra empty lines after the directive.
|
||||
# Let's ignore them or else it will break completion.
|
||||
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||
for line in $results[-1..1]
|
||||
if test (string trim -- $line) = ""
|
||||
# Found an empty line, remove it
|
||||
set results $results[1..-2]
|
||||
else
|
||||
# Found non-empty line, we have our proper output
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
set -l comps $results[1..-2]
|
||||
set -l directiveLine $results[-1]
|
||||
|
||||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||
# completions must be prefixed with the flag
|
||||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||
|
||||
__git_profile_debug "Comps: $comps"
|
||||
__git_profile_debug "DirectiveLine: $directiveLine"
|
||||
__git_profile_debug "flagPrefix: $flagPrefix"
|
||||
|
||||
for comp in $comps
|
||||
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||
end
|
||||
|
||||
printf "%s\n" "$directiveLine"
|
||||
end
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __git_profile_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
function __git_profile_prepare_completions
|
||||
__git_profile_debug ""
|
||||
__git_profile_debug "========= starting completion logic =========="
|
||||
|
||||
# Start fresh
|
||||
set --erase __git_profile_comp_results
|
||||
|
||||
set -l results (__git_profile_perform_completion)
|
||||
__git_profile_debug "Completion results: $results"
|
||||
|
||||
if test -z "$results"
|
||||
__git_profile_debug "No completion, probably due to a failure"
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $results[-1])
|
||||
set --global __git_profile_comp_results $results[1..-2]
|
||||
|
||||
__git_profile_debug "Completions are: $__git_profile_comp_results"
|
||||
__git_profile_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveError 1
|
||||
set -l shellCompDirectiveNoSpace 2
|
||||
set -l shellCompDirectiveNoFileComp 4
|
||||
set -l shellCompDirectiveFilterFileExt 8
|
||||
set -l shellCompDirectiveFilterDirs 16
|
||||
|
||||
if test -z "$directive"
|
||||
set directive 0
|
||||
end
|
||||
|
||||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||
if test $compErr -eq 1
|
||||
__git_profile_debug "Received error directive: aborting."
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||
__git_profile_debug "File extension filtering or directory filtering not supported"
|
||||
# Do full file completion instead
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||
|
||||
__git_profile_debug "nospace: $nospace, nofiles: $nofiles"
|
||||
|
||||
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||
# we need to count the number of valid completions.
|
||||
# To do so, we will filter on prefix as the completions we have received
|
||||
# may not already be filtered so as to allow fish to match on different
|
||||
# criteria than the prefix.
|
||||
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||
set -l prefix (commandline -t | string escape --style=regex)
|
||||
__git_profile_debug "prefix: $prefix"
|
||||
|
||||
set -l completions (string match -r -- "^$prefix.*" $__git_profile_comp_results)
|
||||
set --global __git_profile_comp_results $completions
|
||||
__git_profile_debug "Filtered completions are: $__git_profile_comp_results"
|
||||
|
||||
# Important not to quote the variable for count to work
|
||||
set -l numComps (count $__git_profile_comp_results)
|
||||
__git_profile_debug "numComps: $numComps"
|
||||
|
||||
if test $numComps -eq 1; and test $nospace -ne 0
|
||||
# We must first split on \t to get rid of the descriptions to be
|
||||
# able to check what the actual completion will be.
|
||||
# We don't need descriptions anyway since there is only a single
|
||||
# real completion which the shell will expand immediately.
|
||||
set -l split (string split --max 1 \t $__git_profile_comp_results[1])
|
||||
|
||||
# Fish won't add a space if the completion ends with any
|
||||
# of the following characters: @=/:.,
|
||||
set -l lastChar (string sub -s -1 -- $split)
|
||||
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||
# In other cases, to support the "nospace" directive we trick the shell
|
||||
# by outputting an extra, longer completion.
|
||||
__git_profile_debug "Adding second completion to perform nospace directive"
|
||||
set --global __git_profile_comp_results $split[1] $split[1].
|
||||
__git_profile_debug "Completions are now: $__git_profile_comp_results"
|
||||
end
|
||||
end
|
||||
|
||||
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||
# To be consistent with bash and zsh, we only trigger file
|
||||
# completion when there are no other completions
|
||||
__git_profile_debug "Requesting file completion"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q git-profile
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "git-profile " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c git-profile -e
|
||||
|
||||
# The call to __git_profile_prepare_completions will setup __git_profile_comp_results
|
||||
# which provides the program's completion choices.
|
||||
complete -c git-profile -n __git_profile_prepare_completions -f -a '$__git_profile_comp_results'
|
||||
234
config/fish/completions/golangci-lint.fish
Normal file
234
config/fish/completions/golangci-lint.fish
Normal file
@@ -0,0 +1,234 @@
|
||||
# fish completion for golangci-lint -*- shell-script -*-
|
||||
|
||||
function __golangci_lint_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
function __golangci_lint_perform_completion
|
||||
__golangci_lint_debug "Starting __golangci_lint_perform_completion"
|
||||
|
||||
# Extract all args except the last one
|
||||
set -l args (commandline -opc)
|
||||
# Extract the last arg and escape it in case it is a space
|
||||
set -l lastArg (string escape -- (commandline -ct))
|
||||
|
||||
__golangci_lint_debug "args: $args"
|
||||
__golangci_lint_debug "last arg: $lastArg"
|
||||
|
||||
# Disable ActiveHelp which is not supported for fish shell
|
||||
set -l requestComp "GOLANGCI_LINT_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
|
||||
|
||||
__golangci_lint_debug "Calling $requestComp"
|
||||
set -l results (eval $requestComp 2> /dev/null)
|
||||
|
||||
# Some programs may output extra empty lines after the directive.
|
||||
# Let's ignore them or else it will break completion.
|
||||
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||
for line in $results[-1..1]
|
||||
if test (string trim -- $line) = ""
|
||||
# Found an empty line, remove it
|
||||
set results $results[1..-2]
|
||||
else
|
||||
# Found non-empty line, we have our proper output
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
set -l comps $results[1..-2]
|
||||
set -l directiveLine $results[-1]
|
||||
|
||||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||
# completions must be prefixed with the flag
|
||||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||
|
||||
__golangci_lint_debug "Comps: $comps"
|
||||
__golangci_lint_debug "DirectiveLine: $directiveLine"
|
||||
__golangci_lint_debug "flagPrefix: $flagPrefix"
|
||||
|
||||
for comp in $comps
|
||||
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||
end
|
||||
|
||||
printf "%s\n" "$directiveLine"
|
||||
end
|
||||
|
||||
# this function limits calls to __golangci_lint_perform_completion, by caching the result behind $__golangci_lint_perform_completion_once_result
|
||||
function __golangci_lint_perform_completion_once
|
||||
__golangci_lint_debug "Starting __golangci_lint_perform_completion_once"
|
||||
|
||||
if test -n "$__golangci_lint_perform_completion_once_result"
|
||||
__golangci_lint_debug "Seems like a valid result already exists, skipping __golangci_lint_perform_completion"
|
||||
return 0
|
||||
end
|
||||
|
||||
set --global __golangci_lint_perform_completion_once_result (__golangci_lint_perform_completion)
|
||||
if test -z "$__golangci_lint_perform_completion_once_result"
|
||||
__golangci_lint_debug "No completions, probably due to a failure"
|
||||
return 1
|
||||
end
|
||||
|
||||
__golangci_lint_debug "Performed completions and set __golangci_lint_perform_completion_once_result"
|
||||
return 0
|
||||
end
|
||||
|
||||
# this function is used to clear the $__golangci_lint_perform_completion_once_result variable after completions are run
|
||||
function __golangci_lint_clear_perform_completion_once_result
|
||||
__golangci_lint_debug ""
|
||||
__golangci_lint_debug "========= clearing previously set __golangci_lint_perform_completion_once_result variable =========="
|
||||
set --erase __golangci_lint_perform_completion_once_result
|
||||
__golangci_lint_debug "Successfully erased the variable __golangci_lint_perform_completion_once_result"
|
||||
end
|
||||
|
||||
function __golangci_lint_requires_order_preservation
|
||||
__golangci_lint_debug ""
|
||||
__golangci_lint_debug "========= checking if order preservation is required =========="
|
||||
|
||||
__golangci_lint_perform_completion_once
|
||||
if test -z "$__golangci_lint_perform_completion_once_result"
|
||||
__golangci_lint_debug "Error determining if order preservation is required"
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $__golangci_lint_perform_completion_once_result[-1])
|
||||
__golangci_lint_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveKeepOrder 32
|
||||
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
|
||||
__golangci_lint_debug "Keeporder is: $keeporder"
|
||||
|
||||
if test $keeporder -ne 0
|
||||
__golangci_lint_debug "This does require order preservation"
|
||||
return 0
|
||||
end
|
||||
|
||||
__golangci_lint_debug "This doesn't require order preservation"
|
||||
return 1
|
||||
end
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __golangci_lint_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
function __golangci_lint_prepare_completions
|
||||
__golangci_lint_debug ""
|
||||
__golangci_lint_debug "========= starting completion logic =========="
|
||||
|
||||
# Start fresh
|
||||
set --erase __golangci_lint_comp_results
|
||||
|
||||
__golangci_lint_perform_completion_once
|
||||
__golangci_lint_debug "Completion results: $__golangci_lint_perform_completion_once_result"
|
||||
|
||||
if test -z "$__golangci_lint_perform_completion_once_result"
|
||||
__golangci_lint_debug "No completion, probably due to a failure"
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $__golangci_lint_perform_completion_once_result[-1])
|
||||
set --global __golangci_lint_comp_results $__golangci_lint_perform_completion_once_result[1..-2]
|
||||
|
||||
__golangci_lint_debug "Completions are: $__golangci_lint_comp_results"
|
||||
__golangci_lint_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveError 1
|
||||
set -l shellCompDirectiveNoSpace 2
|
||||
set -l shellCompDirectiveNoFileComp 4
|
||||
set -l shellCompDirectiveFilterFileExt 8
|
||||
set -l shellCompDirectiveFilterDirs 16
|
||||
|
||||
if test -z "$directive"
|
||||
set directive 0
|
||||
end
|
||||
|
||||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||
if test $compErr -eq 1
|
||||
__golangci_lint_debug "Received error directive: aborting."
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||
__golangci_lint_debug "File extension filtering or directory filtering not supported"
|
||||
# Do full file completion instead
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||
|
||||
__golangci_lint_debug "nospace: $nospace, nofiles: $nofiles"
|
||||
|
||||
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||
# we need to count the number of valid completions.
|
||||
# To do so, we will filter on prefix as the completions we have received
|
||||
# may not already be filtered so as to allow fish to match on different
|
||||
# criteria than the prefix.
|
||||
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||
set -l prefix (commandline -t | string escape --style=regex)
|
||||
__golangci_lint_debug "prefix: $prefix"
|
||||
|
||||
set -l completions (string match -r -- "^$prefix.*" $__golangci_lint_comp_results)
|
||||
set --global __golangci_lint_comp_results $completions
|
||||
__golangci_lint_debug "Filtered completions are: $__golangci_lint_comp_results"
|
||||
|
||||
# Important not to quote the variable for count to work
|
||||
set -l numComps (count $__golangci_lint_comp_results)
|
||||
__golangci_lint_debug "numComps: $numComps"
|
||||
|
||||
if test $numComps -eq 1; and test $nospace -ne 0
|
||||
# We must first split on \t to get rid of the descriptions to be
|
||||
# able to check what the actual completion will be.
|
||||
# We don't need descriptions anyway since there is only a single
|
||||
# real completion which the shell will expand immediately.
|
||||
set -l split (string split --max 1 \t $__golangci_lint_comp_results[1])
|
||||
|
||||
# Fish won't add a space if the completion ends with any
|
||||
# of the following characters: @=/:.,
|
||||
set -l lastChar (string sub -s -1 -- $split)
|
||||
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||
# In other cases, to support the "nospace" directive we trick the shell
|
||||
# by outputting an extra, longer completion.
|
||||
__golangci_lint_debug "Adding second completion to perform nospace directive"
|
||||
set --global __golangci_lint_comp_results $split[1] $split[1].
|
||||
__golangci_lint_debug "Completions are now: $__golangci_lint_comp_results"
|
||||
end
|
||||
end
|
||||
|
||||
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||
# To be consistent with bash and zsh, we only trigger file
|
||||
# completion when there are no other completions
|
||||
__golangci_lint_debug "Requesting file completion"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q golangci-lint
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "golangci-lint " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c golangci-lint -e
|
||||
|
||||
# this will get called after the two calls below and clear the $__golangci_lint_perform_completion_once_result global
|
||||
complete -c golangci-lint -n __golangci_lint_clear_perform_completion_once_result
|
||||
# The call to __golangci_lint_prepare_completions will setup __golangci_lint_comp_results
|
||||
# which provides the program's completion choices.
|
||||
# If this doesn't require order preservation, we don't use the -k flag
|
||||
complete -c golangci-lint -n 'not __golangci_lint_requires_order_preservation && __golangci_lint_prepare_completions' -f -a '$__golangci_lint_comp_results'
|
||||
# otherwise we use the -k flag
|
||||
complete -k -c golangci-lint -n '__golangci_lint_requires_order_preservation && __golangci_lint_prepare_completions' -f -a '$__golangci_lint_comp_results'
|
||||
234
config/fish/completions/grype.fish
Normal file
234
config/fish/completions/grype.fish
Normal file
@@ -0,0 +1,234 @@
|
||||
# fish completion for grype -*- shell-script -*-
|
||||
|
||||
function __grype_debug
|
||||
set -l file "$BASH_COMP_DEBUG_FILE"
|
||||
if test -n "$file"
|
||||
echo "$argv" >>$file
|
||||
end
|
||||
end
|
||||
|
||||
function __grype_perform_completion
|
||||
__grype_debug "Starting __grype_perform_completion"
|
||||
|
||||
# Extract all args except the last one
|
||||
set -l args (commandline -opc)
|
||||
# Extract the last arg and escape it in case it is a space
|
||||
set -l lastArg (string escape -- (commandline -ct))
|
||||
|
||||
__grype_debug "args: $args"
|
||||
__grype_debug "last arg: $lastArg"
|
||||
|
||||
# Disable ActiveHelp which is not supported for fish shell
|
||||
set -l requestComp "GRYPE_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg"
|
||||
|
||||
__grype_debug "Calling $requestComp"
|
||||
set -l results (eval $requestComp 2> /dev/null)
|
||||
|
||||
# Some programs may output extra empty lines after the directive.
|
||||
# Let's ignore them or else it will break completion.
|
||||
# Ref: https://github.com/spf13/cobra/issues/1279
|
||||
for line in $results[-1..1]
|
||||
if test (string trim -- $line) = ""
|
||||
# Found an empty line, remove it
|
||||
set results $results[1..-2]
|
||||
else
|
||||
# Found non-empty line, we have our proper output
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
set -l comps $results[1..-2]
|
||||
set -l directiveLine $results[-1]
|
||||
|
||||
# For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>)
|
||||
# completions must be prefixed with the flag
|
||||
set -l flagPrefix (string match -r -- '-.*=' "$lastArg")
|
||||
|
||||
__grype_debug "Comps: $comps"
|
||||
__grype_debug "DirectiveLine: $directiveLine"
|
||||
__grype_debug "flagPrefix: $flagPrefix"
|
||||
|
||||
for comp in $comps
|
||||
printf "%s%s\n" "$flagPrefix" "$comp"
|
||||
end
|
||||
|
||||
printf "%s\n" "$directiveLine"
|
||||
end
|
||||
|
||||
# this function limits calls to __grype_perform_completion, by caching the result behind $__grype_perform_completion_once_result
|
||||
function __grype_perform_completion_once
|
||||
__grype_debug "Starting __grype_perform_completion_once"
|
||||
|
||||
if test -n "$__grype_perform_completion_once_result"
|
||||
__grype_debug "Seems like a valid result already exists, skipping __grype_perform_completion"
|
||||
return 0
|
||||
end
|
||||
|
||||
set --global __grype_perform_completion_once_result (__grype_perform_completion)
|
||||
if test -z "$__grype_perform_completion_once_result"
|
||||
__grype_debug "No completions, probably due to a failure"
|
||||
return 1
|
||||
end
|
||||
|
||||
__grype_debug "Performed completions and set __grype_perform_completion_once_result"
|
||||
return 0
|
||||
end
|
||||
|
||||
# this function is used to clear the $__grype_perform_completion_once_result variable after completions are run
|
||||
function __grype_clear_perform_completion_once_result
|
||||
__grype_debug ""
|
||||
__grype_debug "========= clearing previously set __grype_perform_completion_once_result variable =========="
|
||||
set --erase __grype_perform_completion_once_result
|
||||
__grype_debug "Successfully erased the variable __grype_perform_completion_once_result"
|
||||
end
|
||||
|
||||
function __grype_requires_order_preservation
|
||||
__grype_debug ""
|
||||
__grype_debug "========= checking if order preservation is required =========="
|
||||
|
||||
__grype_perform_completion_once
|
||||
if test -z "$__grype_perform_completion_once_result"
|
||||
__grype_debug "Error determining if order preservation is required"
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $__grype_perform_completion_once_result[-1])
|
||||
__grype_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveKeepOrder 32
|
||||
set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2)
|
||||
__grype_debug "Keeporder is: $keeporder"
|
||||
|
||||
if test $keeporder -ne 0
|
||||
__grype_debug "This does require order preservation"
|
||||
return 0
|
||||
end
|
||||
|
||||
__grype_debug "This doesn't require order preservation"
|
||||
return 1
|
||||
end
|
||||
|
||||
# This function does two things:
|
||||
# - Obtain the completions and store them in the global __grype_comp_results
|
||||
# - Return false if file completion should be performed
|
||||
function __grype_prepare_completions
|
||||
__grype_debug ""
|
||||
__grype_debug "========= starting completion logic =========="
|
||||
|
||||
# Start fresh
|
||||
set --erase __grype_comp_results
|
||||
|
||||
__grype_perform_completion_once
|
||||
__grype_debug "Completion results: $__grype_perform_completion_once_result"
|
||||
|
||||
if test -z "$__grype_perform_completion_once_result"
|
||||
__grype_debug "No completion, probably due to a failure"
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l directive (string sub --start 2 $__grype_perform_completion_once_result[-1])
|
||||
set --global __grype_comp_results $__grype_perform_completion_once_result[1..-2]
|
||||
|
||||
__grype_debug "Completions are: $__grype_comp_results"
|
||||
__grype_debug "Directive is: $directive"
|
||||
|
||||
set -l shellCompDirectiveError 1
|
||||
set -l shellCompDirectiveNoSpace 2
|
||||
set -l shellCompDirectiveNoFileComp 4
|
||||
set -l shellCompDirectiveFilterFileExt 8
|
||||
set -l shellCompDirectiveFilterDirs 16
|
||||
|
||||
if test -z "$directive"
|
||||
set directive 0
|
||||
end
|
||||
|
||||
set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2)
|
||||
if test $compErr -eq 1
|
||||
__grype_debug "Received error directive: aborting."
|
||||
# Might as well do file completion, in case it helps
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2)
|
||||
set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2)
|
||||
if test $filefilter -eq 1; or test $dirfilter -eq 1
|
||||
__grype_debug "File extension filtering or directory filtering not supported"
|
||||
# Do full file completion instead
|
||||
return 1
|
||||
end
|
||||
|
||||
set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2)
|
||||
set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2)
|
||||
|
||||
__grype_debug "nospace: $nospace, nofiles: $nofiles"
|
||||
|
||||
# If we want to prevent a space, or if file completion is NOT disabled,
|
||||
# we need to count the number of valid completions.
|
||||
# To do so, we will filter on prefix as the completions we have received
|
||||
# may not already be filtered so as to allow fish to match on different
|
||||
# criteria than the prefix.
|
||||
if test $nospace -ne 0; or test $nofiles -eq 0
|
||||
set -l prefix (commandline -t | string escape --style=regex)
|
||||
__grype_debug "prefix: $prefix"
|
||||
|
||||
set -l completions (string match -r -- "^$prefix.*" $__grype_comp_results)
|
||||
set --global __grype_comp_results $completions
|
||||
__grype_debug "Filtered completions are: $__grype_comp_results"
|
||||
|
||||
# Important not to quote the variable for count to work
|
||||
set -l numComps (count $__grype_comp_results)
|
||||
__grype_debug "numComps: $numComps"
|
||||
|
||||
if test $numComps -eq 1; and test $nospace -ne 0
|
||||
# We must first split on \t to get rid of the descriptions to be
|
||||
# able to check what the actual completion will be.
|
||||
# We don't need descriptions anyway since there is only a single
|
||||
# real completion which the shell will expand immediately.
|
||||
set -l split (string split --max 1 \t $__grype_comp_results[1])
|
||||
|
||||
# Fish won't add a space if the completion ends with any
|
||||
# of the following characters: @=/:.,
|
||||
set -l lastChar (string sub -s -1 -- $split)
|
||||
if not string match -r -q "[@=/:.,]" -- "$lastChar"
|
||||
# In other cases, to support the "nospace" directive we trick the shell
|
||||
# by outputting an extra, longer completion.
|
||||
__grype_debug "Adding second completion to perform nospace directive"
|
||||
set --global __grype_comp_results $split[1] $split[1].
|
||||
__grype_debug "Completions are now: $__grype_comp_results"
|
||||
end
|
||||
end
|
||||
|
||||
if test $numComps -eq 0; and test $nofiles -eq 0
|
||||
# To be consistent with bash and zsh, we only trigger file
|
||||
# completion when there are no other completions
|
||||
__grype_debug "Requesting file completion"
|
||||
return 1
|
||||
end
|
||||
end
|
||||
|
||||
return 0
|
||||
end
|
||||
|
||||
# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves
|
||||
# so we can properly delete any completions provided by another script.
|
||||
# Only do this if the program can be found, or else fish may print some errors; besides,
|
||||
# the existing completions will only be loaded if the program can be found.
|
||||
if type -q grype
|
||||
# The space after the program name is essential to trigger completion for the program
|
||||
# and not completion of the program name itself.
|
||||
# Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish.
|
||||
complete --do-complete "grype " >/dev/null 2>&1
|
||||
end
|
||||
|
||||
# Remove any pre-existing completions for the program since we will be handling all of them.
|
||||
complete -c grype -e
|
||||
|
||||
# this will get called after the two calls below and clear the $__grype_perform_completion_once_result global
|
||||
complete -c grype -n __grype_clear_perform_completion_once_result
|
||||
# The call to __grype_prepare_completions will setup __grype_comp_results
|
||||
# which provides the program's completion choices.
|
||||
# If this doesn't require order preservation, we don't use the -k flag
|
||||
complete -c grype -n 'not __grype_requires_order_preservation && __grype_prepare_completions' -f -a '$__grype_comp_results'
|
||||
# otherwise we use the -k flag
|
||||
complete -k -c grype -n '__grype_requires_order_preservation && __grype_prepare_completions' -f -a '$__grype_comp_results'
|
||||
1
config/fish/completions/kubectl.fish
Symbolic link
1
config/fish/completions/kubectl.fish
Symbolic link
@@ -0,0 +1 @@
|
||||
/Applications/OrbStack.app/Contents/MacOS/../Resources/completions/fish/kubectl.fish
|
||||
117
config/fish/completions/mac.fish
Normal file
117
config/fish/completions/mac.fish
Normal file
@@ -0,0 +1,117 @@
|
||||
# @halostatue/fish-macos/completions/mac.fish:v7.0.1
|
||||
|
||||
complete --command mac --erase
|
||||
|
||||
complete --command mac --arguments airdrop \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes AirDrop settings'
|
||||
complete --command mac --arguments airport \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Work with AirPort (WiFi) settings'
|
||||
complete --command mac --arguments brightness \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Adjust the screen brightness level'
|
||||
complete --command mac --arguments flushdns \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Flushes DNS'
|
||||
complete --command mac --arguments font-smoothing \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manages font smoothing settings'
|
||||
complete --command mac --arguments lsclean \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Cleans LaunchServices to remove duplicate Open with... entries'
|
||||
complete --command mac --arguments mail \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage various operations of Mail.app'
|
||||
complete --command mac --arguments proxy-icon \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage proxy icon appearance delay'
|
||||
complete --command mac --arguments transparency \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Manage UI transparency'
|
||||
complete --command mac --arguments vol \
|
||||
--exclusive --condition __fish_use_subcommand \
|
||||
--description 'Changes Mac volume; accepts 0–100 volume percentage'
|
||||
|
||||
for subcommand in airdrop airport brightness flushdns font-smoothing lsclean mail proxy-icon transparency version vol
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--short-option h --long-option help --description 'Help for mac '$subcommand
|
||||
end
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
|
||||
--arguments up --description 'Increases screen brightness'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from brightness' \
|
||||
--arguments down --description 'Decreases screen brightness'
|
||||
|
||||
for subcommand in airdrop proxy-icon transparency
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments on --description 'Enables '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments off --description 'Disables '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments toggle --description 'Toggles '$subcommand
|
||||
complete --command mac --condition '__fish_seen_subcommand_from '$subcommand \
|
||||
--arguments status --description 'Shows the status of '$subcommand
|
||||
end
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments scan --description 'Shows available networks'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments ssid --description 'Shows the SSID'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'airport \
|
||||
--arguments password --description 'Gets the current WiFi network password'
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
--arguments on --description 'Enables font smoothing; app IDs can be provided to limit control'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'font-smoothing \
|
||||
--arguments off --description 'Disables font smoothing; app IDs can be provided to limit control'
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
|
||||
--arguments vacuum --description 'Vacuums the Mail.app envelope index'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'mail \
|
||||
--arguments attachments --description 'Sets Mail.app attachment handling' \
|
||||
--require-parameter --no-files
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
|
||||
--arguments inline \
|
||||
--description 'Sets Mail.app attachment handling so that they are inline to the message'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'attachments \
|
||||
--arguments icon \
|
||||
--description 'Sets Mail.app attachment handling so that they are icons on the message'
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option s --long-option simple --description 'Simple mac version name'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option l --long-option lowercase --description 'Lowercase mac version name'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option f --long-option version --description 'Full version number'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option c --long-option comparable --description 'Simplified comparable version value'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'version \
|
||||
--short-option h --long-option help --description 'Help for mac 'version
|
||||
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments mute --description 'Mutes volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments unmute --description 'Unmutes volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments show --description 'Shows the current volume'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 10 --description 'Sets the volume to 10%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 20 --description 'Sets the volume to 20%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 30 --description 'Sets the volume to 30%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 40 --description 'Sets the volume to 40%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 50 --description 'Sets the volume to 50%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 60 --description 'Sets the volume to 60%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 70 --description 'Sets the volume to 70%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 80 --description 'Sets the volume to 80%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 90 --description 'Sets the volume to 90%'
|
||||
complete --command mac --condition '__fish_seen_subcommand_from 'vol \
|
||||
--arguments 100 --description 'Sets the volume to 100%'
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user