mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Compare commits
871 Commits
github
...
2022-05-08
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ab9bd3452 | ||
|
|
b68c1e2c65 | ||
|
|
3c8d8ca5e1 | ||
|
|
f6e6c42b26 | ||
|
|
7165e7c93f | ||
|
|
63f401c84b | ||
|
|
dea863ee35 | ||
|
|
d01a320de7 | ||
|
|
0564dbbb3d | ||
|
|
1efa61a9f4 | ||
|
|
77a01d2fda | ||
|
|
71711a5cc0 | ||
|
|
a49474fe60 | ||
|
|
2217cfb47b | ||
|
|
75b0c5db9e | ||
|
|
50174a4f72 | ||
|
|
04470627c6 | ||
|
|
e6318c4cc1 | ||
|
|
15b575c34d | ||
|
|
2db123c772 | ||
|
|
2de511f5f3 | ||
|
|
890a24ec07 | ||
|
|
a3aaed6c0c | ||
|
|
9f4fbfb06a | ||
|
|
273d6b495f | ||
|
|
d41703820d | ||
|
|
5748d014f1 | ||
|
|
2779322b24 | ||
|
|
50948acee4 | ||
|
|
670cf5c8dc | ||
|
|
d213b3b234 | ||
|
|
37d606cc49 | ||
|
|
8f57fad78c | ||
|
|
f8ddb56b02 | ||
|
|
1f59627da9 | ||
|
|
2c88a59188 | ||
|
|
9ec67f4c1c | ||
|
|
db3193e0bc | ||
|
|
9c83b8fc40 | ||
|
|
3da887ffad | ||
|
|
f56b7d0b7b | ||
|
|
e18e66391b | ||
|
|
8b66586fe8 | ||
|
|
ac4109cee6 | ||
|
|
99af2287c5 | ||
|
|
6adaaffabd | ||
|
|
c6f217d47c | ||
|
|
733093ee7a | ||
|
|
441a533e2a | ||
|
|
8d30879224 | ||
|
|
f94a4dc67c | ||
|
|
0bb950b053 | ||
|
|
4ec8f22ab8 | ||
|
|
ba0c734b06 | ||
|
|
f24e3ebb24 | ||
|
|
4af40de24b | ||
|
|
351b136cbc | ||
|
|
a5b0677903 | ||
|
|
ebf5c1cd22 | ||
|
|
94abfa2fe2 | ||
|
|
15f5f91e2a | ||
|
|
2b6229acc3 | ||
|
|
e05a6aa473 | ||
|
|
673fca3c05 | ||
|
|
f6a7b372b7 | ||
|
|
685fb22dd3 | ||
|
|
e788dedf69 | ||
|
|
a482092fdb | ||
|
|
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 | ||
|
|
a43c80639d | ||
|
|
bf6e7bd315 | ||
|
|
089261264f | ||
|
|
87dc698f31 | ||
|
|
20581f766f | ||
|
|
dfc1021cba | ||
|
|
424febea00 | ||
|
|
7ccc6ec6c0 | ||
|
|
ab6b1784bd | ||
|
|
7bdcfdf18a | ||
|
|
fe8e33eb92 | ||
|
|
8786ca65b9 | ||
|
|
4615724282 | ||
|
|
aa41a0e1ee | ||
|
|
552a3bdd1d | ||
|
|
97b5a694d3 | ||
|
|
d35dd23019 | ||
|
|
9a26c713d7 | ||
|
|
dc64160e83 | ||
|
|
ec8b2379e5 | ||
|
|
baa267e4e7 | ||
|
|
31e19d6f90 | ||
|
|
736e24468b | ||
|
|
727981e760 | ||
|
|
ac2c605a5e | ||
|
|
7c2964b6d8 | ||
|
|
73873a9316 | ||
|
|
452dfa1ec2 | ||
|
|
37099ff94d | ||
|
|
1df1d1f244 | ||
|
|
1ac4c6e0b1 | ||
|
|
358c5d48a5 | ||
|
|
b8c290965b | ||
|
|
ecfbce96c0 | ||
|
|
c9a4277724 | ||
|
|
ec69fed5d2 | ||
|
|
138f9ef3c3 | ||
|
|
1442824e64 | ||
|
|
934dfe32df | ||
|
|
79f96d0ed3 | ||
|
|
b9cf6bae01 | ||
|
|
056f0087e7 | ||
|
|
0ce708d0ec | ||
|
|
fc3903003e | ||
|
|
dd4beff725 | ||
|
|
4858e33ff1 | ||
|
|
9520a9b484 | ||
|
|
54481260b8 | ||
|
|
59e5f5ad79 | ||
|
|
4c044264d8 | ||
|
|
129e7088f3 | ||
|
|
5c57186807 | ||
|
|
97d0f2f1d0 | ||
|
|
742e2c10c3 | ||
|
|
a0ce33ddb1 | ||
|
|
6a0c55ac73 | ||
|
|
dfdf1b8588 | ||
|
|
7955b24be6 | ||
|
|
bfdd2f4d6a | ||
|
|
a234f2934f | ||
|
|
71df11db58 | ||
|
|
a61efc0fb1 | ||
|
|
850ab7090a | ||
|
|
90410ca322 | ||
|
|
e42a8472f6 | ||
|
|
81e25dc192 | ||
|
|
6bc3a67fb0 | ||
|
|
cb6ca10f6f | ||
|
|
ef887ed209 | ||
|
|
d9fcc5b1e6 | ||
|
|
95f68cd822 | ||
|
|
2291c85db5 | ||
|
|
a55243a867 | ||
|
|
c4154d8ca9 | ||
|
|
c1350c83d2 | ||
|
|
f4232608f6 | ||
|
|
4f64e41232 | ||
|
|
98455d4917 | ||
|
|
0da6ca2c47 | ||
|
|
fc25cfd8d3 | ||
|
|
4c1639535b | ||
|
|
4cd1306393 | ||
|
|
a33d352cf9 | ||
|
|
79b352d091 | ||
|
|
7b3750a768 | ||
|
|
f7f8baad03 | ||
|
|
fc4ab371f5 | ||
|
|
2546279b92 | ||
|
|
b1de895300 | ||
|
|
9846031492 | ||
|
|
1b0cec9ce2 | ||
|
|
3ebb6a65a7 | ||
|
|
59c51ca93e | ||
|
|
9cb9d60fe6 | ||
|
|
52fcdfea60 | ||
|
|
1cf72204a2 | ||
|
|
b16daa5da6 | ||
|
|
8e55e1dbe9 | ||
|
|
8a84e547e1 | ||
|
|
d1696d88f1 | ||
|
|
4bf05842ec | ||
|
|
1456c91f99 | ||
|
|
a2a308c7d3 | ||
|
|
2432245885 | ||
|
|
f828e32917 | ||
|
|
d809341953 | ||
|
|
a05dd1ee07 | ||
|
|
2af2fe3e71 | ||
|
|
d4ad0603e3 | ||
|
|
93b33f668f | ||
|
|
1730ce9994 | ||
|
|
00771b2031 | ||
|
|
343c9f6e30 | ||
|
|
9b1bed0810 | ||
|
|
873354b9c0 | ||
|
|
a9ba0f73fe | ||
|
|
269426f11d | ||
|
|
2fba9d3bf5 | ||
|
|
bbf444460e | ||
|
|
4edcafe55b | ||
|
|
5661e286d2 | ||
|
|
891fe54140 | ||
|
|
e65a1e0793 | ||
|
|
74a02287f8 | ||
|
|
6fd91c6742 | ||
|
|
dc3598fa31 | ||
|
|
746f65e2a1 | ||
|
|
f6d9a2ac2d | ||
|
|
a06239095c | ||
|
|
854e223573 | ||
|
|
5250f1b472 | ||
|
|
f1db430071 | ||
|
|
a7fd649b9c | ||
|
|
21b5d14d37 | ||
|
|
724433fab1 | ||
|
|
a6fe923b11 | ||
|
|
a806e19b7c | ||
|
|
34b58163e9 | ||
|
|
7657b4e81d | ||
|
|
c8afa728a9 | ||
|
|
ecf27f69e0 | ||
|
|
97f0e50352 | ||
|
|
dc85fb7f94 | ||
|
|
5577ee29b4 | ||
|
|
562697a2a7 | ||
|
|
dcaf567116 | ||
|
|
9c6042116a | ||
|
|
de3919a7fe | ||
|
|
c568c81f60 | ||
|
|
9936dd7983 | ||
|
|
c693c4b8c7 | ||
|
|
01e1c515ff | ||
|
|
215f03af2e | ||
|
|
88fae8ded3 | ||
|
|
029e41c1bf | ||
|
|
ceceb307f9 | ||
|
|
4cbf297838 | ||
|
|
1361fb8cc6 | ||
|
|
c11ea02838 | ||
|
|
ecdf364f65 | ||
|
|
98d85b801d | ||
|
|
e1a5c1f588 | ||
|
|
da2b4b82f4 | ||
|
|
f03e60b30d | ||
|
|
c6ed005467 | ||
|
|
3461ae3417 | ||
|
|
45c0b529af | ||
|
|
f1e16ebaf8 | ||
|
|
1b901faab1 | ||
|
|
a7ae4f47a8 | ||
|
|
58bdc6b23a | ||
|
|
9bad2d4afa | ||
|
|
d920a25f57 | ||
|
|
2225fbed9a | ||
|
|
95ccf66984 | ||
|
|
c32b9ef765 | ||
|
|
c400ab787f | ||
|
|
91790b5a12 | ||
|
|
c65f3b4730 | ||
|
|
6185108c0f | ||
|
|
8b59e8c764 | ||
|
|
114db98bdf | ||
|
|
7364eb5446 | ||
|
|
31f16132dc | ||
|
|
70efebd88d | ||
|
|
d9f6a1b250 | ||
|
|
a3292747eb | ||
|
|
6b8b7673d8 | ||
|
|
283609cc50 | ||
|
|
efec992784 | ||
|
|
be49f3f57c | ||
|
|
3a89085279 | ||
|
|
b12b39f8c4 | ||
|
|
e6a7cd9b9f | ||
|
|
89bdedbf4f | ||
|
|
5ac75c4b63 | ||
|
|
f235fb2660 | ||
|
|
3839ac9e2f | ||
|
|
63a6f8bb32 | ||
|
|
4510acb3ea | ||
|
|
173abd42e4 | ||
|
|
27b026f011 | ||
|
|
1dcee2dbf0 | ||
|
|
3721d061fa | ||
|
|
403dad5318 | ||
|
|
58c49d5c5b | ||
|
|
bb519ae3af | ||
|
|
125bf08e73 | ||
|
|
e5066e087d | ||
|
|
345c2e5423 | ||
|
|
09b7cad44a | ||
|
|
01dab7312f | ||
|
|
366f99aef7 | ||
|
|
ea571ac1b8 | ||
|
|
59c26347ae | ||
|
|
9aa69c551e | ||
|
|
775657b90d | ||
|
|
4ae16a4a17 | ||
|
|
9bb50f6136 | ||
|
|
aa984c6a07 | ||
|
|
843863cc75 |
3
.git-crypt/.gitattributes
vendored
Normal file
3
.git-crypt/.gitattributes
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Do not edit this file. To specify the files to encrypt, create your own
|
||||||
|
# .gitattributes file in the directory where your files are.
|
||||||
|
* !filter !diff
|
||||||
Binary file not shown.
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
private_dotfiles/** filter=git-crypt diff=git-crypt
|
||||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1 +1,6 @@
|
|||||||
private_dotfiles/**
|
installed-prefs
|
||||||
|
.installed-prefs
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
*.bak
|
||||||
|
local_dotfiles
|
||||||
|
|||||||
24
.gitmodules
vendored
Normal file
24
.gitmodules
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[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/tmux/tmux-logging"]
|
||||||
|
path = dotfiles/tmux/tmux-logging
|
||||||
|
url = https://github.com/tmux-plugins/tmux-logging.git
|
||||||
|
fetchRecurseSubmodules = true
|
||||||
42
README.md
Normal file
42
README.md
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
### 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.
|
||||||
|
|
||||||
|
This started just as dotfiles, but expanded to include SSH keys, GPG keys,
|
||||||
|
packages I like installed, and an ever-growing setup script. There are various
|
||||||
|
options to install just parts of it, such as on a machine where I only have a
|
||||||
|
user account but no root.
|
||||||
|
|
||||||
|
This now uses [git-crypt](https://github.com/AGWA/git-crypt) to protect
|
||||||
|
`private_dotfiles` for things I don't want to splash all over the internet. :)
|
||||||
|
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
|
||||||
|
not included in my .skel. (Defaults to 0, installs everything.)
|
||||||
|
INSTALL_KEYS: Install GnuPG and SSH keys. SSH keys are placed in
|
||||||
|
authorized_keys. (Defaults to 1, installs keys.)
|
||||||
|
TRUST_ALL_KEYS: Allow all keys to be used for SSH login, versus a small subset.
|
||||||
|
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
|
||||||
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)
|
||||||
33
bin/backup.sh
Executable file
33
bin/backup.sh
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -o nounset
|
||||||
|
set -o errexit
|
||||||
|
|
||||||
|
DEFAULT=`echo /media/${USER}/[bB]ackup/${USER}/`
|
||||||
|
DEST="${1:-${DEFAULT}}"
|
||||||
|
|
||||||
|
function verify_dest {
|
||||||
|
arr=($1)
|
||||||
|
items=${#arr[@]}
|
||||||
|
if [ $items -ne 1 ] ; then
|
||||||
|
echo "Bad count of backup destinations." > /dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dir="$1"
|
||||||
|
end=$((${#dir}-1))
|
||||||
|
last="${dir:$end:1}"
|
||||||
|
if [ "$last" != "/" ] ; then
|
||||||
|
echo -n "Destination $dir does not end in a /, " > /dev/stderr
|
||||||
|
echo "this is probably not what you want!" > /dev/stderr
|
||||||
|
echo "Press a key to continue, or CTRL-C to cancel." > /dev/stderr
|
||||||
|
read
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
verify_dest "$DEST"
|
||||||
|
|
||||||
|
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."
|
||||||
882
bin/checksec.sh
Executable file
882
bin/checksec.sh
Executable file
@@ -0,0 +1,882 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# The BSD License (http://www.opensource.org/licenses/bsd-license.php)
|
||||||
|
# specifies the terms and conditions of use for checksec.sh:
|
||||||
|
#
|
||||||
|
# Copyright (c) 2009-2011, Tobias Klein.
|
||||||
|
# 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 Tobias Klein nor the name of trapkit.de 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.
|
||||||
|
#
|
||||||
|
# Name : checksec.sh
|
||||||
|
# Version : 1.5
|
||||||
|
# Author : Tobias Klein
|
||||||
|
# Date : November 2011
|
||||||
|
# Download: http://www.trapkit.de/tools/checksec.html
|
||||||
|
# Changes : http://www.trapkit.de/tools/checksec_changes.txt
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
#
|
||||||
|
# Modern Linux distributions offer some mitigation techniques to make it
|
||||||
|
# harder to exploit software vulnerabilities reliably. Mitigations such
|
||||||
|
# as RELRO, NoExecute (NX), Stack Canaries, Address Space Layout
|
||||||
|
# Randomization (ASLR) and Position Independent Executables (PIE) have
|
||||||
|
# made reliably exploiting any vulnerabilities that do exist far more
|
||||||
|
# challenging. The checksec.sh script is designed to test what *standard*
|
||||||
|
# Linux OS and PaX (http://pax.grsecurity.net/) security features are being
|
||||||
|
# used.
|
||||||
|
#
|
||||||
|
# As of version 1.3 the script also lists the status of various Linux kernel
|
||||||
|
# protection mechanisms.
|
||||||
|
#
|
||||||
|
# Credits:
|
||||||
|
#
|
||||||
|
# Thanks to Brad Spengler (grsecurity.net) for the PaX support.
|
||||||
|
# Thanks to Jon Oberheide (jon.oberheide.org) for the kernel support.
|
||||||
|
# Thanks to Ollie Whitehouse (Research In Motion) for rpath/runpath support.
|
||||||
|
#
|
||||||
|
# Others that contributed to checksec.sh (in no particular order):
|
||||||
|
#
|
||||||
|
# Simon Ruderich, Denis Scherbakov, Stefan Kuttler, Radoslaw Madej,
|
||||||
|
# Anthony G. Basile, Martin Vaeth and Brian Davis.
|
||||||
|
#
|
||||||
|
|
||||||
|
# global vars
|
||||||
|
have_readelf=1
|
||||||
|
verbose=false
|
||||||
|
|
||||||
|
# FORTIFY_SOURCE vars
|
||||||
|
FS_end=_chk
|
||||||
|
FS_cnt_total=0
|
||||||
|
FS_cnt_checked=0
|
||||||
|
FS_cnt_unchecked=0
|
||||||
|
FS_chk_func_libc=0
|
||||||
|
FS_functions=0
|
||||||
|
FS_libc=0
|
||||||
|
|
||||||
|
# version information
|
||||||
|
version() {
|
||||||
|
echo "checksec v1.5, Tobias Klein, www.trapkit.de, November 2011"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# help
|
||||||
|
help() {
|
||||||
|
echo "Usage: checksec [OPTION]"
|
||||||
|
echo
|
||||||
|
echo "Options:"
|
||||||
|
echo
|
||||||
|
echo " --file <executable-file>"
|
||||||
|
echo " --dir <directory> [-v]"
|
||||||
|
echo " --proc <process name>"
|
||||||
|
echo " --proc-all"
|
||||||
|
echo " --proc-libs <process ID>"
|
||||||
|
echo " --kernel"
|
||||||
|
echo " --fortify-file <executable-file>"
|
||||||
|
echo " --fortify-proc <process ID>"
|
||||||
|
echo " --version"
|
||||||
|
echo " --help"
|
||||||
|
echo
|
||||||
|
echo "For more information, see:"
|
||||||
|
echo " http://www.trapkit.de/tools/checksec.html"
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if command exists
|
||||||
|
command_exists () {
|
||||||
|
type $1 > /dev/null 2>&1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if directory exists
|
||||||
|
dir_exists () {
|
||||||
|
if [ -d $1 ] ; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check user privileges
|
||||||
|
root_privs () {
|
||||||
|
if [ $(/usr/bin/id -u) -eq 0 ] ; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if input is numeric
|
||||||
|
isNumeric () {
|
||||||
|
echo "$@" | grep -q -v "[^0-9]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check if input is a string
|
||||||
|
isString () {
|
||||||
|
echo "$@" | grep -q -v "[^A-Za-z]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# check file(s)
|
||||||
|
filecheck() {
|
||||||
|
# check for RELRO support
|
||||||
|
if readelf -l $1 2>/dev/null | grep -q 'GNU_RELRO'; then
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q 'BIND_NOW'; then
|
||||||
|
echo -n -e '\033[32mFull RELRO \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mPartial RELRO\033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo RELRO \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for stack canary support
|
||||||
|
if readelf -s $1 2>/dev/null | grep -q '__stack_chk_fail'; then
|
||||||
|
echo -n -e '\033[32mCanary found \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo canary found\033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for NX support
|
||||||
|
if readelf -W -l $1 2>/dev/null | grep 'GNU_STACK' | grep -q 'RWE'; then
|
||||||
|
echo -n -e '\033[31mNX disabled\033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNX enabled \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for PIE support
|
||||||
|
if readelf -h $1 2>/dev/null | grep -q 'Type:[[:space:]]*EXEC'; then
|
||||||
|
echo -n -e '\033[31mNo PIE \033[m '
|
||||||
|
elif readelf -h $1 2>/dev/null | grep -q 'Type:[[:space:]]*DYN'; then
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q '(DEBUG)'; then
|
||||||
|
echo -n -e '\033[32mPIE enabled \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mDSO \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mNot an ELF file\033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for rpath / run path
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q 'rpath'; then
|
||||||
|
echo -n -e '\033[31mRPATH \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNo RPATH \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
if readelf -d $1 2>/dev/null | grep -q 'runpath'; then
|
||||||
|
echo -n -e '\033[31mRUNPATH \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNo RUNPATH \033[m '
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check process(es)
|
||||||
|
proccheck() {
|
||||||
|
# check for RELRO support
|
||||||
|
if readelf -l $1/exe 2>/dev/null | grep -q 'Program Headers'; then
|
||||||
|
if readelf -l $1/exe 2>/dev/null | grep -q 'GNU_RELRO'; then
|
||||||
|
if readelf -d $1/exe 2>/dev/null | grep -q 'BIND_NOW'; then
|
||||||
|
echo -n -e '\033[32mFull RELRO \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mPartial RELRO \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo RELRO \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mPermission denied (please run as root)\033[m\n'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for stack canary support
|
||||||
|
if readelf -s $1/exe 2>/dev/null | grep -q 'Symbol table'; then
|
||||||
|
if readelf -s $1/exe 2>/dev/null | grep -q '__stack_chk_fail'; then
|
||||||
|
echo -n -e '\033[32mCanary found \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo canary found \033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ "$1" != "1" ] ; then
|
||||||
|
echo -n -e '\033[33mPermission denied \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mNo symbol table found\033[m '
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# first check for PaX support
|
||||||
|
if cat $1/status 2> /dev/null | grep -q 'PaX:'; then
|
||||||
|
pageexec=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b6) )
|
||||||
|
segmexec=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b10) )
|
||||||
|
mprotect=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b8) )
|
||||||
|
randmmap=( $(cat $1/status 2> /dev/null | grep 'PaX:' | cut -b9) )
|
||||||
|
if [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "M" && "$randmmap" = "R" ]] ; then
|
||||||
|
echo -n -e '\033[32mPaX enabled\033[m '
|
||||||
|
elif [[ "$pageexec" = "p" && "$segmexec" = "s" && "$randmmap" = "R" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX ASLR only\033[m '
|
||||||
|
elif [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "m" && "$randmmap" = "R" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX mprot off \033[m'
|
||||||
|
elif [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "M" && "$randmmap" = "r" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX ASLR off\033[m '
|
||||||
|
elif [[ "$pageexec" = "P" || "$segmexec" = "S" ]] && [[ "$mprotect" = "m" && "$randmmap" = "r" ]] ; then
|
||||||
|
echo -n -e '\033[33mPaX NX only\033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mPaX disabled\033[m '
|
||||||
|
fi
|
||||||
|
# fallback check for NX support
|
||||||
|
elif readelf -W -l $1/exe 2>/dev/null | grep 'GNU_STACK' | grep -q 'RWE'; then
|
||||||
|
echo -n -e '\033[31mNX disabled\033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[32mNX enabled \033[m '
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for PIE support
|
||||||
|
if readelf -h $1/exe 2>/dev/null | grep -q 'Type:[[:space:]]*EXEC'; then
|
||||||
|
echo -n -e '\033[31mNo PIE \033[m '
|
||||||
|
elif readelf -h $1/exe 2>/dev/null | grep -q 'Type:[[:space:]]*DYN'; then
|
||||||
|
if readelf -d $1/exe 2>/dev/null | grep -q '(DEBUG)'; then
|
||||||
|
echo -n -e '\033[32mPIE enabled \033[m '
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mDynamic Shared Object\033[m '
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -n -e '\033[33mNot an ELF file \033[m '
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check mapped libraries
|
||||||
|
libcheck() {
|
||||||
|
libs=( $(awk '{ print $6 }' /proc/$1/maps | grep '/' | sort -u | xargs file | grep ELF | awk '{ print $1 }' | sed 's/:/ /') )
|
||||||
|
|
||||||
|
printf "\n* Loaded libraries (file information, # of mapped files: ${#libs[@]}):\n\n"
|
||||||
|
|
||||||
|
for element in $(seq 0 $((${#libs[@]} - 1)))
|
||||||
|
do
|
||||||
|
echo " ${libs[$element]}:"
|
||||||
|
echo -n " "
|
||||||
|
filecheck ${libs[$element]}
|
||||||
|
printf "\n\n"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# check for system-wide ASLR support
|
||||||
|
aslrcheck() {
|
||||||
|
# PaX ASLR support
|
||||||
|
if !(cat /proc/1/status 2> /dev/null | grep -q 'Name:') ; then
|
||||||
|
echo -n -e ':\033[33m insufficient privileges for PaX ASLR checks\033[m\n'
|
||||||
|
echo -n -e ' Fallback to standard Linux ASLR check'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if cat /proc/1/status 2> /dev/null | grep -q 'PaX:'; then
|
||||||
|
printf ": "
|
||||||
|
if cat /proc/1/status 2> /dev/null | grep 'PaX:' | grep -q 'R'; then
|
||||||
|
echo -n -e '\033[32mPaX ASLR enabled\033[m\n\n'
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mPaX ASLR disabled\033[m\n\n'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# standard Linux 'kernel.randomize_va_space' ASLR support
|
||||||
|
# (see the kernel file 'Documentation/sysctl/kernel.txt' for a detailed description)
|
||||||
|
printf " (kernel.randomize_va_space): "
|
||||||
|
if /sbin/sysctl -a 2>/dev/null | grep -q 'kernel.randomize_va_space = 1'; then
|
||||||
|
echo -n -e '\033[33mOn (Setting: 1)\033[m\n\n'
|
||||||
|
printf " Description - Make the addresses of mmap base, stack and VDSO page randomized.\n"
|
||||||
|
printf " This, among other things, implies that shared libraries will be loaded to \n"
|
||||||
|
printf " random addresses. Also for PIE-linked binaries, the location of code start\n"
|
||||||
|
printf " is randomized. Heap addresses are *not* randomized.\n\n"
|
||||||
|
elif /sbin/sysctl -a 2>/dev/null | grep -q 'kernel.randomize_va_space = 2'; then
|
||||||
|
echo -n -e '\033[32mOn (Setting: 2)\033[m\n\n'
|
||||||
|
printf " Description - Make the addresses of mmap base, heap, stack and VDSO page randomized.\n"
|
||||||
|
printf " This, among other things, implies that shared libraries will be loaded to random \n"
|
||||||
|
printf " addresses. Also for PIE-linked binaries, the location of code start is randomized.\n\n"
|
||||||
|
elif /sbin/sysctl -a 2>/dev/null | grep -q 'kernel.randomize_va_space = 0'; then
|
||||||
|
echo -n -e '\033[31mOff (Setting: 0)\033[m\n'
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNot supported\033[m\n'
|
||||||
|
fi
|
||||||
|
printf " See the kernel file 'Documentation/sysctl/kernel.txt' for more details.\n\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check cpu nx flag
|
||||||
|
nxcheck() {
|
||||||
|
if grep -q nx /proc/cpuinfo; then
|
||||||
|
echo -n -e '\033[32mYes\033[m\n\n'
|
||||||
|
else
|
||||||
|
echo -n -e '\033[31mNo\033[m\n\n'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# check for kernel protection mechanisms
|
||||||
|
kernelcheck() {
|
||||||
|
printf " Description - List the status of kernel protection mechanisms. Rather than\n"
|
||||||
|
printf " inspect kernel mechanisms that may aid in the prevention of exploitation of\n"
|
||||||
|
printf " userspace processes, this option lists the status of kernel configuration\n"
|
||||||
|
printf " options that harden the kernel itself against attack.\n\n"
|
||||||
|
printf " Kernel config: "
|
||||||
|
|
||||||
|
if [ -f /proc/config.gz ] ; then
|
||||||
|
kconfig="zcat /proc/config.gz"
|
||||||
|
printf "\033[32m/proc/config.gz\033[m\n\n"
|
||||||
|
elif [ -f /boot/config-`uname -r` ] ; then
|
||||||
|
kconfig="cat /boot/config-`uname -r`"
|
||||||
|
printf "\033[33m/boot/config-`uname -r`\033[m\n\n"
|
||||||
|
printf " Warning: The config on disk may not represent running kernel config!\n\n";
|
||||||
|
elif [ -f "${KBUILD_OUTPUT:-/usr/src/linux}"/.config ] ; then
|
||||||
|
kconfig="cat ${KBUILD_OUTPUT:-/usr/src/linux}/.config"
|
||||||
|
printf "\033[33m%s\033[m\n\n" "${KBUILD_OUTPUT:-/usr/src/linux}/.config"
|
||||||
|
printf " Warning: The config on disk may not represent running kernel config!\n\n";
|
||||||
|
else
|
||||||
|
printf "\033[31mNOT FOUND\033[m\n\n"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " GCC stack protector support: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_CC_STACKPROTECTOR=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Strict user copy checks: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Enforce read-only kernel data: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_DEBUG_RODATA=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
printf " Restrict /dev/mem access: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_STRICT_DEVMEM=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Restrict /dev/kmem access: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_DEVKMEM=y'; then
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n"
|
||||||
|
printf "* grsecurity / PaX: "
|
||||||
|
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC=y'; then
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_HIGH=y'; then
|
||||||
|
printf "\033[32mHigh GRKERNSEC\033[m\n\n"
|
||||||
|
elif $kconfig | grep -qi 'CONFIG_GRKERNSEC_MEDIUM=y'; then
|
||||||
|
printf "\033[33mMedium GRKERNSEC\033[m\n\n"
|
||||||
|
elif $kconfig | grep -qi 'CONFIG_GRKERNSEC_LOW=y'; then
|
||||||
|
printf "\033[31mLow GRKERNSEC\033[m\n\n"
|
||||||
|
else
|
||||||
|
printf "\033[33mCustom GRKERNSEC\033[m\n\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Non-executable kernel pages: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_KERNEXEC=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Prevent userspace pointer deref: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_MEMORY_UDEREF=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Prevent kobject refcount overflow: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_REFCOUNT=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Bounds check heap object copies: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_PAX_USERCOPY=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Disable writing to kmem/mem/port: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_KMEM=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Disable privileged I/O: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_IO=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Harden module auto-loading: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_MODHARDEN=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf " Hide kernel symbols: "
|
||||||
|
if $kconfig | grep -qi 'CONFIG_GRKERNSEC_HIDESYM=y'; then
|
||||||
|
printf "\033[32mEnabled\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mDisabled\033[m\n"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "\033[31mNo GRKERNSEC\033[m\n\n"
|
||||||
|
printf " The grsecurity / PaX patchset is available here:\n"
|
||||||
|
printf " http://grsecurity.net/\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n"
|
||||||
|
printf "* Kernel Heap Hardening: "
|
||||||
|
|
||||||
|
if $kconfig | grep -qi 'CONFIG_KERNHEAP=y'; then
|
||||||
|
if $kconfig | grep -qi 'CONFIG_KERNHEAP_FULLPOISON=y'; then
|
||||||
|
printf "\033[32mFull KERNHEAP\033[m\n\n"
|
||||||
|
else
|
||||||
|
printf "\033[33mPartial KERNHEAP\033[m\n\n"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "\033[31mNo KERNHEAP\033[m\n\n"
|
||||||
|
printf " The KERNHEAP hardening patchset is available here:\n"
|
||||||
|
printf " https://www.subreption.com/kernheap/\n\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- FORTIFY_SOURCE subfunctions (start) ---
|
||||||
|
|
||||||
|
# is FORTIFY_SOURCE supported by libc?
|
||||||
|
FS_libc_check() {
|
||||||
|
printf "* FORTIFY_SOURCE support available (libc) : "
|
||||||
|
|
||||||
|
if [ "${#FS_chk_func_libc[@]}" != "0" ] ; then
|
||||||
|
printf "\033[32mYes\033[m\n"
|
||||||
|
else
|
||||||
|
printf "\033[31mNo\033[m\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# was the binary compiled with FORTIFY_SOURCE?
|
||||||
|
FS_binary_check() {
|
||||||
|
printf "* Binary compiled with FORTIFY_SOURCE support: "
|
||||||
|
|
||||||
|
for FS_elem_functions in $(seq 0 $((${#FS_functions[@]} - 1)))
|
||||||
|
do
|
||||||
|
if [[ ${FS_functions[$FS_elem_functions]} =~ _chk ]] ; then
|
||||||
|
printf "\033[32mYes\033[m\n"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf "\033[31mNo\033[m\n"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
FS_comparison() {
|
||||||
|
echo
|
||||||
|
printf " ------ EXECUTABLE-FILE ------- . -------- LIBC --------\n"
|
||||||
|
printf " FORTIFY-able library functions | Checked function names\n"
|
||||||
|
printf " -------------------------------------------------------\n"
|
||||||
|
|
||||||
|
for FS_elem_libc in $(seq 0 $((${#FS_chk_func_libc[@]} - 1)))
|
||||||
|
do
|
||||||
|
for FS_elem_functions in $(seq 0 $((${#FS_functions[@]} - 1)))
|
||||||
|
do
|
||||||
|
FS_tmp_func=${FS_functions[$FS_elem_functions]}
|
||||||
|
FS_tmp_libc=${FS_chk_func_libc[$FS_elem_libc]}
|
||||||
|
|
||||||
|
if [[ $FS_tmp_func =~ ^$FS_tmp_libc$ ]] ; then
|
||||||
|
printf " \033[31m%-30s\033[m | __%s%s\n" $FS_tmp_func $FS_tmp_libc $FS_end
|
||||||
|
let FS_cnt_total++
|
||||||
|
let FS_cnt_unchecked++
|
||||||
|
elif [[ $FS_tmp_func =~ ^$FS_tmp_libc(_chk) ]] ; then
|
||||||
|
printf " \033[32m%-30s\033[m | __%s%s\n" $FS_tmp_func $FS_tmp_libc $FS_end
|
||||||
|
let FS_cnt_total++
|
||||||
|
let FS_cnt_checked++
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
FS_summary() {
|
||||||
|
echo
|
||||||
|
printf "SUMMARY:\n\n"
|
||||||
|
printf "* Number of checked functions in libc : ${#FS_chk_func_libc[@]}\n"
|
||||||
|
printf "* Total number of library functions in the executable: ${#FS_functions[@]}\n"
|
||||||
|
printf "* Number of FORTIFY-able functions in the executable : %s\n" $FS_cnt_total
|
||||||
|
printf "* Number of checked functions in the executable : \033[32m%s\033[m\n" $FS_cnt_checked
|
||||||
|
printf "* Number of unchecked functions in the executable : \033[31m%s\033[m\n" $FS_cnt_unchecked
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- FORTIFY_SOURCE subfunctions (end) ---
|
||||||
|
|
||||||
|
if !(command_exists readelf) ; then
|
||||||
|
printf "\033[31mWarning: 'readelf' not found! It's required for most checks.\033[m\n\n"
|
||||||
|
have_readelf=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# parse command-line arguments
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
--version)
|
||||||
|
version
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--help)
|
||||||
|
help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--dir)
|
||||||
|
if [ "$3" = "-v" ] ; then
|
||||||
|
verbose=true
|
||||||
|
fi
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid directory.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# remove trailing slashes
|
||||||
|
tempdir=`echo $2 | sed -e "s/\/*$//"`
|
||||||
|
if [ ! -d $tempdir ] ; then
|
||||||
|
printf "\033[31mError: The directory '$tempdir' does not exist.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd $tempdir
|
||||||
|
printf "RELRO STACK CANARY NX PIE RPATH RUNPATH FILE\n"
|
||||||
|
for N in [A-Za-z]*; do
|
||||||
|
if [ "$N" != "[A-Za-z]*" ]; then
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N ]; then
|
||||||
|
printf "\033[31mError: No read permissions for '$tempdir/$N' (run as root).\033[m\n"
|
||||||
|
else
|
||||||
|
# ELF executable?
|
||||||
|
out=`file $N`
|
||||||
|
if [[ ! $out =~ ELF ]] ; then
|
||||||
|
if [ "$verbose" = "true" ] ; then
|
||||||
|
printf "\033[34m*** Not an ELF file: $tempdir/"
|
||||||
|
file $N
|
||||||
|
printf "\033[m"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
filecheck $N
|
||||||
|
if [ `find $tempdir/$N \( -perm -004000 -o -perm -002000 \) -type f -print` ]; then
|
||||||
|
printf "\033[37;41m%s%s\033[m" $2 $N
|
||||||
|
else
|
||||||
|
printf "%s%s" $tempdir/ $N
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--file)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid file.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# does the file exist?
|
||||||
|
if [ ! -e $2 ] ; then
|
||||||
|
printf "\033[31mError: The file '$2' does not exist.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $2 ] ; then
|
||||||
|
printf "\033[31mError: No read permissions for '$2' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# ELF executable?
|
||||||
|
out=`file $2`
|
||||||
|
if [[ ! $out =~ ELF ]] ; then
|
||||||
|
printf "\033[31mError: Not an ELF file: "
|
||||||
|
file $2
|
||||||
|
printf "\033[m\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
printf "RELRO STACK CANARY NX PIE RPATH RUNPATH FILE\n"
|
||||||
|
filecheck $2
|
||||||
|
if [ `find $2 \( -perm -004000 -o -perm -002000 \) -type f -print` ] ; then
|
||||||
|
printf "\033[37;41m%s%s\033[m" $2 $N
|
||||||
|
else
|
||||||
|
printf "%s" $2
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--proc-all)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
printf "* System-wide ASLR"
|
||||||
|
aslrcheck
|
||||||
|
printf "* Does the CPU support NX: "
|
||||||
|
nxcheck
|
||||||
|
printf " COMMAND PID RELRO STACK CANARY NX/PaX PIE\n"
|
||||||
|
for N in [1-9]*; do
|
||||||
|
if [ $N != $$ ] && readlink -q $N/exe > /dev/null; then
|
||||||
|
printf "%16s" `head -1 $N/status | cut -b 7-`
|
||||||
|
printf "%7d " $N
|
||||||
|
proccheck $N
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ! -e /usr/bin/id ] ; then
|
||||||
|
printf "\n\033[33mNote: If you are running 'checksec.sh' as an unprivileged user, you\n"
|
||||||
|
printf " will not see all processes. Please run the script as root.\033[m\n\n"
|
||||||
|
else
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\n\033[33mNote: You are running 'checksec.sh' as an unprivileged user.\n"
|
||||||
|
printf " Too see all processes, please run the script as root.\033[m\n\n"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--proc)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process name.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if !(isString "$2") ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process name.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
printf "* System-wide ASLR"
|
||||||
|
aslrcheck
|
||||||
|
printf "* Does the CPU support NX: "
|
||||||
|
nxcheck
|
||||||
|
printf " COMMAND PID RELRO STACK CANARY NX/PaX PIE\n"
|
||||||
|
for N in `ps -Ao pid,comm | grep $2 | cut -b1-6`; do
|
||||||
|
if [ -d $N ] ; then
|
||||||
|
printf "%16s" `head -1 $N/status | cut -b 7-`
|
||||||
|
printf "%7d " $N
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N/exe ] ; then
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\033[31mNo read permissions for '/proc/$N/exe' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! `readlink $N/exe` ] ; then
|
||||||
|
printf "\033[31mPermission denied. Requested process ID belongs to a kernel thread.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
proccheck $N
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--proc-libs)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if !(isNumeric "$2") ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
printf "* System-wide ASLR"
|
||||||
|
aslrcheck
|
||||||
|
printf "* Does the CPU support NX: "
|
||||||
|
nxcheck
|
||||||
|
printf "* Process information:\n\n"
|
||||||
|
printf " COMMAND PID RELRO STACK CANARY NX/PaX PIE\n"
|
||||||
|
N=$2
|
||||||
|
if [ -d $N ] ; then
|
||||||
|
printf "%16s" `head -1 $N/status | cut -b 7-`
|
||||||
|
printf "%7d " $N
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N/exe ] ; then
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\033[31mNo read permissions for '/proc/$N/exe' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! `readlink $N/exe` ] ; then
|
||||||
|
printf "\033[31mPermission denied. Requested process ID belongs to a kernel thread.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
proccheck $N
|
||||||
|
echo
|
||||||
|
libcheck $N
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--kernel)
|
||||||
|
cd /proc
|
||||||
|
printf "* Kernel protection information:\n\n"
|
||||||
|
kernelcheck
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--fortify-file)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid file.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# does the file exist?
|
||||||
|
if [ ! -e $2 ] ; then
|
||||||
|
printf "\033[31mError: The file '$2' does not exist.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $2 ] ; then
|
||||||
|
printf "\033[31mError: No read permissions for '$2' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# ELF executable?
|
||||||
|
out=`file $2`
|
||||||
|
if [[ ! $out =~ ELF ]] ; then
|
||||||
|
printf "\033[31mError: Not an ELF file: "
|
||||||
|
file $2
|
||||||
|
printf "\033[m\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -e /lib/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/libc.so.6
|
||||||
|
elif [ -e /lib64/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib64/libc.so.6
|
||||||
|
elif [ -e /lib/i386-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/i386-linux-gnu/libc.so.6
|
||||||
|
elif [ -e /lib/x86_64-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/x86_64-linux-gnu/libc.so.6
|
||||||
|
else
|
||||||
|
printf "\033[31mError: libc not found.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FS_chk_func_libc=( $(readelf -s $FS_libc | grep _chk@@ | awk '{ print $8 }' | cut -c 3- | sed -e 's/_chk@.*//') )
|
||||||
|
FS_functions=( $(readelf -s $2 | awk '{ print $8 }' | sed 's/_*//' | sed -e 's/@.*//') )
|
||||||
|
|
||||||
|
FS_libc_check
|
||||||
|
FS_binary_check
|
||||||
|
FS_comparison
|
||||||
|
FS_summary
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
--fortify-proc)
|
||||||
|
if [ $have_readelf -eq 0 ] ; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -z "$2" ] ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if !(isNumeric "$2") ; then
|
||||||
|
printf "\033[31mError: Please provide a valid process ID.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd /proc
|
||||||
|
N=$2
|
||||||
|
if [ -d $N ] ; then
|
||||||
|
# read permissions?
|
||||||
|
if [ ! -r $N/exe ] ; then
|
||||||
|
if !(root_privs) ; then
|
||||||
|
printf "\033[31mNo read permissions for '/proc/$N/exe' (run as root).\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! `readlink $N/exe` ] ; then
|
||||||
|
printf "\033[31mPermission denied. Requested process ID belongs to a kernel thread.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -e /lib/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/libc.so.6
|
||||||
|
elif [ -e /lib64/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib64/libc.so.6
|
||||||
|
elif [ -e /lib/i386-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/i386-linux-gnu/libc.so.6
|
||||||
|
elif [ -e /lib/x86_64-linux-gnu/libc.so.6 ] ; then
|
||||||
|
FS_libc=/lib/x86_64-linux-gnu/libc.so.6
|
||||||
|
else
|
||||||
|
printf "\033[31mError: libc not found.\033[m\n\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
printf "* Process name (PID) : %s (%d)\n" `head -1 $N/status | cut -b 7-` $N
|
||||||
|
FS_chk_func_libc=( $(readelf -s $FS_libc | grep _chk@@ | awk '{ print $8 }' | cut -c 3- | sed -e 's/_chk@.*//') )
|
||||||
|
FS_functions=( $(readelf -s $2/exe | awk '{ print $8 }' | sed 's/_*//' | sed -e 's/@.*//') )
|
||||||
|
|
||||||
|
FS_libc_check
|
||||||
|
FS_binary_check
|
||||||
|
FS_comparison
|
||||||
|
FS_summary
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if [ "$#" != "0" ] ; then
|
||||||
|
printf "\033[31mError: Unknown option '$1'.\033[m\n\n"
|
||||||
|
fi
|
||||||
|
help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
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
|
||||||
10
bin/google-chrome-noroot
Executable file
10
bin/google-chrome-noroot
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CHROME=`which google-chrome`
|
||||||
|
|
||||||
|
if [ `id -u` != "0" ] ; then
|
||||||
|
exec $CHROME "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
CMD="${CHROME} --user-data-dir=${HOME}/.chrome-data-dir \"$@\""
|
||||||
|
su -c "${CMD}" chromeuser
|
||||||
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'"
|
||||||
449
bin/install_tool
Executable file
449
bin/install_tool
Executable file
@@ -0,0 +1,449 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ue
|
||||||
|
|
||||||
|
REINSTALL=0
|
||||||
|
PACKAGES=1
|
||||||
|
|
||||||
|
export GO111MODULE=on
|
||||||
|
|
||||||
|
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))
|
||||||
|
|
||||||
|
function list_tools {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -ne 1 ] ; then
|
||||||
|
echo "Usage: ${0} <tool>" >/dev/stderr
|
||||||
|
list_tools
|
||||||
|
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/platform-tools_r31.0.2-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 python3-setuptools
|
||||||
|
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
|
||||||
|
if test -d ${HOME}/.config/gf ; then
|
||||||
|
git -C ${HOME}/.config/gf pull
|
||||||
|
else
|
||||||
|
git clone https://github.com/Matir/gf-patterns.git ${HOME}/.config/gf
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
gron)
|
||||||
|
go get -u github.com/tomnomnom/gron
|
||||||
|
;;
|
||||||
|
httprobe)
|
||||||
|
go get -u github.com/tomnomnom/httprobe
|
||||||
|
;;
|
||||||
|
ffuf)
|
||||||
|
go get -u github.com/ffuf/ffuf
|
||||||
|
;;
|
||||||
|
gobuster)
|
||||||
|
go get -u github.com/OJ/gobuster
|
||||||
|
;;
|
||||||
|
amass)
|
||||||
|
go get -u github.com/OWASP/Amass/v3/...
|
||||||
|
;;
|
||||||
|
cht.sh)
|
||||||
|
install_pkgs rlwrap
|
||||||
|
mkdir -p ${DESTDIR}
|
||||||
|
curl https://cht.sh/:cht.sh > ${DESTDIR}/cht.sh
|
||||||
|
chmod +x ${DESTDIR}/cht.sh
|
||||||
|
add_bin_symlink cht.sh
|
||||||
|
;;
|
||||||
|
age)
|
||||||
|
go get -u filippo.io/age/cmd/age
|
||||||
|
go get -u filippo.io/age/cmd/age-keygen
|
||||||
|
;;
|
||||||
|
docker-compose)
|
||||||
|
mkdir -p ${DESTDIR}
|
||||||
|
curl -L \
|
||||||
|
"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" \
|
||||||
|
-o "${DESTDIR}/docker-compose"
|
||||||
|
chmod +x "${DESTDIR}/docker-compose"
|
||||||
|
add_bin_symlink docker-compose
|
||||||
|
;;
|
||||||
|
tldr)
|
||||||
|
pip3 install --user tldr
|
||||||
|
;;
|
||||||
|
blint)
|
||||||
|
pip3 install --user blint
|
||||||
|
;;
|
||||||
|
dust)
|
||||||
|
if ! command -v cargo >/dev/null 2>&1 ; then
|
||||||
|
echo "This needs cargo (for rust)!" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cargo install du-dust
|
||||||
|
;;
|
||||||
|
bottom)
|
||||||
|
if ! command -v cargo >/dev/null 2>&1 ; then
|
||||||
|
echo "This needs cargo (for rust)!" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cargo install bottom
|
||||||
|
;;
|
||||||
|
delta)
|
||||||
|
if !check_sudo ; then
|
||||||
|
echo "Must be able to run as sudo."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dpkg_url=$(curl https://api.github.com/repos/dandavison/delta/releases/latest | \
|
||||||
|
jq -r '.assets[] | select(.name|test(".*_amd64.deb")) | select(.name|test(".*musl.*")|not) | .browser_download_url')
|
||||||
|
dpkg_name="/tmp/delta_amd64.deb"
|
||||||
|
download "${dpkg_url}" "${dpkg_name}"
|
||||||
|
sudo dpkg -i "${dpkg_name}"
|
||||||
|
;;
|
||||||
|
ropper)
|
||||||
|
install_pkgs python3-z3
|
||||||
|
pip3 install --user pyvex ropper
|
||||||
|
;;
|
||||||
|
kubeconform)
|
||||||
|
go install github.com/yannh/kubeconform/cmd/kubeconform@latest
|
||||||
|
;;
|
||||||
|
starship)
|
||||||
|
mkdir -p ${DESTDIR}
|
||||||
|
download \
|
||||||
|
"https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-musl.tar.gz" \
|
||||||
|
/tmp/starship.tar.gz
|
||||||
|
tar -C ${DESTDIR} -zxf /tmp/starship.tar.gz starship
|
||||||
|
add_bin_symlink starship
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown tool: ${TOOL}" >/dev/stderr
|
||||||
|
list_tools
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
17
bin/metasploit.sh
Executable file
17
bin/metasploit.sh
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export NAME=$(basename "$0")
|
||||||
|
export BASE="/opt/metasploit-framework" # TODO: search this path
|
||||||
|
unset GEM_PATH
|
||||||
|
|
||||||
|
if [ -f "${BASE}/bin/${NAME}" ] ; then
|
||||||
|
exec "${BASE}/bin/${NAME}" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
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
|
||||||
1
bin/nasm_shell
Symbolic link
1
bin/nasm_shell
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
metasploit.sh
|
||||||
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
|
||||||
1
bin/pattern_create
Symbolic link
1
bin/pattern_create
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
metasploit.sh
|
||||||
1
bin/pattern_offset
Symbolic link
1
bin/pattern_offset
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
metasploit.sh
|
||||||
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
|
||||||
35
bin/setup/apt_proxy.sh
Executable file
35
bin/setup/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/setup/i3.sh
Executable file
5
bin/setup/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
|
||||||
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']
|
||||||
20
deb-to-kali.sh
Executable file
20
deb-to-kali.sh
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ `whoami` != "root" ] ; then
|
||||||
|
echo "This must be run as root." >&2
|
||||||
|
exit 1
|
||||||
|
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
|
||||||
|
KALI_EOF
|
||||||
|
|
||||||
|
/usr/bin/apt-key add ${BASEDIR}/keys/gpg/kali-repo.key
|
||||||
|
/usr/bin/apt-get update
|
||||||
|
/usr/bin/apt-get install -y kali-linux-full
|
||||||
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
|
||||||
3
dotfiles/ackrc
Normal file
3
dotfiles/ackrc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--follow
|
||||||
|
--pager=less -LMXRF
|
||||||
|
--smart-case
|
||||||
55
dotfiles/aliases
Executable file
55
dotfiles/aliases
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
# General aliases, should only be sourced in interactive shells
|
||||||
|
|
||||||
|
# Add an "alert" alias for long running commands. Use like so:
|
||||||
|
# sleep 10; alert
|
||||||
|
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='cryptsetup luksFormat --type=luks2 --pbkdf-memory=2560000 --pbkdf=argon2id -i 15000 -s 512 -h sha256 -c aes-xts-plain64'
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
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'"
|
||||||
|
|
||||||
|
# Timestamp in a machine-sortable form
|
||||||
|
alias tstamp="date '+%Y%m%d-%H%M%S'"
|
||||||
|
|
||||||
|
# Prepare code for markdown
|
||||||
|
alias mdcode="sed 's/^/ /'"
|
||||||
|
|
||||||
|
# Intel format plz
|
||||||
|
alias objdump="command objdump -M intel"
|
||||||
|
|
||||||
|
# Useful directory utilities
|
||||||
|
alias dircount="for d in * ; do find \$d -type d | wc -l | tr -d '\n' ; echo ' ' \$d ; done | sort -n"
|
||||||
|
|
||||||
|
# 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"
|
||||||
28
bashrc → dotfiles/bashrc
Normal file → Executable file
28
bashrc → dotfiles/bashrc
Normal file → Executable file
@@ -1,6 +1,10 @@
|
|||||||
|
# Load env first
|
||||||
|
if [ -f $HOME/.env ] ; then source $HOME/.env ; fi
|
||||||
|
|
||||||
# History settings
|
# History settings
|
||||||
HISTCONTROL=ignoredups:ignorespace
|
HISTCONTROL=ignoredups:ignorespace
|
||||||
shopt -s histappend
|
shopt -s histappend
|
||||||
|
shopt -s expand_aliases
|
||||||
HISTSIZE=1000
|
HISTSIZE=1000
|
||||||
HISTFILESIZE=0
|
HISTFILESIZE=0
|
||||||
|
|
||||||
@@ -9,24 +13,13 @@ HISTFILESIZE=0
|
|||||||
shopt -s checkwinsize
|
shopt -s checkwinsize
|
||||||
|
|
||||||
# Fancier outputs
|
# Fancier outputs
|
||||||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe 2>/dev/null)"
|
||||||
case "$TERM" in
|
|
||||||
xterm-color) color_prompt=yes;;
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
esac
|
|
||||||
force_color_prompt=yes
|
|
||||||
if [ -n "$force_color_prompt" ]; then
|
|
||||||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
|
||||||
color_prompt=yes
|
|
||||||
else
|
|
||||||
color_prompt=
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$color_prompt" = yes ]; then
|
|
||||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
else
|
else
|
||||||
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||||
fi
|
fi
|
||||||
unset color_prompt force_color_prompt
|
|
||||||
|
|
||||||
# If this is an xterm set the title to user@host:dir
|
# If this is an xterm set the title to user@host:dir
|
||||||
case "$TERM" in
|
case "$TERM" in
|
||||||
@@ -37,16 +30,13 @@ xterm*|rxvt*)
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# enable color support of ls and also add handy aliases
|
|
||||||
if [ -x /usr/bin/dircolors ]; then
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
alias ls='ls --color=auto'
|
|
||||||
alias grep='grep --color=auto'
|
|
||||||
alias fgrep='fgrep --color=auto'
|
|
||||||
alias egrep='egrep --color=auto'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Bash completion
|
# Bash completion
|
||||||
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
|
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
|
||||||
. /etc/bash_completion
|
. /etc/bash_completion
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
|
||||||
0
dotfiles/byobu/.welcome-displayed
Normal file
0
dotfiles/byobu/.welcome-displayed
Normal file
1
dotfiles/byobu/backend
Normal file
1
dotfiles/byobu/backend
Normal file
@@ -0,0 +1 @@
|
|||||||
|
BYOBU_BACKEND=tmux
|
||||||
3
dotfiles/byobu/color
Normal file
3
dotfiles/byobu/color
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
BACKGROUND=k
|
||||||
|
FOREGROUND=w
|
||||||
|
MONOCHROME=0
|
||||||
5
dotfiles/byobu/color.tmux
Normal file
5
dotfiles/byobu/color.tmux
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
BYOBU_DARK=black
|
||||||
|
BYOBU_LIGHT=white
|
||||||
|
BYOBU_ACCENT=magenta
|
||||||
|
BYOBU_HIGHLIGHT=red
|
||||||
|
MONOCHROME=0
|
||||||
1
dotfiles/byobu/keybindings
Normal file
1
dotfiles/byobu/keybindings
Normal file
@@ -0,0 +1 @@
|
|||||||
|
source $BYOBU_PREFIX/share/byobu/keybindings/common
|
||||||
4
dotfiles/byobu/keybindings.tmux
Normal file
4
dotfiles/byobu/keybindings.tmux
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
unbind-key -n C-a
|
||||||
|
set -g prefix ^A
|
||||||
|
set -g prefix2 ^A
|
||||||
|
bind a send-prefix
|
||||||
1
dotfiles/byobu/profile
Normal file
1
dotfiles/byobu/profile
Normal file
@@ -0,0 +1 @@
|
|||||||
|
source $BYOBU_PREFIX/share/byobu/profiles/common
|
||||||
1
dotfiles/byobu/profile.tmux
Normal file
1
dotfiles/byobu/profile.tmux
Normal file
@@ -0,0 +1 @@
|
|||||||
|
source $BYOBU_PREFIX/share/byobu/profiles/tmux
|
||||||
1
dotfiles/byobu/prompt
Normal file
1
dotfiles/byobu/prompt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[ -r /usr/share/byobu/profiles/bashrc ] && . /usr/share/byobu/profiles/bashrc #byobu-prompt#
|
||||||
37
dotfiles/byobu/status
Normal file
37
dotfiles/byobu/status
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# status - Byobu's default status enabled/disabled settings
|
||||||
|
#
|
||||||
|
# Override these in $BYOBU_CONFIG_DIR/status
|
||||||
|
# where BYOBU_CONFIG_DIR is XDG_CONFIG_HOME if defined,
|
||||||
|
# and $HOME/.byobu otherwise.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2011 Canonical Ltd.
|
||||||
|
#
|
||||||
|
# Authors: Dustin Kirkland <kirkland@byobu.co>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Status beginning with '#' are disabled.
|
||||||
|
|
||||||
|
# Screen has two status lines, with 4 quadrants for status
|
||||||
|
screen_upper_left="color"
|
||||||
|
screen_upper_right="color whoami hostname ip_address menu"
|
||||||
|
screen_lower_left="color logo distro release #arch"
|
||||||
|
screen_lower_right="color network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #time_utc date time"
|
||||||
|
|
||||||
|
# Tmux has one status line, with 2 halves for status
|
||||||
|
tmux_left="logo #distro release #arch"
|
||||||
|
# You can have as many tmux right lines below here, and cycle through them using Shift-F5
|
||||||
|
tmux_right="#network #disk_io #custom #entropy raid reboot_required updates_available #apport #services #mail #users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp #battery #wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname #ip_address #time_utc date time"
|
||||||
|
#tmux_right="network #disk_io #custom entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost fan_speed cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk whoami hostname ip_address #time_utc date time"
|
||||||
|
#tmux_right="network #disk_io custom #entropy raid reboot_required updates_available #apport #services #mail users uptime #ec2_cost #rcs_cost #fan_speed #cpu_temp battery wifi_quality #processes load_average cpu_count cpu_freq memory #swap #disk #whoami #hostname ip_address #time_utc date time"
|
||||||
|
#tmux_right="#network disk_io #custom entropy #raid #reboot_required #updates_available #apport #services #mail #users #uptime #ec2_cost #rcs_cost fan_speed cpu_temp #battery #wifi_quality #processes #load_average #cpu_count #cpu_freq #memory #swap whoami hostname ip_address #time_utc disk date time"
|
||||||
78
dotfiles/byobu/statusrc
Normal file
78
dotfiles/byobu/statusrc
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
# statusrc - Byobu's default status configurations
|
||||||
|
#
|
||||||
|
# Override these in $BYOBU_CONFIG_DIR/statusrc
|
||||||
|
# where BYOBU_CONFIG_DIR is XDG_CONFIG_HOME if defined,
|
||||||
|
# and $HOME/.byobu otherwise.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2011 Canonical Ltd.
|
||||||
|
#
|
||||||
|
# Authors: Dustin Kirkland <kirkland@byobu.co>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
# Configurations that you can override; if you leave these commented out,
|
||||||
|
# Byobu will try to auto-detect them.
|
||||||
|
|
||||||
|
# This should be auto-detected for most distro, but setting it here will save
|
||||||
|
# some call to lsb_release and the like.
|
||||||
|
#DISTRO=Ubuntu
|
||||||
|
|
||||||
|
# Default: depends on the distro (which is either auto-detected, either set
|
||||||
|
# via $DISTRO)
|
||||||
|
#LOGO="\o/"
|
||||||
|
|
||||||
|
# Abbreviate the release to N characters
|
||||||
|
# By default, this is disabled. But if you set RELEASE_ABBREVIATED=1
|
||||||
|
# and your lsb_release is "precise", only "p" will be displayed
|
||||||
|
#RELEASE_ABBREVIATED=1
|
||||||
|
|
||||||
|
# Default: /
|
||||||
|
#MONITORED_DISK=/
|
||||||
|
|
||||||
|
# Minimum disk throughput that triggers the notification (in kB/s)
|
||||||
|
# Default: 50
|
||||||
|
#DISK_IO_THRESHOLD=50
|
||||||
|
|
||||||
|
# Default: eth0
|
||||||
|
#MONITORED_NETWORK=eth0
|
||||||
|
|
||||||
|
# Unit used for network throughput (either bits per second or bytes per second)
|
||||||
|
# Default: bits
|
||||||
|
#NETWORK_UNITS=bytes
|
||||||
|
|
||||||
|
# Minimum network throughput that triggers the notification (in kbit/s)
|
||||||
|
# Default: 20
|
||||||
|
#NETWORK_THRESHOLD=20
|
||||||
|
|
||||||
|
# You can add an additional source of temperature here
|
||||||
|
#MONITORED_TEMP=/proc/acpi/thermal_zone/THM0/temperature
|
||||||
|
|
||||||
|
# Default: C
|
||||||
|
#TEMP=F
|
||||||
|
|
||||||
|
#SERVICES="eucalyptus-nc|NC eucalyptus-cloud|CLC eucalyptus-walrus eucalyptus-cc|CC eucalyptus-sc|SC"
|
||||||
|
|
||||||
|
#FAN=$(find /sys -type f -name fan1_input | head -n1)
|
||||||
|
|
||||||
|
# You can set this to 1 to report your external/public ip address
|
||||||
|
# Default: 0
|
||||||
|
#IP_EXTERNAL=0
|
||||||
|
|
||||||
|
# The users notification normally counts ssh sessions; set this configuration to '1'
|
||||||
|
# to instead count number of distinct users logged onto the system
|
||||||
|
# Default: 0
|
||||||
|
#USERS_DISTINCT=0
|
||||||
|
|
||||||
|
# Set this to zero to hide seconds int the time display
|
||||||
|
# Default 1
|
||||||
|
#TIME_SECONDS=0
|
||||||
0
dotfiles/byobu/windows
Normal file
0
dotfiles/byobu/windows
Normal file
33
dotfiles/config/fish/fish_variables
Normal file
33
dotfiles/config/fish/fish_variables
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# This file contains fish universal variable definitions.
|
||||||
|
# VERSION: 3.0
|
||||||
|
SETUVAR EDITOR:vim
|
||||||
|
SETUVAR __fish_initialized:3100
|
||||||
|
SETUVAR fish_color_autosuggestion:586e75
|
||||||
|
SETUVAR fish_color_cancel:\x2dr
|
||||||
|
SETUVAR fish_color_command:93a1a1
|
||||||
|
SETUVAR fish_color_comment:586e75
|
||||||
|
SETUVAR fish_color_cwd:green
|
||||||
|
SETUVAR fish_color_cwd_root:red
|
||||||
|
SETUVAR fish_color_end:268bd2
|
||||||
|
SETUVAR fish_color_error:dc322f
|
||||||
|
SETUVAR fish_color_escape:00a6b2
|
||||||
|
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_host:normal
|
||||||
|
SETUVAR fish_color_host_remote:yellow
|
||||||
|
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
|
||||||
|
SETUVAR fish_color_normal:normal
|
||||||
|
SETUVAR fish_color_operator:00a6b2
|
||||||
|
SETUVAR fish_color_param:839496
|
||||||
|
SETUVAR fish_color_quote:657b83
|
||||||
|
SETUVAR fish_color_redirection:6c71c4
|
||||||
|
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dblack
|
||||||
|
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_status:red
|
||||||
|
SETUVAR fish_color_user:brgreen
|
||||||
|
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||||
|
SETUVAR fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell\x0aType\x20\x60help\x60\x20for\x20instructions\x20on\x20how\x20to\x20use\x20fish
|
||||||
|
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||||
|
SETUVAR fish_pager_color_completion:B3A06D
|
||||||
|
SETUVAR fish_pager_color_description:B3A06D
|
||||||
|
SETUVAR fish_pager_color_prefix:cyan\x1e\x2d\x2dunderline
|
||||||
|
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||||
11
dotfiles/config/gh/config.yml
Normal file
11
dotfiles/config/gh/config.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# What protocol to use when performing git operations. Supported values: ssh, https
|
||||||
|
git_protocol: https
|
||||||
|
# What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment.
|
||||||
|
editor: !!null vim
|
||||||
|
# When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled
|
||||||
|
prompt: enabled
|
||||||
|
# A pager program to send command output to, e.g. "less". Set the value to "cat" to disable the pager.
|
||||||
|
pager: !!null less -R
|
||||||
|
# Aliases allow you to create nicknames for gh commands
|
||||||
|
aliases:
|
||||||
|
co: pr checkout
|
||||||
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
|
||||||
198
dotfiles/config/i3/config
Normal file
198
dotfiles/config/i3/config
Normal file
@@ -0,0 +1,198 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
# do some scratchpad
|
||||||
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
}
|
||||||
4
dotfiles/config/nvim/init.vim
Normal file
4
dotfiles/config/nvim/init.vim
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
" nvim config
|
||||||
|
set runtimepath^=~/.vim runtimepath+=~/.vim/after
|
||||||
|
let &packpath = &runtimepath
|
||||||
|
source ~/.vimrc
|
||||||
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"
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="xfce4-keyboard-shortcuts" version="1.0">
|
||||||
|
<property name="commands" type="empty">
|
||||||
|
<property name="default" type="empty">
|
||||||
|
<property name="<Alt>F1" type="empty"/>
|
||||||
|
<property name="<Alt>F2" type="empty">
|
||||||
|
<property name="startup-notify" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Alt>F3" type="empty">
|
||||||
|
<property name="startup-notify" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Primary><Alt>Delete" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>l" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>t" type="empty"/>
|
||||||
|
<property name="XF86Display" type="empty"/>
|
||||||
|
<property name="<Super>p" type="empty"/>
|
||||||
|
<property name="<Primary>Escape" type="empty"/>
|
||||||
|
<property name="XF86WWW" type="empty"/>
|
||||||
|
<property name="HomePage" type="empty"/>
|
||||||
|
<property name="XF86Mail" type="empty"/>
|
||||||
|
<property name="Print" type="empty"/>
|
||||||
|
<property name="<Alt>Print" type="empty"/>
|
||||||
|
<property name="<Shift>Print" type="empty"/>
|
||||||
|
<property name="<Super>e" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>f" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Escape" type="empty"/>
|
||||||
|
<property name="<Primary><Shift>Escape" type="empty"/>
|
||||||
|
<property name="<Super>r" type="empty">
|
||||||
|
<property name="startup-notify" type="empty"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
<property name="custom" type="empty">
|
||||||
|
<property name="<Alt>F2" type="string" value="xfce4-appfinder --collapsed">
|
||||||
|
<property name="startup-notify" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Alt>Print" type="string" value="xfce4-screenshooter -w"/>
|
||||||
|
<property name="<Super>r" type="string" value="xfce4-appfinder -c">
|
||||||
|
<property name="startup-notify" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="XF86WWW" type="string" value="exo-open --launch WebBrowser"/>
|
||||||
|
<property name="XF86Mail" type="string" value="exo-open --launch MailReader"/>
|
||||||
|
<property name="<Alt>F3" type="string" value="xfce4-appfinder">
|
||||||
|
<property name="startup-notify" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="Print" type="string" value="xfce4-screenshooter"/>
|
||||||
|
<property name="<Primary>Escape" type="string" value="xfdesktop --menu"/>
|
||||||
|
<property name="<Shift>Print" type="string" value="xfce4-screenshooter -r"/>
|
||||||
|
<property name="<Primary><Alt>Delete" type="string" value="xfce4-session-logout"/>
|
||||||
|
<property name="<Primary><Alt>t" type="string" value="exo-open --launch TerminalEmulator"/>
|
||||||
|
<property name="<Primary><Alt>f" type="string" value="thunar"/>
|
||||||
|
<property name="<Primary><Alt>l" type="string" value="xflock4"/>
|
||||||
|
<property name="<Alt>F1" type="string" value="xfce4-popup-applicationsmenu"/>
|
||||||
|
<property name="<Super>p" type="string" value="xfce4-display-settings --minimal"/>
|
||||||
|
<property name="<Primary><Shift>Escape" type="string" value="xfce4-taskmanager"/>
|
||||||
|
<property name="<Super>e" type="string" value="thunar"/>
|
||||||
|
<property name="<Primary><Alt>Escape" type="string" value="xkill"/>
|
||||||
|
<property name="HomePage" type="string" value="exo-open --launch WebBrowser"/>
|
||||||
|
<property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/>
|
||||||
|
<property name="override" type="bool" value="true"/>
|
||||||
|
<property name="<Super>l" type="string" value="xflock4"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
<property name="xfwm4" type="empty">
|
||||||
|
<property name="default" type="empty">
|
||||||
|
<property name="<Alt>Insert" type="empty"/>
|
||||||
|
<property name="Escape" type="empty"/>
|
||||||
|
<property name="Left" type="empty"/>
|
||||||
|
<property name="Right" type="empty"/>
|
||||||
|
<property name="Up" type="empty"/>
|
||||||
|
<property name="Down" type="empty"/>
|
||||||
|
<property name="<Alt>Tab" type="empty"/>
|
||||||
|
<property name="<Alt><Shift>Tab" type="empty"/>
|
||||||
|
<property name="<Alt>Delete" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Down" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Left" type="empty"/>
|
||||||
|
<property name="<Shift><Alt>Page_Down" type="empty"/>
|
||||||
|
<property name="<Alt>F4" type="empty"/>
|
||||||
|
<property name="<Alt>F6" type="empty"/>
|
||||||
|
<property name="<Alt>F7" type="empty"/>
|
||||||
|
<property name="<Alt>F8" type="empty"/>
|
||||||
|
<property name="<Alt>F9" type="empty"/>
|
||||||
|
<property name="<Alt>F10" type="empty"/>
|
||||||
|
<property name="<Alt>F11" type="empty"/>
|
||||||
|
<property name="<Alt>F12" type="empty"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Left" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>End" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Home" type="empty"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Right" type="empty"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Up" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_1" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_2" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_3" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_4" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_5" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_6" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_7" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_8" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_9" type="empty"/>
|
||||||
|
<property name="<Alt>space" type="empty"/>
|
||||||
|
<property name="<Shift><Alt>Page_Up" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Right" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>d" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Up" type="empty"/>
|
||||||
|
<property name="<Super>Tab" type="empty"/>
|
||||||
|
<property name="<Primary>F1" type="empty"/>
|
||||||
|
<property name="<Primary>F2" type="empty"/>
|
||||||
|
<property name="<Primary>F3" type="empty"/>
|
||||||
|
<property name="<Primary>F4" type="empty"/>
|
||||||
|
<property name="<Primary>F5" type="empty"/>
|
||||||
|
<property name="<Primary>F6" type="empty"/>
|
||||||
|
<property name="<Primary>F7" type="empty"/>
|
||||||
|
<property name="<Primary>F8" type="empty"/>
|
||||||
|
<property name="<Primary>F9" type="empty"/>
|
||||||
|
<property name="<Primary>F10" type="empty"/>
|
||||||
|
<property name="<Primary>F11" type="empty"/>
|
||||||
|
<property name="<Primary>F12" type="empty"/>
|
||||||
|
<property name="<Super>KP_Left" type="empty"/>
|
||||||
|
<property name="<Super>KP_Right" type="empty"/>
|
||||||
|
<property name="<Super>KP_Up" type="empty"/>
|
||||||
|
<property name="<Super>KP_Down" type="empty"/>
|
||||||
|
<property name="<Super>KP_Page_Up" type="empty"/>
|
||||||
|
<property name="<Super>KP_Home" type="empty"/>
|
||||||
|
<property name="<Super>KP_End" type="empty"/>
|
||||||
|
<property name="<Super>KP_Next" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="custom" type="empty">
|
||||||
|
<property name="<Primary>F12" type="string" value="workspace_12_key"/>
|
||||||
|
<property name="<Alt>F4" type="string" value="close_window_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_3" type="string" value="move_window_workspace_3_key"/>
|
||||||
|
<property name="<Primary><Alt>Down" type="string" value="down_workspace_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_9" type="string" value="move_window_workspace_9_key"/>
|
||||||
|
<property name="<Primary><Alt>End" type="string" value="move_window_next_workspace_key"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Left" type="string" value="move_window_left_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_4" type="string" value="move_window_workspace_4_key"/>
|
||||||
|
<property name="Right" type="string" value="right_key"/>
|
||||||
|
<property name="Down" type="string" value="down_key"/>
|
||||||
|
<property name="<Shift><Alt>Page_Down" type="string" value="lower_window_key"/>
|
||||||
|
<property name="<Alt>Tab" type="string" value="cycle_windows_key"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Right" type="string" value="move_window_right_key"/>
|
||||||
|
<property name="<Primary><Alt>Right" type="string" value="right_workspace_key"/>
|
||||||
|
<property name="<Alt>F6" type="string" value="stick_window_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_5" type="string" value="move_window_workspace_5_key"/>
|
||||||
|
<property name="<Primary>F11" type="string" value="workspace_11_key"/>
|
||||||
|
<property name="<Alt>F10" type="string" value="maximize_window_key"/>
|
||||||
|
<property name="<Alt>Delete" type="string" value="del_workspace_key"/>
|
||||||
|
<property name="<Super>Tab" type="string" value="switch_window_key"/>
|
||||||
|
<property name="<Primary><Alt>d" type="string" value="show_desktop_key"/>
|
||||||
|
<property name="<Super>KP_Page_Up" type="string" value="tile_up_right_key"/>
|
||||||
|
<property name="<Alt>F7" type="string" value="move_window_key"/>
|
||||||
|
<property name="Up" type="string" value="up_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_6" type="string" value="move_window_workspace_6_key"/>
|
||||||
|
<property name="<Alt>F11" type="string" value="fullscreen_key"/>
|
||||||
|
<property name="<Alt>space" type="string" value="popup_menu_key"/>
|
||||||
|
<property name="<Super>KP_Home" type="string" value="tile_up_left_key"/>
|
||||||
|
<property name="Escape" type="string" value="cancel_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_1" type="string" value="move_window_workspace_1_key"/>
|
||||||
|
<property name="<Shift><Alt>Page_Up" type="string" value="raise_window_key"/>
|
||||||
|
<property name="<Primary><Alt>Home" type="string" value="move_window_prev_workspace_key"/>
|
||||||
|
<property name="<Alt><Shift>Tab" type="string" value="cycle_reverse_windows_key"/>
|
||||||
|
<property name="<Primary><Alt>Left" type="string" value="left_workspace_key"/>
|
||||||
|
<property name="<Alt>F12" type="string" value="above_key"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Up" type="string" value="move_window_up_key"/>
|
||||||
|
<property name="<Alt>F8" type="string" value="resize_window_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_7" type="string" value="move_window_workspace_7_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_2" type="string" value="move_window_workspace_2_key"/>
|
||||||
|
<property name="<Super>KP_End" type="string" value="tile_down_left_key"/>
|
||||||
|
<property name="<Primary><Alt>Up" type="string" value="up_workspace_key"/>
|
||||||
|
<property name="<Alt>F9" type="string" value="hide_window_key"/>
|
||||||
|
<property name="Left" type="string" value="left_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_8" type="string" value="move_window_workspace_8_key"/>
|
||||||
|
<property name="<Alt>Insert" type="string" value="add_workspace_key"/>
|
||||||
|
<property name="override" type="bool" value="true"/>
|
||||||
|
<property name="<Super>1" type="string" value="workspace_1_key"/>
|
||||||
|
<property name="<Super>2" type="string" value="workspace_2_key"/>
|
||||||
|
<property name="<Super>3" type="string" value="workspace_3_key"/>
|
||||||
|
<property name="<Super>4" type="string" value="workspace_4_key"/>
|
||||||
|
<property name="<Super>5" type="string" value="workspace_5_key"/>
|
||||||
|
<property name="<Super>6" type="string" value="workspace_6_key"/>
|
||||||
|
<property name="<Super>7" type="string" value="workspace_7_key"/>
|
||||||
|
<property name="<Super>8" type="string" value="workspace_8_key"/>
|
||||||
|
<property name="<Super>9" type="string" value="workspace_9_key"/>
|
||||||
|
<property name="<Super>0" type="string" value="workspace_10_key"/>
|
||||||
|
<property name="<Super>Left" type="string" value="tile_left_key"/>
|
||||||
|
<property name="<Super>Right" type="string" value="tile_right_key"/>
|
||||||
|
<property name="<Super>Up" type="string" value="tile_down_key"/>
|
||||||
|
<property name="<Super>Down" type="string" value="tile_up_key"/>
|
||||||
|
<property name="<Super>Page_Down" type="string" value="tile_down_right_key"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
<property name="providers" type="array">
|
||||||
|
<value type="string" value="xfwm4"/>
|
||||||
|
<value type="string" value="commands"/>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
93
dotfiles/config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
Normal file
93
dotfiles/config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="xfwm4" version="1.0">
|
||||||
|
<property name="general" type="empty">
|
||||||
|
<property name="activate_action" type="string" value="bring"/>
|
||||||
|
<property name="borderless_maximize" type="bool" value="true"/>
|
||||||
|
<property name="box_move" type="bool" value="false"/>
|
||||||
|
<property name="box_resize" type="bool" value="false"/>
|
||||||
|
<property name="button_layout" type="string" value="O|SHMC"/>
|
||||||
|
<property name="button_offset" type="int" value="0"/>
|
||||||
|
<property name="button_spacing" type="int" value="0"/>
|
||||||
|
<property name="click_to_focus" type="bool" value="false"/>
|
||||||
|
<property name="cycle_apps_only" type="bool" value="false"/>
|
||||||
|
<property name="cycle_draw_frame" type="bool" value="true"/>
|
||||||
|
<property name="cycle_raise" type="bool" value="false"/>
|
||||||
|
<property name="cycle_hidden" type="bool" value="true"/>
|
||||||
|
<property name="cycle_minimum" type="bool" value="true"/>
|
||||||
|
<property name="cycle_minimized" type="bool" value="false"/>
|
||||||
|
<property name="cycle_preview" type="bool" value="true"/>
|
||||||
|
<property name="cycle_tabwin_mode" type="int" value="0"/>
|
||||||
|
<property name="cycle_workspaces" type="bool" value="false"/>
|
||||||
|
<property name="double_click_action" type="string" value="maximize"/>
|
||||||
|
<property name="double_click_distance" type="int" value="5"/>
|
||||||
|
<property name="double_click_time" type="int" value="250"/>
|
||||||
|
<property name="easy_click" type="string" value="Alt"/>
|
||||||
|
<property name="focus_delay" type="int" value="316"/>
|
||||||
|
<property name="focus_hint" type="bool" value="true"/>
|
||||||
|
<property name="focus_new" type="bool" value="true"/>
|
||||||
|
<property name="frame_opacity" type="int" value="100"/>
|
||||||
|
<property name="frame_border_top" type="int" value="0"/>
|
||||||
|
<property name="full_width_title" type="bool" value="true"/>
|
||||||
|
<property name="horiz_scroll_opacity" type="bool" value="false"/>
|
||||||
|
<property name="inactive_opacity" type="int" value="100"/>
|
||||||
|
<property name="maximized_offset" type="int" value="0"/>
|
||||||
|
<property name="mousewheel_rollup" type="bool" value="true"/>
|
||||||
|
<property name="move_opacity" type="int" value="100"/>
|
||||||
|
<property name="placement_mode" type="string" value="center"/>
|
||||||
|
<property name="placement_ratio" type="int" value="20"/>
|
||||||
|
<property name="popup_opacity" type="int" value="100"/>
|
||||||
|
<property name="prevent_focus_stealing" type="bool" value="false"/>
|
||||||
|
<property name="raise_delay" type="int" value="250"/>
|
||||||
|
<property name="raise_on_click" type="bool" value="true"/>
|
||||||
|
<property name="raise_on_focus" type="bool" value="false"/>
|
||||||
|
<property name="raise_with_any_button" type="bool" value="true"/>
|
||||||
|
<property name="repeat_urgent_blink" type="bool" value="false"/>
|
||||||
|
<property name="resize_opacity" type="int" value="100"/>
|
||||||
|
<property name="scroll_workspaces" type="bool" value="true"/>
|
||||||
|
<property name="shadow_delta_height" type="int" value="0"/>
|
||||||
|
<property name="shadow_delta_width" type="int" value="0"/>
|
||||||
|
<property name="shadow_delta_x" type="int" value="0"/>
|
||||||
|
<property name="shadow_delta_y" type="int" value="-3"/>
|
||||||
|
<property name="shadow_opacity" type="int" value="50"/>
|
||||||
|
<property name="show_app_icon" type="bool" value="false"/>
|
||||||
|
<property name="show_dock_shadow" type="bool" value="true"/>
|
||||||
|
<property name="show_frame_shadow" type="bool" value="true"/>
|
||||||
|
<property name="show_popup_shadow" type="bool" value="false"/>
|
||||||
|
<property name="snap_resist" type="bool" value="false"/>
|
||||||
|
<property name="snap_to_border" type="bool" value="true"/>
|
||||||
|
<property name="snap_to_windows" type="bool" value="false"/>
|
||||||
|
<property name="snap_width" type="int" value="10"/>
|
||||||
|
<property name="vblank_mode" type="string" value="auto"/>
|
||||||
|
<property name="theme" type="string" value="Default"/>
|
||||||
|
<property name="tile_on_move" type="bool" value="true"/>
|
||||||
|
<property name="title_alignment" type="string" value="center"/>
|
||||||
|
<property name="title_font" type="string" value="Sans Bold 9"/>
|
||||||
|
<property name="title_horizontal_offset" type="int" value="0"/>
|
||||||
|
<property name="titleless_maximize" type="bool" value="false"/>
|
||||||
|
<property name="title_shadow_active" type="string" value="false"/>
|
||||||
|
<property name="title_shadow_inactive" type="string" value="false"/>
|
||||||
|
<property name="title_vertical_offset_active" type="int" value="0"/>
|
||||||
|
<property name="title_vertical_offset_inactive" type="int" value="0"/>
|
||||||
|
<property name="toggle_workspaces" type="bool" value="false"/>
|
||||||
|
<property name="unredirect_overlays" type="bool" value="true"/>
|
||||||
|
<property name="urgent_blink" type="bool" value="false"/>
|
||||||
|
<property name="use_compositing" type="bool" value="true"/>
|
||||||
|
<property name="workspace_count" type="int" value="6"/>
|
||||||
|
<property name="wrap_cycle" type="bool" value="true"/>
|
||||||
|
<property name="wrap_layout" type="bool" value="true"/>
|
||||||
|
<property name="wrap_resistance" type="int" value="10"/>
|
||||||
|
<property name="wrap_windows" type="bool" value="true"/>
|
||||||
|
<property name="wrap_workspaces" type="bool" value="false"/>
|
||||||
|
<property name="zoom_desktop" type="bool" value="true"/>
|
||||||
|
<property name="zoom_pointer" type="bool" value="true"/>
|
||||||
|
<property name="workspace_names" type="array">
|
||||||
|
<value type="string" value="Workspace 1"/>
|
||||||
|
<value type="string" value="Workspace 2"/>
|
||||||
|
<value type="string" value="Workspace 3"/>
|
||||||
|
<value type="string" value="Workspace 4"/>
|
||||||
|
<value type="string" value="Workspace 5"/>
|
||||||
|
<value type="string" value="Workspace 6"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
3
dotfiles/curlrc
Normal file
3
dotfiles/curlrc
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
tlsv1
|
||||||
|
create-dirs
|
||||||
|
referer = ";auto"
|
||||||
480
dotfiles/dircolors
Normal file
480
dotfiles/dircolors
Normal file
@@ -0,0 +1,480 @@
|
|||||||
|
# Exact Solarized Dark color theme for the color GNU ls utility.
|
||||||
|
# Designed for dircolors (GNU coreutils) 5.97
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
TERM con132x43
|
||||||
|
TERM con132x60
|
||||||
|
TERM con80x25
|
||||||
|
TERM con80x28
|
||||||
|
TERM con80x30
|
||||||
|
TERM con80x43
|
||||||
|
TERM con80x50
|
||||||
|
TERM con80x60
|
||||||
|
TERM cons25
|
||||||
|
TERM console
|
||||||
|
TERM cygwin
|
||||||
|
TERM dtterm
|
||||||
|
TERM dvtm
|
||||||
|
TERM dvtm-256color
|
||||||
|
TERM Eterm
|
||||||
|
TERM eterm-color
|
||||||
|
TERM fbterm
|
||||||
|
TERM gnome
|
||||||
|
TERM gnome-256color
|
||||||
|
TERM jfbterm
|
||||||
|
TERM konsole
|
||||||
|
TERM konsole-256color
|
||||||
|
TERM kterm
|
||||||
|
TERM linux
|
||||||
|
TERM linux-c
|
||||||
|
TERM mach-color
|
||||||
|
TERM mlterm
|
||||||
|
TERM nxterm
|
||||||
|
TERM putty
|
||||||
|
TERM putty-256color
|
||||||
|
TERM rxvt
|
||||||
|
TERM rxvt-256color
|
||||||
|
TERM rxvt-cygwin
|
||||||
|
TERM rxvt-cygwin-native
|
||||||
|
TERM rxvt-unicode
|
||||||
|
TERM rxvt-unicode256
|
||||||
|
TERM rxvt-unicode-256color
|
||||||
|
TERM screen
|
||||||
|
TERM screen-16color
|
||||||
|
TERM screen-16color-bce
|
||||||
|
TERM screen-16color-s
|
||||||
|
TERM screen-16color-bce-s
|
||||||
|
TERM screen-256color
|
||||||
|
TERM screen-256color-bce
|
||||||
|
TERM screen-256color-s
|
||||||
|
TERM screen-256color-bce-s
|
||||||
|
TERM screen-256color-italic
|
||||||
|
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
|
||||||
|
TERM xterm-88color
|
||||||
|
TERM xterm-color
|
||||||
|
TERM xterm-debian
|
||||||
|
TERM xterm-termite
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# Text color codes:
|
||||||
|
# 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
|
||||||
|
#
|
||||||
|
# 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
|
||||||
85
dotfiles/env
Executable file
85
dotfiles/env
Executable file
@@ -0,0 +1,85 @@
|
|||||||
|
# Sourced by zshrc as well as bash.
|
||||||
|
# Should only use POSIX shell constructs.
|
||||||
|
|
||||||
|
umask 027
|
||||||
|
|
||||||
|
# Paths and preferences
|
||||||
|
export PYTHONPATH="$HOME/.python:$PYTHONPATH"
|
||||||
|
export GOPATH="$HOME/go:$HOME/Projects/Go:/usr/share/gocode"
|
||||||
|
export PATH="$HOME/bin:$HOME/bin/tools:/sbin:/usr/sbin:$PATH:$HOME/go/bin"
|
||||||
|
export VISUAL=vim
|
||||||
|
export EDITOR=vim
|
||||||
|
export DEBEMAIL="david@systemoverlord.com"
|
||||||
|
export DEBFULLNAME="David Tomaschik"
|
||||||
|
export LESS="-MR"
|
||||||
|
export QUOTING_STYLE="literal" # Coreutils quotes
|
||||||
|
|
||||||
|
# Fix gnome-terminal
|
||||||
|
if [ "$TERM" = "xterm" ] && [ "$COLORTERM" = "gnome-terminal" ] ; then
|
||||||
|
# Requires `ncurses-base` package for terminfo.
|
||||||
|
export TERM="xterm-256color"
|
||||||
|
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
|
||||||
|
break
|
||||||
|
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
|
||||||
|
|
||||||
|
# Opt out of .net telemetry
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
|
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
test -e "$HOME/.localenv" && . "$HOME/.localenv"
|
||||||
43
dotfiles/gdbinit
Normal file
43
dotfiles/gdbinit
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# General options
|
||||||
|
set verbose off
|
||||||
|
set confirm off
|
||||||
|
set disassembly-flavor intel
|
||||||
|
set output-radix 0x10
|
||||||
|
set input-radix 10.
|
||||||
|
|
||||||
|
# helpful shortcuts
|
||||||
|
define lsbp
|
||||||
|
info breakpoints
|
||||||
|
end
|
||||||
|
document lsbp
|
||||||
|
List all breakpoints
|
||||||
|
end
|
||||||
|
|
||||||
|
define iframe
|
||||||
|
info frame
|
||||||
|
info args
|
||||||
|
info locals
|
||||||
|
end
|
||||||
|
define reg
|
||||||
|
info registers
|
||||||
|
end
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
88
dotfiles/gitconfig
Normal file
88
dotfiles/gitconfig
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
[user]
|
||||||
|
name = David Tomaschik
|
||||||
|
signingKey = 0x5DEA789B
|
||||||
|
|
||||||
|
[core]
|
||||||
|
excludesfile = ~/.gitignore
|
||||||
|
editor = vim
|
||||||
|
whitespace = trailing-space,space-before-tab
|
||||||
|
pager = command -v delta >/dev/null 2>&1 && delta || less -eFiJM~ -j3
|
||||||
|
|
||||||
|
[color]
|
||||||
|
diff = auto
|
||||||
|
status = auto
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
tool = vimdiff
|
||||||
|
colorMoved = default
|
||||||
|
|
||||||
|
[difftool]
|
||||||
|
prompt = false
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
st = status
|
||||||
|
last = log -1 HEAD
|
||||||
|
# Thanks to
|
||||||
|
# http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
|
||||||
|
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
|
||||||
|
|
||||||
|
[push]
|
||||||
|
default = current
|
||||||
|
|
||||||
|
[web]
|
||||||
|
browser = chrome
|
||||||
|
|
||||||
|
[github]
|
||||||
|
user = matir
|
||||||
|
|
||||||
|
# Site specific config
|
||||||
|
[url "https://github.com/"]
|
||||||
|
insteadOf = "github:"
|
||||||
|
insteadOf = "github://"
|
||||||
|
|
||||||
|
[url "ssh://git@github.com/"]
|
||||||
|
pushInsteadOf = "github:"
|
||||||
|
pushInsteadOf = "github://"
|
||||||
|
|
||||||
|
[url "git://gist.github.com/"]
|
||||||
|
insteadOf = "gist:"
|
||||||
|
|
||||||
|
[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
|
||||||
|
|
||||||
|
[interactive]
|
||||||
|
diffFilter = command -v delta >/dev/null 2>&1 && delta || cat
|
||||||
|
|
||||||
|
[delta]
|
||||||
|
navigate = true
|
||||||
|
line-numbers = true
|
||||||
29
dotfiles/gitignore
Normal file
29
dotfiles/gitignore
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Common trash (metadata, backup files, etc.)
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
ehthumbs.db
|
||||||
|
Thumbs.db
|
||||||
|
*.swp
|
||||||
|
*~
|
||||||
|
*.bak
|
||||||
|
|
||||||
|
# Object files
|
||||||
|
*.py[co]
|
||||||
|
*.[oa]
|
||||||
|
|
||||||
|
# Try to avoid accidentally checking in private keys
|
||||||
|
id_rsa
|
||||||
|
id_ecdsa
|
||||||
|
id_ed25519
|
||||||
|
|
||||||
|
# Kicad backup files
|
||||||
|
*.kicad_pcb-bak
|
||||||
|
|
||||||
|
# Mypy cache path
|
||||||
|
.mypy_cache
|
||||||
|
|
||||||
|
# These files should basically never be committed
|
||||||
|
.env
|
||||||
1
dotfiles/gnupg/dirmngr.conf
Normal file
1
dotfiles/gnupg/dirmngr.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
keyserver hkps://keys.openpgp.org
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
enable-ssh-support
|
|
||||||
use-standard-socket
|
|
||||||
default-cache-ttl 7200
|
default-cache-ttl 7200
|
||||||
default-cache-ttl-ssh 7200
|
default-cache-ttl-ssh 7200
|
||||||
max-cache-ttl 86400
|
max-cache-ttl 86400
|
||||||
max-cache-ttl-ssh 86400
|
max-cache-ttl-ssh 86400
|
||||||
|
enable-ssh-support
|
||||||
10
dotfiles/gnupg/gpg.conf
Normal file
10
dotfiles/gnupg/gpg.conf
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
use-agent
|
||||||
|
# HKPS requires gnupg-curl for gpg1
|
||||||
|
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
|
||||||
32
dotfiles/gnupg/sks-keyservers.pem
Normal file
32
dotfiles/gnupg/sks-keyservers.pem
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIFizCCA3OgAwIBAgIJAK9zyLTPn4CPMA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNV
|
||||||
|
BAYTAk5PMQ0wCwYDVQQIDARPc2xvMR4wHAYDVQQKDBVza3Mta2V5c2VydmVycy5u
|
||||||
|
ZXQgQ0ExHjAcBgNVBAMMFXNrcy1rZXlzZXJ2ZXJzLm5ldCBDQTAeFw0xMjEwMDkw
|
||||||
|
MDMzMzdaFw0yMjEwMDcwMDMzMzdaMFwxCzAJBgNVBAYTAk5PMQ0wCwYDVQQIDARP
|
||||||
|
c2xvMR4wHAYDVQQKDBVza3Mta2V5c2VydmVycy5uZXQgQ0ExHjAcBgNVBAMMFXNr
|
||||||
|
cy1rZXlzZXJ2ZXJzLm5ldCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
|
||||||
|
ggIBANdsWy4PXWNUCkS3L//nrd0GqN3dVwoBGZ6w94Tw2jPDPifegwxQozFXkG6I
|
||||||
|
6A4TK1CJLXPvfz0UP0aBYyPmTNadDinaB9T4jIwd4rnxl+59GiEmqkN3IfPsv5Jj
|
||||||
|
MkKUmJnvOT0DEVlEaO1UZIwx5WpfprB3mR81/qm4XkAgmYrmgnLXd/pJDAMk7y1F
|
||||||
|
45b5zWofiD5l677lplcIPRbFhpJ6kDTODXh/XEdtF71EAeaOdEGOvyGDmCO0GWqS
|
||||||
|
FDkMMPTlieLA/0rgFTcz4xwUYj/cD5e0ZBuSkYsYFAU3hd1cGfBue0cPZaQH2HYx
|
||||||
|
Qk4zXD8S3F4690fRhr+tki5gyG6JDR67aKp3BIGLqm7f45WkX1hYp+YXywmEziM4
|
||||||
|
aSbGYhx8hoFGfq9UcfPEvp2aoc8u5sdqjDslhyUzM1v3m3ZGbhwEOnVjljY6JJLx
|
||||||
|
MxagxnZZSAY424ZZ3t71E/Mn27dm2w+xFRuoy8JEjv1d+BT3eChM5KaNwrj0IO/y
|
||||||
|
u8kFIgWYA1vZ/15qMT+tyJTfyrNVV/7Df7TNeWyNqjJ5rBmt0M6NpHG7CrUSkBy9
|
||||||
|
p8JhimgjP5r0FlEkgg+lyD+V79H98gQfVgP3pbJICz0SpBQf2F/2tyS4rLm+49rP
|
||||||
|
fcOajiXEuyhpcmzgusAj/1FjrtlynH1r9mnNaX4e+rLWzvU5AgMBAAGjUDBOMB0G
|
||||||
|
A1UdDgQWBBTkwyoJFGfYTVISTpM8E+igjdq28zAfBgNVHSMEGDAWgBTkwyoJFGfY
|
||||||
|
TVISTpM8E+igjdq28zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQAR
|
||||||
|
OXnYwu3g1ZjHyley3fZI5aLPsaE17cOImVTehC8DcIphm2HOMR/hYTTL+V0G4P+u
|
||||||
|
gH+6xeRLKSHMHZTtSBIa6GDL03434y9CBuwGvAFCMU2GV8w92/Z7apkAhdLToZA/
|
||||||
|
X/iWP2jeaVJhxgEcH8uPrnSlqoPBcKC9PrgUzQYfSZJkLmB+3jEa3HKruy1abJP5
|
||||||
|
gAdQvwvcPpvYRnIzUc9fZODsVmlHVFBCl2dlu/iHh2h4GmL4Da2rRkUMlbVTdioB
|
||||||
|
UYIvMycdOkpH5wJftzw7cpjsudGas0PARDXCFfGyKhwBRFY7Xp7lbjtU5Rz0Gc04
|
||||||
|
lPrhDf0pFE98Aw4jJRpFeWMjpXUEaG1cq7D641RpgcMfPFvOHY47rvDTS7XJOaUT
|
||||||
|
BwRjmDt896s6vMDcaG/uXJbQjuzmmx3W2Idyh3s5SI0GTHb0IwMKYb4eBUIpQOnB
|
||||||
|
cE77VnCYqKvN1NVYAqhWjXbY7XasZvszCRcOG+W3FqNaHOK/n/0ueb0uijdLan+U
|
||||||
|
f4p1bjbAox8eAOQS/8a3bzkJzdyBNUKGx1BIK2IBL9bn/HravSDOiNRSnZ/R3l9G
|
||||||
|
ZauX0tu7IIDlRCILXSyeazu0aj/vdT3YFQXPcvt5Fkf5wiNTo53f72/jYEJd6qph
|
||||||
|
WrpoKqrwGwTpRUCMhYIUt65hsTxCiJJ5nKe39h46sg==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
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
|
||||||
@@ -1,37 +1,4 @@
|
|||||||
servers = (
|
servers = (
|
||||||
{ address = "eu.irc6.net"; chatnet = "IRCnet"; port = "6667"; },
|
|
||||||
{ address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; },
|
|
||||||
{ address = "irc.efnet.org"; chatnet = "EFNet"; port = "6667"; },
|
|
||||||
{
|
|
||||||
address = "irc.undernet.org";
|
|
||||||
chatnet = "Undernet";
|
|
||||||
port = "6667";
|
|
||||||
},
|
|
||||||
{ address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; },
|
|
||||||
{
|
|
||||||
address = "irc.quakenet.org";
|
|
||||||
chatnet = "QuakeNet";
|
|
||||||
port = "6667";
|
|
||||||
},
|
|
||||||
{ address = "irc.oftc.net"; chatnet = "OFTC"; port = "6667"; },
|
|
||||||
{
|
|
||||||
address = "irc.gamesurge.net";
|
|
||||||
chatnet = "GameSurge";
|
|
||||||
port = "6667";
|
|
||||||
},
|
|
||||||
{ address = "irc.webchat.org"; chatnet = "WebChat"; port = "6667"; },
|
|
||||||
{ address = "irc.rizon.net"; chatnet = "Rizon"; port = "6667"; },
|
|
||||||
{ address = "irc.link-net.org"; chatnet = "LinkNet"; port = "6667"; },
|
|
||||||
{ address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; },
|
|
||||||
{
|
|
||||||
address = "irc.freenode.net";
|
|
||||||
chatnet = "freenode";
|
|
||||||
port = "7000";
|
|
||||||
use_ssl = "yes";
|
|
||||||
ssl_verify = "yes";
|
|
||||||
ssl_capath = "/etc/ssl/certs";
|
|
||||||
autoconnect = "yes";
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
address = "ircs.overthewire.org";
|
address = "ircs.overthewire.org";
|
||||||
chatnet = "overthewire";
|
chatnet = "overthewire";
|
||||||
@@ -49,82 +16,69 @@ servers = (
|
|||||||
autoconnect = "yes";
|
autoconnect = "yes";
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
address = "irc.us.hackint.eu";
|
address = "irc.hackint.eu";
|
||||||
chatnet = "hackint";
|
chatnet = "hackint";
|
||||||
port = "9999";
|
port = "9999";
|
||||||
use_ssl = "yes";
|
use_ssl = "yes";
|
||||||
ssl_verify = "no";
|
ssl_verify = "no";
|
||||||
autoconnect = "yes";
|
autoconnect = "yes";
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address = "irc.geekshed.net";
|
||||||
|
chatnet = "geekshed";
|
||||||
|
port = "6697";
|
||||||
|
use_ssl = "yes";
|
||||||
|
ssl_verify = "no";
|
||||||
|
autoconnect = "no";
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address = "irc.rpis.ec";
|
||||||
|
chatnet = "rpisec";
|
||||||
|
port = "6697";
|
||||||
|
use_ssl = "yes";
|
||||||
|
ssl_verify = "no";
|
||||||
|
autoconnect = "yes";
|
||||||
|
},
|
||||||
|
{
|
||||||
|
address = "chat.freenode.net";
|
||||||
|
chatnet = "freenode";
|
||||||
|
port = "7000";
|
||||||
|
use_ssl = "yes";
|
||||||
|
ssl_cert = "~/.irssi/matir.pem";
|
||||||
|
ssl_verify = "yes";
|
||||||
|
ssl_capath = "/etc/ssl/certs";
|
||||||
|
family = "inet";
|
||||||
|
autoconnect = "yes";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
chatnets = {
|
chatnets = {
|
||||||
IRCnet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "4";
|
|
||||||
max_msgs = "5";
|
|
||||||
max_whois = "4";
|
|
||||||
max_query_chans = "5";
|
|
||||||
};
|
|
||||||
EFNet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "4";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "1";
|
|
||||||
};
|
|
||||||
Undernet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
DALnet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "4";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
QuakeNet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
OFTC = {
|
OFTC = {
|
||||||
type = "IRC";
|
type = "IRC";
|
||||||
max_kicks = "1";
|
max_kicks = "1";
|
||||||
max_msgs = "3";
|
max_msgs = "3";
|
||||||
max_whois = "30";
|
max_whois = "30";
|
||||||
};
|
};
|
||||||
GameSurge = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
WebChat = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
Rizon = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
LinkNet = {
|
|
||||||
type = "IRC";
|
|
||||||
max_kicks = "1";
|
|
||||||
max_msgs = "3";
|
|
||||||
max_whois = "30";
|
|
||||||
};
|
|
||||||
SILC = { type = "SILC"; };
|
|
||||||
freenode = { type = "IRC"; };
|
|
||||||
overthewire = { type = "IRC"; nick = "Matir"; };
|
overthewire = { type = "IRC"; nick = "Matir"; };
|
||||||
secfo = { type = "IRC"; };
|
secfo = { type = "IRC"; };
|
||||||
hackint = { type = "IRC"; nick = "Matir"; };
|
hackint = { type = "IRC"; nick = "Matir"; };
|
||||||
|
freenode = {
|
||||||
|
type = "IRC";
|
||||||
|
nick = "Matir";
|
||||||
|
username = "matir";
|
||||||
|
realname = "Matir";
|
||||||
|
max_kicks = "1";
|
||||||
|
max_msgs = "4";
|
||||||
|
max_modes = "4";
|
||||||
|
max_whois = "1";
|
||||||
|
};
|
||||||
|
geekshed = {
|
||||||
|
type = "IRC";
|
||||||
|
nick = "KF4MDV";
|
||||||
|
username = "kf4mdv";
|
||||||
|
realname = "David";
|
||||||
|
};
|
||||||
|
rpisec = { type = "IRC"; };
|
||||||
};
|
};
|
||||||
|
|
||||||
channels = (
|
channels = (
|
||||||
@@ -132,7 +86,15 @@ channels = (
|
|||||||
{ name = "#hak5"; chatnet = "secfo"; autojoin = "yes"; },
|
{ name = "#hak5"; chatnet = "secfo"; autojoin = "yes"; },
|
||||||
{ name = "#wargames"; chatnet = "overthewire"; autojoin = "yes"; },
|
{ name = "#wargames"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
{ name = "#social"; chatnet = "overthewire"; autojoin = "yes"; },
|
{ name = "#social"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
{ name = "#openvpn"; chatnet = "freenode"; autojoin = "yes"; }
|
{ name = "#openvpn"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#amateria"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
|
{ name = "#io"; chatnet = "overthewire"; autojoin = "yes"; },
|
||||||
|
{ name = "#radare"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#vulnhub"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#redditnet"; chatnet = "geekshed"; autojoin = "yes"; },
|
||||||
|
{ name = "#rpisec"; chatnet = "rpisec"; autojoin = "yes"; },
|
||||||
|
{ name = "#offsec"; chatnet = "freenode"; autojoin = "yes"; },
|
||||||
|
{ name = "#offtopicsec"; chatnet = "freenode"; autojoin = "yes"; }
|
||||||
);
|
);
|
||||||
|
|
||||||
aliases = {
|
aliases = {
|
||||||
@@ -225,7 +187,7 @@ statusbar = {
|
|||||||
# the "default statusbar" to be displayed at the bottom of the window.
|
# the "default statusbar" to be displayed at the bottom of the window.
|
||||||
# contains all the normal items.
|
# contains all the normal items.
|
||||||
window = {
|
window = {
|
||||||
disabled = "no";
|
disabled = "yes";
|
||||||
|
|
||||||
# window, root
|
# window, root
|
||||||
type = "window";
|
type = "window";
|
||||||
@@ -244,7 +206,6 @@ statusbar = {
|
|||||||
window = { };
|
window = { };
|
||||||
window_empty = { };
|
window_empty = { };
|
||||||
lag = { priority = "-1"; };
|
lag = { priority = "-1"; };
|
||||||
act = { priority = "10"; };
|
|
||||||
more = { priority = "-1"; alignment = "right"; };
|
more = { priority = "-1"; alignment = "right"; };
|
||||||
barend = { priority = "100"; alignment = "right"; };
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
};
|
};
|
||||||
@@ -289,11 +250,37 @@ statusbar = {
|
|||||||
visible = "always";
|
visible = "always";
|
||||||
items = {
|
items = {
|
||||||
topicbarstart = { priority = "100"; };
|
topicbarstart = { priority = "100"; };
|
||||||
|
time = { priority = "100"; };
|
||||||
topic = { };
|
topic = { };
|
||||||
topic_empty = { };
|
topic_empty = { };
|
||||||
|
window_empty = { alignment = "right"; };
|
||||||
|
user = { priority = "100"; alignment = "right"; };
|
||||||
topicbarend = { priority = "100"; alignment = "right"; };
|
topicbarend = { priority = "100"; alignment = "right"; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
placement = { items = { }; disabled = "yes"; };
|
||||||
|
remove = { disabled = "yes"; };
|
||||||
|
awl_0 = {
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
awl_0 = { };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
awl_1 = {
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
awl_1 = { };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
awl_2 = {
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
awl_2 = { };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
@@ -307,11 +294,122 @@ settings = {
|
|||||||
"fe-common/core" = {
|
"fe-common/core" = {
|
||||||
autolog = "yes";
|
autolog = "yes";
|
||||||
autolog_path = "~/irclogs/%Y/%m/$tag/$0.log";
|
autolog_path = "~/irclogs/%Y/%m/$tag/$0.log";
|
||||||
|
autoclose_query = "1800";
|
||||||
|
autocreate_own_query = "no";
|
||||||
|
show_nickmode_empty = "no";
|
||||||
|
term_charset = "utf-8";
|
||||||
|
};
|
||||||
|
"perl/core/scripts" = {
|
||||||
|
awl_shared_sbar = "OFF";
|
||||||
|
awl_viewer = "no";
|
||||||
|
awl_block = "-15";
|
||||||
|
awl_maxlines = "3";
|
||||||
|
awl_height_adjust = "2";
|
||||||
|
awl_hide_empty = "0";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
logs = {
|
windows = {
|
||||||
"~/irc.log.Window7" = {
|
1 = { immortal = "yes"; name = "(status)"; level = "ALL"; };
|
||||||
level = "ALL";
|
2 = {
|
||||||
items = ( { type = "window"; name = "7"; } );
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#kali-linux";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
3 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#radare";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
4 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#vulnhub";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
5 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#openvpn";
|
||||||
|
tag = "freenode";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
6 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#wargames";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
7 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#social";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
8 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#amateria";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
9 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#io";
|
||||||
|
tag = "overthewire";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
10 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#RedditNet";
|
||||||
|
tag = "geekshed";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
11 = {
|
||||||
|
items = (
|
||||||
|
{
|
||||||
|
type = "CHANNEL";
|
||||||
|
chat_type = "IRC";
|
||||||
|
name = "#hak5";
|
||||||
|
tag = "secfo";
|
||||||
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
mainwindows = { 1 = { first_line = "1"; lines = "78"; }; };
|
||||||
|
logs = { };
|
||||||
@@ -292,3 +292,6 @@ abstracts = {
|
|||||||
# hilight with specified color, $0 = color, $1 = text
|
# hilight with specified color, $0 = color, $1 = text
|
||||||
sb_act_hilight_color = "$0$1-%n";
|
sb_act_hilight_color = "$0$1-%n";
|
||||||
};
|
};
|
||||||
|
formats = {
|
||||||
|
"Irssi::Script::adv_windowlist" = { awl_display_header = ""; };
|
||||||
|
};
|
||||||
26
dotfiles/irssi/instantssl.crt
Normal file
26
dotfiles/irssi/instantssl.crt
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB
|
||||||
|
lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug
|
||||||
|
Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
||||||
|
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt
|
||||||
|
SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG
|
||||||
|
A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe
|
||||||
|
MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v
|
||||||
|
d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh
|
||||||
|
cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn
|
||||||
|
0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ
|
||||||
|
M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a
|
||||||
|
MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd
|
||||||
|
oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI
|
||||||
|
DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy
|
||||||
|
oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD
|
||||||
|
VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0
|
||||||
|
dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy
|
||||||
|
bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF
|
||||||
|
BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
||||||
|
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli
|
||||||
|
CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE
|
||||||
|
CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t
|
||||||
|
3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS
|
||||||
|
KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA==
|
||||||
|
-----END CERTIFICATE-----
|
||||||
2088
dotfiles/irssi/scripts/adv_windowlist.pl
Normal file
2088
dotfiles/irssi/scripts/adv_windowlist.pl
Normal file
File diff suppressed because it is too large
Load Diff
1
dotfiles/irssi/scripts/autorun/adv_windowlist.pl
Symbolic link
1
dotfiles/irssi/scripts/autorun/adv_windowlist.pl
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../adv_windowlist.pl
|
||||||
3962
dotfiles/john/john.conf
Normal file
3962
dotfiles/john/john.conf
Normal file
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
|
||||||
37
dotfiles/profile
Executable file
37
dotfiles/profile
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/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
|
||||||
|
# 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
|
||||||
|
if [ "$(uname)" = "Darwin" ] ; then
|
||||||
|
LSCOLORS="gxfxbEaEBxxEhEhBaDaCaD"
|
||||||
|
export LSCOLORS
|
||||||
|
CLICOLOR=1
|
||||||
|
export CLICOLOR
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Setup for libvirt
|
||||||
|
if [ -z "${LIBVIRT_DEFAULT_URI}" ] ; then
|
||||||
|
if [ "$(id -u)" = "0" ] || (id -g -n | grep -q "\blibvirt\b") ; then
|
||||||
|
LIBVIRT_DEFAULT_URI="qemu:///system"
|
||||||
|
export LIBVIRT_DEFAULT_URI
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
test -f "${HOME}/.profile.local" && . "${HOME}/.profile.local"
|
||||||
5
dotfiles/radare2/xdot
Executable file
5
dotfiles/radare2/xdot
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DOT=`mktemp`
|
||||||
|
cat > $DOT
|
||||||
|
xdot $DOT
|
||||||
10
dotfiles/radare2rc
Normal file
10
dotfiles/radare2rc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
e scr.color = true
|
||||||
|
e scr.utf8 = true
|
||||||
|
e dbg.bep = main
|
||||||
|
e asm.syntax = intel
|
||||||
|
e asm.linescall = true
|
||||||
|
e asm.linesout = true
|
||||||
|
e asm.lineswidth = 12
|
||||||
|
|
||||||
|
# Callgraph: .(cg)
|
||||||
|
(cg,aa,ag | $HOME/.radare2/xdot || xdot -,)
|
||||||
32
dotfiles/rsync_ignore
Normal file
32
dotfiles/rsync_ignore
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
.AndroidStudio*
|
||||||
|
.Genymobile
|
||||||
|
.Ticket to Ride*
|
||||||
|
.android*
|
||||||
|
.arduino*
|
||||||
|
.bundle
|
||||||
|
.cache
|
||||||
|
.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
|
||||||
|
.config/unity3d/cache
|
||||||
|
.xsession-errors*
|
||||||
|
.config/google-chrome-beta
|
||||||
|
.config/google-chrome
|
||||||
|
Unity
|
||||||
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
|
||||||
35
dotfiles/ssh/config
Normal file
35
dotfiles/ssh/config
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Universal Settings
|
||||||
|
Protocol 2
|
||||||
|
|
||||||
|
# Permit Local Overrides
|
||||||
|
Include ~/.ssh/config.d/*
|
||||||
|
|
||||||
|
# SSH known host hashing doesn't buy much with shell history, etc.
|
||||||
|
HashKnownHosts no
|
||||||
|
|
||||||
|
# Enable canonicalization, unless overridden
|
||||||
|
CanonicalizeHostname yes
|
||||||
|
CanonicalizeFallbackLocal yes
|
||||||
|
CanonicalDomains systemoverlord.com
|
||||||
|
CanonicalizeMaxDots 0
|
||||||
|
|
||||||
|
# Defaults (May be Overridden)
|
||||||
|
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
|
||||||
0
dotfiles/ssh/master/.keep
Normal file
0
dotfiles/ssh/master/.keep
Normal file
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
|
||||||
71
dotfiles/tmux.conf
Normal file
71
dotfiles/tmux.conf
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
# 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
|
||||||
|
bind ^[ copy-mode
|
||||||
|
bind R source-file ~/.tmux.conf \; display-message " Config reloaded.."
|
||||||
|
|
||||||
|
# Scrollback
|
||||||
|
set -g history-limit 10000
|
||||||
|
|
||||||
|
# Start indexing from 1
|
||||||
|
set -g base-index 1
|
||||||
|
set -g pane-base-index 1
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# Activity
|
||||||
|
setw -g monitor-activity on
|
||||||
|
set -g visual-activity on
|
||||||
|
|
||||||
|
# Autorename new tabs automatically
|
||||||
|
setw -g automatic-rename on
|
||||||
|
|
||||||
|
# Color scheme
|
||||||
|
source-file ~/.tmux/tmux-solarized-256.conf
|
||||||
|
|
||||||
|
# Provide a statusbar
|
||||||
|
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/ '
|
||||||
|
set -g status-right '#(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=colour166]%H:%M#[default]'
|
||||||
|
|
||||||
|
# Advanced mouse mode from http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/
|
||||||
|
# Toggle mouse on
|
||||||
|
bind m \
|
||||||
|
set -g mode-mouse on \;\
|
||||||
|
set -g mouse-resize-pane on \;\
|
||||||
|
set -g mouse-select-pane on \;\
|
||||||
|
set -g mouse-select-window on \;\
|
||||||
|
display 'Mouse: ON'
|
||||||
|
|
||||||
|
# Toggle mouse off
|
||||||
|
bind M \
|
||||||
|
set -g mode-mouse off \;\
|
||||||
|
set -g mouse-resize-pane off \;\
|
||||||
|
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
29
dotfiles/tmux/tmux-solarized-256.conf
Normal file
29
dotfiles/tmux/tmux-solarized-256.conf
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
#### COLOUR (Solarized 256)
|
||||||
|
|
||||||
|
# default statusbar colors
|
||||||
|
set-option -g status-style fg=colour136,bg=colour235 #yellow and base02
|
||||||
|
|
||||||
|
# default window title colors
|
||||||
|
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-style fg=colour166,bg=default #orange and default
|
||||||
|
#set-window-option -g window-status-current-style bright
|
||||||
|
|
||||||
|
# pane border
|
||||||
|
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-style fg=colour166,bg=colour235 #orange and base02
|
||||||
|
|
||||||
|
# pane number display
|
||||||
|
set-option -g display-panes-active-colour colour33 #blue
|
||||||
|
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
|
||||||
7
dotfiles/vim/ftplugin/python.vim
Normal file
7
dotfiles/vim/ftplugin/python.vim
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
nnoremap <F8> :%!autopep8 -<CR>
|
||||||
|
setlocal tabstop=4
|
||||||
|
setlocal softtabstop=4
|
||||||
|
setlocal shiftwidth=4
|
||||||
|
setlocal textwidth=80
|
||||||
|
setlocal smarttab
|
||||||
|
setlocal expandtab
|
||||||
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
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user