mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Compare commits
583 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3eb8a8e44 | ||
|
|
3afee0505b | ||
|
|
50b74fc06e | ||
|
|
74bf253950 | ||
|
|
434120cc90 | ||
|
|
97e23b3669 | ||
|
|
f9f3dd05c8 | ||
|
|
6e095d9fbc | ||
|
|
c25540a398 | ||
|
|
fae178e8ac | ||
|
|
15ea12d54b | ||
|
|
291de7b2c1 | ||
|
|
bbba28e166 | ||
|
|
27dc8fb22c | ||
|
|
a5f55034fa | ||
|
|
062da36145 | ||
|
|
9e3b929a4b | ||
|
|
3170a41c4b | ||
|
|
b37f95383c | ||
|
|
e6e66b0d05 | ||
|
|
6e6b63cb28 | ||
|
|
20bb942ac6 | ||
|
|
d256cdf12b | ||
|
|
c20739472f | ||
|
|
66e6833623 | ||
|
|
bc5f9a2741 | ||
|
|
04d4ab4d25 | ||
|
|
ce1d4780b6 | ||
|
|
8e79910857 | ||
|
|
999ef09790 | ||
|
|
2f9841e2ac | ||
|
|
2879f63aff | ||
|
|
79a3e1f46c | ||
|
|
62392e3712 | ||
|
|
9717fef420 | ||
|
|
3c83cb1761 | ||
|
|
2a71557663 | ||
|
|
b6a2b65704 | ||
|
|
398e39b9eb | ||
|
|
f6b5cd90fc | ||
|
|
1d14f294eb | ||
|
|
f3cb3607db | ||
|
|
d117ee6b2e | ||
|
|
7e249843a6 | ||
|
|
465bfd37f1 | ||
|
|
5ad1ad4616 | ||
|
|
e82cad68e1 | ||
|
|
5e372e2b35 | ||
|
|
9e392af7d1 | ||
|
|
68bcf536cb | ||
|
|
698f2defa9 | ||
|
|
a42128f5c9 | ||
|
|
6559acbf90 | ||
|
|
a654a7747c | ||
|
|
d158a0a373 | ||
|
|
229d5353e3 | ||
|
|
20389cba90 | ||
|
|
aaf56b794d | ||
|
|
827665279a | ||
|
|
8467bfce20 | ||
|
|
116ae13896 | ||
|
|
0f08f9710a | ||
|
|
9c147af8c1 | ||
|
|
5e498f9bcd | ||
|
|
1cab41bfd5 | ||
|
|
3e225ae2ab | ||
|
|
cc15b17e28 | ||
|
|
7aa9e57a59 | ||
|
|
530b205b3d | ||
|
|
0bed0a80a3 | ||
|
|
244c5da0e7 | ||
|
|
e885afbff9 | ||
|
|
8a0e4cd774 | ||
|
|
5cf313140c | ||
|
|
f0c3ab8753 | ||
|
|
8cd3682a23 | ||
|
|
ee83a40686 | ||
|
|
7f9a3774ae | ||
|
|
8d7c76b227 | ||
|
|
0a92dd0ed7 | ||
|
|
eae69fe414 | ||
|
|
dcef7445b2 | ||
|
|
11d1086a68 | ||
|
|
a88d120b3c | ||
|
|
15479f3829 | ||
|
|
9178794de5 | ||
|
|
fc120b66fe | ||
|
|
57b181bd74 | ||
|
|
aa6a2e806d | ||
|
|
eec3c9ba7a | ||
|
|
d67b18f2ea | ||
|
|
72b82ff2e3 | ||
|
|
6492beb726 | ||
|
|
08142409f8 | ||
|
|
8225785dcc | ||
|
|
c7c97b84c5 | ||
|
|
f9ce8b3df8 | ||
|
|
69c1184b58 | ||
|
|
7e432287ac | ||
|
|
50cb109c99 | ||
|
|
c915b20450 | ||
|
|
f3ea935dd5 | ||
|
|
a6414425b7 | ||
|
|
ad73f12103 | ||
|
|
7d35ace5bb | ||
|
|
e4f2cc94b5 | ||
|
|
fcbe2e781b | ||
|
|
7a5abd73cb | ||
|
|
07926d6673 | ||
|
|
24690e8399 | ||
|
|
2232dce811 | ||
|
|
f6de62700a | ||
|
|
01272f4474 | ||
|
|
e176b0c136 | ||
|
|
67fad831e5 | ||
|
|
048d7fb1ba | ||
|
|
24c1c8edfb | ||
|
|
614adeed08 | ||
|
|
12a92703f0 | ||
|
|
288a9c3a7e | ||
|
|
2419693164 | ||
|
|
b8607f4bdc | ||
|
|
5c2289e283 | ||
|
|
deb8b62c12 | ||
|
|
8e984d3c3b | ||
|
|
eb0206575a | ||
|
|
44d273dd7c | ||
|
|
8029afc15a | ||
|
|
f5766e7661 | ||
|
|
88c096cd95 | ||
|
|
3005abff34 | ||
|
|
8b9c9581e4 | ||
|
|
9d85ae77fa | ||
|
|
693b349024 | ||
|
|
a82e0cdb37 | ||
|
|
80d0b2844e | ||
|
|
7f40245bb0 | ||
|
|
157fa34915 | ||
|
|
2a359f1a02 | ||
|
|
c3f41435da | ||
|
|
aa3a1e0237 | ||
|
|
68e53c426b | ||
|
|
fcb04c0ae7 | ||
|
|
b096fd2a24 | ||
|
|
cc94650bad | ||
|
|
1b2f75ca47 | ||
|
|
55064a548d | ||
|
|
cb051b8686 | ||
|
|
fae0e69619 | ||
|
|
d21e21ebf6 | ||
|
|
ff14dcaf56 | ||
|
|
83645e39ee | ||
|
|
73f4cdfb20 | ||
|
|
ec06c2fcb2 | ||
|
|
6c49de9512 | ||
|
|
ef16b33fd8 | ||
|
|
ba56fb89b3 | ||
|
|
395297e08b | ||
|
|
a20636347c | ||
|
|
170c3f0e9f | ||
|
|
b45f977de9 | ||
|
|
df4e87fdf2 | ||
|
|
40fa505146 | ||
|
|
9076b9f07e | ||
|
|
ac2b8650b8 | ||
|
|
5353336b9d | ||
|
|
78a9dc5835 | ||
|
|
57fff46dd8 | ||
|
|
59cc1e6ed9 | ||
|
|
748b113fe9 | ||
|
|
b920e94cc5 | ||
|
|
ea63773f4f | ||
|
|
4bea5020b1 | ||
|
|
0c5a5e6fc9 | ||
|
|
6b659ac9a9 | ||
|
|
b30b40f259 | ||
|
|
43680df2e2 | ||
|
|
dc621af59d | ||
|
|
5ea16b8ace | ||
|
|
b800b624ae | ||
|
|
9364e70986 | ||
|
|
4b03c7d9e0 | ||
|
|
937328a833 | ||
|
|
699fc2ac66 | ||
|
|
803712f0db | ||
|
|
2dbc8f33ea | ||
|
|
e2361baa37 | ||
|
|
1ec5aa8056 | ||
|
|
863e985bc6 | ||
|
|
b40cbc1811 | ||
|
|
5913bbb4c7 | ||
|
|
fc621bb31a | ||
|
|
d620566562 | ||
|
|
4d2d8c89f6 | ||
|
|
e325cc3b93 | ||
|
|
a5dc656656 | ||
|
|
b1799197fe | ||
|
|
4b37169735 | ||
|
|
2531595828 | ||
|
|
9394758ff9 | ||
|
|
713e59fb32 | ||
|
|
f0641f4113 | ||
|
|
7739339515 | ||
|
|
af556f0a75 | ||
|
|
90a87e0e93 | ||
|
|
ccb6bcb616 | ||
|
|
460163089b | ||
|
|
448b7a6c4d | ||
|
|
24c7171a73 | ||
|
|
379ab1c375 | ||
|
|
968c9529c8 | ||
|
|
f96ad7773f | ||
|
|
03a12e509e | ||
|
|
19d78117cb | ||
|
|
1a592beaea | ||
|
|
05c2ef7848 | ||
|
|
17c2767de5 | ||
|
|
006188e07d | ||
|
|
322358b0f0 | ||
|
|
3db0742889 | ||
|
|
d2849bfe9e | ||
|
|
ac8fae69c6 | ||
|
|
1881916c8e | ||
|
|
08952e7f22 | ||
|
|
eb0d0ebfc1 | ||
|
|
33d9e53327 | ||
|
|
53fa86ba4a | ||
|
|
b135ee423b | ||
|
|
25fb3cc6a0 | ||
|
|
b073e7d61c | ||
|
|
781142e8f2 | ||
|
|
3e87044901 | ||
|
|
cb01867ba6 | ||
|
|
1fcdb910a2 | ||
|
|
cb5df8e7e6 | ||
|
|
815cf0a6e4 | ||
|
|
72914aa6e1 | ||
|
|
404c9592ec | ||
|
|
c2371d29a6 | ||
|
|
25c03b677a | ||
|
|
b9c2e6afb9 | ||
|
|
3f29a03ba4 | ||
|
|
b4db394761 | ||
|
|
a85a9c52be | ||
|
|
6be3fde55c | ||
|
|
161028537c | ||
|
|
426fdbd7ee | ||
|
|
90060a290e | ||
|
|
b4c462a66c | ||
|
|
18d5697827 | ||
|
|
75d0943548 | ||
|
|
78b9efc04b | ||
|
|
6c2bb3ded8 | ||
|
|
312036587e | ||
|
|
0f97610473 | ||
|
|
c825c6af28 | ||
|
|
394eb7996c | ||
|
|
c7619f93dc | ||
|
|
ee67442965 | ||
|
|
f70488eab7 | ||
|
|
4cb51c3bba | ||
|
|
d77d76f184 | ||
|
|
b3224e9ad3 | ||
|
|
6bd457700e | ||
|
|
4b189b73dd | ||
|
|
c86050bc3b | ||
|
|
10cd949696 | ||
|
|
81d4dbbdba | ||
|
|
14197fe6c0 | ||
|
|
5cda2fc25b | ||
|
|
8b0c4dd29a | ||
|
|
2ab99dd2b4 | ||
|
|
3f69a044d3 | ||
|
|
76d0078497 | ||
|
|
523f272c58 | ||
|
|
475e347fe6 | ||
|
|
2bd6d63fe4 | ||
|
|
db14ac6e06 | ||
|
|
584678d67e | ||
|
|
503bba6516 | ||
|
|
815dc47846 | ||
|
|
e52cf7ae00 | ||
|
|
eb2d6e776f | ||
|
|
af85d6f81f | ||
|
|
d84ee23039 | ||
|
|
ea1d3f669b | ||
|
|
47b4248de2 | ||
|
|
33e9188612 | ||
|
|
2f6c9c8c0a | ||
|
|
7128789d48 | ||
|
|
19068da3f8 | ||
|
|
10851db1a9 | ||
|
|
1b8d6b85db | ||
|
|
653fa39cf7 | ||
|
|
7b0713675c | ||
|
|
52ed3913c8 | ||
|
|
6d23e72bd7 | ||
|
|
da545f0de7 | ||
|
|
8d9cf14608 | ||
|
|
bdc1551122 | ||
|
|
ba497cd5bf | ||
|
|
ca63946c5e | ||
|
|
0b6fa6b0fa | ||
|
|
12247790a6 | ||
|
|
4d245198a8 | ||
|
|
8f4e4fe77b | ||
|
|
1cafe1cf7a | ||
|
|
ba546d478e | ||
|
|
08d9567bdf | ||
|
|
a460ee3bb4 | ||
|
|
f005bae9e6 | ||
|
|
3279d52505 | ||
|
|
939c604381 | ||
|
|
d2061e29ef | ||
|
|
de62342054 | ||
|
|
2cf2aa4e78 | ||
|
|
672767d758 | ||
|
|
96c2c37eb8 | ||
|
|
ffb5d753cd | ||
|
|
7a7340ef1d | ||
|
|
b1bea45a48 | ||
|
|
01432d1f41 | ||
|
|
d6800370de | ||
|
|
8f547abf93 | ||
|
|
a02825fb1f | ||
|
|
5e3d133f8b | ||
|
|
48477290f0 | ||
|
|
6bf68dfb2e | ||
|
|
590a1a2fa0 | ||
|
|
697db6ca24 | ||
|
|
f028c2f320 | ||
|
|
32a1c18c5d | ||
|
|
4ec3fa1e22 | ||
|
|
26685dfadb | ||
|
|
0b327577e7 | ||
|
|
373f6c31c6 | ||
|
|
4f7d98930d | ||
|
|
1aa256252f | ||
|
|
5705cb59c8 | ||
|
|
c8b33e39c7 | ||
|
|
a9012bebea | ||
|
|
6100557a2b | ||
|
|
5709d8fbb0 | ||
|
|
5dc84926be | ||
|
|
b303c1b5c5 | ||
|
|
dfd2b48b94 | ||
|
|
0e1370a93f | ||
|
|
4ebf519af7 | ||
|
|
1386dc49d0 | ||
|
|
360aa1c8ec | ||
|
|
8e8d220539 | ||
|
|
9b7561ce8f | ||
|
|
c9c65e10d7 | ||
|
|
61b4dbe963 | ||
|
|
20a8db806c | ||
|
|
be1bca8dbe | ||
|
|
9c3ad64036 | ||
|
|
d392eb8dfc | ||
|
|
6f15f7096a | ||
|
|
c7e40f1321 | ||
|
|
376fbb9f73 | ||
|
|
769989127b | ||
|
|
4091cc3f03 | ||
|
|
82c2833490 | ||
|
|
634f031c56 | ||
|
|
7564acc939 | ||
|
|
bfaabd18d0 | ||
|
|
286eb02f4b | ||
|
|
5a9e0b6578 | ||
|
|
f77ed125de | ||
|
|
24676d6a87 | ||
|
|
d08af13a1c | ||
|
|
8c9627caa1 | ||
|
|
40485f10f0 | ||
|
|
b5ef3c37e4 | ||
|
|
874750f22b | ||
|
|
89f555cdcb | ||
|
|
4a7b263a9e | ||
|
|
753035cc57 | ||
|
|
32275ca788 | ||
|
|
58f63a17dc | ||
|
|
f355fe84d2 | ||
|
|
f3125f7cd7 | ||
|
|
6894dc9214 | ||
|
|
a59cbf1e41 | ||
|
|
d43bbcfae9 | ||
|
|
00cf4d1577 | ||
|
|
143e6e1e74 | ||
|
|
8f6127d19d | ||
|
|
7c5a617897 | ||
|
|
696cc9c6cd | ||
|
|
2c2ac626e5 | ||
|
|
0431c83423 | ||
|
|
d9ae2ca974 | ||
|
|
db007ad604 | ||
|
|
89ee4ce390 | ||
|
|
48fb9289b4 | ||
|
|
430bb6e7b9 | ||
|
|
bf81c13d47 | ||
|
|
bda75033a0 | ||
|
|
53f7bc9fe3 | ||
|
|
a2acbeb8b5 | ||
|
|
de89e88c90 | ||
|
|
d8d7e94aed | ||
|
|
a2bd17e935 | ||
|
|
abc42681af | ||
|
|
05a3905eb0 | ||
|
|
0c38ad65f7 | ||
|
|
a24b6ef51e | ||
|
|
13c42ab008 | ||
|
|
9db6ad55aa | ||
|
|
5d1eaccbbc | ||
|
|
0859908724 | ||
|
|
805998921a | ||
|
|
89aa4c1be2 | ||
|
|
b7c5a28fe0 | ||
|
|
8ffc255e93 | ||
|
|
87fd3193e0 | ||
|
|
d96a41aeaf | ||
|
|
43659b27a8 | ||
|
|
ec0fb88453 | ||
|
|
fcda32a417 | ||
|
|
d33ee9fa4d | ||
|
|
0dc5950334 | ||
|
|
4d3c2ea0b1 | ||
|
|
157ff8a451 | ||
|
|
a6df743476 | ||
|
|
4edf1e6b01 | ||
|
|
953d592561 | ||
|
|
fdf1ec9790 | ||
|
|
99670fd834 | ||
|
|
28d45d20da | ||
|
|
42f93dc9d2 | ||
|
|
f7ae1cb9f9 | ||
|
|
21ece50f73 | ||
|
|
08d284efad | ||
|
|
b23d196994 | ||
|
|
6b23295be9 | ||
|
|
7f7e2e21bf | ||
|
|
12a4202709 | ||
|
|
585f1f4101 | ||
|
|
8d533e4cd3 | ||
|
|
0c5dc52926 | ||
|
|
62276e4843 | ||
|
|
a8d205d8f6 | ||
|
|
7c1bb5c6f9 | ||
|
|
bdedb651d4 | ||
|
|
e62edc3fee | ||
|
|
1dce4d6ece | ||
|
|
4eb5ae9087 | ||
|
|
b945bb69da | ||
|
|
44b2f55b1f | ||
|
|
9c1bbdd1ae | ||
|
|
e68a194066 | ||
|
|
8f4a5397c7 | ||
|
|
ec42e83d03 | ||
|
|
0505bc90c4 | ||
|
|
5e62177da5 | ||
|
|
2394887cda | ||
|
|
cd6f1ccca7 | ||
|
|
f528cb3991 | ||
|
|
493fec9ced | ||
|
|
c7166479a9 | ||
|
|
21f8d645be | ||
|
|
aafc352dd0 | ||
|
|
c1df470815 | ||
|
|
de2a159024 | ||
|
|
4f332566aa | ||
|
|
be3d3196ae | ||
|
|
7efc19fec7 | ||
|
|
209778db2f | ||
|
|
fa86c01eab | ||
|
|
26af37422d | ||
|
|
b29e600842 | ||
|
|
2035518278 | ||
|
|
63806dec01 | ||
|
|
63e845904e | ||
|
|
702b8547d9 | ||
|
|
f928309043 | ||
|
|
9cffb92ef5 | ||
|
|
044bd1dffc | ||
|
|
c7194cb349 | ||
|
|
12dd58dc01 | ||
|
|
9018536732 | ||
|
|
7e8687ffa8 | ||
|
|
7f6114fb5d | ||
|
|
c144bc1bcc | ||
|
|
576a6f227b | ||
|
|
173230dd06 | ||
|
|
955fdb59f8 | ||
|
|
8c366f69f7 | ||
|
|
6ed5979c8f | ||
|
|
a5f8e973fa | ||
|
|
aa6f4213ff | ||
|
|
3c2b06a81b | ||
|
|
607204a85c | ||
|
|
dbe4c21ca1 | ||
|
|
13d389360d | ||
|
|
aa690c0985 | ||
|
|
6075ecf89b | ||
|
|
cabdaac7a6 | ||
|
|
8066f71ef5 | ||
|
|
aee7cacaf4 | ||
|
|
70cc5c5218 | ||
|
|
c8c954617e | ||
|
|
f3b6be53e0 | ||
|
|
59b0bca33c | ||
|
|
e94f1caab3 | ||
|
|
2701a9e8f0 | ||
|
|
4d196a0b75 | ||
|
|
e7c797e195 | ||
|
|
58ae338ece | ||
|
|
5eaabf4716 | ||
|
|
de1758b847 | ||
|
|
aabc40e4c0 | ||
|
|
3175b2bcd7 | ||
|
|
ab73763b4f | ||
|
|
dc9fbe1cd9 | ||
|
|
d79dbd890f | ||
|
|
3e78cde55e | ||
|
|
a6c2421ddc | ||
|
|
e6fa446b19 | ||
|
|
59cb3a01fb | ||
|
|
9203299eb2 | ||
|
|
8f30b94c97 | ||
|
|
db1c72a86f | ||
|
|
78df984b55 | ||
|
|
68dcadd52b | ||
|
|
0b5ceae185 | ||
|
|
525697a4ea | ||
|
|
4bedb5496b | ||
|
|
ee4b273710 | ||
|
|
3586722774 | ||
|
|
afa200905c | ||
|
|
751f39f854 | ||
|
|
d4d0005811 | ||
|
|
cf360f0eb1 | ||
|
|
52991d097a | ||
|
|
aeb2e89755 | ||
|
|
2baead04ef | ||
|
|
8ea9f8c10f | ||
|
|
4320edaee6 | ||
|
|
acc7085c66 | ||
|
|
4e427cf208 | ||
|
|
072e6e6405 | ||
|
|
930b11b821 | ||
|
|
8e01e9a0ab | ||
|
|
b076afb811 | ||
|
|
33223e5af0 | ||
|
|
e514149340 | ||
|
|
e752074886 | ||
|
|
4cb6be69e0 | ||
|
|
997b27dd19 | ||
|
|
3071ecd7f7 | ||
|
|
9c1f09c563 | ||
|
|
5c23070292 | ||
|
|
31f04428ca | ||
|
|
0b16c79274 | ||
|
|
c29e859c4a | ||
|
|
1e2c131cc8 | ||
|
|
80795ffb33 | ||
|
|
5900f47829 | ||
|
|
56ca5cc721 | ||
|
|
58db233697 | ||
|
|
46255e9ab7 | ||
|
|
6a6216a720 | ||
|
|
28348ca08e | ||
|
|
6347759506 | ||
|
|
0949c61bc3 | ||
|
|
87a42121f9 | ||
|
|
6914922a3e | ||
|
|
26f7f78569 | ||
|
|
1e00c7212a | ||
|
|
96ab83949a | ||
|
|
d24862dc84 | ||
|
|
d48f5a3681 | ||
|
|
1baf32f6bf | ||
|
|
664e310323 | ||
|
|
1c4e2fb7dd | ||
|
|
d56db56d2b | ||
|
|
fd974a153c | ||
|
|
0259497329 | ||
|
|
87dc698f31 |
Binary file not shown.
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
installed-prefs
|
||||
.installed-prefs
|
||||
*.swp
|
||||
*~
|
||||
*.bak
|
||||
|
||||
31
.gitmodules
vendored
Normal file
31
.gitmodules
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
[submodule "dotfiles/vim/pack/matir/opt/solarized8"]
|
||||
path = dotfiles/vim/pack/matir/opt/solarized8
|
||||
url = https://github.com/lifepillar/vim-solarized8.git
|
||||
fetchRecurseSubmodules = true
|
||||
[submodule "dotfiles/vim/pack/matir/start/surround"]
|
||||
path = dotfiles/vim/pack/matir/start/surround
|
||||
url = https://github.com/tpope/vim-surround.git
|
||||
fetchRecurseSubmodules = true
|
||||
[submodule "dotfiles/vim/pack/matir/start/editorconfig"]
|
||||
path = dotfiles/vim/pack/matir/start/editorconfig
|
||||
url = https://github.com/editorconfig/editorconfig-vim.git
|
||||
fetchRecurseSubmodules = true
|
||||
[submodule "dotfiles/vim/pack/matir/start/fugitive"]
|
||||
path = dotfiles/vim/pack/matir/start/fugitive
|
||||
url = https://github.com/tpope/vim-fugitive
|
||||
fetchRecurseSubmodules = true
|
||||
[submodule "dotfiles/vim/pack/matir/start/ctrlp"]
|
||||
path = dotfiles/vim/pack/matir/start/ctrlp
|
||||
url = https://github.com/ctrlpvim/ctrlp.vim.git
|
||||
fetchRecurseSubmodules = true
|
||||
[submodule "dotfiles/vim/pack/matir/start/vim-go"]
|
||||
path = dotfiles/vim/pack/matir/start/vim-go
|
||||
url = https://github.com/fatih/vim-go.git
|
||||
fetchRecurseSubmodules = true
|
||||
[submodule "dotfiles/tmux/tmux-logging"]
|
||||
path = dotfiles/tmux/tmux-logging
|
||||
url = https://github.com/tmux-plugins/tmux-logging.git
|
||||
fetchRecurseSubmodules = true
|
||||
[submodule "dotfiles/vim/pack/matir/start/syntastic"]
|
||||
path = dotfiles/vim/pack/matir/start/syntastic
|
||||
url = https://github.com/vim-syntastic/syntastic.git
|
||||
11
README.md
11
README.md
@@ -1,5 +1,5 @@
|
||||
|
||||
### About ###
|
||||
|
||||
This is a repository of configuration files that I like to have on all the
|
||||
machines that I use. I can just clone the repository and run "repo/setup.sh"
|
||||
and get most things setup the way I like them.
|
||||
@@ -14,12 +14,14 @@ This now uses [git-crypt](https://github.com/AGWA/git-crypt) to protect
|
||||
I still wouldn't check in anything terribly sensitive, like private keys.
|
||||
|
||||
### Usefulness ###
|
||||
|
||||
Mostly I post this to github so I can quickly grab the things I want, but it
|
||||
might also be useful to others. Feel free to raise an issue if you have any
|
||||
questions. I don't anticipating taking merge requests -- make your own
|
||||
dotfiles. ;)
|
||||
|
||||
### Options ###
|
||||
|
||||
```
|
||||
BASEDIR: Where the skel framework is installed. Defaults to $HOME/.skel
|
||||
MINIMAL: Don't do things that require git clones or installation of anything
|
||||
@@ -31,3 +33,10 @@ INSTALL_PKGS: Install common packages, if on a Debian-like system.
|
||||
(Defaults to opposite of $MINIMAL.)
|
||||
SAVE: Save the install options to ${BASEDIR}/installed-prefs
|
||||
```
|
||||
|
||||
### TODO ###
|
||||
|
||||
- [X] Re-do the installation of packages.
|
||||
- [X] Make manual installation of sets easy/possible.
|
||||
- [X] Make missing packages not cause a full set failure.
|
||||
- [X] Allow comments and blank lines. in packages
|
||||
|
||||
35
bin/_install_apt_proxy.sh
Executable file
35
bin/_install_apt_proxy.sh
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
||||
if test -f /etc/apt/apt.conf.d/90-proxy ; then
|
||||
echo "Looks already setup."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cat >/etc/apt/proxy-detect <<'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
PROXY=192.168.60.10:3142
|
||||
|
||||
if ! test -x /bin/nc ; then
|
||||
echo DIRECT
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if nc -w 2 -z ${PROXY/:/ } ; then
|
||||
echo ${PROXY}
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo DIRECT
|
||||
EOF
|
||||
|
||||
chmod 755 /etc/apt/proxy-detect
|
||||
|
||||
cat >/etc/apt/apt.conf.d/90-proxy <<'EOF'
|
||||
Acquire::http::Proxy-Auto-Detect "/etc/apt/proxy-detect";
|
||||
EOF
|
||||
|
||||
echo "Setup APT Proxying."
|
||||
5
bin/_install_i3.sh
Executable file
5
bin/_install_i3.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
apt-get install -y \
|
||||
i3 i3lock xss-lock rxvt-unicode-256color fonts-inconsolata scrot \
|
||||
xautolock xbacklight i3status dex libnotify-bin
|
||||
16
bin/autostart.py
Executable file
16
bin/autostart.py
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/python
|
||||
"""
|
||||
Launch desktop files from ~/.config/autostart
|
||||
"""
|
||||
|
||||
import glob
|
||||
import os.path
|
||||
from gi.repository import Gio
|
||||
|
||||
dirname = os.path.expanduser('~/.config/autostart')
|
||||
for desktop in glob.glob(os.path.join(dirname, '*.desktop')):
|
||||
try:
|
||||
fp = Gio.DesktopAppInfo.new_from_filename(desktop)
|
||||
except TypeError:
|
||||
continue
|
||||
fp.launch_uris([], None)
|
||||
@@ -26,5 +26,8 @@ function verify_dest {
|
||||
|
||||
verify_dest "$DEST"
|
||||
|
||||
rsync -Hax --delete --exclude-from="$HOME/.rsync_ignore" \
|
||||
time nice rsync -Hax --delete --exclude-from="$HOME/.rsync_ignore" \
|
||||
--delete-excluded "${HOME}/" "$DEST"
|
||||
echo "Backup completed..."
|
||||
time sync
|
||||
echo "Run finished, safe to unmount."
|
||||
|
||||
32
bin/burp
32
bin/burp
@@ -1,32 +0,0 @@
|
||||
#!/bin/zsh
|
||||
|
||||
_start_burp() {
|
||||
setopt localoptions nullglob numeric_glob_sort
|
||||
local NO_DOWNLOAD
|
||||
local JAR
|
||||
if (( ${+argv[(r)*no-download]} )) ; then
|
||||
NO_DOWNLOAD=1
|
||||
shift
|
||||
else
|
||||
NO_DOWNLOAD=0
|
||||
fi
|
||||
JAR=(${HOME}/bin/burpsuite*jar(On[1])) 2>/dev/null
|
||||
if [ -z $JAR ] ; then
|
||||
if (( $NO_DOWNLOAD )) ; then
|
||||
echo "Not downloading, --no-download specified" >&2
|
||||
return 1
|
||||
fi
|
||||
echo "Burp JAR not found in ${HOME}/bin. Attempting to download free edition." >&2
|
||||
wget -q --content-disposition --no-server-response -P ${HOME}/bin \
|
||||
https://portswigger.net/DownloadUpdate.ashx\?Product\=Free
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Download failed." >&2
|
||||
return 1
|
||||
fi
|
||||
burp --no-download "$@"
|
||||
return $?
|
||||
else
|
||||
java -jar ${JAR} "$@"
|
||||
fi
|
||||
}
|
||||
_start_burp
|
||||
11
bin/cyberchef
Executable file
11
bin/cyberchef
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -u
|
||||
|
||||
CHEF_FILE=${HOME}/tools/cyberchef/cyberchef.html
|
||||
|
||||
if [ ! -f ${CHEF_FILE} ] ; then
|
||||
${HOME}/bin/install_tool cyberchef
|
||||
fi
|
||||
|
||||
exec xdg-open ${CHEF_FILE}
|
||||
22
bin/disk-benchmark
Executable file
22
bin/disk-benchmark
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ue
|
||||
|
||||
FILENAME=${1}
|
||||
BENCHMARK_SIZE=${BENCHMARK_SIZE:-1000m}
|
||||
|
||||
if [ -f ${FILENAME} ] ; then
|
||||
echo "File ${FILENAME} already exists!" >/dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap "test -f ${FILENAME} && rm -f ${FILENAME}" EXIT
|
||||
|
||||
fio --loops=5 --size=${BENCHMARK_SIZE} --filename=${FILENAME} \
|
||||
--stonewall --ioengine=libaio --direct=1 \
|
||||
--name=Seqread --bs=1m --rw=read \
|
||||
--name=Seqwrite --bs=1m --rw=write \
|
||||
--name=512Kread --bs=512k --rw=randread \
|
||||
--name=512Kwrite --bs=512k --rw=randwrite \
|
||||
--name=4kQD32read --bs=4k --iodepth=32 --rw=randread \
|
||||
--name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite
|
||||
21
bin/google-chrome-burp
Executable file
21
bin/google-chrome-burp
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
CHROME_BINS="google-chrome-beta google-chrome"
|
||||
for bin in ${CHROME_BINS} ; do
|
||||
if command -v ${bin} >/dev/null 2>&1 ; then
|
||||
CHROME=$(command -v ${bin})
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if test -z "${CHROME}" ; then
|
||||
echo "Chrome not found!" >/dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Set alternate HOME to use alternate NSS DB
|
||||
export HOME=${HOME}/.chrome-pentest
|
||||
mkdir -p ${HOME}
|
||||
|
||||
# Launch chrome for burp
|
||||
exec ${CHROME} --user-data-dir=${HOME}/chrome-pentest --proxy-server=127.0.0.1:8080
|
||||
11
bin/i3lock.sh
Executable file
11
bin/i3lock.sh
Executable file
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
LOCKTIME="${SCREENSAVER_MIN:-5}"
|
||||
LOCKER="i3lock -c 000000"
|
||||
# intentionally want word splitting below
|
||||
/usr/bin/xss-lock -- ${LOCKER} &
|
||||
exec /usr/bin/xautolock \
|
||||
-time "${LOCKTIME}" \
|
||||
-detectsleep \
|
||||
-locker "${LOCKER}" \
|
||||
-notify 30 \
|
||||
-notifier "notify-send -u critical -t 10000 -- 'LOCKING SCREEN IN 30 SECONDS'"
|
||||
367
bin/install_tool
Executable file
367
bin/install_tool
Executable file
@@ -0,0 +1,367 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ue
|
||||
|
||||
REINSTALL=0
|
||||
PACKAGES=1
|
||||
|
||||
while getopts -- "-:" a ; do
|
||||
# shellcheck disable=SC2154
|
||||
case "${a}" in
|
||||
-)
|
||||
case "${OPTARG}" in
|
||||
reinstall)
|
||||
REINSTALL=1
|
||||
;;
|
||||
no-packages)
|
||||
PACKAGES=0
|
||||
;;
|
||||
*)
|
||||
echo "Unknown long option ${OPTARG}" >/dev/stderr
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
echo "Unknown short option ${OPTARG}" >/dev/stderr
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $((OPTIND-1))
|
||||
|
||||
if [ $# -ne 1 ] ; then
|
||||
echo "Usage: ${0} <tool>" >/dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
TOOL=${1}
|
||||
|
||||
function die {
|
||||
echo "$@" >/dev/stderr
|
||||
exit 1
|
||||
}
|
||||
|
||||
function install_pkgs {
|
||||
if [ ${PACKAGES} -eq 0 ] ; then
|
||||
return 0
|
||||
fi
|
||||
# TODO: check if packages are already installed
|
||||
if [ "$(id -u)" -ne "0" ] ; then
|
||||
sudo apt-get -y install "$@" || (
|
||||
echo -n "Unable to install packages, please ensure these " >/dev/stderr
|
||||
echo "are installed, then run with --no-packages." >/dev/stderr
|
||||
echo "$@"
|
||||
false )
|
||||
return 0
|
||||
fi
|
||||
apt-get -y install "$@"
|
||||
}
|
||||
|
||||
function download {
|
||||
SRC=${1}
|
||||
DST=${2}
|
||||
echo -n "Downloading ${SRC} to ${DST}..." >&2
|
||||
# TODO: consider curl instead?
|
||||
wget --no-server-response -q -O "${DST}" --content-disposition "${SRC}"
|
||||
echo " done." >&2
|
||||
}
|
||||
|
||||
function check_sudo {
|
||||
sudo -l >/dev/null
|
||||
}
|
||||
|
||||
function add_bin_symlink {
|
||||
local TARGET NAME BINDIR
|
||||
TARGET="${1}"
|
||||
NAME="${2:-$(basename "${1}")}"
|
||||
BINDIR="${HOME}/bin/tools/"
|
||||
mkdir -p -- "${BINDIR}"
|
||||
ln -sf "${DESTDIR}/${TARGET}" "${BINDIR}/${NAME}"
|
||||
}
|
||||
|
||||
mkdir -p "${HOME}/tools"
|
||||
|
||||
DESTDIR="${HOME}/tools/${TOOL}"
|
||||
|
||||
function makedest {
|
||||
if [ -d "${DESTDIR}" ] ; then
|
||||
if [ "${REINSTALL}" -eq 1 ] ; then
|
||||
rm -ri "${DESTDIR}"
|
||||
else
|
||||
echo "${DESTDIR} exists but not reinstalling." >/dev/stderr
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
mkdir -p "${DESTDIR}"
|
||||
}
|
||||
|
||||
function makedest_or_die {
|
||||
makedest || die "Aborting."
|
||||
}
|
||||
|
||||
# Begin main tool selection
|
||||
case ${TOOL} in
|
||||
john)
|
||||
makedest_or_die
|
||||
install_pkgs libssl-dev git build-essential yasm libgmp-dev libpcap-dev \
|
||||
pkg-config libbz2-dev libopenmpi-dev openmpi-bin libnss3-dev \
|
||||
libkrb5-dev libgmp-dev
|
||||
jtemp=$(mktemp -d)
|
||||
git clone https://github.com/magnumripper/JohnTheRipper.git "${jtemp}/john"
|
||||
cd "${jtemp}/john/src"
|
||||
./configure && make -sj2
|
||||
cp -r "${jtemp}"/john/run/* "${DESTDIR}"
|
||||
rm -rf "${jtemp}"
|
||||
# Persistent files
|
||||
mkdir -p "${HOME}/.john"
|
||||
touch "${HOME}/.john/john.pot"
|
||||
ln -sf "${HOME}/.john/*" "${DESTDIR}"
|
||||
add_bin_symlink john
|
||||
;;
|
||||
wordlists)
|
||||
makedest
|
||||
download \
|
||||
http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2 \
|
||||
"${DESTDIR}/rockyou.txt.bz2"
|
||||
bunzip2 "${DESTDIR}/rockyou.txt.bz2"
|
||||
download \
|
||||
http://downloads.skullsecurity.org/passwords/phpbb.txt.bz2 \
|
||||
"${DESTDIR}/phpbb.txt.bz2"
|
||||
bunzip2 "${DESTDIR}/phpbb.txt.bz2"
|
||||
download \
|
||||
http://downloads.skullsecurity.org/passwords/hak5.txt.bz2 \
|
||||
"${DESTDIR}/hak5.txt.bz2"
|
||||
bunzip2 "${DESTDIR}/hak5.txt.bz2"
|
||||
;;
|
||||
seclists)
|
||||
git clone https://github.com/danielmiessler/SecLists.git "${DESTDIR}"
|
||||
;;
|
||||
werdlists)
|
||||
git clone --depth 1 https://github.com/decal/werdlists.git "${DESTDIR}"
|
||||
;;
|
||||
gcloud)
|
||||
makedest_or_die
|
||||
gbase="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/"
|
||||
# TODO: find a way to make this version independent
|
||||
gsdk="google-cloud-sdk-277.0.0-linux-x86_64.tar.gz"
|
||||
download "${gbase}${gsdk}" /tmp/gcloud.tar.gz
|
||||
tar zxf /tmp/gcloud.tar.gz --strip-components=1 -C "${DESTDIR}"
|
||||
rm /tmp/gcloud.tar.gz
|
||||
add_bin_symlink bin/gcloud
|
||||
;;
|
||||
android-sdk)
|
||||
# TODO: find a way to make this version independent
|
||||
asdk="https://dl.google.com/android/repository/tools_r25.2.3-linux.zip"
|
||||
download ${asdk} /tmp/android-tools.zip
|
||||
unzip -d "${DESTDIR}" /tmp/android-tools.zip
|
||||
rm /tmp/android-tools.zip
|
||||
# Install components
|
||||
"${DESTDIR}/tools/bin/sdkmanager" "emulator" "platform-tools"
|
||||
;;
|
||||
burp)
|
||||
# Install latest burp free
|
||||
makedest
|
||||
if ! download \
|
||||
https://portswigger.net/DownloadUpdate.ashx\?Product=Free \
|
||||
"${DESTDIR}/burp-free.jar" ; then
|
||||
echo "Download failed." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [ -x /usr/bin/jarwrapper ] ; then
|
||||
# We have binfmt support for jar, so add to bin
|
||||
chmod +x "${DESTDIR}"/*.jar
|
||||
ln -sf "${DESTDIR}"/*.jar "${HOME}/bin/burp"
|
||||
fi
|
||||
;;
|
||||
mitmproxy)
|
||||
makedest_or_die
|
||||
ver=$(python3 -c 'from urllib import request; import json; print(json.load(request.urlopen("https://api.github.com/repos/mitmproxy/mitmproxy/releases/latest"))["tag_name"].replace("v",""))')
|
||||
download \
|
||||
"https://snapshots.mitmproxy.org/${ver}/mitmproxy-${ver}-linux.tar.gz" \
|
||||
/tmp/mitmproxy.tar.gz
|
||||
tar zx -C "${DESTDIR}" -f /tmp/mitmproxy.tar.gz
|
||||
rm /tmp/mitmproxy.tar.gz
|
||||
add_bin_symlink mitmproxy
|
||||
add_bin_symlink mitmweb
|
||||
add_bin_symlink mitmdump
|
||||
;;
|
||||
esp)
|
||||
makedest_or_die
|
||||
src="https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz"
|
||||
download ${src} /tmp/esp32.tar.gz
|
||||
tar zx -C "${DESTDIR}" -f /tmp/esp32.tar.gz
|
||||
rm /tmp/esp32.tar.gz
|
||||
git clone --recursive https://github.com/espressif/esp-idf.git "${DESTDIR}/esp-idf"
|
||||
;;
|
||||
dex2jar)
|
||||
makedest_or_die
|
||||
src="https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip"
|
||||
download ${src} /tmp/dex2jar.zip
|
||||
tmpd=$(mktemp -d)
|
||||
unzip -d "${tmpd}" /tmp/dex2jar.zip
|
||||
mv "${tmpd}"/* "${DESTDIR}"
|
||||
rm /tmp/dex2jar.zip
|
||||
rm -rf "${tmpd}"
|
||||
rm "${DESTDIR}"/*.bat
|
||||
chmod +x "${DESTDIR}"/*.sh
|
||||
;;
|
||||
proxmark3)
|
||||
install_pkgs p7zip git build-essential libreadline5 libreadline-dev \
|
||||
libusb-0.1-4 libusb-dev libqt4-dev perl pkg-config wget libncurses5-dev \
|
||||
gcc-arm-none-eabi libstdc++-arm-none-eabi-newlib
|
||||
src="https://github.com/Proxmark/proxmark3.git"
|
||||
git clone "${src}" "${DESTDIR}"
|
||||
cd "${DESTDIR}"
|
||||
make -sj2
|
||||
check_sudo && sudo /bin/sh -c \
|
||||
"cp -rf driver/78-mm-usb-device-blacklist.rules \
|
||||
/etc/udev/rules.d/77-mm-usb-device-blacklist.rules &&
|
||||
udevadm control --reload-rules"
|
||||
;;
|
||||
cyberchef)
|
||||
makedest
|
||||
src=$(python3 -c 'from urllib import request; import json; print(filter(lambda x: x["name"]=="cyberchef.htm", json.load(request.urlopen("https://api.github.com/repos/gchq/CyberChef/releases/latest"))["assets"])[0]["browser_download_url"])')
|
||||
download "${src}" "${DESTDIR}/cyberchef.html"
|
||||
;;
|
||||
apktool)
|
||||
makedest_or_die
|
||||
download \
|
||||
https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool \
|
||||
"${DESTDIR}/apktool"
|
||||
download \
|
||||
https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.3.3.jar \
|
||||
"${DESTDIR}/apktool.jar"
|
||||
chmod +x "${DESTDIR}/apktool"
|
||||
add_bin_symlink apktool
|
||||
;;
|
||||
ptf)
|
||||
makedest_or_die
|
||||
src="https://github.com/trustedsec/ptf.git"
|
||||
git clone "${src}" "${DESTDIR}"
|
||||
;;
|
||||
pwndbg)
|
||||
if ! command -v gdb > /dev/null 2>&1 ; then
|
||||
echo 'No gdb available!' >/dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
git clone --depth 1 -b stable https://github.com/pwndbg/pwndbg.git "${DESTDIR}"
|
||||
PY_PACKAGES=${DESTDIR}/vendor
|
||||
mkdir -p "${PY_PACKAGES}"
|
||||
PYVER=$(gdb -batch -q --nx -ex 'pi import platform; print(".".join(platform.python_version_tuple()[:2]))')
|
||||
PYTHON=$(gdb -batch -q --nx -ex 'pi import sys; print(sys.executable)')
|
||||
PYTHON="${PYTHON}${PYVER}"
|
||||
"${PYTHON}" -m pip install --target "${PY_PACKAGES}" -Ur "${DESTDIR}/requirements.txt"
|
||||
"${PYTHON}" -m pip install --target "${PY_PACKAGES}" -U capstone unicorn
|
||||
# capstone package is broken
|
||||
cp "${PY_PACKAGES}/usr/lib/*/dist-packages/capstone/libcapstone.so" "${PY_PACKAGES}/capstone"
|
||||
;;
|
||||
gef)
|
||||
makedest_or_die
|
||||
if ! command -v gdb > /dev/null 2>&1 ; then
|
||||
echo 'No gdb available!' >/dev/stderr
|
||||
exit 1
|
||||
fi
|
||||
download \
|
||||
https://github.com/hugsy/gef/raw/master/gef.py \
|
||||
"${DESTDIR}/gef.py"
|
||||
;;
|
||||
aflplusplus)
|
||||
install_pkgs libtool-bin libglib2.0-dev libpixman-1-dev clang clang-tools \
|
||||
llvm
|
||||
git clone "https://github.com/vanhauser-thc/AFLplusplus" "${DESTDIR}"
|
||||
make -C "${DESTDIR}" distrib
|
||||
;;
|
||||
exploitdb)
|
||||
if test -d "${DESTDIR}" ; then
|
||||
echo "Already installed, updating instead..." >/dev/stderr
|
||||
"${DESTDIR}/searchsplit" -u
|
||||
else
|
||||
git clone --depth 1 \
|
||||
https://github.com/offensive-security/exploitdb.git \
|
||||
"${DESTDIR}"
|
||||
add_bin_symlink searchsploit
|
||||
cp "${DESTDIR}/.searchsploit_rc" "${HOME}/.searchsploit_rc"
|
||||
sed -i "s|/opt/exploitdb|${DESTDIR}|" "${HOME}/.searchsploit_rc"
|
||||
fi
|
||||
;;
|
||||
cura)
|
||||
makedest
|
||||
ver=$(python3 -c 'from urllib import request; import json; print(json.load(request.urlopen("https://api.github.com/repos/Ultimaker/Cura/releases/latest"))["name"].replace("v",""))')
|
||||
echo "Latest Cura is ${ver}"
|
||||
download \
|
||||
"https://github.com/Ultimaker/Cura/releases/download/${ver}/Cura-${ver}.AppImage" \
|
||||
"${DESTDIR}/Cura.AppImage"
|
||||
chmod +x "${DESTDIR}/Cura.AppImage"
|
||||
add_bin_symlink "Cura.AppImage" cura
|
||||
;;
|
||||
rr)
|
||||
ver=$(python3 -c 'from urllib import request; import json; print(json.load(request.urlopen("https://api.github.com/repos/mozilla/rr/releases/latest"))["name"])')
|
||||
echo "Latest rr is ${ver}"
|
||||
download \
|
||||
"https://github.com/mozilla/rr/releases/download/${ver}/rr-${ver}-Linux-$(uname -m).deb" \
|
||||
"/tmp/rr.deb"
|
||||
sudo dpkg -i /tmp/rr.deb
|
||||
;;
|
||||
nmap-parse-output)
|
||||
git clone --depth 1 \
|
||||
https://github.com/ernw/nmap-parse-output.git \
|
||||
"${DESTDIR}"
|
||||
add_bin_symlink nmap-parse-output
|
||||
cat <<EOF >"${HOME}/.zshrc.d/99-nmap-parse-output.zsh"
|
||||
if test -d ${DESTDIR} ; then
|
||||
autoload bashcompinit
|
||||
bashcompinit
|
||||
source ${DESTDIR}/_nmap-parse-output
|
||||
fi
|
||||
EOF
|
||||
;;
|
||||
logiops)
|
||||
install_pkgs cmake libevdev-dev libudev-dev libconfig++-dev checkinstall
|
||||
git clone "https://github.com/PixlOne/logiops.git" "${DESTDIR}"
|
||||
mkdir -p "${DESTDIR}/build"
|
||||
cd "${DESTDIR}/build"
|
||||
cmake ..
|
||||
make
|
||||
sudo checkinstall --pkgname logiops --maintainer "${USER}" -y
|
||||
;;
|
||||
aws)
|
||||
DN=$(mktemp -d)
|
||||
cd "${DN}"
|
||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "${DN}/awscliv2.zip"
|
||||
unzip "${DN}/awscliv2.zip"
|
||||
mv "${DN}/aws/dist" "${DESTDIR}"
|
||||
add_bin_symlink aws
|
||||
rm -rf ${DN}
|
||||
;;
|
||||
tmpmail)
|
||||
install_pkgs curl w3m jq
|
||||
mkdir -p ${DESTDIR}
|
||||
curl -L "https://git.io/tmpmail" > ${DESTDIR}/tmpmail
|
||||
chmod +x ${DESTDIR}/tmpmail
|
||||
add_bin_symlink tmpmail
|
||||
;;
|
||||
gf)
|
||||
install_pkgs golang-go silversearcher-ag
|
||||
go get -u github.com/tomnomnom/gf
|
||||
mkdir -p ${HOME}/.config
|
||||
git clone https://github.com/Matir/gf-patterns.git ${HOME}/.config/gf
|
||||
;;
|
||||
ffuf)
|
||||
go get -u github.com/ffuf/ffuf
|
||||
;;
|
||||
gobuster)
|
||||
go get -u github.com/OJ/gobuster
|
||||
;;
|
||||
amass)
|
||||
go get -u github.com/OWASP/Amass/cmd/amass
|
||||
;;
|
||||
*)
|
||||
echo "Unknown tool: ${TOOL}" >/dev/stderr
|
||||
echo "Options:" >/dev/stderr
|
||||
awk 'BEGIN {s=0;FS=")"};/main tool selection/{s=1};/^\s+\w+)$/{if(s==1){print $1}}' "$0" | sort | while read -r opt; do
|
||||
echo -e "\\t${opt}" >/dev/stderr
|
||||
done
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1,28 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
export NAME=$(basename "$0")
|
||||
export BASE="/opt/metasploit" # TODO: search this path
|
||||
export BASE="/opt/metasploit-framework" # TODO: search this path
|
||||
unset GEM_PATH
|
||||
|
||||
# Autogen'd
|
||||
. ${BASE}/scripts/setenv.sh
|
||||
|
||||
# Use Pro's bundled gems instead of the gemcache
|
||||
export MSF_BUNDLE_GEMS=0
|
||||
export BUNDLE_GEMFILE=${BASE}/apps/pro/Gemfile
|
||||
|
||||
# Set a flag so Gemfile can limit gems
|
||||
export FRAMEWORK_FLAG=true
|
||||
|
||||
export MSF_DATABASE_CONFIG=${BASE}/apps/pro/ui/config/database.yml
|
||||
export TERMINFO=${BASE}/common/share/terminfo/
|
||||
|
||||
# Check for ruby scripts such as msfconsole directly to avoid having to add
|
||||
# msf3 to the path.
|
||||
if [ -f "${BASE}/apps/pro/msf3/${NAME}" ]; then
|
||||
exec ${BASE}/apps/pro/msf3/${NAME} "$@"
|
||||
fi
|
||||
if [ -f "${BASE}/apps/pro/msf3/tools/exploit/${NAME}.rb" ]; then
|
||||
exec ${BASE}/apps/pro/msf3/tools/exploit/${NAME}.rb "$@"
|
||||
if [ -f "${BASE}/bin/${NAME}" ] ; then
|
||||
exec "${BASE}/bin/${NAME}" "$@"
|
||||
fi
|
||||
|
||||
exec ${NAME} "$@"
|
||||
if [ -f "${BASE}/embedded/framework/tools/exploit/${NAME}.rb" ]; then
|
||||
exec ${BASE}/embedded/bin/ruby \
|
||||
"${BASE}/embedded/framework/tools/exploit/${NAME}.rb" "$@"
|
||||
fi
|
||||
|
||||
echo "Couldn't find script." >&2
|
||||
exit 1
|
||||
|
||||
22
bin/nvidia_hold.sh
Executable file
22
bin/nvidia_hold.sh
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
function list_nvidia_installed {
|
||||
dpkg-query -l '*nvidia*' | grep '^[hi]i' | awk '{print $2}'
|
||||
}
|
||||
|
||||
function hold_or_unhold {
|
||||
apt-mark "${1:-hold}" $(list_nvidia_installed)
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
hold|h)
|
||||
hold_or_unhold hold
|
||||
;;
|
||||
unhold|u)
|
||||
hold_or_unhold unhold
|
||||
;;
|
||||
*)
|
||||
echo "$0 <hold|unhold>" >/dev/stderr
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
46
bin/pactl_helper
Executable file
46
bin/pactl_helper
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
function get_active_sink {
|
||||
pactl list short sinks | grep RUNNING | awk '{print $2}'
|
||||
}
|
||||
|
||||
function get_active_source {
|
||||
pactl list short sources | grep RUNNING | awk '{print $2}'
|
||||
}
|
||||
|
||||
function get_default_sink {
|
||||
pactl info | grep '^Default Sink:' | awk '{print $NF}'
|
||||
}
|
||||
|
||||
function get_default_source {
|
||||
pactl info | grep '^Default Source:' | awk '{print $NF}'
|
||||
}
|
||||
|
||||
function micmute {
|
||||
MODE=${1:-toggle}
|
||||
pactl set-source-mute $(get_default_source) ${MODE}
|
||||
}
|
||||
|
||||
function mute {
|
||||
MODE=${1:-toggle}
|
||||
pactl set-sink-mute $(get_default_sink) ${MODE}
|
||||
}
|
||||
|
||||
function volume {
|
||||
VOL="${1}"
|
||||
if test -z "${VOL}" ; then
|
||||
echo "Need volume spec!"
|
||||
exit 1
|
||||
fi
|
||||
pactl set-sink-volume $(get_default_sink) "${VOL}"
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
mute|micmute|volume)
|
||||
$*
|
||||
;;
|
||||
*)
|
||||
echo "Unknown command!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
48
bin/qdisc_span.sh
Executable file
48
bin/qdisc_span.sh
Executable file
@@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ue
|
||||
|
||||
ACTION="add"
|
||||
|
||||
if [ "${1}" == "-d" ] ; then
|
||||
ACTION="del"
|
||||
shift
|
||||
fi
|
||||
|
||||
BRIDGE="${1}"
|
||||
DEST="${2}"
|
||||
|
||||
function setup_span {
|
||||
if tc qdisc show dev "${1}" | grep -q 'qdisc ingress ffff' ; then
|
||||
return 0
|
||||
fi
|
||||
tc qdisc add dev "${1}" ingress
|
||||
tc filter add dev "${1}" parent ffff: protocol all u32 match u8 0 0 action mirred egress mirror dev "${DEST}"
|
||||
}
|
||||
|
||||
function del_span {
|
||||
tc qdisc del dev "${1}" ingress
|
||||
}
|
||||
|
||||
function handle_iface {
|
||||
case "${ACTION}" in
|
||||
add)
|
||||
setup_span "${1}"
|
||||
;;
|
||||
del)
|
||||
del_span "${1}"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown action!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
function get_bridge_ifaces {
|
||||
bridge link | grep "master ${1}" | cut -d: -f2 | cut -d@ -f1
|
||||
}
|
||||
|
||||
for iface in $(get_bridge_ifaces "${BRIDGE}") ; do
|
||||
handle_iface "$iface"
|
||||
done
|
||||
62
bin/screenshot.sh
Executable file
62
bin/screenshot.sh
Executable file
@@ -0,0 +1,62 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Screenshot tool to try a few different tools
|
||||
|
||||
set -ue
|
||||
|
||||
TOOLS="flameshot scrot"
|
||||
SCREENDIR=${SCREENDIR:-${HOME}/Pictures/Screenshots}
|
||||
SCROT_FORMAT="%F-%T.png"
|
||||
|
||||
function default_screenshot_command {
|
||||
for tool in ${TOOLS} ; do
|
||||
if which "${tool}" >/dev/null 2>&1 ; then
|
||||
echo "${tool}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
exit 1
|
||||
}
|
||||
|
||||
TOOL=${SHOT:-$(default_screenshot_command)}
|
||||
CMD=${1:-region}
|
||||
|
||||
function flameshot_gui_capture {
|
||||
flameshot gui -p "${SCREENDIR}"
|
||||
}
|
||||
|
||||
function flameshot_region_capture {
|
||||
flameshot_gui_capture
|
||||
}
|
||||
|
||||
function flameshot_window_capture {
|
||||
flameshot_gui_capture
|
||||
}
|
||||
|
||||
function flameshot_full_capture {
|
||||
flameshot full -p "${SCREENDIR}"
|
||||
}
|
||||
|
||||
function scrot_region_capture {
|
||||
scrot -s "${SCREENDIR}/${SCROT_FORMAT}"
|
||||
}
|
||||
|
||||
function scrot_window_capture {
|
||||
scrot -u "${SCREENDIR}/${SCROT_FORMAT}"
|
||||
}
|
||||
|
||||
function scrot_full_capture {
|
||||
scrot "${SCREENDIR}/${SCROT_FORMAT}"
|
||||
}
|
||||
|
||||
case "${CMD}" in
|
||||
region|window|full)
|
||||
mkdir -p "${SCREENDIR}"
|
||||
${TOOL}_${CMD}_capture
|
||||
exit $?
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 [region|window|full]" >/dev/stderr
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
28
bin/switch_virt.sh
Executable file
28
bin/switch_virt.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ $# -lt 1 ] ; then
|
||||
echo "Usage: $0 <kvm|vbox>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ `whoami` != "root" ] ; then
|
||||
if which sudo >/dev/null 2>&1 ; then
|
||||
sudo $0 $*
|
||||
exit
|
||||
fi
|
||||
echo "Sorry, this requires root." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" == "kvm" ] ; then
|
||||
/etc/init.d/virtualbox stop
|
||||
modprobe kvm
|
||||
modprobe kvm_intel
|
||||
elif [ "$1" == "vbox" ] ; then
|
||||
rmmod kvm_intel
|
||||
rmmod kvm
|
||||
/etc/init.d/virtualbox start
|
||||
else
|
||||
echo 'WTF?' >&2
|
||||
exit 1
|
||||
fi
|
||||
26
chromeos/hterm.json
Normal file
26
chromeos/hterm.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"background-color": "rgba(0, 43, 54, 1)",
|
||||
"cursor-color": "rgba(238, 232, 213, 0.5)",
|
||||
"color-palette-overrides": {
|
||||
"0": "#073642",
|
||||
"1": "#dc322f",
|
||||
"2": "#859900",
|
||||
"3": "#b58900",
|
||||
"4": "#268bd2",
|
||||
"5": "#d33682",
|
||||
"6": "#2aa198",
|
||||
"7": "#eee8d5",
|
||||
"8": "#002b36",
|
||||
"9": "#cb4b16",
|
||||
"10": "#586e75",
|
||||
"11": "#657b83",
|
||||
"12": "#839496",
|
||||
"13": "#6c71c4",
|
||||
"14": "#93a1a1",
|
||||
"15": "#fdf6e3"
|
||||
},
|
||||
"font-family": "\"Inconsolata\", \"DejaVu Sans Mono\", \"Noto Sans Mono\", \"Everson Mono\", FreeMono, Menlo, Terminal, monospace",
|
||||
"font-size": "15",
|
||||
"foreground-color": "rgba(238, 232, 213, 1)",
|
||||
"user-css": "https://cdn.jsdelivr.net/gh/wernight/powerline-web-fonts@ba4426cb0c0b05eb6cb342c7719776a41e1f2114/PowerlineFonts.css"
|
||||
}
|
||||
24
clone.sh
Executable file
24
clone.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ue
|
||||
|
||||
# Script to clone and install
|
||||
|
||||
# Wrapped in a function to prevent incomplete execution if download is
|
||||
# interrupted
|
||||
function installer_main {
|
||||
if ! command -v git >/dev/null 2>&1 ; then
|
||||
( if [ "$EUID" != 0 ] ; then
|
||||
sudo apt install -y git
|
||||
else
|
||||
apt install -y git
|
||||
fi ) || ( echo 'Failed to install git!' >/dev/stderr; false)
|
||||
fi
|
||||
|
||||
git clone https://github.com/Matir/skel.git ${HOME}/.skel
|
||||
|
||||
${HOME}/.skel/install.sh
|
||||
${HOME}/.skel/install.sh packages minimal
|
||||
}
|
||||
|
||||
installer_main
|
||||
10
conf/logid.cfg
Normal file
10
conf/logid.cfg
Normal file
@@ -0,0 +1,10 @@
|
||||
devices: ({
|
||||
name: "Wireless Mouse MX Master 3";
|
||||
|
||||
smartshift: {
|
||||
on: true;
|
||||
threshold: 30;
|
||||
};
|
||||
|
||||
dpi: 1500;
|
||||
});
|
||||
24
dconf/org/cinnamon/desktop/keybindings
Normal file
24
dconf/org/cinnamon/desktop/keybindings
Normal file
@@ -0,0 +1,24 @@
|
||||
[media-keys]
|
||||
screensaver=['<Primary><Alt>l', 'XF86ScreenSaver']
|
||||
|
||||
[wm]
|
||||
move-to-workspace-1=['<Shift><Super>exclam']
|
||||
move-to-workspace-2=['<Shift><Super>at']
|
||||
move-to-workspace-3=['<Shift><Super>numbersign']
|
||||
move-to-workspace-4=['<Shift><Super>dollar']
|
||||
move-to-workspace-5=['<Shift><Super>percent']
|
||||
move-to-workspace-6=['<Shift><Super>asciicircum']
|
||||
move-to-workspace-7=['<Shift><Super>ampersand']
|
||||
move-to-workspace-8=['<Shift><Super>asterisk']
|
||||
move-to-workspace-9=['<Shift><Super>parenleft']
|
||||
switch-to-workspace-4=['<Super>4']
|
||||
switch-to-workspace-1=['<Super>1']
|
||||
switch-to-workspace-10=['<Super>0']
|
||||
switch-to-workspace-3=['<Super>3']
|
||||
switch-to-workspace-8=['<Super>8']
|
||||
switch-to-workspace-5=['<Super>5']
|
||||
move-to-workspace-10=['<Shift><Super>parenright']
|
||||
switch-to-workspace-2=['<Super>2']
|
||||
switch-to-workspace-9=['<Super>9']
|
||||
switch-to-workspace-6=['<Super>6']
|
||||
switch-to-workspace-7=['<Super>7']
|
||||
@@ -6,6 +6,10 @@ if [ `whoami` != "root" ] ; then
|
||||
fi
|
||||
|
||||
BASEDIR=`dirname $0`
|
||||
if ! test -f ${BASEDIR}/keys/gpg/kali-repo.key ; then
|
||||
echo "Couldn't find key, are you in the right place?" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat >/etc/apt/sources.list.d/kali.list <<KALI_EOF
|
||||
deb http://http.kali.org/kali kali-rolling main contrib non-free
|
||||
|
||||
113
dotfiles/Xresources
Normal file
113
dotfiles/Xresources
Normal file
@@ -0,0 +1,113 @@
|
||||
Xcursor.size: 16
|
||||
|
||||
!!!
|
||||
! Xft for fonts
|
||||
!!!
|
||||
!Xft.dpi: 144
|
||||
Xft.antialias: true
|
||||
Xft.lcdfilter: lcddefault
|
||||
Xft.rgba: rgb
|
||||
Xft.hinting: true
|
||||
Xft.hintstyle: hintslight
|
||||
Xft.autohint: 0
|
||||
|
||||
!!!
|
||||
! Solarized urxvt
|
||||
!!!
|
||||
URxvt.depth: 32
|
||||
URxvt.geometry: 90x30
|
||||
URxvt.transparent: false
|
||||
URxvt.fading: 0
|
||||
URxvt.urgentOnBell: true
|
||||
URxvt.visualBell: false
|
||||
URxvt.loginShell: true
|
||||
URxvt.saveLines: 50000
|
||||
URxvt.internalBorder: 2
|
||||
URxvt.lineSpace: 0
|
||||
URxvt.iso14755: false
|
||||
|
||||
! Fonts
|
||||
URxvt.font: xft:inconsolata:pixelsize=17,xft:monospace:size=12
|
||||
|
||||
! Fix font space
|
||||
URxvt.letterSpace: -1
|
||||
|
||||
! Scrollbar and scrolling
|
||||
URxvt.scrollStyle: rxvt
|
||||
URxvt.scrollBar: false
|
||||
! do not scroll with output
|
||||
URxvt.scrollTtyOutput: false
|
||||
! scroll in relation to buffer (with mouse scroll or Shift+Page Up)
|
||||
URxvt.scrollWithBuffer: true
|
||||
! scroll back to the bottom on keypress
|
||||
URxvt.scrollTtyKeypress: true
|
||||
|
||||
! Allow apps to manage their own secondary screen
|
||||
URxvt.secondaryScreen: 1
|
||||
URxvt.secondaryScroll: 0
|
||||
|
||||
! Perl extensions
|
||||
URxvt.perl-ext-common: default,matcher,font-size,eval
|
||||
URxvt.matcher.button: 1
|
||||
URxvt.urlLauncher: /usr/bin/xdg-open
|
||||
URxvt.url-launcher: /usr/bin/xdg-open
|
||||
|
||||
! Copy/Paste Stuff
|
||||
URxvt.keysym.Shift-Control-V: eval:paste_clipboard
|
||||
URxvt.keysym.Shift-Control-C: eval:selection_to_clipboard
|
||||
|
||||
! Cursor
|
||||
URxvt.cursorBlink: true
|
||||
URxvt.cursorUnderline: false
|
||||
|
||||
! Pointer
|
||||
URxvt.pointerBlank: true
|
||||
|
||||
! Disable printing the terminal contents when pressing PrintScreen.
|
||||
URxvt.print-pipe: "cat > /dev/null"
|
||||
|
||||
!!! Solarized colors begin
|
||||
! base03
|
||||
URxvt.background: #002b36
|
||||
! base0
|
||||
URxvt.foreground: #839496
|
||||
! base03
|
||||
URxvt.fadeColor: #002b36
|
||||
! base1
|
||||
URxvt.cursorColor: #93a1a1
|
||||
! base01
|
||||
URxvt.pointerColorBackground: #586e75
|
||||
! base1
|
||||
URxvt.pointerColorForeground: #93a1a1
|
||||
|
||||
!! black dark/light
|
||||
URxvt.color0: #073642
|
||||
URxvt.color8: #002b36
|
||||
|
||||
!! red dark/light
|
||||
URxvt.color1: #dc322f
|
||||
URxvt.color9: #cb4b16
|
||||
|
||||
!! green dark/light
|
||||
URxvt.color2: #859900
|
||||
URxvt.color10: #586e75
|
||||
|
||||
!! yellow dark/light
|
||||
URxvt.color3: #b58900
|
||||
URxvt.color11: #657b83
|
||||
|
||||
!! blue dark/light
|
||||
URxvt.color4: #268bd2
|
||||
URxvt.color12: #839496
|
||||
|
||||
!! magenta dark/light
|
||||
URxvt.color5: #d33682
|
||||
URxvt.color13: #6c71c4
|
||||
|
||||
!! cyan dark/light
|
||||
URxvt.color6: #2aa198
|
||||
URxvt.color14: #93a1a1
|
||||
|
||||
!! white dark/light
|
||||
URxvt.color7: #eee8d5
|
||||
URxvt.color15: #fdf6e3
|
||||
41
dotfiles/aliases
Normal file → Executable file
41
dotfiles/aliases
Normal file → Executable file
@@ -5,13 +5,18 @@
|
||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||
|
||||
# Cryptsetup alias
|
||||
alias luksFormat='sudo cryptsetup luksFormat -s 512 -c aes-xts-plain --use-random -h sha256 -i 5000'
|
||||
alias luksFormat='cryptsetup luksFormat --type=luks2 --pbkdf-memory=2560000 --pbkdf=argon2id -i 15000 -s 512 -h sha256 -c aes-xts-plain64'
|
||||
|
||||
# Colors
|
||||
alias ls='ls --color=auto'
|
||||
alias grep='grep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
if ls --version >/dev/null 2>&1 ; then
|
||||
alias ls='ls --color=auto'
|
||||
fi
|
||||
if [ `uname` != 'Darwin' -a `uname` != 'NetBSD' -a `uname` != 'FreeBSD' -a `uname` != 'OpenBSD' ] ; then
|
||||
# Should have a better way to check for GNU versions
|
||||
alias grep='grep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
fi
|
||||
|
||||
# Easy upgrade
|
||||
alias dist-upgrade="sudo sh -c 'apt-get update && apt-get -y dist-upgrade'"
|
||||
@@ -25,8 +30,26 @@ alias mdcode="sed 's/^/ /'"
|
||||
# Intel format plz
|
||||
alias objdump="command objdump -M intel"
|
||||
|
||||
# ACK
|
||||
alias ack="ack-grep"
|
||||
# Useful directory utilities
|
||||
alias dircount="for d in * ; do find \$d -type d | wc -l | tr -d '\n' ; echo ' ' \$d ; done | sort -n"
|
||||
|
||||
# Launch chrome for burp
|
||||
alias chrome-for-burp="/usr/bin/google-chrome --ignore-certificate-errors --user-data-dir=${HOME}/.chrome-for-burp --proxy-server=127.0.0.1:8080 >/dev/null 2>&1 &"
|
||||
# Drop caches for swap issues
|
||||
alias drop_caches="echo 3 | sudo /usr/bin/tee /proc/sys/vm/drop_caches"
|
||||
|
||||
# dump acpi temperature
|
||||
alias gettemp='printf "%02.2f\n" "$(cat /sys/class/thermal/thermal_zone0/temp)e-3"'
|
||||
|
||||
# get git working directory
|
||||
alias gitroot="git rev-parse --show-toplevel"
|
||||
|
||||
# SSH without host key checking
|
||||
alias sshanon="ssh -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no"
|
||||
|
||||
# Straight to ipython
|
||||
alias ipy="ipython3"
|
||||
|
||||
# Skip the header on bc
|
||||
alias bc="command bc -q"
|
||||
|
||||
# Get a decently readable df
|
||||
alias dfh="df -h -x tmpfs -x devtmpfs"
|
||||
|
||||
2
dotfiles/bashrc
Normal file → Executable file
2
dotfiles/bashrc
Normal file → Executable file
@@ -13,7 +13,7 @@ HISTFILESIZE=0
|
||||
shopt -s checkwinsize
|
||||
|
||||
# Fancier outputs
|
||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe 2>/dev/null)"
|
||||
|
||||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||
|
||||
39
dotfiles/config/htop/htoprc
Normal file
39
dotfiles/config/htop/htoprc
Normal file
@@ -0,0 +1,39 @@
|
||||
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||
# The parser is also very primitive, and not human-friendly.
|
||||
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||
sort_key=46
|
||||
sort_direction=-1
|
||||
tree_sort_key=0
|
||||
tree_sort_direction=1
|
||||
hide_kernel_threads=1
|
||||
hide_userland_threads=1
|
||||
shadow_other_users=0
|
||||
show_thread_names=0
|
||||
show_program_path=1
|
||||
highlight_base_name=0
|
||||
highlight_megabytes=1
|
||||
highlight_threads=1
|
||||
highlight_changes=0
|
||||
highlight_changes_delay_secs=5
|
||||
find_comm_in_cmdline=1
|
||||
strip_exe_from_cmdline=1
|
||||
show_merged_command=0
|
||||
tree_view=0
|
||||
tree_view_always_by_pid=0
|
||||
header_margin=1
|
||||
detailed_cpu_time=0
|
||||
cpu_count_from_one=1
|
||||
show_cpu_usage=1
|
||||
show_cpu_frequency=0
|
||||
show_cpu_temperature=0
|
||||
degree_fahrenheit=0
|
||||
update_process_names=0
|
||||
account_guest_in_cpu_meter=0
|
||||
color_scheme=6
|
||||
enable_mouse=1
|
||||
delay=15
|
||||
left_meters=AllCPUs Memory Swap
|
||||
left_meter_modes=1 1 1
|
||||
right_meters=Tasks LoadAverage Uptime
|
||||
right_meter_modes=2 2 2
|
||||
hide_function_bar=0
|
||||
194
dotfiles/config/i3/config
Normal file
194
dotfiles/config/i3/config
Normal file
@@ -0,0 +1,194 @@
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod4
|
||||
set $alt Mod1
|
||||
|
||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||
font pango:DejaVu Sans Mono 8
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# start a terminal
|
||||
bindsym $mod+Return exec i3-sensible-terminal
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
bindsym $mod+d exec dmenu_run
|
||||
# There also is the (new) i3-dmenu-desktop which only displays applications
|
||||
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
|
||||
# installed.
|
||||
bindsym $mod+Shift+d exec --no-startup-id i3-dmenu-desktop
|
||||
|
||||
# move focus
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move windows
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+h split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace 1
|
||||
bindsym $mod+2 workspace 2
|
||||
bindsym $mod+3 workspace 3
|
||||
bindsym $mod+4 workspace 4
|
||||
bindsym $mod+5 workspace 5
|
||||
bindsym $mod+6 workspace 6
|
||||
bindsym $mod+7 workspace 7
|
||||
bindsym $mod+8 workspace 8
|
||||
bindsym $mod+9 workspace 9
|
||||
bindsym $mod+0 workspace 10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace 1
|
||||
bindsym $mod+Shift+2 move container to workspace 2
|
||||
bindsym $mod+Shift+3 move container to workspace 3
|
||||
bindsym $mod+Shift+4 move container to workspace 4
|
||||
bindsym $mod+Shift+5 move container to workspace 5
|
||||
bindsym $mod+Shift+6 move container to workspace 6
|
||||
bindsym $mod+Shift+7 move container to workspace 7
|
||||
bindsym $mod+Shift+8 move container to workspace 8
|
||||
bindsym $mod+Shift+9 move container to workspace 9
|
||||
bindsym $mod+Shift+0 move container to workspace 10
|
||||
|
||||
# Move workspaces between monitors
|
||||
bindsym $mod+Shift+greater move workspace to output right
|
||||
bindsym $mod+Shift+less move workspace to output left
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
# exit i3 (logs you out of your X session)
|
||||
bindsym $mod+Shift+e exec \
|
||||
"i3-nagbar -t warning -m \
|
||||
'You pressed the exit shortcut. Do you really want to exit i3? \
|
||||
This will end your X session.' \
|
||||
-b 'Yes, exit i3' 'i3-msg exit'"
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or mod+r to toggle
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
# finds out, if available)
|
||||
bar {
|
||||
status_command bash -c "i3status -c <(~/.config/i3status/build_config.sh)"
|
||||
}
|
||||
|
||||
# Cycle through workspaces like cinnamon
|
||||
bindsym $alt+Control+Right workspace next
|
||||
bindsym $alt+Control+Left workspace prev
|
||||
|
||||
# i3 lock
|
||||
exec --no-startup-id ~/bin/i3lock.sh &
|
||||
exec --no-startup-id xset dpms 600
|
||||
bindsym $mod+l exec \
|
||||
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
||||
bindsym $alt+Control+l exec \
|
||||
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
||||
# suspend under systemd
|
||||
bindsym $mod+Control+s exec --no-startup-id systemctl suspend
|
||||
|
||||
# things to start quickly
|
||||
bindsym $mod+g exec /usr/bin/google-chrome-beta --password-store=gnome
|
||||
|
||||
# kill a window with middle click + mod
|
||||
bindsym --whole-window $mod+button2 kill
|
||||
# float a window with right click + mod
|
||||
bindsym --whole-window $mod+button3 floating toggle
|
||||
|
||||
# media keys
|
||||
# Pulse Audio controls
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id ~/bin/pactl_helper volume +5%
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id ~/bin/pactl_helper volume -5%
|
||||
bindsym XF86AudioMute exec --no-startup-id ~/bin/pactl_helper mute toggle
|
||||
bindsym XF86AudioMicMute exec --no-startup-id ~/bin/pactl_helper micmute toggle
|
||||
bindsym F13 exec --no-startup-id ~/bin/pactl_helper micmute toggle
|
||||
# Screen brightness controls
|
||||
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10
|
||||
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10
|
||||
|
||||
# screenshots
|
||||
# region/selection
|
||||
bindsym --release Print exec --no-startup-id \
|
||||
~/bin/screenshot.sh region
|
||||
# full screen
|
||||
bindsym --release Shift+Print exec --no-startup-id \
|
||||
~/bin/screenshot.sh full
|
||||
# single window
|
||||
bindsym --release $alt+Sys_Req exec --no-startup-id \
|
||||
~/bin/screenshot.sh window
|
||||
|
||||
# useful utilities
|
||||
exec --no-startup-id gnome-keyring-daemon --start --components=pkcs11,secrets
|
||||
exec --no-startup-id xset r rate 200 20
|
||||
#exec --no-startup-id ~/bin/autostart.py
|
||||
exec --no-startup-id dex --autostart --environment x-cinnamon
|
||||
# Solaar for mouse
|
||||
exec --no-startup-id sh -c 'command solaar -w hide || true'
|
||||
|
||||
# customize windows
|
||||
for_window [window_role="pop-up"] floating enable
|
||||
for_window [window_role="bubble"] floating enable
|
||||
for_window [window_role="task_dialog"] floating enable
|
||||
for_window [window_role="Preferences"] floating enable
|
||||
for_window [window_type="dialog"] floating enable
|
||||
for_window [window_type="menu"] floating enable
|
||||
|
||||
for_window [class="^google-chrome$"] border pixel
|
||||
for_window [class="^Google-chrome-beta$"] border pixel
|
||||
for_window [class="^burp-StartBurp$" title="^(?!Burp Suite)"] floating enable
|
||||
|
||||
# no need for borders on the edge of the screen
|
||||
hide_edge_borders both
|
||||
|
||||
# vim:filetype=i3
|
||||
143
dotfiles/config/i3status/build_config.sh
Executable file
143
dotfiles/config/i3status/build_config.sh
Executable file
@@ -0,0 +1,143 @@
|
||||
#!/bin/bash
|
||||
|
||||
function general {
|
||||
cat <<-EOF
|
||||
general {
|
||||
colors = true
|
||||
interval = 5
|
||||
}
|
||||
EOF
|
||||
}
|
||||
|
||||
function disks {
|
||||
local DISKS=(/ /home)
|
||||
local d
|
||||
local used
|
||||
for d in ${DISKS[@]} ; do
|
||||
local dev=`df $d | tail -1 | awk '{print $1}'`
|
||||
if [[ $used == *$dev* ]] ; then
|
||||
continue
|
||||
fi
|
||||
local size=`df $d | tail -1 | awk '{print $2}'`
|
||||
if [ $size -eq 0 ] ; then
|
||||
continue
|
||||
fi
|
||||
used="${used} ${dev}"
|
||||
cat <<-EOF
|
||||
disk "${d}" {
|
||||
format = "${d} %avail"
|
||||
}
|
||||
order += "disk ${d}"
|
||||
EOF
|
||||
done
|
||||
}
|
||||
|
||||
function wireless {
|
||||
which iwconfig >/dev/null || return
|
||||
iwconfig 2>&1 | grep . | grep -vq 'no wireless extensions' || return
|
||||
cat <<-EOF
|
||||
wireless _first_ {
|
||||
format_up = "W: (%quality %essid) %ip"
|
||||
format_down = "W: down"
|
||||
}
|
||||
order += "wireless _first_"
|
||||
EOF
|
||||
}
|
||||
|
||||
function wired {
|
||||
local def_iface="$(ip route get 1.1.1.1 2>&1 | grep -oP 'dev \K\S+')"
|
||||
if test -n "${def_iface}" ; then
|
||||
cat <<-EOF
|
||||
ethernet "${def_iface}" {
|
||||
format_up = "E: %ip"
|
||||
format_down = "E: down"
|
||||
}
|
||||
order += "ethernet ${def_iface}"
|
||||
EOF
|
||||
return 0
|
||||
fi
|
||||
cat <<-EOF
|
||||
ethernet _first_ {
|
||||
format_up = "E: %ip"
|
||||
format_down = "E: down"
|
||||
}
|
||||
order += "ethernet _first_"
|
||||
EOF
|
||||
}
|
||||
|
||||
function ipv6 {
|
||||
echo "order += \"ipv6\""
|
||||
}
|
||||
|
||||
function load {
|
||||
cat <<-EOF
|
||||
load {
|
||||
format = "%1min %5min"
|
||||
}
|
||||
order += "load"
|
||||
EOF
|
||||
}
|
||||
|
||||
function now {
|
||||
cat <<-EOF
|
||||
tztime local {
|
||||
format = "%Y-%m-%d %H:%M"
|
||||
}
|
||||
order += "tztime local"
|
||||
EOF
|
||||
}
|
||||
|
||||
function battery {
|
||||
local bat
|
||||
shopt -s nullglob
|
||||
for bat in /sys/class/power_supply/BAT* ; do
|
||||
local bid=${bat##*BAT}
|
||||
cat <<-EOF
|
||||
battery ${bid} {
|
||||
low_threshold = 15
|
||||
threshold_type = time
|
||||
status_chr = "↑ CHR"
|
||||
status_bat = "↓ BAT"
|
||||
EOF
|
||||
if [ $(bc <<< "$(i3status --version | awk '{print $2}') < 2.11") -eq 0 ] ;
|
||||
then
|
||||
cat <<-EOF
|
||||
status_unk = "? UNK"
|
||||
EOF
|
||||
fi
|
||||
cat <<-EOF
|
||||
status_full = "FULL"
|
||||
format = "%status %percentage"
|
||||
path = "/sys/class/power_supply/BAT${bid}/uevent"
|
||||
hide_seconds = true
|
||||
last_full_capacity = true
|
||||
}
|
||||
order += "battery ${bid}"
|
||||
EOF
|
||||
done
|
||||
}
|
||||
|
||||
function audio {
|
||||
cat <<-EOF
|
||||
volume master {
|
||||
format = "♪: %volume"
|
||||
format_muted = "♪: MUTE"
|
||||
device = "default"
|
||||
mixer = "Master"
|
||||
mixer_idx = 0
|
||||
}
|
||||
order += "volume master"
|
||||
EOF
|
||||
}
|
||||
|
||||
general
|
||||
disks
|
||||
wireless
|
||||
wired
|
||||
ipv6
|
||||
load
|
||||
battery
|
||||
audio
|
||||
now
|
||||
|
||||
# vim: noexpandtab
|
||||
52
dotfiles/config/i3status/config
Normal file
52
dotfiles/config/i3status/config
Normal file
@@ -0,0 +1,52 @@
|
||||
# i3status configuration file.
|
||||
# see "man i3status" for documentation.
|
||||
|
||||
# It is important that this file is edited as UTF-8.
|
||||
# The following line should contain a sharp s:
|
||||
# ß
|
||||
# If the above line is not correctly displayed, fix your editor first!
|
||||
|
||||
general {
|
||||
colors = true
|
||||
interval = 5
|
||||
}
|
||||
|
||||
order += "ipv6"
|
||||
order += "disk /"
|
||||
order += "disk /home"
|
||||
order += "wireless _first_"
|
||||
order += "ethernet _first_"
|
||||
order += "battery all"
|
||||
order += "load"
|
||||
order += "tztime local"
|
||||
|
||||
wireless _first_ {
|
||||
format_up = "W: (%quality at %essid) %ip"
|
||||
format_down = "W: down"
|
||||
}
|
||||
|
||||
ethernet _first_ {
|
||||
# if you use %speed, i3status requires root privileges
|
||||
format_up = "E: %ip (%speed)"
|
||||
format_down = "E: down"
|
||||
}
|
||||
|
||||
battery all {
|
||||
format = "%status %percentage %remaining"
|
||||
}
|
||||
|
||||
tztime local {
|
||||
format = "%Y-%m-%d %H:%M:%S"
|
||||
}
|
||||
|
||||
load {
|
||||
format = "%1min"
|
||||
}
|
||||
|
||||
disk "/" {
|
||||
format = "%avail"
|
||||
}
|
||||
|
||||
disk "/home" {
|
||||
format = "%avail"
|
||||
}
|
||||
11
dotfiles/config/redshift.conf
Normal file
11
dotfiles/config/redshift.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
[redshift]
|
||||
temp-day=5700
|
||||
temp-night=4750
|
||||
transition=1
|
||||
brightness-day=1.0
|
||||
brightness-night=0.9
|
||||
adjustment-method=randr
|
||||
|
||||
[manual]
|
||||
lat=37.3
|
||||
lon=-121.9
|
||||
1
dotfiles/config/systemd/user/tracker-store.service
Symbolic link
1
dotfiles/config/systemd/user/tracker-store.service
Symbolic link
@@ -0,0 +1 @@
|
||||
/dev/null
|
||||
15
dotfiles/config/user-dirs.dirs
Normal file
15
dotfiles/config/user-dirs.dirs
Normal file
@@ -0,0 +1,15 @@
|
||||
# This file is written by xdg-user-dirs-update
|
||||
# If you want to change or add directories, just edit the line you're
|
||||
# interested in. All local changes will be retained on the next run
|
||||
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||
# absolute path. No other format is supported.
|
||||
#
|
||||
XDG_DESKTOP_DIR="$HOME/Desktop"
|
||||
XDG_DOWNLOAD_DIR="$HOME/Downloads"
|
||||
XDG_TEMPLATES_DIR="$HOME/"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/Shared"
|
||||
XDG_DOCUMENTS_DIR="$HOME/Documents"
|
||||
XDG_MUSIC_DIR="$HOME/Music"
|
||||
XDG_PICTURES_DIR="$HOME/Pictures"
|
||||
XDG_VIDEOS_DIR="$HOME/Videos"
|
||||
@@ -1,4 +1,3 @@
|
||||
tlsv1
|
||||
user-agent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0 Safari/537.36"
|
||||
create-dirs
|
||||
referer = ";auto"
|
||||
|
||||
@@ -1,16 +1,51 @@
|
||||
|
||||
# Dark 256 color solarized theme for the color GNU ls utility.
|
||||
# Used and tested with dircolors (GNU coreutils) 8.5
|
||||
# Exact Solarized Dark color theme for the color GNU ls utility.
|
||||
# Designed for dircolors (GNU coreutils) 5.97
|
||||
#
|
||||
# @author {@link http://sebastian.tramp.name Sebastian Tramp}
|
||||
# @license http://sam.zoy.org/wtfpl/ Do What The Fuck You Want To Public License (WTFPL)
|
||||
# This simple theme was simultaneously designed for these terminal color schemes:
|
||||
# - Solarized dark (best)
|
||||
# - Solarized light
|
||||
# - default dark
|
||||
# - default light
|
||||
# with a slight optimization for Solarized Dark.
|
||||
#
|
||||
# More Information at
|
||||
# https://github.com/seebi/dircolors-solarized
|
||||
# How the colors were selected:
|
||||
# - Terminal emulators often have an option typically enabled by default that makes
|
||||
# bold a different color. It is important to leave this option enabled so that
|
||||
# you can access the entire 16-color Solarized palette, and not just 8 colors.
|
||||
# - We favor universality over a greater number of colors. So we limit the number
|
||||
# of colors so that this theme will work out of the box in all terminals,
|
||||
# Solarized or not, dark or light.
|
||||
# - We choose to have the following category of files:
|
||||
# NORMAL & FILE, DIR, LINK, EXEC and
|
||||
# editable text including source, unimportant text, binary docs & multimedia source
|
||||
# files, viewable multimedia, archived/compressed, and unimportant non-text
|
||||
# - For uniqueness, we stay away from the Solarized foreground colors are -- either
|
||||
# base00 (brightyellow) or base0 (brightblue). However, they can be used if
|
||||
# you know what the bg/fg colors of your terminal are, in order to optimize the display.
|
||||
# - 3 different options are provided: universal, solarized dark, and solarized light.
|
||||
# The only difference between the universal scheme and one that's optimized for
|
||||
# dark/light is the color of "unimportant" files, which should blend more with the
|
||||
# background
|
||||
# - We note that blue is the hardest color to see on dark bg and yellow is the hardest
|
||||
# color to see on light bg (with blue being particularly bad). So we choose yellow
|
||||
# for multimedia files which are usually accessed in a GUI folder browser anyway.
|
||||
# And blue is kept for custom use of this scheme's user.
|
||||
# - See table below to see the assignments.
|
||||
|
||||
# Term Section
|
||||
TERM Eterm
|
||||
|
||||
# Installation instructions:
|
||||
# This file goes in the /etc directory, and must be world readable.
|
||||
# You can copy this file to .dir_colors in your $HOME directory to override
|
||||
# the system defaults.
|
||||
|
||||
# COLOR needs one of these arguments: 'tty' colorizes output to ttys, but not
|
||||
# pipes. 'all' adds color characters to all output. 'none' shuts colorization
|
||||
# off.
|
||||
COLOR tty
|
||||
|
||||
# Below, there should be one TERM entry for each termtype that is colorizable
|
||||
TERM ansi
|
||||
TERM color_xterm
|
||||
TERM color-xterm
|
||||
TERM con132x25
|
||||
TERM con132x30
|
||||
@@ -28,6 +63,7 @@ TERM cygwin
|
||||
TERM dtterm
|
||||
TERM dvtm
|
||||
TERM dvtm-256color
|
||||
TERM Eterm
|
||||
TERM eterm-color
|
||||
TERM fbterm
|
||||
TERM gnome
|
||||
@@ -40,6 +76,7 @@ TERM linux
|
||||
TERM linux-c
|
||||
TERM mach-color
|
||||
TERM mlterm
|
||||
TERM nxterm
|
||||
TERM putty
|
||||
TERM putty-256color
|
||||
TERM rxvt
|
||||
@@ -63,12 +100,16 @@ TERM screen-bce
|
||||
TERM screen-w
|
||||
TERM screen.linux
|
||||
TERM screen.xterm-256color
|
||||
TERM screen.xterm-new
|
||||
TERM st
|
||||
TERM st-meta
|
||||
TERM st-256color
|
||||
TERM st-meta-256color
|
||||
TERM tmux
|
||||
TERM tmux-256color
|
||||
TERM vt100
|
||||
TERM xterm
|
||||
TERM xterm-new
|
||||
TERM xterm-16color
|
||||
TERM xterm-256color
|
||||
TERM xterm-256color-italic
|
||||
@@ -77,219 +118,363 @@ TERM xterm-color
|
||||
TERM xterm-debian
|
||||
TERM xterm-termite
|
||||
|
||||
## Documentation
|
||||
#
|
||||
# standard colors
|
||||
#
|
||||
# EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output)
|
||||
EIGHTBIT 1
|
||||
|
||||
#############################################################################
|
||||
# Below are the color init strings for the basic file types. A color init
|
||||
# string consists of one or more of the following numeric codes:
|
||||
#
|
||||
# Attribute codes:
|
||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
||||
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
|
||||
# Text color codes:
|
||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
||||
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
|
||||
# Background color codes:
|
||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
||||
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
|
||||
#
|
||||
#
|
||||
# 256 color support
|
||||
# see here: http://www.mail-archive.com/bug-coreutils@gnu.org/msg11030.html)
|
||||
#
|
||||
# Text 256 color coding:
|
||||
# 38;5;COLOR_NUMBER
|
||||
# Background 256 color coding:
|
||||
# 48;5;COLOR_NUMBER
|
||||
|
||||
## Special files
|
||||
|
||||
NORMAL 00;38;5;244 # no color code at all
|
||||
#FILE 00 # regular file: use no color at all
|
||||
RESET 0 # reset to "normal" color
|
||||
DIR 00;38;5;33 # directory 01;34
|
||||
LINK 00;38;5;37 # symbolic link. (If you set this to 'target' instead of a
|
||||
# numerical value, the color is as for the file pointed to.)
|
||||
MULTIHARDLINK 00 # regular file with more than one link
|
||||
FIFO 48;5;230;38;5;136;01 # pipe
|
||||
SOCK 48;5;230;38;5;136;01 # socket
|
||||
DOOR 48;5;230;38;5;136;01 # door
|
||||
BLK 48;5;230;38;5;244;01 # block device driver
|
||||
CHR 48;5;230;38;5;244;01 # character device driver
|
||||
ORPHAN 48;5;235;38;5;160 # symlink to nonexistent file, or non-stat'able file
|
||||
SETUID 48;5;160;38;5;230 # file that is setuid (u+s)
|
||||
SETGID 48;5;136;38;5;230 # file that is setgid (g+s)
|
||||
CAPABILITY 30;41 # file with capability
|
||||
STICKY_OTHER_WRITABLE 48;5;64;38;5;230 # dir that is sticky and other-writable (+t,o+w)
|
||||
OTHER_WRITABLE 48;5;235;38;5;33 # dir that is other-writable (o+w) and not sticky
|
||||
STICKY 48;5;33;38;5;230 # dir with the sticky bit set (+t) and not other-writable
|
||||
# This is for files with execute permission:
|
||||
EXEC 00;38;5;64
|
||||
|
||||
## Archives or compressed (violet + bold for compression)
|
||||
.tar 00;38;5;61
|
||||
.tgz 00;38;5;61
|
||||
.arj 00;38;5;61
|
||||
.taz 00;38;5;61
|
||||
.lzh 00;38;5;61
|
||||
.lzma 00;38;5;61
|
||||
.tlz 00;38;5;61
|
||||
.txz 00;38;5;61
|
||||
.zip 00;38;5;61
|
||||
.z 00;38;5;61
|
||||
.Z 00;38;5;61
|
||||
.dz 00;38;5;61
|
||||
.gz 00;38;5;61
|
||||
.lz 00;38;5;61
|
||||
.xz 00;38;5;61
|
||||
.bz2 00;38;5;61
|
||||
.bz 00;38;5;61
|
||||
.tbz 00;38;5;61
|
||||
.tbz2 00;38;5;61
|
||||
.tz 00;38;5;61
|
||||
.deb 00;38;5;61
|
||||
.rpm 00;38;5;61
|
||||
.jar 00;38;5;61
|
||||
.rar 00;38;5;61
|
||||
.ace 00;38;5;61
|
||||
.zoo 00;38;5;61
|
||||
.cpio 00;38;5;61
|
||||
.7z 00;38;5;61
|
||||
.rz 00;38;5;61
|
||||
.apk 00;38;5;61
|
||||
.gem 00;38;5;61
|
||||
|
||||
# Image formats (yellow)
|
||||
.jpg 00;38;5;136
|
||||
.JPG 00;38;5;136 #stupid but needed
|
||||
.jpeg 00;38;5;136
|
||||
.gif 00;38;5;136
|
||||
.bmp 00;38;5;136
|
||||
.pbm 00;38;5;136
|
||||
.pgm 00;38;5;136
|
||||
.ppm 00;38;5;136
|
||||
.tga 00;38;5;136
|
||||
.xbm 00;38;5;136
|
||||
.xpm 00;38;5;136
|
||||
.tif 00;38;5;136
|
||||
.tiff 00;38;5;136
|
||||
.png 00;38;5;136
|
||||
.PNG 00;38;5;136
|
||||
.svg 00;38;5;136
|
||||
.svgz 00;38;5;136
|
||||
.mng 00;38;5;136
|
||||
.pcx 00;38;5;136
|
||||
.dl 00;38;5;136
|
||||
.xcf 00;38;5;136
|
||||
.xwd 00;38;5;136
|
||||
.yuv 00;38;5;136
|
||||
.cgm 00;38;5;136
|
||||
.emf 00;38;5;136
|
||||
.eps 00;38;5;136
|
||||
.CR2 00;38;5;136
|
||||
.ico 00;38;5;136
|
||||
|
||||
# Files of special interest (base1)
|
||||
.tex 00;38;5;245
|
||||
.rdf 00;38;5;245
|
||||
.owl 00;38;5;245
|
||||
.n3 00;38;5;245
|
||||
.ttl 00;38;5;245
|
||||
.nt 00;38;5;245
|
||||
.torrent 00;38;5;245
|
||||
.xml 00;38;5;245
|
||||
*Makefile 00;38;5;245
|
||||
*Rakefile 00;38;5;245
|
||||
*Dockerfile 00;38;5;245
|
||||
*build.xml 00;38;5;245
|
||||
*rc 00;38;5;245
|
||||
*1 00;38;5;245
|
||||
.nfo 00;38;5;245
|
||||
*README 00;38;5;245
|
||||
*README.txt 00;38;5;245
|
||||
*readme.txt 00;38;5;245
|
||||
.md 00;38;5;245
|
||||
*README.markdown 00;38;5;245
|
||||
.ini 00;38;5;245
|
||||
.yml 00;38;5;245
|
||||
.cfg 00;38;5;245
|
||||
.conf 00;38;5;245
|
||||
.c 00;38;5;245
|
||||
.cpp 00;38;5;245
|
||||
.cc 00;38;5;245
|
||||
.sqlite 00;38;5;245
|
||||
.go 00;38;5;245
|
||||
.sql 00;38;5;245
|
||||
|
||||
# "unimportant" files as logs and backups (base01)
|
||||
.log 00;38;5;240
|
||||
.bak 00;38;5;240
|
||||
.aux 00;38;5;240
|
||||
.lof 00;38;5;240
|
||||
.lol 00;38;5;240
|
||||
.lot 00;38;5;240
|
||||
.out 00;38;5;240
|
||||
.toc 00;38;5;240
|
||||
.bbl 00;38;5;240
|
||||
.blg 00;38;5;240
|
||||
*~ 00;38;5;240
|
||||
*# 00;38;5;240
|
||||
.part 00;38;5;240
|
||||
.incomplete 00;38;5;240
|
||||
.swp 00;38;5;240
|
||||
.tmp 00;38;5;240
|
||||
.temp 00;38;5;240
|
||||
.o 00;38;5;240
|
||||
.pyc 00;38;5;240
|
||||
.class 00;38;5;240
|
||||
.cache 00;38;5;240
|
||||
|
||||
# Audio formats (orange)
|
||||
.aac 00;38;5;166
|
||||
.au 00;38;5;166
|
||||
.flac 00;38;5;166
|
||||
.mid 00;38;5;166
|
||||
.midi 00;38;5;166
|
||||
.mka 00;38;5;166
|
||||
.mp3 00;38;5;166
|
||||
.mpc 00;38;5;166
|
||||
.ogg 00;38;5;166
|
||||
.ra 00;38;5;166
|
||||
.wav 00;38;5;166
|
||||
.m4a 00;38;5;166
|
||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
||||
.axa 00;38;5;166
|
||||
.oga 00;38;5;166
|
||||
.spx 00;38;5;166
|
||||
.xspf 00;38;5;166
|
||||
|
||||
# Video formats (as audio + bold)
|
||||
.mov 00;38;5;166
|
||||
.MOV 00;38;5;166
|
||||
.mpg 00;38;5;166
|
||||
.mpeg 00;38;5;166
|
||||
.m2v 00;38;5;166
|
||||
.mkv 00;38;5;166
|
||||
.ogm 00;38;5;166
|
||||
.mp4 00;38;5;166
|
||||
.m4v 00;38;5;166
|
||||
.mp4v 00;38;5;166
|
||||
.vob 00;38;5;166
|
||||
.qt 00;38;5;166
|
||||
.nuv 00;38;5;166
|
||||
.wmv 00;38;5;166
|
||||
.asf 00;38;5;166
|
||||
.rm 00;38;5;166
|
||||
.rmvb 00;38;5;166
|
||||
.flc 00;38;5;166
|
||||
.avi 00;38;5;166
|
||||
.fli 00;38;5;166
|
||||
.flv 00;38;5;166
|
||||
.gl 00;38;5;166
|
||||
.m2ts 00;38;5;166
|
||||
.divx 00;38;5;166
|
||||
.webm 00;38;5;166
|
||||
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
|
||||
.axv 00;38;5;166
|
||||
.anx 00;38;5;166
|
||||
.ogv 00;38;5;166
|
||||
.ogx 00;38;5;166
|
||||
# NOTES:
|
||||
# - See http://www.oreilly.com/catalog/wdnut/excerpt/color_names.html
|
||||
# - Color combinations
|
||||
# ANSI Color code Solarized Notes Universal SolDark SolLight
|
||||
# ~~~~~~~~~~~~~~~ ~~~~~~~~~ ~~~~~ ~~~~~~~~~ ~~~~~~~ ~~~~~~~~
|
||||
# 00 none NORMAL, FILE <SAME> <SAME>
|
||||
# 30 black base02
|
||||
# 01;30 bright black base03 bg of SolDark
|
||||
# 31 red red docs & mm src <SAME> <SAME>
|
||||
# 01;31 bright red orange EXEC <SAME> <SAME>
|
||||
# 32 green green editable text <SAME> <SAME>
|
||||
# 01;32 bright green base01 unimportant text <SAME>
|
||||
# 33 yellow yellow unclear in light bg multimedia <SAME> <SAME>
|
||||
# 01;33 bright yellow base00 fg of SolLight unimportant non-text
|
||||
# 34 blue blue unclear in dark bg user customized <SAME> <SAME>
|
||||
# 01;34 bright blue base0 fg in SolDark unimportant text
|
||||
# 35 magenta magenta LINK <SAME> <SAME>
|
||||
# 01;35 bright magenta violet archive/compressed <SAME> <SAME>
|
||||
# 36 cyan cyan DIR <SAME> <SAME>
|
||||
# 01;36 bright cyan base1 unimportant non-text <SAME>
|
||||
# 37 white base2
|
||||
# 01;37 bright white base3 bg in SolLight
|
||||
# 05;37;41 unclear in Putty dark
|
||||
|
||||
|
||||
### By file type
|
||||
|
||||
# global default
|
||||
NORMAL 00
|
||||
# normal file
|
||||
FILE 00
|
||||
# directory
|
||||
DIR 34
|
||||
# 777 directory
|
||||
OTHER_WRITABLE 34;40
|
||||
# symbolic link
|
||||
LINK 35
|
||||
|
||||
# pipe, socket, block device, character device (blue bg)
|
||||
FIFO 30;44
|
||||
SOCK 35;44
|
||||
DOOR 35;44 # Solaris 2.5 and later
|
||||
BLK 33;44
|
||||
CHR 37;44
|
||||
|
||||
|
||||
#############################################################################
|
||||
### By file attributes
|
||||
|
||||
# Orphaned symlinks (blinking white on red)
|
||||
# Blink may or may not work (works on iTerm dark or light, and Putty dark)
|
||||
ORPHAN 05;37;41
|
||||
# ... and the files that orphaned symlinks point to (blinking white on red)
|
||||
MISSING 05;37;41
|
||||
|
||||
# files with execute permission
|
||||
EXEC 01;31 # Unix
|
||||
.cmd 01;31 # Win
|
||||
.exe 01;31 # Win
|
||||
.com 01;31 # Win
|
||||
.bat 01;31 # Win
|
||||
.reg 01;31 # Win
|
||||
.app 01;31 # OSX
|
||||
|
||||
#############################################################################
|
||||
### By extension
|
||||
|
||||
# List any file extensions like '.gz' or '.tar' that you would like ls
|
||||
# to colorize below. Put the extension, a space, and the color init string.
|
||||
# (and any comments you want to add after a '#')
|
||||
|
||||
### Text formats
|
||||
|
||||
# Text that we can edit with a regular editor
|
||||
.txt 32
|
||||
.org 32
|
||||
.md 32
|
||||
.mkd 32
|
||||
|
||||
# Source text
|
||||
.h 32
|
||||
.hpp 32
|
||||
.c 32
|
||||
.C 32
|
||||
.cc 32
|
||||
.cpp 32
|
||||
.cxx 32
|
||||
.objc 32
|
||||
.cl 32
|
||||
.sh 32
|
||||
.bash 32
|
||||
.csh 32
|
||||
.zsh 32
|
||||
.el 32
|
||||
.vim 32
|
||||
.java 32
|
||||
.pl 32
|
||||
.pm 32
|
||||
.py 32
|
||||
.rb 32
|
||||
.hs 32
|
||||
.php 32
|
||||
.htm 32
|
||||
.html 32
|
||||
.shtml 32
|
||||
.erb 32
|
||||
.haml 32
|
||||
.xml 32
|
||||
.rdf 32
|
||||
.css 32
|
||||
.sass 32
|
||||
.scss 32
|
||||
.less 32
|
||||
.js 32
|
||||
.coffee 32
|
||||
.man 32
|
||||
.0 32
|
||||
.1 32
|
||||
.2 32
|
||||
.3 32
|
||||
.4 32
|
||||
.5 32
|
||||
.6 32
|
||||
.7 32
|
||||
.8 32
|
||||
.9 32
|
||||
.l 32
|
||||
.n 32
|
||||
.p 32
|
||||
.pod 32
|
||||
.tex 32
|
||||
.go 32
|
||||
.sql 32
|
||||
.csv 32
|
||||
.sv 32
|
||||
.svh 32
|
||||
.v 32
|
||||
.vh 32
|
||||
.vhd 32
|
||||
|
||||
### Multimedia formats
|
||||
|
||||
# Image
|
||||
.bmp 33
|
||||
.cgm 33
|
||||
.dl 33
|
||||
.dvi 33
|
||||
.emf 33
|
||||
.eps 33
|
||||
.gif 33
|
||||
.jpeg 33
|
||||
.jpg 33
|
||||
.JPG 33
|
||||
.mng 33
|
||||
.pbm 33
|
||||
.pcx 33
|
||||
.pdf 33
|
||||
.pgm 33
|
||||
.png 33
|
||||
.PNG 33
|
||||
.ppm 33
|
||||
.pps 33
|
||||
.ppsx 33
|
||||
.ps 33
|
||||
.svg 33
|
||||
.svgz 33
|
||||
.tga 33
|
||||
.tif 33
|
||||
.tiff 33
|
||||
.xbm 33
|
||||
.xcf 33
|
||||
.xpm 33
|
||||
.xwd 33
|
||||
.xwd 33
|
||||
.yuv 33
|
||||
|
||||
# Audio
|
||||
.aac 33
|
||||
.au 33
|
||||
.flac 33
|
||||
.m4a 33
|
||||
.mid 33
|
||||
.midi 33
|
||||
.mka 33
|
||||
.mp3 33
|
||||
.mpa 33
|
||||
.mpeg 33
|
||||
.mpg 33
|
||||
.ogg 33
|
||||
.opus 33
|
||||
.ra 33
|
||||
.wav 33
|
||||
|
||||
# Video
|
||||
.anx 33
|
||||
.asf 33
|
||||
.avi 33
|
||||
.axv 33
|
||||
.flc 33
|
||||
.fli 33
|
||||
.flv 33
|
||||
.gl 33
|
||||
.m2v 33
|
||||
.m4v 33
|
||||
.mkv 33
|
||||
.mov 33
|
||||
.MOV 33
|
||||
.mp4 33
|
||||
.mp4v 33
|
||||
.mpeg 33
|
||||
.mpg 33
|
||||
.nuv 33
|
||||
.ogm 33
|
||||
.ogv 33
|
||||
.ogx 33
|
||||
.qt 33
|
||||
.rm 33
|
||||
.rmvb 33
|
||||
.swf 33
|
||||
.vob 33
|
||||
.webm 33
|
||||
.wmv 33
|
||||
|
||||
### Misc
|
||||
|
||||
# Binary document formats and multimedia source
|
||||
.doc 31
|
||||
.docx 31
|
||||
.rtf 31
|
||||
.odt 31
|
||||
.dot 31
|
||||
.dotx 31
|
||||
.ott 31
|
||||
.xls 31
|
||||
.xlsx 31
|
||||
.ods 31
|
||||
.ots 31
|
||||
.ppt 31
|
||||
.pptx 31
|
||||
.odp 31
|
||||
.otp 31
|
||||
.fla 31
|
||||
.psd 31
|
||||
|
||||
# Archives, compressed
|
||||
.7z 1;35
|
||||
.apk 1;35
|
||||
.arj 1;35
|
||||
.bin 1;35
|
||||
.bz 1;35
|
||||
.bz2 1;35
|
||||
.cab 1;35 # Win
|
||||
.deb 1;35
|
||||
.dmg 1;35 # OSX
|
||||
.gem 1;35
|
||||
.gz 1;35
|
||||
.iso 1;35
|
||||
.jar 1;35
|
||||
.msi 1;35 # Win
|
||||
.rar 1;35
|
||||
.rpm 1;35
|
||||
.tar 1;35
|
||||
.tbz 1;35
|
||||
.tbz2 1;35
|
||||
.tgz 1;35
|
||||
.tx 1;35
|
||||
.war 1;35
|
||||
.xpi 1;35
|
||||
.xz 1;35
|
||||
.z 1;35
|
||||
.Z 1;35
|
||||
.zip 1;35
|
||||
|
||||
# For testing
|
||||
.ANSI-30-black 30
|
||||
.ANSI-01;30-brblack 01;30
|
||||
.ANSI-31-red 31
|
||||
.ANSI-01;31-brred 01;31
|
||||
.ANSI-32-green 32
|
||||
.ANSI-01;32-brgreen 01;32
|
||||
.ANSI-33-yellow 33
|
||||
.ANSI-01;33-bryellow 01;33
|
||||
.ANSI-34-blue 34
|
||||
.ANSI-01;34-brblue 01;34
|
||||
.ANSI-35-magenta 35
|
||||
.ANSI-01;35-brmagenta 01;35
|
||||
.ANSI-36-cyan 36
|
||||
.ANSI-01;36-brcyan 01;36
|
||||
.ANSI-37-white 37
|
||||
.ANSI-01;37-brwhite 01;37
|
||||
|
||||
#############################################################################
|
||||
# Your customizations
|
||||
|
||||
# Unimportant text files
|
||||
# For universal scheme, use brightgreen 01;32
|
||||
# For optimal on light bg (but too prominent on dark bg), use white 01;34
|
||||
.log 01;32
|
||||
*~ 01;32
|
||||
*# 01;32
|
||||
#.log 01;34
|
||||
#*~ 01;34
|
||||
#*# 01;34
|
||||
|
||||
# Unimportant non-text files
|
||||
# For universal scheme, use brightcyan 01;36
|
||||
# For optimal on dark bg (but too prominent on light bg), change to 01;33
|
||||
#.bak 01;36
|
||||
#.BAK 01;36
|
||||
#.old 01;36
|
||||
#.OLD 01;36
|
||||
#.org_archive 01;36
|
||||
#.off 01;36
|
||||
#.OFF 01;36
|
||||
#.dist 01;36
|
||||
#.DIST 01;36
|
||||
#.orig 01;36
|
||||
#.ORIG 01;36
|
||||
#.swp 01;36
|
||||
#.swo 01;36
|
||||
#*,v 01;36
|
||||
.bak 01;33
|
||||
.BAK 01;33
|
||||
.old 01;33
|
||||
.OLD 01;33
|
||||
.org_archive 01;33
|
||||
.off 01;33
|
||||
.OFF 01;33
|
||||
.dist 01;33
|
||||
.DIST 01;33
|
||||
.orig 01;33
|
||||
.ORIG 01;33
|
||||
.swp 01;33
|
||||
.swo 01;33
|
||||
*,v 01;33
|
||||
|
||||
# The brightmagenta (Solarized: purple) color is free for you to use for your
|
||||
# custom file type
|
||||
.gpg 34
|
||||
.gpg 34
|
||||
.pgp 34
|
||||
.asc 34
|
||||
.3des 34
|
||||
.aes 34
|
||||
.enc 34
|
||||
.sqlite 34
|
||||
|
||||
73
dotfiles/env
Normal file → Executable file
73
dotfiles/env
Normal file → Executable file
@@ -1,24 +1,81 @@
|
||||
# Sourced by zshrc as well as bash.
|
||||
# Should only use POSIX shell constructs.
|
||||
|
||||
umask 027
|
||||
ulimit -c unlimited
|
||||
|
||||
# Paths and preferences
|
||||
export PATH="$HOME/bin:/sbin:/usr/sbin:$PATH"
|
||||
export PYTHONPATH="$HOME/.python:$PYTHONPATH"
|
||||
export GOPATH="$HOME/.go"
|
||||
export GOPATH="$HOME/Projects/Go:/usr/share/gocode"
|
||||
export PATH="$HOME/bin:$HOME/bin/tools:/sbin:/usr/sbin:$PATH:$HOME/Projects/Go/bin"
|
||||
export VISUAL=vim
|
||||
export EDITOR=vim
|
||||
export DEBEMAIL="david@systemoverlord.com"
|
||||
export DEBFULLNAME="David Tomaschik"
|
||||
export LESS="-MR"
|
||||
|
||||
# Unconditional because /bin/sh sucks
|
||||
export PATH="$PATH:$HOME/.gce/google-cloud-sdk/bin:$HOME/bin/genymotion:$HOME/bin/genymotion/tools:$HOME/bin/google_appengine:$HOME/bin/go_appengine"
|
||||
export QUOTING_STYLE="literal" # Coreutils quotes
|
||||
|
||||
# Fix gnome-terminal
|
||||
if [[ $TERM == "xterm" && $COLORTERM == "gnome-terminal" ]] ; then
|
||||
if [ "$TERM" = "xterm" ] && [ "$COLORTERM" = "gnome-terminal" ] ; then
|
||||
# Requires `ncurses-base` package for terminfo.
|
||||
export TERM="xterm-256color"
|
||||
fi
|
||||
|
||||
if [[ -e $HOME/.localenv ]] ; then source $HOME/.localenv ; fi
|
||||
# Terminal preferences for i3
|
||||
if [ -z "${TERMINAL}" ] ; then
|
||||
for t in urxvt gnome-terminal; do
|
||||
if TERMINAL=$(command -v ${t}) ; then
|
||||
export TERMINAL
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Browser preferences
|
||||
if [ -z "${BROWSER}" ] ; then
|
||||
for t in google-chrome-beta google-chrome firefox ; do
|
||||
if BROWSER=$(command -v ${t}); then
|
||||
export BROWSER
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# For virtualenvwrapper
|
||||
export WORKON_HOME=$HOME/.virtualenvs
|
||||
|
||||
# GPG full key id
|
||||
export GPG_ID=7FD58D9A196DCEEEAD671F94F4D7A7915DEA789B
|
||||
|
||||
# Setup locale
|
||||
if test -x /usr/bin/locale ; then
|
||||
for l in en_US.utf8 en_US.UTF-8 C.UTF-8 C ; do
|
||||
if /usr/bin/locale -a | grep -q "${l}" ; then
|
||||
export LC_CTYPE=${l}
|
||||
export LC_NUMERIC=${l}
|
||||
export LC_TIME=${l}
|
||||
export LC_MONETARY=${l}
|
||||
export LC_MESSAGES=${l}
|
||||
export LC_PAPER=${l}
|
||||
export LC_NAME=${l}
|
||||
export LC_ADDRESS=${l}
|
||||
export LC_TELEPHONE=${l}
|
||||
export LC_MEASUREMENT=${l}
|
||||
export LC_IDENTIFICATION=${l}
|
||||
break
|
||||
fi
|
||||
done
|
||||
else
|
||||
export LC_CTYPE=C
|
||||
export LC_NUMERIC=C
|
||||
export LC_TIME=C
|
||||
export LC_MONETARY=C
|
||||
export LC_MESSAGES=C
|
||||
export LC_PAPER=C
|
||||
export LC_NAME=C
|
||||
export LC_ADDRESS=C
|
||||
export LC_TELEPHONE=C
|
||||
export LC_MEASUREMENT=C
|
||||
export LC_IDENTIFICATION=C
|
||||
fi
|
||||
export LC_COLLATE=C
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
test -e "$HOME/.localenv" && . "$HOME/.localenv"
|
||||
|
||||
@@ -22,5 +22,22 @@ define reg
|
||||
info registers
|
||||
end
|
||||
|
||||
source ~/.peda/peda.py
|
||||
source ~/.gdbinit.local
|
||||
# Fancy sourcing of modules
|
||||
python
|
||||
import sys
|
||||
import os.path
|
||||
gef = os.path.expanduser('~/tools/gef/gef.py')
|
||||
pwndbg = os.path.expanduser('~/tools/pwndbg/gdbinit.py')
|
||||
peda = os.path.expanduser('~/.peda/peda.py')
|
||||
if os.path.isfile(gef):
|
||||
gdb.execute('source {}'.format(gef))
|
||||
elif os.path.isfile(pwndbg):
|
||||
sys.path.insert(0, os.path.expanduser('~/tools/pwndbg/vendor'))
|
||||
gdb.execute('source {}'.format(pwndbg))
|
||||
elif os.path.isfile(peda):
|
||||
gdb.execute('source {}'.format(peda))
|
||||
|
||||
local_init = os.path.expanduser('~/.gdbinit.local')
|
||||
if os.path.isfile(local_init):
|
||||
gdb.execute('source {}'.format(local_init))
|
||||
end
|
||||
|
||||
125
dotfiles/gef.rc
Normal file
125
dotfiles/gef.rc
Normal file
@@ -0,0 +1,125 @@
|
||||
[context]
|
||||
clear_screen = False
|
||||
enable = True
|
||||
grow_stack_down = False
|
||||
ignore_registers =
|
||||
layout = legend regs stack code args source memory threads trace extra
|
||||
nb_lines_backtrace = 10
|
||||
nb_lines_code = 6
|
||||
nb_lines_code_prev = 3
|
||||
nb_lines_stack = 8
|
||||
nb_lines_threads = -1
|
||||
peek_calls = True
|
||||
peek_ret = True
|
||||
redirect =
|
||||
show_registers_raw = False
|
||||
show_stack_raw = False
|
||||
|
||||
[dereference]
|
||||
max_recursion = 7
|
||||
|
||||
[entry-break]
|
||||
entrypoint_symbols = main _main __libc_start_main __uClibc_main start _start
|
||||
|
||||
[gef-remote]
|
||||
clean_on_exit = False
|
||||
|
||||
[gef]
|
||||
autosave_breakpoints_file =
|
||||
debug = False
|
||||
disable_color = False
|
||||
extra_plugins_dir =
|
||||
follow_child = True
|
||||
readline_compat = False
|
||||
|
||||
[got]
|
||||
function_not_resolved = yellow
|
||||
function_resolved = green
|
||||
|
||||
[heap-analysis-helper]
|
||||
check_double_free = True
|
||||
check_free_null = False
|
||||
check_heap_overlap = True
|
||||
check_uaf = True
|
||||
check_weird_free = True
|
||||
|
||||
[heap-chunks]
|
||||
peek_nb_byte = 16
|
||||
|
||||
[hexdump]
|
||||
always_show_ascii = False
|
||||
|
||||
[highlight]
|
||||
regex = False
|
||||
|
||||
[ida-interact]
|
||||
host = 127.0.0.1
|
||||
port = 1337
|
||||
sync_cursor = False
|
||||
|
||||
[pattern]
|
||||
length = 1024
|
||||
|
||||
[pcustom]
|
||||
struct_path = /tmp/gef/structs
|
||||
|
||||
[process-search]
|
||||
ps_command = /bin/ps auxww
|
||||
|
||||
[syscall-args]
|
||||
path = /tmp/gef/syscall-tables
|
||||
|
||||
[theme]
|
||||
address_code = red
|
||||
address_heap = green
|
||||
address_stack = pink
|
||||
context_title_line = gray
|
||||
context_title_message = cyan
|
||||
default_title_line = gray
|
||||
default_title_message = cyan
|
||||
dereference_base_address = cyan
|
||||
dereference_code = gray
|
||||
dereference_register_value = bold blue
|
||||
dereference_string = yellow
|
||||
disassemble_current_instruction = green
|
||||
registers_register_name = blue
|
||||
registers_value_changed = bold red
|
||||
source_current_line = green
|
||||
table_heading = blue
|
||||
|
||||
[trace-run]
|
||||
max_tracing_recursion = 1
|
||||
tracefile_prefix = ./gef-trace-
|
||||
|
||||
[aliases]
|
||||
pf = print-format
|
||||
status = process-status
|
||||
binaryninja-interact = ida-interact
|
||||
bn = ida-interact
|
||||
binja = ida-interact
|
||||
lookup = scan
|
||||
grep = search-pattern
|
||||
xref = search-pattern
|
||||
flags = edit-flags
|
||||
sc-search = shellcode search
|
||||
sc-get = shellcode get
|
||||
ps = process-search
|
||||
start = entry-break
|
||||
nb = name-break
|
||||
ctx = context
|
||||
telescope = dereference
|
||||
pattern offset = pattern search
|
||||
hl = highlight
|
||||
highlight ls = highlight list
|
||||
hll = highlight list
|
||||
hlc = highlight clear
|
||||
highlight set = highlight add
|
||||
hla = highlight add
|
||||
highlight delete = highlight remove
|
||||
highlight del = highlight remove
|
||||
highlight unset = highlight remove
|
||||
highlight rm = highlight remove
|
||||
hlr = highlight remove
|
||||
fmtstr-helper = format-string-helper
|
||||
screen-setup = tmux-setup
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
[user]
|
||||
name = David Tomaschik
|
||||
email = david@systemoverlord.com
|
||||
signingKey = 0x5DEA789B
|
||||
|
||||
[core]
|
||||
@@ -23,9 +22,12 @@
|
||||
last = log -1 HEAD
|
||||
# Thanks to
|
||||
# http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
|
||||
ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
||||
logs = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
||||
lg = log -p
|
||||
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
|
||||
files = ls-files
|
||||
ls = ls-files
|
||||
lol = log --graph --pretty=format:'%C(yellow)%h%Creset %an: %s - %Creset %C(yellow)%d%Creset %Cblue(%cr)%Creset' --abbrev-commit --date=relative
|
||||
f = "!git ls-files | grep -i"
|
||||
logtree = log --graph --oneline --decorate --all
|
||||
|
||||
@@ -39,11 +41,13 @@
|
||||
user = matir
|
||||
|
||||
# Site specific config
|
||||
[url "https://github.com/"]
|
||||
insteadOf = github://
|
||||
[url "https://github.com./"]
|
||||
insteadOf = "github:"
|
||||
insteadOf = "github://"
|
||||
|
||||
[url "ssh://git@github.com/"]
|
||||
pushInsteadOf = github://
|
||||
pushInsteadOf = "github:"
|
||||
pushInsteadOf = "github://"
|
||||
|
||||
[url "git://gist.github.com/"]
|
||||
insteadOf = "gist:"
|
||||
@@ -51,5 +55,19 @@
|
||||
[url "git@gist.github.com:"]
|
||||
pushInsteadOf = "gist:"
|
||||
pushInsteadOf = "git://gist.github.com/"
|
||||
|
||||
[credential]
|
||||
helper = cache --timeout=36000
|
||||
[receive]
|
||||
denyCurrentBranch = updateInstead
|
||||
[merge]
|
||||
tool = vimdiff
|
||||
conflictstyle = diff3
|
||||
[mergetool]
|
||||
prompt = false
|
||||
[include]
|
||||
path = ~/.gitconfig.local
|
||||
[pull]
|
||||
rebase = false
|
||||
[init]
|
||||
defaultBranch = main
|
||||
|
||||
@@ -17,3 +17,6 @@ Thumbs.db
|
||||
# Try to avoid accidentally checking in private keys
|
||||
id_rsa
|
||||
id_ecdsa
|
||||
|
||||
# Kicad backup files
|
||||
*.kicad_pcb-bak
|
||||
|
||||
1
dotfiles/gnupg/dirmngr.conf
Normal file
1
dotfiles/gnupg/dirmngr.conf
Normal file
@@ -0,0 +1 @@
|
||||
keyserver hkps://keys.openpgp.org
|
||||
@@ -1,5 +1,5 @@
|
||||
use-standard-socket
|
||||
default-cache-ttl 7200
|
||||
default-cache-ttl-ssh 7200
|
||||
max-cache-ttl 86400
|
||||
max-cache-ttl-ssh 86400
|
||||
enable-ssh-support
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
use-agent
|
||||
# HKPS requires gnupg-curl for gpg1
|
||||
keyserver hkps://hkps.pool.sks-keyservers.net
|
||||
# Unfortunately, the path must be fully-qualified
|
||||
keyserver-options auto-key-retrieve ca-cert-file=/home/david/.gnupg/sks-keyservers.pem
|
||||
keyserver hkps://keys.openpgp.org
|
||||
keyserver-options auto-key-retrieve no-honor-keyserver-url
|
||||
auto-key-locate keyserver
|
||||
personal-digest-preferences SHA256
|
||||
cert-digest-algo SHA256
|
||||
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
|
||||
cipher-algo AES256
|
||||
default-key 7FD58D9A196DCEEEAD671F94F4D7A7915DEA789B
|
||||
|
||||
4
dotfiles/inputrc
Normal file
4
dotfiles/inputrc
Normal file
@@ -0,0 +1,4 @@
|
||||
set editing-mode vi
|
||||
|
||||
set keymap vi
|
||||
set convert-meta on
|
||||
7
dotfiles/ipython.py
Normal file
7
dotfiles/ipython.py
Normal file
@@ -0,0 +1,7 @@
|
||||
try:
|
||||
import os, IPython
|
||||
os.environ['PYTHONSTARTUP'] = '' # Prevent running this again
|
||||
IPython.start_ipython()
|
||||
raise SystemExit
|
||||
except ImportError:
|
||||
pass
|
||||
611
dotfiles/ipython/profile_default/ipython_config.py
Normal file
611
dotfiles/ipython/profile_default/ipython_config.py
Normal file
@@ -0,0 +1,611 @@
|
||||
# Configuration file for ipython.
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# InteractiveShellApp(Configurable) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## A Mixin for applications that start InteractiveShell instances.
|
||||
#
|
||||
# Provides configurables for loading extensions and executing files as part of
|
||||
# configuring a Shell environment.
|
||||
#
|
||||
# The following methods should be called by the :meth:`initialize` method of the
|
||||
# subclass:
|
||||
#
|
||||
# - :meth:`init_path`
|
||||
# - :meth:`init_shell` (to be implemented by the subclass)
|
||||
# - :meth:`init_gui_pylab`
|
||||
# - :meth:`init_extensions`
|
||||
# - :meth:`init_code`
|
||||
|
||||
## Execute the given command string.
|
||||
#c.InteractiveShellApp.code_to_run = ''
|
||||
|
||||
## Run the file referenced by the PYTHONSTARTUP environment variable at IPython
|
||||
# startup.
|
||||
c.InteractiveShellApp.exec_PYTHONSTARTUP = False
|
||||
|
||||
## List of files to run at IPython startup.
|
||||
#c.InteractiveShellApp.exec_files = []
|
||||
|
||||
## lines of code to run at IPython startup.
|
||||
#c.InteractiveShellApp.exec_lines = []
|
||||
|
||||
## A list of dotted module names of IPython extensions to load.
|
||||
#c.InteractiveShellApp.extensions = []
|
||||
|
||||
## dotted module name of an IPython extension to load.
|
||||
#c.InteractiveShellApp.extra_extension = ''
|
||||
|
||||
## A file to be run
|
||||
#c.InteractiveShellApp.file_to_run = ''
|
||||
|
||||
## Enable GUI event loop integration with any of ('glut', 'gtk', 'gtk2', 'gtk3',
|
||||
# 'osx', 'pyglet', 'qt', 'qt4', 'qt5', 'tk', 'wx', 'gtk2', 'qt4').
|
||||
#c.InteractiveShellApp.gui = None
|
||||
|
||||
## Should variables loaded at startup (by startup files, exec_lines, etc.) be
|
||||
# hidden from tools like %who?
|
||||
#c.InteractiveShellApp.hide_initial_ns = True
|
||||
|
||||
## Configure matplotlib for interactive use with the default matplotlib backend.
|
||||
#c.InteractiveShellApp.matplotlib = None
|
||||
|
||||
## Run the module as a script.
|
||||
#c.InteractiveShellApp.module_to_run = ''
|
||||
|
||||
## Pre-load matplotlib and numpy for interactive use, selecting a particular
|
||||
# matplotlib backend and loop integration.
|
||||
#c.InteractiveShellApp.pylab = None
|
||||
|
||||
## If true, IPython will populate the user namespace with numpy, pylab, etc. and
|
||||
# an ``import *`` is done from numpy and pylab, when using pylab mode.
|
||||
#
|
||||
# When False, pylab mode should not import any names into the user namespace.
|
||||
#c.InteractiveShellApp.pylab_import_all = True
|
||||
|
||||
## Reraise exceptions encountered loading IPython extensions?
|
||||
#c.InteractiveShellApp.reraise_ipython_extension_failures = False
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Application(SingletonConfigurable) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## This is an application.
|
||||
|
||||
## The date format used by logging formatters for %(asctime)s
|
||||
#c.Application.log_datefmt = '%Y-%m-%d %H:%M:%S'
|
||||
|
||||
## The Logging format template
|
||||
#c.Application.log_format = '[%(name)s]%(highlevel)s %(message)s'
|
||||
|
||||
## Set the log level by value or name.
|
||||
#c.Application.log_level = 30
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# BaseIPythonApplication(Application) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## IPython: an enhanced interactive Python shell.
|
||||
|
||||
## Whether to create profile dir if it doesn't exist
|
||||
#c.BaseIPythonApplication.auto_create = False
|
||||
|
||||
## Whether to install the default config files into the profile dir. If a new
|
||||
# profile is being created, and IPython contains config files for that profile,
|
||||
# then they will be staged into the new directory. Otherwise, default config
|
||||
# files will be automatically generated.
|
||||
#c.BaseIPythonApplication.copy_config_files = False
|
||||
|
||||
## Path to an extra config file to load.
|
||||
#
|
||||
# If specified, load this config file in addition to any other IPython config.
|
||||
#c.BaseIPythonApplication.extra_config_file = ''
|
||||
|
||||
## The name of the IPython directory. This directory is used for logging
|
||||
# configuration (through profiles), history storage, etc. The default is usually
|
||||
# $HOME/.ipython. This option can also be specified through the environment
|
||||
# variable IPYTHONDIR.
|
||||
#c.BaseIPythonApplication.ipython_dir = ''
|
||||
|
||||
## Whether to overwrite existing config files when copying
|
||||
#c.BaseIPythonApplication.overwrite = False
|
||||
|
||||
## The IPython profile to use.
|
||||
#c.BaseIPythonApplication.profile = 'default'
|
||||
|
||||
## Create a massive crash report when IPython encounters what may be an internal
|
||||
# error. The default is to append a short message to the usual traceback
|
||||
#c.BaseIPythonApplication.verbose_crash = False
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# TerminalIPythonApp(BaseIPythonApplication,InteractiveShellApp) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Whether to display a banner upon starting IPython.
|
||||
#c.TerminalIPythonApp.display_banner = True
|
||||
|
||||
## If a command or file is given via the command-line, e.g. 'ipython foo.py',
|
||||
# start an interactive shell after executing the file or command.
|
||||
#c.TerminalIPythonApp.force_interact = False
|
||||
|
||||
## Class to use to instantiate the TerminalInteractiveShell object. Useful for
|
||||
# custom Frontends
|
||||
#c.TerminalIPythonApp.interactive_shell_class = 'IPython.terminal.interactiveshell.TerminalInteractiveShell'
|
||||
|
||||
## Start IPython quickly by skipping the loading of config files.
|
||||
#c.TerminalIPythonApp.quick = False
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# InteractiveShell(SingletonConfigurable) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## An enhanced, interactive shell for Python.
|
||||
|
||||
## 'all', 'last', 'last_expr' or 'none', 'last_expr_or_assign' specifying which
|
||||
# nodes should be run interactively (displaying output from expressions).
|
||||
#c.InteractiveShell.ast_node_interactivity = 'last_expr'
|
||||
|
||||
## A list of ast.NodeTransformer subclass instances, which will be applied to
|
||||
# user input before code is run.
|
||||
#c.InteractiveShell.ast_transformers = []
|
||||
|
||||
## Automatically run await statement in the top level repl.
|
||||
#c.InteractiveShell.autoawait = True
|
||||
|
||||
## Make IPython automatically call any callable object even if you didn't type
|
||||
# explicit parentheses. For example, 'str 43' becomes 'str(43)' automatically.
|
||||
# The value can be '0' to disable the feature, '1' for 'smart' autocall, where
|
||||
# it is not applied if there are no more arguments on the line, and '2' for
|
||||
# 'full' autocall, where all callable objects are automatically called (even if
|
||||
# no arguments are present).
|
||||
#c.InteractiveShell.autocall = 0
|
||||
|
||||
## Autoindent IPython code entered interactively.
|
||||
#c.InteractiveShell.autoindent = True
|
||||
|
||||
## Enable magic commands to be called without the leading %.
|
||||
#c.InteractiveShell.automagic = True
|
||||
|
||||
## The part of the banner to be printed before the profile
|
||||
#c.InteractiveShell.banner1 = "Python 3.7.3rc1 (default, Mar 13 2019, 11:01:15) \nType 'copyright', 'credits' or 'license' for more information\nIPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.\n"
|
||||
|
||||
## The part of the banner to be printed after the profile
|
||||
#c.InteractiveShell.banner2 = ''
|
||||
|
||||
## Set the size of the output cache. The default is 1000, you can change it
|
||||
# permanently in your config file. Setting it to 0 completely disables the
|
||||
# caching system, and the minimum value accepted is 3 (if you provide a value
|
||||
# less than 3, it is reset to 0 and a warning is issued). This limit is defined
|
||||
# because otherwise you'll spend more time re-flushing a too small cache than
|
||||
# working
|
||||
#c.InteractiveShell.cache_size = 1000
|
||||
|
||||
## Use colors for displaying information about objects. Because this information
|
||||
# is passed through a pager (like 'less'), and some pagers get confused with
|
||||
# color codes, this capability can be turned off.
|
||||
#c.InteractiveShell.color_info = True
|
||||
|
||||
## Set the color scheme (NoColor, Neutral, Linux, or LightBG).
|
||||
#c.InteractiveShell.colors = 'Neutral'
|
||||
|
||||
##
|
||||
#c.InteractiveShell.debug = False
|
||||
|
||||
## Don't call post-execute functions that have failed in the past.
|
||||
#c.InteractiveShell.disable_failing_post_execute = False
|
||||
|
||||
## If True, anything that would be passed to the pager will be displayed as
|
||||
# regular output instead.
|
||||
#c.InteractiveShell.display_page = False
|
||||
|
||||
## (Provisional API) enables html representation in mime bundles sent to pagers.
|
||||
#c.InteractiveShell.enable_html_pager = False
|
||||
|
||||
## Total length of command history
|
||||
#c.InteractiveShell.history_length = 10000
|
||||
|
||||
## The number of saved history entries to be loaded into the history buffer at
|
||||
# startup.
|
||||
#c.InteractiveShell.history_load_length = 1000
|
||||
|
||||
##
|
||||
#c.InteractiveShell.ipython_dir = ''
|
||||
|
||||
## Start logging to the given file in append mode. Use `logfile` to specify a log
|
||||
# file to **overwrite** logs to.
|
||||
#c.InteractiveShell.logappend = ''
|
||||
|
||||
## The name of the logfile to use.
|
||||
#c.InteractiveShell.logfile = ''
|
||||
|
||||
## Start logging to the default log file in overwrite mode. Use `logappend` to
|
||||
# specify a log file to **append** logs to.
|
||||
#c.InteractiveShell.logstart = False
|
||||
|
||||
## Select the loop runner that will be used to execute top-level asynchronous
|
||||
# code
|
||||
#c.InteractiveShell.loop_runner = 'IPython.core.interactiveshell._asyncio_runner'
|
||||
|
||||
##
|
||||
#c.InteractiveShell.object_info_string_level = 0
|
||||
|
||||
## Automatically call the pdb debugger after every exception.
|
||||
#c.InteractiveShell.pdb = False
|
||||
|
||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
||||
# TerminalInteractiveShell.prompts object directly.
|
||||
#c.InteractiveShell.prompt_in1 = 'In [\\#]: '
|
||||
|
||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
||||
# TerminalInteractiveShell.prompts object directly.
|
||||
#c.InteractiveShell.prompt_in2 = ' .\\D.: '
|
||||
|
||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
||||
# TerminalInteractiveShell.prompts object directly.
|
||||
#c.InteractiveShell.prompt_out = 'Out[\\#]: '
|
||||
|
||||
## Deprecated since IPython 4.0 and ignored since 5.0, set
|
||||
# TerminalInteractiveShell.prompts object directly.
|
||||
#c.InteractiveShell.prompts_pad_left = True
|
||||
|
||||
##
|
||||
#c.InteractiveShell.quiet = False
|
||||
|
||||
##
|
||||
#c.InteractiveShell.separate_in = '\n'
|
||||
|
||||
##
|
||||
#c.InteractiveShell.separate_out = ''
|
||||
|
||||
##
|
||||
#c.InteractiveShell.separate_out2 = ''
|
||||
|
||||
## Show rewritten input, e.g. for autocall.
|
||||
#c.InteractiveShell.show_rewritten_input = True
|
||||
|
||||
## Enables rich html representation of docstrings. (This requires the docrepr
|
||||
# module).
|
||||
#c.InteractiveShell.sphinxify_docstring = False
|
||||
|
||||
##
|
||||
#c.InteractiveShell.wildcards_case_sensitive = True
|
||||
|
||||
## Switch modes for the IPython exception handlers.
|
||||
#c.InteractiveShell.xmode = 'Context'
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# TerminalInteractiveShell(InteractiveShell) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Set to confirm when you try to exit IPython with an EOF (Control-D in Unix,
|
||||
# Control-Z/Enter in Windows). By typing 'exit' or 'quit', you can force a
|
||||
# direct exit without any confirmation.
|
||||
#c.TerminalInteractiveShell.confirm_exit = True
|
||||
|
||||
## Options for displaying tab completions, 'column', 'multicolumn', and
|
||||
# 'readlinelike'. These options are for `prompt_toolkit`, see `prompt_toolkit`
|
||||
# documentation for more information.
|
||||
#c.TerminalInteractiveShell.display_completions = 'multicolumn'
|
||||
|
||||
## Shortcut style to use at the prompt. 'vi' or 'emacs'.
|
||||
c.TerminalInteractiveShell.editing_mode = 'vi'
|
||||
|
||||
## Set the editor used by IPython (default to $EDITOR/vi/notepad).
|
||||
#c.TerminalInteractiveShell.editor = 'vim'
|
||||
|
||||
## Allows to enable/disable the prompt toolkit history search
|
||||
#c.TerminalInteractiveShell.enable_history_search = True
|
||||
|
||||
## Enable vi (v) or Emacs (C-X C-E) shortcuts to open an external editor. This is
|
||||
# in addition to the F2 binding, which is always enabled.
|
||||
#c.TerminalInteractiveShell.extra_open_editor_shortcuts = False
|
||||
|
||||
## Provide an alternative handler to be called when the user presses Return. This
|
||||
# is an advanced option intended for debugging, which may be changed or removed
|
||||
# in later releases.
|
||||
#c.TerminalInteractiveShell.handle_return = None
|
||||
|
||||
## Highlight matching brackets.
|
||||
#c.TerminalInteractiveShell.highlight_matching_brackets = True
|
||||
|
||||
## The name or class of a Pygments style to use for syntax highlighting. To see
|
||||
# available styles, run `pygmentize -L styles`.
|
||||
#c.TerminalInteractiveShell.highlighting_style = traitlets.Undefined
|
||||
|
||||
## Override highlighting format for specific tokens
|
||||
#c.TerminalInteractiveShell.highlighting_style_overrides = {}
|
||||
|
||||
## Enable mouse support in the prompt (Note: prevents selecting text with the
|
||||
# mouse)
|
||||
#c.TerminalInteractiveShell.mouse_support = False
|
||||
|
||||
## Display the current vi mode (when using vi editing mode).
|
||||
#c.TerminalInteractiveShell.prompt_includes_vi_mode = True
|
||||
|
||||
## Class used to generate Prompt token for prompt_toolkit
|
||||
#c.TerminalInteractiveShell.prompts_class = 'IPython.terminal.prompts.Prompts'
|
||||
|
||||
## Use `raw_input` for the REPL, without completion and prompt colors.
|
||||
#
|
||||
# Useful when controlling IPython as a subprocess, and piping STDIN/OUT/ERR.
|
||||
# Known usage are: IPython own testing machinery, and emacs inferior-shell
|
||||
# integration through elpy.
|
||||
#
|
||||
# This mode default to `True` if the `IPY_TEST_SIMPLE_PROMPT` environment
|
||||
# variable is set, or the current terminal is not a tty.
|
||||
#c.TerminalInteractiveShell.simple_prompt = False
|
||||
|
||||
## Number of line at the bottom of the screen to reserve for the completion menu
|
||||
#c.TerminalInteractiveShell.space_for_menu = 6
|
||||
|
||||
## Automatically set the terminal title
|
||||
#c.TerminalInteractiveShell.term_title = True
|
||||
|
||||
## Customize the terminal title format. This is a python format string.
|
||||
# Available substitutions are: {cwd}.
|
||||
#c.TerminalInteractiveShell.term_title_format = 'IPython: {cwd}'
|
||||
|
||||
## Use 24bit colors instead of 256 colors in prompt highlighting. If your
|
||||
# terminal supports true color, the following command should print 'TRUECOLOR'
|
||||
# in orange: printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
|
||||
#c.TerminalInteractiveShell.true_color = False
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# HistoryAccessor(HistoryAccessorBase) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Access the history database without adding to it.
|
||||
#
|
||||
# This is intended for use by standalone history tools. IPython shells use
|
||||
# HistoryManager, below, which is a subclass of this.
|
||||
|
||||
## Options for configuring the SQLite connection
|
||||
#
|
||||
# These options are passed as keyword args to sqlite3.connect when establishing
|
||||
# database connections.
|
||||
#c.HistoryAccessor.connection_options = {}
|
||||
|
||||
## enable the SQLite history
|
||||
#
|
||||
# set enabled=False to disable the SQLite history, in which case there will be
|
||||
# no stored history, no SQLite connection, and no background saving thread.
|
||||
# This may be necessary in some threaded environments where IPython is embedded.
|
||||
#c.HistoryAccessor.enabled = True
|
||||
|
||||
## Path to file to use for SQLite history database.
|
||||
#
|
||||
# By default, IPython will put the history database in the IPython profile
|
||||
# directory. If you would rather share one history among profiles, you can set
|
||||
# this value in each, so that they are consistent.
|
||||
#
|
||||
# Due to an issue with fcntl, SQLite is known to misbehave on some NFS mounts.
|
||||
# If you see IPython hanging, try setting this to something on a local disk,
|
||||
# e.g::
|
||||
#
|
||||
# ipython --HistoryManager.hist_file=/tmp/ipython_hist.sqlite
|
||||
#
|
||||
# you can also use the specific value `:memory:` (including the colon at both
|
||||
# end but not the back ticks), to avoid creating an history file.
|
||||
#c.HistoryAccessor.hist_file = ''
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# HistoryManager(HistoryAccessor) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## A class to organize all history-related functionality in one place.
|
||||
|
||||
## Write to database every x commands (higher values save disk access & power).
|
||||
# Values of 1 or less effectively disable caching.
|
||||
#c.HistoryManager.db_cache_size = 0
|
||||
|
||||
## Should the history database include output? (default: no)
|
||||
#c.HistoryManager.db_log_output = False
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# ProfileDir(LoggingConfigurable) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## An object to manage the profile directory and its resources.
|
||||
#
|
||||
# The profile directory is used by all IPython applications, to manage
|
||||
# configuration, logging and security.
|
||||
#
|
||||
# This object knows how to find, create and manage these directories. This
|
||||
# should be used by any code that wants to handle profiles.
|
||||
|
||||
## Set the profile location directly. This overrides the logic used by the
|
||||
# `profile` option.
|
||||
#c.ProfileDir.location = ''
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# BaseFormatter(Configurable) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## A base formatter class that is configurable.
|
||||
#
|
||||
# This formatter should usually be used as the base class of all formatters. It
|
||||
# is a traited :class:`Configurable` class and includes an extensible API for
|
||||
# users to determine how their objects are formatted. The following logic is
|
||||
# used to find a function to format an given object.
|
||||
#
|
||||
# 1. The object is introspected to see if it has a method with the name
|
||||
# :attr:`print_method`. If is does, that object is passed to that method
|
||||
# for formatting.
|
||||
# 2. If no print method is found, three internal dictionaries are consulted
|
||||
# to find print method: :attr:`singleton_printers`, :attr:`type_printers`
|
||||
# and :attr:`deferred_printers`.
|
||||
#
|
||||
# Users should use these dictionaries to register functions that will be used to
|
||||
# compute the format data for their objects (if those objects don't have the
|
||||
# special print methods). The easiest way of using these dictionaries is through
|
||||
# the :meth:`for_type` and :meth:`for_type_by_name` methods.
|
||||
#
|
||||
# If no function/callable is found to compute the format data, ``None`` is
|
||||
# returned and this format type is not used.
|
||||
|
||||
##
|
||||
#c.BaseFormatter.deferred_printers = {}
|
||||
|
||||
##
|
||||
#c.BaseFormatter.enabled = True
|
||||
|
||||
##
|
||||
#c.BaseFormatter.singleton_printers = {}
|
||||
|
||||
##
|
||||
#c.BaseFormatter.type_printers = {}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# PlainTextFormatter(BaseFormatter) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## The default pretty-printer.
|
||||
#
|
||||
# This uses :mod:`IPython.lib.pretty` to compute the format data of the object.
|
||||
# If the object cannot be pretty printed, :func:`repr` is used. See the
|
||||
# documentation of :mod:`IPython.lib.pretty` for details on how to write pretty
|
||||
# printers. Here is a simple example::
|
||||
#
|
||||
# def dtype_pprinter(obj, p, cycle):
|
||||
# if cycle:
|
||||
# return p.text('dtype(...)')
|
||||
# if hasattr(obj, 'fields'):
|
||||
# if obj.fields is None:
|
||||
# p.text(repr(obj))
|
||||
# else:
|
||||
# p.begin_group(7, 'dtype([')
|
||||
# for i, field in enumerate(obj.descr):
|
||||
# if i > 0:
|
||||
# p.text(',')
|
||||
# p.breakable()
|
||||
# p.pretty(field)
|
||||
# p.end_group(7, '])')
|
||||
|
||||
##
|
||||
#c.PlainTextFormatter.float_precision = ''
|
||||
|
||||
## Truncate large collections (lists, dicts, tuples, sets) to this size.
|
||||
#
|
||||
# Set to 0 to disable truncation.
|
||||
#c.PlainTextFormatter.max_seq_length = 1000
|
||||
|
||||
##
|
||||
#c.PlainTextFormatter.max_width = 79
|
||||
|
||||
##
|
||||
#c.PlainTextFormatter.newline = '\n'
|
||||
|
||||
##
|
||||
#c.PlainTextFormatter.pprint = True
|
||||
|
||||
##
|
||||
#c.PlainTextFormatter.verbose = False
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Completer(Configurable) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Enable unicode completions, e.g. \alpha<tab> . Includes completion of latex
|
||||
# commands, unicode names, and expanding unicode characters back to latex
|
||||
# commands.
|
||||
#c.Completer.backslash_combining_completions = True
|
||||
|
||||
## Enable debug for the Completer. Mostly print extra information for
|
||||
# experimental jedi integration.
|
||||
#c.Completer.debug = False
|
||||
|
||||
## Activate greedy completion PENDING DEPRECTION. this is now mostly taken care
|
||||
# of with Jedi.
|
||||
#
|
||||
# This will enable completion on elements of lists, results of function calls,
|
||||
# etc., but can be unsafe because the code is actually evaluated on TAB.
|
||||
#c.Completer.greedy = False
|
||||
|
||||
## Experimental: restrict time (in milliseconds) during which Jedi can compute
|
||||
# types. Set to 0 to stop computing types. Non-zero value lower than 100ms may
|
||||
# hurt performance by preventing jedi to build its cache.
|
||||
#c.Completer.jedi_compute_type_timeout = 400
|
||||
|
||||
## Experimental: Use Jedi to generate autocompletions. Default to True if jedi is
|
||||
# installed.
|
||||
#c.Completer.use_jedi = True
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# IPCompleter(Completer) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Extension of the completer class with IPython-specific features
|
||||
|
||||
## DEPRECATED as of version 5.0.
|
||||
#
|
||||
# Instruct the completer to use __all__ for the completion
|
||||
#
|
||||
# Specifically, when completing on ``object.<tab>``.
|
||||
#
|
||||
# When True: only those names in obj.__all__ will be included.
|
||||
#
|
||||
# When False [default]: the __all__ attribute is ignored
|
||||
#c.IPCompleter.limit_to__all__ = False
|
||||
|
||||
## Whether to merge completion results into a single list
|
||||
#
|
||||
# If False, only the completion results from the first non-empty completer will
|
||||
# be returned.
|
||||
#c.IPCompleter.merge_completions = True
|
||||
|
||||
## Instruct the completer to omit private method names
|
||||
#
|
||||
# Specifically, when completing on ``object.<tab>``.
|
||||
#
|
||||
# When 2 [default]: all names that start with '_' will be excluded.
|
||||
#
|
||||
# When 1: all 'magic' names (``__foo__``) will be excluded.
|
||||
#
|
||||
# When 0: nothing will be excluded.
|
||||
#c.IPCompleter.omit__names = 2
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# ScriptMagics(Magics) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Magics for talking to scripts
|
||||
#
|
||||
# This defines a base `%%script` cell magic for running a cell with a program in
|
||||
# a subprocess, and registers a few top-level magics that call %%script with
|
||||
# common interpreters.
|
||||
|
||||
## Extra script cell magics to define
|
||||
#
|
||||
# This generates simple wrappers of `%%script foo` as `%%foo`.
|
||||
#
|
||||
# If you want to add script magics that aren't on your path, specify them in
|
||||
# script_paths
|
||||
#c.ScriptMagics.script_magics = []
|
||||
|
||||
## Dict mapping short 'ruby' names to full paths, such as '/opt/secret/bin/ruby'
|
||||
#
|
||||
# Only necessary for items in script_magics where the default path will not find
|
||||
# the right interpreter.
|
||||
#c.ScriptMagics.script_paths = {}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# LoggingMagics(Magics) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Magics related to all logging machinery.
|
||||
|
||||
## Suppress output of log state when logging is enabled
|
||||
#c.LoggingMagics.quiet = False
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# StoreMagics(Magics) configuration
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
## Lightweight persistence for python variables.
|
||||
#
|
||||
# Provides the %store magic.
|
||||
|
||||
## If True, any %store-d variables will be automatically restored when IPython
|
||||
# starts.
|
||||
#c.StoreMagics.autorestore = False
|
||||
File diff suppressed because it is too large
Load Diff
2982
dotfiles/lldb/lisa.py
Normal file
2982
dotfiles/lldb/lisa.py
Normal file
File diff suppressed because it is too large
Load Diff
6
dotfiles/lldbinit
Normal file
6
dotfiles/lldbinit
Normal file
@@ -0,0 +1,6 @@
|
||||
settings set prompt "(lisa)"
|
||||
settings set target.x86-disassembly-flavor intel
|
||||
command script import ~/lisa.py
|
||||
command script import lldb
|
||||
command script add -f lisa.alias lisa
|
||||
lisa
|
||||
43
dotfiles/profile
Normal file → Executable file
43
dotfiles/profile
Normal file → Executable file
@@ -1,18 +1,29 @@
|
||||
# Setup GPG Agent
|
||||
GPG_AGENT_INFO_PATH=$HOME/.gnupg/gpg-agent-info-`hostname`
|
||||
if test -f $GPG_AGENT_INFO_PATH && kill -0 `cut -d: -f 2 $GPG_AGENT_INFO_PATH` 2>/dev/null ; then
|
||||
. $GPG_AGENT_INFO_PATH
|
||||
export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID
|
||||
#!/bin/bash
|
||||
# Also sourced by zsh, etc.
|
||||
# Interactive shells only.
|
||||
# Should only use POSIX constructs.
|
||||
|
||||
# Always load ENV
|
||||
test -f "$HOME/.env" && . "$HOME/.env"
|
||||
|
||||
# Setup GREP_COLORS
|
||||
export GREP_COLOR='01;31'
|
||||
export GREP_COLORS='mt=01;31:mc=01;31:ms=01;31'
|
||||
|
||||
# Setup LS_COLORS
|
||||
if whence dircolors >/dev/null 2>&1 ; then
|
||||
test -f "${HOME}/.dircolors" && \
|
||||
eval "$(dircolors "${HOME}/.dircolors")"
|
||||
else
|
||||
if which gpg-agent >/dev/null 2>&1 ; then
|
||||
if [ -z "$SSH_AUTH_SOCK" ] ; then
|
||||
gpg-agent -q 2>/dev/null || eval `gpg-agent --daemon --enable-ssh-support --write-env-file $GPG_AGENT_INFO_PATH` 2>/dev/null
|
||||
else
|
||||
gpg-agent -q 2>/dev/null || eval `gpg-agent --daemon --write-env-file $GPG_AGENT_INFO_PATH` 2>/dev/null
|
||||
fi
|
||||
export GPG_AGENT_INFO SSH_AUTH_SOCK SSH_AGENT_PID
|
||||
fi
|
||||
# Static solarized LS_COLORS
|
||||
LS_COLORS='no=00:fi=00:di=34:ow=34;40:ln=35:pi=30;44:so=35;44:do=35;44:bd=33;44:cd=37;44:or=05;37;41:mi=05;37;41:ex=01;31:*.cmd=01;31:*.exe=01;31:*.com=01;31:*.bat=01;31:*.reg=01;31:*.app=01;31:*.txt=32:*.org=32:*.md=32:*.mkd=32:*.h=32:*.hpp=32:*.c=32:*.C=32:*.cc=32:*.cpp=32:*.cxx=32:*.objc=32:*.cl=32:*.sh=32:*.bash=32:*.csh=32:*.zsh=32:*.el=32:*.vim=32:*.java=32:*.pl=32:*.pm=32:*.py=32:*.rb=32:*.hs=32:*.php=32:*.htm=32:*.html=32:*.shtml=32:*.erb=32:*.haml=32:*.xml=32:*.rdf=32:*.css=32:*.sass=32:*.scss=32:*.less=32:*.js=32:*.coffee=32:*.man=32:*.0=32:*.1=32:*.2=32:*.3=32:*.4=32:*.5=32:*.6=32:*.7=32:*.8=32:*.9=32:*.l=32:*.n=32:*.p=32:*.pod=32:*.tex=32:*.go=32:*.sql=32:*.csv=32:*.sv=32:*.svh=32:*.v=32:*.vh=32:*.vhd=32:*.bmp=33:*.cgm=33:*.dl=33:*.dvi=33:*.emf=33:*.eps=33:*.gif=33:*.jpeg=33:*.jpg=33:*.JPG=33:*.mng=33:*.pbm=33:*.pcx=33:*.pdf=33:*.pgm=33:*.png=33:*.PNG=33:*.ppm=33:*.pps=33:*.ppsx=33:*.ps=33:*.svg=33:*.svgz=33:*.tga=33:*.tif=33:*.tiff=33:*.xbm=33:*.xcf=33:*.xpm=33:*.xwd=33:*.xwd=33:*.yuv=33:*.aac=33:*.au=33:*.flac=33:*.m4a=33:*.mid=33:*.midi=33:*.mka=33:*.mp3=33:*.mpa=33:*.mpeg=33:*.mpg=33:*.ogg=33:*.opus=33:*.ra=33:*.wav=33:*.anx=33:*.asf=33:*.avi=33:*.axv=33:*.flc=33:*.fli=33:*.flv=33:*.gl=33:*.m2v=33:*.m4v=33:*.mkv=33:*.mov=33:*.MOV=33:*.mp4=33:*.mp4v=33:*.mpeg=33:*.mpg=33:*.nuv=33:*.ogm=33:*.ogv=33:*.ogx=33:*.qt=33:*.rm=33:*.rmvb=33:*.swf=33:*.vob=33:*.webm=33:*.wmv=33:*.doc=31:*.docx=31:*.rtf=31:*.odt=31:*.dot=31:*.dotx=31:*.ott=31:*.xls=31:*.xlsx=31:*.ods=31:*.ots=31:*.ppt=31:*.pptx=31:*.odp=31:*.otp=31:*.fla=31:*.psd=31:*.7z=1;35:*.apk=1;35:*.arj=1;35:*.bin=1;35:*.bz=1;35:*.bz2=1;35:*.cab=1;35:*.deb=1;35:*.dmg=1;35:*.gem=1;35:*.gz=1;35:*.iso=1;35:*.jar=1;35:*.msi=1;35:*.rar=1;35:*.rpm=1;35:*.tar=1;35:*.tbz=1;35:*.tbz2=1;35:*.tgz=1;35:*.tx=1;35:*.war=1;35:*.xpi=1;35:*.xz=1;35:*.z=1;35:*.Z=1;35:*.zip=1;35:*.ANSI-30-black=30:*.ANSI-01;30-brblack=01;30:*.ANSI-31-red=31:*.ANSI-01;31-brred=01;31:*.ANSI-32-green=32:*.ANSI-01;32-brgreen=01;32:*.ANSI-33-yellow=33:*.ANSI-01;33-bryellow=01;33:*.ANSI-34-blue=34:*.ANSI-01;34-brblue=01;34:*.ANSI-35-magenta=35:*.ANSI-01;35-brmagenta=01;35:*.ANSI-36-cyan=36:*.ANSI-01;36-brcyan=01;36:*.ANSI-37-white=37:*.ANSI-01;37-brwhite=01;37:*.log=01;32:*~=01;32:*#=01;32:*.bak=01;33:*.BAK=01;33:*.old=01;33:*.OLD=01;33:*.org_archive=01;33:*.off=01;33:*.OFF=01;33:*.dist=01;33:*.DIST=01;33:*.orig=01;33:*.ORIG=01;33:*.swp=01;33:*.swo=01;33:*,v=01;33:*.gpg=34:*.gpg=34:*.pgp=34:*.asc=34:*.3des=34:*.aes=34:*.enc=34:*.sqlite=34:';
|
||||
export LS_COLORS
|
||||
fi
|
||||
unset GPG_AGENT_INFO_PATH
|
||||
export GPG_TTY=`tty`
|
||||
# End GPG
|
||||
if [ "$(uname)" = "Darwin" ] ; then
|
||||
LSCOLORS="gxfxbEaEBxxEhEhBaDaCaD"
|
||||
export LSCOLORS
|
||||
CLICOLOR=1
|
||||
export CLICOLOR
|
||||
fi
|
||||
|
||||
test -f "${HOME}/.profile.local" && . "${HOME}/.profile.local"
|
||||
|
||||
@@ -1,7 +1,27 @@
|
||||
tmp
|
||||
Downloads
|
||||
.AndroidStudio*
|
||||
.Genymobile
|
||||
.Ticket to Ride*
|
||||
.android*
|
||||
.arduino*
|
||||
.bundle
|
||||
.cache
|
||||
.local/share/Trash
|
||||
.wine
|
||||
.thumbnails
|
||||
.dropbox-dist
|
||||
.gradle
|
||||
.histfile
|
||||
.local/share/Steam
|
||||
.local/share/Trash
|
||||
.local/lib
|
||||
.rvm*
|
||||
.sliver
|
||||
.sqlite_history
|
||||
.thumbnails
|
||||
.wine
|
||||
.zcompdump
|
||||
.zcompdump*
|
||||
Audits
|
||||
Downloads
|
||||
SpiderOak Hive
|
||||
VirtualBox VMs
|
||||
tmp
|
||||
tools
|
||||
.minikube
|
||||
|
||||
1
dotfiles/rvmrc
Normal file
1
dotfiles/rvmrc
Normal file
@@ -0,0 +1 @@
|
||||
rvm_silence_path_mismatch_check_flag=1
|
||||
2
dotfiles/sqliterc
Normal file
2
dotfiles/sqliterc
Normal file
@@ -0,0 +1,2 @@
|
||||
.header on
|
||||
.mode column
|
||||
@@ -1,17 +1,32 @@
|
||||
# Universal Settings (can't override)
|
||||
# Never fall back to protocol 1: it's broken
|
||||
# Universal Settings
|
||||
Protocol 2
|
||||
|
||||
Host scoreboard
|
||||
Hostname 104.131.136.220
|
||||
# Permit Local Overrides
|
||||
Include ~/.ssh/config.d/*
|
||||
|
||||
# Enable canonicalization, unless overridden
|
||||
CanonicalizeHostname yes
|
||||
CanonicalizeFallbackLocal yes
|
||||
CanonicalDomains systemoverlord.com
|
||||
CanonicalizeMaxDots 0
|
||||
|
||||
# Defaults (May be Overridden)
|
||||
Host *
|
||||
ControlMaster auto
|
||||
ControlPath ~/.ssh/master/%r@%h:%p
|
||||
ControlPersist yes
|
||||
ForwardAgent no
|
||||
ForwardX11 no
|
||||
ForwardX11Trusted no
|
||||
ServerAliveInterval 120
|
||||
CheckHostIP no
|
||||
Host *.*
|
||||
CheckHostIP yes
|
||||
|
||||
Host *.cloudshell.dev
|
||||
# Cloudshell hostnames are too long for unix sockets
|
||||
ControlMaster no
|
||||
|
||||
Match canonical all
|
||||
CheckHostIP no
|
||||
ControlMaster auto
|
||||
ControlPath ~/.ssh/master/%r@%h:%p
|
||||
ControlPersist yes
|
||||
ForwardAgent no
|
||||
ForwardX11 no
|
||||
ForwardX11Trusted no
|
||||
ServerAliveInterval 120
|
||||
UpdateHostKeys yes
|
||||
User david
|
||||
VerifyHostKeyDNS yes
|
||||
|
||||
27
dotfiles/ssh/rc
Executable file
27
dotfiles/ssh/rc
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Roughly based on this article:
|
||||
# https://werat.github.io/2017/02/04/tmux-ssh-agent-forwarding.html
|
||||
|
||||
REMOTE_LINK="${HOME}/.ssh/ssh_auth_sock"
|
||||
|
||||
if [ "${1:-}" = "force" ] && [ -S "${SSH_AUTH_SOCK}" ] ; then
|
||||
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test \! -S "${REMOTE_LINK}" -a -S "${SSH_AUTH_SOCK}" ; then
|
||||
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
||||
fi
|
||||
|
||||
# Handle X forwarding, per sshd(8)
|
||||
if read proto cookie && [ -n "$DISPLAY" ]; then
|
||||
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
|
||||
# X11UseLocalhost=yes
|
||||
echo add unix:`echo $DISPLAY |
|
||||
cut -c11-` $proto $cookie
|
||||
else
|
||||
# X11UseLocalhost=no
|
||||
echo add $DISPLAY $proto $cookie
|
||||
fi | xauth -q -
|
||||
fi
|
||||
@@ -1,6 +1,9 @@
|
||||
# Update environment on reconnect
|
||||
set -g update-environment "DISPLAY WINDOWID SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION"
|
||||
|
||||
# Use symlink socket
|
||||
set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock
|
||||
|
||||
# Custom binds
|
||||
bind K confirm kill-server
|
||||
bind X confirm kill-window
|
||||
@@ -14,14 +17,14 @@ set -g history-limit 10000
|
||||
set -g base-index 1
|
||||
set -g pane-base-index 1
|
||||
|
||||
# Let us use utf-8 drawing characters to make tab-like window formats
|
||||
setw -g utf8 on
|
||||
set -g status-utf8 on
|
||||
|
||||
# Terminal emulator window title
|
||||
set -g set-titles on
|
||||
set -g set-titles-string '#h:#S:#I.#P #W'
|
||||
|
||||
# Set keybindings
|
||||
set -g mode-keys vi
|
||||
set -g status-keys vi
|
||||
|
||||
# Set a 256color $TERM variable so programs inside tmux know they can use 256
|
||||
# colors
|
||||
set -g default-terminal screen-256color
|
||||
@@ -37,9 +40,7 @@ setw -g automatic-rename on
|
||||
source-file ~/.tmux/tmux-solarized-256.conf
|
||||
|
||||
# Provide a statusbar
|
||||
set -g window-status-current-bg colour33
|
||||
set -g window-status-current-fg colour235
|
||||
set -g window-status-current-attr bold
|
||||
set -g window-status-current-style fg=colour235,bg=colour33,bold
|
||||
set -g status-interval 60
|
||||
set -g status-left-length 30
|
||||
set -g status-left '/#S/ '
|
||||
@@ -61,3 +62,10 @@ bind M \
|
||||
set -g mouse-select-pane off \;\
|
||||
set -g mouse-select-window off \;\
|
||||
display 'Mouse: OFF'
|
||||
|
||||
# tmux X clipboard integration
|
||||
bind C-c run "tmux show-buffer | xsel -i -b"
|
||||
bind C-v run "tmux set-buffer -- \"$(xsel -o -b)\"; tmux paste-buffer"
|
||||
|
||||
# Enable logging module, if available
|
||||
run-shell "~/.tmux/tmux-logging/logging.tmux || true"
|
||||
|
||||
1
dotfiles/tmux/tmux-logging
Submodule
1
dotfiles/tmux/tmux-logging
Submodule
Submodule dotfiles/tmux/tmux-logging added at 4717cbd4c8
@@ -1,27 +1,22 @@
|
||||
#### COLOUR (Solarized 256)
|
||||
|
||||
# default statusbar colors
|
||||
set-option -g status-bg colour235 #base02
|
||||
set-option -g status-fg colour136 #yellow
|
||||
set-option -g status-attr default
|
||||
set-option -g status-style fg=colour136,bg=colour235 #yellow and base02
|
||||
|
||||
# default window title colors
|
||||
set-window-option -g window-status-fg colour244 #base0
|
||||
set-window-option -g window-status-bg default
|
||||
#set-window-option -g window-status-attr dim
|
||||
set-window-option -g window-status-style fg=colour244,bg=default #base0 and default
|
||||
#set-window-option -g window-status-style dim
|
||||
|
||||
# active window title colors
|
||||
set-window-option -g window-status-current-fg colour166 #orange
|
||||
set-window-option -g window-status-current-bg default
|
||||
#set-window-option -g window-status-current-attr bright
|
||||
set-window-option -g window-status-current-style fg=colour166,bg=default #orange and default
|
||||
#set-window-option -g window-status-current-style bright
|
||||
|
||||
# pane border
|
||||
set-option -g pane-border-fg colour235 #base02
|
||||
set-option -g pane-active-border-fg colour240 #base01
|
||||
set-option -g pane-border-style fg=colour235 #base02
|
||||
set-option -g pane-active-border-style fg=colour240 #base01
|
||||
|
||||
# message text
|
||||
set-option -g message-bg colour235 #base02
|
||||
set-option -g message-fg colour166 #orange
|
||||
set-option -g message-style fg=colour166,bg=colour235 #orange and base02
|
||||
|
||||
# pane number display
|
||||
set-option -g display-panes-active-colour colour33 #blue
|
||||
@@ -29,3 +24,6 @@ set-option -g display-panes-colour colour166 #orange
|
||||
|
||||
# clock
|
||||
set-window-option -g clock-mode-colour colour64 #green
|
||||
|
||||
# bell
|
||||
set-window-option -g window-status-bell-style fg=colour235,bg=colour160 #base02, red
|
||||
|
||||
0
dotfiles/vim/pack/matir/opt/.keep
Normal file
0
dotfiles/vim/pack/matir/opt/.keep
Normal file
1
dotfiles/vim/pack/matir/opt/solarized8
Submodule
1
dotfiles/vim/pack/matir/opt/solarized8
Submodule
Submodule dotfiles/vim/pack/matir/opt/solarized8 added at 7b6399093c
0
dotfiles/vim/pack/matir/start/.keep
Normal file
0
dotfiles/vim/pack/matir/start/.keep
Normal file
1
dotfiles/vim/pack/matir/start/ctrlp
Submodule
1
dotfiles/vim/pack/matir/start/ctrlp
Submodule
Submodule dotfiles/vim/pack/matir/start/ctrlp added at 3866ae170a
1
dotfiles/vim/pack/matir/start/editorconfig
Submodule
1
dotfiles/vim/pack/matir/start/editorconfig
Submodule
Submodule dotfiles/vim/pack/matir/start/editorconfig added at 8f6eba5fd6
1
dotfiles/vim/pack/matir/start/fugitive
Submodule
1
dotfiles/vim/pack/matir/start/fugitive
Submodule
Submodule dotfiles/vim/pack/matir/start/fugitive added at 89e6b5e4e1
1
dotfiles/vim/pack/matir/start/surround
Submodule
1
dotfiles/vim/pack/matir/start/surround
Submodule
Submodule dotfiles/vim/pack/matir/start/surround added at f51a26d371
1
dotfiles/vim/pack/matir/start/syntastic
Submodule
1
dotfiles/vim/pack/matir/start/syntastic
Submodule
Submodule dotfiles/vim/pack/matir/start/syntastic added at dd22667306
1
dotfiles/vim/pack/matir/start/vim-go
Submodule
1
dotfiles/vim/pack/matir/start/vim-go
Submodule
Submodule dotfiles/vim/pack/matir/start/vim-go added at b919c60a6d
@@ -1,25 +1,6 @@
|
||||
" Allow full use of vim options
|
||||
set nocompatible
|
||||
|
||||
" Enable Vundle if installed
|
||||
if filereadable(glob("~/.vim/bundle/Vundle.vim/README.md"))
|
||||
filetype off
|
||||
set rtp+=~/.vim/bundle/Vundle.vim
|
||||
call vundle#begin()
|
||||
Plugin 'gmarik/Vundle.vim'
|
||||
Plugin 'eistaa/vim-flake8'
|
||||
Plugin 'tpope/vim-fugitive'
|
||||
Plugin 'mileszs/ack.vim'
|
||||
Plugin 'tpope/vim-unimpaired'
|
||||
Plugin 'scrooloose/syntastic'
|
||||
Plugin 'mattn/webapi-vim'
|
||||
Plugin 'mattn/gist-vim'
|
||||
Plugin 'fatih/vim-go'
|
||||
Plugin 'altercation/vim-colors-solarized'
|
||||
Plugin 'vimoutliner/vimoutliner'
|
||||
call vundle#end()
|
||||
endif
|
||||
|
||||
" Setup paths
|
||||
set backupdir=~/.cache/vim/backup//
|
||||
set directory=~/.cache/vim/swap//
|
||||
@@ -42,12 +23,30 @@ set expandtab
|
||||
set shiftround
|
||||
set backspace=indent,eol,start
|
||||
" Shift-tab to go backwards in insert mode
|
||||
imap <S-Tab> <Esc><<A
|
||||
" Does not work with YCM
|
||||
inoremap <S-Tab> <C-d>
|
||||
|
||||
" Line numbering, ruler
|
||||
set number
|
||||
set ruler
|
||||
set cursorline
|
||||
|
||||
" Setup viminfo for recording positions, etc.
|
||||
set viminfo='10,\"100,:20,%,n~/.viminfo
|
||||
" Jump back when editing a file
|
||||
function! ResCur()
|
||||
" Don't jump in git commits since they're generated.
|
||||
if &ft == 'gitcommit'
|
||||
return
|
||||
endif
|
||||
if line("'\"") <= line("$")
|
||||
normal! g`"
|
||||
return
|
||||
endif
|
||||
endfunction
|
||||
augroup resCur
|
||||
autocmd!
|
||||
autocmd BufWinEnter * call ResCur()
|
||||
augroup END
|
||||
|
||||
" File options
|
||||
set encoding=utf-8
|
||||
@@ -58,12 +57,17 @@ if has('gui_running')
|
||||
set guifont=Inconsolata\ Medium\ 12
|
||||
else
|
||||
let g:solarized_termcolors=256
|
||||
let g:solarized_termtrans=1
|
||||
endif
|
||||
silent! colorscheme solarized
|
||||
" Enable filetype support
|
||||
filetype plugin indent on
|
||||
" Allow file modelines
|
||||
set modeline
|
||||
if $TERM ==? 'rxvt-unicode-256color'
|
||||
" I have .Xresources setup for solarized
|
||||
let g:solarized_use16=1
|
||||
endif
|
||||
silent! colorscheme solarized8
|
||||
" Default ASM syntax for ft support
|
||||
let asmsyntax="nasm"
|
||||
" Too risky to allow file modelines
|
||||
set nomodeline
|
||||
" Automatically re-read changed files
|
||||
set autoread
|
||||
" fsync() after writing files
|
||||
@@ -129,9 +133,21 @@ endfunction
|
||||
" Options for syntastic
|
||||
let g:syntastic_enable_signs = 1
|
||||
let g:syntastic_auto_loc_list = 2
|
||||
let g:syntastic_go_checkers = ['govet', 'errcheck', 'go']
|
||||
let g:syntastic_python_checkers=['flake8']
|
||||
" Because XXE
|
||||
let g:syntastic_xml_checkers=['']
|
||||
let g:syntastic_xslt_checkers=['']
|
||||
|
||||
" Have F5 run the tests and display errors
|
||||
nnoremap <silent> <F5> :SyntasticCheck<CR> :Errors<CR>
|
||||
|
||||
" Load vim-ycm if installed on the system level
|
||||
if isdirectory("/usr/share/vim-youcompleteme")
|
||||
let g:ycm_autoclose_preview_window_after_insertion=1
|
||||
set runtimepath+=/usr/share/vim-youcompleteme
|
||||
endif
|
||||
|
||||
" Include a .vimrc.local if it exists
|
||||
if filereadable(glob("~/.vimrc.local"))
|
||||
source ~/.vimrc.local
|
||||
@@ -139,3 +155,27 @@ endif
|
||||
|
||||
" Options for vimoutliner
|
||||
autocmd Filetype votl setlocal sts=4
|
||||
|
||||
" Highlight whitespace at end of file
|
||||
highlight ExtraWhitespace ctermbg=red guibg=red
|
||||
autocmd Syntax * syn match ExtraWhitespace /\s\+$\| \+\ze\t/ containedin=ALL
|
||||
|
||||
" Color column at end of lines
|
||||
set colorcolumn=+1
|
||||
highlight ColorColumn ctermbg=black guibg=lightgrey
|
||||
|
||||
" Remove smart quotes
|
||||
command Unsmartquote %s/“\|”/"/g
|
||||
|
||||
" Markdown options
|
||||
autocmd Filetype markdown set expandtab shiftwidth=4
|
||||
|
||||
" Python options
|
||||
autocmd Filetype python set expandtab shiftwidth=4
|
||||
|
||||
" Makefile options
|
||||
autocmd BufRead,BufNewFile Makefile* set noexpandtab
|
||||
|
||||
" Enable filetype support
|
||||
" Needs to be at end of vimrc
|
||||
filetype plugin indent on
|
||||
|
||||
41
dotfiles/weechat/alias.conf
Normal file
41
dotfiles/weechat/alias.conf
Normal file
@@ -0,0 +1,41 @@
|
||||
#
|
||||
# weechat -- alias.conf
|
||||
#
|
||||
|
||||
[cmd]
|
||||
AAWAY = "allserv /away"
|
||||
AME = "allchan /me"
|
||||
AMSG = "allchan /msg *"
|
||||
ANICK = "allserv /nick"
|
||||
BEEP = "print -beep"
|
||||
BYE = "quit"
|
||||
C = "buffer clear"
|
||||
CHAT = "dcc chat"
|
||||
CL = "buffer clear"
|
||||
CLOSE = "buffer close"
|
||||
EXIT = "quit"
|
||||
IG = "ignore"
|
||||
J = "join"
|
||||
K = "kick"
|
||||
KB = "kickban"
|
||||
LEAVE = "part"
|
||||
M = "msg"
|
||||
MSGBUF = "command -buffer $1 * /input send $2-"
|
||||
MUB = "unban *"
|
||||
N = "names"
|
||||
Q = "query"
|
||||
REDRAW = "window refresh"
|
||||
SAY = "msg *"
|
||||
SIGNOFF = "quit"
|
||||
T = "topic"
|
||||
UB = "unban"
|
||||
UMODE = "mode $nick"
|
||||
V = "command core version"
|
||||
W = "who"
|
||||
WC = "window merge"
|
||||
WI = "whois"
|
||||
WII = "whois $1 $1"
|
||||
WW = "whowas"
|
||||
|
||||
[completion]
|
||||
MSGBUF = "%(buffers_plugins_names)"
|
||||
20
dotfiles/weechat/aspell.conf
Normal file
20
dotfiles/weechat/aspell.conf
Normal file
@@ -0,0 +1,20 @@
|
||||
#
|
||||
# weechat -- aspell.conf
|
||||
#
|
||||
|
||||
[color]
|
||||
misspelled = lightred
|
||||
suggestions = default
|
||||
|
||||
[check]
|
||||
commands = "ame,amsg,away,command,cycle,kick,kickban,me,msg,notice,part,query,quit,topic"
|
||||
default_dict = ""
|
||||
during_search = off
|
||||
enabled = off
|
||||
real_time = off
|
||||
suggestions = -1
|
||||
word_min_length = 2
|
||||
|
||||
[dict]
|
||||
|
||||
[option]
|
||||
11
dotfiles/weechat/charset.conf
Normal file
11
dotfiles/weechat/charset.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# weechat -- charset.conf
|
||||
#
|
||||
|
||||
[default]
|
||||
decode = "iso-8859-1"
|
||||
encode = ""
|
||||
|
||||
[decode]
|
||||
|
||||
[encode]
|
||||
11
dotfiles/weechat/exec.conf
Normal file
11
dotfiles/weechat/exec.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# weechat -- exec.conf
|
||||
#
|
||||
|
||||
[command]
|
||||
default_options = ""
|
||||
purge_delay = 0
|
||||
|
||||
[color]
|
||||
flag_finished = lightred
|
||||
flag_running = lightgreen
|
||||
377
dotfiles/weechat/irc.conf
Normal file
377
dotfiles/weechat/irc.conf
Normal file
@@ -0,0 +1,377 @@
|
||||
#
|
||||
# weechat -- irc.conf
|
||||
#
|
||||
|
||||
[look]
|
||||
buffer_open_before_autojoin = on
|
||||
buffer_open_before_join = off
|
||||
buffer_switch_autojoin = on
|
||||
buffer_switch_join = on
|
||||
color_nicks_in_names = off
|
||||
color_nicks_in_nicklist = off
|
||||
color_nicks_in_server_messages = on
|
||||
color_pv_nick_like_channel = on
|
||||
ctcp_time_format = "%a, %d %b %Y %T %z"
|
||||
display_away = local
|
||||
display_ctcp_blocked = on
|
||||
display_ctcp_reply = on
|
||||
display_ctcp_unknown = on
|
||||
display_host_join = on
|
||||
display_host_join_local = on
|
||||
display_host_quit = on
|
||||
display_join_message = "329,332,333,366"
|
||||
display_old_topic = on
|
||||
display_pv_away_once = on
|
||||
display_pv_back = on
|
||||
highlight_channel = "$nick"
|
||||
highlight_pv = "$nick"
|
||||
highlight_server = "$nick"
|
||||
highlight_tags_restrict = "irc_privmsg,irc_notice"
|
||||
item_channel_modes_hide_args = "k"
|
||||
item_display_server = buffer_plugin
|
||||
item_nick_modes = on
|
||||
item_nick_prefix = on
|
||||
join_auto_add_chantype = off
|
||||
msgbuffer_fallback = current
|
||||
new_channel_position = none
|
||||
new_pv_position = none
|
||||
nick_completion_smart = speakers
|
||||
nick_mode = prefix
|
||||
nick_mode_empty = off
|
||||
nicks_hide_password = "nickserv"
|
||||
notice_as_pv = auto
|
||||
notice_welcome_redirect = on
|
||||
notice_welcome_tags = ""
|
||||
notify_tags_ison = "notify_message"
|
||||
notify_tags_whois = "notify_message"
|
||||
part_closes_buffer = on
|
||||
pv_buffer = independent
|
||||
pv_tags = "notify_private"
|
||||
raw_messages = 256
|
||||
server_buffer = merge_with_core
|
||||
smart_filter = on
|
||||
smart_filter_delay = 5
|
||||
smart_filter_join = on
|
||||
smart_filter_join_unmask = 30
|
||||
smart_filter_mode = "+"
|
||||
smart_filter_nick = on
|
||||
smart_filter_quit = on
|
||||
temporary_servers = off
|
||||
topic_strip_colors = off
|
||||
|
||||
[color]
|
||||
input_nick = lightcyan
|
||||
item_channel_modes = default
|
||||
item_lag_counting = default
|
||||
item_lag_finished = yellow
|
||||
item_nick_modes = default
|
||||
message_join = green
|
||||
message_quit = red
|
||||
mirc_remap = "1,-1:darkgray"
|
||||
nick_prefixes = "q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
|
||||
notice = green
|
||||
reason_quit = default
|
||||
topic_current = default
|
||||
topic_new = white
|
||||
topic_old = default
|
||||
|
||||
[network]
|
||||
autoreconnect_delay_growing = 2
|
||||
autoreconnect_delay_max = 600
|
||||
ban_mask_default = "*!$ident@$host"
|
||||
channel_encode = off
|
||||
colors_receive = on
|
||||
colors_send = on
|
||||
lag_check = 60
|
||||
lag_max = 1800
|
||||
lag_min_show = 500
|
||||
lag_reconnect = 0
|
||||
lag_refresh_interval = 1
|
||||
notify_check_ison = 1
|
||||
notify_check_whois = 5
|
||||
sasl_fail_unavailable = on
|
||||
send_unknown_commands = off
|
||||
whois_double_nick = off
|
||||
|
||||
[msgbuffer]
|
||||
|
||||
[ctcp]
|
||||
|
||||
[ignore]
|
||||
|
||||
[server_default]
|
||||
addresses = ""
|
||||
anti_flood_prio_high = 2
|
||||
anti_flood_prio_low = 2
|
||||
autoconnect = off
|
||||
autojoin = ""
|
||||
autoreconnect = on
|
||||
autoreconnect_delay = 10
|
||||
autorejoin = off
|
||||
autorejoin_delay = 30
|
||||
away_check = 0
|
||||
away_check_max_nicks = 25
|
||||
capabilities = ""
|
||||
command = ""
|
||||
command_delay = 0
|
||||
connection_timeout = 60
|
||||
ipv6 = on
|
||||
local_hostname = ""
|
||||
msg_kick = ""
|
||||
msg_part = "WeeChat ${info:version}"
|
||||
msg_quit = "WeeChat ${info:version}"
|
||||
nicks = "Matir,Matir~,Matir[]"
|
||||
nicks_alternate = on
|
||||
notify = ""
|
||||
password = ""
|
||||
proxy = ""
|
||||
realname = ""
|
||||
sasl_fail = continue
|
||||
sasl_key = ""
|
||||
sasl_mechanism = plain
|
||||
sasl_password = ""
|
||||
sasl_timeout = 15
|
||||
sasl_username = ""
|
||||
ssl = off
|
||||
ssl_cert = ""
|
||||
ssl_dhkey_size = 2048
|
||||
ssl_fingerprint = ""
|
||||
ssl_priorities = "NORMAL"
|
||||
ssl_verify = on
|
||||
username = "matir"
|
||||
|
||||
[server]
|
||||
freenode.addresses = "chat.freenode.net/7000"
|
||||
freenode.proxy
|
||||
freenode.ipv6
|
||||
freenode.ssl = on
|
||||
freenode.ssl_cert = "%h/certs/freenode-matir.pem"
|
||||
freenode.ssl_priorities
|
||||
freenode.ssl_dhkey_size
|
||||
freenode.ssl_fingerprint
|
||||
freenode.ssl_verify = on
|
||||
freenode.password
|
||||
freenode.capabilities
|
||||
freenode.sasl_mechanism
|
||||
freenode.sasl_username
|
||||
freenode.sasl_password
|
||||
freenode.sasl_key
|
||||
freenode.sasl_timeout
|
||||
freenode.sasl_fail
|
||||
freenode.autoconnect = on
|
||||
freenode.autoreconnect
|
||||
freenode.autoreconnect_delay
|
||||
freenode.nicks = "Matir,Matir~"
|
||||
freenode.nicks_alternate
|
||||
freenode.username
|
||||
freenode.realname
|
||||
freenode.local_hostname
|
||||
freenode.command
|
||||
freenode.command_delay
|
||||
freenode.autojoin = "#kali-linux,#openvpn,#radare,#vulnhub,#offsec,#offtopicsec,##ctfcompetition,#dc404,#droidsec"
|
||||
freenode.autorejoin
|
||||
freenode.autorejoin_delay
|
||||
freenode.connection_timeout
|
||||
freenode.anti_flood_prio_high
|
||||
freenode.anti_flood_prio_low
|
||||
freenode.away_check
|
||||
freenode.away_check_max_nicks
|
||||
freenode.msg_kick
|
||||
freenode.msg_part
|
||||
freenode.msg_quit
|
||||
freenode.notify
|
||||
hak5.addresses = "irc.hak5.org/6697"
|
||||
hak5.proxy
|
||||
hak5.ipv6
|
||||
hak5.ssl = on
|
||||
hak5.ssl_cert = "%h/certs/freenode-matir.pem"
|
||||
hak5.ssl_priorities
|
||||
hak5.ssl_dhkey_size
|
||||
hak5.ssl_fingerprint
|
||||
hak5.ssl_verify = off
|
||||
hak5.password
|
||||
hak5.capabilities
|
||||
hak5.sasl_mechanism
|
||||
hak5.sasl_username
|
||||
hak5.sasl_password
|
||||
hak5.sasl_key
|
||||
hak5.sasl_timeout
|
||||
hak5.sasl_fail
|
||||
hak5.autoconnect = on
|
||||
hak5.autoreconnect
|
||||
hak5.autoreconnect_delay
|
||||
hak5.nicks
|
||||
hak5.nicks_alternate
|
||||
hak5.username
|
||||
hak5.realname
|
||||
hak5.local_hostname
|
||||
hak5.command
|
||||
hak5.command_delay
|
||||
hak5.autojoin = "#hak5,#pineapple,#ducky,#SDR,#lanturtle,#bashbunny"
|
||||
hak5.autorejoin
|
||||
hak5.autorejoin_delay
|
||||
hak5.connection_timeout
|
||||
hak5.anti_flood_prio_high
|
||||
hak5.anti_flood_prio_low
|
||||
hak5.away_check
|
||||
hak5.away_check_max_nicks
|
||||
hak5.msg_kick
|
||||
hak5.msg_part
|
||||
hak5.msg_quit
|
||||
hak5.notify
|
||||
rpisec.addresses = "irc.rpis.ec/6697"
|
||||
rpisec.proxy
|
||||
rpisec.ipv6
|
||||
rpisec.ssl = on
|
||||
rpisec.ssl_cert
|
||||
rpisec.ssl_priorities
|
||||
rpisec.ssl_dhkey_size
|
||||
rpisec.ssl_fingerprint
|
||||
rpisec.ssl_verify = on
|
||||
rpisec.password
|
||||
rpisec.capabilities
|
||||
rpisec.sasl_mechanism
|
||||
rpisec.sasl_username
|
||||
rpisec.sasl_password
|
||||
rpisec.sasl_key
|
||||
rpisec.sasl_timeout
|
||||
rpisec.sasl_fail
|
||||
rpisec.autoconnect = on
|
||||
rpisec.autoreconnect
|
||||
rpisec.autoreconnect_delay
|
||||
rpisec.nicks
|
||||
rpisec.nicks_alternate
|
||||
rpisec.username
|
||||
rpisec.realname
|
||||
rpisec.local_hostname
|
||||
rpisec.command
|
||||
rpisec.command_delay
|
||||
rpisec.autojoin = "#rpisec"
|
||||
rpisec.autorejoin
|
||||
rpisec.autorejoin_delay
|
||||
rpisec.connection_timeout
|
||||
rpisec.anti_flood_prio_high
|
||||
rpisec.anti_flood_prio_low
|
||||
rpisec.away_check
|
||||
rpisec.away_check_max_nicks
|
||||
rpisec.msg_kick
|
||||
rpisec.msg_part
|
||||
rpisec.msg_quit
|
||||
rpisec.notify
|
||||
overthewire.addresses = "ircs.overthewire.org/6697"
|
||||
overthewire.proxy
|
||||
overthewire.ipv6
|
||||
overthewire.ssl = on
|
||||
overthewire.ssl_cert = "%h/certs/freenode-matir.pem"
|
||||
overthewire.ssl_priorities
|
||||
overthewire.ssl_dhkey_size
|
||||
overthewire.ssl_fingerprint
|
||||
overthewire.ssl_verify = on
|
||||
overthewire.password
|
||||
overthewire.capabilities
|
||||
overthewire.sasl_mechanism
|
||||
overthewire.sasl_username
|
||||
overthewire.sasl_password
|
||||
overthewire.sasl_key
|
||||
overthewire.sasl_timeout
|
||||
overthewire.sasl_fail
|
||||
overthewire.autoconnect = on
|
||||
overthewire.autoreconnect
|
||||
overthewire.autoreconnect_delay
|
||||
overthewire.nicks
|
||||
overthewire.nicks_alternate
|
||||
overthewire.username
|
||||
overthewire.realname
|
||||
overthewire.local_hostname
|
||||
overthewire.command
|
||||
overthewire.command_delay
|
||||
overthewire.autojoin = "#wargames,#social,#amateria,#io"
|
||||
overthewire.autorejoin
|
||||
overthewire.autorejoin_delay
|
||||
overthewire.connection_timeout
|
||||
overthewire.anti_flood_prio_high
|
||||
overthewire.anti_flood_prio_low
|
||||
overthewire.away_check
|
||||
overthewire.away_check_max_nicks
|
||||
overthewire.msg_kick
|
||||
overthewire.msg_part
|
||||
overthewire.msg_quit
|
||||
overthewire.notify
|
||||
hackint.addresses = "irc.hackint.org/9999"
|
||||
hackint.proxy
|
||||
hackint.ipv6
|
||||
hackint.ssl = on
|
||||
hackint.ssl_cert
|
||||
hackint.ssl_priorities
|
||||
hackint.ssl_dhkey_size
|
||||
hackint.ssl_fingerprint
|
||||
hackint.ssl_verify = on
|
||||
hackint.password
|
||||
hackint.capabilities
|
||||
hackint.sasl_mechanism
|
||||
hackint.sasl_username
|
||||
hackint.sasl_password
|
||||
hackint.sasl_key
|
||||
hackint.sasl_timeout
|
||||
hackint.sasl_fail
|
||||
hackint.autoconnect = on
|
||||
hackint.autoreconnect
|
||||
hackint.autoreconnect_delay
|
||||
hackint.nicks
|
||||
hackint.nicks_alternate
|
||||
hackint.username
|
||||
hackint.realname
|
||||
hackint.local_hostname
|
||||
hackint.command
|
||||
hackint.command_delay
|
||||
hackint.autojoin
|
||||
hackint.autorejoin
|
||||
hackint.autorejoin_delay
|
||||
hackint.connection_timeout
|
||||
hackint.anti_flood_prio_high
|
||||
hackint.anti_flood_prio_low
|
||||
hackint.away_check
|
||||
hackint.away_check_max_nicks
|
||||
hackint.msg_kick
|
||||
hackint.msg_part
|
||||
hackint.msg_quit
|
||||
hackint.notify
|
||||
afternet.addresses = "irc.afternet.org/6697"
|
||||
afternet.proxy
|
||||
afternet.ipv6
|
||||
afternet.ssl = on
|
||||
afternet.ssl_cert
|
||||
afternet.ssl_priorities
|
||||
afternet.ssl_dhkey_size
|
||||
afternet.ssl_fingerprint
|
||||
afternet.ssl_verify = on
|
||||
afternet.password
|
||||
afternet.capabilities
|
||||
afternet.sasl_mechanism
|
||||
afternet.sasl_username
|
||||
afternet.sasl_password
|
||||
afternet.sasl_key
|
||||
afternet.sasl_timeout
|
||||
afternet.sasl_fail
|
||||
afternet.autoconnect = on
|
||||
afternet.autoreconnect
|
||||
afternet.autoreconnect_delay
|
||||
afternet.nicks
|
||||
afternet.nicks_alternate
|
||||
afternet.username
|
||||
afternet.realname
|
||||
afternet.local_hostname
|
||||
afternet.command
|
||||
afternet.command_delay
|
||||
afternet.autojoin = "#eevblog"
|
||||
afternet.autorejoin
|
||||
afternet.autorejoin_delay
|
||||
afternet.connection_timeout
|
||||
afternet.anti_flood_prio_high
|
||||
afternet.anti_flood_prio_low
|
||||
afternet.away_check
|
||||
afternet.away_check_max_nicks
|
||||
afternet.msg_kick
|
||||
afternet.msg_part
|
||||
afternet.msg_quit
|
||||
afternet.notify
|
||||
14
dotfiles/weechat/letsencrypt.sh
Executable file
14
dotfiles/weechat/letsencrypt.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Update the weechat SSL key. Should be called from cron via sudo.
|
||||
|
||||
eval WEEDIR="$(printf "~%q/.weechat/" "${SUDO_USER}")"
|
||||
LIVEKEY="${WEEDIR}/ssl/relay.pem"
|
||||
|
||||
certbot renew -q
|
||||
cat /etc/letsencrypt/live/$(hostname -f)/{privkey,fullchain}.pem > \
|
||||
${LIVEKEY}
|
||||
chown ${SUDO_USER}:$(id -gn ${SUDO_USER}) ${LIVEKEY}
|
||||
for fifo in ${WEEDIR}/weechat_fifo* ; do
|
||||
echo '*/relay sslcertkey' > ${fifo}
|
||||
done
|
||||
26
dotfiles/weechat/logger.conf
Normal file
26
dotfiles/weechat/logger.conf
Normal file
@@ -0,0 +1,26 @@
|
||||
#
|
||||
# weechat -- logger.conf
|
||||
#
|
||||
|
||||
[look]
|
||||
backlog = 20
|
||||
|
||||
[color]
|
||||
backlog_end = default
|
||||
backlog_line = default
|
||||
|
||||
[file]
|
||||
auto_log = on
|
||||
flush_delay = 120
|
||||
info_lines = off
|
||||
mask = "$plugin.$name.weechatlog"
|
||||
name_lower_case = on
|
||||
nick_prefix = ""
|
||||
nick_suffix = ""
|
||||
path = "%h/logs/"
|
||||
replacement_char = "_"
|
||||
time_format = "%Y-%m-%d %H:%M:%S"
|
||||
|
||||
[level]
|
||||
|
||||
[mask]
|
||||
15
dotfiles/weechat/plugins.conf
Normal file
15
dotfiles/weechat/plugins.conf
Normal file
@@ -0,0 +1,15 @@
|
||||
#
|
||||
# weechat -- plugins.conf
|
||||
#
|
||||
|
||||
[var]
|
||||
fifo.fifo = "on"
|
||||
guile.check_license = "off"
|
||||
javascript.check_license = "off"
|
||||
lua.check_license = "off"
|
||||
perl.check_license = "off"
|
||||
python.check_license = "off"
|
||||
ruby.check_license = "off"
|
||||
tcl.check_license = "off"
|
||||
|
||||
[desc]
|
||||
42
dotfiles/weechat/relay.conf
Normal file
42
dotfiles/weechat/relay.conf
Normal file
@@ -0,0 +1,42 @@
|
||||
#
|
||||
# weechat -- relay.conf
|
||||
#
|
||||
|
||||
[look]
|
||||
auto_open_buffer = on
|
||||
raw_messages = 256
|
||||
|
||||
[color]
|
||||
client = cyan
|
||||
status_active = lightblue
|
||||
status_auth_failed = lightred
|
||||
status_connecting = yellow
|
||||
status_disconnected = lightred
|
||||
status_waiting_auth = brown
|
||||
text = default
|
||||
text_bg = default
|
||||
text_selected = white
|
||||
|
||||
[network]
|
||||
allow_empty_password = off
|
||||
allowed_ips = ""
|
||||
bind_address = ""
|
||||
clients_purge_delay = 0
|
||||
compression_level = 6
|
||||
ipv6 = on
|
||||
max_clients = 5
|
||||
password = "${sec.data.relay_password}"
|
||||
ssl_cert_key = "%h/ssl/relay.pem"
|
||||
ssl_priorities = "NORMAL:-VERS-SSL3.0"
|
||||
websocket_allowed_origins = ""
|
||||
|
||||
[irc]
|
||||
backlog_max_minutes = 1440
|
||||
backlog_max_number = 256
|
||||
backlog_since_last_disconnect = on
|
||||
backlog_since_last_message = off
|
||||
backlog_tags = "irc_privmsg"
|
||||
backlog_time_format = "[%H:%M] "
|
||||
|
||||
[port]
|
||||
ssl.weechat = 9001
|
||||
50
dotfiles/weechat/script.conf
Normal file
50
dotfiles/weechat/script.conf
Normal file
@@ -0,0 +1,50 @@
|
||||
#
|
||||
# weechat -- script.conf
|
||||
#
|
||||
|
||||
[look]
|
||||
columns = "%s %n %V %v %u | %d | %t"
|
||||
diff_color = on
|
||||
diff_command = "auto"
|
||||
display_source = on
|
||||
quiet_actions = on
|
||||
sort = "p,n"
|
||||
translate_description = on
|
||||
use_keys = on
|
||||
|
||||
[color]
|
||||
status_autoloaded = cyan
|
||||
status_held = white
|
||||
status_installed = lightcyan
|
||||
status_obsolete = lightmagenta
|
||||
status_popular = yellow
|
||||
status_running = lightgreen
|
||||
status_unknown = lightred
|
||||
text = default
|
||||
text_bg = default
|
||||
text_bg_selected = red
|
||||
text_date = default
|
||||
text_date_selected = white
|
||||
text_delimiters = default
|
||||
text_description = default
|
||||
text_description_selected = white
|
||||
text_extension = default
|
||||
text_extension_selected = white
|
||||
text_name = cyan
|
||||
text_name_selected = lightcyan
|
||||
text_selected = white
|
||||
text_tags = brown
|
||||
text_tags_selected = yellow
|
||||
text_version = magenta
|
||||
text_version_loaded = default
|
||||
text_version_loaded_selected = white
|
||||
text_version_selected = lightmagenta
|
||||
|
||||
[scripts]
|
||||
autoload = on
|
||||
cache_expire = 1440
|
||||
download_timeout = 30
|
||||
hold = ""
|
||||
path = "%h/script"
|
||||
url = "http://weechat.org/files/plugins.xml.gz"
|
||||
url_force_https = on
|
||||
13
dotfiles/weechat/sec.conf
Normal file
13
dotfiles/weechat/sec.conf
Normal file
@@ -0,0 +1,13 @@
|
||||
#
|
||||
# weechat -- sec.conf
|
||||
#
|
||||
|
||||
[crypt]
|
||||
cipher = aes256
|
||||
hash_algo = sha256
|
||||
passphrase_file = "~/.weechat-passphrase"
|
||||
salt = on
|
||||
|
||||
[data]
|
||||
__passphrase__ = on
|
||||
relay_password = "D1FD30C08951B1A5BCBBB7EE6AAFB6AF9B86017B353182A1CA8826D5A98EB88E7E723591C544FC41A6913EA67E8764E50BDD8A5AD3D0A0"
|
||||
52
dotfiles/weechat/trigger.conf
Normal file
52
dotfiles/weechat/trigger.conf
Normal file
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# weechat -- trigger.conf
|
||||
#
|
||||
|
||||
[look]
|
||||
enabled = on
|
||||
monitor_strip_colors = off
|
||||
|
||||
[color]
|
||||
flag_command = lightgreen
|
||||
flag_conditions = yellow
|
||||
flag_post_action = lightblue
|
||||
flag_regex = lightcyan
|
||||
flag_return_code = lightmagenta
|
||||
regex = white
|
||||
replace = cyan
|
||||
trigger = green
|
||||
trigger_disabled = red
|
||||
|
||||
[trigger]
|
||||
beep.arguments = ""
|
||||
beep.command = "/print -beep"
|
||||
beep.conditions = "${tg_highlight} || ${tg_msg_pv}"
|
||||
beep.enabled = on
|
||||
beep.hook = print
|
||||
beep.post_action = none
|
||||
beep.regex = ""
|
||||
beep.return_code = ok
|
||||
cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
|
||||
cmd_pass.command = ""
|
||||
cmd_pass.conditions = ""
|
||||
cmd_pass.enabled = on
|
||||
cmd_pass.hook = modifier
|
||||
cmd_pass.post_action = none
|
||||
cmd_pass.regex = "==^((/(msg|quote) +nickserv +(id|identify|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==$1$.*+"
|
||||
cmd_pass.return_code = ok
|
||||
msg_auth.arguments = "5000|irc_message_auth"
|
||||
msg_auth.command = ""
|
||||
msg_auth.conditions = ""
|
||||
msg_auth.enabled = on
|
||||
msg_auth.hook = modifier
|
||||
msg_auth.post_action = none
|
||||
msg_auth.regex = "==^(.*(id|identify|register|ghost +[^ ]+|release +[^ ]+) +)(.*)==$1$.*+"
|
||||
msg_auth.return_code = ok
|
||||
server_pass.arguments = "5000|input_text_display;5000|history_add"
|
||||
server_pass.command = ""
|
||||
server_pass.conditions = ""
|
||||
server_pass.enabled = on
|
||||
server_pass.hook = modifier
|
||||
server_pass.post_action = none
|
||||
server_pass.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==$1$.*4$5"
|
||||
server_pass.return_code = ok
|
||||
595
dotfiles/weechat/weechat.conf
Normal file
595
dotfiles/weechat/weechat.conf
Normal file
@@ -0,0 +1,595 @@
|
||||
#
|
||||
# weechat -- weechat.conf
|
||||
#
|
||||
|
||||
[debug]
|
||||
|
||||
[startup]
|
||||
command_after_plugins = ""
|
||||
command_before_plugins = ""
|
||||
display_logo = on
|
||||
display_version = on
|
||||
sys_rlimit = ""
|
||||
|
||||
[look]
|
||||
align_end_of_lines = message
|
||||
bar_more_down = "++"
|
||||
bar_more_left = "<<"
|
||||
bar_more_right = ">>"
|
||||
bar_more_up = "--"
|
||||
bare_display_exit_on_input = on
|
||||
bare_display_time_format = "%H:%M"
|
||||
buffer_auto_renumber = on
|
||||
buffer_notify_default = all
|
||||
buffer_position = end
|
||||
buffer_search_case_sensitive = off
|
||||
buffer_search_force_default = off
|
||||
buffer_search_regex = off
|
||||
buffer_search_where = prefix_message
|
||||
buffer_time_format = "%H:%M:%S"
|
||||
color_basic_force_bold = off
|
||||
color_inactive_buffer = on
|
||||
color_inactive_message = on
|
||||
color_inactive_prefix = on
|
||||
color_inactive_prefix_buffer = on
|
||||
color_inactive_time = off
|
||||
color_inactive_window = on
|
||||
color_nick_offline = off
|
||||
color_pairs_auto_reset = 5
|
||||
color_real_white = off
|
||||
command_chars = ""
|
||||
command_incomplete = off
|
||||
confirm_quit = off
|
||||
confirm_upgrade = off
|
||||
day_change = on
|
||||
day_change_message_1date = "-- %a, %d %b %Y --"
|
||||
day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
|
||||
eat_newline_glitch = off
|
||||
emphasized_attributes = ""
|
||||
highlight = ""
|
||||
highlight_regex = ""
|
||||
highlight_tags = ""
|
||||
hotlist_add_conditions = "${buffer.num_displayed} == 0 && ${priority} >= 1"
|
||||
hotlist_buffer_separator = ", "
|
||||
hotlist_count_max = 0
|
||||
hotlist_count_min_msg = 2
|
||||
hotlist_names_count = 10000
|
||||
hotlist_names_length = 0
|
||||
hotlist_names_level = 14
|
||||
hotlist_names_merged_buffers = off
|
||||
hotlist_prefix = "Act: "
|
||||
hotlist_remove = merged
|
||||
hotlist_short_names = on
|
||||
hotlist_sort = group_time_asc
|
||||
hotlist_suffix = ""
|
||||
hotlist_unique_numbers = on
|
||||
input_cursor_scroll = 20
|
||||
input_share = none
|
||||
input_share_overwrite = off
|
||||
input_undo_max = 32
|
||||
item_away_message = on
|
||||
item_buffer_filter = "*"
|
||||
item_buffer_zoom = "!"
|
||||
item_mouse_status = "M"
|
||||
item_time_format = "%H:%M"
|
||||
jump_current_to_previous_buffer = on
|
||||
jump_previous_buffer_when_closing = on
|
||||
jump_smart_back_to_buffer = on
|
||||
key_bind_safe = on
|
||||
key_grab_delay = 800
|
||||
mouse = off
|
||||
mouse_timer_delay = 100
|
||||
nick_color_force = ""
|
||||
nick_color_hash = djb2
|
||||
nick_color_stop_chars = "_|["
|
||||
nick_prefix = ""
|
||||
nick_suffix = ""
|
||||
paste_auto_add_newline = on
|
||||
paste_bracketed = on
|
||||
paste_bracketed_timer_delay = 10
|
||||
paste_max_lines = 1
|
||||
prefix_action = " *"
|
||||
prefix_align = right
|
||||
prefix_align_max = 15
|
||||
prefix_align_min = 0
|
||||
prefix_align_more = "+"
|
||||
prefix_align_more_after = on
|
||||
prefix_buffer_align = right
|
||||
prefix_buffer_align_max = 0
|
||||
prefix_buffer_align_more = "+"
|
||||
prefix_buffer_align_more_after = on
|
||||
prefix_error = "=!="
|
||||
prefix_join = "-->"
|
||||
prefix_network = "--"
|
||||
prefix_quit = "<--"
|
||||
prefix_same_nick = ""
|
||||
prefix_suffix = "|"
|
||||
quote_nick_prefix = "<"
|
||||
quote_nick_suffix = ">"
|
||||
quote_time_format = "%H:%M:%S"
|
||||
read_marker = line
|
||||
read_marker_always_show = off
|
||||
read_marker_string = "- "
|
||||
save_config_on_exit = on
|
||||
save_layout_on_exit = none
|
||||
scroll_amount = 3
|
||||
scroll_bottom_after_switch = off
|
||||
scroll_page_percent = 100
|
||||
search_text_not_found_alert = on
|
||||
separator_horizontal = "-"
|
||||
separator_vertical = ""
|
||||
tab_width = 1
|
||||
time_format = "%a, %d %b %Y %T"
|
||||
window_auto_zoom = off
|
||||
window_separator_horizontal = on
|
||||
window_separator_vertical = on
|
||||
window_title = "irc"
|
||||
word_chars_highlight = "!\u00A0,-,_,|,alnum"
|
||||
word_chars_input = "!\u00A0,-,_,|,alnum"
|
||||
|
||||
[palette]
|
||||
|
||||
[color]
|
||||
bar_more = lightmagenta
|
||||
chat = default
|
||||
chat_bg = default
|
||||
chat_buffer = white
|
||||
chat_channel = white
|
||||
chat_day_change = cyan
|
||||
chat_delimiters = green
|
||||
chat_highlight = yellow
|
||||
chat_highlight_bg = magenta
|
||||
chat_host = cyan
|
||||
chat_inactive_buffer = default
|
||||
chat_inactive_window = default
|
||||
chat_nick = lightcyan
|
||||
chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue"
|
||||
chat_nick_offline = default
|
||||
chat_nick_offline_highlight = default
|
||||
chat_nick_offline_highlight_bg = blue
|
||||
chat_nick_other = cyan
|
||||
chat_nick_prefix = green
|
||||
chat_nick_self = white
|
||||
chat_nick_suffix = green
|
||||
chat_prefix_action = white
|
||||
chat_prefix_buffer = brown
|
||||
chat_prefix_buffer_inactive_buffer = default
|
||||
chat_prefix_error = yellow
|
||||
chat_prefix_join = lightgreen
|
||||
chat_prefix_more = lightmagenta
|
||||
chat_prefix_network = magenta
|
||||
chat_prefix_quit = lightred
|
||||
chat_prefix_suffix = green
|
||||
chat_read_marker = magenta
|
||||
chat_read_marker_bg = default
|
||||
chat_server = brown
|
||||
chat_tags = red
|
||||
chat_text_found = yellow
|
||||
chat_text_found_bg = lightmagenta
|
||||
chat_time = default
|
||||
chat_time_delimiters = brown
|
||||
chat_value = cyan
|
||||
chat_value_null = blue
|
||||
emphasized = yellow
|
||||
emphasized_bg = magenta
|
||||
input_actions = lightgreen
|
||||
input_text_not_found = red
|
||||
item_away = yellow
|
||||
nicklist_away = cyan
|
||||
nicklist_group = green
|
||||
separator = blue
|
||||
status_count_highlight = magenta
|
||||
status_count_msg = brown
|
||||
status_count_other = default
|
||||
status_count_private = green
|
||||
status_data_highlight = lightmagenta
|
||||
status_data_msg = yellow
|
||||
status_data_other = default
|
||||
status_data_private = lightgreen
|
||||
status_filter = green
|
||||
status_more = yellow
|
||||
status_mouse = green
|
||||
status_name = white
|
||||
status_name_ssl = lightgreen
|
||||
status_nicklist_count = default
|
||||
status_number = yellow
|
||||
status_time = default
|
||||
|
||||
[completion]
|
||||
base_word_until_cursor = on
|
||||
command_inline = on
|
||||
default_template = "%(nicks)|%(irc_channels)"
|
||||
nick_add_space = on
|
||||
nick_completer = ":"
|
||||
nick_first_only = off
|
||||
nick_ignore_chars = "[]`_-^"
|
||||
partial_completion_alert = on
|
||||
partial_completion_command = off
|
||||
partial_completion_command_arg = off
|
||||
partial_completion_count = on
|
||||
partial_completion_other = off
|
||||
|
||||
[history]
|
||||
display_default = 5
|
||||
max_buffer_lines_minutes = 0
|
||||
max_buffer_lines_number = 4096
|
||||
max_commands = 100
|
||||
max_visited_buffers = 50
|
||||
|
||||
[proxy]
|
||||
|
||||
[network]
|
||||
connection_timeout = 60
|
||||
gnutls_ca_file = "~/.weechat/certs/ca-certificates.crt"
|
||||
gnutls_handshake_timeout = 30
|
||||
proxy_curl = ""
|
||||
|
||||
[plugin]
|
||||
autoload = "*"
|
||||
debug = off
|
||||
extension = ".so,.dll"
|
||||
path = "%h/plugins"
|
||||
save_config_on_unload = on
|
||||
|
||||
[bar]
|
||||
input.color_bg = default
|
||||
input.color_delim = cyan
|
||||
input.color_fg = default
|
||||
input.conditions = ""
|
||||
input.filling_left_right = vertical
|
||||
input.filling_top_bottom = horizontal
|
||||
input.hidden = off
|
||||
input.items = "[input_prompt]+(away),[input_search],[input_paste],input_text"
|
||||
input.position = bottom
|
||||
input.priority = 1000
|
||||
input.separator = off
|
||||
input.size = 1
|
||||
input.size_max = 0
|
||||
input.type = window
|
||||
nicklist.color_bg = default
|
||||
nicklist.color_delim = cyan
|
||||
nicklist.color_fg = default
|
||||
nicklist.conditions = "${nicklist}"
|
||||
nicklist.filling_left_right = vertical
|
||||
nicklist.filling_top_bottom = columns_vertical
|
||||
nicklist.hidden = on
|
||||
nicklist.items = "buffer_nicklist"
|
||||
nicklist.position = right
|
||||
nicklist.priority = 200
|
||||
nicklist.separator = on
|
||||
nicklist.size = 0
|
||||
nicklist.size_max = 0
|
||||
nicklist.type = window
|
||||
status.color_bg = 0
|
||||
status.color_delim = cyan
|
||||
status.color_fg = default
|
||||
status.conditions = ""
|
||||
status.filling_left_right = vertical
|
||||
status.filling_top_bottom = horizontal
|
||||
status.hidden = off
|
||||
status.items = "[time],[buffer_plugin],buffer_number+:+buffer_name+(buffer_modes)+{buffer_nicklist_count}+buffer_zoom+buffer_filter,[lag],[hotlist],completion,scroll"
|
||||
status.position = bottom
|
||||
status.priority = 500
|
||||
status.separator = off
|
||||
status.size = 2
|
||||
status.size_max = 0
|
||||
status.type = window
|
||||
title.color_bg = 0
|
||||
title.color_delim = cyan
|
||||
title.color_fg = default
|
||||
title.conditions = ""
|
||||
title.filling_left_right = vertical
|
||||
title.filling_top_bottom = horizontal
|
||||
title.hidden = off
|
||||
title.items = "buffer_title"
|
||||
title.position = top
|
||||
title.priority = 500
|
||||
title.separator = off
|
||||
title.size = 1
|
||||
title.size_max = 0
|
||||
title.type = window
|
||||
|
||||
[layout]
|
||||
|
||||
[notify]
|
||||
|
||||
[filter]
|
||||
irc_smart = on;*;irc_smart_filter;*
|
||||
|
||||
[key]
|
||||
ctrl-? = "/input delete_previous_char"
|
||||
ctrl-A = "/input move_beginning_of_line"
|
||||
ctrl-B = "/input move_previous_char"
|
||||
ctrl-C_ = "/input insert \x1F"
|
||||
ctrl-Cb = "/input insert \x02"
|
||||
ctrl-Cc = "/input insert \x03"
|
||||
ctrl-Ci = "/input insert \x1D"
|
||||
ctrl-Co = "/input insert \x0F"
|
||||
ctrl-Cv = "/input insert \x16"
|
||||
ctrl-D = "/input delete_next_char"
|
||||
ctrl-E = "/input move_end_of_line"
|
||||
ctrl-F = "/input move_next_char"
|
||||
ctrl-H = "/input delete_previous_char"
|
||||
ctrl-I = "/input complete_next"
|
||||
ctrl-J = "/input return"
|
||||
ctrl-K = "/input delete_end_of_line"
|
||||
ctrl-L = "/window refresh"
|
||||
ctrl-M = "/input return"
|
||||
ctrl-N = "/buffer +1"
|
||||
ctrl-P = "/buffer -1"
|
||||
ctrl-R = "/input search_text"
|
||||
ctrl-Sctrl-U = "/input set_unread"
|
||||
ctrl-T = "/input transpose_chars"
|
||||
ctrl-U = "/input delete_beginning_of_line"
|
||||
ctrl-W = "/input delete_previous_word"
|
||||
ctrl-X = "/input switch_active_buffer"
|
||||
ctrl-Y = "/input clipboard_paste"
|
||||
meta-meta2-1~ = "/window scroll_top"
|
||||
meta-meta2-23~ = "/bar scroll nicklist * b"
|
||||
meta-meta2-24~ = "/bar scroll nicklist * e"
|
||||
meta-meta2-4~ = "/window scroll_bottom"
|
||||
meta-meta2-5~ = "/window scroll_up"
|
||||
meta-meta2-6~ = "/window scroll_down"
|
||||
meta-meta2-7~ = "/window scroll_top"
|
||||
meta-meta2-8~ = "/window scroll_bottom"
|
||||
meta-meta2-A = "/buffer -1"
|
||||
meta-meta2-B = "/buffer +1"
|
||||
meta-meta2-C = "/buffer +1"
|
||||
meta-meta2-D = "/buffer -1"
|
||||
meta-- = "/filter toggle @"
|
||||
meta-/ = "/input jump_last_buffer_displayed"
|
||||
meta-0 = "/buffer *10"
|
||||
meta-1 = "/buffer *1"
|
||||
meta-2 = "/buffer *2"
|
||||
meta-3 = "/buffer *3"
|
||||
meta-4 = "/buffer *4"
|
||||
meta-5 = "/buffer *5"
|
||||
meta-6 = "/buffer *6"
|
||||
meta-7 = "/buffer *7"
|
||||
meta-8 = "/buffer *8"
|
||||
meta-9 = "/buffer *9"
|
||||
meta-< = "/input jump_previously_visited_buffer"
|
||||
meta-= = "/filter toggle"
|
||||
meta-> = "/input jump_next_visited_buffer"
|
||||
meta-OA = "/input history_global_previous"
|
||||
meta-OB = "/input history_global_next"
|
||||
meta-OC = "/input move_next_word"
|
||||
meta-OD = "/input move_previous_word"
|
||||
meta-OF = "/input move_end_of_line"
|
||||
meta-OH = "/input move_beginning_of_line"
|
||||
meta-Oa = "/input history_global_previous"
|
||||
meta-Ob = "/input history_global_next"
|
||||
meta-Oc = "/input move_next_word"
|
||||
meta-Od = "/input move_previous_word"
|
||||
meta2-15~ = "/buffer -1"
|
||||
meta2-17~ = "/buffer +1"
|
||||
meta2-18~ = "/window -1"
|
||||
meta2-19~ = "/window +1"
|
||||
meta2-1;3A = "/buffer -1"
|
||||
meta2-1;3B = "/buffer +1"
|
||||
meta2-1;3C = "/buffer +1"
|
||||
meta2-1;3D = "/buffer -1"
|
||||
meta2-1;3F = "/window scroll_bottom"
|
||||
meta2-1;3H = "/window scroll_top"
|
||||
meta2-1;5A = "/input history_global_previous"
|
||||
meta2-1;5B = "/input history_global_next"
|
||||
meta2-1;5C = "/input move_next_word"
|
||||
meta2-1;5D = "/input move_previous_word"
|
||||
meta2-1~ = "/input move_beginning_of_line"
|
||||
meta2-200~ = "/input paste_start"
|
||||
meta2-201~ = "/input paste_stop"
|
||||
meta2-20~ = "/bar scroll title * -30%"
|
||||
meta2-21~ = "/bar scroll title * +30%"
|
||||
meta2-23;3~ = "/bar scroll nicklist * b"
|
||||
meta2-23~ = "/bar scroll nicklist * -100%"
|
||||
meta2-24;3~ = "/bar scroll nicklist * e"
|
||||
meta2-24~ = "/bar scroll nicklist * +100%"
|
||||
meta2-3~ = "/input delete_next_char"
|
||||
meta2-4~ = "/input move_end_of_line"
|
||||
meta2-5;3~ = "/window scroll_up"
|
||||
meta2-5~ = "/window page_up"
|
||||
meta2-6;3~ = "/window scroll_down"
|
||||
meta2-6~ = "/window page_down"
|
||||
meta2-7~ = "/input move_beginning_of_line"
|
||||
meta2-8~ = "/input move_end_of_line"
|
||||
meta2-A = "/input history_previous"
|
||||
meta2-B = "/input history_next"
|
||||
meta2-C = "/input move_next_char"
|
||||
meta2-D = "/input move_previous_char"
|
||||
meta2-F = "/input move_end_of_line"
|
||||
meta2-G = "/window page_down"
|
||||
meta2-H = "/input move_beginning_of_line"
|
||||
meta2-I = "/window page_up"
|
||||
meta2-Z = "/input complete_previous"
|
||||
meta2-[E = "/buffer -1"
|
||||
meta-_ = "/input redo"
|
||||
meta-a = "/input jump_smart"
|
||||
meta-b = "/input move_previous_word"
|
||||
meta-d = "/input delete_next_word"
|
||||
meta-f = "/input move_next_word"
|
||||
meta-h = "/input hotlist_clear"
|
||||
meta-jmeta-f = "/buffer -"
|
||||
meta-jmeta-l = "/buffer +"
|
||||
meta-jmeta-r = "/server raw"
|
||||
meta-jmeta-s = "/server jump"
|
||||
meta-j01 = "/buffer 1"
|
||||
meta-j02 = "/buffer 2"
|
||||
meta-j03 = "/buffer 3"
|
||||
meta-j04 = "/buffer 4"
|
||||
meta-j05 = "/buffer 5"
|
||||
meta-j06 = "/buffer 6"
|
||||
meta-j07 = "/buffer 7"
|
||||
meta-j08 = "/buffer 8"
|
||||
meta-j09 = "/buffer 9"
|
||||
meta-j10 = "/buffer 10"
|
||||
meta-j11 = "/buffer 11"
|
||||
meta-j12 = "/buffer 12"
|
||||
meta-j13 = "/buffer 13"
|
||||
meta-j14 = "/buffer 14"
|
||||
meta-j15 = "/buffer 15"
|
||||
meta-j16 = "/buffer 16"
|
||||
meta-j17 = "/buffer 17"
|
||||
meta-j18 = "/buffer 18"
|
||||
meta-j19 = "/buffer 19"
|
||||
meta-j20 = "/buffer 20"
|
||||
meta-j21 = "/buffer 21"
|
||||
meta-j22 = "/buffer 22"
|
||||
meta-j23 = "/buffer 23"
|
||||
meta-j24 = "/buffer 24"
|
||||
meta-j25 = "/buffer 25"
|
||||
meta-j26 = "/buffer 26"
|
||||
meta-j27 = "/buffer 27"
|
||||
meta-j28 = "/buffer 28"
|
||||
meta-j29 = "/buffer 29"
|
||||
meta-j30 = "/buffer 30"
|
||||
meta-j31 = "/buffer 31"
|
||||
meta-j32 = "/buffer 32"
|
||||
meta-j33 = "/buffer 33"
|
||||
meta-j34 = "/buffer 34"
|
||||
meta-j35 = "/buffer 35"
|
||||
meta-j36 = "/buffer 36"
|
||||
meta-j37 = "/buffer 37"
|
||||
meta-j38 = "/buffer 38"
|
||||
meta-j39 = "/buffer 39"
|
||||
meta-j40 = "/buffer 40"
|
||||
meta-j41 = "/buffer 41"
|
||||
meta-j42 = "/buffer 42"
|
||||
meta-j43 = "/buffer 43"
|
||||
meta-j44 = "/buffer 44"
|
||||
meta-j45 = "/buffer 45"
|
||||
meta-j46 = "/buffer 46"
|
||||
meta-j47 = "/buffer 47"
|
||||
meta-j48 = "/buffer 48"
|
||||
meta-j49 = "/buffer 49"
|
||||
meta-j50 = "/buffer 50"
|
||||
meta-j51 = "/buffer 51"
|
||||
meta-j52 = "/buffer 52"
|
||||
meta-j53 = "/buffer 53"
|
||||
meta-j54 = "/buffer 54"
|
||||
meta-j55 = "/buffer 55"
|
||||
meta-j56 = "/buffer 56"
|
||||
meta-j57 = "/buffer 57"
|
||||
meta-j58 = "/buffer 58"
|
||||
meta-j59 = "/buffer 59"
|
||||
meta-j60 = "/buffer 60"
|
||||
meta-j61 = "/buffer 61"
|
||||
meta-j62 = "/buffer 62"
|
||||
meta-j63 = "/buffer 63"
|
||||
meta-j64 = "/buffer 64"
|
||||
meta-j65 = "/buffer 65"
|
||||
meta-j66 = "/buffer 66"
|
||||
meta-j67 = "/buffer 67"
|
||||
meta-j68 = "/buffer 68"
|
||||
meta-j69 = "/buffer 69"
|
||||
meta-j70 = "/buffer 70"
|
||||
meta-j71 = "/buffer 71"
|
||||
meta-j72 = "/buffer 72"
|
||||
meta-j73 = "/buffer 73"
|
||||
meta-j74 = "/buffer 74"
|
||||
meta-j75 = "/buffer 75"
|
||||
meta-j76 = "/buffer 76"
|
||||
meta-j77 = "/buffer 77"
|
||||
meta-j78 = "/buffer 78"
|
||||
meta-j79 = "/buffer 79"
|
||||
meta-j80 = "/buffer 80"
|
||||
meta-j81 = "/buffer 81"
|
||||
meta-j82 = "/buffer 82"
|
||||
meta-j83 = "/buffer 83"
|
||||
meta-j84 = "/buffer 84"
|
||||
meta-j85 = "/buffer 85"
|
||||
meta-j86 = "/buffer 86"
|
||||
meta-j87 = "/buffer 87"
|
||||
meta-j88 = "/buffer 88"
|
||||
meta-j89 = "/buffer 89"
|
||||
meta-j90 = "/buffer 90"
|
||||
meta-j91 = "/buffer 91"
|
||||
meta-j92 = "/buffer 92"
|
||||
meta-j93 = "/buffer 93"
|
||||
meta-j94 = "/buffer 94"
|
||||
meta-j95 = "/buffer 95"
|
||||
meta-j96 = "/buffer 96"
|
||||
meta-j97 = "/buffer 97"
|
||||
meta-j98 = "/buffer 98"
|
||||
meta-j99 = "/buffer 99"
|
||||
meta-k = "/input grab_key_command"
|
||||
meta-l = "/window bare"
|
||||
meta-m = "/mute mouse toggle"
|
||||
meta-n = "/window scroll_next_highlight"
|
||||
meta-p = "/window scroll_previous_highlight"
|
||||
meta-r = "/input delete_line"
|
||||
meta-s = "/mute aspell toggle"
|
||||
meta-u = "/window scroll_unread"
|
||||
meta-wmeta-meta2-A = "/window up"
|
||||
meta-wmeta-meta2-B = "/window down"
|
||||
meta-wmeta-meta2-C = "/window right"
|
||||
meta-wmeta-meta2-D = "/window left"
|
||||
meta-wmeta2-1;3A = "/window up"
|
||||
meta-wmeta2-1;3B = "/window down"
|
||||
meta-wmeta2-1;3C = "/window right"
|
||||
meta-wmeta2-1;3D = "/window left"
|
||||
meta-wmeta-b = "/window balance"
|
||||
meta-wmeta-s = "/window swap"
|
||||
meta-x = "/input zoom_merged_buffer"
|
||||
meta-z = "/window zoom"
|
||||
ctrl-_ = "/input undo"
|
||||
|
||||
[key_search]
|
||||
ctrl-I = "/input search_switch_where"
|
||||
ctrl-J = "/input search_stop"
|
||||
ctrl-M = "/input search_stop"
|
||||
ctrl-R = "/input search_switch_regex"
|
||||
meta2-A = "/input search_previous"
|
||||
meta2-B = "/input search_next"
|
||||
meta-c = "/input search_switch_case"
|
||||
|
||||
[key_cursor]
|
||||
ctrl-J = "/cursor stop"
|
||||
ctrl-M = "/cursor stop"
|
||||
meta-meta2-A = "/cursor move area_up"
|
||||
meta-meta2-B = "/cursor move area_down"
|
||||
meta-meta2-C = "/cursor move area_right"
|
||||
meta-meta2-D = "/cursor move area_left"
|
||||
meta2-1;3A = "/cursor move area_up"
|
||||
meta2-1;3B = "/cursor move area_down"
|
||||
meta2-1;3C = "/cursor move area_right"
|
||||
meta2-1;3D = "/cursor move area_left"
|
||||
meta2-A = "/cursor move up"
|
||||
meta2-B = "/cursor move down"
|
||||
meta2-C = "/cursor move right"
|
||||
meta2-D = "/cursor move left"
|
||||
@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}"
|
||||
@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}"
|
||||
@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}"
|
||||
@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop"
|
||||
@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}"
|
||||
@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
|
||||
@chat:m = "hsignal:chat_quote_message;/cursor stop"
|
||||
@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
|
||||
|
||||
[key_mouse]
|
||||
@bar(input):button2 = "/input grab_mouse_area"
|
||||
@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%"
|
||||
@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
|
||||
@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%"
|
||||
@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
|
||||
@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}"
|
||||
@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}"
|
||||
@chat(script.scripts):wheeldown = "/script down 5"
|
||||
@chat(script.scripts):wheelup = "/script up 5"
|
||||
@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}"
|
||||
@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}"
|
||||
@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}"
|
||||
@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}"
|
||||
@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}"
|
||||
@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
|
||||
@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
|
||||
@chat:button1 = "/window ${_window_number}"
|
||||
@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
|
||||
@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
|
||||
@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
|
||||
@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer"
|
||||
@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
|
||||
@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
|
||||
@chat:wheeldown = "/window scroll_down -window ${_window_number}"
|
||||
@chat:wheelup = "/window scroll_up -window ${_window_number}"
|
||||
@*:button3 = "/cursor go ${_x},${_y}"
|
||||
39
dotfiles/weechat/xfer.conf
Normal file
39
dotfiles/weechat/xfer.conf
Normal file
@@ -0,0 +1,39 @@
|
||||
#
|
||||
# weechat -- xfer.conf
|
||||
#
|
||||
|
||||
[look]
|
||||
auto_open_buffer = on
|
||||
progress_bar_size = 20
|
||||
pv_tags = "notify_private"
|
||||
|
||||
[color]
|
||||
status_aborted = lightred
|
||||
status_active = lightblue
|
||||
status_connecting = yellow
|
||||
status_done = lightgreen
|
||||
status_failed = lightred
|
||||
status_waiting = lightcyan
|
||||
text = default
|
||||
text_bg = default
|
||||
text_selected = white
|
||||
|
||||
[network]
|
||||
blocksize = 65536
|
||||
fast_send = on
|
||||
own_ip = ""
|
||||
port_range = ""
|
||||
speed_limit = 0
|
||||
timeout = 300
|
||||
|
||||
[file]
|
||||
auto_accept_chats = off
|
||||
auto_accept_files = off
|
||||
auto_accept_nicks = ""
|
||||
auto_check_crc32 = off
|
||||
auto_rename = on
|
||||
auto_resume = on
|
||||
convert_spaces = on
|
||||
download_path = "%h/xfer"
|
||||
upload_path = "~"
|
||||
use_nick_in_filename = on
|
||||
@@ -6,7 +6,8 @@ content_disposition = on
|
||||
# Recursive download options
|
||||
no_parent = on
|
||||
follow_ftp = on
|
||||
adjust_extension = on
|
||||
# Good for HTML, not for other things
|
||||
adjust_extension = off
|
||||
robots = off
|
||||
|
||||
# Show responses
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
setxkbmap -option ctrl:nocaps
|
||||
setxkbmap -option ctrl:nocaps -option compose:ralt
|
||||
test -x /usr/bin/xsettingsd && /usr/bin/xsettingsd &
|
||||
test -f "$HOME/.env" && "$HOME/.env"
|
||||
test -f "$HOME/.profile" && . "$HOME/.profile"
|
||||
|
||||
45
dotfiles/xsettingsd
Normal file
45
dotfiles/xsettingsd
Normal file
@@ -0,0 +1,45 @@
|
||||
Gdk/UnscaledDPI 98304
|
||||
Gdk/WindowScalingFactor 1
|
||||
Gtk/AutoMnemonics 1
|
||||
Gtk/ButtonImages 0
|
||||
Gtk/CanChangeAccels 0
|
||||
Gtk/ColorPalette "black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90"
|
||||
Gtk/ColorScheme ""
|
||||
Gtk/CursorBlinkTimeout 10
|
||||
Gtk/CursorThemeName "Adwaita"
|
||||
Gtk/CursorThemeSize 24
|
||||
Gtk/DecorationLayout "menu:minimize,maximize,close"
|
||||
Gtk/EnableAnimations 1
|
||||
Gtk/FontName "Sans 9"
|
||||
Gtk/IMModule ""
|
||||
Gtk/IMPreeditStyle "callback"
|
||||
Gtk/IMStatusStyle "callback"
|
||||
Gtk/KeyThemeName "Default"
|
||||
Gtk/MenuBarAccel "F10"
|
||||
Gtk/MenuImages 0
|
||||
Gtk/Modules ""
|
||||
Gtk/RecentFilesEnabled 0
|
||||
Gtk/RecentFilesMaxAge -1
|
||||
Gtk/ShellShowsAppMenu 0
|
||||
Gtk/ShellShowsMenubar 0
|
||||
Gtk/ShowInputMethodMenu 1
|
||||
Gtk/ShowUnicodeMenu 1
|
||||
Gtk/TimeoutInitial 200
|
||||
Gtk/TimeoutRepeat 20
|
||||
Gtk/ToolbarIconSize "large"
|
||||
Gtk/ToolbarStyle "both-horiz"
|
||||
Net/CursorBlink 1
|
||||
Net/CursorBlinkTime 1200
|
||||
Net/DndDragThreshold 8
|
||||
Net/DoubleClickTime 400
|
||||
Net/EnableEventSounds 0
|
||||
Net/EnableInputFeedbackSounds 0
|
||||
Net/FallbackIconTheme "gnome"
|
||||
Net/IconThemeName "Humanity"
|
||||
Net/SoundThemeName "freedesktop"
|
||||
Net/ThemeName "Ambiance"
|
||||
Xft/Antialias 1
|
||||
Xft/DPI 98304
|
||||
Xft/Hinting 1
|
||||
Xft/HintStyle "hintslight"
|
||||
Xft/RGBA "rgb"
|
||||
8
dotfiles/zlogin
Normal file
8
dotfiles/zlogin
Normal file
@@ -0,0 +1,8 @@
|
||||
# Execute code that does not affect the current session in the background.
|
||||
{
|
||||
# Compile the completion dump to increase startup speed.
|
||||
zcompdump="${ZDOTDIR:-$HOME}/.zcompdump"
|
||||
if [[ -s "$zcompdump" && (! -s "${zcompdump}.zwc" || "$zcompdump" -nt "${zcompdump}.zwc") ]]; then
|
||||
zcompile "$zcompdump"
|
||||
fi
|
||||
} &!
|
||||
@@ -1,3 +0,0 @@
|
||||
PROMPT='%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] %{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[blue]%}$(git_prompt_info)%{$fg[white]%}%#%{$reset_color%} '
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX=" ("
|
||||
ZSH_THEME_GIT_PROMPT_SUFFIX=")"
|
||||
0
dotfiles/zshenv
Normal file → Executable file
0
dotfiles/zshenv
Normal file → Executable file
150
dotfiles/zshrc
Normal file → Executable file
150
dotfiles/zshrc
Normal file → Executable file
@@ -1,16 +1,57 @@
|
||||
# For interactive shells
|
||||
HISTFILE=~/.histfile
|
||||
HISTSIZE=1000
|
||||
SAVEHIST=1000
|
||||
setopt appendhistory autocd autopushd extendedglob nohup nomatch histignorespace histlexwords histverify cbases
|
||||
unsetopt beep histbeep listbeep flowcontrol
|
||||
bindkey -e
|
||||
HISTFILE=~/.zhistory
|
||||
HISTSIZE=10000
|
||||
SAVEHIST=10000
|
||||
setopt \
|
||||
ALWAYS_TO_END \
|
||||
APPEND_HISTORY \
|
||||
AUTO_CD \
|
||||
AUTO_LIST \
|
||||
AUTO_MENU \
|
||||
AUTO_PARAM_SLASH \
|
||||
AUTO_PUSHD \
|
||||
BANG_HIST \
|
||||
C_BASES \
|
||||
COMPLETE_IN_WORD \
|
||||
EXTENDED_GLOB \
|
||||
EXTENDED_HISTORY \
|
||||
HIST_EXPIRE_DUPS_FIRST \
|
||||
HIST_FIND_NO_DUPS \
|
||||
HIST_IGNORE_DUPS \
|
||||
HIST_IGNORE_SPACE \
|
||||
HIST_LEX_WORDS \
|
||||
HIST_SAVE_NO_DUPS \
|
||||
HIST_VERIFY \
|
||||
INTERACTIVE_COMMENTS \
|
||||
LONG_LIST_JOBS \
|
||||
MULTIOS \
|
||||
NO_CLOBBER \
|
||||
NO_HUP \
|
||||
NOMATCH \
|
||||
NOTIFY \
|
||||
PUSHD_IGNORE_DUPS \
|
||||
PUSHD_SILENT \
|
||||
PUSHD_TO_HOME \
|
||||
RC_QUOTES \
|
||||
SHARE_HISTORY
|
||||
unsetopt \
|
||||
BEEP \
|
||||
CDABLE_VARS \
|
||||
HIST_BEEP \
|
||||
LIST_BEEP \
|
||||
FLOW_CONTROL \
|
||||
MAIL_WARNING \
|
||||
HUP \
|
||||
BG_NICE \
|
||||
CHECK_JOBS
|
||||
# vi keybindings
|
||||
bindkey -v
|
||||
|
||||
# Completion
|
||||
zstyle :compinstall filename '/home/david/.zshrc'
|
||||
autoload -Uz compinit && compinit
|
||||
# Allow core files
|
||||
ulimit -c unlimited
|
||||
|
||||
DIRSTACKSIZE=16
|
||||
# Set terminal title
|
||||
case $TERM in
|
||||
xterm*)
|
||||
precmd () {print -Pn "\e]0;%n@%m: %~\a"}
|
||||
@@ -18,39 +59,94 @@ case $TERM in
|
||||
esac
|
||||
|
||||
autoload -U colors && colors
|
||||
PS1="%{%(!.$fg[red].$fg[green])%}%n%{$fg[white]%}@%{$fg[cyan]%}%m%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[white]%}%#%{$reset_color%} "
|
||||
PS1="%{$fg[black]%}[%{$fg[yellow]%}%h%{$fg[black]%}] %{%(!.$fg[red].$fg[green])%}%8>..>%n%>>%{$fg[white]%}@%{$fg[blue]%}%12>..>%m%>>%{$fg[white]%}:%{$fg[green]%}%32<...<%~%<<%{$fg[white]%}%#%{$reset_color%} "
|
||||
|
||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||
zstyle ':completion::complete:*' use-cache on
|
||||
zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"
|
||||
|
||||
# .profile is universal
|
||||
. ~/.profile
|
||||
# Deduplicate the path
|
||||
typeset -U path
|
||||
|
||||
# LS Colors
|
||||
alias ls='ls --color'
|
||||
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
|
||||
|
||||
# Load oh-my-zsh
|
||||
if [ -d $HOME/.oh-my-zsh ] ; then
|
||||
ZSH=$HOME/.oh-my-zsh
|
||||
ZSH_THEME="matir"
|
||||
ZSH_CUSTOM="$HOME/.zsh_custom"
|
||||
plugins=(git encode64 gpg-agent pep8 pip python tmux urltools extract sudo virsh virtualenv command-not-found)
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
unset ZSH_THEME
|
||||
unset ZSH_CUSTOM
|
||||
fi
|
||||
|
||||
# Keybindings
|
||||
# Additional Keybindings
|
||||
bindkey '^[[A' history-search-backward
|
||||
bindkey '^[[B' history-search-forward
|
||||
# ctrl-arrow keys
|
||||
bindkey '^[[1;5C' forward-word
|
||||
bindkey '^[[1;5D' backward-word
|
||||
bindkey '^P' up-history
|
||||
bindkey '^N' down-history
|
||||
bindkey '^?' backward-delete-char
|
||||
bindkey '^h' backward-delete-char
|
||||
# ok, a few emacs convenience bindings
|
||||
bindkey '^w' backward-kill-word
|
||||
bindkey '^r' history-incremental-search-backward
|
||||
# delete really deletes
|
||||
bindkey "^[[3~" delete-char
|
||||
|
||||
# Source extras and aliases if interactive
|
||||
if [[ $- == *i* ]] ; then
|
||||
if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
|
||||
for file in $HOME/.zshrc.d/* ; do source "$file" ; done
|
||||
if [[ -e $HOME/.aliases.local ]] ; then source $HOME/.aliases.local ; fi
|
||||
# zsh-only-ism to avoid error if glob doesn't expand
|
||||
for file in $HOME/.zshrc.d/[a-zA-Z0-9]*.zsh(N) ; do
|
||||
source "$file"
|
||||
done
|
||||
# extra completions, prompt
|
||||
fpath=(~/.zshrc.completions ~/.zshrc.d/matir_prompt ~/.zshrc.d/agnoster_prompt $fpath)
|
||||
# Completion
|
||||
zstyle ':compinstall' filename "${HOME}/.zshrc"
|
||||
zstyle ':completion:*' users root ${USER}
|
||||
# Modules after fpath
|
||||
autoload -Uz compinit && compinit -i
|
||||
autoload -Uz promptinit && promptinit
|
||||
# Virtualenvwrapper
|
||||
if test -f /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh ; then
|
||||
source /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh
|
||||
fi
|
||||
if command ls --version >/dev/null 2>&1 ; then
|
||||
alias ls="$(whence -p ls) --color -C"
|
||||
fi
|
||||
# Syntax highlighting and substring search
|
||||
if test -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ; then
|
||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
fi
|
||||
if test -f ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh ; then
|
||||
source ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh
|
||||
bindkey '^[[A' history-substring-search-up
|
||||
bindkey '^[[B' history-substring-search-down
|
||||
bindkey -M vicmd 'k' history-substring-search-up
|
||||
bindkey -M vicmd 'j' history-substring-search-down
|
||||
fi
|
||||
# Suggestions
|
||||
if test -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ; then
|
||||
# Works well for solarized
|
||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=10"
|
||||
# Strategy -- note that 'completion' is slow AF
|
||||
ZSH_AUTOSUGGEST_STRATEGY=(history)
|
||||
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
fi
|
||||
fi # End interactive-only block
|
||||
|
||||
# In case ack is named ack-grep
|
||||
if [ -x /usr/bin/ack-grep ] ; then
|
||||
alias ack='/usr/bin/ack-grep'
|
||||
fi
|
||||
|
||||
# Got rust?
|
||||
if test -d ${HOME}/.cargo/bin ; then
|
||||
PATH=${PATH}:${HOME}/.cargo/bin
|
||||
fi
|
||||
|
||||
# Most is nice, if we have it
|
||||
if command -v most >/dev/null 2>&1; then
|
||||
export PAGER="most"
|
||||
fi
|
||||
|
||||
# Load any local settings
|
||||
if [ -e $HOME/.zshrc.local ] ; then source $HOME/.zshrc.local ; fi
|
||||
|
||||
# Set prompt based on local settings
|
||||
prompt "${THEME:-matir}"
|
||||
|
||||
3027
dotfiles/zshrc.completions/_docker
Normal file
3027
dotfiles/zshrc.completions/_docker
Normal file
File diff suppressed because it is too large
Load Diff
5
dotfiles/zshrc.completions/_gf
Normal file
5
dotfiles/zshrc.completions/_gf
Normal file
@@ -0,0 +1,5 @@
|
||||
#compdef gf
|
||||
|
||||
function _gf {
|
||||
_arguments "1: :($(gf -list))"
|
||||
}
|
||||
52
dotfiles/zshrc.completions/_jekyll
Normal file
52
dotfiles/zshrc.completions/_jekyll
Normal file
@@ -0,0 +1,52 @@
|
||||
#compdef jekyll
|
||||
|
||||
_jekyll() {
|
||||
local curcontext="${curcontext}" state line file
|
||||
typeset -A opt_args
|
||||
|
||||
local -a _subcommands
|
||||
_subcommands=('docs:list documentation'
|
||||
'import:import posts'
|
||||
'serve:run server'
|
||||
'help:get help'
|
||||
'doctor:deprecation warnings'
|
||||
'build:compile site'
|
||||
'new:create new site'
|
||||
'clean:clean output'
|
||||
'draft:create new draft'
|
||||
'post:create new post'
|
||||
'publish:publish draft'
|
||||
'edit:edit post')
|
||||
|
||||
_arguments -C \
|
||||
"(source)"{-s,--source}"[source]:source dir:_files -/" \
|
||||
"(dest)"{-d,--destination}"[dest]:dest dir:_files -/" \
|
||||
"--safe[safe mode]" \
|
||||
"(plugins)"{-p,--plugins}"[plugins]:plugins dir:_files -/" \
|
||||
"--layouts[layouts]:layouts dir:_files -/" \
|
||||
"--profile[generate liquid profile]" \
|
||||
"(help)"{-h,--help}"[help]" \
|
||||
"(version)"{-v,--version}"[version]" \
|
||||
"(trace)"{-t,--trace}"[trace]" \
|
||||
"1:command:->command" \
|
||||
"*: :->args"
|
||||
|
||||
case $state in
|
||||
command)
|
||||
_describe -t commands "jekyll subcommand" _subcommands
|
||||
;;
|
||||
args)
|
||||
case "$line[1]" in
|
||||
edit)
|
||||
# TODO: Fix to get --source argument
|
||||
local -a postpaths
|
||||
postpaths=("${JEKYLL_DIR}/_posts" "${JEKYLL_DIR}/_drafts")
|
||||
_files -W postpaths
|
||||
;;
|
||||
publish)
|
||||
# TODO: Fix to get --source argument
|
||||
_files -W ${JEKYLL_DIR}/_drafts
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
58
dotfiles/zshrc.completions/_msfconsole
Normal file
58
dotfiles/zshrc.completions/_msfconsole
Normal file
@@ -0,0 +1,58 @@
|
||||
#compdef msfconsole
|
||||
# ------------------------------------------------------------------------------
|
||||
# Copyright (c) 2014 Spencer McIntyre
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# * Neither the name of the project nor the
|
||||
# names of its contributors may be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
# ------------------------------------------------------------------------------
|
||||
# Description
|
||||
# -----------
|
||||
#
|
||||
# Completion script for the Metasploit Framework's msfconsole command
|
||||
# (http://www.metasploit.com/).
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
# Authors
|
||||
# -------
|
||||
#
|
||||
# * Spencer McIntyre
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
_arguments \
|
||||
{-a,--ask}"[Ask before exiting Metasploit or accept 'exit -y']" \
|
||||
"-c[Load the specified configuration file]:configuration file:_files" \
|
||||
{-d,--defanged}"[Execute the console as defanged]" \
|
||||
{-E,--environment}"[Specify the database environment to load from the configuration]:environment:(production development)" \
|
||||
{-h,--help}"[Show help text]" \
|
||||
{-L,--real-readline}"[Use the system Readline library instead of RbReadline]" \
|
||||
{-M,--migration-path}"[Specify a directory containing additional DB migrations]:directory:_files -/" \
|
||||
{-m,--module-path}"[Specifies an additional module search path]:search path:_files -/" \
|
||||
{-n,--no-database}"[Disable database support]" \
|
||||
{-o,--output}"[Output to the specified file]:output file" \
|
||||
{-p,--plugin}"[Load a plugin on startup]:plugin file:_files" \
|
||||
{-q,--quiet}"[Do not print the banner on start up]" \
|
||||
{-r,--resource}"[Execute the specified resource file]:resource file:_files" \
|
||||
{-v,--version}"[Show version]" \
|
||||
{-x,--execute-command}"[Execute the specified string as console commands]:commands" \
|
||||
{-y,--yaml}"[Specify a YAML file containing database settings]:yaml file:_files"
|
||||
100
dotfiles/zshrc.completions/_msfvenom
Normal file
100
dotfiles/zshrc.completions/_msfvenom
Normal file
@@ -0,0 +1,100 @@
|
||||
#compdef msfvenom
|
||||
# ------------------------------------------------------------------------------
|
||||
# Copyright (c) 2014 Spencer McIntyre
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
# * Neither the name of the project nor the
|
||||
# names of its contributors may be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
# ------------------------------------------------------------------------------
|
||||
# Description
|
||||
# -----------
|
||||
#
|
||||
# Completion script for the Metasploit Framework's msfvenom command
|
||||
# (http://www.metasploit.com/).
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
# Authors
|
||||
# -------
|
||||
#
|
||||
# * Spencer McIntyre
|
||||
#
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
_msfvenom_encoders_list=(
|
||||
'cmd/generic_sh'
|
||||
'cmd/ifs'
|
||||
'cmd/powershell_base64'
|
||||
'cmd/printf_php_mq'
|
||||
'generic/eicar'
|
||||
'generic/none'
|
||||
'mipsbe/byte_xori'
|
||||
'mipsbe/longxor'
|
||||
'mipsle/byte_xori'
|
||||
'mipsle/longxor'
|
||||
'php/base64'
|
||||
'ppc/longxor'
|
||||
'ppc/longxor_tag'
|
||||
'sparc/longxor_tag'
|
||||
'x64/xor'
|
||||
'x86/add_sub'
|
||||
'x86/alpha_mixed'
|
||||
'x86/alpha_upper'
|
||||
'x86/avoid_underscore_tolower'
|
||||
'x86/avoid_utf8_tolower'
|
||||
'x86/bloxor'
|
||||
'x86/call4_dword_xor'
|
||||
'x86/context_cpuid'
|
||||
'x86/context_stat'
|
||||
'x86/context_time'
|
||||
'x86/countdown'
|
||||
'x86/fnstenv_mov'
|
||||
'x86/jmp_call_additive'
|
||||
'x86/nonalpha'
|
||||
'x86/nonupper'
|
||||
'x86/opt_sub'
|
||||
'x86/shikata_ga_nai'
|
||||
'x86/single_static_bit'
|
||||
'x86/unicode_mixed'
|
||||
'x86/unicode_upper'
|
||||
)
|
||||
|
||||
_msfvenom_encoder() {
|
||||
_describe -t encoders 'available encoders' _msfvenom_encoders_list || compadd "$@"
|
||||
}
|
||||
|
||||
_arguments \
|
||||
{-a,--arch}"[The architecture to encode as]:architecture:(cmd generic mipsbe mipsle php ppc sparc x64 x86)" \
|
||||
{-b,--bad-chars}"[The list of characters to avoid, example: '\x00\xff']:bad characters" \
|
||||
{-c,--add-code}"[Specify an additional win32 shellcode file to include]:shellcode file:_files" \
|
||||
{-e,--encoder}"[The encoder to use]:encoder:_msfvenom_encoder" \
|
||||
{-f,--format}"[Output format]:output format:(bash c csharp dw dword java js_be js_le num perl pl powershell ps1 py python raw rb ruby sh vbapplication vbscript asp aspx aspx-exe dll elf exe exe-only exe-service exe-small loop-vbs macho msi msi-nouac osx-app psh psh-net psh-reflection vba vba-exe vbs war)" \
|
||||
"--help-formats[List available formats]" \
|
||||
{-h,--help}"[Help banner]" \
|
||||
{-i,--iterations}"[The number of times to encode the payload]:iterations" \
|
||||
{-k,--keep}"[Preserve the template behavior and inject the payload as a new thread]" \
|
||||
{-l,--list}"[List a module type]:module type:(all encoders nops payloads)" \
|
||||
{-n,--nopsled}"[Prepend a nopsled of length size on to the payload]:nopsled length" \
|
||||
{-o,--options}"[List the payload's standard options]" \
|
||||
"--platform[The platform to encode for]:target platform:(android bsd bsdi java linux netware nodejs osx php python ruby solaris unix win)" \
|
||||
{-p,--payload}"[Payload to use. Specify a '-' or stdin to use custom payloads]:payload" \
|
||||
{-s,--space}"[The maximum size of the resulting payload]:length" \
|
||||
{-x,--template}"[Specify an alternate executable template]:template file:_files"
|
||||
759
dotfiles/zshrc.d/_zsh-history-substring-search.zsh
Normal file
759
dotfiles/zshrc.d/_zsh-history-substring-search.zsh
Normal file
@@ -0,0 +1,759 @@
|
||||
#!/usr/bin/env zsh
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2009 Peter Stephenson
|
||||
# Copyright (c) 2011 Guido van Steen
|
||||
# Copyright (c) 2011 Suraj N. Kurapati
|
||||
# Copyright (c) 2011 Sorin Ionescu
|
||||
# Copyright (c) 2011 Vincent Guerci
|
||||
# Copyright (c) 2016 Geza Lore
|
||||
# Copyright (c) 2017 Bengt Brodersen
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# * Neither the name of the FIZSH nor the names of its contributors
|
||||
# may be used to endorse or promote products derived from this
|
||||
# software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# declare global configuration variables
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
typeset -g HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold'
|
||||
typeset -g HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold'
|
||||
typeset -g HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'
|
||||
typeset -g HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=''
|
||||
typeset -g HISTORY_SUBSTRING_SEARCH_FUZZY=''
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# declare internal global variables
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
typeset -g BUFFER MATCH MBEGIN MEND CURSOR
|
||||
typeset -g _history_substring_search_refresh_display
|
||||
typeset -g _history_substring_search_query_highlight
|
||||
typeset -g _history_substring_search_result
|
||||
typeset -g _history_substring_search_query
|
||||
typeset -g -a _history_substring_search_query_parts
|
||||
typeset -g -a _history_substring_search_raw_matches
|
||||
typeset -g -i _history_substring_search_raw_match_index
|
||||
typeset -g -a _history_substring_search_matches
|
||||
typeset -g -i _history_substring_search_match_index
|
||||
typeset -g -A _history_substring_search_unique_filter
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# the main ZLE widgets
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
history-substring-search-up() {
|
||||
_history-substring-search-begin
|
||||
|
||||
_history-substring-search-up-history ||
|
||||
_history-substring-search-up-buffer ||
|
||||
_history-substring-search-up-search
|
||||
|
||||
_history-substring-search-end
|
||||
}
|
||||
|
||||
history-substring-search-down() {
|
||||
_history-substring-search-begin
|
||||
|
||||
_history-substring-search-down-history ||
|
||||
_history-substring-search-down-buffer ||
|
||||
_history-substring-search-down-search
|
||||
|
||||
_history-substring-search-end
|
||||
}
|
||||
|
||||
zle -N history-substring-search-up
|
||||
zle -N history-substring-search-down
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# implementation details
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
zmodload -F zsh/parameter
|
||||
|
||||
#
|
||||
# We have to "override" some keys and widgets if the
|
||||
# zsh-syntax-highlighting plugin has not been loaded:
|
||||
#
|
||||
# https://github.com/nicoulaj/zsh-syntax-highlighting
|
||||
#
|
||||
if [[ $+functions[_zsh_highlight] -eq 0 ]]; then
|
||||
#
|
||||
# Dummy implementation of _zsh_highlight() that
|
||||
# simply removes any existing highlights when the
|
||||
# user inserts printable characters into $BUFFER.
|
||||
#
|
||||
_zsh_highlight() {
|
||||
if [[ $KEYS == [[:print:]] ]]; then
|
||||
region_highlight=()
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# The following snippet was taken from the zsh-syntax-highlighting project:
|
||||
#
|
||||
# https://github.com/zsh-users/zsh-syntax-highlighting/blob/56b134f5d62ae3d4e66c7f52bd0cc2595f9b305b/zsh-syntax-highlighting.zsh#L126-161
|
||||
#
|
||||
# Copyright (c) 2010-2011 zsh-syntax-highlighting contributors
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# * Neither the name of the zsh-syntax-highlighting contributors nor the
|
||||
# names of its contributors may be used to endorse or promote products
|
||||
# derived from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
#--------------8<-------------------8<-------------------8<-----------------
|
||||
# Rebind all ZLE widgets to make them invoke _zsh_highlights.
|
||||
_zsh_highlight_bind_widgets()
|
||||
{
|
||||
# Load ZSH module zsh/zleparameter, needed to override user defined widgets.
|
||||
zmodload zsh/zleparameter 2>/dev/null || {
|
||||
echo 'zsh-syntax-highlighting: failed loading zsh/zleparameter.' >&2
|
||||
return 1
|
||||
}
|
||||
|
||||
# Override ZLE widgets to make them invoke _zsh_highlight.
|
||||
local cur_widget
|
||||
for cur_widget in ${${(f)"$(builtin zle -la)"}:#(.*|_*|orig-*|run-help|which-command|beep|yank*)}; do
|
||||
case $widgets[$cur_widget] in
|
||||
|
||||
# Already rebound event: do nothing.
|
||||
user:$cur_widget|user:_zsh_highlight_widget_*);;
|
||||
|
||||
# User defined widget: override and rebind old one with prefix "orig-".
|
||||
user:*) eval "zle -N orig-$cur_widget ${widgets[$cur_widget]#*:}; \
|
||||
_zsh_highlight_widget_$cur_widget() { builtin zle orig-$cur_widget -- \"\$@\" && _zsh_highlight }; \
|
||||
zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
|
||||
|
||||
# Completion widget: override and rebind old one with prefix "orig-".
|
||||
completion:*) eval "zle -C orig-$cur_widget ${${widgets[$cur_widget]#*:}/:/ }; \
|
||||
_zsh_highlight_widget_$cur_widget() { builtin zle orig-$cur_widget -- \"\$@\" && _zsh_highlight }; \
|
||||
zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
|
||||
|
||||
# Builtin widget: override and make it call the builtin ".widget".
|
||||
builtin) eval "_zsh_highlight_widget_$cur_widget() { builtin zle .$cur_widget -- \"\$@\" && _zsh_highlight }; \
|
||||
zle -N $cur_widget _zsh_highlight_widget_$cur_widget";;
|
||||
|
||||
# Default: unhandled case.
|
||||
*) echo "zsh-syntax-highlighting: unhandled ZLE widget '$cur_widget'" >&2 ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
#-------------->8------------------->8------------------->8-----------------
|
||||
|
||||
_zsh_highlight_bind_widgets
|
||||
fi
|
||||
|
||||
_history-substring-search-begin() {
|
||||
setopt localoptions extendedglob
|
||||
|
||||
_history_substring_search_refresh_display=
|
||||
_history_substring_search_query_highlight=
|
||||
|
||||
#
|
||||
# If the buffer is the same as the previously displayed history substring
|
||||
# search result, then just keep stepping through the match list. Otherwise
|
||||
# start a new search.
|
||||
#
|
||||
if [[ -n $BUFFER && $BUFFER == ${_history_substring_search_result:-} ]]; then
|
||||
return;
|
||||
fi
|
||||
|
||||
#
|
||||
# Clear the previous result.
|
||||
#
|
||||
_history_substring_search_result=''
|
||||
|
||||
if [[ -z $BUFFER ]]; then
|
||||
#
|
||||
# If the buffer is empty, we will just act like up-history/down-history
|
||||
# in ZSH, so we do not need to actually search the history. This should
|
||||
# speed things up a little.
|
||||
#
|
||||
_history_substring_search_query=
|
||||
_history_substring_search_query_parts=()
|
||||
_history_substring_search_raw_matches=()
|
||||
|
||||
else
|
||||
#
|
||||
# For the purpose of highlighting we keep a copy of the original
|
||||
# query string.
|
||||
#
|
||||
_history_substring_search_query=$BUFFER
|
||||
|
||||
#
|
||||
# compose search pattern
|
||||
#
|
||||
if [[ -n $HISTORY_SUBSTRING_SEARCH_FUZZY ]]; then
|
||||
#
|
||||
# `=` split string in arguments
|
||||
#
|
||||
_history_substring_search_query_parts=(${=_history_substring_search_query})
|
||||
else
|
||||
_history_substring_search_query_parts=(${==_history_substring_search_query})
|
||||
fi
|
||||
|
||||
#
|
||||
# Escape and join query parts with wildcard character '*' as seperator
|
||||
# `(j:CHAR:)` join array to string with CHAR as seperator
|
||||
#
|
||||
local search_pattern="*${(j:*:)_history_substring_search_query_parts[@]//(#m)[\][()|\\*?#<>~^]/\\$MATCH}*"
|
||||
|
||||
#
|
||||
# Find all occurrences of the search pattern in the history file.
|
||||
#
|
||||
# (k) returns the "keys" (history index numbers) instead of the values
|
||||
# (R) returns values in reverse older, so the index of the youngest
|
||||
# matching history entry is at the head of the list.
|
||||
#
|
||||
_history_substring_search_raw_matches=(${(k)history[(R)(#$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)${search_pattern}]})
|
||||
fi
|
||||
|
||||
#
|
||||
# In order to stay as responsive as possible, we will process the raw
|
||||
# matches lazily (when the user requests the next match) to choose items
|
||||
# that need to be displayed to the user.
|
||||
# _history_substring_search_raw_match_index holds the index of the last
|
||||
# unprocessed entry in _history_substring_search_raw_matches. Any items
|
||||
# that need to be displayed will be added to
|
||||
# _history_substring_search_matches.
|
||||
#
|
||||
# We use an associative array (_history_substring_search_unique_filter) as
|
||||
# a 'set' data structure to ensure uniqueness of the results if desired.
|
||||
# If an entry (key) is in the set (non-empty value), then we have already
|
||||
# added that entry to _history_substring_search_matches.
|
||||
#
|
||||
_history_substring_search_raw_match_index=0
|
||||
_history_substring_search_matches=()
|
||||
_history_substring_search_unique_filter=()
|
||||
|
||||
#
|
||||
# If $_history_substring_search_match_index is equal to
|
||||
# $#_history_substring_search_matches + 1, this indicates that we
|
||||
# are beyond the end of $_history_substring_search_matches and that we
|
||||
# have also processed all entries in
|
||||
# _history_substring_search_raw_matches.
|
||||
#
|
||||
# If $#_history_substring_search_match_index is equal to 0, this indicates
|
||||
# that we are beyond the beginning of $_history_substring_search_matches.
|
||||
#
|
||||
# If we have initially pressed "up" we have to initialize
|
||||
# $_history_substring_search_match_index to 0 so that it will be
|
||||
# incremented to 1.
|
||||
#
|
||||
# If we have initially pressed "down" we have to initialize
|
||||
# $_history_substring_search_match_index to 1 so that it will be
|
||||
# decremented to 0.
|
||||
#
|
||||
if [[ $WIDGET == history-substring-search-down ]]; then
|
||||
_history_substring_search_match_index=1
|
||||
else
|
||||
_history_substring_search_match_index=0
|
||||
fi
|
||||
}
|
||||
|
||||
_history-substring-search-end() {
|
||||
setopt localoptions extendedglob
|
||||
|
||||
_history_substring_search_result=$BUFFER
|
||||
|
||||
# the search was successful so display the result properly by clearing away
|
||||
# existing highlights and moving the cursor to the end of the result buffer
|
||||
if [[ $_history_substring_search_refresh_display -eq 1 ]]; then
|
||||
region_highlight=()
|
||||
CURSOR=${#BUFFER}
|
||||
fi
|
||||
|
||||
# highlight command line using zsh-syntax-highlighting
|
||||
_zsh_highlight
|
||||
|
||||
# highlight the search query inside the command line
|
||||
if [[ -n $_history_substring_search_query_highlight ]]; then
|
||||
# highlight first matching query parts
|
||||
local highlight_start_index=0
|
||||
local highlight_end_index=0
|
||||
local query_part
|
||||
for query_part in $_history_substring_search_query_parts; do
|
||||
local escaped_query_part=${query_part//(#m)[\][()|\\*?#<>~^]/\\$MATCH}
|
||||
# (i) get index of pattern
|
||||
local query_part_match_index="${${BUFFER:$highlight_start_index}[(i)(#$HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS)${escaped_query_part}]}"
|
||||
if [[ $query_part_match_index -le ${#BUFFER:$highlight_start_index} ]]; then
|
||||
highlight_start_index=$(( $highlight_start_index + $query_part_match_index ))
|
||||
highlight_end_index=$(( $highlight_start_index + ${#query_part} ))
|
||||
region_highlight+=("$(($highlight_start_index - 1)) $(($highlight_end_index - 1)) $_history_substring_search_query_highlight")
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# For debugging purposes:
|
||||
# zle -R "mn: "$_history_substring_search_match_index" m#: "${#_history_substring_search_matches}
|
||||
# read -k -t 200 && zle -U $REPLY
|
||||
|
||||
# Exit successfully from the history-substring-search-* widgets.
|
||||
return 0
|
||||
}
|
||||
|
||||
_history-substring-search-up-buffer() {
|
||||
#
|
||||
# Check if the UP arrow was pressed to move the cursor within a multi-line
|
||||
# buffer. This amounts to three tests:
|
||||
#
|
||||
# 1. $#buflines -gt 1.
|
||||
#
|
||||
# 2. $CURSOR -ne $#BUFFER.
|
||||
#
|
||||
# 3. Check if we are on the first line of the current multi-line buffer.
|
||||
# If so, pressing UP would amount to leaving the multi-line buffer.
|
||||
#
|
||||
# We check this by adding an extra "x" to $LBUFFER, which makes
|
||||
# sure that xlbuflines is always equal to the number of lines
|
||||
# until $CURSOR (including the line with the cursor on it).
|
||||
#
|
||||
local buflines XLBUFFER xlbuflines
|
||||
buflines=(${(f)BUFFER})
|
||||
XLBUFFER=$LBUFFER"x"
|
||||
xlbuflines=(${(f)XLBUFFER})
|
||||
|
||||
if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xlbuflines -ne 1 ]]; then
|
||||
zle up-line-or-history
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
_history-substring-search-down-buffer() {
|
||||
#
|
||||
# Check if the DOWN arrow was pressed to move the cursor within a multi-line
|
||||
# buffer. This amounts to three tests:
|
||||
#
|
||||
# 1. $#buflines -gt 1.
|
||||
#
|
||||
# 2. $CURSOR -ne $#BUFFER.
|
||||
#
|
||||
# 3. Check if we are on the last line of the current multi-line buffer.
|
||||
# If so, pressing DOWN would amount to leaving the multi-line buffer.
|
||||
#
|
||||
# We check this by adding an extra "x" to $RBUFFER, which makes
|
||||
# sure that xrbuflines is always equal to the number of lines
|
||||
# from $CURSOR (including the line with the cursor on it).
|
||||
#
|
||||
local buflines XRBUFFER xrbuflines
|
||||
buflines=(${(f)BUFFER})
|
||||
XRBUFFER="x"$RBUFFER
|
||||
xrbuflines=(${(f)XRBUFFER})
|
||||
|
||||
if [[ $#buflines -gt 1 && $CURSOR -ne $#BUFFER && $#xrbuflines -ne 1 ]]; then
|
||||
zle down-line-or-history
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
_history-substring-search-up-history() {
|
||||
#
|
||||
# Behave like up in ZSH, except clear the $BUFFER
|
||||
# when beginning of history is reached like in Fish.
|
||||
#
|
||||
if [[ -z $_history_substring_search_query ]]; then
|
||||
|
||||
# we have reached the absolute top of history
|
||||
if [[ $HISTNO -eq 1 ]]; then
|
||||
BUFFER=
|
||||
|
||||
# going up from somewhere below the top of history
|
||||
else
|
||||
zle up-line-or-history
|
||||
fi
|
||||
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
_history-substring-search-down-history() {
|
||||
#
|
||||
# Behave like down-history in ZSH, except clear the
|
||||
# $BUFFER when end of history is reached like in Fish.
|
||||
#
|
||||
if [[ -z $_history_substring_search_query ]]; then
|
||||
|
||||
# going down from the absolute top of history
|
||||
if [[ $HISTNO -eq 1 && -z $BUFFER ]]; then
|
||||
BUFFER=${history[1]}
|
||||
_history_substring_search_refresh_display=1
|
||||
|
||||
# going down from somewhere above the bottom of history
|
||||
else
|
||||
zle down-line-or-history
|
||||
fi
|
||||
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
_history_substring_search_process_raw_matches() {
|
||||
#
|
||||
# Process more outstanding raw matches and append any matches that need to
|
||||
# be displayed to the user to _history_substring_search_matches.
|
||||
# Return whether there were any more results appended.
|
||||
#
|
||||
|
||||
#
|
||||
# While we have more raw matches. Process them to see if there are any more
|
||||
# matches that need to be displayed to the user.
|
||||
#
|
||||
while [[ $_history_substring_search_raw_match_index -lt $#_history_substring_search_raw_matches ]]; do
|
||||
#
|
||||
# Move on to the next raw entry and get its history index.
|
||||
#
|
||||
_history_substring_search_raw_match_index+=1
|
||||
local index=${_history_substring_search_raw_matches[$_history_substring_search_raw_match_index]}
|
||||
|
||||
#
|
||||
# If HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set to a non-empty value,
|
||||
# then ensure that only unique matches are presented to the user.
|
||||
# When HIST_IGNORE_ALL_DUPS is set, ZSH already ensures a unique history,
|
||||
# so in this case we do not need to do anything.
|
||||
#
|
||||
if [[ ! -o HIST_IGNORE_ALL_DUPS && -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
|
||||
#
|
||||
# Get the actual history entry at the new index, and check if we have
|
||||
# already added it to _history_substring_search_matches.
|
||||
#
|
||||
local entry=${history[$index]}
|
||||
|
||||
if [[ -z ${_history_substring_search_unique_filter[$entry]} ]]; then
|
||||
#
|
||||
# This is a new unique entry. Add it to the filter and append the
|
||||
# index to _history_substring_search_matches.
|
||||
#
|
||||
_history_substring_search_unique_filter[$entry]=1
|
||||
_history_substring_search_matches+=($index)
|
||||
|
||||
#
|
||||
# Indicate that we did find a match.
|
||||
#
|
||||
return 0
|
||||
fi
|
||||
|
||||
else
|
||||
#
|
||||
# Just append the new history index to the processed matches.
|
||||
#
|
||||
_history_substring_search_matches+=($index)
|
||||
|
||||
#
|
||||
# Indicate that we did find a match.
|
||||
#
|
||||
return 0
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
#
|
||||
# We are beyond the end of the list of raw matches. Indicate that no
|
||||
# more matches are available.
|
||||
#
|
||||
return 1
|
||||
}
|
||||
|
||||
_history-substring-search-has-next() {
|
||||
#
|
||||
# Predicate function that returns whether any more older matches are
|
||||
# available.
|
||||
#
|
||||
|
||||
if [[ $_history_substring_search_match_index -lt $#_history_substring_search_matches ]]; then
|
||||
#
|
||||
# We did not reach the end of the processed list, so we do have further
|
||||
# matches.
|
||||
#
|
||||
return 0
|
||||
|
||||
else
|
||||
#
|
||||
# We are at the end of the processed list. Try to process further
|
||||
# unprocessed matches. _history_substring_search_process_raw_matches
|
||||
# returns whether any more matches were available, so just return
|
||||
# that result.
|
||||
#
|
||||
_history_substring_search_process_raw_matches
|
||||
return $?
|
||||
fi
|
||||
}
|
||||
|
||||
_history-substring-search-has-prev() {
|
||||
#
|
||||
# Predicate function that returns whether any more younger matches are
|
||||
# available.
|
||||
#
|
||||
|
||||
if [[ $_history_substring_search_match_index -gt 1 ]]; then
|
||||
#
|
||||
# We did not reach the beginning of the processed list, so we do have
|
||||
# further matches.
|
||||
#
|
||||
return 0
|
||||
|
||||
else
|
||||
#
|
||||
# We are at the beginning of the processed list. We do not have any more
|
||||
# matches.
|
||||
#
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
_history-substring-search-found() {
|
||||
#
|
||||
# A match is available. The index of the match is held in
|
||||
# $_history_substring_search_match_index
|
||||
#
|
||||
# 1. Make $BUFFER equal to the matching history entry.
|
||||
#
|
||||
# 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND
|
||||
# to highlight the current buffer.
|
||||
#
|
||||
BUFFER=$history[$_history_substring_search_matches[$_history_substring_search_match_index]]
|
||||
_history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND
|
||||
}
|
||||
|
||||
_history-substring-search-not-found() {
|
||||
#
|
||||
# No more matches are available.
|
||||
#
|
||||
# 1. Make $BUFFER equal to $_history_substring_search_query so the user can
|
||||
# revise it and search again.
|
||||
#
|
||||
# 2. Use $HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND
|
||||
# to highlight the current buffer.
|
||||
#
|
||||
BUFFER=$_history_substring_search_query
|
||||
_history_substring_search_query_highlight=$HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND
|
||||
}
|
||||
|
||||
_history-substring-search-up-search() {
|
||||
_history_substring_search_refresh_display=1
|
||||
|
||||
#
|
||||
# Select history entry during history-substring-down-search:
|
||||
#
|
||||
# The following variables have been initialized in
|
||||
# _history-substring-search-up/down-search():
|
||||
#
|
||||
# $_history_substring_search_matches is the current list of matches that
|
||||
# need to be displayed to the user.
|
||||
# $_history_substring_search_match_index is the index of the current match
|
||||
# that is being displayed to the user.
|
||||
#
|
||||
# The range of values that $_history_substring_search_match_index can take
|
||||
# is: [0, $#_history_substring_search_matches + 1]. A value of 0
|
||||
# indicates that we are beyond the beginning of
|
||||
# $_history_substring_search_matches. A value of
|
||||
# $#_history_substring_search_matches + 1 indicates that we are beyond
|
||||
# the end of $_history_substring_search_matches and that we have also
|
||||
# processed all entries in _history_substring_search_raw_matches.
|
||||
#
|
||||
# If $_history_substring_search_match_index equals
|
||||
# $#_history_substring_search_matches and
|
||||
# $_history_substring_search_raw_match_index is not greater than
|
||||
# $#_history_substring_search_raw_matches, then we need to further process
|
||||
# $_history_substring_search_raw_matches to see if there are any more
|
||||
# entries that need to be displayed to the user.
|
||||
#
|
||||
# In _history-substring-search-up-search() the initial value of
|
||||
# $_history_substring_search_match_index is 0. This value is set in
|
||||
# _history-substring-search-begin(). _history-substring-search-up-search()
|
||||
# will initially increment it to 1.
|
||||
#
|
||||
|
||||
if [[ $_history_substring_search_match_index -gt $#_history_substring_search_matches ]]; then
|
||||
#
|
||||
# We are beyond the end of $_history_substring_search_matches. This
|
||||
# can only happen if we have also exhausted the unprocessed matches in
|
||||
# _history_substring_search_raw_matches.
|
||||
#
|
||||
# 1. Update display to indicate search not found.
|
||||
#
|
||||
_history-substring-search-not-found
|
||||
return
|
||||
fi
|
||||
|
||||
if _history-substring-search-has-next; then
|
||||
#
|
||||
# We do have older matches.
|
||||
#
|
||||
# 1. Move index to point to the next match.
|
||||
# 2. Update display to indicate search found.
|
||||
#
|
||||
_history_substring_search_match_index+=1
|
||||
_history-substring-search-found
|
||||
|
||||
else
|
||||
#
|
||||
# We do not have older matches.
|
||||
#
|
||||
# 1. Move the index beyond the end of
|
||||
# _history_substring_search_matches.
|
||||
# 2. Update display to indicate search not found.
|
||||
#
|
||||
_history_substring_search_match_index+=1
|
||||
_history-substring-search-not-found
|
||||
fi
|
||||
|
||||
#
|
||||
# When HIST_FIND_NO_DUPS is set, meaning that only unique command lines from
|
||||
# history should be matched, make sure the new and old results are different.
|
||||
#
|
||||
# However, if the HIST_IGNORE_ALL_DUPS shell option, or
|
||||
# HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set, then we already have a
|
||||
# unique history, so in this case we do not need to do anything.
|
||||
#
|
||||
if [[ -o HIST_IGNORE_ALL_DUPS || -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ -o HIST_FIND_NO_DUPS && $BUFFER == $_history_substring_search_result ]]; then
|
||||
#
|
||||
# Repeat the current search so that a different (unique) match is found.
|
||||
#
|
||||
_history-substring-search-up-search
|
||||
fi
|
||||
}
|
||||
|
||||
_history-substring-search-down-search() {
|
||||
_history_substring_search_refresh_display=1
|
||||
|
||||
#
|
||||
# Select history entry during history-substring-down-search:
|
||||
#
|
||||
# The following variables have been initialized in
|
||||
# _history-substring-search-up/down-search():
|
||||
#
|
||||
# $_history_substring_search_matches is the current list of matches that
|
||||
# need to be displayed to the user.
|
||||
# $_history_substring_search_match_index is the index of the current match
|
||||
# that is being displayed to the user.
|
||||
#
|
||||
# The range of values that $_history_substring_search_match_index can take
|
||||
# is: [0, $#_history_substring_search_matches + 1]. A value of 0
|
||||
# indicates that we are beyond the beginning of
|
||||
# $_history_substring_search_matches. A value of
|
||||
# $#_history_substring_search_matches + 1 indicates that we are beyond
|
||||
# the end of $_history_substring_search_matches and that we have also
|
||||
# processed all entries in _history_substring_search_raw_matches.
|
||||
#
|
||||
# In _history-substring-search-down-search() the initial value of
|
||||
# $_history_substring_search_match_index is 1. This value is set in
|
||||
# _history-substring-search-begin(). _history-substring-search-down-search()
|
||||
# will initially decrement it to 0.
|
||||
#
|
||||
|
||||
if [[ $_history_substring_search_match_index -lt 1 ]]; then
|
||||
#
|
||||
# We are beyond the beginning of $_history_substring_search_matches.
|
||||
#
|
||||
# 1. Update display to indicate search not found.
|
||||
#
|
||||
_history-substring-search-not-found
|
||||
return
|
||||
fi
|
||||
|
||||
if _history-substring-search-has-prev; then
|
||||
#
|
||||
# We do have younger matches.
|
||||
#
|
||||
# 1. Move index to point to the previous match.
|
||||
# 2. Update display to indicate search found.
|
||||
#
|
||||
_history_substring_search_match_index+=-1
|
||||
_history-substring-search-found
|
||||
|
||||
else
|
||||
#
|
||||
# We do not have younger matches.
|
||||
#
|
||||
# 1. Move the index beyond the beginning of
|
||||
# _history_substring_search_matches.
|
||||
# 2. Update display to indicate search not found.
|
||||
#
|
||||
_history_substring_search_match_index+=-1
|
||||
_history-substring-search-not-found
|
||||
fi
|
||||
|
||||
#
|
||||
# When HIST_FIND_NO_DUPS is set, meaning that only unique command lines from
|
||||
# history should be matched, make sure the new and old results are different.
|
||||
#
|
||||
# However, if the HIST_IGNORE_ALL_DUPS shell option, or
|
||||
# HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE is set, then we already have a
|
||||
# unique history, so in this case we do not need to do anything.
|
||||
#
|
||||
if [[ -o HIST_IGNORE_ALL_DUPS || -n $HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ -o HIST_FIND_NO_DUPS && $BUFFER == $_history_substring_search_result ]]; then
|
||||
#
|
||||
# Repeat the current search so that a different (unique) match is found.
|
||||
#
|
||||
_history-substring-search-down-search
|
||||
fi
|
||||
}
|
||||
|
||||
# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
|
||||
# vim: ft=zsh sw=2 ts=2 et
|
||||
173
dotfiles/zshrc.d/agnoster_prompt/prompt_agnoster_setup
Normal file
173
dotfiles/zshrc.d/agnoster_prompt/prompt_agnoster_setup
Normal file
@@ -0,0 +1,173 @@
|
||||
# vim:ft=zsh ts=2 sw=2 sts=2
|
||||
#
|
||||
# agnoster's Theme - https://gist.github.com/3712874
|
||||
# A Powerline-inspired theme for ZSH
|
||||
#
|
||||
# # README
|
||||
#
|
||||
# In order for this theme to render correctly, you will need a
|
||||
# [Powerline-patched font](https://gist.github.com/1595572).
|
||||
#
|
||||
# In addition, I recommend the
|
||||
# [Solarized theme](https://github.com/altercation/solarized/) and, if you're
|
||||
# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app -
|
||||
# it has significantly better color fidelity.
|
||||
#
|
||||
# # Goals
|
||||
#
|
||||
# The aim of this theme is to only show you *relevant* information. Like most
|
||||
# prompts, it will only show git information when in a git working directory.
|
||||
# However, it goes a step further: everything from the current user and
|
||||
# hostname to whether the last call exited with an error to whether background
|
||||
# jobs are running in this shell will all be displayed automatically when
|
||||
# appropriate.
|
||||
|
||||
### Segments of the prompt, default order declaration
|
||||
|
||||
typeset -aHg AGNOSTER_PROMPT_SEGMENTS=(
|
||||
prompt_status
|
||||
prompt_context
|
||||
prompt_virtualenv
|
||||
prompt_dir
|
||||
prompt_git
|
||||
prompt_end
|
||||
)
|
||||
|
||||
### Segment drawing
|
||||
# A few utility functions to make it easy and re-usable to draw segmented prompts
|
||||
|
||||
CURRENT_BG='NONE'
|
||||
if [[ -z "$PRIMARY_FG" ]]; then
|
||||
PRIMARY_FG=black
|
||||
fi
|
||||
|
||||
# Characters
|
||||
SEGMENT_SEPARATOR="\ue0b0"
|
||||
PLUSMINUS="\u00b1"
|
||||
BRANCH="\ue0a0"
|
||||
DETACHED="\u27a6"
|
||||
CROSS="\u2718"
|
||||
LIGHTNING="\u26a1"
|
||||
GEAR="\u2699"
|
||||
|
||||
# Begin a segment
|
||||
# Takes two arguments, background and foreground. Both can be omitted,
|
||||
# rendering default background/foreground.
|
||||
prompt_segment() {
|
||||
local bg fg
|
||||
[[ -n $1 ]] && bg="%K{$1}" || bg="%k"
|
||||
[[ -n $2 ]] && fg="%F{$2}" || fg="%f"
|
||||
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
|
||||
print -n "%{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%}"
|
||||
else
|
||||
print -n "%{$bg%}%{$fg%}"
|
||||
fi
|
||||
CURRENT_BG=$1
|
||||
[[ -n $3 ]] && print -n $3
|
||||
}
|
||||
|
||||
# End the prompt, closing any open segments
|
||||
prompt_end() {
|
||||
if [[ -n $CURRENT_BG ]]; then
|
||||
print -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
|
||||
else
|
||||
print -n "%{%k%}"
|
||||
fi
|
||||
print -n "%{%f%}"
|
||||
CURRENT_BG=''
|
||||
}
|
||||
|
||||
### Prompt components
|
||||
# Each component will draw itself, and hide itself if no information needs to be shown
|
||||
|
||||
# Context: user@hostname (who am I and where am I)
|
||||
prompt_context() {
|
||||
local user=`whoami`
|
||||
|
||||
if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CONNECTION" ]]; then
|
||||
prompt_segment $PRIMARY_FG default " %(!.%{%F{yellow}%}.)$user@%m "
|
||||
fi
|
||||
}
|
||||
|
||||
# Git: branch/detached head, dirty status
|
||||
prompt_git() {
|
||||
local color ref
|
||||
is_dirty() {
|
||||
test -n "$(git status --porcelain --ignore-submodules)"
|
||||
}
|
||||
ref="$vcs_info_msg_0_"
|
||||
if [[ -n "$ref" ]]; then
|
||||
if is_dirty; then
|
||||
color=yellow
|
||||
ref="${ref} $PLUSMINUS"
|
||||
else
|
||||
color=green
|
||||
ref="${ref} "
|
||||
fi
|
||||
if [[ "${ref/.../}" == "$ref" ]]; then
|
||||
ref="$BRANCH $ref"
|
||||
else
|
||||
ref="$DETACHED ${ref/.../}"
|
||||
fi
|
||||
prompt_segment $color $PRIMARY_FG
|
||||
print -n " $ref"
|
||||
fi
|
||||
}
|
||||
|
||||
# Dir: current working directory
|
||||
prompt_dir() {
|
||||
prompt_segment blue $PRIMARY_FG ' %~ '
|
||||
}
|
||||
|
||||
# Status:
|
||||
# - was there an error
|
||||
# - am I root
|
||||
# - are there background jobs?
|
||||
prompt_status() {
|
||||
local symbols
|
||||
symbols=()
|
||||
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}$CROSS"
|
||||
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}$LIGHTNING"
|
||||
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$GEAR"
|
||||
|
||||
[[ -n "$symbols" ]] && prompt_segment $PRIMARY_FG default " $symbols "
|
||||
}
|
||||
|
||||
# Display current virtual environment
|
||||
prompt_virtualenv() {
|
||||
if [[ -n $VIRTUAL_ENV ]]; then
|
||||
color=cyan
|
||||
prompt_segment $color $PRIMARY_FG
|
||||
print -Pn " $(basename $VIRTUAL_ENV) "
|
||||
fi
|
||||
}
|
||||
|
||||
## Main prompt
|
||||
prompt_agnoster_main() {
|
||||
RETVAL=$?
|
||||
CURRENT_BG='NONE'
|
||||
for prompt_segment in "${AGNOSTER_PROMPT_SEGMENTS[@]}"; do
|
||||
[[ -n $prompt_segment ]] && $prompt_segment
|
||||
done
|
||||
}
|
||||
|
||||
prompt_agnoster_precmd() {
|
||||
vcs_info
|
||||
PROMPT='%{%f%b%k%}$(prompt_agnoster_main) '
|
||||
}
|
||||
|
||||
prompt_agnoster_setup() {
|
||||
autoload -Uz add-zsh-hook
|
||||
autoload -Uz vcs_info
|
||||
|
||||
prompt_opts=(cr subst percent)
|
||||
|
||||
add-zsh-hook precmd prompt_agnoster_precmd
|
||||
|
||||
zstyle ':vcs_info:*' enable git
|
||||
zstyle ':vcs_info:*' check-for-changes false
|
||||
zstyle ':vcs_info:git*' formats '%b'
|
||||
zstyle ':vcs_info:git*' actionformats '%b (%a)'
|
||||
}
|
||||
|
||||
prompt_agnoster_setup "$@"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user