mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-14 14:12:41 +00:00
Compare commits
608 Commits
master
...
5d6cb3a843
| Author | SHA1 | Date | |
|---|---|---|---|
|
5d6cb3a843
|
|||
|
5561f3ccaf
|
|||
|
3a82ae15df
|
|||
|
d26ca008c0
|
|||
|
d29876b367
|
|||
|
24440f845b
|
|||
|
4a08de9573
|
|||
|
b1c3b16cc6
|
|||
|
b159565288
|
|||
|
df876d2cac
|
|||
|
e052f0c394
|
|||
|
0d916fe960
|
|||
|
1b504cca65
|
|||
|
fb0e4d705b
|
|||
|
b9f248926b
|
|||
|
f798ef2e4e
|
|||
|
fa47fcaed7
|
|||
|
f39a9113d6
|
|||
|
207e4469b2
|
|||
|
047c241df8
|
|||
|
b8bf70f117
|
|||
|
bec884f866
|
|||
|
943427b3e1
|
|||
|
eae3bfbc90
|
|||
|
6621475808
|
|||
|
090a0681ca
|
|||
|
3acaf486c0
|
|||
|
80c6eefe8c
|
|||
|
0c80780ade
|
|||
|
5ea0ef74e4
|
|||
|
5bad99f712
|
|||
|
44aec09d62
|
|||
|
a0dcba3810
|
|||
|
7356d129cc
|
|||
|
eece231724
|
|||
|
3446460827
|
|||
|
1e60f88ec4
|
|||
|
45666a5911
|
|||
|
46186e2741
|
|||
|
fe25f1bf19
|
|||
|
c8212b7587
|
|||
|
4b674c40c9
|
|||
|
8daa596205
|
|||
|
9977a8806b
|
|||
|
c667bfb8ee
|
|||
|
2ed9208e6a
|
|||
|
0be8bcd1a2
|
|||
|
dcb186393e
|
|||
|
b7ce95dc66
|
|||
|
358b9719f1
|
|||
|
89b12fc5fa
|
|||
|
23a27446df
|
|||
|
c44c2cf5ea
|
|||
|
9d6b99206a
|
|||
|
d19a33f4f0
|
|||
|
9c7d395c6b
|
|||
|
2f9c68acfb
|
|||
|
df109c3803
|
|||
|
cbe53484fa
|
|||
|
2aa9f4e839
|
|||
|
ad593bc25f
|
|||
|
790ba581aa
|
|||
|
e57262b4d3
|
|||
|
e63e4f4fab
|
|||
|
86d3a54e3b
|
|||
|
cf05f11759
|
|||
|
059dba6f18
|
|||
|
00c9c77bcc
|
|||
|
52cbe2ad89
|
|||
|
f1b65e955e
|
|||
|
3c98a008c8
|
|||
|
74011a46bc
|
|||
|
e972dd331c
|
|||
|
9c007c9434
|
|||
|
381a0450e5
|
|||
|
af7b46efa5
|
|||
|
f269906fd5
|
|||
|
307a971371
|
|||
|
6b13291fff
|
|||
|
b4b7fa0a84
|
|||
|
d166c246ef
|
|||
|
746167a9c8
|
|||
|
419752b381
|
|||
|
79da2db401
|
|||
|
0da387b1b9
|
|||
|
e1ed84d343
|
|||
|
d5f1d56b94
|
|||
|
97f3047989
|
|||
|
18fc260a75
|
|||
|
5811d5602b
|
|||
|
d172a0071b
|
|||
|
2995edfc86
|
|||
|
10987bd255
|
|||
|
0045e6149c
|
|||
|
3081c6b9b3
|
|||
|
e154efcac4
|
|||
|
71eae2eb5b
|
|||
|
9af452c849
|
|||
|
0636832796
|
|||
|
05cb700cb1
|
|||
|
a03617608d
|
|||
|
ef933bd3aa
|
|||
|
6b9f2203c1
|
|||
|
e0214a49d2
|
|||
|
b090430cd8
|
|||
|
e53cef27a0
|
|||
|
43f18eb45a
|
|||
|
c1eae18c67
|
|||
|
4d73fede8b
|
|||
|
ba06819221
|
|||
|
ba81c53054
|
|||
|
36fd0558b0
|
|||
|
1b349b11c3
|
|||
|
26f2b360e3
|
|||
|
2ac8560de1
|
|||
|
f4341f3b5f
|
|||
|
9ab1bed56a
|
|||
|
def9a00b76
|
|||
|
d1e9e3cc5a
|
|||
|
005403f939
|
|||
|
9c7940b5fa
|
|||
|
2949a85159
|
|||
|
737f9bfb2c
|
|||
|
654c61a460
|
|||
|
6f14542b7d
|
|||
|
63e698acb5
|
|||
|
aec01d5876
|
|||
|
95ffc9fa44
|
|||
|
b45503717f
|
|||
|
8acc2e6647
|
|||
|
f5705e9809
|
|||
|
eda3213f72
|
|||
|
d21e9931eb
|
|||
|
ed76943b79
|
|||
|
4909aa1fcb
|
|||
|
fcfbfac7dd
|
|||
|
281c26ed71
|
|||
|
cb479a5370
|
|||
|
32bdafff4f
|
|||
|
1006821a9c
|
|||
|
3b89eb4877
|
|||
|
45fa5196a7
|
|||
|
f94d724d67
|
|||
|
a6fcc8a460
|
|||
|
3799a81f05
|
|||
|
97ed707936
|
|||
|
|
6aee095859 | ||
|
|
461d06f681 | ||
|
|
2f626d4664 | ||
| b87348da96 | |||
|
4fcd2f43fd
|
|||
|
d1dffb632f
|
|||
|
1196849c3b
|
|||
|
e77b3e7535
|
|||
|
ee2898053b
|
|||
|
f1202d77f3
|
|||
|
087d7963e8
|
|||
|
8b25509344
|
|||
|
0034ac6d87
|
|||
|
5c6409c2e9
|
|||
|
8a63efd6cf
|
|||
|
7d4a0714d0
|
|||
|
b454c5d01d
|
|||
|
e003be5bee
|
|||
|
0bb288b3d6
|
|||
|
23a5dc0bdc
|
|||
|
72ff2e6316
|
|||
|
390230e532
|
|||
|
a006539bf1
|
|||
|
6332eafea5
|
|||
|
933ce337a1
|
|||
|
ae73074f6a
|
|||
|
63c8645051
|
|||
|
aec425c7d2
|
|||
|
fa6a482f2f
|
|||
|
dff77ae065
|
|||
|
bac516d446
|
|||
|
4674b132f3
|
|||
|
fd22a4ab4a
|
|||
|
18fce8e2bb
|
|||
|
0922f7578f
|
|||
|
335b60f43c
|
|||
|
99110dea2a
|
|||
|
2eb831e565
|
|||
|
53c439a418
|
|||
|
77c168cc99
|
|||
|
cfc846e2f7
|
|||
|
55d7199315
|
|||
|
5ddf6c3927
|
|||
|
dd9c018f99
|
|||
|
1eea0b84a7
|
|||
|
8d21e9a9fe
|
|||
|
52b78aadf8
|
|||
|
7178a12893
|
|||
|
931903d18c
|
|||
|
7024182f49
|
|||
|
7aec9d1610
|
|||
|
5946a177fb
|
|||
|
7c08fec16b
|
|||
|
78e40a9401
|
|||
|
b5198a5df6
|
|||
|
54fe479ee1
|
|||
|
503df7ce33
|
|||
|
009efbb952
|
|||
|
b1fb505ac5
|
|||
|
6721b2a8c5
|
|||
|
a4a560eb3d
|
|||
|
a7e6bc893c
|
|||
|
90c97263cb
|
|||
|
dccb1ca0a3
|
|||
|
f729bedc99
|
|||
|
4edf92e034
|
|||
|
5e8fbbcbab
|
|||
|
6d6f24467f
|
|||
|
cc47106e74
|
|||
|
bad3282dc5
|
|||
|
33e6683369
|
|||
|
c38348e62c
|
|||
|
55257e7c28
|
|||
|
318e7c7f95
|
|||
|
b6ce570f1d
|
|||
|
f911bfb7f1
|
|||
|
d32d0cf64f
|
|||
|
1def0356d7
|
|||
|
4d4b8c9945
|
|||
|
cedb6d8ab7
|
|||
|
eae42b40b8
|
|||
|
42e962d439
|
|||
|
27767d3948
|
|||
|
8bb6d35acd
|
|||
|
50191dde0c
|
|||
|
d4f85a6786
|
|||
|
1ee8cad635
|
|||
|
93fe3b6864
|
|||
|
e23e861101
|
|||
|
45bcf8771c
|
|||
|
ab2f4356a3
|
|||
|
26bc6635af
|
|||
|
0b166ad757
|
|||
|
eb4c6990ec
|
|||
|
f37b5f1db2
|
|||
|
dccf54e115
|
|||
|
c88d070b86
|
|||
|
1305b6708c
|
|||
|
e15a0ef007
|
|||
|
6a14830189
|
|||
|
ede7e4288b
|
|||
|
026a998fc4
|
|||
|
a7033b749e
|
|||
|
7d4e518479
|
|||
|
2d878f8c63
|
|||
|
cefdf21fc8
|
|||
|
c89b0e307c
|
|||
|
c383471903
|
|||
|
ba9a343452
|
|||
|
d78ec7f853
|
|||
|
4ae6389ae8
|
|||
|
e60f049f10
|
|||
|
a0a958defb
|
|||
|
b9481443a7
|
|||
|
a9f7317e30
|
|||
|
07272176cd
|
|||
|
51e2173084
|
|||
|
4314d28c01
|
|||
|
41760ac195
|
|||
|
edc3e9c74e
|
|||
|
eddb346e30
|
|||
|
1a3442dee7
|
|||
|
a05e8f41bd
|
|||
|
c6a0056ad6
|
|||
|
d5ab230d3f
|
|||
|
474746e296
|
|||
|
1a729e7281
|
|||
|
5aceabd878
|
|||
|
ea6737e55c
|
|||
|
28903f8078
|
|||
|
e5baef9bac
|
|||
|
9ae31715a3
|
|||
|
15b488f3a5
|
|||
|
6946389fac
|
|||
|
7903860e32
|
|||
|
8ddf08eb4b
|
|||
|
6b1e1412c3
|
|||
|
2ee186b8a2
|
|||
|
a42aad3fec
|
|||
|
35b7dca7e4
|
|||
|
129f452045
|
|||
|
824d3e20da
|
|||
|
cf7903e9ed
|
|||
|
60656734f1
|
|||
|
d277706034
|
|||
|
1e94c4181f
|
|||
|
bef4bbea5f
|
|||
|
460d9bb180
|
|||
|
2ea4540cba
|
|||
|
73d4da7106
|
|||
|
6107a658bb
|
|||
|
29dc54f5ae
|
|||
|
f10875412a
|
|||
|
379319dac7
|
|||
|
f660c0fa23
|
|||
|
81428fde31
|
|||
|
b7edc19958
|
|||
|
8bc955b12f
|
|||
| 28c71ee752 | |||
|
920d87f8e0
|
|||
|
d90146fde3
|
|||
|
40fe096baa
|
|||
|
9dd5559af5
|
|||
|
c96dd116c9
|
|||
|
92fbde1e00
|
|||
|
b77180638a
|
|||
|
a06f1cc2a6
|
|||
|
2a54c8c599
|
|||
|
dddcb877d6
|
|||
|
0bd1e6242d
|
|||
|
e8de865417
|
|||
|
3825ef78ff
|
|||
|
81582b2194
|
|||
|
9363055e5a
|
|||
|
3230fb7007
|
|||
|
6f11d99043
|
|||
|
802ea082c8
|
|||
|
9cb3792223
|
|||
|
3041d0a5e5
|
|||
|
ecf3e98e25
|
|||
|
cbe4ebc538
|
|||
|
511c7307b6
|
|||
|
30ac84ecac
|
|||
|
547cc41436
|
|||
|
3fd33cd92e
|
|||
|
8c83898abf
|
|||
|
3fc1054206
|
|||
|
6c6c5c507d
|
|||
|
b627d68ae3
|
|||
|
d8feb9535d
|
|||
|
73973aed67
|
|||
|
534a902512
|
|||
|
5dc1b33da8
|
|||
|
4624fa48d3
|
|||
|
fa0cf72ae0
|
|||
|
e10715940f
|
|||
|
a5ca5b4f63
|
|||
|
26b98e444d
|
|||
|
3796572324
|
|||
|
3382c4b165
|
|||
|
afdedc5acf
|
|||
|
ad5ade6679
|
|||
|
994ff17ceb
|
|||
|
ccc2367bc3
|
|||
|
7f98d4046f
|
|||
|
98804b3aa5
|
|||
|
53db3f3e8f
|
|||
|
86422bd68b
|
|||
|
95139d50ba
|
|||
|
15b1aded69
|
|||
|
dcac27db37
|
|||
|
a71ae05e5b
|
|||
|
9a1b00610e
|
|||
|
4f47e288ea
|
|||
|
963fcd2810
|
|||
|
9ead148f34
|
|||
|
0d8364eaf9
|
|||
|
4d42fa4dab
|
|||
|
f23adad4b0
|
|||
|
44f5c35d38
|
|||
|
25ddde6e12
|
|||
|
4a023203bd
|
|||
|
5f07ffede9
|
|||
|
6cdf85b4e3
|
|||
|
876e7f6d0e
|
|||
|
b78fb64bd3
|
|||
|
ee7854eafc
|
|||
|
ef961fcfa8
|
|||
|
6d44edc94d
|
|||
|
381d272da1
|
|||
|
38e77e8fcd
|
|||
|
2a5c2cdc58
|
|||
|
0949f9e9fa
|
|||
|
2c7bd9123f
|
|||
|
f325d61131
|
|||
|
ae13738a4d
|
|||
|
6c84428179
|
|||
|
d27f2ad490
|
|||
|
ea7033bea8
|
|||
|
a835414bd1
|
|||
|
82341d87df
|
|||
|
9e48ba0a77
|
|||
|
3518ba059f
|
|||
|
c8e869c853
|
|||
|
b1633707c2
|
|||
|
5f45954d98
|
|||
|
4fb2b70004
|
|||
|
a86116056f
|
|||
|
f43cd2c543
|
|||
|
48d0e16f6a
|
|||
|
27d66acb6e
|
|||
|
af77a986e2
|
|||
|
1dd7460ac4
|
|||
|
3badd6a046
|
|||
|
0a9e065b4d
|
|||
|
8ac60b4196
|
|||
|
7f26013d1c
|
|||
|
42cef6e0c4
|
|||
|
241c43767c
|
|||
|
4b39a3eb95
|
|||
|
1e427911ac
|
|||
|
0c15983dae
|
|||
|
68d3f5a183
|
|||
|
d9ea8d80c6
|
|||
|
eed9c143ea
|
|||
|
d06648864e
|
|||
|
9bb33cfaee
|
|||
|
917ac3ff2a
|
|||
|
23bd867430
|
|||
|
2e3c750979
|
|||
|
eff01f42fd
|
|||
|
8a17c5ad80
|
|||
|
d8891e40fc
|
|||
|
f6f45a8c58
|
|||
|
3b75e6e918
|
|||
|
2813d5b56d
|
|||
|
b3476a4af2
|
|||
|
49524fef66
|
|||
|
15eedbfd1e
|
|||
|
365baec18a
|
|||
|
051a418d0b
|
|||
|
f7484147f7
|
|||
|
2334f33cdb
|
|||
|
33c011067f
|
|||
|
2d687e8c61
|
|||
|
377f5849f7
|
|||
|
37d8e4c678
|
|||
|
edf62341df
|
|||
|
9f9854e9d5
|
|||
|
ef45abdd16
|
|||
|
23c4afabbc
|
|||
|
329589612b
|
|||
|
87b901f6c0
|
|||
|
c0c5e92184
|
|||
|
728c77a2d2
|
|||
|
319a63ddcc
|
|||
|
6a6c6ace8a
|
|||
|
4dbd2864c1
|
|||
|
7b75cca4d7
|
|||
|
be1ab62d8f
|
|||
|
a379a9ce60
|
|||
|
3c172a4597
|
|||
|
3f91ec849d
|
|||
|
326ce37b02
|
|||
|
54b6377407
|
|||
|
61258c8a32
|
|||
|
ffcb53f6e2
|
|||
|
9c6d5a1e91
|
|||
|
a344d29ca4
|
|||
|
a70e1a70b4
|
|||
|
53bad22017
|
|||
|
8a9a378f18
|
|||
|
65e8de5b75
|
|||
|
b860ff8858
|
|||
|
6e33524859
|
|||
|
6599d90e39
|
|||
|
6158763985
|
|||
|
9b8e30bde3
|
|||
|
094a77c22e
|
|||
|
91e05a1345
|
|||
|
d9445d4e89
|
|||
|
87594a5d96
|
|||
|
6759e4e85b
|
|||
|
712b209c86
|
|||
| 19fbce7dd1 | |||
| 48b4278ae9 | |||
| 47930ad6da | |||
| a9d76c5107 | |||
| c4da654111 | |||
| 557da77caf | |||
| 01a7c4845f | |||
| 1ae41a0fac | |||
| a696e4e658 | |||
| 6527ad88df | |||
| cbf26b10e7 | |||
| a9d7f24d24 | |||
| 2d39db3401 | |||
| 1e26df8ef0 | |||
| d653110ec2 | |||
| 128dd695b9 | |||
| a2558e0296 | |||
| 19285a539d | |||
| 6c0eda81d5 | |||
| 842bf84c25 | |||
| f6bad2b0f5 | |||
| 47ea7ba28a | |||
| 54408de2cf | |||
| a2e6d3e825 | |||
| 090b0fb2f3 | |||
| 2bab3d516c | |||
| 9ef283fda1 | |||
| 881905f203 | |||
| 55be390f7f | |||
| 3763775bb6 | |||
| b61004554a | |||
| 0f8e56394d | |||
| 2434fb52e2 | |||
| cd8808ab74 | |||
| fb235ab19d | |||
| 1db62e3457 | |||
| 411f660cbb | |||
| 5572c8f0e3 | |||
| d258f14376 | |||
| 7660587a33 | |||
| aafdef33e3 | |||
| bcd9742b37 | |||
| c0714cb010 | |||
| 8e20f20b4f | |||
| eae33a6705 | |||
| 17bc6ef41b | |||
| 9a05bd20d8 | |||
| bc342d28c8 | |||
| 148916909a | |||
| f362789006 | |||
| 367cae9748 | |||
| 8e46610a7b | |||
| ff870c0f1b | |||
| d34059c34d | |||
| 016e4d459f | |||
| cead1bc85e | |||
| c296a1492f | |||
| 892966d27a | |||
| b53d239cd3 | |||
| cd95365149 | |||
| ba8a64a447 | |||
| d15d3b406f | |||
| 9cc99ff03d | |||
| d3a383102b | |||
| c1b1381f24 | |||
| 0f58b00f97 | |||
| 05b36efeea | |||
| 30ff7b7652 | |||
| a3c3ed1d23 | |||
|
|
0294c4e5bc | ||
|
|
be24adf2aa | ||
|
|
2b4ecf3939 | ||
|
|
ce99e7dd76 | ||
| 3fcb57d090 | |||
| 346ff30f4a | |||
| a8e8228696 | |||
| 2f6630b272 | |||
|
|
a328615cbf | ||
|
|
385c17811d | ||
| 92a4571bff | |||
| 3a5adc07ad | |||
|
|
fa02ac9889 | ||
|
|
e3ff780999 | ||
| 64b5e4b21c | |||
| 00749e3be7 | |||
|
|
7690713f46 | ||
|
|
5927ef7fb3 | ||
| e90c491a47 | |||
| f55eca41f0 | |||
| 6cb0744e92 | |||
|
|
5555c14327 | ||
|
|
353b669f27 | ||
|
|
f0a5d85dea | ||
| f643b45432 | |||
| 427fd1d063 | |||
| ca0c0b1ca0 | |||
|
|
19229a2b90 | ||
|
|
e8772df72e | ||
|
|
660ff7d94d | ||
|
|
7c5c642ae5 | ||
|
|
742f26a81c | ||
|
|
7f13161948 | ||
|
|
00c5e0cca6 | ||
|
|
c930fb7e7a | ||
| be0bb66e09 | |||
| 8d68b1033a | |||
| 4b37f8afcb | |||
|
|
fcf8c83beb | ||
|
|
0e77478075 | ||
| a8c4191d96 | |||
| 56cfaf4360 | |||
| 35a5cf15c5 | |||
| 3896bab4fb | |||
|
|
9acb92154a | ||
|
|
e519322fb2 | ||
| aa8e3847a2 | |||
| 2de739ec68 | |||
| 1d08232c52 | |||
| 607f1b20b9 | |||
|
|
cc6dd26184 | ||
|
|
220dddc930 | ||
| 966c050875 | |||
| 275baa228c | |||
|
|
437b4f5002 | ||
|
|
ab1a45d421 | ||
|
|
663673dfd3 | ||
|
|
7673963158 | ||
|
|
433c6cf59f | ||
|
|
8d396ff46f | ||
| 6204b5f7b3 | |||
| 26f78217f7 | |||
| 42827b7154 | |||
| e3dd7a80f6 | |||
|
|
5cbb1affd5 | ||
|
|
3bc89df708 | ||
|
|
27d6d596dc | ||
|
|
7ebdbf3d7f | ||
| 34da568c87 |
11
.gitignore
vendored
11
.gitignore
vendored
@@ -1,7 +1,5 @@
|
|||||||
**/.DS_Store
|
**/.DS_Store
|
||||||
**/Brewfile.lock.json
|
**/Brewfile.lock.json
|
||||||
**/plugins
|
|
||||||
**/plugin
|
|
||||||
**/.zcompdump*
|
**/.zcompdump*
|
||||||
**/.zcompdump
|
**/.zcompdump
|
||||||
**/.zcompcache
|
**/.zcompcache
|
||||||
@@ -11,3 +9,12 @@
|
|||||||
**/completions/*
|
**/completions/*
|
||||||
**/.netrwhist
|
**/.netrwhist
|
||||||
**/.zshrc-local
|
**/.zshrc-local
|
||||||
|
facebook-bot/config/*
|
||||||
|
facebook-bot/config/*
|
||||||
|
**/tmp
|
||||||
|
ansible/tmp/*
|
||||||
|
ansible/collections/*
|
||||||
|
ansible/galaxy_cache/*
|
||||||
|
ansible/galaxy_token
|
||||||
|
**/lazy-lock.json
|
||||||
|
**/*.target.wants/*
|
||||||
|
|||||||
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[submodule "mail"]
|
||||||
|
path = mail
|
||||||
|
url = ssh://git@git.housh.dev:2222/michael/mail.git
|
||||||
|
[submodule "env/.config/nvim"]
|
||||||
|
path = env/.config/nvim
|
||||||
|
url = https://github.com/m-housh/mhoush.nvim.git
|
||||||
82
.luarc.json
Normal file
82
.luarc.json
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"workspace.library": [
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neodev.nvim/types/stable",
|
||||||
|
"/opt/homebrew/Cellar/neovim/0.9.2/share/nvim/runtime/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/bufdelete.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/diffview.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lsp_signature.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neo-tree.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neodev.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/telescope-fzf-native.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-lspconfig/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-cmp/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-treesitter-textobjects/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nui.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nightfox.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-buffer/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-path/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-treesitter/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-lsp-installer/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-cmdline/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lazy.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-spell/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/wrapping.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-calc/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/which-key.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/mason-lspconfig.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/formatter.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-nvim-lsp/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-emoji/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-web-devicons/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/plenary.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neogit/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/overseer.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lualine.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/mason.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/telescope.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lspkind-nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/swift.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/toggleterm.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neodev.nvim/types/stable",
|
||||||
|
"/opt/homebrew/Cellar/neovim/0.9.2/share/nvim/runtime/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/bufdelete.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/diffview.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lsp_signature.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neo-tree.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neodev.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/telescope-fzf-native.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-lspconfig/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-cmp/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-treesitter-textobjects/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nui.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nightfox.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-buffer/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-path/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-treesitter/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-lsp-installer/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-cmdline/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lazy.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-spell/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/wrapping.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-calc/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/which-key.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/mason-lspconfig.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/formatter.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-nvim-lsp/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/cmp-emoji/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/nvim-web-devicons/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/plenary.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/neogit/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/overseer.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lualine.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/mason.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/telescope.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/lspkind-nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/swift.nvim/lua",
|
||||||
|
"/Users/michael/.local/share/m-housh/lazy/toggleterm.nvim/lua",
|
||||||
|
"/Users/michael/.dotfiles/nvim/m-housh/lua",
|
||||||
|
"/Users/michael/.dotfiles/nvim/m-housh/lua",
|
||||||
|
"${3rd}/luv/library",
|
||||||
|
"${3rd}/luassert/library"
|
||||||
|
]
|
||||||
|
}
|
||||||
3
.markdownlint.jsonc
Normal file
3
.markdownlint.jsonc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"MD013": { "code_blocks": false }
|
||||||
|
}
|
||||||
4
.prettierrc
Normal file
4
.prettierrc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"proseWrap": "always"
|
||||||
|
"printWidth": 100
|
||||||
|
}
|
||||||
35
Makefile
35
Makefile
@@ -1,35 +0,0 @@
|
|||||||
BREWPATH ?= /opt/homebrew/bin
|
|
||||||
BREW = $(BREWPATH)/brew
|
|
||||||
DOTS = $(BREWPATH)/dots
|
|
||||||
APPDIR ?= /Applications
|
|
||||||
|
|
||||||
# This does not work inside of a make command.
|
|
||||||
bootstrap-homebrew:
|
|
||||||
xcode-select --install || true
|
|
||||||
source "$(PWD)/scripts/install-brew.sh"
|
|
||||||
|
|
||||||
# Install the dots application manager.
|
|
||||||
install-dots:
|
|
||||||
"$(BREW)" tap m-housh/formula
|
|
||||||
"$(BREW)" install dots
|
|
||||||
|
|
||||||
bootstrap-minimal: bootstrap-homebrew install-dots
|
|
||||||
"$(DOTS)" install --minimal "$(APPDIR)"
|
|
||||||
|
|
||||||
bootstrap: bootstrap-homebrew install-dots
|
|
||||||
"$(DOTS)" install --full "$(APPDIR)"
|
|
||||||
|
|
||||||
# make a local zsh configuration file, to extend
|
|
||||||
# the normal .zshrc for configuration that is only
|
|
||||||
# relevant on the local machine.
|
|
||||||
zshrc-local:
|
|
||||||
# check if a file already exists or not and create it if not.
|
|
||||||
test -f "$(PWD)/zsh/config/.zshrc-local" \
|
|
||||||
|| echo "#!/usr/bin/env zsh" > "$(PWD)/zsh/config/.zshrc-local"
|
|
||||||
# add symlink to appropriate location if doesn't exist.
|
|
||||||
test -L "$(HOME)/.config/zsh/.zshrc-local" \
|
|
||||||
|| ln -sfv "$(PWD)/zsh/config/.zshrc-local" "$(HOME)/.config/zsh/"
|
|
||||||
# open the file to edit.
|
|
||||||
vim "$(PWD)/zsh/config/.zshrc-local"
|
|
||||||
|
|
||||||
default: bootstrap
|
|
||||||
47
README.md
47
README.md
@@ -1,20 +1,16 @@
|
|||||||
# My Dotfiles
|
# My Dotfiles
|
||||||
|
|
||||||
This is a repository for my dotfiles. Be warned that these may often change and
|
This is a repository for my dotfiles. Be warned that these may often change and that the installation documentation may
|
||||||
that the installation documentation may not always be correct as things
|
not always be correct as things progress. In general the setup process is something that is only done when a new machine
|
||||||
progress. In general the setup process is something that is only done when
|
is purchased or I feel like testing in a virtual machine (which does not happen often). It is helpful to have an
|
||||||
a new machine is purchased or I feel like testing in a virtual machine (which
|
understanding of what these commands do on your own.
|
||||||
does not happen often). It is helpful to have an understanding of what these
|
|
||||||
commands do on your own.
|
|
||||||
|
|
||||||
In general no pull-requests or changes will be accepted, however you can
|
In general no pull-requests or changes will be accepted, however you can generate an issue if you find a problem.
|
||||||
generate an issue if you find a problem.
|
|
||||||
|
|
||||||
It currently will install homebrew and the following homebrew formula.
|
It currently will install homebrew and the following homebrew formula.
|
||||||
|
|
||||||
Most of the functionality is contained in the
|
Most of the functionality is contained in the [dots](https://github.com/m-housh/dots) project, that is a companion to
|
||||||
[dots](https://github.com/m-housh/dots) project, that is a companion to manage
|
manage the dotfiles, which expects the dotfiles directory to be at `~/.dotfiles`.
|
||||||
the dotfiles, which expects the dotfiles directory to be at `~/.dotfiles`.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
fd
|
fd
|
||||||
@@ -78,15 +74,14 @@ On a fresh system run the following command from the dotfiles root.
|
|||||||
make bootstrap
|
make bootstrap
|
||||||
```
|
```
|
||||||
|
|
||||||
This start by installing homebrew, then install the required homebrew formulas and casks. Next it will use
|
This start by installing homebrew, then install the required homebrew formulas and casks. Next it will use `gnu-stow` to
|
||||||
`gnu-stow` to symlink configuration files to the appropriate locations. And finally, it will download
|
symlink configuration files to the appropriate locations. And finally, it will download applications from the
|
||||||
applications from the `App Store`. When the bootstrap command is done it will open up the `~/Downloads` folder
|
`App Store`. When the bootstrap command is done it will open up the `~/Downloads` folder for the few applications that
|
||||||
for the few applications that get downloaded from the internet, so that you can finish the installation of those applications.
|
get downloaded from the internet, so that you can finish the installation of those applications.
|
||||||
|
|
||||||
### Minimal Setup
|
### Minimal Setup
|
||||||
|
|
||||||
If you would like to just setup minimal stuff, link dotfiles, and install brews.
|
If you would like to just setup minimal stuff, link dotfiles, and install brews. Then you can run the following command.
|
||||||
Then you can run the following command.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make bootstrap-minimal
|
make bootstrap-minimal
|
||||||
@@ -100,14 +95,13 @@ source scripts/setup_defaults
|
|||||||
|
|
||||||
## Post Installation
|
## Post Installation
|
||||||
|
|
||||||
After everything has finished up, you will be able to open `iTerm2` and load
|
After everything has finished up, you will be able to open `iTerm2` and load the profile which should now be symlinked
|
||||||
the profile which should now be symlinked to `~/.config/macOS/iterm/profile.json`
|
to `~/.config/macOS/iterm/profile.json`
|
||||||
|
|
||||||
## Make commands
|
## Make commands
|
||||||
|
|
||||||
It is also possible to not do the full bootstrapping. If you would only like
|
It is also possible to not do the full bootstrapping. If you would only like to install homebrew (without any formula or
|
||||||
to install homebrew (without any formula or casks) then you can run the following
|
casks) then you can run the following command.
|
||||||
command.
|
|
||||||
|
|
||||||
```
|
```
|
||||||
make bootstrap-homebrew
|
make bootstrap-homebrew
|
||||||
@@ -115,13 +109,12 @@ make bootstrap-homebrew
|
|||||||
|
|
||||||
## Other Make Commands
|
## Other Make Commands
|
||||||
|
|
||||||
If you would like to setup any specific `zsh` configuration that is only for
|
If you would like to setup any specific `zsh` configuration that is only for the local machine then you can run the
|
||||||
the local machine then you can run the following command.
|
following command.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make zshrc-local
|
make zshrc-local
|
||||||
```
|
```
|
||||||
|
|
||||||
This will generate and symlink a file that you can use to extend the default
|
This will generate and symlink a file that you can use to extend the default `zshrc` configuration. In general, I use
|
||||||
`zshrc` configuration. In general, I use this to set custom location for
|
this to set custom location for homebrew casks to be installed on certain machines.
|
||||||
homebrew casks to be installed on certain machines.
|
|
||||||
|
|||||||
59
TODO.md
59
TODO.md
@@ -1,4 +1,59 @@
|
|||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
- Remove brewfiles and use the `dots` app instead.
|
A list of in-progress and completed todo's.
|
||||||
- Add helix to `dots` app.
|
|
||||||
|
## Arch Todos
|
||||||
|
|
||||||
|
- [ ] Update README, it's way out of date.
|
||||||
|
- [x] Separate scripts that are used for configurations / store them somewhere aside
|
||||||
|
from `~/.local/bin`
|
||||||
|
- [x] Add neomutt configuration files into the repo (or probably a private repo)
|
||||||
|
- [x] Clipse didn't work when installed on a new machine when I try to use the
|
||||||
|
config in the dotfiles, but works if I use the default config. Need to explore
|
||||||
|
why (current thoughts are it has to do with creating the
|
||||||
|
clipboard_history.json file and not letting clipse do it automatically).
|
||||||
|
- [x] Need to add the following system packages for neovim/render-markdown.nvim
|
||||||
|
- [x] `libtexprintf`
|
||||||
|
- [ ] Add pipewire-zeroconf to runs.
|
||||||
|
- [ ] Setup pipewire config to allow streaming output to homepod's.
|
||||||
|
- [See arch.wiki](https://wiki.archlinux.org/title/PipeWire)
|
||||||
|
|
||||||
|
### Bootstrapping a new machine
|
||||||
|
|
||||||
|
- [ ] Need to confirm bootstrap does things properly with git submodules. Currently the
|
||||||
|
system run handles installing packages needed for my yubikey, probably need to automate
|
||||||
|
installing the public key into the keyring.
|
||||||
|
- [x] Add gpg public key import into `runs/after/system`
|
||||||
|
- [ ] Need to ensure ssh keys are setup before private submodules are loaded / installed,
|
||||||
|
so I need to make sure that Yubikey setup runs early and works for ssh authentication.
|
||||||
|
- [ ] Setup a new machine / virtual machine to test, as it's hard to test the scripts once a machine is setup.
|
||||||
|
- [ ] Need to add `repos` script when bootstrapping.
|
||||||
|
|
||||||
|
### Keyboard / kanata
|
||||||
|
|
||||||
|
- [x] Move keyboard (kanata) systemd service to be started as a '--user' service, as
|
||||||
|
it seems to not work when used on a desktop (mac mini) vs. laptop.
|
||||||
|
- [x] Need to update kanatactl to generate udev rules, etc. (see
|
||||||
|
here)[https://github.com/jtroo/kanata/blob/main/docs/setup-linux.md]
|
||||||
|
- [ ] Need to rethink symbol / number keyboard layers.
|
||||||
|
- [ ] Move symbols to their own layer.
|
||||||
|
- [ ] I would like to have a symbols layer that I can hold modifier keys with a symbol
|
||||||
|
and would also like to possibly pass through underlying key / experiment so that
|
||||||
|
I can use default keybinds in certain applications (i.e. neovim `[b`, etc.).
|
||||||
|
- [x] Remove pkg sub-commands from kanatactl, it is available via package manager now.
|
||||||
|
|
||||||
|
### Runs (package installs)
|
||||||
|
|
||||||
|
- [x] Should runs just export / echo a list of packages, then the `run` script can handle the package
|
||||||
|
manager options / command.
|
||||||
|
- [x] Think about adding a `before` and an `after` directory for runs, so that they can perform setup tasks after
|
||||||
|
the packages are installed.
|
||||||
|
- [x] The `before` and `after` file should have the same name as the `run` file.
|
||||||
|
- [ ] This could allow to remove / move the `system` script into the `after` directory.
|
||||||
|
- [ ] Look into install packages with `nvim --headless`, not sure if this possible when using the new package
|
||||||
|
manager builtin to neovim as it prompts for user input to install packages.
|
||||||
|
- With lazy this was done with `nvim --headless "+Lazy! sync" +qa`
|
||||||
|
|
||||||
|
### Mail
|
||||||
|
|
||||||
|
- [ ] Remove outlook / office email setup, this has been moved to proton.
|
||||||
|
|||||||
30
bootstrap
Executable file
30
bootstrap
Executable file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Bootstraps a new machine, installing configuration, packages, and webapps.
|
||||||
|
#
|
||||||
|
|
||||||
|
if [ -z "$DEV_ENV" ]; then
|
||||||
|
echo "env var DEV_ENV needs to be present"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# if i just did DEV_ENV=$(pwd) ./run then this is needed for the rest of the
|
||||||
|
# scripts
|
||||||
|
export DEV_ENV="$DEV_ENV"
|
||||||
|
|
||||||
|
args=""
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
if [[ "$1" =~ dry ]]; then
|
||||||
|
args="--dry-run"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Args to bootstrap scripts: $args"
|
||||||
|
echo "Installing packages may require your password multiple times."
|
||||||
|
|
||||||
|
echo "Installing configuration" && $DEV_ENV/dev-env "$args"
|
||||||
|
# TODO: Need to run system run early, then once ssh keys are setup pull
|
||||||
|
# git submodules, then run config install again.
|
||||||
|
echo "Running packages" && $DEV_ENV/run "$args"
|
||||||
|
echo "Installing webapps" && $DEV_ENV/webapp "$args"
|
||||||
176
dev-env
Executable file
176
dev-env
Executable file
@@ -0,0 +1,176 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Adapted from https://github.com/ThePrimeagen/dev/blob/master/dev-env
|
||||||
|
#
|
||||||
|
# Copies configuration files to their appropriate places.
|
||||||
|
|
||||||
|
dry_run="0"
|
||||||
|
|
||||||
|
if [ -z "$XDG_CONFIG_HOME" ]; then
|
||||||
|
echo "no xdg config home"
|
||||||
|
echo "using ~/.config"
|
||||||
|
XDG_CONFIG_HOME=$HOME/.config
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$XDG_DATA_HOME" ]; then
|
||||||
|
echo "no xdg data home"
|
||||||
|
echo "using ~/.local/share"
|
||||||
|
XDG_DATA_HOME=$HOME/.local/share
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$DEV_ENV" ]; then
|
||||||
|
echo "env var DEV_ENV needs to be present"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $1 =~ ^--dry ]]; then
|
||||||
|
dry_run="1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log() {
|
||||||
|
if [[ $dry_run == "1" ]]; then
|
||||||
|
echo "[DRY_RUN]: $1"
|
||||||
|
else
|
||||||
|
echo "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
log "env: $DEV_ENV"
|
||||||
|
|
||||||
|
# Removes a destination directory and copies all files to the destination.
|
||||||
|
update_dirs() {
|
||||||
|
log "copying over files from: $1"
|
||||||
|
pushd $1 &>/dev/null
|
||||||
|
(
|
||||||
|
# Copy everything except systemd, share, and zsh folders, they need treated differently.
|
||||||
|
configs=$(
|
||||||
|
find . -mindepth 1 -maxdepth 1 -type d \
|
||||||
|
\( -name "systemd" -o -name "zsh" -o -name "share" -o -name "scripts" -o -name "kanata" \) \
|
||||||
|
-prune -o -type d -print
|
||||||
|
)
|
||||||
|
for c in $configs; do
|
||||||
|
directory=${2%/}/${c#./}
|
||||||
|
log " removing: rm -rf $directory"
|
||||||
|
|
||||||
|
if [[ $dry_run == "0" ]]; then
|
||||||
|
rm -rf $directory
|
||||||
|
fi
|
||||||
|
|
||||||
|
log " copying env: cp $c $2"
|
||||||
|
if [[ $dry_run == "0" ]]; then
|
||||||
|
cp -r ./$c $2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
)
|
||||||
|
popd &>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Removes a destination file and copies a single file to the destination.
|
||||||
|
copy() {
|
||||||
|
log "removing: $2"
|
||||||
|
if [[ $dry_run == "0" ]]; then
|
||||||
|
rm $2 &>/dev/null
|
||||||
|
fi
|
||||||
|
log "copying: $1 to $2"
|
||||||
|
if [[ $dry_run == "0" ]]; then
|
||||||
|
cp $1 $2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Copy all files from a directory into another directory.
|
||||||
|
copy_files() {
|
||||||
|
log "copying over files from: $1"
|
||||||
|
pushd "$1" &>/dev/null || exit 1
|
||||||
|
(
|
||||||
|
for f in $(find . -mindepth 1 -maxdepth 1 -type f); do
|
||||||
|
|
||||||
|
declare dest
|
||||||
|
dest="$2/$(basename "$f")"
|
||||||
|
|
||||||
|
if [[ $dry_run == "0" ]]; then
|
||||||
|
rm -rf $dest >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log " copying env: cp $f $dest"
|
||||||
|
if [[ $dry_run == "0" ]]; then
|
||||||
|
cp $f $dest
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
)
|
||||||
|
popd &>/dev/null || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
email() {
|
||||||
|
if command -v mailctl; then
|
||||||
|
log "Updating using mailctl..."
|
||||||
|
[[ $dry_run == "0" ]] && mailctl update && mailctl config
|
||||||
|
else
|
||||||
|
log "Installing mailctl..."
|
||||||
|
[[ $dry_run == "0" ]] && . "$DEV_ENV/mail/install"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
############################## MAIN ##############################
|
||||||
|
|
||||||
|
# CONFIG
|
||||||
|
update_dirs $DEV_ENV/env/.config $XDG_CONFIG_HOME
|
||||||
|
update_dirs $DEV_ENV/env/.local $HOME/.local
|
||||||
|
|
||||||
|
# SCRIPTS
|
||||||
|
mkdir -p ~/.local/scripts/{hypr,utils} >/dev/null 2>&1
|
||||||
|
mkdir -p ~/.local/scripts/utils/{kanatactl,hpa,shorten-url} >/dev/null 2>&1
|
||||||
|
update_dirs $DEV_ENV/env/.local/scripts/hypr $HOME/.local/scripts/hypr
|
||||||
|
copy_files $DEV_ENV/env/.local/scripts/hypr $HOME/.local/scripts/hypr
|
||||||
|
copy_files "$DEV_ENV/env/.local/scripts/utils/kanatactl" "$HOME/.local/scripts/utils/kanatactl"
|
||||||
|
copy_files "$DEV_ENV/env/.local/scripts/utils/hpa" "$HOME/.local/scripts/utils/hpa"
|
||||||
|
copy_files "$DEV_ENV/env/.local/scripts/utils/shorten-url" "$HOME/.local/scripts/utils/shorten-url"
|
||||||
|
copy_files $DEV_ENV/env/.local/scripts $HOME/.local/scripts
|
||||||
|
|
||||||
|
# SYSTEMD
|
||||||
|
mkdir -p $XDG_CONFIG_HOME/systemd/user >/dev/null 2>&1
|
||||||
|
copy_files $DEV_ENV/env/.config/systemd/user $XDG_CONFIG_HOME/systemd/user
|
||||||
|
|
||||||
|
# ZSH
|
||||||
|
# NOTE: This keeps from clobbering zsh history and plugins vs. wiping the entire directory and
|
||||||
|
# copying configuration.
|
||||||
|
copy $DEV_ENV/env/.zshenv $HOME/.zshenv
|
||||||
|
mkdir -p $XDG_CONFIG_HOME/zsh >/dev/null 2>&1
|
||||||
|
update_dirs $DEV_ENV/env/.config/zsh $XDG_CONFIG_HOME/zsh # copies sup-directories.
|
||||||
|
copy_files $DEV_ENV/env/.config/zsh $XDG_CONFIG_HOME/zsh # copies files in the root directory.
|
||||||
|
|
||||||
|
# TMUX
|
||||||
|
copy $DEV_ENV/env/.tmux.conf $HOME/.tmux.conf
|
||||||
|
|
||||||
|
# GPG
|
||||||
|
mkdir $HOME/.gnupg >/dev/null 2>&1
|
||||||
|
copy_files $DEV_ENV/env/.gnupg $HOME/.gnupg
|
||||||
|
|
||||||
|
# Wallpapers
|
||||||
|
mkdir $HOME/wallpapers >/dev/null 2>&1
|
||||||
|
copy_files $DEV_ENV/env/wallpapers $HOME/wallpapers
|
||||||
|
|
||||||
|
# MISC
|
||||||
|
mkdir $HOME/Pictures >/dev/null 2>&1
|
||||||
|
mkdir -p $XDG_DATA_HOME/clipse/tmp_files
|
||||||
|
copy $DEV_ENV/dev-env $HOME/.local/scripts/dev-env
|
||||||
|
copy $DEV_ENV/env/.markdownlint.jsonc $HOME/.markdownlint.jsonc
|
||||||
|
copy $DEV_ENV/env/.prettierrc $HOME/.prettierrc
|
||||||
|
|
||||||
|
mkdir -p $XDG_DATA_HOME/applications/icons
|
||||||
|
copy_files $DEV_ENV/env/.local/share/applications $XDG_DATA_HOME/applications
|
||||||
|
copy_files $DEV_ENV/env/.local/share/applications/icons $XDG_DATA_HOME/applications/icons
|
||||||
|
|
||||||
|
# Custom package builds.
|
||||||
|
mkdir $HOME/pkgbuilds
|
||||||
|
update_dirs $DEV_ENV/env/pkgbuilds $HOME/pkgbuilds
|
||||||
|
|
||||||
|
# Email.
|
||||||
|
email
|
||||||
|
|
||||||
|
if [[ $dry_run == "0" ]]; then
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
hyprctl reload
|
||||||
|
espanso service restart
|
||||||
|
exec zsh -l
|
||||||
|
fi
|
||||||
76
devcontainer-env
Executable file
76
devcontainer-env
Executable file
@@ -0,0 +1,76 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# Intsalls appropriate dotfiles inside a devcontainer context.
|
||||||
|
|
||||||
|
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-"$HOME/.config"}
|
||||||
|
DEV_ENV=${DEV_ENV:-""}
|
||||||
|
|
||||||
|
if [ ! -d "$DEV_ENV" ]; then
|
||||||
|
echo "[ERROR]: DEV_ENV variable does not exist."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_dir() {
|
||||||
|
local dir=${1:-""}
|
||||||
|
local path="${DEV_ENV}/${dir}"
|
||||||
|
|
||||||
|
if [ -z "$dir" ] || [ ! -d "$path" ]; then
|
||||||
|
log "[ERROR]: Directory does not exist: $dir"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
log "Copying dir: $dir"
|
||||||
|
cp -R "$path" "$XDG_CONFIG_HOME"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
copy_file() {
|
||||||
|
local file=${1:-""}
|
||||||
|
|
||||||
|
if [[ -z "$file" ]] || [[ ! -f "$file" ]]; then
|
||||||
|
log "[ERROR]: file does not exist: $file"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
log "Copying file: $file"
|
||||||
|
cp "$DEV_ENV/$file" "$HOME"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# MAIN
|
||||||
|
dirs=(
|
||||||
|
env/.config/eza
|
||||||
|
env/.config/git
|
||||||
|
env/.config/ripgrep
|
||||||
|
env/.config/starship
|
||||||
|
env/.config/yazi
|
||||||
|
env/.config/zsh
|
||||||
|
)
|
||||||
|
|
||||||
|
files=(
|
||||||
|
env/.markdownlint.jsonc
|
||||||
|
env/.prettierrc
|
||||||
|
env/.tmux.conf
|
||||||
|
env/.zshenv
|
||||||
|
)
|
||||||
|
|
||||||
|
for dir in "${dirs[@]}"; do
|
||||||
|
copy_dir "$dir"
|
||||||
|
done
|
||||||
|
|
||||||
|
for file in "${files[@]}"; do
|
||||||
|
copy_file "$file"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Install neovim config
|
||||||
|
git submodule update --init --remote env/.config/nvim
|
||||||
|
source env/.config/nvim/install.sh
|
||||||
|
|
||||||
|
# Install my scripts
|
||||||
|
cp -R env/.local/scripts "$HOME/.local"
|
||||||
75
env/.config/aap/config.toml
vendored
Normal file
75
env/.config/aap/config.toml
vendored
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# This config is setup for running inside the docker container.
|
||||||
|
#
|
||||||
|
# NOTE:
|
||||||
|
# Configuration settings for the `hpa` command line tool.
|
||||||
|
# You can delete settings that are not applicable to your use case.
|
||||||
|
|
||||||
|
# Default arguments / options that get passed into `ansible-playbook` commands.
|
||||||
|
# WARNING: Do not put arguments / options that contain spaces in the same string,
|
||||||
|
# they should be separate strings, for example do not do something like
|
||||||
|
# ['--tags debug'], instead use ['--tags', 'debug'].
|
||||||
|
#
|
||||||
|
args = ['--tags', 'debug']
|
||||||
|
|
||||||
|
# Set to true if you want to pass the vault args to `ansible-playbook` commands.
|
||||||
|
useVaultArgs = true
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# Configuration for running the generate command(s). This allows custimizations
|
||||||
|
# to the files that get used to generate the final output (generally a pdf).
|
||||||
|
# See `pandoc --help`. Below are the defaults that get used, which only need
|
||||||
|
# adjusted if your template does not follow the default template design or if
|
||||||
|
# you add extra files to your template that need to be included in the final
|
||||||
|
# output. Also be aware that any of the files specified in the `files` or
|
||||||
|
# `includeInHeader` options, need to be inside the `buildDirectory` when generating
|
||||||
|
# the final output file.
|
||||||
|
|
||||||
|
# [generate]
|
||||||
|
# this relative to the project directory.
|
||||||
|
# buildDirectory = '.build'
|
||||||
|
# pdfEngine = 'xelatex'
|
||||||
|
# includeInHeader = [
|
||||||
|
# 'head.tex',
|
||||||
|
# 'footer.tex'
|
||||||
|
# ]
|
||||||
|
# files = [
|
||||||
|
# 'Report.md',
|
||||||
|
# 'Definitions.md'
|
||||||
|
# ]
|
||||||
|
# outputFileName = 'Report'
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# These are more for local development of the ansible playbook and should not be needed
|
||||||
|
# in most cases. Uncomment the lines if you want to customize the playbook and use it
|
||||||
|
# instead of the provided / default playbook.
|
||||||
|
|
||||||
|
[playbook]
|
||||||
|
directory = '/root/.local/share/hpa/playbook'
|
||||||
|
inventory = '/root/.local/share/hpa/playbook/inventory.ini'
|
||||||
|
version = 'main'
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# These are to declare where your template files are either on your local system or
|
||||||
|
# a remote git repository.
|
||||||
|
[template]
|
||||||
|
# The directory path on your local system to the template files.
|
||||||
|
directory = '/root/.local/share/hpa/airflow-assessment-template'
|
||||||
|
vars = 'repo_vars'
|
||||||
|
|
||||||
|
# The url to a git repository that contains your template files.
|
||||||
|
# url = 'https://git.example.com/consult-template.git'
|
||||||
|
|
||||||
|
# The version, tag, branch, or sha of the template files to clone from the remote
|
||||||
|
# template repository. In general it is best practice to use a version instead of a
|
||||||
|
# branch.
|
||||||
|
# version = '1.0.0'
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# Holds settings for `ansible-vault` commands.
|
||||||
|
[vault]
|
||||||
|
# Arguments to pass to commands that use `ansible-vault`, such as encrypting or decrypting
|
||||||
|
# files.
|
||||||
|
args = ['--vault-password-file=/run/secrets/vault-pass']
|
||||||
|
|
||||||
|
# An id to use when encrypting `ansible-vault` files.
|
||||||
|
#encryptId = 'myId'
|
||||||
35
env/.config/clipse/config.json
vendored
Normal file
35
env/.config/clipse/config.json
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"allowDuplicates": false,
|
||||||
|
"historyFile": "$XDG_DATA_HOME/clipse/clipboard_history.json",
|
||||||
|
"maxHistory": 50,
|
||||||
|
"logFile": "$XDG_DATA_HOME/clipse/clipse.log",
|
||||||
|
"themeFile": "custom_theme.json",
|
||||||
|
"tempDir": "$XDG_DATA_HOME/clipse/tmp_files",
|
||||||
|
"keyBindings": {
|
||||||
|
"choose": "enter",
|
||||||
|
"clearSelected": "S",
|
||||||
|
"down": "down",
|
||||||
|
"end": "end",
|
||||||
|
"filter": "/",
|
||||||
|
"home": "home",
|
||||||
|
"more": "?",
|
||||||
|
"nextPage": "right",
|
||||||
|
"prevPage": "left",
|
||||||
|
"preview": " ",
|
||||||
|
"quit": "q",
|
||||||
|
"remove": "x",
|
||||||
|
"selectDown": "ctrl+down",
|
||||||
|
"selectSingle": "s",
|
||||||
|
"selectUp": "ctrl+up",
|
||||||
|
"togglePin": "p",
|
||||||
|
"togglePinned": "tab",
|
||||||
|
"up": "up",
|
||||||
|
"yankFilter": "ctrl+s"
|
||||||
|
},
|
||||||
|
"imageDisplay": {
|
||||||
|
"type": "basic",
|
||||||
|
"scaleX": 9,
|
||||||
|
"scaleY": 9,
|
||||||
|
"heightCut": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
29
env/.config/clipse/custom_theme.json
vendored
Normal file
29
env/.config/clipse/custom_theme.json
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"useCustomTheme": true,
|
||||||
|
"TitleFore": "#6F4CBC",
|
||||||
|
"TitleBack": "#1e1e2e",
|
||||||
|
"TitleInfo": "#3498db",
|
||||||
|
"NormalTitle": "#ffffff",
|
||||||
|
"DimmedTitle": "#808080",
|
||||||
|
"SelectedTitle": "#FF69B4",
|
||||||
|
"NormalDesc": "#808080",
|
||||||
|
"DimmedDesc": "#808080",
|
||||||
|
"SelectedDesc": "#FF69B4",
|
||||||
|
"StatusMsg": "#2ecc71",
|
||||||
|
"PinIndicatorColor": "#FFD700",
|
||||||
|
"SelectedBorder": "#3498db",
|
||||||
|
"SelectedDescBorder": "#3498db",
|
||||||
|
"FilteredMatch": "#ffffff",
|
||||||
|
"FilterPrompt": "#2ecc71",
|
||||||
|
"FilterInfo": "#3498db",
|
||||||
|
"FilterText": "#ffffff",
|
||||||
|
"FilterCursor": "#FFD700",
|
||||||
|
"HelpKey": "#999999",
|
||||||
|
"HelpDesc": "#808080",
|
||||||
|
"PageActiveDot": "#3498db",
|
||||||
|
"PageInactiveDot": "#808080",
|
||||||
|
"DividerDot": "#3498db",
|
||||||
|
"PreviewedText": "#ffffff",
|
||||||
|
"PreviewBorder": "#3498db"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -29,12 +29,12 @@
|
|||||||
# --- Auto-restart
|
# --- Auto-restart
|
||||||
|
|
||||||
# Enable/disable the config auto-reload after a file change is detected.
|
# Enable/disable the config auto-reload after a file change is detected.
|
||||||
# auto_restart: false
|
auto_restart: true
|
||||||
|
|
||||||
# --- Clipboard threshold
|
# --- Clipboard threshold
|
||||||
|
|
||||||
# Because injecting long texts char-by-char is a slow operation, espanso automatically
|
# Because injecting long texts char-by-char is a slow operation, espanso automatically
|
||||||
# uses the clipboard if the text is longer than 'clipboard_threshold' characters.
|
# uses the clipboard if the text is longer than 'clipboard_threshold' characters.
|
||||||
# clipboard_threshold: 100
|
# clipboard_threshold: 100
|
||||||
|
#
|
||||||
|
show_notifications: false
|
||||||
# For a list of all the available options, visit the official docs at: https://espanso.org/docs/
|
# For a list of all the available options, visit the official docs at: https://espanso.org/docs/
|
||||||
@@ -12,5 +12,6 @@ imports:
|
|||||||
- "./email.yml"
|
- "./email.yml"
|
||||||
- "./housecallpro.yml"
|
- "./housecallpro.yml"
|
||||||
- "./links.yml"
|
- "./links.yml"
|
||||||
|
- './symbols.yml'
|
||||||
|
|
||||||
|
|
||||||
@@ -4,8 +4,11 @@ matches:
|
|||||||
# Email Addresses
|
# Email Addresses
|
||||||
- trigger: ":@hhe"
|
- trigger: ":@hhe"
|
||||||
replace: "mhoush@houshhomeenergy.com"
|
replace: "mhoush@houshhomeenergy.com"
|
||||||
- trigger: ":@service"
|
- trigger: ":@w"
|
||||||
|
replace: "mhoush@houshhomeenergy.com"
|
||||||
|
- trigger: ":@ser"
|
||||||
replace: "service@houshhomeenergy.com"
|
replace: "service@houshhomeenergy.com"
|
||||||
- trigger: ":@me"
|
- trigger: ":@me"
|
||||||
replace: "michael@mhoush.com"
|
replace: "michael@mhoush.com"
|
||||||
|
- trigger: ":@p"
|
||||||
|
replace: "michael@mhoush.com"
|
||||||
14
env/.config/espanso/match/packages/actually-all-emojis-spaces/README.md
vendored
Normal file
14
env/.config/espanso/match/packages/actually-all-emojis-spaces/README.md
vendored
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
## Actually All Emojis
|
||||||
|
|
||||||
|
An up-to-date package for [espanso](https://espanso.org/) which provides triggers for all emojis (`v14.0`). Emojis and codes fetched from [Unicode.org](https://unicode.org/emoji/charts/full-emoji-list.html)
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
To use this package, just type the name of the emoji between two colons. For example, to use the `smile` emoji 😄, you can type: `:smile:`
|
||||||
|
|
||||||
|
A full list of emojis and their CLDR Short Names can be found [here](https://unicode.org/emoji/charts/full-emoji-list.html)
|
||||||
|
|
||||||
|
**Note**: There are two options for this package. One with spaces between words, and one with underscores. This version uses _spaces_
|
||||||
|
For example `:kissing face:`
|
||||||
|
|
||||||
|
To install the version with underscores use `actually-all-emojis`
|
||||||
7
env/.config/espanso/match/packages/actually-all-emojis-spaces/_manifest.yml
vendored
Normal file
7
env/.config/espanso/match/packages/actually-all-emojis-spaces/_manifest.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
author: Jobie Wong
|
||||||
|
description: An updated package providing all v.14 emojis - fetched from unicode.org
|
||||||
|
name: actually-all-emojis-spaces
|
||||||
|
title: Actually All Emojis (Spaces)
|
||||||
|
version: 0.1.0
|
||||||
|
homepage: "https://github.com/jobiewong/espanso-emojis"
|
||||||
|
tags: ["emoji", "chat"]
|
||||||
2
env/.config/espanso/match/packages/actually-all-emojis-spaces/_pkgsource.yml
vendored
Normal file
2
env/.config/espanso/match/packages/actually-all-emojis-spaces/_pkgsource.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
hub
|
||||||
3707
env/.config/espanso/match/packages/actually-all-emojis-spaces/package.yml
vendored
Normal file
3707
env/.config/espanso/match/packages/actually-all-emojis-spaces/package.yml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9
env/.config/espanso/match/symbols.yml
vendored
Normal file
9
env/.config/espanso/match/symbols.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
matches:
|
||||||
|
- trigger: ':deg:'
|
||||||
|
replace: '°'
|
||||||
|
- trigger: ':cmd:'
|
||||||
|
replace: '⌘'
|
||||||
|
- trigger: ':shift:'
|
||||||
|
replace: '⇧'
|
||||||
|
- trigger: ':noteq:'
|
||||||
|
replace: '≠'
|
||||||
104
env/.config/eza/theme.yml
vendored
Normal file
104
env/.config/eza/theme.yml
vendored
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
# see https://github.com/eza-community/eza-themes/blob/main/themes/catppuccin.yml
|
||||||
|
|
||||||
|
colourful: true
|
||||||
|
|
||||||
|
filekinds:
|
||||||
|
normal: { foreground: "#BAC2DE" }
|
||||||
|
directory: { foreground: "#89B4FA" }
|
||||||
|
symlink: { foreground: "#89DCEB" }
|
||||||
|
pipe: { foreground: "#7F849C" }
|
||||||
|
block_device: { foreground: "#EBA0AC" }
|
||||||
|
char_device: { foreground: "#EBA0AC" }
|
||||||
|
socket: { foreground: "#585B70" }
|
||||||
|
special: { foreground: "#CBA6F7" }
|
||||||
|
executable: { foreground: "#A6E3A1" }
|
||||||
|
mount_point: { foreground: "#74C7EC" }
|
||||||
|
|
||||||
|
perms:
|
||||||
|
user_read: { foreground: "#CDD6F4" }
|
||||||
|
user_write: { foreground: "#F9E2AF" }
|
||||||
|
user_execute_file: { foreground: "#A6E3A1" }
|
||||||
|
user_execute_other: { foreground: "#A6E3A1" }
|
||||||
|
group_read: { foreground: "#BAC2DE" }
|
||||||
|
group_write: { foreground: "#F9E2AF" }
|
||||||
|
group_execute: { foreground: "#A6E3A1" }
|
||||||
|
other_read: { foreground: "#A6ADC8" }
|
||||||
|
other_write: { foreground: "#F9E2AF" }
|
||||||
|
other_execute: { foreground: "#A6E3A1" }
|
||||||
|
special_user_file: { foreground: "#CBA6F7" }
|
||||||
|
special_other: { foreground: "#585B70" }
|
||||||
|
attribute: { foreground: "#A6ADC8" }
|
||||||
|
|
||||||
|
size:
|
||||||
|
major: { foreground: "#A6ADC8" }
|
||||||
|
minor: { foreground: "#89DCEB" }
|
||||||
|
number_byte: { foreground: "#CDD6F4" }
|
||||||
|
number_kilo: { foreground: "#BAC2DE" }
|
||||||
|
number_mega: { foreground: "#89B4FA" }
|
||||||
|
number_giga: { foreground: "#CBA6F7" }
|
||||||
|
number_huge: { foreground: "#CBA6F7" }
|
||||||
|
unit_byte: { foreground: "#A6ADC8" }
|
||||||
|
unit_kilo: { foreground: "#89B4FA" }
|
||||||
|
unit_mega: { foreground: "#CBA6F7" }
|
||||||
|
unit_giga: { foreground: "#CBA6F7" }
|
||||||
|
unit_huge: { foreground: "#74C7EC" }
|
||||||
|
|
||||||
|
users:
|
||||||
|
user_you: { foreground: "#CDD6F4" }
|
||||||
|
user_root: { foreground: "#F38BA8" }
|
||||||
|
user_other: { foreground: "#CBA6F7" }
|
||||||
|
group_yours: { foreground: "#BAC2DE" }
|
||||||
|
group_other: { foreground: "#7F849C" }
|
||||||
|
group_root: { foreground: "#F38BA8" }
|
||||||
|
|
||||||
|
links:
|
||||||
|
normal: { foreground: "#89DCEB" }
|
||||||
|
multi_link_file: { foreground: "#74C7EC" }
|
||||||
|
|
||||||
|
git:
|
||||||
|
new: { foreground: "#A6E3A1" }
|
||||||
|
modified: { foreground: "#F9E2AF" }
|
||||||
|
deleted: { foreground: "#F38BA8" }
|
||||||
|
renamed: { foreground: "#94E2D5" }
|
||||||
|
typechange: { foreground: "#F5C2E7" }
|
||||||
|
ignored: { foreground: "#7F849C" }
|
||||||
|
conflicted: { foreground: "#EBA0AC" }
|
||||||
|
|
||||||
|
git_repo:
|
||||||
|
branch_main: { foreground: "#CDD6F4" }
|
||||||
|
branch_other: { foreground: "#CBA6F7" }
|
||||||
|
git_clean: { foreground: "#A6E3A1" }
|
||||||
|
git_dirty: { foreground: "#F38BA8" }
|
||||||
|
|
||||||
|
security_context:
|
||||||
|
colon: { foreground: "#7F849C" }
|
||||||
|
user: { foreground: "#BAC2DE" }
|
||||||
|
role: { foreground: "#CBA6F7" }
|
||||||
|
typ: { foreground: "#585B70" }
|
||||||
|
range: { foreground: "#CBA6F7" }
|
||||||
|
|
||||||
|
file_type:
|
||||||
|
image: { foreground: "#F9E2AF" }
|
||||||
|
video: { foreground: "#F38BA8" }
|
||||||
|
music: { foreground: "#A6E3A1" }
|
||||||
|
lossless: { foreground: "#94E2D5" }
|
||||||
|
crypto: { foreground: "#585B70" }
|
||||||
|
document: { foreground: "#CDD6F4" }
|
||||||
|
compressed: { foreground: "#F5C2E7" }
|
||||||
|
temp: { foreground: "#EBA0AC" }
|
||||||
|
compiled: { foreground: "#74C7EC" }
|
||||||
|
build: { foreground: "#585B70" }
|
||||||
|
source: { foreground: "#89B4FA" }
|
||||||
|
|
||||||
|
punctuation: { foreground: "#7F849C" }
|
||||||
|
date: { foreground: "#F9E2AF" }
|
||||||
|
inode: { foreground: "#A6ADC8" }
|
||||||
|
blocks: { foreground: "#9399B2" }
|
||||||
|
header: { foreground: "#CDD6F4" }
|
||||||
|
octal: { foreground: "#94E2D5" }
|
||||||
|
flags: { foreground: "#CBA6F7" }
|
||||||
|
|
||||||
|
symlink_path: { foreground: "#89DCEB" }
|
||||||
|
control_char: { foreground: "#74C7EC" }
|
||||||
|
broken_symlink: { foreground: "#F38BA8" }
|
||||||
|
broken_path_overlay: { foreground: "#585B70" }
|
||||||
34
env/.config/ghostty/config
vendored
Normal file
34
env/.config/ghostty/config
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
theme = Catppuccin Mocha
|
||||||
|
|
||||||
|
confirm-close-surface = false
|
||||||
|
|
||||||
|
font-family = "Fira Code"
|
||||||
|
font-size = 18
|
||||||
|
font-thicken = false
|
||||||
|
|
||||||
|
window-save-state = always
|
||||||
|
|
||||||
|
# NOTE: This setting removes tabs, rounded borders, and window controls.
|
||||||
|
# Also makes some of the below macos-titlebar-* things not matter, but
|
||||||
|
# will take affect if this is set to true.
|
||||||
|
window-decoration = true
|
||||||
|
|
||||||
|
copy-on-select = true
|
||||||
|
quit-after-last-window-closed = true
|
||||||
|
quit-after-last-window-closed-delay = 5m
|
||||||
|
|
||||||
|
# macos-auto-secure-input = true
|
||||||
|
# macos-non-native-fullscreen = visible-menu
|
||||||
|
# macos-titlebar-style = transparent
|
||||||
|
# macos-titlebar-proxy-icon = hidden
|
||||||
|
# macos-icon = custom-style
|
||||||
|
|
||||||
|
keybind = ctrl+shift+t=toggle_quick_terminal
|
||||||
|
|
||||||
|
# Splits
|
||||||
|
keybind = super+j=goto_split:down
|
||||||
|
keybind = super+h=goto_split:left
|
||||||
|
keybind = super+k=goto_split:up
|
||||||
|
keybind = super+l=goto_split:right
|
||||||
|
keybind = super+shift+j=goto_split:previous
|
||||||
|
keybind = super+shift+k=goto_split:next
|
||||||
71
env/.config/git/config
vendored
Normal file
71
env/.config/git/config
vendored
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
[core]
|
||||||
|
excludesfile = ~/.config/git/gitignore
|
||||||
|
ignorecasse = false
|
||||||
|
|
||||||
|
[init]
|
||||||
|
defaultBranch = main
|
||||||
|
|
||||||
|
[user]
|
||||||
|
name = Michael Housh
|
||||||
|
email = michael@mhoush.com
|
||||||
|
signingkey = 0x90D3EB6274D5B7CF
|
||||||
|
|
||||||
|
[commit]
|
||||||
|
gpgsign = true
|
||||||
|
|
||||||
|
[tag]
|
||||||
|
gpgSign = true
|
||||||
|
sort = version:refname
|
||||||
|
|
||||||
|
[color]
|
||||||
|
ui = true
|
||||||
|
|
||||||
|
[credential]
|
||||||
|
helper = gopass
|
||||||
|
|
||||||
|
[credential "https://git.housh.dev"]
|
||||||
|
username = michael
|
||||||
|
|
||||||
|
[push]
|
||||||
|
default = simple
|
||||||
|
autoSetupRemote = true
|
||||||
|
followTags = true
|
||||||
|
recurseSubmodules = on-demand
|
||||||
|
|
||||||
|
[fetch]
|
||||||
|
prune = true
|
||||||
|
#pruneTags = true
|
||||||
|
#all = true
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
|
||||||
|
[filter "lfs"]
|
||||||
|
process = git-lfs filter-process
|
||||||
|
required = true
|
||||||
|
clean = git-lfs clean -- %f
|
||||||
|
smudge = git-lfs smudge -- %f
|
||||||
|
|
||||||
|
[column]
|
||||||
|
ui = auto
|
||||||
|
|
||||||
|
[branch]
|
||||||
|
sort = committerdate
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
algorithm = histogram
|
||||||
|
colorMoved = plain
|
||||||
|
mnemonicPrefix = true
|
||||||
|
renames = true
|
||||||
|
|
||||||
|
[rerere]
|
||||||
|
enabled = true
|
||||||
|
autoupdate = true
|
||||||
|
|
||||||
|
[rebase]
|
||||||
|
autoSquash = true
|
||||||
|
autoStash = true
|
||||||
|
updateRefs = true
|
||||||
|
|
||||||
|
[submodule]
|
||||||
|
recurse = true
|
||||||
75
env/.config/hpa/config.toml
vendored
Normal file
75
env/.config/hpa/config.toml
vendored
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# This config is setup for running inside the docker container.
|
||||||
|
#
|
||||||
|
# NOTE:
|
||||||
|
# Configuration settings for the `hpa` command line tool.
|
||||||
|
# You can delete settings that are not applicable to your use case.
|
||||||
|
|
||||||
|
# Default arguments / options that get passed into `ansible-playbook` commands.
|
||||||
|
# WARNING: Do not put arguments / options that contain spaces in the same string,
|
||||||
|
# they should be separate strings, for example do not do something like
|
||||||
|
# ['--tags debug'], instead use ['--tags', 'debug'].
|
||||||
|
#
|
||||||
|
args = ['--tags', 'debug']
|
||||||
|
|
||||||
|
# Set to true if you want to pass the vault args to `ansible-playbook` commands.
|
||||||
|
useVaultArgs = true
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# Configuration for running the generate command(s). This allows custimizations
|
||||||
|
# to the files that get used to generate the final output (generally a pdf).
|
||||||
|
# See `pandoc --help`. Below are the defaults that get used, which only need
|
||||||
|
# adjusted if your template does not follow the default template design or if
|
||||||
|
# you add extra files to your template that need to be included in the final
|
||||||
|
# output. Also be aware that any of the files specified in the `files` or
|
||||||
|
# `includeInHeader` options, need to be inside the `buildDirectory` when generating
|
||||||
|
# the final output file.
|
||||||
|
|
||||||
|
# [generate]
|
||||||
|
# this relative to the project directory.
|
||||||
|
# buildDirectory = '.build'
|
||||||
|
# pdfEngine = 'xelatex'
|
||||||
|
# includeInHeader = [
|
||||||
|
# 'head.tex',
|
||||||
|
# 'footer.tex'
|
||||||
|
# ]
|
||||||
|
# files = [
|
||||||
|
# 'Report.md',
|
||||||
|
# 'Definitions.md'
|
||||||
|
# ]
|
||||||
|
# outputFileName = 'Report'
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# These are more for local development of the ansible playbook and should not be needed
|
||||||
|
# in most cases. Uncomment the lines if you want to customize the playbook and use it
|
||||||
|
# instead of the provided / default playbook.
|
||||||
|
|
||||||
|
[playbook]
|
||||||
|
directory = '/root/.local/share/hpa/playbook'
|
||||||
|
inventory = '/root/.local/share/hpa/playbook/inventory.ini'
|
||||||
|
version = 'main'
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# These are to declare where your template files are either on your local system or
|
||||||
|
# a remote git repository.
|
||||||
|
[template]
|
||||||
|
# The directory path on your local system to the template files.
|
||||||
|
directory = '/root/.local/share/hpa/template'
|
||||||
|
vars = 'repo_vars'
|
||||||
|
|
||||||
|
# The url to a git repository that contains your template files.
|
||||||
|
# url = 'https://git.example.com/consult-template.git'
|
||||||
|
|
||||||
|
# The version, tag, branch, or sha of the template files to clone from the remote
|
||||||
|
# template repository. In general it is best practice to use a version instead of a
|
||||||
|
# branch.
|
||||||
|
# version = '1.0.0'
|
||||||
|
|
||||||
|
# NOTE:
|
||||||
|
# Holds settings for `ansible-vault` commands.
|
||||||
|
[vault]
|
||||||
|
# Arguments to pass to commands that use `ansible-vault`, such as encrypting or decrypting
|
||||||
|
# files.
|
||||||
|
args = ['--vault-password-file=/run/secrets/vault-pass']
|
||||||
|
|
||||||
|
# An id to use when encrypting `ansible-vault` files.
|
||||||
|
#encryptId = 'myId'
|
||||||
15
env/.config/hypr/hyprautostart.conf
vendored
Normal file
15
env/.config/hypr/hyprautostart.conf
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
#################
|
||||||
|
### AUTOSTART ###
|
||||||
|
#################
|
||||||
|
|
||||||
|
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||||
|
# Or execute your favorite apps at launch like this:
|
||||||
|
|
||||||
|
exec-once = uwsm app -- hyprpaper
|
||||||
|
exec-once = pidof hypridle | uwsm app -- hypridle
|
||||||
|
exec-once = pidof hyprlauncher | uwsm app -- hyprlauncher -d
|
||||||
|
exec-once = pidof swaync | uwsm app -- swaync
|
||||||
|
exec-once = pidof waybar | uwsm app -- waybar
|
||||||
|
exec-once = uwsm app -- clipse -listen
|
||||||
|
|
||||||
37
env/.config/hypr/hyprenv.conf
vendored
Normal file
37
env/.config/hypr/hyprenv.conf
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#############################
|
||||||
|
### ENVIRONMENT VARIABLES ###
|
||||||
|
#############################
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||||
|
|
||||||
|
# Cursor size
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
|
||||||
|
# Force all apps to use Wayland
|
||||||
|
env = GDK_BACKEND,wayland,x11,*
|
||||||
|
env = QT_QPA_PLATFORM,wayland;xcb
|
||||||
|
env = QT_STYLE_OVERRIDE,kvantum
|
||||||
|
env = SDL_VIDEODRIVER,wayland
|
||||||
|
env = MOZ_ENABLE_WAYLAND,1
|
||||||
|
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
||||||
|
env = OZONE_PLATFORM,wayland
|
||||||
|
env = XDG_SESSION_TYPE,wayland
|
||||||
|
|
||||||
|
env = GDK_SCALE,2
|
||||||
|
|
||||||
|
# Allow better support for screen sharing (Google Meet, Discord, etc)
|
||||||
|
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||||
|
env = XDG_SESSION_DESKTOP,Hyprland
|
||||||
|
|
||||||
|
xwayland {
|
||||||
|
force_zero_scaling = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Use XCompose file
|
||||||
|
env = XCOMPOSEFILE,~/.XCompose
|
||||||
|
|
||||||
|
# Don't show update on first launch
|
||||||
|
ecosystem {
|
||||||
|
no_update_news = true
|
||||||
|
}
|
||||||
34
env/.config/hypr/hypridle.conf
vendored
Normal file
34
env/.config/hypr/hypridle.conf
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
general {
|
||||||
|
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||||
|
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||||
|
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 150 # 2.5min.
|
||||||
|
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||||
|
on-resume = brightnessctl -r # monitor backlight restore.
|
||||||
|
}
|
||||||
|
|
||||||
|
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
|
||||||
|
listener {
|
||||||
|
timeout = 150 # 2.5min.
|
||||||
|
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
|
||||||
|
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 300 # 5min
|
||||||
|
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 330 # 5.5min
|
||||||
|
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
||||||
|
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 1800 # 30min
|
||||||
|
on-timeout = systemctl suspend # suspend pc
|
||||||
|
}
|
||||||
36
env/.config/hypr/hyprinput.conf
vendored
Normal file
36
env/.config/hypr/hyprinput.conf
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#############
|
||||||
|
### INPUT ###
|
||||||
|
#############
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
kb_options = ctrl:nocaps
|
||||||
|
kb_rules =
|
||||||
|
|
||||||
|
repeat_rate = 50
|
||||||
|
repeat_delay = 200
|
||||||
|
|
||||||
|
follow_mouse = 2
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = true
|
||||||
|
tap-to-click = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||||
|
# gestures {
|
||||||
|
# workspace_swipe = false
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Example per-device config
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||||
|
device {
|
||||||
|
name = epic-mouse-v1
|
||||||
|
sensitivity = -0.5
|
||||||
|
}
|
||||||
197
env/.config/hypr/hyprkeybinds.conf
vendored
Normal file
197
env/.config/hypr/hyprkeybinds.conf
vendored
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
##############################
|
||||||
|
### HYPRLAND - KEYBINDINGS ###
|
||||||
|
##############################
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||||
|
$mainMod = SUPER # "Command/Windows" key as main modifier
|
||||||
|
$windowMod = ALT # Option for window controls.
|
||||||
|
$MEH = ALT SHIFT CTRL
|
||||||
|
$HYPER = ALT SHIFT SUPER CTRL
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||||
|
|
||||||
|
$terminal = uwsm app -- ghostty
|
||||||
|
$browser = uwsm app -- brave
|
||||||
|
$fileManager = $terminal -e yazi
|
||||||
|
$fileBrowser = uwsm app -- nautilus
|
||||||
|
$menu = hyprlauncher
|
||||||
|
$scripts = ~/.local/scripts/hypr
|
||||||
|
$pwa = $scripts/webapp launch
|
||||||
|
$tmuxSessionator = ~/.local/scripts/tmux-sessionator
|
||||||
|
$clipboardHistory = com.ghostty.clipse $terminal --class=com.ghostty.clipse -e clipse
|
||||||
|
$uninstallDesktop = $terminal --class=com.ghostty.float -e $scripts/uninstall-desktop-app
|
||||||
|
$utilsLauncher = com.ghostty.utils-launcher $scripts/utils-launcher --launch
|
||||||
|
$housecallPro = https://pro.housecallpro.com/app/calendar_new
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
|
||||||
|
##############################################################################################
|
||||||
|
# Apps / hyprland controls
|
||||||
|
#
|
||||||
|
# These should in general use the $mainMod prefix
|
||||||
|
##############################################################################################
|
||||||
|
# MOD # KEY # DESC # Action #
|
||||||
|
##############################################################################################
|
||||||
|
|
||||||
|
bindd = $mainMod, SPACE, Application launcher, exec, $menu
|
||||||
|
bindd = $mainMod, RETURN, New terminal, exec, $terminal
|
||||||
|
bindd = $mainMod SHIFT, RETURN, New floating terminal, exec, $terminal --class=com.ghostty.float
|
||||||
|
bindd = $mainMod, TAB, Focus previous workspace, exec, $scripts/workspacectl switch --to previous
|
||||||
|
bindd = $mainMod, A, [A]i - launch / focus, exec, $pwa --or-focus "https://ollama.housh.dev"
|
||||||
|
bindd = $mainMod SHIFT, A, [A]i - new window, exec, $pwa "https://ollama.housh.dev"
|
||||||
|
bindd = $mainMod, B, New [b]rowser, exec, $browser
|
||||||
|
bindd = $mainMod SHIFT, B, New private [b]rowser, exec, $browser --incognito
|
||||||
|
bindd = $mainMod, C, [C]alendar, togglespecialworkspace, calendar
|
||||||
|
bindd = $mainMod SHIFT, C, [C]onfig folder in tmux session, exec, $terminal -e $tmuxSessionator ~/.config
|
||||||
|
bindd = $mainMod, D, [D]ispatch app - special workspace, togglespecialworkspace, dispatch
|
||||||
|
bindd = $mainMod SHIFT, D, [D]ispatch app - new window, exec, $pwa --new $housecallPro
|
||||||
|
bindd = $mainMod, E, [E]mail - personal, exec, $pwa --or-focus "https://mail.proton.me"
|
||||||
|
bindd = $mainMod SHIFT, E, [E]mail - work, exec, $scripts/launch --or-focus thunderbird uwsm app -- thunderbird
|
||||||
|
bindd = $mainMod, F, [F]ile manager - terminal, exec, $fileManager
|
||||||
|
bindd = $mainMod SHIFT, F, [F]ile manager - application, exec, $fileBrowser
|
||||||
|
bindd = $mainMod, G, [G]itea, exec, $pwa --or-focus "https://git.housh.dev"
|
||||||
|
bindd = $mainMod SHIFT, G, [G]ithub, exec, $pwa --or-focus "https://github.com"
|
||||||
|
bindd = $mainMod, H, Focus window - left, movefocus, l # move window focus using vim keys
|
||||||
|
bindd = $mainMod SHIFT, H, Workspace - back, workspace, -1
|
||||||
|
bindd = $mainMod, I, Localsend, exec, $scripts/launch --or-close localsend uwsm app -- localsend
|
||||||
|
bindd = $mainMod, J, Focus window - down, movefocus, d # move window focus using vim keys
|
||||||
|
bindd = $mainMod, K, Focus window - up, movefocus, u # move window focus using vim keys
|
||||||
|
bindd = $mainMod, L, Focus window - right, movefocus, r # move window focus using vim keys
|
||||||
|
bindd = $mainMod SHIFT, L, Workspace - forward, workspace, +1
|
||||||
|
bindd = $mainMod, M, [M]usic - jellyfin-tui, togglespecialworkspace, music
|
||||||
|
bindd = $mainMod SHIFT, M, [M]enu bar - toggle visible, exec, $scripts/waybarctl --toggle
|
||||||
|
bindd = $mainMod, O, Purchase [o]rders, exec, $pwa --special dispatch "https://po.housh.dev"
|
||||||
|
bindd = $mainMod, P, [P]assword manager, togglespecialworkspace, pass
|
||||||
|
bindd = $mainMod SHIFT, P, [P]hotos, exec, $pwa --or-focus "https://photos.housh.dev"
|
||||||
|
bindd = $mainMod SHIFT, R, [R]estart menu bar, exec, $scripts/waybarctl --restart
|
||||||
|
bindd = $mainMod, S, Toggle [s]pecial workspace, togglespecialworkspace, magic # use $windowMod S to send window to the special workspace
|
||||||
|
bindd = $mainMod, Y, [Y]ouTube, exec, $pwa --or-focus "https://youtube.com"
|
||||||
|
bindd = $mainMod, U, [U]nifi, exec, $pwa "https://unifi.ui.com"
|
||||||
|
bindd = $mainMod SHIFT, U, [U]tility launcher, exec, $scripts/launch --or-close $utilsLauncher
|
||||||
|
bindd = $mainMod, V, Clipboard history, exec, $scripts/launch --or-close $clipboardHistory
|
||||||
|
bindd = $mainMod, W, Close current window, killactive,
|
||||||
|
bindd = $mainMod SHIFT, W, Close all windows in active workspace, exec, $scripts/windowctl close --active-workspace
|
||||||
|
|
||||||
|
# Switch to workspaces with mainMod + [0-9]
|
||||||
|
bindd = $mainMod, 1, Switch to workspace [1], exec, $scripts/workspacectl switch --to 1
|
||||||
|
bindd = $mainMod, 2, Switch to workspace [2], exec, $scripts/workspacectl switch --to 2
|
||||||
|
bindd = $mainMod, 3, Switch to workspace [3], exec, $scripts/workspacectl switch --to 3
|
||||||
|
bindd = $mainMod, 4, Switch to workspace [4], exec, $scripts/workspacectl switch --to 4
|
||||||
|
bindd = $mainMod, 5, Switch to workspace [5], exec, $scripts/workspacectl switch --to 5
|
||||||
|
bindd = $mainMod, 6, Switch to workspace [6], exec, $scripts/workspacectl switch --to 6
|
||||||
|
bindd = $mainMod, 7, Switch to workspace [7], exec, $scripts/workspacectl switch --to 7
|
||||||
|
bindd = $mainMod, 8, Switch to workspace [8], exec, $scripts/workspacectl switch --to 8
|
||||||
|
bindd = $mainMod, 9, Switch to workspace [9], exec, $scripts/workspacectl switch --to 9
|
||||||
|
bindd = $mainMod, 0, Switch to workspace 1[0], exec, $scripts/workspacectl switch --to 10
|
||||||
|
|
||||||
|
# Move all workspaces to a monitor
|
||||||
|
bindd = $mainMod SHIFT, 1, Switch all workspaces to monitor [1], exec, $scripts/mv-all-workspaces-to-monitor 1
|
||||||
|
bindd = $mainMod SHIFT, 0, Switch all workspaces to monitor [0], exec, $scripts/mv-all-workspaces-to-monitor 0
|
||||||
|
|
||||||
|
# Screen Shots
|
||||||
|
bindd = $mainMod SHIFT, 3, Screenshot a monitor, exec, hyprshot --mode output --output-folder ~/Pictures
|
||||||
|
bindd = $mainMod SHIFT, 4, Screenshot a selection, exec, hyprshot --mode region --output-folder ~/Pictures
|
||||||
|
bindd = $mainMod SHIFT, 5, Screenshot a window, exec, hyprshot --mode window --output-folder ~/Pictures
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
bind = $mainMod, mouse_down, workspace, e+1
|
||||||
|
bind = $mainMod, mouse_up, workspace, e-1
|
||||||
|
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
bindm = $mainMod SHIFT, mouse_down, resizewindow
|
||||||
|
|
||||||
|
#######################################################################################
|
||||||
|
# Window controls
|
||||||
|
#
|
||||||
|
# These should in general use the $windowMod prefix
|
||||||
|
##########################################################################################
|
||||||
|
# MOD # KEY # DESC # Action #
|
||||||
|
##########################################################################################
|
||||||
|
# TODO: Decide which is prefered to switch to fullscreen.
|
||||||
|
bindd = CTRL, F, Toggle [f]ullscreen, fullscreen,
|
||||||
|
bindd = $windowMod, F, Toggle [f]loating, exec, $scripts/windowctl toggle-floating --active --width 80% --height 80%
|
||||||
|
bindd = $windowMod SHIFT, F, Toggle [f]loating, exec, $scripts/windowctl toggle-floating --active
|
||||||
|
bindd = $windowMod, H, Move window - left, movewindow, l # move windows with windowMod + vim keys
|
||||||
|
bindd = $windowMod, J, Move window - down, movewindow, d # move windows with windowMod + vim keys
|
||||||
|
bindd = $windowMod, K, Move window - up, movewindow, u # move windows with windowMod + vim keys
|
||||||
|
bindd = $windowMod, L, Move window - right , movewindow, r # move windows with windowMod + vim keys
|
||||||
|
bindd = $windowMod, M, Move window to [m]usic workspace, movetoworkspace, special:music
|
||||||
|
bindd = $windowMod SHIFT, P, Toggle [p]seudo window mode, pseudo, # dwindle
|
||||||
|
bindd = $windowMod, S, Move window to [s]pecial workspace, movetoworkspacesilent, special:magic
|
||||||
|
bindd = $windowMod, W, [W]indow actions, exec, $scripts/windowctl launch action --active
|
||||||
|
# FIX: Changes size of window, this works a different depending on if
|
||||||
|
# the window is on the right or left of the screen.
|
||||||
|
#
|
||||||
|
# Resize horizontally
|
||||||
|
bindd = $windowMod, EQUAL, Increase window size - horizontal, resizeactive, 20 0
|
||||||
|
bindd = $windowMod, MINUS, Decrease window size - horizontal, resizeactive, -20 0
|
||||||
|
# Resize vertically
|
||||||
|
bindd = $windowMod SHIFT, EQUAL, Increase window size - vertical, resizeactive, 0 20
|
||||||
|
bindd = $windowMod SHIFT, MINUS, Decrease window size - vertical, resizeactive, 0 -20
|
||||||
|
|
||||||
|
# Move active window to a workspace with windowMod + [0-9]
|
||||||
|
bindd = $windowMod, 1, Move window to workspace [1], movetoworkspace, 1
|
||||||
|
bindd = $windowMod, 2, Move window to workspace [2], movetoworkspace, 2
|
||||||
|
bindd = $windowMod, 3, Move window to workspace [3], movetoworkspace, 3
|
||||||
|
bindd = $windowMod, 4, Move window to workspace [4], movetoworkspace, 4
|
||||||
|
bindd = $windowMod, 5, Move window to workspace [5], movetoworkspace, 5
|
||||||
|
bindd = $windowMod, 6, Move window to workspace [6], movetoworkspace, 6
|
||||||
|
bindd = $windowMod, 7, Move window to workspace [7], movetoworkspace, 7
|
||||||
|
bindd = $windowMod, 8, Move window to workspace [8], movetoworkspace, 8
|
||||||
|
bindd = $windowMod, 9, Move window to workspace [9], movetoworkspace, 9
|
||||||
|
bindd = $windowMod, 0, Move window to workspace 1[0], movetoworkspace, 10
|
||||||
|
|
||||||
|
#######################################################################################
|
||||||
|
# HYPER (Alt + Shift + Super + Ctrl) controls
|
||||||
|
#
|
||||||
|
# These should in general use the $HYPER prefix
|
||||||
|
#######################################################################################
|
||||||
|
# MOD # KEY # DESC # Action #
|
||||||
|
#######################################################################################
|
||||||
|
|
||||||
|
bindd = $HYPER, H, [H]ide / show windows, exec, $scripts/workspacectl toggle
|
||||||
|
bindd = $HYPER, J, Toggle split orientation, togglesplit # dwindle
|
||||||
|
bindd = $HYPER, L, [L]ock computer, exec, hyprlock
|
||||||
|
bindd = $HYPER, W, Close all windows, exec, $scripts/windowctl close --all
|
||||||
|
|
||||||
|
# Move active window to a workspace silently with HYPER + [0-9]
|
||||||
|
bindd = $HYPER, 1, Move window to workspace silent [1], movetoworkspacesilent, 1
|
||||||
|
bindd = $HYPER, 2, Move window to workspace silent [2], movetoworkspacesilent, 2
|
||||||
|
bindd = $HYPER, 3, Move window to workspace silent [3], movetoworkspacesilent, 3
|
||||||
|
bindd = $HYPER, 4, Move window to workspace silent [4], movetoworkspacesilent, 4
|
||||||
|
bindd = $HYPER, 5, Move window to workspace silent [5], movetoworkspacesilent, 5
|
||||||
|
bindd = $HYPER, 6, Move window to workspace silent [6], movetoworkspacesilent, 6
|
||||||
|
bindd = $HYPER, 7, Move window to workspace silent [7], movetoworkspacesilent, 7
|
||||||
|
bindd = $HYPER, 8, Move window to workspace silent [8], movetoworkspacesilent, 8
|
||||||
|
bindd = $HYPER, 9, Move window to workspace silent [9], movetoworkspacesilent, 9
|
||||||
|
bindd = $HYPER, 0, Move window to workspace silent 1[0], movetoworkspacesilent, 10
|
||||||
|
|
||||||
|
|
||||||
|
#######################################################################################
|
||||||
|
# MEH (Alt + Shift + Ctrl) controls
|
||||||
|
#
|
||||||
|
# These should in general use the $MEH prefix
|
||||||
|
#######################################################################################
|
||||||
|
# MOD # KEY # DESC # Action #
|
||||||
|
#######################################################################################
|
||||||
|
bindd = $MEH, L, [L]ogs picker / viewer, exec, $terminal --class=com.ghostty.float -e $scripts/utils/logs/logs-picker
|
||||||
|
|
||||||
|
##################################################
|
||||||
|
# Multi-media keys
|
||||||
|
##################################################
|
||||||
|
# Laptop multimedia keys for volume and LCD brightness
|
||||||
|
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||||
|
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||||
|
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||||
|
|
||||||
|
# Requires playerctl
|
||||||
|
bindl = , XF86AudioNext, exec, playerctl next
|
||||||
|
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
|
||||||
122
env/.config/hypr/hyprland.conf
vendored
Normal file
122
env/.config/hypr/hyprland.conf
vendored
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
|
||||||
|
# #######################################################################################
|
||||||
|
# HYPRLAND - GENERAL CONFIG
|
||||||
|
# #######################################################################################
|
||||||
|
|
||||||
|
# Refer to the wiki for more information.
|
||||||
|
# https://wiki.hyprland.org/Configuring/
|
||||||
|
|
||||||
|
source = ~/.config/hypr/hyprenv.conf
|
||||||
|
source = ~/.config/hypr/hyprmonitors.conf
|
||||||
|
source = ~/.config/hypr/hyprwindows.conf
|
||||||
|
source = ~/.config/hypr/hyprworkspaces.conf
|
||||||
|
source = ~/.config/hypr/hyprkeybinds.conf
|
||||||
|
source = ~/.config/hypr/hyprinput.conf
|
||||||
|
source = ~/.config/hypr/hyprautostart.conf
|
||||||
|
|
||||||
|
#####################
|
||||||
|
### LOOK AND FEEL ###
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||||
|
general {
|
||||||
|
gaps_in = 3
|
||||||
|
gaps_out = 0, 5, 5, 5
|
||||||
|
|
||||||
|
border_size = 2
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||||
|
col.active_border = rgb(89b4fa) rgb(f2cdcd) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
resize_on_border = true
|
||||||
|
|
||||||
|
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false
|
||||||
|
|
||||||
|
layout = dwindle # dwindle or master
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||||
|
decoration {
|
||||||
|
rounding = 5
|
||||||
|
rounding_power = 2
|
||||||
|
|
||||||
|
# Change transparency of focused and unfocused windows
|
||||||
|
active_opacity = 1.0
|
||||||
|
inactive_opacity = 1.0
|
||||||
|
|
||||||
|
shadow {
|
||||||
|
enabled = true
|
||||||
|
range = 4
|
||||||
|
render_power = 3
|
||||||
|
color = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||||
|
blur {
|
||||||
|
enabled = true
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
|
||||||
|
vibrancy = 0.1696
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||||
|
animations {
|
||||||
|
enabled = no, please :)
|
||||||
|
|
||||||
|
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
|
||||||
|
bezier = easeOutQuint,0.23,1,0.32,1
|
||||||
|
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||||
|
bezier = linear,0,0,1,1
|
||||||
|
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||||
|
bezier = quick,0.15,0,0.1,1
|
||||||
|
|
||||||
|
animation = global, 1, 10, default
|
||||||
|
animation = border, 1, 5.39, easeOutQuint
|
||||||
|
animation = windows, 1, 4.79, easeOutQuint
|
||||||
|
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||||
|
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||||
|
animation = fadeIn, 1, 1.73, almostLinear
|
||||||
|
animation = fadeOut, 1, 1.46, almostLinear
|
||||||
|
animation = fade, 1, 3.03, quick
|
||||||
|
animation = layers, 1, 3.81, easeOutQuint
|
||||||
|
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||||
|
animation = layersOut, 1, 1.5, linear, fade
|
||||||
|
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||||
|
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||||
|
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||||
|
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||||
|
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
dwindle {
|
||||||
|
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + SHIFT + P in the keybinds section below
|
||||||
|
preserve_split = true # You probably want this
|
||||||
|
force_split = 2 # always split to the right or bottom
|
||||||
|
#split_width_multiplier = 1.25
|
||||||
|
use_active_for_splits = false
|
||||||
|
#default_split_ratio = 1.25
|
||||||
|
split_bias = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
master {
|
||||||
|
new_status = slave
|
||||||
|
mfact = 0.50 # Set master window to be 50%
|
||||||
|
orientation = left # set master to be on the right.
|
||||||
|
}
|
||||||
|
|
||||||
|
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||||
|
misc {
|
||||||
|
force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||||
|
focus_on_activate = true
|
||||||
|
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||||
|
}
|
||||||
2
env/.config/hypr/hyprlauncher.conf
vendored
Normal file
2
env/.config/hypr/hyprlauncher.conf
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
desktop_launch_prefix = uwsm app --
|
||||||
109
env/.config/hypr/hyprlock.conf
vendored
Normal file
109
env/.config/hypr/hyprlock.conf
vendored
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# sample hyprlock.conf
|
||||||
|
# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock
|
||||||
|
#
|
||||||
|
# rendered text in all widgets supports pango markup (e.g. <b> or <i> tags)
|
||||||
|
# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks
|
||||||
|
#
|
||||||
|
# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace
|
||||||
|
#
|
||||||
|
# you can get started by copying this config to ~/.config/hypr/hyprlock.conf
|
||||||
|
#
|
||||||
|
|
||||||
|
$font = Monospace
|
||||||
|
|
||||||
|
general {
|
||||||
|
hide_cursor = false
|
||||||
|
}
|
||||||
|
|
||||||
|
# uncomment to enable fingerprint authentication
|
||||||
|
# auth {
|
||||||
|
# fingerprint {
|
||||||
|
# enabled = true
|
||||||
|
# ready_message = Scan fingerprint to unlock
|
||||||
|
# present_message = Scanning...
|
||||||
|
# retry_delay = 250 # in milliseconds
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
|
# NOTE: Currently enabling animations and background 'path = screenshot' causes hyprlock
|
||||||
|
# to not work, so they are disabled.
|
||||||
|
animations {
|
||||||
|
enabled = false
|
||||||
|
bezier = linear, 1, 1, 0, 0
|
||||||
|
animation = fadeIn, 1, 5, linear
|
||||||
|
animation = fadeOut, 1, 5, linear
|
||||||
|
animaution = inputFieldDots, 1, 2, linear
|
||||||
|
}
|
||||||
|
|
||||||
|
background {
|
||||||
|
monitor =
|
||||||
|
#path = screenshot
|
||||||
|
path = ~/wallpapers/wall1.png
|
||||||
|
blur_passes = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 20%, 5%
|
||||||
|
outline_thickness = 3
|
||||||
|
inner_color = rgba(0, 0, 0, 0.0) # no fill
|
||||||
|
|
||||||
|
outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg
|
||||||
|
fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg
|
||||||
|
|
||||||
|
font_color = rgb(143, 143, 143)
|
||||||
|
fade_on_empty = false
|
||||||
|
rounding = 15
|
||||||
|
|
||||||
|
font_family = $font
|
||||||
|
placeholder_text = Input password...
|
||||||
|
fail_text = $PAMFAIL
|
||||||
|
|
||||||
|
# uncomment to use a letter instead of a dot to indicate the typed password
|
||||||
|
# dots_text_format = *
|
||||||
|
# dots_size = 0.4
|
||||||
|
dots_spacing = 0.3
|
||||||
|
|
||||||
|
# uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator)
|
||||||
|
# hide_input = true
|
||||||
|
|
||||||
|
position = 0, -20
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
|
|
||||||
|
# TIME
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution
|
||||||
|
font_size = 90
|
||||||
|
font_family = $font
|
||||||
|
|
||||||
|
position = -30, 0
|
||||||
|
halign = right
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
# DATE
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds
|
||||||
|
font_size = 25
|
||||||
|
font_family = $font
|
||||||
|
|
||||||
|
position = -30, -150
|
||||||
|
halign = right
|
||||||
|
valign = top
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
monitor =
|
||||||
|
text = $LAYOUT[en,ru]
|
||||||
|
font_size = 24
|
||||||
|
onclick = hyprctl switchxkblayout all next
|
||||||
|
|
||||||
|
position = 250, -20
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
}
|
||||||
8
env/.config/hypr/hyprmonitors.conf
vendored
Normal file
8
env/.config/hypr/hyprmonitors.conf
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
################
|
||||||
|
### MONITORS ###
|
||||||
|
################
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
monitor= ,preferred,auto,auto
|
||||||
|
|
||||||
|
|
||||||
3
env/.config/hypr/hyprpaper.conf
vendored
Normal file
3
env/.config/hypr/hyprpaper.conf
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
preload = /home/michael/wallpapers/wall1.png
|
||||||
|
wallpaper = ,/home/michael/wallpapers/wall1.png
|
||||||
|
splash = true
|
||||||
8
env/.config/hypr/hyprtoolkit.conf
vendored
Normal file
8
env/.config/hypr/hyprtoolkit.conf
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
background = rgb(1e1e2e)
|
||||||
|
base = rgb(b4befe)
|
||||||
|
alternate_base = rgb(cdd6f4)
|
||||||
|
text = rgb(cdd6f4)
|
||||||
|
bright_text = rgb(89b4fa)
|
||||||
|
accent = rgb(b4befe)
|
||||||
|
accent_secondary = rgb(cba6f7)
|
||||||
|
|
||||||
47
env/.config/hypr/hyprwindows.conf
vendored
Normal file
47
env/.config/hypr/hyprwindows.conf
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
###############
|
||||||
|
### WINDOWS ###
|
||||||
|
###############
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
|
||||||
|
# windowrule = float, tag:floating-window
|
||||||
|
# windowrule = center, tag:floating-window
|
||||||
|
# windowrule = size 60% 60%, tag:floating-window
|
||||||
|
#
|
||||||
|
# # Weather tui
|
||||||
|
# windowrule = float, class:^(com.ghostty.weather)$
|
||||||
|
# windowrule = center, class:^(com.ghostty.weather)$
|
||||||
|
# windowrule = size 90% 80%, class:^(com.ghostty.weather)$
|
||||||
|
#
|
||||||
|
# # Force windows to be a floating window
|
||||||
|
# windowrule = tag +floating-window, class:^(blueberry.py|org.gnome.Nautilus|com.ghostty.float)$
|
||||||
|
# windowrule = tag +floating-window, class:^(com.ghostty.windowctl)$
|
||||||
|
# windowrule = tag +floating-window, class:^(com.ghostty.utils-launcher)$
|
||||||
|
# windowrule = tag +floating-window, class:^(com.ghostty.homelab-launcher)$
|
||||||
|
#
|
||||||
|
# # Force to stay focused when visible.
|
||||||
|
# windowrule = stayfocused, class:(blueberry.py)
|
||||||
|
# windowrule = stayfocused, class:Pinentry.gtk
|
||||||
|
# windowrule = stayfocused, class:com.ghostty.float
|
||||||
|
# windowrule = stayfocused, class:com.ghostty.windowctl
|
||||||
|
# windowrule = stayfocused, class:^(com.ghostty.utils-launcher)$
|
||||||
|
#
|
||||||
|
# # Clipboard history tui in floating window.
|
||||||
|
# windowrule = tag +floating-window, class:.*clipse.*
|
||||||
|
# windowrule = stayfocused, class:.*clipse.*
|
||||||
|
#
|
||||||
|
# # Ignore maximize requests from apps. You'll probably like this.
|
||||||
|
# windowrule = suppressevent maximize, class:.*
|
||||||
|
#
|
||||||
|
# # Just a dash of opacity by default.
|
||||||
|
# windowrule = opacity 0.97 0.92, class:.*
|
||||||
|
# # No opacity on youtube.
|
||||||
|
# windowrule = opacity 1.0, class:.*youtube.com.*
|
||||||
|
#
|
||||||
|
# # Fix some dragging issues with XWayland
|
||||||
|
# windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||||
|
#
|
||||||
|
# # To get more information about a window’s class, title, XWayland status or its size, you can use `hyprctl clients`. (From Hyprland Wiki)
|
||||||
|
# windowrulev2 = float,class:^(one.alynx.showmethekey)$
|
||||||
|
# windowrulev2 = float,class:^(showmethekey-gtk)$ # make window floating
|
||||||
|
# windowrulev2 = pin,class:^(showmethekey-gtk)$ # pin window
|
||||||
15
env/.config/hypr/hyprworkspaces.conf
vendored
Normal file
15
env/.config/hypr/hyprworkspaces.conf
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
##################
|
||||||
|
### WORKSPACES ###
|
||||||
|
##################
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||||
|
|
||||||
|
$scripts = ~/.local/scripts/hypr
|
||||||
|
$pwa = $scripts/webapp launch
|
||||||
|
$housecallPro = $pwa "https://pro.housecallpro.com/app/calendar_new"
|
||||||
|
|
||||||
|
workspace = special:hidden, invisible
|
||||||
|
workspace = special:pass,on-created-empty: $pwa "https://pass.proton.me"
|
||||||
|
workspace = special:dispatch,on-created-empty: $housecallPro && $housecallPro
|
||||||
|
workspace = special:music,on-created-empty: ghostty --class=com.ghostty.music -e jellyfin-tui
|
||||||
|
workspace = special:calendar,on-created-empty: uwsm app -- gnome-calendar
|
||||||
151
env/.config/kanata/macbook.kbd
vendored
Normal file
151
env/.config/kanata/macbook.kbd
vendored
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
;; Macbook-Pro configuration file.
|
||||||
|
;;
|
||||||
|
|
||||||
|
;; Adapted from https://github.com/linkarzu/dotfiles-latest/blob/main/kanata/configs/macbook-subl.kbd
|
||||||
|
;; Video related to this file
|
||||||
|
;; https://youtu.be/jvJ3f4HHiMY
|
||||||
|
|
||||||
|
;; Kanata docs
|
||||||
|
;; https://github.com/jtroo/kanata/blob/main/docs/config.adoc
|
||||||
|
|
||||||
|
;; OS key code mappings
|
||||||
|
;; https://github.com/jtroo/kanata/blob/main/parser/src/keys/mod.rs
|
||||||
|
|
||||||
|
(defcfg
|
||||||
|
process-unmapped-keys yes
|
||||||
|
log-layer-changes no
|
||||||
|
danger-enable-cmd yes
|
||||||
|
concurrent-tap-hold yes
|
||||||
|
rapid-event-delay 10
|
||||||
|
allow-hardware-repeat false
|
||||||
|
|
||||||
|
;; When any non-chord activation happens, this timeout begins. Until this timeout expires
|
||||||
|
;; all inputs will immediately skip chords processing and be processed by the active layer.
|
||||||
|
;; chords-v2-min-idle 250
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Variables
|
||||||
|
(defvar
|
||||||
|
tap-higher 400
|
||||||
|
tap-time 200
|
||||||
|
tap-time-plus 300
|
||||||
|
hold-time-plus 300
|
||||||
|
hold-time 200
|
||||||
|
chord-time 60
|
||||||
|
subl-time 200
|
||||||
|
tmux-delay 40
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Only one defsrc is allowed.
|
||||||
|
;;
|
||||||
|
;; defsrc defines the keys that will be intercepted by kanata. The order of the
|
||||||
|
;; keys matches with deflayer declarations and all deflayer declarations must
|
||||||
|
;; have the same number of keys as defsrc. Any keys not listed in defsrc will
|
||||||
|
;; be passed straight to the operating system.
|
||||||
|
(defsrc
|
||||||
|
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
|
||||||
|
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
|
||||||
|
tab q w e r t y u i o p [ ] \
|
||||||
|
caps a s d f g h j k l ; ' ret
|
||||||
|
lsft z x c v b n m , . / ▲ rsft
|
||||||
|
lctl lalt lmet spc rmet ralt ◀ ▼ ▶
|
||||||
|
)
|
||||||
|
|
||||||
|
(defalias
|
||||||
|
;; Modifier keys - Left
|
||||||
|
mlctl (tap-hold $tap-time $hold-time a lctl)
|
||||||
|
mlalt (tap-hold $tap-time $hold-time s lalt)
|
||||||
|
mlmet (tap-hold $tap-time $hold-time d lmet)
|
||||||
|
mlsft (tap-hold $tap-time $hold-time f lsft)
|
||||||
|
|
||||||
|
;; Modifier keys - Right
|
||||||
|
mrsft (tap-hold $tap-time $hold-time j rsft)
|
||||||
|
mrmet (tap-hold $tap-time $hold-time k rmet)
|
||||||
|
mralt (tap-hold $tap-time $hold-time l ralt)
|
||||||
|
mrctl (tap-hold $tap-time $hold-time ; rctl)
|
||||||
|
|
||||||
|
mretu (tap-hold $tap-time $hold-time tab ret)
|
||||||
|
|
||||||
|
;; number and symbols layer trigger keys.
|
||||||
|
mlnums (tap-hold-press $tap-time-plus $hold-time-plus lmet (layer-while-held nums_and_symbols))
|
||||||
|
mrnums (tap-hold-press $tap-time-plus $hold-time-plus rmet (layer-while-held nums_and_symbols))
|
||||||
|
|
||||||
|
;; mouse layer trigger keys.
|
||||||
|
mlms (tap-hold-press $tap-time $hold-time esc (layer-while-held mouse))
|
||||||
|
mrms (tap-hold-press $tap-time $hold-time ret (layer-while-held mouse))
|
||||||
|
|
||||||
|
;; Multi
|
||||||
|
mhypr (tap-hold $tap-time $hold-time spc (multi lsft lctl lalt lmet)) ;; Hyper key
|
||||||
|
|
||||||
|
;; Sublayers
|
||||||
|
;; I implemented sublayers thanks to the help in this discussion
|
||||||
|
;; https://github.com/jtroo/kanata/discussions/1765
|
||||||
|
;; DO NOT USE THE SUBLAYERS IN A FREQUENTLY PRESSED KEY LIKE SPACEBAR
|
||||||
|
;; It made typing spaces a pain in the ass, enter is not pressed to often, so it works way better
|
||||||
|
;; msubl (tap-hold-press $subl-time $subl-time ret (layer-while-held sublayers))
|
||||||
|
|
||||||
|
;; Execute script
|
||||||
|
;; maltt (cmd open "btt://execute_assigned_actions_for_trigger/?uuid=F35EF770-FAA5-448A-957D-70BB449DEB0F")
|
||||||
|
|
||||||
|
;; key and script at the same time
|
||||||
|
;; maltt (tap-hold $tap-time $hold-time lsft (cmd open "btt://execute_assigned_actions_for_trigger/?uuid=F35EF770-FAA5-448A-957D-70BB449DEB0F"))
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Blank layer
|
||||||
|
;; (deflayer {{NAME}}
|
||||||
|
;; esc XX XX XX XX XX XX XX XX XX XX XX XX ;; function row
|
||||||
|
;; grv XX XX XX XX XX XX XX XX XX XX XX XX bspc ;; number row
|
||||||
|
;; tab XX XX XX XX XX XX XX XX XX XX XX XX XX ;; top letter row
|
||||||
|
;; caps XX XX XX XX XX XX XX XX XX XX XX ret ;; home row
|
||||||
|
;; lsft XX XX XX XX XX XX XX XX XX XX XX rsft ;; bottom letter row
|
||||||
|
;; lctl lalt lmet spc rmet ralt ◀ ▼ ▶ ;; control row
|
||||||
|
;; )
|
||||||
|
|
||||||
|
;; Main layer
|
||||||
|
;;
|
||||||
|
;; Disable most function keys, and add homerow mods.
|
||||||
|
;;
|
||||||
|
(deflayer main
|
||||||
|
esc brdn bru XX XX XX XX XX XX XX mute vold volu
|
||||||
|
grv 1 2 3 4 5 6 7 8 9 0 - = bspc
|
||||||
|
tab q w e r t y u i o p [ ] \
|
||||||
|
@mlms @mlctl @mlalt @mlmet @mlsft g h @mrsft @mrmet @mralt @mrctl ' @mrms
|
||||||
|
lsft z x c v b n m , . / ▲ rsft
|
||||||
|
lctl lalt @mlnums spc @mrnums ralt ◀ ▼ ▶
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Number and Symbols layer
|
||||||
|
(deflayer nums_and_symbols
|
||||||
|
esc XX XX XX XX XX XX XX XX XX XX XX XX
|
||||||
|
S-grv XX XX XX XX XX XX XX XX XX XX - = bspc
|
||||||
|
grv S-1 S-9 S-0 S-2 XX XX 1 2 3 \ XX XX XX
|
||||||
|
XX [ ] S-[ S-] XX XX 4 5 6 . XX ret
|
||||||
|
lsft S-7 S-8 S-4 S-3 XX XX 7 8 9 / XX rsft
|
||||||
|
lctl lalt lmet 0 rmet ralt ◀ ▼ ▶
|
||||||
|
)
|
||||||
|
|
||||||
|
(defalias
|
||||||
|
mwu (mwheel-up 50 120)
|
||||||
|
mwd (mwheel-down 50 120)
|
||||||
|
mwl (mwheel-left 50 120)
|
||||||
|
mwr (mwheel-right 50 120)
|
||||||
|
|
||||||
|
ma↑ (movemouse-accel-up 5 1000 1 3)
|
||||||
|
ma← (movemouse-accel-left 5 1000 1 3)
|
||||||
|
ma↓ (movemouse-accel-down 5 1000 1 3)
|
||||||
|
ma→ (movemouse-accel-right 5 1000 1 3)
|
||||||
|
|
||||||
|
sm (setmouse 32228 32228)
|
||||||
|
|
||||||
|
fst (movemouse-speed 200)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Mouse and arrow layer
|
||||||
|
(deflayer mouse
|
||||||
|
esc XX XX XX XX XX XX XX XX XX XX XX XX ;; function row
|
||||||
|
grv XX XX XX XX XX XX XX XX XX XX XX XX bspc ;; number row
|
||||||
|
tab XX XX ▲ XX XX @mwl @mwd @mwu @mwr XX XX XX XX ;; top letter row
|
||||||
|
caps XX ◀ ▼ ▶ XX @ma← @ma↓ @ma↑ @ma→ XX XX mrtp ;; home row
|
||||||
|
lsft XX XX XX XX XX XX XX XX XX XX XX rsft ;; bottom letter row
|
||||||
|
lctl lalt lmet mltp rmet ralt XX XX XX ;; control row
|
||||||
|
)
|
||||||
156
env/.config/kanata/voyager.kbd
vendored
Normal file
156
env/.config/kanata/voyager.kbd
vendored
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
;; ZSA Voyager configuration file.
|
||||||
|
;;
|
||||||
|
|
||||||
|
;; Adapted from https://github.com/linkarzu/dotfiles-latest/blob/main/kanata/configs/macbook-subl.kbd
|
||||||
|
;; Video related to this file
|
||||||
|
;; https://youtu.be/jvJ3f4HHiMY
|
||||||
|
|
||||||
|
;; Kanata docs
|
||||||
|
;; https://github.com/jtroo/kanata/blob/main/docs/config.adoc
|
||||||
|
|
||||||
|
;; OS key code mappings
|
||||||
|
;; https://github.com/jtroo/kanata/blob/main/parser/src/keys/mod.rs
|
||||||
|
|
||||||
|
(defcfg
|
||||||
|
process-unmapped-keys yes
|
||||||
|
log-layer-changes no
|
||||||
|
danger-enable-cmd yes
|
||||||
|
concurrent-tap-hold yes
|
||||||
|
rapid-event-delay 3
|
||||||
|
allow-hardware-repeat false
|
||||||
|
|
||||||
|
;; When any non-chord activation happens, this timeout begins. Until this timeout expires
|
||||||
|
;; all inputs will immediately skip chords processing and be processed by the active layer.
|
||||||
|
;; chords-v2-min-idle 250
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Variables
|
||||||
|
(defvar
|
||||||
|
tap-higher 400
|
||||||
|
tap-time 150
|
||||||
|
tap-time-plus 300
|
||||||
|
hold-time-plus 300
|
||||||
|
hold-time 200
|
||||||
|
chord-time 60
|
||||||
|
subl-time 200
|
||||||
|
tmux-delay 40
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Only one defsrc is allowed.
|
||||||
|
;;
|
||||||
|
;; defsrc defines the keys that will be intercepted by kanata. The order of the
|
||||||
|
;; keys matches with deflayer declarations and all deflayer declarations must
|
||||||
|
;; have the same number of keys as defsrc. Any keys not listed in defsrc will
|
||||||
|
;; be passed straight to the operating system.
|
||||||
|
(defsrc
|
||||||
|
;;----------------LEFT-------------------;------------------RIGHT-------------------;;
|
||||||
|
= 1 2 3 4 5 6 7 8 9 0 -
|
||||||
|
grv q w e r t y u i o p \
|
||||||
|
esc a s d f g h j k l ; '
|
||||||
|
lsft z x c v b n m , . / rsft
|
||||||
|
ret tab bspc spc
|
||||||
|
)
|
||||||
|
|
||||||
|
(defalias
|
||||||
|
;; Modifier keys - Left
|
||||||
|
mlctl (tap-hold $tap-time $hold-time a lctl)
|
||||||
|
mlalt (tap-hold $tap-time $hold-time s lalt)
|
||||||
|
mlmet (tap-hold $tap-time $hold-time d lmet)
|
||||||
|
mlsft (tap-hold $tap-time $hold-time f lsft)
|
||||||
|
|
||||||
|
;; Modifier keys - Right
|
||||||
|
mrsft (tap-hold $tap-time $hold-time j rsft)
|
||||||
|
mrmet (tap-hold $tap-time $hold-time k rmet)
|
||||||
|
mralt (tap-hold $tap-time $hold-time l ralt)
|
||||||
|
mrctl (tap-hold $tap-time $hold-time ; rctl)
|
||||||
|
|
||||||
|
mretu (tap-hold $tap-time $hold-time tab ret)
|
||||||
|
|
||||||
|
;; number and symbols layer trigger keys.
|
||||||
|
mlnums (tap-hold-press $tap-time-plus $hold-time-plus ret (layer-while-held nums_and_symbols))
|
||||||
|
mrnums (tap-hold-press $tap-time-plus $hold-time-plus spc (layer-while-held nums_and_symbols))
|
||||||
|
|
||||||
|
;; mouse layer trigger keys.
|
||||||
|
mlms (tap-hold-press $tap-time $hold-time esc (layer-while-held mouse))
|
||||||
|
mrms (tap-hold-press $tap-time $hold-time ' (layer-while-held mouse))
|
||||||
|
|
||||||
|
;; Multi
|
||||||
|
mhypr (tap-hold $tap-time $hold-time bspc (multi lsft lctl lalt lmet)) ;; Hyper key
|
||||||
|
|
||||||
|
;; Sublayers
|
||||||
|
;; I implemented sublayers thanks to the help in this discussion
|
||||||
|
;; https://github.com/jtroo/kanata/discussions/1765
|
||||||
|
;; DO NOT USE THE SUBLAYERS IN A FREQUENTLY PRESSED KEY LIKE SPACEBAR
|
||||||
|
;; It made typing spaces a pain in the ass, enter is not pressed to often, so it works way better
|
||||||
|
;; msubl (tap-hold-press $subl-time $subl-time ret (layer-while-held sublayers))
|
||||||
|
|
||||||
|
;; Execute script
|
||||||
|
;; maltt (cmd open "btt://execute_assigned_actions_for_trigger/?uuid=F35EF770-FAA5-448A-957D-70BB449DEB0F")
|
||||||
|
|
||||||
|
;; key and script at the same time
|
||||||
|
;; maltt (tap-hold $tap-time $hold-time lsft (cmd open "btt://execute_assigned_actions_for_trigger/?uuid=F35EF770-FAA5-448A-957D-70BB449DEB0F"))
|
||||||
|
)
|
||||||
|
|
||||||
|
;; BLANK LAYER
|
||||||
|
;; (deflayer {{NAME}}
|
||||||
|
;;;;----------------LEFT-------------------;------------------RIGHT-------------------;;
|
||||||
|
;; = 1 2 3 4 5 6 7 8 9 0 -
|
||||||
|
;; grv q w e r t y u i o p \
|
||||||
|
;; esc a s d f g h j k l ; '
|
||||||
|
;; lsft z x c v b n m , . / rsft
|
||||||
|
;; ret tab bspc spc
|
||||||
|
;; )
|
||||||
|
|
||||||
|
;; Main layer
|
||||||
|
(deflayer main
|
||||||
|
;;----------------LEFT----------------------------;-------------------------RIGHT---------------------------;;
|
||||||
|
= 1 2 3 4 5 6 7 8 9 0 -
|
||||||
|
grv q w e r t y u i o p \
|
||||||
|
@mlms @mlctl @mlalt @mlmet @mlsft g h @mrsft @mrmet @mralt @mrctl @mrms
|
||||||
|
lsft z x c v b n m , . / rsft
|
||||||
|
@mlnums tab @mhypr @mrnums
|
||||||
|
)
|
||||||
|
|
||||||
|
(defalias
|
||||||
|
;; Number layer modifier keys - Left
|
||||||
|
nlctl (tap-hold $tap-time $hold-time [ lctl)
|
||||||
|
nlalt (tap-hold $tap-time $hold-time ] lalt)
|
||||||
|
nlmet (tap-hold $tap-time $hold-time S-[ lmet)
|
||||||
|
nlsft (tap-hold $tap-time $hold-time S-] lsft)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Number and Symbols layer
|
||||||
|
(deflayer nums_and_symbols
|
||||||
|
;;----------------LEFT---------------------------------;-------------------RIGHT-------------------;;
|
||||||
|
= XX XX XX XX XX XX XX XX XX XX -
|
||||||
|
S-grv S-1 S-9 S-0 S-2 XX - 1 2 3 \ \
|
||||||
|
XX @nlctl @nlalt @nlmet @nlsft XX S-= 4 5 6 . '
|
||||||
|
lsft S-7 S-8 S-3 S-4 XX S-8 7 8 9 / rsft
|
||||||
|
@mlnums tab @mhypr 0
|
||||||
|
)
|
||||||
|
|
||||||
|
(defalias
|
||||||
|
mwu (mwheel-up 50 120)
|
||||||
|
mwd (mwheel-down 50 120)
|
||||||
|
mwl (mwheel-left 50 120)
|
||||||
|
mwr (mwheel-right 50 120)
|
||||||
|
|
||||||
|
ma↑ (movemouse-accel-up 5 1000 1 3)
|
||||||
|
ma← (movemouse-accel-left 5 1000 1 3)
|
||||||
|
ma↓ (movemouse-accel-down 5 1000 1 3)
|
||||||
|
ma→ (movemouse-accel-right 5 1000 1 3)
|
||||||
|
|
||||||
|
sm (setmouse 32228 32228)
|
||||||
|
|
||||||
|
fst (movemouse-speed 200)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Mouse and arrow layer
|
||||||
|
(deflayer mouse
|
||||||
|
;;----------------LEFT-------------------;------------------RIGHT-------------------;;
|
||||||
|
XX brdn bru XX XX XX XX XX mute vold volu XX
|
||||||
|
XX XX XX ▲ XX XX @mwl @mwd @mwu @mwr XX XX
|
||||||
|
XX XX ◀ ▼ ▶ XX @ma← @ma↓ @ma↑ @ma→ XX XX
|
||||||
|
XX XX XX XX XX XX XX XX XX XX XX XX
|
||||||
|
ret tab mltp mrtp
|
||||||
|
)
|
||||||
5
env/.config/npm/npmrc
vendored
Normal file
5
env/.config/npm/npmrc
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Needs linked to ~/.config/npm/npmrc
|
||||||
|
|
||||||
|
prefix=${XDG_DATA_HOME}/npm
|
||||||
|
cache=${XDG_CACHE_HOME}/npm
|
||||||
|
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
|
||||||
1
env/.config/nvim
vendored
Submodule
1
env/.config/nvim
vendored
Submodule
Submodule env/.config/nvim added at 5f3d1733e7
7
env/.config/ripgrep/ripgreprc
vendored
Normal file
7
env/.config/ripgrep/ripgreprc
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Show hidden files
|
||||||
|
--hidden
|
||||||
|
# Ignore '.git' directory
|
||||||
|
--glob=!.git/*
|
||||||
|
--no-follow
|
||||||
|
--color=never
|
||||||
|
|
||||||
105
env/.config/starship/starship.toml
vendored
Normal file
105
env/.config/starship/starship.toml
vendored
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
"$schema" = 'https://starship.rs/config-schema.json'
|
||||||
|
|
||||||
|
command_timeout = 1000
|
||||||
|
|
||||||
|
format = """
|
||||||
|
[](color_orange)\
|
||||||
|
$os\
|
||||||
|
$username\
|
||||||
|
$hostname\
|
||||||
|
[](bg:color_pink fg:color_orange)\
|
||||||
|
$directory\
|
||||||
|
[](fg:color_pink bg:color_bg1)\
|
||||||
|
$git_branch\
|
||||||
|
$git_status\
|
||||||
|
$line_break$character"""
|
||||||
|
|
||||||
|
palette = 'catppuccin_mocha'
|
||||||
|
|
||||||
|
[palettes.catppuccin_mocha]
|
||||||
|
color_fg0 = '#cad3f5'
|
||||||
|
color_bg1 = '#1e2030'
|
||||||
|
color_bg3 = '#24273a'
|
||||||
|
color_blue = '#8aadf4'
|
||||||
|
color_aqua = '#94e2d5'
|
||||||
|
color_green = '#a6e3a1'
|
||||||
|
color_orange = '#f5a97f'
|
||||||
|
color_purple = '#c6a0f6'
|
||||||
|
color_lavender = '#b4befe'
|
||||||
|
color_red = '#ed8796'
|
||||||
|
color_yellow = '#eed49f'
|
||||||
|
color_grey = '#585b70'
|
||||||
|
color_maroon = '#eba0ac'
|
||||||
|
color_pink = '#f5c2e7'
|
||||||
|
color_text = '#585b70'
|
||||||
|
|
||||||
|
[os]
|
||||||
|
disabled = false
|
||||||
|
style = "bold bg:color_orange fg:color_fg0"
|
||||||
|
|
||||||
|
[os.symbols]
|
||||||
|
Windows = ""
|
||||||
|
Ubuntu = ""
|
||||||
|
SUSE = ""
|
||||||
|
Raspbian = ""
|
||||||
|
Mint = ""
|
||||||
|
Macos = ""
|
||||||
|
Manjaro = ""
|
||||||
|
Linux = ""
|
||||||
|
Gentoo = ""
|
||||||
|
Fedora = ""
|
||||||
|
Alpine = ""
|
||||||
|
Amazon = ""
|
||||||
|
Android = ""
|
||||||
|
Arch = ""
|
||||||
|
Artix = ""
|
||||||
|
CentOS = ""
|
||||||
|
Debian = ""
|
||||||
|
Redhat = ""
|
||||||
|
RedHatEnterprise = ""
|
||||||
|
|
||||||
|
[username]
|
||||||
|
show_always = true
|
||||||
|
style_user = "bold bg:color_orange fg:color_text"
|
||||||
|
style_root = "bold bg:color_orange fg:color_text"
|
||||||
|
format = '[ $user ]($style)'
|
||||||
|
|
||||||
|
[hostname]
|
||||||
|
ssh_only = true
|
||||||
|
format = '[$ssh_symbol : $hostname](bold bg:color_orange fg:color_text)'
|
||||||
|
disabled = false
|
||||||
|
|
||||||
|
[directory]
|
||||||
|
style = "bold fg:color_text bg:color_pink"
|
||||||
|
format = "[ $path ]($style)"
|
||||||
|
truncation_length = 3
|
||||||
|
truncation_symbol = "…/"
|
||||||
|
truncate_to_repo = true
|
||||||
|
|
||||||
|
[directory.substitutions]
|
||||||
|
"Documents" = " "
|
||||||
|
"Downloads" = " "
|
||||||
|
"Music" = " "
|
||||||
|
"Pictures" = " "
|
||||||
|
"Developer" = " "
|
||||||
|
|
||||||
|
[git_branch]
|
||||||
|
symbol = ""
|
||||||
|
style = "bg:color_bg1"
|
||||||
|
format = '[[ $symbol $branch ](bold fg:color_green bg:color_bg1)]($style)'
|
||||||
|
|
||||||
|
[git_status]
|
||||||
|
style = "bold bg:color_bg1"
|
||||||
|
format = '[[($all_status$ahead_behind )](bold fg:color_green bg:color_bg1)]($style)'
|
||||||
|
|
||||||
|
[line_break]
|
||||||
|
disabled = false
|
||||||
|
|
||||||
|
[character]
|
||||||
|
disabled = false
|
||||||
|
success_symbol = '[❯](bold fg:color_green)'
|
||||||
|
error_symbol = '[❯](bold fg:color_red)'
|
||||||
|
vimcmd_symbol = '[❮](bold fg:color_green)'
|
||||||
|
vimcmd_replace_one_symbol = '[❮](bold fg:color_purple)'
|
||||||
|
vimcmd_replace_symbol = '[❮](bold fg:color_purple)'
|
||||||
|
vimcmd_visual_symbol = '[❮](bold fg:color_yellow)'
|
||||||
8
env/.config/systemd/user/battery-monitor.service
vendored
Normal file
8
env/.config/systemd/user/battery-monitor.service
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Battery Monitor Service
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=%h/.local/scripts/hypr/battery-monitor
|
||||||
|
Environment=DISPLAY=:0
|
||||||
11
env/.config/systemd/user/battery-monitor.timer
vendored
Normal file
11
env/.config/systemd/user/battery-monitor.timer
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Battery Monitor Timer
|
||||||
|
Requires=battery-monitor.service
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=1min
|
||||||
|
OnUnitActiveSec=30sec
|
||||||
|
AccuracySec=10sec
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
11
env/.config/systemd/user/logout-task.service
vendored
Normal file
11
env/.config/systemd/user/logout-task.service
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Clear clipboard history at logout
|
||||||
|
DefaultDependencies=no
|
||||||
|
Before=exit.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=%h/.local/scripts/hypr/clear-clipboard-history
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=exit.target
|
||||||
7
env/.config/systemd/user/tmux-kill-sessions.service
vendored
Normal file
7
env/.config/systemd/user/tmux-kill-sessions.service
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Tmux kill sessions service
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=%h/.local/scripts/tmux-kill-old-sessions
|
||||||
11
env/.config/systemd/user/tmux-kill-sessions.timer
vendored
Normal file
11
env/.config/systemd/user/tmux-kill-sessions.timer
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Tmux kill sessions timer
|
||||||
|
Requires=tmux-kill-sessions.service
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=2h
|
||||||
|
OnUnitActiveSec=2h
|
||||||
|
AccuracySec=10sec
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
68
env/.config/tree-sitter/config.json
vendored
Normal file
68
env/.config/tree-sitter/config.json
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
"parser-directories": [
|
||||||
|
"/home/michael/github",
|
||||||
|
"/home/michael/src",
|
||||||
|
"/home/michael/source",
|
||||||
|
"/home/michael/projects",
|
||||||
|
"/home/michael/dev",
|
||||||
|
"/home/michael/git"
|
||||||
|
],
|
||||||
|
"theme": {
|
||||||
|
"attribute": {
|
||||||
|
"color": 124,
|
||||||
|
"italic": true
|
||||||
|
},
|
||||||
|
"comment": {
|
||||||
|
"color": 245,
|
||||||
|
"italic": true
|
||||||
|
},
|
||||||
|
"constant": 94,
|
||||||
|
"constant.builtin": {
|
||||||
|
"bold": true,
|
||||||
|
"color": 94
|
||||||
|
},
|
||||||
|
"constructor": 136,
|
||||||
|
"embedded": null,
|
||||||
|
"function": 26,
|
||||||
|
"function.builtin": {
|
||||||
|
"bold": true,
|
||||||
|
"color": 26
|
||||||
|
},
|
||||||
|
"keyword": 56,
|
||||||
|
"module": 136,
|
||||||
|
"number": {
|
||||||
|
"bold": true,
|
||||||
|
"color": 94
|
||||||
|
},
|
||||||
|
"operator": {
|
||||||
|
"bold": true,
|
||||||
|
"color": 239
|
||||||
|
},
|
||||||
|
"property": 124,
|
||||||
|
"property.builtin": {
|
||||||
|
"bold": true,
|
||||||
|
"color": 124
|
||||||
|
},
|
||||||
|
"punctuation": 239,
|
||||||
|
"punctuation.bracket": 239,
|
||||||
|
"punctuation.delimiter": 239,
|
||||||
|
"punctuation.special": 239,
|
||||||
|
"string": 28,
|
||||||
|
"string.special": 30,
|
||||||
|
"tag": 18,
|
||||||
|
"type": 23,
|
||||||
|
"type.builtin": {
|
||||||
|
"bold": true,
|
||||||
|
"color": 23
|
||||||
|
},
|
||||||
|
"variable": 252,
|
||||||
|
"variable.builtin": {
|
||||||
|
"bold": true,
|
||||||
|
"color": 252
|
||||||
|
},
|
||||||
|
"variable.parameter": {
|
||||||
|
"color": 252,
|
||||||
|
"underline": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
57
env/.config/utils-launcher/config.json
vendored
Normal file
57
env/.config/utils-launcher/config.json
vendored
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "App - install web app",
|
||||||
|
"description": "Install a new website as a desktop application that can be launched by an application launcher.",
|
||||||
|
"exec": "$SCRIPTS/hypr/install-webapp"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "App - uninstall desktop app",
|
||||||
|
"description": "Uninstalls desktop applications and their icon, generally used for web\napplications.\n\nIf the app was installed through a package manager, then you should\nuse the package manager to uninstall the applciation.",
|
||||||
|
"exec": "$SCRIPTS/hypr/uninstall-desktop-app"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Clipboard - clear history",
|
||||||
|
"description": "Clear the clipboard history file.",
|
||||||
|
"exec": "$SCRIPTS/hypr/clear-clipboard-history --notify-complete"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Logs - view logs",
|
||||||
|
"description": "View logs generated by our custom commands.",
|
||||||
|
"exec": "$SCRIPTS/hypr/utils/logs/logs-picker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Monitors - stats / picker",
|
||||||
|
"description": "View information from hyprctl about currently connected monitors.",
|
||||||
|
"exec": "$SCRIPTS/hypr/monitorctl picker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Waybar - restart",
|
||||||
|
"description": "Restart the menu bar application, useful when making changes to the configuration.",
|
||||||
|
"exec": "$SCRIPTS/hypr/waybarctl --restart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Waybar - toggle",
|
||||||
|
"description": "Toggle the visibility of the menu bar.",
|
||||||
|
"exec": "$SCRIPTS/hypr/waybarctl --toggle"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Windows - window stats / picker",
|
||||||
|
"description": "View information from hyprctl about all the current windows.\n\nAllows you to choose an action you would like to perform on the selected window.",
|
||||||
|
"exec": "$SCRIPTS/hypr/windowctl picker"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Windows - close in active workspace",
|
||||||
|
"description": "Close all windows in the currently active workspace.",
|
||||||
|
"exec": "$SCRIPTS/hypr/windowctl close --active-workspace"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Windows - close ALL",
|
||||||
|
"description": "Close all windows in all workspaces.",
|
||||||
|
"exec": "$SCRIPTS/hypr/windowctl close --all"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Workspaces - stats / picker",
|
||||||
|
"description": "View information from hyprctl about currently available workspaces",
|
||||||
|
"exec": "$SCRIPTS/hypr/workspacectl picker"
|
||||||
|
}
|
||||||
|
]
|
||||||
88
env/.config/waybar/config.jsonc
vendored
Normal file
88
env/.config/waybar/config.jsonc
vendored
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
// -*- mode: jsonc -*-
|
||||||
|
{
|
||||||
|
"layer": "top",
|
||||||
|
"position": "top",
|
||||||
|
"modules-left": ["hyprland/workspaces"],
|
||||||
|
"modules-center": ["clock"],
|
||||||
|
"modules-right": [
|
||||||
|
"pulseaudio",
|
||||||
|
"idle_inhibitor",
|
||||||
|
"tray",
|
||||||
|
"cpu",
|
||||||
|
"memory",
|
||||||
|
"battery",
|
||||||
|
"network",
|
||||||
|
"custom/lock",
|
||||||
|
],
|
||||||
|
"hyprland/workspaces": {
|
||||||
|
"format": "{name}: {icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"active": "",
|
||||||
|
"default": "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 21,
|
||||||
|
"spacing": 10,
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"timezone": "America/New_York",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"format": "{:%d - %H:%M}",
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"format-wifi": " ",
|
||||||
|
"format-ethernet": " ",
|
||||||
|
"format-disconnected": " ",
|
||||||
|
"interval": 5,
|
||||||
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"interval": 1,
|
||||||
|
"format": " {icon0}{icon1}{icon2}{icon3} {usage:>2}%",
|
||||||
|
"format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"interval": 30,
|
||||||
|
"format": " {used:0.1f}G/{total:0.1f}G",
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon} {volume}%",
|
||||||
|
"format-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"default": ["", "", " "],
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol",
|
||||||
|
},
|
||||||
|
"custom/lock": {
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "sh -c '(sleep 0.5s; hyprlock)' & disown",
|
||||||
|
"format": "",
|
||||||
|
},
|
||||||
|
"later": {
|
||||||
|
"format": "<span class='icon'>{icon}</span> <span class='text'>{text}</span>",
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
// "good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15,
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-full": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
// "format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""],
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "",
|
||||||
|
"deactivated": ""
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
139
env/.config/waybar/style.css
vendored
Normal file
139
env/.config/waybar/style.css
vendored
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
@define-color foreground #cdd6f4;
|
||||||
|
@define-color background rgba(24, 24, 37, 0.7);
|
||||||
|
@define-color skyblue #89dceb;
|
||||||
|
@define-color blue #89b4fa;
|
||||||
|
@define-color red #f38ba8;
|
||||||
|
@define-color yellow #f9e2af;
|
||||||
|
@define-color peach #fab387;
|
||||||
|
@define-color maroon #eba0ac;
|
||||||
|
@define-color green #a6e3a1;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: JetbrainsMono Nerd Font;
|
||||||
|
font-size: 15px;
|
||||||
|
min-height: 0;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#waybar {
|
||||||
|
background: transparent;
|
||||||
|
color: @foreground;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
background: @background;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
margin-left: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
color: @foreground;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
color: @skyblue;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
color: #85c1dc;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-music,
|
||||||
|
#tray,
|
||||||
|
#backlight,
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#pulseaudio,
|
||||||
|
#network,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#custom-lock,
|
||||||
|
#custom-power,
|
||||||
|
#idle_inhibitor {
|
||||||
|
background-color: @background;
|
||||||
|
padding: 0.5rem 1rem;
|
||||||
|
margin: 5px 0;
|
||||||
|
color: @foreground;
|
||||||
|
/* border-radius: 0px 5px 5px 0px; */
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
color: @foreground;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-right: 1rem;
|
||||||
|
font-weight: 900;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
color: @red;
|
||||||
|
border-radius: 10px 0px 0px 10px;
|
||||||
|
margin-left: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor {
|
||||||
|
border-radius: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
color: @blue;
|
||||||
|
border-radius: 0px 10px 10px 0px;
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu {
|
||||||
|
color: @lavender;
|
||||||
|
border-radius: 10px 0px 0px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#memory {
|
||||||
|
color: @peach;
|
||||||
|
margin-right: 1rem;
|
||||||
|
border-radius: 0px 10px 10px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
border-radius: 10px 0px 0px 10px;
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
color: @yellow;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight {
|
||||||
|
color: #e5c890;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-music {
|
||||||
|
color: #ca9ee6;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
margin-right: 1rem;
|
||||||
|
border-radius: 0px 10px 10px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-lock {
|
||||||
|
border-radius: 10px;
|
||||||
|
color: @yellow;
|
||||||
|
margin-right: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-power {
|
||||||
|
margin-right: 1rem;
|
||||||
|
border-radius: 0px 5px 5px 0px;
|
||||||
|
color: #e78284;
|
||||||
|
}
|
||||||
193
env/.config/yazi/theme.toml
vendored
Normal file
193
env/.config/yazi/theme.toml
vendored
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
# https://github.com/yazi-rs/flavors.git
|
||||||
|
# Catpuccin - Mocha
|
||||||
|
# : Manager {{{
|
||||||
|
|
||||||
|
[mgr]
|
||||||
|
cwd = { fg = "#94e2d5" }
|
||||||
|
|
||||||
|
# Hovered
|
||||||
|
hovered = { reversed = true }
|
||||||
|
preview_hovered = { underline = true }
|
||||||
|
|
||||||
|
# Find
|
||||||
|
find_keyword = { fg = "#f9e2af", bold = true, italic = true, underline = true }
|
||||||
|
find_position = { fg = "#f5c2e7", bg = "reset", bold = true, italic = true }
|
||||||
|
|
||||||
|
# Marker
|
||||||
|
marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" }
|
||||||
|
marker_cut = { fg = "#f38ba8", bg = "#f38ba8" }
|
||||||
|
marker_marked = { fg = "#94e2d5", bg = "#94e2d5" }
|
||||||
|
marker_selected = { fg = "#f9e2af", bg = "#f9e2af" }
|
||||||
|
|
||||||
|
# Tab
|
||||||
|
tab_active = { reversed = true }
|
||||||
|
tab_inactive = {}
|
||||||
|
tab_width = 1
|
||||||
|
|
||||||
|
# Count
|
||||||
|
count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" }
|
||||||
|
count_cut = { fg = "#1e1e2e", bg = "#f38ba8" }
|
||||||
|
count_selected = { fg = "#1e1e2e", bg = "#f9e2af" }
|
||||||
|
|
||||||
|
# Border
|
||||||
|
border_symbol = "│"
|
||||||
|
border_style = { fg = "#7f849c" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Mode {{{
|
||||||
|
|
||||||
|
[mode]
|
||||||
|
|
||||||
|
normal_main = { fg = "#1e1e2e", bg = "#89b4fa", bold = true }
|
||||||
|
normal_alt = { fg = "#89b4fa", bg = "#313244" }
|
||||||
|
|
||||||
|
# Select mode
|
||||||
|
select_main = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true }
|
||||||
|
select_alt = { fg = "#a6e3a1", bg = "#313244" }
|
||||||
|
|
||||||
|
# Unset mode
|
||||||
|
unset_main = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true }
|
||||||
|
unset_alt = { fg = "#f2cdcd", bg = "#313244" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Status bar {{{
|
||||||
|
|
||||||
|
[status]
|
||||||
|
separator_open = ""
|
||||||
|
separator_close = ""
|
||||||
|
|
||||||
|
# Progress
|
||||||
|
progress_label = { fg = "#ffffff", bold = true }
|
||||||
|
progress_normal = { fg = "#89b4fa", bg = "#45475a" }
|
||||||
|
progress_error = { fg = "#f38ba8", bg = "#45475a" }
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
perm_sep = { fg = "#7f849c" }
|
||||||
|
perm_type = { fg = "#89b4fa" }
|
||||||
|
perm_read = { fg = "#f9e2af" }
|
||||||
|
perm_write = { fg = "#f38ba8" }
|
||||||
|
perm_exec = { fg = "#a6e3a1" }
|
||||||
|
|
||||||
|
# TODO: -- remove these once Yazi 0.4 gets released
|
||||||
|
separator_style = { fg = "#313244", bg = "#313244" }
|
||||||
|
mode_normal = { fg = "#1e1e2e", bg = "#89b4fa", bold = true }
|
||||||
|
mode_select = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true }
|
||||||
|
mode_unset = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true }
|
||||||
|
permissions_t = { fg = "#89b4fa" }
|
||||||
|
permissions_r = { fg = "#f9e2af" }
|
||||||
|
permissions_w = { fg = "#f38ba8" }
|
||||||
|
permissions_x = { fg = "#a6e3a1" }
|
||||||
|
permissions_s = { fg = "#7f849c" }
|
||||||
|
# TODO: remove these once Yazi 0.4 gets released --
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Pick {{{
|
||||||
|
|
||||||
|
[pick]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
active = { fg = "#f5c2e7", bold = true }
|
||||||
|
inactive = {}
|
||||||
|
|
||||||
|
# TODO: -- remove these once Yazi 0.4 gets released
|
||||||
|
[select]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
active = { fg = "#f5c2e7", bold = true }
|
||||||
|
inactive = {}
|
||||||
|
# TODO: remove these once Yazi 0.4 gets released --
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Input {{{
|
||||||
|
|
||||||
|
[input]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
title = {}
|
||||||
|
value = {}
|
||||||
|
selected = { reversed = true }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Completion {{{
|
||||||
|
|
||||||
|
[completion]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Tasks {{{
|
||||||
|
|
||||||
|
[tasks]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
title = {}
|
||||||
|
hovered = { fg = "#f5c2e7", underline = true }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Which {{{
|
||||||
|
|
||||||
|
[which]
|
||||||
|
mask = { bg = "#313244" }
|
||||||
|
cand = { fg = "#94e2d5" }
|
||||||
|
rest = { fg = "#9399b2" }
|
||||||
|
desc = { fg = "#f5c2e7" }
|
||||||
|
separator = " "
|
||||||
|
separator_style = { fg = "#585b70" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Help {{{
|
||||||
|
|
||||||
|
[help]
|
||||||
|
on = { fg = "#94e2d5" }
|
||||||
|
run = { fg = "#f5c2e7" }
|
||||||
|
hovered = { reversed = true, bold = true }
|
||||||
|
footer = { fg = "#313244", bg = "#cdd6f4" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Notify {{{
|
||||||
|
|
||||||
|
[notify]
|
||||||
|
title_info = { fg = "#a6e3a1" }
|
||||||
|
title_warn = { fg = "#f9e2af" }
|
||||||
|
title_error = { fg = "#f38ba8" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : File-specific styles {{{
|
||||||
|
|
||||||
|
[filetype]
|
||||||
|
|
||||||
|
rules = [
|
||||||
|
# Images
|
||||||
|
{ mime = "image/*", fg = "#94e2d5" },
|
||||||
|
|
||||||
|
# Media
|
||||||
|
{ mime = "{audio,video}/*", fg = "#f9e2af" },
|
||||||
|
|
||||||
|
# Archives
|
||||||
|
{ mime = "application/*zip", fg = "#f5c2e7" },
|
||||||
|
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" },
|
||||||
|
|
||||||
|
# Documents
|
||||||
|
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#a6e3a1" },
|
||||||
|
|
||||||
|
# Fallback
|
||||||
|
{ name = "*", fg = "#cdd6f4" },
|
||||||
|
{ name = "*/", fg = "#89b4fa" }
|
||||||
|
]
|
||||||
|
|
||||||
|
# : }}}
|
||||||
193
env/.config/yazi/theme.toml-1748966637471042
vendored
Normal file
193
env/.config/yazi/theme.toml-1748966637471042
vendored
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
# https://github.com/yazi-rs/flavors.git
|
||||||
|
# Catpuccin - Mocha
|
||||||
|
# : Manager {{{
|
||||||
|
|
||||||
|
[manager]
|
||||||
|
cwd = { fg = "#94e2d5" }
|
||||||
|
|
||||||
|
# Hovered
|
||||||
|
hovered = { reversed = true }
|
||||||
|
preview_hovered = { underline = true }
|
||||||
|
|
||||||
|
# Find
|
||||||
|
find_keyword = { fg = "#f9e2af", bold = true, italic = true, underline = true }
|
||||||
|
find_position = { fg = "#f5c2e7", bg = "reset", bold = true, italic = true }
|
||||||
|
|
||||||
|
# Marker
|
||||||
|
marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" }
|
||||||
|
marker_cut = { fg = "#f38ba8", bg = "#f38ba8" }
|
||||||
|
marker_marked = { fg = "#94e2d5", bg = "#94e2d5" }
|
||||||
|
marker_selected = { fg = "#f9e2af", bg = "#f9e2af" }
|
||||||
|
|
||||||
|
# Tab
|
||||||
|
tab_active = { reversed = true }
|
||||||
|
tab_inactive = {}
|
||||||
|
tab_width = 1
|
||||||
|
|
||||||
|
# Count
|
||||||
|
count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" }
|
||||||
|
count_cut = { fg = "#1e1e2e", bg = "#f38ba8" }
|
||||||
|
count_selected = { fg = "#1e1e2e", bg = "#f9e2af" }
|
||||||
|
|
||||||
|
# Border
|
||||||
|
border_symbol = "│"
|
||||||
|
border_style = { fg = "#7f849c" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Mode {{{
|
||||||
|
|
||||||
|
[mode]
|
||||||
|
|
||||||
|
normal_main = { fg = "#1e1e2e", bg = "#89b4fa", bold = true }
|
||||||
|
normal_alt = { fg = "#89b4fa", bg = "#313244" }
|
||||||
|
|
||||||
|
# Select mode
|
||||||
|
select_main = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true }
|
||||||
|
select_alt = { fg = "#a6e3a1", bg = "#313244" }
|
||||||
|
|
||||||
|
# Unset mode
|
||||||
|
unset_main = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true }
|
||||||
|
unset_alt = { fg = "#f2cdcd", bg = "#313244" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Status bar {{{
|
||||||
|
|
||||||
|
[status]
|
||||||
|
separator_open = ""
|
||||||
|
separator_close = ""
|
||||||
|
|
||||||
|
# Progress
|
||||||
|
progress_label = { fg = "#ffffff", bold = true }
|
||||||
|
progress_normal = { fg = "#89b4fa", bg = "#45475a" }
|
||||||
|
progress_error = { fg = "#f38ba8", bg = "#45475a" }
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
perm_sep = { fg = "#7f849c" }
|
||||||
|
perm_type = { fg = "#89b4fa" }
|
||||||
|
perm_read = { fg = "#f9e2af" }
|
||||||
|
perm_write = { fg = "#f38ba8" }
|
||||||
|
perm_exec = { fg = "#a6e3a1" }
|
||||||
|
|
||||||
|
# TODO: -- remove these once Yazi 0.4 gets released
|
||||||
|
separator_style = { fg = "#313244", bg = "#313244" }
|
||||||
|
mode_normal = { fg = "#1e1e2e", bg = "#89b4fa", bold = true }
|
||||||
|
mode_select = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true }
|
||||||
|
mode_unset = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true }
|
||||||
|
permissions_t = { fg = "#89b4fa" }
|
||||||
|
permissions_r = { fg = "#f9e2af" }
|
||||||
|
permissions_w = { fg = "#f38ba8" }
|
||||||
|
permissions_x = { fg = "#a6e3a1" }
|
||||||
|
permissions_s = { fg = "#7f849c" }
|
||||||
|
# TODO: remove these once Yazi 0.4 gets released --
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Pick {{{
|
||||||
|
|
||||||
|
[pick]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
active = { fg = "#f5c2e7", bold = true }
|
||||||
|
inactive = {}
|
||||||
|
|
||||||
|
# TODO: -- remove these once Yazi 0.4 gets released
|
||||||
|
[select]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
active = { fg = "#f5c2e7", bold = true }
|
||||||
|
inactive = {}
|
||||||
|
# TODO: remove these once Yazi 0.4 gets released --
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Input {{{
|
||||||
|
|
||||||
|
[input]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
title = {}
|
||||||
|
value = {}
|
||||||
|
selected = { reversed = true }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Completion {{{
|
||||||
|
|
||||||
|
[completion]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Tasks {{{
|
||||||
|
|
||||||
|
[tasks]
|
||||||
|
border = { fg = "#89b4fa" }
|
||||||
|
title = {}
|
||||||
|
hovered = { fg = "#f5c2e7", underline = true }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Which {{{
|
||||||
|
|
||||||
|
[which]
|
||||||
|
mask = { bg = "#313244" }
|
||||||
|
cand = { fg = "#94e2d5" }
|
||||||
|
rest = { fg = "#9399b2" }
|
||||||
|
desc = { fg = "#f5c2e7" }
|
||||||
|
separator = " "
|
||||||
|
separator_style = { fg = "#585b70" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Help {{{
|
||||||
|
|
||||||
|
[help]
|
||||||
|
on = { fg = "#94e2d5" }
|
||||||
|
run = { fg = "#f5c2e7" }
|
||||||
|
hovered = { reversed = true, bold = true }
|
||||||
|
footer = { fg = "#313244", bg = "#cdd6f4" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : Notify {{{
|
||||||
|
|
||||||
|
[notify]
|
||||||
|
title_info = { fg = "#a6e3a1" }
|
||||||
|
title_warn = { fg = "#f9e2af" }
|
||||||
|
title_error = { fg = "#f38ba8" }
|
||||||
|
|
||||||
|
# : }}}
|
||||||
|
|
||||||
|
|
||||||
|
# : File-specific styles {{{
|
||||||
|
|
||||||
|
[filetype]
|
||||||
|
|
||||||
|
rules = [
|
||||||
|
# Images
|
||||||
|
{ mime = "image/*", fg = "#94e2d5" },
|
||||||
|
|
||||||
|
# Media
|
||||||
|
{ mime = "{audio,video}/*", fg = "#f9e2af" },
|
||||||
|
|
||||||
|
# Archives
|
||||||
|
{ mime = "application/*zip", fg = "#f5c2e7" },
|
||||||
|
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" },
|
||||||
|
|
||||||
|
# Documents
|
||||||
|
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#a6e3a1" },
|
||||||
|
|
||||||
|
# Fallback
|
||||||
|
{ name = "*", fg = "#cdd6f4" },
|
||||||
|
{ name = "*/", fg = "#89b4fa" }
|
||||||
|
]
|
||||||
|
|
||||||
|
# : }}}
|
||||||
3
env/.config/yazi/yazi.toml
vendored
Normal file
3
env/.config/yazi/yazi.toml
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[mgr]
|
||||||
|
show_hidden = true
|
||||||
|
show_symlink = true
|
||||||
3
env/.config/yazi/yazi.toml-1748966636821415
vendored
Normal file
3
env/.config/yazi/yazi.toml-1748966636821415
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[manager]
|
||||||
|
show_hidden = true
|
||||||
|
show_symlink = true
|
||||||
241
env/.config/zsh/.zshrc
vendored
Executable file
241
env/.config/zsh/.zshrc
vendored
Executable file
@@ -0,0 +1,241 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
# _
|
||||||
|
# _______| |__ _ __ ___
|
||||||
|
# |_ / __| '_ \| '__/ __|
|
||||||
|
# / /\__ \ | | | | | (__
|
||||||
|
# /___|___/_| |_|_| \___|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#------------------------------ utilites ------------------------------
|
||||||
|
|
||||||
|
_source_if() { test -r "$1" && source "$1" || return 0 }
|
||||||
|
|
||||||
|
#------------------------------ exports ------------------------------
|
||||||
|
autoload -U up-line-or-beginning-search
|
||||||
|
autoload -U down-line-or-beginning-search
|
||||||
|
zle -N up-line-or-beginning-search
|
||||||
|
zle -N down-line-or-beginning-search
|
||||||
|
# Colors
|
||||||
|
autoload -Uz colors && colors
|
||||||
|
|
||||||
|
#------------------------------ path ------------------------------
|
||||||
|
|
||||||
|
# Helper function to prepend to the $PATH
|
||||||
|
path_prepend() {
|
||||||
|
declare arg
|
||||||
|
for arg in "$@"; do
|
||||||
|
test -d "$arg" || continue
|
||||||
|
PATH=${PATH//:"$arg:"/:}
|
||||||
|
PATH=${PATH/#"$arg:"/}
|
||||||
|
PATH=${PATH/%":$arg"/}
|
||||||
|
export PATH="$arg${PATH:+":$PATH"}"
|
||||||
|
done
|
||||||
|
} && export path_prepend
|
||||||
|
|
||||||
|
# Helper function to prepend to the $FPATH
|
||||||
|
fpath_prepend() {
|
||||||
|
declare arg
|
||||||
|
for arg in "$@"; do
|
||||||
|
test -d "$arg" || continue
|
||||||
|
FPATH=${FPATH//:"$arg:"/:}
|
||||||
|
FPATH=${FPATH/#"$arg:"/}
|
||||||
|
FPATH=${FPATH/%":$arg"/}
|
||||||
|
export FPATH="$arg${FPATH:+":$FPATH"}"
|
||||||
|
done
|
||||||
|
} && export fpath_prepend
|
||||||
|
|
||||||
|
# last arg will be first in $PATH
|
||||||
|
path_prepend \
|
||||||
|
"/usr/local/bin" \
|
||||||
|
"$HOME/.local/share/gem/bin" \
|
||||||
|
"$GOROOT/bin" \
|
||||||
|
"$GOPATH/bin" \
|
||||||
|
"$XDG_DATA_HOME/bin" \
|
||||||
|
"$XDG_DATA_HOME/npm/bin" \
|
||||||
|
"$HOME/.local/bin" \
|
||||||
|
"$SCRIPTS" \
|
||||||
|
"$SCRIPTS/hypr" \
|
||||||
|
"$SCRIPTS/mail" \
|
||||||
|
"$HOME/.local/pnpm" \
|
||||||
|
"$CARGO_HOME/bin" \
|
||||||
|
"$HOME/.local/bin" \
|
||||||
|
"$XDG_DATA_HOME/bob/nvim-bin"
|
||||||
|
|
||||||
|
# last arg will be first in $FPATH
|
||||||
|
fpath_prepend \
|
||||||
|
"$ZDOTDIR/completions" \
|
||||||
|
"$HOME/.local/share/zsh/completions" \
|
||||||
|
"$HOME/.zsh/completions" \
|
||||||
|
"$ZDOTDIR/functions"
|
||||||
|
|
||||||
|
autoload -Uz $fpath[1]/*(.:t)
|
||||||
|
|
||||||
|
#------------------------------ history ------------------------------
|
||||||
|
setopt appendhistory # append to history
|
||||||
|
setopt sharehistory # share history across multiple sessions
|
||||||
|
setopt incappendhistory # adds commands as typed, not at shell exit
|
||||||
|
setopt hist_expire_dups_first # expire duplicates first
|
||||||
|
setopt hist_ignore_dups # do not store duplicates
|
||||||
|
setopt hist_find_no_dups # ignore duplicates when searching
|
||||||
|
setopt hist_reduce_blanks # do not store blank lines.
|
||||||
|
setopt histignorespace # do not store commands that start with a space in history
|
||||||
|
|
||||||
|
export HISTSIZE=5000
|
||||||
|
export HISTFILESIZE=5000
|
||||||
|
export SAVEHIST=5000
|
||||||
|
export HISTFILE="$XDG_CONFIG_HOME/zsh/history"
|
||||||
|
|
||||||
|
#------------------------------ cdpath ------------------------------
|
||||||
|
setopt autocd
|
||||||
|
|
||||||
|
# NOTE: This may be overriden in local env overrides (typically located in $XDG_DATA_HOME/zsh/env.zsh
|
||||||
|
export CDPATH=".:$REPOS:$REPOS/ansible:$DOTFILES:$LOCAL_REPOS:$BUCKET:$HOME"
|
||||||
|
|
||||||
|
#------------------------------ options ------------------------------
|
||||||
|
# (see `man zshoptions`)
|
||||||
|
setopt chaselinks
|
||||||
|
setopt extended_glob
|
||||||
|
setopt glob_dots
|
||||||
|
setopt glob_star_short
|
||||||
|
setopt clobber
|
||||||
|
setopt interactive_comments
|
||||||
|
setopt aliases
|
||||||
|
setopt auto_pushd # Push the current directory on the stack.
|
||||||
|
setopt pushd_ignore_dups # Ignore duplicates in stack
|
||||||
|
setopt pushd_silent # Do not print stack after pushd or popd.
|
||||||
|
setopt CORRECT # Offers corrections on misspelled commands.
|
||||||
|
|
||||||
|
bindkey -v # Enable vi mode
|
||||||
|
export KEYTIMEOUT=1 # Switch between vim mode quicker.
|
||||||
|
|
||||||
|
# Load Useful Functions
|
||||||
|
_source_if "${ZDOTDIR}/zsh-functions"
|
||||||
|
|
||||||
|
# Plugins
|
||||||
|
zsh_add_plugin "zsh-users/zsh-autosuggestions"
|
||||||
|
zsh_add_plugin "zsh-users/zsh-syntax-highlighting"
|
||||||
|
zsh_add_plugin "Aloxaf/fzf-tab"
|
||||||
|
|
||||||
|
#------------------------------ completions ------------------------------
|
||||||
|
# case insensitive path-completion
|
||||||
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
||||||
|
|
||||||
|
# partial completion suggestions
|
||||||
|
zstyle ':completion:*' list-suffixes
|
||||||
|
#
zstyle ':completion:*' expand prefix suffix
|
||||||
|
|
||||||
|
zstyle ':completion:*' menu no
|
||||||
|
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
|
||||||
|
|
||||||
|
autoload -Uz compinit; compinit # zstyle(s) should be added before this.
|
||||||
|
zmodload zsh/complist
|
||||||
|
_comp_options+=(globdots) # Include hidden files.
|
||||||
|
|
||||||
|
autoload bashcompinit && bashcompinit
|
||||||
|
[[ -r "$PASSWORD_STORE_DIR/.extensions/completions/extensions.bash.completion" ]] && \
|
||||||
|
source "$PASSWORD_STORE_DIR/.extensions/completions/extensions.bash.completion"
|
||||||
|
|
||||||
|
_source_if "$ZDOTDIR/plugins/fzf-tab/fzf-tab.plugin.zsh"
|
||||||
|
|
||||||
|
#------------------------------ prompt ------------------------------
|
||||||
|
|
||||||
|
autoload -Uz promptinit; promptinit
|
||||||
|
eval "$(starship init zsh)"
|
||||||
|
|
||||||
|
#------------------------------ aliases ------------------------------
|
||||||
|
|
||||||
|
alias bk='cd "${OLDPWD}"' # change to last directory
|
||||||
|
alias cda='cd "$ANSIBLE_LOCAL"' # change into local ansible directory.
|
||||||
|
alias cl='printf "\e[H\e[2J"' # clear the terminal
|
||||||
|
alias clear='printf "\e[H\e[2J"' # clear the terminal
|
||||||
|
alias czets='cd "${ZETDIR}"' # move into zettlekasten notes
|
||||||
|
alias d='docker' # run docker commands quickly
|
||||||
|
alias dc='docker compose' # run docker-compose commands quickly
|
||||||
|
alias dv='dirs -v' # list directory info
|
||||||
|
alias essh='edit-ssh-config' # edit ssh config quickly
|
||||||
|
alias email='tmux-sessionator --email' # Open email tmux session.
|
||||||
|
alias fl='find-latest' # Find the last modified file in a directory.
|
||||||
|
alias g='git' # access git commands quickly
|
||||||
|
alias ga='git add' # add files to git quickly
|
||||||
|
alias gcb='git checkout -b' # checkout a new git branch, creating if needed.
|
||||||
|
alias gco='git checkout' # checkout an already existing git branch
|
||||||
|
alias gcm='git commit -a -m' # commit files to git quickly
|
||||||
|
alias gp='git push' # push repo to git
|
||||||
|
alias gs='git status' # git status quickly
|
||||||
|
alias hn='hugo new' # generate a hugo site
|
||||||
|
alias hnc='hugo new content' # generate new hugo site content quickly
|
||||||
|
alias j='just' # run justfile's quickly.
|
||||||
|
alias kb='kanatactl' # Keyboard / kanata commands.
|
||||||
|
alias l='eza --long --git --group --links --icons --all' # better ls command.
|
||||||
|
alias lfs='ls -lahH --color=auto "$ZDOTDIR/functions"' # List functions.
|
||||||
|
alias ls='eza --long --git --group --links --icons --all'
|
||||||
|
alias lt='eza --long --git --group --links --icons --tree'
|
||||||
|
alias pass='PASSWORD_STORE_DIR=/home/michael/.local/share/gopass/stores/root gopass'
|
||||||
|
alias pc='gopass show --clip' # get an attribute of a password file and copy to the clipboard.
|
||||||
|
alias reload='exec zsh -l' # reload the shell, useful when making changes.
|
||||||
|
alias s='swift' # shorthand to access swift commands
|
||||||
|
alias st='swift test' # swift test
|
||||||
|
alias ste='swift test --enable-code-coverage' # swift test with code coverage enabled.
|
||||||
|
alias sb='swift build' # swift build
|
||||||
|
alias syu='yay -Syu' # Update packages.
|
||||||
|
alias t='tmux' # access tmux quickly
|
||||||
|
alias tka='tmux kill-server' # kill tmux server and all sessions.
|
||||||
|
alias ts='$SCRIPTS/tmux-sessionator' # create new tmux session, fuzzy finding common locations.
|
||||||
|
alias tss='$SCRIPTS/tmux-sessionator --choose' # attach to an existing tmux session.
|
||||||
|
alias tls='tmux list-sessions' # list tmux sessions
|
||||||
|
alias tks='tmux kill-session -t' # kill tmux session
|
||||||
|
alias temp='cd $(mktemp -d)' # create a temporary directory and move into it.
|
||||||
|
alias vi='nvim' # set vi to open neovim
|
||||||
|
alias newf='"$SCRIPTS"/newx --function' # generate a new shell function
|
||||||
|
alias n='nvim'
|
||||||
|
alias wget="wget --hsts-file=$XDG_DATA_HOME/wget-hsts" # set wget history location.
|
||||||
|
# GPG Yubikey restart relearn when switching keys and stubbed.
|
||||||
|
alias yubikeyrestart='gpg-connect-agent killagent /bye && gpg-connect-agent "scd serialno" "learn --force" /bye && gpg --card-status'
|
||||||
|
alias z='zoxide'
|
||||||
|
|
||||||
|
# NOTE: This needs to stay near the bottom, or it doesn't work properly.
|
||||||
|
# Use fzf in history / search contexts.
|
||||||
|
source <(fzf --zsh)
|
||||||
|
#source <(kubectl completion zsh)
|
||||||
|
|
||||||
|
#------------------------------ local configs ------------------------------
|
||||||
|
|
||||||
|
# TODO: The .zshrc-local is a legacy location and should be removed once my machines are
|
||||||
|
# use the new location in XDG_DATA_HOME.
|
||||||
|
# HACK: These need to stay here, otherwise environment overrides do not work properly
|
||||||
|
# I tried sourcing them in the the `.zshenv` files, but did not work.
|
||||||
|
_source_if "$ZDOTDIR/.zshrc-local"
|
||||||
|
_source_if "$LOCAL_ENV"
|
||||||
|
_source_if "$SCRIPTS/catppuccin-colors"
|
||||||
|
_source_if "$XDG_DATA_HOME/swiftly/env.sh"
|
||||||
|
|
||||||
|
# pnpm
|
||||||
|
export PNPM_HOME="$XDG_DATA_HOME/pnpm"
|
||||||
|
case ":$PATH:" in
|
||||||
|
*":$PNPM_HOME:"*) ;;
|
||||||
|
*) export PATH="$PNPM_HOME:$PATH" ;;
|
||||||
|
esac
|
||||||
|
# pnpm end
|
||||||
|
|
||||||
|
# The following lines have been added by Docker Desktop to enable Docker CLI completions.
|
||||||
|
autoload -Uz compinit
|
||||||
|
compinit
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Set things up for using gpg-agent
|
||||||
|
|
||||||
|
export GPG_TTY=$(tty)
|
||||||
|
|
||||||
|
function use-gpg-agent-for-ssh {
|
||||||
|
SOCK="$( gpgconf --list-dirs agent-ssh-socket )"
|
||||||
|
if [[ -n "${SOCK:-}" ]]
|
||||||
|
then
|
||||||
|
unset SSH_AGENT_PID
|
||||||
|
export SSH_AUTH_SOCK="$SOCK"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
use-gpg-agent-for-ssh
|
||||||
|
|
||||||
|
command -v direnv >/dev/null 2>&1 && eval "$(direnv hook zsh)"
|
||||||
|
command -v zoxide >/dev/null 2>&1 && eval "$(zoxide init --cmd cd zsh)"
|
||||||
5
env/.config/zsh/functions/brew-update
vendored
Executable file
5
env/.config/zsh/functions/brew-update
vendored
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
function brew-update() {
|
||||||
|
brew update && brew upgrade --greedy && brew cleanup
|
||||||
|
}
|
||||||
6
env/.config/zsh/functions/cdots
vendored
Executable file
6
env/.config/zsh/functions/cdots
vendored
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
function cdots() {
|
||||||
|
"$SCRIPTS/tmux-sessionator" "$DOTFILES"
|
||||||
|
}
|
||||||
|
|
||||||
8
env/.config/zsh/functions/chmox
vendored
Executable file
8
env/.config/zsh/functions/chmox
vendored
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# makes files executable
|
||||||
|
|
||||||
|
function chmox() {
|
||||||
|
[ ! -f "$1" ] && echo "usage: chmox <file>" && return 1
|
||||||
|
chmod u+x "$1"
|
||||||
|
}
|
||||||
7
env/.config/zsh/functions/clean-screenshots
vendored
Executable file
7
env/.config/zsh/functions/clean-screenshots
vendored
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
function clean-screenshots() {
|
||||||
|
for file in "$SCREENSHOTS"/*; do
|
||||||
|
rm "$file"
|
||||||
|
done
|
||||||
|
}
|
||||||
23
env/.config/zsh/functions/desktop
vendored
Executable file
23
env/.config/zsh/functions/desktop
vendored
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
function desktop() {
|
||||||
|
declare hide
|
||||||
|
declare show
|
||||||
|
|
||||||
|
zparseopts -D -E -K -- \
|
||||||
|
{h,-hide}=hide \
|
||||||
|
{s,-show}=show
|
||||||
|
|
||||||
|
if [ -n "$hide" ]; then
|
||||||
|
defaults write com.apple.finder CreateDesktop false && killall Finder
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$show" ]; then
|
||||||
|
defaults write com.apple.finder CreateDesktop true && killall Finder
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Please pass in --hide | --show"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
16
env/.config/zsh/functions/dmg
vendored
Executable file
16
env/.config/zsh/functions/dmg
vendored
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# Creates an encrypted disk image from a folder
|
||||||
|
function dmg() {
|
||||||
|
from="$1"
|
||||||
|
to="$2"
|
||||||
|
|
||||||
|
if [ -z "$1" ] || [ -z "$2" ]; then
|
||||||
|
echo "Usage: dmg <fromdir> <todir>"
|
||||||
|
echo ""
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
name="$(isosec).dmg"
|
||||||
|
hdiutil create -encryption AES-256 -srcfolder "$from" "$to/$name"
|
||||||
|
}
|
||||||
12
env/.config/zsh/functions/dp
vendored
Executable file
12
env/.config/zsh/functions/dp
vendored
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
function dp() {
|
||||||
|
[ -z "$1" ] && echo "Must supply temperature" && return 1
|
||||||
|
[ -z "$2" ] && echo "Must supply relative humidity" && return 1
|
||||||
|
|
||||||
|
local temperature=$1
|
||||||
|
local humidity=$2
|
||||||
|
|
||||||
|
psychrometrics dew-point --dry-bulb "$temperature" --relative-humidity "$humidity"
|
||||||
|
|
||||||
|
}
|
||||||
5
env/.config/zsh/functions/edit-ssh-config
vendored
Executable file
5
env/.config/zsh/functions/edit-ssh-config
vendored
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
function edit-ssh-config() {
|
||||||
|
ansible-vault edit "$DOTFILES/ssh/config"
|
||||||
|
}
|
||||||
7
env/.config/zsh/functions/find-latest
vendored
Executable file
7
env/.config/zsh/functions/find-latest
vendored
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# Find the last modified file in a directory.
|
||||||
|
function find-latest() {
|
||||||
|
local dir=$1
|
||||||
|
echo "$(find $dir -maxdepth 1 -mindepth 1 -type f | sort -nr | head -1)"
|
||||||
|
}
|
||||||
8
env/.config/zsh/functions/gl
vendored
Executable file
8
env/.config/zsh/functions/gl
vendored
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# Prettier git log
|
||||||
|
function gl() {
|
||||||
|
git log --graph \
|
||||||
|
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
|
||||||
|
--abbrev-commit
|
||||||
|
}
|
||||||
11
env/.config/zsh/functions/gma
vendored
Executable file
11
env/.config/zsh/functions/gma
vendored
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# Add all and commit to git.
|
||||||
|
|
||||||
|
function gma() {
|
||||||
|
[ -z "$1" ] \
|
||||||
|
&& echo "usage: gma <commit-message>" \
|
||||||
|
&& return 1
|
||||||
|
|
||||||
|
git add . && git commit -m "$1"
|
||||||
|
}
|
||||||
5
env/.config/zsh/functions/gpgreset
vendored
Executable file
5
env/.config/zsh/functions/gpgreset
vendored
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
function gpgreset() {
|
||||||
|
gpgconf --kill all && gpgconf --launch all
|
||||||
|
}
|
||||||
12
env/.config/zsh/functions/mkcd
vendored
Executable file
12
env/.config/zsh/functions/mkcd
vendored
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
# Creates a directory then `cd`'s into the directory
|
||||||
|
|
||||||
|
function mkcd() {
|
||||||
|
dir=$1
|
||||||
|
if [ -z "$dir" ]; then
|
||||||
|
echo "usage: mkcd <dir>" && return 1
|
||||||
|
fi
|
||||||
|
mkdir "$dir"
|
||||||
|
cd "$dir"
|
||||||
|
}
|
||||||
13
env/.config/zsh/functions/new-proposal
vendored
Executable file
13
env/.config/zsh/functions/new-proposal
vendored
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
prefix=$(date '+%y.%m.%d')
|
||||||
|
name=$(gum input --placeholder="Enter customer name...")
|
||||||
|
|
||||||
|
if [ -z "$name" ]; then
|
||||||
|
echo "Name should not be blank." && exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cleanedName="${name%% *}${name##* }"
|
||||||
|
directory="$PROPOSALS/$prefix.$cleanedName"
|
||||||
|
mkdir "$directory"
|
||||||
|
echo "$directory"
|
||||||
7
env/.config/zsh/functions/shortdate
vendored
Executable file
7
env/.config/zsh/functions/shortdate
vendored
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# Formats the date as '23.10.12'.
|
||||||
|
|
||||||
|
function shortdate() {
|
||||||
|
echo "$(date '+%Y.%m.%d' | cut -c3-)"
|
||||||
|
}
|
||||||
17
env/.config/zsh/functions/tns
vendored
Executable file
17
env/.config/zsh/functions/tns
vendored
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
# Create a tmux session.
|
||||||
|
#
|
||||||
|
# This accepts a path argument that is used to create the tmux session
|
||||||
|
# in, using it's basename for the session name.
|
||||||
|
#
|
||||||
|
# If an argument is not supplied, then we will create a tmux session in
|
||||||
|
# the current working directory.
|
||||||
|
|
||||||
|
function tns() {
|
||||||
|
local directory=$1
|
||||||
|
if [ -n "$directory" ]; then
|
||||||
|
directory=${PWD}
|
||||||
|
fi
|
||||||
|
tmux-sessionator --directory "$directory"
|
||||||
|
}
|
||||||
6
env/.config/zsh/functions/update-dots
vendored
Executable file
6
env/.config/zsh/functions/update-dots
vendored
Executable file
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
function update-dots() {
|
||||||
|
find "$ANSIBLE_MACOS_PLAYBOOK_DIR" -type f -maxdepth 1 -mindepth 1 -name justfile \
|
||||||
|
| xargs -I {} just --justfile {} run-playbook --tags dotfiles "$@"
|
||||||
|
}
|
||||||
19
env/.config/zsh/functions/vic
vendored
Executable file
19
env/.config/zsh/functions/vic
vendored
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
function vic() {
|
||||||
|
# opens a shell command in $EDITOR
|
||||||
|
cmd="$(command -v $1)"
|
||||||
|
|
||||||
|
[ -f "$cmd" ] \
|
||||||
|
&& "$EDITOR" "$cmd" \
|
||||||
|
&& return 0
|
||||||
|
|
||||||
|
# if command was not found try the function directory.
|
||||||
|
cmd="$ZFUNCDIR/$1"
|
||||||
|
[ -f "$cmd" ] \
|
||||||
|
&& "$EDITOR" "$cmd" \
|
||||||
|
&& return 0
|
||||||
|
|
||||||
|
echo "Command not found: $1"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
0
zsh/config/zsh-functions → env/.config/zsh/zsh-functions
vendored
Normal file → Executable file
0
zsh/config/zsh-functions → env/.config/zsh/zsh-functions
vendored
Normal file → Executable file
6
env/.gnupg/gpg-agent.conf
vendored
Normal file
6
env/.gnupg/gpg-agent.conf
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# https://github.com/drduh/config/blob/main/gpg-agent.conf
|
||||||
|
# https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html
|
||||||
|
enable-ssh-support
|
||||||
|
ttyname $GPG_TTY
|
||||||
|
default-cache-ttl 120
|
||||||
|
max-cache-ttl 120
|
||||||
70
env/.gnupg/gpg.conf
vendored
Normal file
70
env/.gnupg/gpg.conf
vendored
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# https://github.com/drduh/config/blob/main/gpg.conf
|
||||||
|
# https://www.gnupg.org/documentation/manuals/gnupg/GPG-Options.html
|
||||||
|
# 'gpg --version' to get capabilities
|
||||||
|
# Use AES256, 192, or 128 as cipher
|
||||||
|
personal-cipher-preferences AES256 AES192 AES
|
||||||
|
# Use SHA512, 384, or 256 as digest
|
||||||
|
personal-digest-preferences SHA512 SHA384 SHA256
|
||||||
|
# Use ZLIB, BZIP2, ZIP, or no compression
|
||||||
|
personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
|
||||||
|
# Default preferences for new keys
|
||||||
|
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
|
||||||
|
# SHA512 as digest to sign keys
|
||||||
|
cert-digest-algo SHA512
|
||||||
|
# SHA512 as digest for symmetric ops
|
||||||
|
s2k-digest-algo SHA512
|
||||||
|
# AES256 as cipher for symmetric ops
|
||||||
|
s2k-cipher-algo AES256
|
||||||
|
# UTF-8 support for compatibility
|
||||||
|
charset utf-8
|
||||||
|
# No comments in messages
|
||||||
|
no-comments
|
||||||
|
# No version in output
|
||||||
|
no-emit-version
|
||||||
|
# Disable banner
|
||||||
|
no-greeting
|
||||||
|
# Long key id format
|
||||||
|
keyid-format 0xlong
|
||||||
|
# Display UID validity
|
||||||
|
list-options show-uid-validity
|
||||||
|
verify-options show-uid-validity
|
||||||
|
# Display all keys and their fingerprints
|
||||||
|
with-fingerprint
|
||||||
|
# Display key origins and updates
|
||||||
|
#with-key-origin
|
||||||
|
# Cross-certify subkeys are present and valid
|
||||||
|
require-cross-certification
|
||||||
|
# Enforce memory locking to avoid accidentally swapping GPG memory to disk
|
||||||
|
require-secmem
|
||||||
|
# Disable caching of passphrase for symmetrical ops
|
||||||
|
no-symkey-cache
|
||||||
|
# Output ASCII instead of binary
|
||||||
|
armor
|
||||||
|
# Enable smartcard
|
||||||
|
use-agent
|
||||||
|
# Disable recipient key ID in messages (breaks Mailvelope)
|
||||||
|
throw-keyids
|
||||||
|
# Default key ID to use (helpful with throw-keyids)
|
||||||
|
#default-key 0xFF00000000000001
|
||||||
|
#trusted-key 0xFF00000000000001
|
||||||
|
# Group recipient keys (preferred ID last)
|
||||||
|
#group keygroup = 0xFF00000000000003 0xFF00000000000002 0xFF00000000000001
|
||||||
|
# Keyserver URL
|
||||||
|
#keyserver hkps://keys.openpgp.org
|
||||||
|
#keyserver hkps://keys.mailvelope.com
|
||||||
|
#keyserver hkps://keyserver.ubuntu.com:443
|
||||||
|
#keyserver hkps://pgpkeys.eu
|
||||||
|
#keyserver hkps://pgp.circl.lu
|
||||||
|
#keyserver hkp://zkaan2xfbuxia2wpf7ofnkbz6r5zdbbvxbunvp5g2iebopbfc4iqmbad.onion
|
||||||
|
# Keyserver proxy
|
||||||
|
#keyserver-options http-proxy=http://127.0.0.1:8118
|
||||||
|
#keyserver-options http-proxy=socks5-hostname://127.0.0.1:9050
|
||||||
|
# Enable key retrieval using WKD and DANE
|
||||||
|
#auto-key-locate wkd,dane,local
|
||||||
|
#auto-key-retrieve
|
||||||
|
# Trust delegation mechanism
|
||||||
|
#trust-model tofu+pgp
|
||||||
|
# Show expired subkeys
|
||||||
|
#list-options show-unusable-subkeys
|
||||||
|
# Verbose output
|
||||||
|
#verbose
|
||||||
1
env/.gnupg/scdaemon.conf
vendored
Normal file
1
env/.gnupg/scdaemon.conf
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
disable-ccid
|
||||||
47
env/.local/scripts/aap
vendored
Executable file
47
env/.local/scripts/aap
vendored
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# A wrapper script to run swift-hpa in a docker container and
|
||||||
|
# mount the correct volumes, etc.
|
||||||
|
#
|
||||||
|
# Make sure to run 'hpa-init' first on this machine to setup
|
||||||
|
# dependencies, if you have not done so already.
|
||||||
|
#
|
||||||
|
# To attach to a shell inside the container run:
|
||||||
|
# `hpa bash`
|
||||||
|
#
|
||||||
|
# To run ansible vault commands inside the container run:
|
||||||
|
# `hpa ansible-vault ...`
|
||||||
|
#
|
||||||
|
|
||||||
|
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||||
|
. "$SCRIPTS/utils/hpa/hpa.env"
|
||||||
|
|
||||||
|
############################## MAIN ##############################
|
||||||
|
|
||||||
|
# Don't pull images if they're prefixed with 'localhost'.
|
||||||
|
if echo "$HPA_DOCKER_IMAGE" | grep -vq "localhost"; then
|
||||||
|
|
||||||
|
# Check if we should pull the image prior to running.
|
||||||
|
last_pull="0"
|
||||||
|
if [[ -f "$HPA_AIRFLOW_CONFIG_DIR/.lastpull" ]]; then
|
||||||
|
last_pull=$(cat "$HPA_AIRFLOW_CONFIG_DIR/.lastpull")
|
||||||
|
fi
|
||||||
|
curr=$(date +%s)
|
||||||
|
diff=$((curr - last_pull))
|
||||||
|
|
||||||
|
if [[ $HPA_AUTO_PULL == "1" ]] && [[ $diff -gt "$HPA_AUTO_PULL_INTERVAL" ]]; then
|
||||||
|
. "$SCRIPTS/hpa-pull" "$HPA_AUTO_PULL_OPTS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
podman run --rm --interactive --tty \
|
||||||
|
--volume "$HPA_AIRFLOW_CONFIG_DIR":/root/.config/hpa:ro \
|
||||||
|
--volume "$HPA_DATA_DIR":/root/.local/share/hpa:ro \
|
||||||
|
--volume "$HPA_CONSULTS_DIR":/consults \
|
||||||
|
--volume "$PWD":/root/project \
|
||||||
|
--secret "$HPA_VAULT_SECRET_KEY" \
|
||||||
|
"$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG" "$@"
|
||||||
129
env/.local/scripts/ask-gpt
vendored
Executable file
129
env/.local/scripts/ask-gpt
vendored
Executable file
@@ -0,0 +1,129 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
#
|
||||||
|
# Ask chat-gpt a question and view the output.
|
||||||
|
|
||||||
|
local api_key="${OPENAI_API_KEY}"
|
||||||
|
local debug="${DEBUG}"
|
||||||
|
local outputFile="/tmp/output.json"
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
cat << EOF
|
||||||
|
|
||||||
|
Ask chat-gpt a question and view the output.
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
|
||||||
|
ask-gpt 'Who are you?'
|
||||||
|
|
||||||
|
# Send output to a file:
|
||||||
|
ask-gpt --print 'Who are you' > /tmp/gpt.md
|
||||||
|
|
||||||
|
Usage: ask-gpt [-k <key>] [-m <model>] [-p] [-j] [-h] question
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-k | --key : Use api key (default: environment variable 'OPENAI_API_KEY')
|
||||||
|
-m | --model: Specify the chat-gpt model (default is 'gpt-4o-mini')
|
||||||
|
-j | --json: Print the full json output to stdout.
|
||||||
|
-p | --print: Print the output to stdout in markdown format.
|
||||||
|
-h | --help: Show usage.
|
||||||
|
|
||||||
|
Include debug output:
|
||||||
|
|
||||||
|
DEBUG=1 ask-gpt 'Who are you?'
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
######################### Helpers #########################
|
||||||
|
|
||||||
|
function debug_print {
|
||||||
|
if [ ! -z "$debug" ]; then
|
||||||
|
echo "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function makeGptInput {
|
||||||
|
echo $(jq --null-input \
|
||||||
|
--arg model "$1" \
|
||||||
|
--arg question "$2" \
|
||||||
|
'{
|
||||||
|
"model": $model,
|
||||||
|
"messages": [
|
||||||
|
{ "role": "system", "content": "You are such a helpful assistant!" },
|
||||||
|
{ "role": "developer", "content": "You message data is escaped properly to parse as JSON, including escaping newline characters." },
|
||||||
|
{ "role": "user", "content": $question }
|
||||||
|
]
|
||||||
|
}')
|
||||||
|
}
|
||||||
|
|
||||||
|
function getGptOutput {
|
||||||
|
echo "$1" | jq -r '.choices[].message.content'
|
||||||
|
}
|
||||||
|
|
||||||
|
function askGpt {
|
||||||
|
local key=$1
|
||||||
|
local input=$2
|
||||||
|
|
||||||
|
echo $(curl "https://api.openai.com/v1/chat/completions" \
|
||||||
|
-sS \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-H "Authorization: Bearer $key" \
|
||||||
|
-d "$input")
|
||||||
|
}
|
||||||
|
|
||||||
|
######################### MAIN #########################
|
||||||
|
zparseopts -D -E -F -- \
|
||||||
|
{h,-help}=help \
|
||||||
|
{k,-key}:=key \
|
||||||
|
{m,-model}=model \
|
||||||
|
{j,-json}=json \
|
||||||
|
{p,-print}=printOutput
|
||||||
|
|
||||||
|
# Check if help was specified and show usage.
|
||||||
|
[ ! -z "$help" ] && usage && exit 0
|
||||||
|
|
||||||
|
local question="$1"
|
||||||
|
# Ensure there is a question / first argument.
|
||||||
|
[ -z "$question" ] && print "No question found." && usage && exit 1
|
||||||
|
|
||||||
|
# parse the api key.
|
||||||
|
if [ ! -z "$key" ]; then
|
||||||
|
api_key="${key[-1]}"
|
||||||
|
debug_print "Using custom passed in key."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fail if we did not find an api key.
|
||||||
|
[ -z "$api_key" ] && echo "No api key found." && usage && exit 1
|
||||||
|
|
||||||
|
# Set default model if not specified.
|
||||||
|
if [ -z "$model" ]; then
|
||||||
|
model="gpt-4o-mini"
|
||||||
|
fi
|
||||||
|
debug_print "Model: $model"
|
||||||
|
|
||||||
|
# Generate the input for chat-gpt.
|
||||||
|
local input="$(makeGptInput $model $question)"
|
||||||
|
debug_print "Input: $input"
|
||||||
|
|
||||||
|
# Get the chat-gpt output.
|
||||||
|
local output="$(askGpt $api_key $input)"
|
||||||
|
|
||||||
|
# TODO: Remove.
|
||||||
|
echo "$output" > "$outputFile"
|
||||||
|
|
||||||
|
debug_print "Full ouptput: $(echo $output | jq '.')"
|
||||||
|
|
||||||
|
# If json option is specified, then send full output to stdout and exit.
|
||||||
|
[ ! -z "$json" ] && (echo "$output" | jq '.') && exit 0
|
||||||
|
|
||||||
|
# parse the output message.
|
||||||
|
local parsedOutput="$(getGptOutput $output)"
|
||||||
|
|
||||||
|
echo "$parsedOutput"
|
||||||
|
|
||||||
|
# Show the output based on options passed in.
|
||||||
|
# if [ -z "$printOutput" ]; then
|
||||||
|
# echo "# $question\n$parsedOutput" | gum format | gum pager
|
||||||
|
# else
|
||||||
|
# echo "# $question\n$parsedOutput" | gum format
|
||||||
|
# fi
|
||||||
68
env/.local/scripts/backup-logger
vendored
Executable file
68
env/.local/scripts/backup-logger
vendored
Executable file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||||
|
THIS_FILE=${BASH_SOURCE[0]}
|
||||||
|
LOG_LABEL=$(basename "$THIS_FILE")
|
||||||
|
THIS=${THIS:-$LOG_LABEL}
|
||||||
|
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||||
|
LOG_DIR="/tmp/logs"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Utility for logging backup runs.
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
$ $THIS <flags> <msg...>
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h | --help: Show this help page.
|
||||||
|
-s | --show: Show the log messages.
|
||||||
|
--rm: Remove the log file
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Logging utility function, use in place of echo.
|
||||||
|
log() {
|
||||||
|
logging log --source "$THIS_FILE" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
show() {
|
||||||
|
[[ ! -f "$LOG_DIR/$LOG_FILE" ]] &&
|
||||||
|
log --warning "Empty log file." &&
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
bat "$LOG_DIR/$LOG_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# MAIN
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
declare -a msg
|
||||||
|
|
||||||
|
# Setup logging file and label.
|
||||||
|
source "$SCRIPTS/hypr/logging"
|
||||||
|
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||||
|
usage && exit 0
|
||||||
|
elif [[ $1 == "-s" ]] || [[ $1 == "--show" ]]; then
|
||||||
|
show && exit 0
|
||||||
|
elif [[ $1 == "--rm" ]]; then
|
||||||
|
rm "$LOG_DIR/$LOG_FILE" && exit 0
|
||||||
|
else
|
||||||
|
msg+=("$1")
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
[[ -z "${msg[*]}" ]] && log --error "No message passed to log." && exit 1
|
||||||
|
|
||||||
|
log "${msg[@]}"
|
||||||
34
env/.local/scripts/catppuccin-colors
vendored
Executable file
34
env/.local/scripts/catppuccin-colors
vendored
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Catppuccin-mocha colors https://catppuccin.com/palette/
|
||||||
|
#
|
||||||
|
# This allows this file to be sourced and colors available in other scripts.
|
||||||
|
|
||||||
|
export ROSEWATER="#f5e0dc"
|
||||||
|
export FLAMINGO="#f2cdcd"
|
||||||
|
export PINK="#f5c2e7"
|
||||||
|
export MAUVE="#cba6f7"
|
||||||
|
export RED="#f38ba8"
|
||||||
|
export MAROON="#eba0ac"
|
||||||
|
export PEACH="#fab387"
|
||||||
|
export YELLOW="#f9e2af"
|
||||||
|
export GREEN="#a6e3a1"
|
||||||
|
export TEAL="#94e2d5"
|
||||||
|
export SKY="#89dceb"
|
||||||
|
export SAPPHIRE="#74c7ec"
|
||||||
|
export BLUE="#89b4fa"
|
||||||
|
export LAVENDER="#b4befe"
|
||||||
|
export TEXT="#cdd6f4"
|
||||||
|
export SUBTEXT1="#bac2de"
|
||||||
|
export SUBTEXT0="#a6adc8"
|
||||||
|
export OVERLAY2="#9399b2"
|
||||||
|
export OVERLAY1="#7f849c"
|
||||||
|
export OVERLAY0="#6c7086"
|
||||||
|
export SURFACE2="#585b70"
|
||||||
|
export SURFACE1="#45475a"
|
||||||
|
export SURFACE0="#313244"
|
||||||
|
export BASE="#1e1e2e"
|
||||||
|
export MANTLE="#181825"
|
||||||
|
export CRUST="#11111b"
|
||||||
|
|
||||||
|
export FZF_DEFAULT_OPTS="--color=header:$MAROON:bold,footer:$MAROON:bold,pointer:$MAUVE,prompt:$MAUVE,fg+:$MAUVE,border:$LAVENDER,info:$LAVENDER,fg:$TEXT,hl:$TEXT:bold,hl+:$TEXT:bold,bg:$BASE,bg+:$SURFACE0,preview-label:$TEAL:bold"
|
||||||
49
env/.local/scripts/hpa
vendored
Executable file
49
env/.local/scripts/hpa
vendored
Executable file
@@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# A wrapper script to run swift-hpa in a docker container and
|
||||||
|
# mount the correct volumes, etc.
|
||||||
|
#
|
||||||
|
# Make sure to run 'hpa-init' first on this machine to setup
|
||||||
|
# dependencies, if you have not done so already.
|
||||||
|
#
|
||||||
|
# To attach to a shell inside the container run:
|
||||||
|
# `hpa bash`
|
||||||
|
#
|
||||||
|
# To run ansible vault commands inside the container run:
|
||||||
|
# `hpa ansible-vault ...`
|
||||||
|
#
|
||||||
|
|
||||||
|
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||||
|
. "$SCRIPTS/utils/hpa/hpa.env"
|
||||||
|
|
||||||
|
############################## MAIN ##############################
|
||||||
|
|
||||||
|
# Don't pull images if they're prefixed with 'localhost'.
|
||||||
|
if echo "$HPA_DOCKER_IMAGE" | grep -vq "localhost"; then
|
||||||
|
|
||||||
|
# Check if we should pull the image prior to running.
|
||||||
|
last_pull="0"
|
||||||
|
if [[ -f "$HPA_CONFIG_DIR/.lastpull" ]]; then
|
||||||
|
last_pull=$(cat "$HPA_CONFIG_DIR/.lastpull")
|
||||||
|
fi
|
||||||
|
curr=$(date +%s)
|
||||||
|
diff=$((curr - last_pull))
|
||||||
|
|
||||||
|
if [[ $HPA_AUTO_PULL == "1" ]] && [[ $diff -gt "$HPA_AUTO_PULL_INTERVAL" ]]; then
|
||||||
|
. "$SCRIPTS/hpa-pull" "$HPA_AUTO_PULL_OPTS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "ARGS: $@"
|
||||||
|
|
||||||
|
podman run --rm --interactive --tty \
|
||||||
|
--volume "$HPA_CONFIG_DIR":/root/.config/hpa:ro \
|
||||||
|
--volume "$HPA_DATA_DIR":/root/.local/share/hpa:ro \
|
||||||
|
--volume "$HPA_CONSULTS_DIR":/consults \
|
||||||
|
--volume "$PWD":/root/project \
|
||||||
|
--secret "$HPA_VAULT_SECRET_KEY" \
|
||||||
|
"$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG" "$@"
|
||||||
11
env/.local/scripts/hpa-create
vendored
Executable file
11
env/.local/scripts/hpa-create
vendored
Executable file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
title="Creating project..."
|
||||||
|
script="${SCRIPTS:-$HOME/.local/scripts}/utils/hpa/hpa-create"
|
||||||
|
first_arg=${1:-""}
|
||||||
|
if [[ $first_arg == "-h" ]] || [[ $first_arg == "--help" ]]; then
|
||||||
|
. "$script" $*
|
||||||
|
else
|
||||||
|
# bash -c "$script $*" | tr -d '\r' | head -1
|
||||||
|
gum spin --show-output --title "$title" -- bash -c "$script $*" | tr -d '\r' | head -1
|
||||||
|
fi
|
||||||
98
env/.local/scripts/hpa-init
vendored
Executable file
98
env/.local/scripts/hpa-init
vendored
Executable file
@@ -0,0 +1,98 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||||
|
THIS_FILE=${BASH_SOURCE[0]}
|
||||||
|
LOG_LABEL=$(basename "$THIS_FILE")
|
||||||
|
THIS=${THIS:-$LOG_LABEL}
|
||||||
|
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||||
|
|
||||||
|
# Load environment / shared variables.
|
||||||
|
. "$SCRIPTS/utils/hpa/hpa.env"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Setup dependencies for running hpa script in docker. This only needs to be
|
||||||
|
ran once on a new machine.
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
$ $THIS <flags> <shell> <completion-file>
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-h | --help: Show this help page.
|
||||||
|
|
||||||
|
DEFAULTS:
|
||||||
|
shell: Default is 'zsh', accepts 'zsh' | 'bash' | 'fish'
|
||||||
|
completion-file: Default is '~/.zsh/completions/_hpa'
|
||||||
|
|
||||||
|
ENVIRONMENT:
|
||||||
|
CONSULTS_DIR: Set the directory where consults / projects are stored.
|
||||||
|
(default: '~/work/consults')
|
||||||
|
|
||||||
|
HPA_DOCKER_TAG: Set the docker image tag to use for the hpa docker image
|
||||||
|
(default: 'latest')
|
||||||
|
|
||||||
|
HPA_VAULT_SECRET_KEY: Set the key used for the ansible-vault secret.
|
||||||
|
(default: 'vault-pass')
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Logging utility function, use in place of echo.
|
||||||
|
log() {
|
||||||
|
logging log --source "$THIS_FILE" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
generate-completion() {
|
||||||
|
local output_dir output type
|
||||||
|
type=${1:-"zsh"}
|
||||||
|
output=${2:-$HOME/.zsh/completions/_hpa}
|
||||||
|
output_dir=$(dirname "$output")
|
||||||
|
|
||||||
|
log "Generating completion: type: '$type', to: $output"
|
||||||
|
|
||||||
|
[[ ! -d "$output_dir" ]] && mkdir -p "$output_dir"
|
||||||
|
(
|
||||||
|
podman run --rm -it "$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG" \
|
||||||
|
--generate-completion-script "$type" |
|
||||||
|
tr -d '\r'
|
||||||
|
) >"$output"
|
||||||
|
}
|
||||||
|
|
||||||
|
generate-secret() {
|
||||||
|
log "Generating vault secret for key: '$HPA_VAULT_SECRET_KEY'"
|
||||||
|
local secret
|
||||||
|
secret="$(pass -c ansible/vault-pass)"
|
||||||
|
printf "%s" "$secret" | podman secret create "$HPA_VAULT_SECRET_KEY" -
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# MAIN
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
first_arg=${1:-""}
|
||||||
|
if [[ $first_arg == "-h" ]] || [[ $first_arg == "--help" ]]; then
|
||||||
|
usage && exit 0
|
||||||
|
else
|
||||||
|
# Setup logging file and label.
|
||||||
|
source "$SCRIPTS/hypr/logging"
|
||||||
|
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||||
|
|
||||||
|
log "Starting init..."
|
||||||
|
|
||||||
|
generate-completion "$@"
|
||||||
|
generate-secret
|
||||||
|
|
||||||
|
log "Generating directories, if they don't exist."
|
||||||
|
mkdir -p "$HPA_CONSULTS_DIR" &>/dev/null
|
||||||
|
mkdir "$HPA_DATA_DIR" &>/dev/null
|
||||||
|
|
||||||
|
log "Cloning required template and playbook, if they don't exist"
|
||||||
|
[[ ! -d "$HPA_PLAYBOOK_DIR" ]] && git clone "$HPA_PLAYBOOK_URL" "$HPA_PLAYBOOK_DIR"
|
||||||
|
[[ ! -d "$HPA_CONSULT_TEMPLATE_DIR" ]] && git clone "$HPA_CONSULT_TEMPLATE_URL" "$HPA_CONSULT_TEMPLATE_DIR"
|
||||||
|
[[ ! -d "$HPA_AIRFLOW_TEMPLATE_DIR" ]] && git clone "$HPA_AIRFLOW_TEMPLATE_URL" "$HPA_AIRFLOW_TEMPLATE_DIR"
|
||||||
|
fi
|
||||||
112
env/.local/scripts/hpa-pull
vendored
Executable file
112
env/.local/scripts/hpa-pull
vendored
Executable file
@@ -0,0 +1,112 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||||
|
THIS_FILE=${BASH_SOURCE[0]}
|
||||||
|
LOG_LABEL=$(basename "$THIS_FILE")
|
||||||
|
THIS=${THIS:-$LOG_LABEL}
|
||||||
|
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||||
|
# Load environment / shared variables.
|
||||||
|
. "$SCRIPTS/utils/hpa/hpa.env"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
|
||||||
|
Pulls / updates template, playbook, docker image, etc.
|
||||||
|
|
||||||
|
USAGE:
|
||||||
|
$ $THIS <flags>
|
||||||
|
|
||||||
|
FLAGS:
|
||||||
|
-a | --all: Pull everything (default).
|
||||||
|
-d | --docker: Pull docker image.
|
||||||
|
-p | --playbook: Pull ansible-hpa-playbook.
|
||||||
|
-t | --template: Pull consult template.
|
||||||
|
-h | --help: Show this help page.
|
||||||
|
|
||||||
|
If no flags are passed in then we will pull everything.
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Logging utility function, use in place of echo.
|
||||||
|
log() {
|
||||||
|
logging log --source "$THIS_FILE" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
pull-repo() {
|
||||||
|
local dir=${1:-""}
|
||||||
|
[[ -z "$dir" ]] &&
|
||||||
|
log --error "Directory not supplied to pull git repo." &&
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
pushd "$dir" &>/dev/null || exit 1
|
||||||
|
(
|
||||||
|
git pull
|
||||||
|
)
|
||||||
|
popd &>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
pull-docker() {
|
||||||
|
log --echo "Pulling docker image: '$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG'"
|
||||||
|
podman pull "$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG"
|
||||||
|
}
|
||||||
|
|
||||||
|
pull-playbook() {
|
||||||
|
log --echo "Pulling playbook: '$HPA_PLAYBOOK_DIR'"
|
||||||
|
pull-repo "$HPA_PLAYBOOK_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
pull-template() {
|
||||||
|
log --echo "Pulling template: '$HPA_CONSULT_TEMPLATE_DIR'"
|
||||||
|
pull-repo "$HPA_CONSULT_TEMPLATE_DIR"
|
||||||
|
|
||||||
|
log --echo "Pulling airflow assessment template: '$HPA_AIRFLOW_TEMPLATE_DIR'"
|
||||||
|
pull-repo "$HPA_AIRFLOW_TEMPLATE_DIR"
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# MAIN
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Setup logging file and label.
|
||||||
|
source "$SCRIPTS/hypr/logging"
|
||||||
|
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||||
|
all_flag="1"
|
||||||
|
docker_flag="0"
|
||||||
|
playbook_flag="0"
|
||||||
|
template_flag="0"
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
if [[ $1 == "-a" ]] || [[ $1 == "--all" ]]; then
|
||||||
|
all_flag="1"
|
||||||
|
break
|
||||||
|
elif [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||||
|
usage && exit 0
|
||||||
|
elif [[ $1 == "-d" ]] || [[ $1 == "--docker" ]]; then
|
||||||
|
all_flag="0"
|
||||||
|
docker_flag="1"
|
||||||
|
elif [[ $1 == "-p" ]] || [[ $1 == "--playbook" ]]; then
|
||||||
|
all_flag="0"
|
||||||
|
playbook_flag="1"
|
||||||
|
elif [[ $1 == "-t" ]] || [[ $1 == "--template" ]]; then
|
||||||
|
all_flag="0"
|
||||||
|
template_flag="1"
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $all_flag == "1" ]]; then
|
||||||
|
docker_flag="1"
|
||||||
|
playbook_flag="1"
|
||||||
|
template_flag="1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ $docker_flag == "1" ]] && pull-docker
|
||||||
|
[[ $playbook_flag == "1" ]] && pull-playbook
|
||||||
|
[[ $template_flag == "1" ]] && pull-template
|
||||||
|
date +%s >"$HPA_CONFIG_DIR/.lastpull"
|
||||||
|
date +%s >"$HPA_AIRFLOW_CONFIG_DIR/.lastpull"
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user