Compare commits
2128 Commits
1.3.1
...
pulseaudio
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00ba9b5b70 | ||
|
|
cb444c1309 | ||
|
|
f99e0b1c7a | ||
|
|
455d63611a | ||
|
|
9476ad80b8 | ||
|
|
f59f509923 | ||
|
|
552d81dd56 | ||
|
|
2d00384046 | ||
|
|
15ccea6099 | ||
|
|
0eb39c5205 | ||
|
|
cf50f75903 | ||
|
|
a66c5fd91b | ||
|
|
e7cf47de71 | ||
|
|
f0f9563ecf | ||
|
|
469d0536e8 | ||
|
|
1ba083cdb2 | ||
|
|
b3af5a3316 | ||
|
|
c0d3d7a3e7 | ||
|
|
03d01afed6 | ||
|
|
35638027a8 | ||
|
|
6f8db4a3fe | ||
|
|
0e5760a824 | ||
|
|
5aaf49864a | ||
|
|
52ff00c28d | ||
|
|
df87c7ac21 | ||
|
|
4d1758457b | ||
|
|
baed54bc76 | ||
|
|
81ea16931e | ||
|
|
ab583b08cd | ||
|
|
c8f7dc1c14 | ||
|
|
020699724f | ||
|
|
8e04f15ed6 | ||
|
|
0ed669f049 | ||
|
|
11b522c313 | ||
|
|
82a81ce07c | ||
|
|
c2dd279bf7 | ||
|
|
174ce34285 | ||
|
|
b4d8be590b | ||
|
|
b25d00b159 | ||
|
|
367847ec3b | ||
|
|
91bd85cf50 | ||
|
|
ade2ee0981 | ||
|
|
7ad51bed20 | ||
|
|
9ea910d706 | ||
|
|
c552df3b66 | ||
|
|
432e19df01 | ||
|
|
cbfbba0700 | ||
|
|
8566051336 | ||
|
|
7d7bf84e16 | ||
|
|
a7d9b7d912 | ||
|
|
2471f3595c | ||
|
|
cd57c1252c | ||
|
|
ea3b47a65e | ||
|
|
70c400d20d | ||
|
|
f8983e2bd3 | ||
|
|
f7a755799c | ||
|
|
0a19c5e3d7 | ||
|
|
eaa3ba5f83 | ||
|
|
7972c20fe9 | ||
|
|
38f67f4269 | ||
|
|
6a648c8ef7 | ||
|
|
054b9f4d33 | ||
|
|
80aa2bade5 | ||
|
|
aebdb5328a | ||
|
|
278584fa27 | ||
|
|
19e8d53320 | ||
|
|
c9752598a5 | ||
|
|
1bfe117c5d | ||
|
|
16102c258a | ||
|
|
53661e995a | ||
|
|
1043354aec | ||
|
|
97ce1f6e7a | ||
|
|
b754790642 | ||
|
|
c747599ef5 | ||
|
|
2cd0809a46 | ||
|
|
06a3de0b89 | ||
|
|
ea3eb6eaa4 | ||
|
|
4d1bba2c4e | ||
|
|
2c23f7a87f | ||
|
|
4f9f07eefd | ||
|
|
b11a2ff653 | ||
|
|
59acb4150b | ||
|
|
76c7ee3bf6 | ||
|
|
f78ec80df3 | ||
|
|
425d4dc338 | ||
|
|
32c78aa63a | ||
|
|
40bc8c7955 | ||
|
|
5b1fae4fc1 | ||
|
|
5e5a0a7c4d | ||
|
|
c86519f077 | ||
|
|
3a27e891d2 | ||
|
|
63443f82d5 | ||
|
|
270c0a340c | ||
|
|
71c65447f8 | ||
|
|
6e716296ff | ||
|
|
d74a4fab77 | ||
|
|
f5169abde2 | ||
|
|
031a29332a | ||
|
|
0caa30683c | ||
|
|
61f0e9dd5d | ||
|
|
7bc673b8f2 | ||
|
|
89ca0255f1 | ||
|
|
cf802ad431 | ||
|
|
dbac7d8ae8 | ||
|
|
fcef90be24 | ||
|
|
6148bb7f14 | ||
|
|
30bb1584fc | ||
|
|
f3c911991c | ||
|
|
44b5f87884 | ||
|
|
006e971dad | ||
|
|
6e0cff97ff | ||
|
|
fc422b1107 | ||
|
|
81684a6c9d | ||
|
|
0032f27686 | ||
|
|
234e606b41 | ||
|
|
c48aa1998c | ||
|
|
98d58b6f27 | ||
|
|
c6eb3f88ea | ||
|
|
df32703a22 | ||
|
|
7fbd2d175c | ||
|
|
b5f8466117 | ||
|
|
4e66b1f4b8 | ||
|
|
921e2d0670 | ||
|
|
04fefa0a0e | ||
|
|
11746455ee | ||
|
|
f3ce047c52 | ||
|
|
23153c3a23 | ||
|
|
3e3a380069 | ||
|
|
ac589b32dd | ||
|
|
616b3fe3e7 | ||
|
|
47f6d9c25d | ||
|
|
58e0911ac6 | ||
|
|
89f29fa12e | ||
|
|
f6172e1459 | ||
|
|
1aeac226a6 | ||
|
|
8cc1b4fcfd | ||
|
|
b3cbf0a644 | ||
|
|
fc423c0921 | ||
|
|
e8870d6537 | ||
|
|
edf37385cb | ||
|
|
65279883c3 | ||
|
|
aadd4ce1c8 | ||
|
|
d5498c8a8a | ||
|
|
d296d67953 | ||
|
|
f5d16891dd | ||
|
|
ca25b5685c | ||
|
|
cfe9a81f55 | ||
|
|
ed6a0e90fb | ||
|
|
10cdec3b9f | ||
|
|
87750c064e | ||
|
|
291a4844bc | ||
|
|
30e1cc2595 | ||
|
|
1e582accb8 | ||
|
|
cbf5439e80 | ||
|
|
cbfb417dce | ||
|
|
7049c755c5 | ||
|
|
6d74ae51e7 | ||
|
|
31bdacb3d7 | ||
|
|
b0e33053f9 | ||
|
|
3561fd3ad1 | ||
|
|
56779a5902 | ||
|
|
d6997659fa | ||
|
|
54b75f23ab | ||
|
|
3cfa01233c | ||
|
|
e9713185cb | ||
|
|
303015244e | ||
|
|
0096fea839 | ||
|
|
2e902fee04 | ||
|
|
03987b19a5 | ||
|
|
5719d130fd | ||
|
|
ae3deab0db | ||
|
|
463ef963a1 | ||
|
|
c44336573b | ||
|
|
def2682b8c | ||
|
|
5c38d5cb17 | ||
|
|
3da2662022 | ||
|
|
918bc212ee | ||
|
|
0c223ae2bb | ||
|
|
627d43dad2 | ||
|
|
63c6b13cbf | ||
|
|
5fd62edfca | ||
|
|
8ec9807145 | ||
|
|
1d4e30c4be | ||
|
|
60173e5042 | ||
|
|
ea5ffdd6b1 | ||
|
|
053a7eb2d8 | ||
|
|
3b9ff04f40 | ||
|
|
fe9660254c | ||
|
|
901183a60a | ||
|
|
1127792ccf | ||
|
|
b72458a6b0 | ||
|
|
03a2e6bb17 | ||
|
|
ffcdf7d690 | ||
|
|
1dcff9396a | ||
|
|
de560fe810 | ||
|
|
d658c07177 | ||
|
|
ef06472a6d | ||
|
|
d817080ee8 | ||
|
|
7838241a77 | ||
|
|
6ccecbfca2 | ||
|
|
708bd9c891 | ||
|
|
dca9e15339 | ||
|
|
9c759549c6 | ||
|
|
4bbb28baaf | ||
|
|
b5764c8a93 | ||
|
|
f4d0ba9186 | ||
|
|
841b799299 | ||
|
|
98d584c8fe | ||
|
|
a20f76d7e5 | ||
|
|
9f4e88c07d | ||
|
|
a42e533089 | ||
|
|
f3e27a205e | ||
|
|
b2c5d8e0e2 | ||
|
|
86f2baa550 | ||
|
|
6a43758b5b | ||
|
|
ca06be1d0e | ||
|
|
0331a5fda4 | ||
|
|
1ee11f7c9e | ||
|
|
1f55eaf73d | ||
|
|
8a4fc1f4f7 | ||
|
|
f0dbb4cc63 | ||
|
|
80bcf55844 | ||
|
|
46358792e0 | ||
|
|
7a1824a9b9 | ||
|
|
a962a2658d | ||
|
|
f653c3a738 | ||
|
|
423cc1720f | ||
|
|
f9fc02e69c | ||
|
|
efbd8e394f | ||
|
|
6a2d7b5dde | ||
|
|
bc9dda266f | ||
|
|
b5292791ef | ||
|
|
d743a22817 | ||
|
|
9ad73da05f | ||
|
|
bdfe655556 | ||
|
|
81d1f74b7b | ||
|
|
48d8187f90 | ||
|
|
b5c742a63e | ||
|
|
6043f856b6 | ||
|
|
9b1afe7369 | ||
|
|
b8c275d6ac | ||
|
|
3711e999ba | ||
|
|
9544130b9c | ||
|
|
ab7612ea4a | ||
|
|
ab2b5f603c | ||
|
|
6fa85d2ce8 | ||
|
|
7acd4c703c | ||
|
|
ba0e478026 | ||
|
|
3244b10ce3 | ||
|
|
18485d00c2 | ||
|
|
4961a7dcfc | ||
|
|
4f923ededc | ||
|
|
ab206a5f8e | ||
|
|
146c1ac1d7 | ||
|
|
7d9227cb08 | ||
|
|
9b28ba7a5e | ||
|
|
973b1fa3d3 | ||
|
|
652652f943 | ||
|
|
49b18fb3b7 | ||
|
|
77d611c03d | ||
|
|
8363b20793 | ||
|
|
80173c6413 | ||
|
|
61c4976bb5 | ||
|
|
e1856cf8ec | ||
|
|
f6651d58d0 | ||
|
|
aaac4c45ff | ||
|
|
41d41ca8df | ||
|
|
a2c1392c12 | ||
|
|
36d19d372d | ||
|
|
abfc6b7f91 | ||
|
|
f2ce3a45c5 | ||
|
|
ff6ac9fefc | ||
|
|
9b7bfae33d | ||
|
|
d018adcf91 | ||
|
|
ae32b5ff29 | ||
|
|
f77a725751 | ||
|
|
b8a7b6a605 | ||
|
|
3f89d73374 | ||
|
|
cea9949be1 | ||
|
|
b05b3a4c74 | ||
|
|
b8075c9b4d | ||
|
|
8173eaf90a | ||
|
|
4556a4a7a8 | ||
|
|
705845e5d3 | ||
|
|
11a644548b | ||
|
|
7fb5f165db | ||
|
|
e904b408d1 | ||
|
|
6fdc3114f3 | ||
|
|
325ef4c3b3 | ||
|
|
3079acb34c | ||
|
|
39a640d5d0 | ||
|
|
b8af14fa8c | ||
|
|
6e4ef632eb | ||
|
|
880fbc242d | ||
|
|
9badbd00f3 | ||
|
|
245878e91c | ||
|
|
67fb58c993 | ||
|
|
60eb7b522a | ||
|
|
638a57379b | ||
|
|
5b2de60353 | ||
|
|
50eac859fd | ||
|
|
8ddf9d2cdf | ||
|
|
b66f920308 | ||
|
|
8db3e04727 | ||
|
|
1a4ad828c6 | ||
|
|
4a61d3157f | ||
|
|
b04f636bab | ||
|
|
f37124f5af | ||
|
|
fdaecdb113 | ||
|
|
8820cc73cd | ||
|
|
c655adea93 | ||
|
|
0b24080336 | ||
|
|
a82e4324f6 | ||
|
|
40cbe7ed97 | ||
|
|
24e079afef | ||
|
|
4350e356a7 | ||
|
|
2322493ac8 | ||
|
|
219171cf79 | ||
|
|
57589ee896 | ||
|
|
fce5c4445f | ||
|
|
e30453da99 | ||
|
|
eb535998da | ||
|
|
f1490a13ca | ||
|
|
34664f62c9 | ||
|
|
f5bfbccfc8 | ||
|
|
dc46251571 | ||
|
|
74067c52c3 | ||
|
|
59a581a39e | ||
|
|
ae7686d24b | ||
|
|
62da14e30d | ||
|
|
ce93188a4a | ||
|
|
ab915fb724 | ||
|
|
a33e8de922 | ||
|
|
69a2bf211a | ||
|
|
a8035a7f68 | ||
|
|
28af6bb493 | ||
|
|
f428b7bb2f | ||
|
|
52992c588a | ||
|
|
c2f087225c | ||
|
|
3356188056 | ||
|
|
8a9cad2792 | ||
|
|
d995a39da8 | ||
|
|
968d9c753f | ||
|
|
e549527d3e | ||
|
|
195a0d94df | ||
|
|
6e34265d7b | ||
|
|
f488a889bc | ||
|
|
a3b5e3e7ed | ||
|
|
542f70efa3 | ||
|
|
9b5611af3f | ||
|
|
3c5b2b61a6 | ||
|
|
9e3b537817 | ||
|
|
6d1ff41d37 | ||
|
|
b5fb44220d | ||
|
|
4d90ac2f4c | ||
|
|
abd96eb089 | ||
|
|
76ae61f892 | ||
|
|
b1c97e42cc | ||
|
|
281fdf6382 | ||
|
|
231af35354 | ||
|
|
22014c70c4 | ||
|
|
47b5910eda | ||
|
|
282b0f4e73 | ||
|
|
98dffc292a | ||
|
|
a2968127d1 | ||
|
|
40ae9b210b | ||
|
|
2b1eb5337c | ||
|
|
e5ab7e1c00 | ||
|
|
1a59599388 | ||
|
|
444120e664 | ||
|
|
4f8f076714 | ||
|
|
6b6bcf5080 | ||
|
|
f55f584ef7 | ||
|
|
626c55f8e5 | ||
|
|
c7ffa60866 | ||
|
|
e798ed57a2 | ||
|
|
37cd63a356 | ||
|
|
a7b978412c | ||
|
|
1e0e50266b | ||
|
|
8afd5b71df | ||
|
|
55eb19fdc7 | ||
|
|
98d9a882ea | ||
|
|
fa1240f4b6 | ||
|
|
3b6a950380 | ||
|
|
fabce6a493 | ||
|
|
0d1db206c6 | ||
|
|
560065540b | ||
|
|
98919cbb77 | ||
|
|
c922a94b67 | ||
|
|
0f72a2e0ea | ||
|
|
069036fa5a | ||
|
|
c29e4837df | ||
|
|
21f6f7818a | ||
|
|
85d308cec8 | ||
|
|
386eb57ba7 | ||
|
|
77b9cffaf8 | ||
|
|
a158f0d7ec | ||
|
|
52a3961602 | ||
|
|
895c1a6b51 | ||
|
|
db52106934 | ||
|
|
dd4088910e | ||
|
|
511e73b3b5 | ||
|
|
91759a4c96 | ||
|
|
2551ea0205 | ||
|
|
7b5285b51e | ||
|
|
309fd8221a | ||
|
|
86f02a3ebe | ||
|
|
6d3bb2211e | ||
|
|
2c7af2a60c | ||
|
|
ce63305c1d | ||
|
|
e3cb94ef88 | ||
|
|
6ac5b7ebdd | ||
|
|
ba50bf0bc6 | ||
|
|
75ff5c3b14 | ||
|
|
07da1a2967 | ||
|
|
b9642e4cf3 | ||
|
|
f36224eaab | ||
|
|
ba341f584e | ||
|
|
c89fc7f73b | ||
|
|
88cd525dc8 | ||
|
|
9d9fe8bffb | ||
|
|
53ce1ae414 | ||
|
|
f9d434052a | ||
|
|
60ee63c0db | ||
|
|
3cc17a0e57 | ||
|
|
a2f50f3b90 | ||
|
|
74d8cf281c | ||
|
|
ba118477e0 | ||
|
|
249c3ec141 | ||
|
|
0bf45f3bd6 | ||
|
|
2512123a6c | ||
|
|
92722e05c2 | ||
|
|
a8cba9c43c | ||
|
|
6136c08d42 | ||
|
|
6816891cf1 | ||
|
|
5011e66346 | ||
|
|
9f828800fb | ||
|
|
ddabe3f0f4 | ||
|
|
a520fead94 | ||
|
|
151a263654 | ||
|
|
5f3462240c | ||
|
|
523e4d6313 | ||
|
|
c901826317 | ||
|
|
3652d5fe0d | ||
|
|
55509efa1d | ||
|
|
06932007a0 | ||
|
|
dcd33057fd | ||
|
|
3247a57a63 | ||
|
|
bfa9b5d53e | ||
|
|
e66a678c12 | ||
|
|
c65f6857e1 | ||
|
|
eb9c192d04 | ||
|
|
d8f4d56a95 | ||
|
|
cbe4521737 | ||
|
|
ad987098ff | ||
|
|
735a08ba7c | ||
|
|
1ddd8bd1e1 | ||
|
|
10bbec4451 | ||
|
|
2901e1e476 | ||
|
|
97759ce585 | ||
|
|
d3797acedd | ||
|
|
93ab639c8a | ||
|
|
2fd6d20999 | ||
|
|
c197cff511 | ||
|
|
ac01d8b5c0 | ||
|
|
8ca154caaa | ||
|
|
1d033edaae | ||
|
|
6b1c5489a2 | ||
|
|
43d754bd1d | ||
|
|
3f03b671bb | ||
|
|
cf2653c8bd | ||
|
|
63819d62f0 | ||
|
|
cd71b96cf8 | ||
|
|
698b96d17b | ||
|
|
4f16a4fb6d | ||
|
|
529843b6ba | ||
|
|
99900323b7 | ||
|
|
50f127f1bc | ||
|
|
5caae186e0 | ||
|
|
2017ba38f3 | ||
|
|
cfc6f3b45f | ||
|
|
c4fbf0023e | ||
|
|
7a9f301830 | ||
|
|
cd1d4fa183 | ||
|
|
b5bdbdf6cb | ||
|
|
d89096c191 | ||
|
|
7a569c4b98 | ||
|
|
8fcd514168 | ||
|
|
464bedb33c | ||
|
|
f359540b5d | ||
|
|
f0ee5ab8cd | ||
|
|
96239597ed | ||
|
|
0a474bb2f2 | ||
|
|
5d518e171e | ||
|
|
c676d7e6f5 | ||
|
|
4ded401aab | ||
|
|
eaa50691fc | ||
|
|
04344aa0e7 | ||
|
|
4154943f69 | ||
|
|
68ce23cbd3 | ||
|
|
ad2d3652f9 | ||
|
|
3ac93845fc | ||
|
|
50b567f070 | ||
|
|
ca8fbe5c86 | ||
|
|
0cfdd88ad0 | ||
|
|
74dcb4649d | ||
|
|
fdc670a9dd | ||
|
|
d5be8cad97 | ||
|
|
26be83f893 | ||
|
|
7521da900f | ||
|
|
f7c2d83ef2 | ||
|
|
eb302f96ff | ||
|
|
412f4c723f | ||
|
|
80a50874fd | ||
|
|
11f76a1710 | ||
|
|
8e46e54cb3 | ||
|
|
e30d2c4c1f | ||
|
|
b49f325e1e | ||
|
|
6479ebc83f | ||
|
|
bb70b7c743 | ||
|
|
17f4dfd342 | ||
|
|
3c51a1d955 | ||
|
|
74903d49a7 | ||
|
|
64e246e734 | ||
|
|
9d47b83697 | ||
|
|
ddfec6fc8f | ||
|
|
c3fbd1e3e8 | ||
|
|
923d9ae061 | ||
|
|
20c88ca977 | ||
|
|
c24a6999a4 | ||
|
|
771154742c | ||
|
|
16b2970bd7 | ||
|
|
7d1b265ef4 | ||
|
|
89a723a4d9 | ||
|
|
218911c463 | ||
|
|
64649a1e47 | ||
|
|
eee22cb351 | ||
|
|
1dc8d2f30e | ||
|
|
374716d329 | ||
|
|
dc8d7fd0e0 | ||
|
|
fd2edfdc08 | ||
|
|
84da909b47 | ||
|
|
ade8b40b36 | ||
|
|
4f2a145f4f | ||
|
|
cb0aeacbf2 | ||
|
|
b143e43491 | ||
|
|
cb47512871 | ||
|
|
cb728ac7c4 | ||
|
|
bb5cf0113e | ||
|
|
31fafa86f7 | ||
|
|
9d52408cad | ||
|
|
35f3d7a2cb | ||
|
|
0d2838fcd5 | ||
|
|
33e691301d | ||
|
|
6f13fe93a3 | ||
|
|
fd556525a8 | ||
|
|
1bf89e8b76 | ||
|
|
cec463e830 | ||
|
|
c07cc09a5f | ||
|
|
d63bf294b7 | ||
|
|
680bb2d5e4 | ||
|
|
433a313782 | ||
|
|
6afe6581e1 | ||
|
|
4d2bdaa0bd | ||
|
|
3eda8832b9 | ||
|
|
3225c11d2a | ||
|
|
7c662ec44f | ||
|
|
94e1c64dff | ||
|
|
7493639889 | ||
|
|
1c554dd0e0 | ||
|
|
9ba805d78f | ||
|
|
ae1c6ca1b7 | ||
|
|
47483a94f1 | ||
|
|
ccf14d9816 | ||
|
|
d6148e3288 | ||
|
|
95537f458d | ||
|
|
cf739ed295 | ||
|
|
54e2490aa5 | ||
|
|
a45b5d0424 | ||
|
|
d665634484 | ||
|
|
f6231f351f | ||
|
|
df485f0a60 | ||
|
|
bc87eb3b69 | ||
|
|
1168ef36a0 | ||
|
|
037f6e6c45 | ||
|
|
82ebad5e7a | ||
|
|
b2c515c73c | ||
|
|
3d6a7ffd4d | ||
|
|
c198859cd5 | ||
|
|
4e576f6572 | ||
|
|
d6ce8c9a46 | ||
|
|
11d1c2c5c7 | ||
|
|
39c73a8234 | ||
|
|
078aa3c8cb | ||
|
|
9f2459be8c | ||
|
|
26a9bc5964 | ||
|
|
5f67a8a12b | ||
|
|
62638a5833 | ||
|
|
e89da58940 | ||
|
|
50d8a1ba06 | ||
|
|
52eee95bf8 | ||
|
|
0416093edc | ||
|
|
5007dae35a | ||
|
|
53c6f3b042 | ||
|
|
477189e443 | ||
|
|
4dfbba11c4 | ||
|
|
cc1efe12cd | ||
|
|
413c911cd1 | ||
|
|
eeab4f0d45 | ||
|
|
c9efd09f71 | ||
|
|
8e10c046fa | ||
|
|
3655106a14 | ||
|
|
64fa6469ab | ||
|
|
b238ec3403 | ||
|
|
75eb41f5ad | ||
|
|
9d31b51a63 | ||
|
|
2f549575c7 | ||
|
|
874c9527be | ||
|
|
f28de58134 | ||
|
|
0b67f67440 | ||
|
|
36aa1d08d6 | ||
|
|
ff3340e062 | ||
|
|
1afb333858 | ||
|
|
191fb2972c | ||
|
|
0a1b58a2ed | ||
|
|
c427ec06d7 | ||
|
|
658ed6974d | ||
|
|
5e64361ed8 | ||
|
|
d45ae7954a | ||
|
|
1d9365e74f | ||
|
|
3e4f8d402e | ||
|
|
1193b78e43 | ||
|
|
41ffc3607d | ||
|
|
9fb75779f3 | ||
|
|
5ddb6fc0c5 | ||
|
|
c60b488501 | ||
|
|
507004df87 | ||
|
|
0db8376222 | ||
|
|
ef8f7c9d94 | ||
|
|
af5af1e497 | ||
|
|
a30ac5f4a3 | ||
|
|
6618320947 | ||
|
|
bc1b86c584 | ||
|
|
8acedeef87 | ||
|
|
002112df64 | ||
|
|
a2b312cc84 | ||
|
|
ae2350167b | ||
|
|
816b73a95f | ||
|
|
b2ba21c75d | ||
|
|
d592eea966 | ||
|
|
06012af3aa | ||
|
|
4b5007294b | ||
|
|
457e37faaf | ||
|
|
a287fb5e8c | ||
|
|
22d0f0a38c | ||
|
|
c34f013e5f | ||
|
|
df15a4062a | ||
|
|
bb3647ff8d | ||
|
|
14a948d75d | ||
|
|
5dc6e7a7aa | ||
|
|
b11fa81f19 | ||
|
|
e309253fc8 | ||
|
|
4944a5179c | ||
|
|
3895ace12a | ||
|
|
8dbd1740a7 | ||
|
|
31096de5e5 | ||
|
|
91e31317a7 | ||
|
|
bb15e33a2a | ||
|
|
2f4cffc0fb | ||
|
|
a4dd2a93d6 | ||
|
|
a625e2b79a | ||
|
|
2b6abb9b8f | ||
|
|
be64da3bda | ||
|
|
b0e9e3ff61 | ||
|
|
b8a1354117 | ||
|
|
55b7533ed1 | ||
|
|
ba0a156bbe | ||
|
|
5cd7295a41 | ||
|
|
4e9598f09b | ||
|
|
f7dd5041fb | ||
|
|
78b5f88c5f | ||
|
|
f016b99e08 | ||
|
|
e9d2f022cd | ||
|
|
5e5d8faf04 | ||
|
|
92181fd237 | ||
|
|
0dffca98cb | ||
|
|
7658c1b9f1 | ||
|
|
fc42da812a | ||
|
|
b2613fa269 | ||
|
|
3f60561ae3 | ||
|
|
cae3848030 | ||
|
|
ecbe77bbda | ||
|
|
18fc64f881 | ||
|
|
fbbb5922da | ||
|
|
33b68ec7cb | ||
|
|
9f7363c9ee | ||
|
|
52000c194a | ||
|
|
2edd8275ff | ||
|
|
cc36350849 | ||
|
|
b5e7078d93 | ||
|
|
61dfe739d5 | ||
|
|
15496bfb4a | ||
|
|
15e79b09d3 | ||
|
|
3f7eb1b2aa | ||
|
|
853ea994bb | ||
|
|
512c519f25 | ||
|
|
f02fb67020 | ||
|
|
6975c0ec26 | ||
|
|
fab8437ff1 | ||
|
|
0b713047aa | ||
|
|
0276d11fd9 | ||
|
|
5a695c7065 | ||
|
|
683cfc0738 | ||
|
|
8d2b0d2747 | ||
|
|
8d07f2aa23 | ||
|
|
3854fc91b5 | ||
|
|
51f9f35599 | ||
|
|
982a22cd62 | ||
|
|
e6e010e45b | ||
|
|
d3844c40b6 | ||
|
|
4ef2bd5575 | ||
|
|
34bb35ca96 | ||
|
|
068bf5a311 | ||
|
|
0dbcb28a2c | ||
|
|
e43ba9bd3a | ||
|
|
8db9c89e0b | ||
|
|
98187debfb | ||
|
|
d93a50836d | ||
|
|
85721d3d10 | ||
|
|
d3d868a08c | ||
|
|
5eb293cb71 | ||
|
|
34e742e000 | ||
|
|
fdf4d0c1a5 | ||
|
|
1fe679d6b3 | ||
|
|
a902b5a449 | ||
|
|
63cb05d35d | ||
|
|
00274c57a9 | ||
|
|
ec2bad004a | ||
|
|
4bc7a09c7e | ||
|
|
bc560952e0 | ||
|
|
ad3960e050 | ||
|
|
37628f8691 | ||
|
|
fb6e874235 | ||
|
|
70bf0339b8 | ||
|
|
7f09784548 | ||
|
|
e5783d4113 | ||
|
|
8d3dedc2bd | ||
|
|
7ee6093a6e | ||
|
|
54381fd554 | ||
|
|
51184c7ead | ||
|
|
3ea7600412 | ||
|
|
100632cce3 | ||
|
|
6f882ba3b2 | ||
|
|
c6194c06eb | ||
|
|
6849b8a56b | ||
|
|
587dc6c84d | ||
|
|
a77923ea96 | ||
|
|
8b310cc05d | ||
|
|
bffec3d8f2 | ||
|
|
2b31a3f112 | ||
|
|
fea579ec85 | ||
|
|
a119c3386b | ||
|
|
52f0623315 | ||
|
|
4ab251f33c | ||
|
|
751c21cd37 | ||
|
|
1fc6942482 | ||
|
|
b162e17583 | ||
|
|
3e83fb9fb2 | ||
|
|
99e823bd0a | ||
|
|
5a309f0e33 | ||
|
|
4ea188b3f9 | ||
|
|
211b0bbfd8 | ||
|
|
57d364a2fc | ||
|
|
928cd92a4f | ||
|
|
ddb40db490 | ||
|
|
3ebb0b0b03 | ||
|
|
f967cd5f59 | ||
|
|
56e24992df | ||
|
|
58d72c4f19 | ||
|
|
12a47fe72e | ||
|
|
c6bc8a6ee6 | ||
|
|
2b691af41e | ||
|
|
fe7dc28b07 | ||
|
|
91652736ae | ||
|
|
f0c65e6cf0 | ||
|
|
43556b5d92 | ||
|
|
0740382851 | ||
|
|
c650513b67 | ||
|
|
5be532c51b | ||
|
|
a3e2e51ac9 | ||
|
|
38af08d29a | ||
|
|
6ff2b2b37f | ||
|
|
2b0bf463b1 | ||
|
|
7724c4dccb | ||
|
|
28b8877edc | ||
|
|
e1e28f09f3 | ||
|
|
cb75857ff6 | ||
|
|
b2b73b5d91 | ||
|
|
65e72fd71e | ||
|
|
4c0117528e | ||
|
|
9103d232a5 | ||
|
|
37a7ad9c44 | ||
|
|
4cc836fa66 | ||
|
|
9f7840c7d6 | ||
|
|
f1061e1217 | ||
|
|
01b326c10f | ||
|
|
bfaeb71cb8 | ||
|
|
f68a5e6ccf | ||
|
|
d5112c9b66 | ||
|
|
0ab9fcdc38 | ||
|
|
148d46b65b | ||
|
|
d1fe97b90f | ||
|
|
0251a80e75 | ||
|
|
a67b824e25 | ||
|
|
7414e98008 | ||
|
|
fca4151f36 | ||
|
|
627c4ac2af | ||
|
|
7d0c6300f6 | ||
|
|
72db0538e1 | ||
|
|
bbdcbee068 | ||
|
|
3111bee143 | ||
|
|
aec34c11f1 | ||
|
|
5b7bb2514e | ||
|
|
73de9257a1 | ||
|
|
1ed8ddd251 | ||
|
|
a1cccef251 | ||
|
|
754673bff8 | ||
|
|
3596001de1 | ||
|
|
243a6a84a6 | ||
|
|
2c42bae09f | ||
|
|
fc2d2db76f | ||
|
|
800d24c92f | ||
|
|
166f704e58 | ||
|
|
1e361fa9ca | ||
|
|
c841bd512c | ||
|
|
7809be8d58 | ||
|
|
57b8fcc7cd | ||
|
|
cff13214ff | ||
|
|
253f44caaa | ||
|
|
25f99c0a61 | ||
|
|
31a25af3d3 | ||
|
|
82b9ea8a09 | ||
|
|
5995a8dace | ||
|
|
07913058fb | ||
|
|
914ec3e102 | ||
|
|
e3b84c9595 | ||
|
|
b3f7cd08e9 | ||
|
|
de3240b861 | ||
|
|
fbd870c343 | ||
|
|
25ef0299cb | ||
|
|
db9a83a83b | ||
|
|
7d4e62f6d3 | ||
|
|
e1e27dfcad | ||
|
|
ea7399decc | ||
|
|
ca4426a962 | ||
|
|
6d3b323f16 | ||
|
|
9e595d388e | ||
|
|
b636baf082 | ||
|
|
b3ceedde76 | ||
|
|
f148f16da7 | ||
|
|
0ec4e54c6c | ||
|
|
8ca36d9e16 | ||
|
|
a7ad68da31 | ||
|
|
1145681cf5 | ||
|
|
b03f14400a | ||
|
|
9aefbd5d34 | ||
|
|
286eac393c | ||
|
|
f74c524fff | ||
|
|
01be9b3504 | ||
|
|
014606294c | ||
|
|
921658f331 | ||
|
|
a0b888b5e6 | ||
|
|
67f1ceaaca | ||
|
|
46b8bb84ed | ||
|
|
b728fea5be | ||
|
|
4a506d429d | ||
|
|
e793082008 | ||
|
|
ea5fc22c7d | ||
|
|
fe0b072dd0 | ||
|
|
21188bca24 | ||
|
|
b22efd1fd9 | ||
|
|
8bca79f561 | ||
|
|
84a92d2a1c | ||
|
|
7256366112 | ||
|
|
dec801a114 | ||
|
|
c3ef99b719 | ||
|
|
bc9eddfcae | ||
|
|
cc8947ac01 | ||
|
|
35c0c4a343 | ||
|
|
9725f8fb04 | ||
|
|
6f88fe11a9 | ||
|
|
669469f149 | ||
|
|
22af69545a | ||
|
|
d3e37918e5 | ||
|
|
f8e4a5932a | ||
|
|
38f551f884 | ||
|
|
18e2609f11 | ||
|
|
fa693aecf8 | ||
|
|
bf0b663549 | ||
|
|
6ca4f06785 | ||
|
|
07d35df538 | ||
|
|
01f4957485 | ||
|
|
3c504bb913 | ||
|
|
152125dce9 | ||
|
|
3b32f5899a | ||
|
|
5f23114cab | ||
|
|
b80023fd41 | ||
|
|
6d0cfbdfde | ||
|
|
06adef1055 | ||
|
|
abdd5f9233 | ||
|
|
13b0ee7454 | ||
|
|
70807a5a9f | ||
|
|
6237e2d419 | ||
|
|
9a92772617 | ||
|
|
b20ad041e9 | ||
|
|
2d385150bd | ||
|
|
15b84dda07 | ||
|
|
4221da71bf | ||
|
|
35aca5b368 | ||
|
|
eacf5ce5ba | ||
|
|
061fe83b2f | ||
|
|
59c0ccef50 | ||
|
|
66cf9b8b99 | ||
|
|
e4b0a5445f | ||
|
|
51d58e7518 | ||
|
|
eb742e228b | ||
|
|
3de914abca | ||
|
|
654c667698 | ||
|
|
2fba443f56 | ||
|
|
a881d49d9d | ||
|
|
fbc5a9fb7f | ||
|
|
b9777a48c5 | ||
|
|
6df18fc8b3 | ||
|
|
11d66ee78d | ||
|
|
a2ab4699ab | ||
|
|
68ae7a869a | ||
|
|
e794fe0d01 | ||
|
|
2268136971 | ||
|
|
e4b7c96e3f | ||
|
|
0ae4de7d1e | ||
|
|
676d9d7e1a | ||
|
|
b32e48a440 | ||
|
|
238f8fb592 | ||
|
|
2a3b2b2b99 | ||
|
|
0daae86fc9 | ||
|
|
e7e24e9979 | ||
|
|
b632e7da38 | ||
|
|
fba87227c7 | ||
|
|
83784fde14 | ||
|
|
c6afe4881b | ||
|
|
0421b5b05f | ||
|
|
58e269b2d6 | ||
|
|
9ec6682777 | ||
|
|
491d9ecfab | ||
|
|
a3786be26a | ||
|
|
4cb0b18389 | ||
|
|
01fc545e09 | ||
|
|
1d6d44f4e9 | ||
|
|
1808ca3c51 | ||
|
|
934e277ccd | ||
|
|
4a494e61e1 | ||
|
|
0346a965a7 | ||
|
|
7dc42f543f | ||
|
|
973f925ad7 | ||
|
|
4b83468eb9 | ||
|
|
028b1413ef | ||
|
|
a06eb8cdac | ||
|
|
e849a55567 | ||
|
|
415ecebe52 | ||
|
|
a7e2173c6f | ||
|
|
f98552f87c | ||
|
|
820279279e | ||
|
|
3afc341c7b | ||
|
|
d43a4a8d9d | ||
|
|
747cdfe7f5 | ||
|
|
5d350dead8 | ||
|
|
e33ac7be10 | ||
|
|
6157c697bc | ||
|
|
f7a6e5ba98 | ||
|
|
943fd1aaec | ||
|
|
4b8cd8f616 | ||
|
|
d1d307d500 | ||
|
|
1965498e20 | ||
|
|
78680a6832 | ||
|
|
53c87558c9 | ||
|
|
f983bb63bb | ||
|
|
067aac1ac7 | ||
|
|
b5129ae0c4 | ||
|
|
b70d5b55d8 | ||
|
|
2e198ec9c2 | ||
|
|
fb27cdf7f7 | ||
|
|
e828cbd2ce | ||
|
|
73e4b4ac08 | ||
|
|
3708d4139a | ||
|
|
72948dbc97 | ||
|
|
da9372fb70 | ||
|
|
3c0732ac2a | ||
|
|
930be72c89 | ||
|
|
77d36b959d | ||
|
|
22542afc73 | ||
|
|
4e5628dd5f | ||
|
|
cc9423e682 | ||
|
|
20f3d9a141 | ||
|
|
c2ac93db55 | ||
|
|
0dddb0be4a | ||
|
|
3408db3475 | ||
|
|
758dbb85ed | ||
|
|
8173a6473e | ||
|
|
f2010edf94 | ||
|
|
4bf73ddd81 | ||
|
|
45b39b0fbd | ||
|
|
095d68fad0 | ||
|
|
cc334e5040 | ||
|
|
2a9d5db179 | ||
|
|
ee5dfbbf59 | ||
|
|
553fde9499 | ||
|
|
ff39c9d09f | ||
|
|
7eb1f61080 | ||
|
|
4dfa4079be | ||
|
|
6cee262225 | ||
|
|
c900a9958d | ||
|
|
0394172cc3 | ||
|
|
a8234ddd4e | ||
|
|
7b7498bde1 | ||
|
|
be2d05a4bc | ||
|
|
688658c306 | ||
|
|
3f9ce4bb99 | ||
|
|
fce313f3ef | ||
|
|
0e5584920b | ||
|
|
fa99be63a0 | ||
|
|
56413aa7a8 | ||
|
|
eb6159767b | ||
|
|
cacd161ed7 | ||
|
|
d768c49980 | ||
|
|
eed4d3ffc8 | ||
|
|
c865add821 | ||
|
|
1d20df00e8 | ||
|
|
aaf49c302f | ||
|
|
36ea6fbff8 | ||
|
|
428e54e0f6 | ||
|
|
ddb1fb4c3a | ||
|
|
57a2f95ff9 | ||
|
|
bbe5769bb0 | ||
|
|
d31570fe2f | ||
|
|
8f75e685cc | ||
|
|
10632178a8 | ||
|
|
d430174f0b | ||
|
|
5f88cd44c7 | ||
|
|
224ffa97c1 | ||
|
|
39c12edc8a | ||
|
|
3ea60ace91 | ||
|
|
d007539a6b | ||
|
|
a2ce4ed725 | ||
|
|
55331d17f7 | ||
|
|
0f34178104 | ||
|
|
eb9c8e66f2 | ||
|
|
258f55a5ff | ||
|
|
0a8a326730 | ||
|
|
1ebb49da0a | ||
|
|
692e6d9b4a | ||
|
|
f2bc6d1844 | ||
|
|
29aa2487b9 | ||
|
|
4f6e37449b | ||
|
|
2f62a6fbad | ||
|
|
0fd614b0a9 | ||
|
|
c30159abc6 | ||
|
|
a9014e31dc | ||
|
|
e4634ce95f | ||
|
|
0849d05469 | ||
|
|
078bcd5e7d | ||
|
|
295297500d | ||
|
|
031f58c522 | ||
|
|
cb4111383f | ||
|
|
482876b63a | ||
|
|
9db3e7f251 | ||
|
|
d2a7b0269c | ||
|
|
81d2d09ba9 | ||
|
|
f531613723 | ||
|
|
802a27177c | ||
|
|
4d48ffed83 | ||
|
|
539e2e09cf | ||
|
|
1ac5c23fd2 | ||
|
|
989bc00082 | ||
|
|
014ac82838 | ||
|
|
a5b310872c | ||
|
|
0dedb85721 | ||
|
|
2f113446c0 | ||
|
|
26abd0f6c4 | ||
|
|
2a056d5b23 | ||
|
|
95d3b4f1eb | ||
|
|
5c7ff09ed6 | ||
|
|
5ca1940629 | ||
|
|
06dee3dedd | ||
|
|
83e523518e | ||
|
|
e16227ca43 | ||
|
|
818bcbd0b5 | ||
|
|
1d9dd719bc | ||
|
|
f79aeac872 | ||
|
|
1739e4490d | ||
|
|
3af3aea534 | ||
|
|
10656a94cb | ||
|
|
1f35b9dc89 | ||
|
|
0eac7f5d04 | ||
|
|
8be5427c33 | ||
|
|
1792090d66 | ||
|
|
6e8b9dea29 | ||
|
|
83976a6c5b | ||
|
|
9b0ff59b56 | ||
|
|
a08c5c710a | ||
|
|
5c6b56614e | ||
|
|
916c7b6852 | ||
|
|
23ee9afb6f | ||
|
|
318a6d83cf | ||
|
|
4f15f42f2c | ||
|
|
81913cf181 | ||
|
|
6ed4838738 | ||
|
|
645a3142a1 | ||
|
|
bb0f68aef0 | ||
|
|
7c41719da5 | ||
|
|
d8414c6ec5 | ||
|
|
a7eb7b3576 | ||
|
|
e3c44983ce | ||
|
|
d3abcc97f6 | ||
|
|
17f1f19012 | ||
|
|
b30e224130 | ||
|
|
066ee35fc3 | ||
|
|
bf16a4d415 | ||
|
|
e90d5f6a6e | ||
|
|
c348c3e917 | ||
|
|
fbc361bcd7 | ||
|
|
1158d5d889 | ||
|
|
5d2deb1a99 | ||
|
|
3092a1b18f | ||
|
|
3f9f2dc37f | ||
|
|
dc0edfb994 | ||
|
|
a3e9bb9847 | ||
|
|
83610461f9 | ||
|
|
d4d571425d | ||
|
|
5737156ae5 | ||
|
|
cbd87efc64 | ||
|
|
caeb8ddae4 | ||
|
|
705f14c413 | ||
|
|
5b7d7b8232 | ||
|
|
c6b5e3016e | ||
|
|
ad4baf87cf | ||
|
|
0a5ad9c76f | ||
|
|
16daefd609 | ||
|
|
c7cb5ebf94 | ||
|
|
251c3e874a | ||
|
|
89fccde765 | ||
|
|
4663d01a51 | ||
|
|
27f53eb129 | ||
|
|
60f8451b34 | ||
|
|
70023b07c1 | ||
|
|
81c83c4364 | ||
|
|
e612fe1624 | ||
|
|
b7f1960a0a | ||
|
|
1886cf97a8 | ||
|
|
014a9f4c31 | ||
|
|
1dc111c0fa | ||
|
|
65edba3321 | ||
|
|
b6a2c575fd | ||
|
|
0024e1e9e7 | ||
|
|
1bc9933a88 | ||
|
|
6e9e739d81 | ||
|
|
a682d2af91 | ||
|
|
b12aec1a4c | ||
|
|
524bcc30e5 | ||
|
|
ba1276cb7d | ||
|
|
69992223bd | ||
|
|
d29957833d | ||
|
|
ac355c3747 | ||
|
|
6c883e2cc1 | ||
|
|
911a207cfd | ||
|
|
9da06c0ec2 | ||
|
|
3ce06585ab | ||
|
|
f3bddc5af4 | ||
|
|
138f5faed8 | ||
|
|
a255a022a7 | ||
|
|
e329a8150a | ||
|
|
e381d76908 | ||
|
|
299f1617d3 | ||
|
|
ce05aa36a1 | ||
|
|
8c1ba8358d | ||
|
|
b0f34c4b55 | ||
|
|
9b98b766b2 | ||
|
|
2d1e3c215f | ||
|
|
d35abc7620 | ||
|
|
2314ca030c | ||
|
|
b23ff17dde | ||
|
|
d3b0670f30 | ||
|
|
28431be67e | ||
|
|
f581095cb7 | ||
|
|
389bae2669 | ||
|
|
3f5141bf22 | ||
|
|
2e8cc7f503 | ||
|
|
0bd8f1f69a | ||
|
|
5af5292808 | ||
|
|
d141d8b5e4 | ||
|
|
86ff947e38 | ||
|
|
b6c5563b0b | ||
|
|
23a7717120 | ||
|
|
5c41e3d045 | ||
|
|
b2f00cc08a | ||
|
|
24b2de5534 | ||
|
|
31ba2f38bd | ||
|
|
5c7e3cbbac | ||
|
|
802e69abaf | ||
|
|
eebf1055e5 | ||
|
|
f754fa2710 | ||
|
|
d19b610109 | ||
|
|
863c510903 | ||
|
|
4e2e2a7a5e | ||
|
|
d6b0c5f003 | ||
|
|
02833b7871 | ||
|
|
68beb8d744 | ||
|
|
db0ab78d62 | ||
|
|
f6ff8a0ca2 | ||
|
|
7bb168679d | ||
|
|
5c86842083 | ||
|
|
f3089e88f2 | ||
|
|
e303f5248a | ||
|
|
23a8042411 | ||
|
|
f08e42856e | ||
|
|
84ee0d560c | ||
|
|
9a72584680 | ||
|
|
c2629fb77a | ||
|
|
3c3ebc92cc | ||
|
|
57d98d6767 | ||
|
|
82dc7c895e | ||
|
|
50aba85ad0 | ||
|
|
a00f052002 | ||
|
|
90fa9c8230 | ||
|
|
47bc459742 | ||
|
|
98610461de | ||
|
|
44f12c6065 | ||
|
|
93c425fdfe | ||
|
|
bd8e748399 | ||
|
|
73faa18cf0 | ||
|
|
1d06df25a9 | ||
|
|
1f31870d43 | ||
|
|
384c12a896 | ||
|
|
107bdb91e3 | ||
|
|
9ced7dbf73 | ||
|
|
8146f65286 | ||
|
|
6fa2d3943c | ||
|
|
82d360e634 | ||
|
|
9f1d9a14fd | ||
|
|
701102d44b | ||
|
|
8a98fb78b6 | ||
|
|
7e7dc68e5a | ||
|
|
501921ef12 | ||
|
|
3e4a4ce78f | ||
|
|
beedc5ab84 | ||
|
|
af5f129b76 | ||
|
|
41f7f82bd0 | ||
|
|
eb5c82a5c3 | ||
|
|
b241018786 | ||
|
|
dc366079ae | ||
|
|
042d385015 | ||
|
|
fb709aeab3 | ||
|
|
2912f0f3f2 | ||
|
|
d5d941e663 | ||
|
|
07cb5f134e | ||
|
|
73aa721f90 | ||
|
|
087ea4e087 | ||
|
|
00d6fc9646 | ||
|
|
76c657db70 | ||
|
|
874e6b0d6c | ||
|
|
febe6997b6 | ||
|
|
ca64affa1a | ||
|
|
43a17c3b36 | ||
|
|
b97e4c56c5 | ||
|
|
162e77793a | ||
|
|
897b6e0221 | ||
|
|
0c274709c0 | ||
|
|
5535a75bef | ||
|
|
5283fbff01 | ||
|
|
b16c105514 | ||
|
|
8138a12381 | ||
|
|
09808e99f9 | ||
|
|
d8d007aa9c | ||
|
|
37d0a0e57b | ||
|
|
886d0f4ff3 | ||
|
|
8fa879c8d8 | ||
|
|
017abee679 | ||
|
|
95d5b03fa2 | ||
|
|
9d589fa5a7 | ||
|
|
bfefbecfd9 | ||
|
|
4d6dfd3e2c | ||
|
|
214b3ddca8 | ||
|
|
02ab1b9a81 | ||
|
|
eae612ce95 | ||
|
|
f37ecfe959 | ||
|
|
1ca71ce401 | ||
|
|
14fb86ec70 | ||
|
|
c7f33e2567 | ||
|
|
d2eeac9b22 | ||
|
|
1a25be374f | ||
|
|
6364bb4385 | ||
|
|
e7dc6b8bbb | ||
|
|
8d79b582ec | ||
|
|
b521ec737d | ||
|
|
681a4b7935 | ||
|
|
42a982a4a5 | ||
|
|
c656ccd701 | ||
|
|
8147e2a511 | ||
|
|
9cafc50012 | ||
|
|
c74a1647ab | ||
|
|
f974609fc5 | ||
|
|
31cde9014a | ||
|
|
e7b4b4992c | ||
|
|
e126a669d8 | ||
|
|
1a5246e940 | ||
|
|
e857a34f52 | ||
|
|
3e37b9ec8e | ||
|
|
24a2d73ed1 | ||
|
|
6692b4a8da | ||
|
|
a5d6670121 | ||
|
|
8b9461e63e | ||
|
|
13633f715d | ||
|
|
d6a34717bf | ||
|
|
6cc7a2c093 | ||
|
|
4558893c37 | ||
|
|
a59e115622 | ||
|
|
452afcdc68 | ||
|
|
5e1886a312 | ||
|
|
47a2cce03d | ||
|
|
b6661825ce | ||
|
|
1fdc742606 | ||
|
|
a9759c128d | ||
|
|
2dfdbd240e | ||
|
|
ca0d7345a1 | ||
|
|
f5adb8ace7 | ||
|
|
20b196f5e0 | ||
|
|
f85e7c8f40 | ||
|
|
9e83c55a70 | ||
|
|
aea5e3c9ff | ||
|
|
7c662db95d | ||
|
|
48749b12d8 | ||
|
|
892673c405 | ||
|
|
5ad0081e76 | ||
|
|
e1483c3f65 | ||
|
|
100c64a20c | ||
|
|
90d1fff4e2 | ||
|
|
374ad655ae | ||
|
|
9e3a7cf06c | ||
|
|
e0e9cae2eb | ||
|
|
0f87d37137 | ||
|
|
132b832c52 | ||
|
|
826e125c80 | ||
|
|
40d482d039 | ||
|
|
084ff6d455 | ||
|
|
73df20dc75 | ||
|
|
a964e3bc7d | ||
|
|
bdeb818718 | ||
|
|
3292cea786 | ||
|
|
b395285a68 | ||
|
|
d3d3f3e6fa | ||
|
|
22e255747a | ||
|
|
497221b1ab | ||
|
|
bdd6569ef7 | ||
|
|
9ce384b7e8 | ||
|
|
6250a2b746 | ||
|
|
dceb3606b1 | ||
|
|
977efd15e5 | ||
|
|
53772e9c32 | ||
|
|
480c2cb44b | ||
|
|
dacf36b981 | ||
|
|
ed87a8924f | ||
|
|
e20150e6ca | ||
|
|
ef2ad7a504 | ||
|
|
2fea813c3d | ||
|
|
57e8914fa6 | ||
|
|
989e4c3039 | ||
|
|
f52a3c1389 | ||
|
|
15f880eba4 | ||
|
|
22140f7db9 | ||
|
|
e1dbd98c40 | ||
|
|
6fb48c8e6f | ||
|
|
a26a15d485 | ||
|
|
f56bb419d2 | ||
|
|
cabdb4f8d5 | ||
|
|
99e432cae7 | ||
|
|
3714884660 | ||
|
|
8d355f8255 | ||
|
|
184a1c5281 | ||
|
|
cacc11e3a2 | ||
|
|
b48a275235 | ||
|
|
761b224f7c | ||
|
|
081578b168 | ||
|
|
506ac3e4ac | ||
|
|
385572ec64 | ||
|
|
462e53d6c8 | ||
|
|
40493497de | ||
|
|
0a24dc4912 | ||
|
|
f8d387c2c0 | ||
|
|
07c0fbdcb3 | ||
|
|
6dd72aa6f7 | ||
|
|
c737493620 | ||
|
|
92cc4d6f40 | ||
|
|
c2ac7fde67 | ||
|
|
9184a8b046 | ||
|
|
2cde3f31a0 | ||
|
|
d49b1cacd3 | ||
|
|
16a355a2b7 | ||
|
|
ca1aac2ed6 | ||
|
|
c26d6d3696 | ||
|
|
f72ddf9294 | ||
|
|
da9f1d90f4 | ||
|
|
f33d383726 | ||
|
|
ef6f649579 | ||
|
|
5773b08cf8 | ||
|
|
d7d0fbcae4 | ||
|
|
30201bac38 | ||
|
|
e441332f40 | ||
|
|
5b33ada576 | ||
|
|
c2bee14d34 | ||
|
|
568837d06a | ||
|
|
5c9bfc147c | ||
|
|
e2480da8c6 | ||
|
|
8cc885c316 | ||
|
|
c1aa3319a1 | ||
|
|
30f516dd7d | ||
|
|
f4e8051e9e | ||
|
|
946843ff59 | ||
|
|
79856d7ed2 | ||
|
|
0f0d786cbd | ||
|
|
7a26254844 | ||
|
|
56b89d5a44 | ||
|
|
704efe05d2 | ||
|
|
66131c807f | ||
|
|
f4406783e2 | ||
|
|
5f6a1f5ae6 | ||
|
|
3d6084f0c0 | ||
|
|
3722ac1617 | ||
|
|
eeaad512a9 | ||
|
|
6925415501 | ||
|
|
5458c433b6 | ||
|
|
35f441cdde | ||
|
|
c39103a307 | ||
|
|
ef442025fa | ||
|
|
5c55beed7b | ||
|
|
4c4cf87036 | ||
|
|
e80f5f372f | ||
|
|
b8545cbbd1 | ||
|
|
e0688307f3 | ||
|
|
6341c7ab25 | ||
|
|
ce7faa9fe7 | ||
|
|
a2bcb1a627 | ||
|
|
d9c035381e | ||
|
|
0c39061c98 | ||
|
|
796cdb52cc | ||
|
|
2ebaa0fb5f | ||
|
|
9c191cb025 | ||
|
|
ccddf052ec | ||
|
|
611ed0e348 | ||
|
|
cc5a5ef25c | ||
|
|
0d7f040256 | ||
|
|
da08a0fbe0 | ||
|
|
dd960cc5b5 | ||
|
|
acb9ed910d | ||
|
|
210695d377 | ||
|
|
22b93a1167 | ||
|
|
a4f77dd840 | ||
|
|
e3a51b235a | ||
|
|
ad0af86a7b | ||
|
|
14958bdd23 | ||
|
|
a989d401d9 | ||
|
|
a59d892d0b | ||
|
|
31608bb706 | ||
|
|
78bb3695e6 | ||
|
|
a0f1d97c2b | ||
|
|
53f781f527 | ||
|
|
cb4e0e03f8 | ||
|
|
c36e2481bd | ||
|
|
8d1ff28589 | ||
|
|
e1c6a4e5a3 | ||
|
|
2fdbb6af41 | ||
|
|
dffdc6a20b | ||
|
|
18cf9df86c | ||
|
|
f101a303bd | ||
|
|
db7aa7c490 | ||
|
|
4bc203dd1f | ||
|
|
55934c12a3 | ||
|
|
e062170b1f | ||
|
|
7b780a3201 | ||
|
|
b7f16672ff | ||
|
|
b9f9092bbe | ||
|
|
baaba4adf9 | ||
|
|
334c454eec | ||
|
|
f80d8ebf5b | ||
|
|
00ac4bea63 | ||
|
|
11aabac227 | ||
|
|
3681247dc1 | ||
|
|
24aba14541 | ||
|
|
85c915d35b | ||
|
|
bb0d6f580d | ||
|
|
068d586757 | ||
|
|
789800a68f | ||
|
|
b422d1d1a4 | ||
|
|
99764b930e | ||
|
|
92424f0d49 | ||
|
|
70bb6f61d4 | ||
|
|
2dc8553dff | ||
|
|
5c561e3d77 | ||
|
|
248f00f55b | ||
|
|
97fa7052fe | ||
|
|
7c7e053e1f | ||
|
|
f84ed1fafb | ||
|
|
9c14531542 | ||
|
|
f25830714c | ||
|
|
077ec2b879 | ||
|
|
1cb8e455fb | ||
|
|
7ecd132610 | ||
|
|
e551dbfea9 | ||
|
|
e974ac1750 | ||
|
|
ba757809d0 | ||
|
|
debb3534c7 | ||
|
|
48438b2556 | ||
|
|
8cc275ccd1 | ||
|
|
8cff01e3d8 | ||
|
|
b765094a29 | ||
|
|
fa0d77f267 | ||
|
|
d4e3891ab6 | ||
|
|
9479b5abe2 | ||
|
|
417d90f411 | ||
|
|
e47e439954 | ||
|
|
a914526949 | ||
|
|
d9de16e888 | ||
|
|
e9d88d3173 | ||
|
|
4b7bd7bcb6 | ||
|
|
57656e81e4 | ||
|
|
bc9b9f0d12 | ||
|
|
185363056a | ||
|
|
788a7ca3a3 | ||
|
|
7979f5b3d4 | ||
|
|
c01f111e34 | ||
|
|
81e6fb062f | ||
|
|
3aa7c3b106 | ||
|
|
abd30860e0 | ||
|
|
ff55421f52 | ||
|
|
c14c46b998 | ||
|
|
8ef8900ca2 | ||
|
|
b8ff0da693 | ||
|
|
3a01bcf308 | ||
|
|
ccbb38798d | ||
|
|
1cccd100bb | ||
|
|
418dadf0b9 | ||
|
|
f94eea1299 | ||
|
|
de04fa3eac | ||
|
|
6ef1721b61 | ||
|
|
cd31d92713 | ||
|
|
edafb52302 | ||
|
|
a89c4ef2dd | ||
|
|
8ed4de1dda | ||
|
|
b417c9f812 | ||
|
|
e72f85079f | ||
|
|
698814d17f | ||
|
|
519172b6ec | ||
|
|
f50f43af02 | ||
|
|
09ea07b750 | ||
|
|
697638db2b | ||
|
|
a7005be82c | ||
|
|
d94d8ccfd3 | ||
|
|
1d53e7f454 | ||
|
|
b692fb4a54 | ||
|
|
faab627771 | ||
|
|
140a3a6327 | ||
|
|
5b544e9581 | ||
|
|
7a70ab8942 | ||
|
|
6e53172739 | ||
|
|
32fb7ad9bb | ||
|
|
6ce1c9805e | ||
|
|
a227543da5 | ||
|
|
b90856157b | ||
|
|
b2e8428550 | ||
|
|
9f9f438fae | ||
|
|
a0d485f79d | ||
|
|
f9062d031c | ||
|
|
78b5f9651f | ||
|
|
0fca9a0c6e | ||
|
|
52a6dfb42c | ||
|
|
3489ac7852 | ||
|
|
4c36d65cbe | ||
|
|
e11798253a | ||
|
|
cdec06ee5a | ||
|
|
4870204b4f | ||
|
|
698c494068 | ||
|
|
0b949ee3bb | ||
|
|
d3bc1f938f | ||
|
|
105e4437ff | ||
|
|
d8f69866cc | ||
|
|
16592ce514 | ||
|
|
b11a662d81 | ||
|
|
8c3f40db5b | ||
|
|
b156d1bbf4 | ||
|
|
18597f8e1d | ||
|
|
7822f912aa | ||
|
|
4606c41577 | ||
|
|
357e95335a | ||
|
|
5077325044 | ||
|
|
eca870774f | ||
|
|
c2caf4d7a6 | ||
|
|
7d07812fa6 | ||
|
|
80a00bd596 | ||
|
|
060d198b8e | ||
|
|
5e2a0bd298 | ||
|
|
a33c15b3ad | ||
|
|
83f7d2ce91 | ||
|
|
bff119834a | ||
|
|
5d5542169b | ||
|
|
683ce7acc6 | ||
|
|
540bcb9fd0 | ||
|
|
4fca0c89b4 | ||
|
|
1a2a6e5fab | ||
|
|
08be86fbe1 | ||
|
|
d45fd76dcd | ||
|
|
8da52af6a2 | ||
|
|
24df9e30a3 | ||
|
|
4c2d710169 | ||
|
|
3a6ca90fcb | ||
|
|
0ed173b96e | ||
|
|
80a5985344 | ||
|
|
c57273e682 | ||
|
|
f4529dde99 | ||
|
|
809e5748b6 | ||
|
|
f3a52cee6b | ||
|
|
1b00993cb9 | ||
|
|
b303492759 | ||
|
|
cab2d49532 | ||
|
|
891ff6d80a | ||
|
|
5571095537 | ||
|
|
e90f82afe3 | ||
|
|
ebe1998b19 | ||
|
|
60503734ac | ||
|
|
ec39859093 | ||
|
|
3854515521 | ||
|
|
1a48f825d1 | ||
|
|
7d1092db04 | ||
|
|
d561b9cb2d | ||
|
|
7f5117b7cc | ||
|
|
4c50853044 | ||
|
|
a22e84204d | ||
|
|
16b7d09d63 | ||
|
|
d93bd635b4 | ||
|
|
9eee27544d | ||
|
|
d888f1b331 | ||
|
|
c870a9efa7 | ||
|
|
540e9f2735 | ||
|
|
44da14755d | ||
|
|
0cfddf7d72 | ||
|
|
70bd235e9e | ||
|
|
ffbedf4217 | ||
|
|
fbca73a83b | ||
|
|
f60dd57092 | ||
|
|
9f16e3fff7 | ||
|
|
d6a0c84e0b | ||
|
|
df85a6492e | ||
|
|
c94801a747 | ||
|
|
37b4f9454c | ||
|
|
aca249727a | ||
|
|
604e926924 | ||
|
|
5f6d73a415 | ||
|
|
bb0cfcf033 | ||
|
|
a3f2e8aa51 | ||
|
|
87addebf6a | ||
|
|
22f3af96b9 | ||
|
|
6b51234f23 | ||
|
|
ef9b37447b | ||
|
|
086e498388 | ||
|
|
0f91d3d8df | ||
|
|
158d4dd515 | ||
|
|
91ee4c825b | ||
|
|
d4eaf21052 | ||
|
|
edbefbd8fa | ||
|
|
4776ec49df | ||
|
|
a1ad4de470 | ||
|
|
e9db3fab3a | ||
|
|
b15042dccb | ||
|
|
570c30337b | ||
|
|
0ef2615af2 | ||
|
|
111bfc58e9 | ||
|
|
c6540a8950 | ||
|
|
9f8dabfc8d | ||
|
|
121d367205 | ||
|
|
0c6937edae | ||
|
|
4f76d917f8 | ||
|
|
d34263d850 | ||
|
|
be8805be1e | ||
|
|
24a2febd59 | ||
|
|
6db66896bd | ||
|
|
466e9e212f | ||
|
|
43350c484e | ||
|
|
9cadb681d4 | ||
|
|
a43309df9f | ||
|
|
d5587bf6f6 | ||
|
|
eddda10c23 | ||
|
|
f6ae5bd191 | ||
|
|
d67515d575 | ||
|
|
6aba583c3e | ||
|
|
2f3c2e952e | ||
|
|
24c6e635a8 | ||
|
|
608519363d | ||
|
|
6f6c5b7459 | ||
|
|
4852f2817c | ||
|
|
340add5c40 | ||
|
|
c4822b713f | ||
|
|
44f288742b | ||
|
|
4fb7c98455 | ||
|
|
ad772edc39 | ||
|
|
c5bc338ae3 | ||
|
|
12ff82e913 | ||
|
|
0d4a24ef8e | ||
|
|
3413c4a463 | ||
|
|
6fe411ea9e | ||
|
|
b25fa46ac2 | ||
|
|
9f4638f42c | ||
|
|
c2acdff7d4 | ||
|
|
ff9be848c7 | ||
|
|
0128014d44 | ||
|
|
19868041e1 | ||
|
|
20c00936a9 | ||
|
|
6f2b437be3 | ||
|
|
4268817c51 | ||
|
|
8db3e79919 | ||
|
|
1adb1be404 | ||
|
|
1954f3f74c | ||
|
|
d76003256f | ||
|
|
c24dbbd9ce | ||
|
|
9fdc22843b | ||
|
|
7018357e47 | ||
|
|
84d58e7619 | ||
|
|
199a825494 | ||
|
|
48c709eb58 | ||
|
|
ad510eb768 | ||
|
|
4794ef653c | ||
|
|
b14e55f729 | ||
|
|
c6e861083b | ||
|
|
cd005a9ce6 | ||
|
|
0983167510 | ||
|
|
7c60998459 | ||
|
|
5028779528 | ||
|
|
6e35bcd183 | ||
|
|
4ef0c55dda | ||
|
|
09e0ea1932 | ||
|
|
733341d62b | ||
|
|
3069202354 | ||
|
|
ac654423aa | ||
|
|
0c64b64ff8 | ||
|
|
c442e47f93 | ||
|
|
83ef8bcd0c | ||
|
|
ebf1bd1129 | ||
|
|
25e33b6aab | ||
|
|
c1162960cc | ||
|
|
48da703970 | ||
|
|
c658d22925 | ||
|
|
d66c16674c | ||
|
|
d1d34b339a | ||
|
|
4179f8b7f9 | ||
|
|
d0915b82f4 | ||
|
|
cf22468503 | ||
|
|
2266b8618e | ||
|
|
d616a7d351 | ||
|
|
2d66dc9a57 | ||
|
|
d6a5212ef3 | ||
|
|
002eb08b20 | ||
|
|
c6d85b2b92 | ||
|
|
4b576bd23b | ||
|
|
74c7f5f617 | ||
|
|
5cbdc58d10 | ||
|
|
376c483dd4 | ||
|
|
fd3c3775e4 | ||
|
|
e2dab8a398 | ||
|
|
510fe7261b | ||
|
|
40fcabd644 | ||
|
|
88c8bbd940 | ||
|
|
38f9ba81cd | ||
|
|
30c1cb3d50 | ||
|
|
489d429644 | ||
|
|
7dedcf6526 | ||
|
|
b3df50082a | ||
|
|
bf23086687 | ||
|
|
a0097f9baa | ||
|
|
3251543d6e | ||
|
|
1d6e6815cd | ||
|
|
fd57ab0f3d | ||
|
|
6a6796160a | ||
|
|
1b159786f0 | ||
|
|
ab5666a7ea | ||
|
|
51d8f289fa | ||
|
|
b921225487 | ||
|
|
2fd88c4f60 | ||
|
|
0a1e9c86c4 | ||
|
|
2140e11369 | ||
|
|
1b5979ba10 | ||
|
|
95ddb84406 | ||
|
|
8758206ba3 | ||
|
|
3d2b3179dd | ||
|
|
1ea39e562a | ||
|
|
70a5f1d41e | ||
|
|
ffe76b0556 | ||
|
|
7551a7d126 | ||
|
|
2301de667b | ||
|
|
e22ec91101 | ||
|
|
7b293a42cd | ||
|
|
983963d4e4 | ||
|
|
611dbcd6cd | ||
|
|
39b4f50c65 | ||
|
|
e3065d0e6c | ||
|
|
04fac96d78 | ||
|
|
4b0e648cb8 | ||
|
|
489f3ce480 | ||
|
|
c480f6fd1e | ||
|
|
4224d838a8 | ||
|
|
c8f2a934b1 | ||
|
|
910baaecb2 | ||
|
|
d2a6773c26 | ||
|
|
9a0df75a91 | ||
|
|
ed5b7a508a | ||
|
|
4d7f6c14e6 | ||
|
|
2314b57bce | ||
|
|
3edd33be99 | ||
|
|
fe1d0579ec | ||
|
|
d02e2a47fb | ||
|
|
03b6e1197e | ||
|
|
42bcfd9fa1 | ||
|
|
171e69bd30 | ||
|
|
23996fdcdc | ||
|
|
f2bbd301f2 | ||
|
|
2740e69a38 | ||
|
|
d9e3f8a2a7 | ||
|
|
05c318e97b | ||
|
|
d7be6b1bec | ||
|
|
1e08aa455b | ||
|
|
63b9c38435 | ||
|
|
fbd957bf33 | ||
|
|
dc2d33ceba | ||
|
|
fd44bcd8f6 | ||
|
|
d9707068f9 | ||
|
|
07c6ce8966 | ||
|
|
a06b38f534 | ||
|
|
ee68aea773 | ||
|
|
a8e902c579 | ||
|
|
22328c4b13 | ||
|
|
dce81d4266 | ||
|
|
b470337e0a | ||
|
|
23a57b6226 | ||
|
|
ccee2ba025 | ||
|
|
70c3e55dba | ||
|
|
20b347b81f | ||
|
|
0fd89ec358 | ||
|
|
e1f637dd4f | ||
|
|
d446d14237 | ||
|
|
a1d30ddee3 | ||
|
|
7d2e8adf59 | ||
|
|
de2ee4db1b | ||
|
|
0814ed381f | ||
|
|
869c5fe718 | ||
|
|
ae501d6ae1 | ||
|
|
004d499ce3 | ||
|
|
2a59236441 | ||
|
|
d74dd7f3ef | ||
|
|
37ad86fa1c | ||
|
|
5f21d7d440 | ||
|
|
12a64bd3d6 | ||
|
|
d71e5b909b | ||
|
|
a1472dfd0f | ||
|
|
52c08675e6 | ||
|
|
b9e4ee9b92 | ||
|
|
74a04ded80 | ||
|
|
f3b3db9854 | ||
|
|
af2289e397 | ||
|
|
e7cb345cec | ||
|
|
566f33b8b2 | ||
|
|
f83dbf19b1 | ||
|
|
5d00f0bdce | ||
|
|
de3e0458a6 | ||
|
|
738fc2a216 | ||
|
|
fe03570b5a | ||
|
|
94298741b6 | ||
|
|
dd7967dede | ||
|
|
26c308cc19 | ||
|
|
e62b545d1c | ||
|
|
55c9bf27ba | ||
|
|
36d4ee0e67 | ||
|
|
2f7ec4ceee | ||
|
|
c9af239516 | ||
|
|
d8c309ec35 | ||
|
|
d5515ebcb0 | ||
|
|
efba06dc2d | ||
|
|
41ba9beeee | ||
|
|
c3969e85ef | ||
|
|
7a790aa87d | ||
|
|
5692e6d419 | ||
|
|
c1be785be7 | ||
|
|
07b467cd38 | ||
|
|
dfbed32287 | ||
|
|
26e38ad5a1 | ||
|
|
f0eb7e00c6 | ||
|
|
3c171aaf0e | ||
|
|
bba583422d | ||
|
|
d8c64fbce1 | ||
|
|
a3fecbc730 | ||
|
|
2768041d7c | ||
|
|
072f836a58 | ||
|
|
e21d084fdd | ||
|
|
1075144b00 | ||
|
|
92900e78d6 | ||
|
|
d420fe3a0f | ||
|
|
17921823e0 | ||
|
|
fa7e3d4430 | ||
|
|
6923e0e288 | ||
|
|
1e30e4254a | ||
|
|
2cc6ef662a | ||
|
|
cc253b069a | ||
|
|
4c7943b9bb | ||
|
|
a04bdb31f0 | ||
|
|
f2233cee2d | ||
|
|
2661e87d83 | ||
|
|
a1c018193a | ||
|
|
f822865413 | ||
|
|
660d06768b | ||
|
|
4167c8c11c | ||
|
|
204ab89921 | ||
|
|
fb7a59c6d9 | ||
|
|
8b24847e05 | ||
|
|
ec1326f950 | ||
|
|
91a9bb6d95 | ||
|
|
2529ec0520 | ||
|
|
5edfe3729b | ||
|
|
378d776962 | ||
|
|
eac65cdabb | ||
|
|
27df2398f0 | ||
|
|
d9db7edc72 | ||
|
|
83ae9f6435 | ||
|
|
ee92c30ff4 | ||
|
|
9496e9aa22 | ||
|
|
a2af30a494 | ||
|
|
6a710b03e4 | ||
|
|
d9b39c9270 | ||
|
|
f03bca6df3 | ||
|
|
e239140db7 | ||
|
|
2776155794 | ||
|
|
4b2c73452c | ||
|
|
7a1193c698 | ||
|
|
d2187f44e0 | ||
|
|
a0f0fc8723 | ||
|
|
bc67e64e79 | ||
|
|
7905f37462 | ||
|
|
bcf9249dc7 | ||
|
|
6b9d162981 | ||
|
|
769a3debe7 | ||
|
|
9e22b3e693 | ||
|
|
74486d6223 | ||
|
|
c6090033cc | ||
|
|
56b4657c3f | ||
|
|
3a5ee90bb5 | ||
|
|
3c0cc72c55 | ||
|
|
94ded75756 | ||
|
|
3eb531b6b5 | ||
|
|
d879d6d42e | ||
|
|
adf18108c3 | ||
|
|
1c882508ec | ||
|
|
f8e1c62a83 | ||
|
|
86d2186f89 | ||
|
|
68f72d69cc | ||
|
|
37e367eb79 | ||
|
|
7e960a3966 | ||
|
|
20ca754629 | ||
|
|
3980e6d358 | ||
|
|
01c5dcb6b7 | ||
|
|
f09858a1ed | ||
|
|
5323167b1e | ||
|
|
65b921ecd9 | ||
|
|
32579df73b | ||
|
|
5fd8c50dde | ||
|
|
df93cabf22 | ||
|
|
5796bde25d | ||
|
|
82f311b695 | ||
|
|
334dc7731d | ||
|
|
d7d953d40a | ||
|
|
4d24097092 | ||
|
|
de0c3eb46a | ||
|
|
3d30aba0e9 | ||
|
|
64d578f23d | ||
|
|
c1acf6c05f | ||
|
|
90dd0b2b9a | ||
|
|
21d91b0d91 | ||
|
|
8b91852284 | ||
|
|
ba1939f4ca | ||
|
|
4a49ba340c | ||
|
|
17e16d18a9 | ||
|
|
0128168c51 | ||
|
|
1445b95af8 | ||
|
|
20991a3465 | ||
|
|
8750894bb3 | ||
|
|
178b656d08 | ||
|
|
bcd1774370 | ||
|
|
dc82d0ed57 | ||
|
|
ce93a63cb8 | ||
|
|
98b5bae096 | ||
|
|
e77dcac58c | ||
|
|
ee35e045fa | ||
|
|
0bac9c3f89 | ||
|
|
4f87db79b8 | ||
|
|
59329d36a9 | ||
|
|
1ab0724347 | ||
|
|
6b0109e8dd | ||
|
|
048f09abc3 | ||
|
|
c94282783d | ||
|
|
c88b054c5c | ||
|
|
069555e3d4 | ||
|
|
32ac7a5f38 | ||
|
|
9238f56b72 | ||
|
|
09a797b637 | ||
|
|
1f0468add1 | ||
|
|
8c1ef97624 | ||
|
|
c8def6677d | ||
|
|
6f286055c5 | ||
|
|
fcd30c5320 | ||
|
|
46976d10ff | ||
|
|
009088c3fe | ||
|
|
4a87df5afe | ||
|
|
bb8fc67c95 | ||
|
|
789345291b | ||
|
|
e42eb87177 | ||
|
|
40a2c18970 | ||
|
|
343d1a2ff2 | ||
|
|
1d3d868712 | ||
|
|
609c2700bf | ||
|
|
593e5afbdf | ||
|
|
1d7d45c4cd | ||
|
|
cc9d89b7ac | ||
|
|
0d1b3700d3 | ||
|
|
ed77e2eec6 | ||
|
|
2af0d0845d | ||
|
|
a891f3e53b | ||
|
|
1430e77989 | ||
|
|
bdb4a0ea1d | ||
|
|
cba62e7b8e | ||
|
|
774dec5d17 | ||
|
|
c4e9f9d035 | ||
|
|
eb38fb85ac | ||
|
|
0bf26642d2 | ||
|
|
751017858e | ||
|
|
700cc89963 | ||
|
|
e1b6238564 | ||
|
|
dac5a3c804 | ||
|
|
44ca3bef2c | ||
|
|
257b73d589 | ||
|
|
b7f9cb2820 | ||
|
|
e5d981faf9 | ||
|
|
fb6e5ea378 | ||
|
|
790059243b | ||
|
|
55a5c5d896 | ||
|
|
d23119e24e | ||
|
|
3332e0f915 | ||
|
|
c79d8dfea4 | ||
|
|
990f2a3074 | ||
|
|
f05d5678d4 | ||
|
|
4055778468 | ||
|
|
39bfcb15e1 | ||
|
|
bcb6894496 | ||
|
|
12bfa5c89f | ||
|
|
89d645539c | ||
|
|
69f648c513 | ||
|
|
9754393c49 | ||
|
|
6037947b1d | ||
|
|
565a6d7032 | ||
|
|
20350e5fe6 | ||
|
|
b4b563dda6 | ||
|
|
2921239833 | ||
|
|
7efb2fc47a | ||
|
|
b735f30cf6 | ||
|
|
a9553ff850 | ||
|
|
98380c442a | ||
|
|
bae90cb4a9 | ||
|
|
c687b07cd0 | ||
|
|
8af7388c93 | ||
|
|
d359ab6057 | ||
|
|
f81f20431d | ||
|
|
ece172c759 | ||
|
|
8c8f677f7a | ||
|
|
cc04a7b19f | ||
|
|
8b92891813 | ||
|
|
aacaac117c | ||
|
|
b899dd7325 | ||
|
|
2412dc9627 | ||
|
|
365a9ccbda | ||
|
|
ec9b2fb2c7 | ||
|
|
fea198551e | ||
|
|
2b1aa99f4c | ||
|
|
b8a8528e84 | ||
|
|
d17d0148d8 | ||
|
|
09ebb546a4 | ||
|
|
d8919b020d | ||
|
|
c3f84c22f0 | ||
|
|
afb787f0d7 | ||
|
|
a55b7c3fd3 | ||
|
|
d3a8ccbeac | ||
|
|
208fd2afa5 | ||
|
|
89e1c206e6 | ||
|
|
b290539514 | ||
|
|
1025a8e7dc | ||
|
|
fec727c8d8 | ||
|
|
d72ff7334e | ||
|
|
e94bd6a271 | ||
|
|
7a141175b4 | ||
|
|
99f97b07eb | ||
|
|
3ad583b8d0 | ||
|
|
e8cb754c27 | ||
|
|
3273ed689f | ||
|
|
c72ba277b6 | ||
|
|
1ae3504b30 | ||
|
|
96179de06a | ||
|
|
80e6936cdc | ||
|
|
f406f1eb9f | ||
|
|
f2999b7272 | ||
|
|
6329b5635c | ||
|
|
3cd7dc4085 | ||
|
|
338c04ec91 | ||
|
|
16cc82d920 | ||
|
|
bfb5874354 | ||
|
|
a94fcec245 | ||
|
|
35d84ccb8d | ||
|
|
d3c6c72388 | ||
|
|
b9ba5ff6e1 |
14
.clang-format
Normal file
14
.clang-format
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
Language: Cpp
|
||||
Standard: c++17
|
||||
BasedOnStyle: Google
|
||||
ColumnLimit: 120
|
||||
NamespaceIndentation: Inner
|
||||
AlignAfterOpenBracket: DontAlign
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
BreakConstructorInitializersBeforeComma: true
|
||||
DerivePointerAlignment: false
|
||||
PointerAlignment: Left
|
||||
SpacesBeforeTrailingComments: 1
|
||||
---
|
||||
48
.clang-tidy
Normal file
48
.clang-tidy
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
Checks: '
|
||||
-*,
|
||||
performance-*,
|
||||
readability-*,
|
||||
clang-analyzer-alpha.core*,
|
||||
clang-analyzer-alpha.security*,
|
||||
clang-analyzer-alpha.unix.cstring*,
|
||||
clang-analyzer-core.uninitialized*,
|
||||
clang-analyzer-cplusplus.*,
|
||||
clang-analyzer-nullability*,
|
||||
clang-analyzer-unix*,
|
||||
cppcoreguidelines*,
|
||||
modernize-use-*,
|
||||
modernize-*,
|
||||
-modernize-raw-string-literal,
|
||||
-modernize-use-bool-literals,
|
||||
-modernize-use-trailing-return-type,
|
||||
-readability-identifier-length,
|
||||
-readability-implicit-bool-cast,
|
||||
-readability-else-after-return,
|
||||
-readability-named-parameter,
|
||||
-readability-implicit-bool-conversion,
|
||||
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
|
||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||
-cppcoreguidelines-pro-type-vararg,
|
||||
-cppcoreguidelines-pro-type-reinterpret-cast,
|
||||
-cppcoreguidelines-pro-type-union-access,
|
||||
-cppcoreguidelines-pro-type-cstyle-cast,
|
||||
-cppcoreguidelines-pro-bounds-constant-array-index,
|
||||
-cppcoreguidelines-owning-memory,
|
||||
'
|
||||
|
||||
CheckOptions:
|
||||
cppcoreguidelines-avoid-do-while.IgnoreMacros: true
|
||||
modernize-loop-convert.NamingStyle: lower_case
|
||||
readability-identifier-naming.ClassCase: lower_case
|
||||
readability-identifier-naming.ClassConstantCase: UPPER_CASE
|
||||
readability-identifier-naming.ClassMethodCase: lower_case
|
||||
readability-identifier-naming.MemberCase: lower_case
|
||||
readability-identifier-naming.ProtectedMemberPrefix: 'm_'
|
||||
readability-identifier-naming.PrivateMemberPrefix: 'm_'
|
||||
readability-simplify-boolean-expr.SimplifyDeMorgan: false
|
||||
|
||||
HeaderFilterRegex: ''
|
||||
WarningsAsErrors: ''
|
||||
AnalyzeTemporaryDtors: false
|
||||
...
|
||||
15
.editorconfig
Normal file
15
.editorconfig
Normal file
@@ -0,0 +1,15 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
charset = utf-8
|
||||
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
||||
indent_size = 2
|
||||
5
.exrc
5
.exrc
@@ -1,5 +0,0 @@
|
||||
let &path.="include,src,"
|
||||
let g:alternateSearchPath = 'sfr:../src,sfr:../../src/modules,sfr:../../src/utils,sfr:../../src/interfaces,sfr:../../src/services,sfr:../../src/drawtypes,sfr:../include,sfr:../../include/modules,sfr:../../include/interfaces,sfr:../../include/utils,sfr:../../include/services,sfr:../../include/drawtypes,'
|
||||
let g:alternateExtensions_cpp = 'hpp'
|
||||
" let tag_path = expand("%:p:h") . "/tags"
|
||||
set tags+=/home/jaagr/var/github/jaagr/lemonbuddy/tags
|
||||
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
github: polybar
|
||||
open_collective: polybar
|
||||
112
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
112
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
name: 🐞 Bug Report
|
||||
description: Create a report for something that misbehaves
|
||||
title: "[Bug]: "
|
||||
labels: ["bug", "needs confirmation"]
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Checklist
|
||||
description: Please carefully go through this checklist and check each option.
|
||||
options:
|
||||
- label: I have read the appropriate section in the [contributing guidelines](https://github.com/polybar/polybar/blob/master/CONTRIBUTING.md)
|
||||
required: true
|
||||
- label: I believe this issue is a problem with polybar itself and not a misconfiguration on my part
|
||||
required: true
|
||||
- label: I have searched for other open and closed [issues](https://github.com/polybar/polybar/issues?q=is%3Aissue) that may have already reported this problem
|
||||
required: true
|
||||
- label: I have checked the [known issues](https://github.com/polybar/polybar/wiki/Known-Issues) page for this problem.
|
||||
required: true
|
||||
- label: I have followed the [debugging guide](https://github.com/polybar/polybar/wiki/Debugging-your-Config) to narrow down the problem to a minimal config.
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reproduce
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Any steps to take and commands to run to reproduce this issue.
|
||||
placeholder: |
|
||||
1. `polybar -c ... bar`
|
||||
2. ...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: config
|
||||
attributes:
|
||||
label: Minimal config
|
||||
description: A minimal but **complete** config with which the problem occurs.
|
||||
render: dosini
|
||||
placeholder: |
|
||||
[bar/example]
|
||||
...
|
||||
|
||||
[module/...]
|
||||
...
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Polybar log
|
||||
description: Post everything polybar prints to the terminal when you run it and the issue occurs. If possible, run polybar with a higher log level (e.g. `trace` or `info`).
|
||||
render: text
|
||||
placeholder: |
|
||||
notice: Parsing config file: ...
|
||||
...
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: A clear and concise description of what you expected to happen
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: actual
|
||||
attributes:
|
||||
label: Actual behavior
|
||||
description: What actually happens
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: wm
|
||||
attributes:
|
||||
label: Window Manager and Version
|
||||
placeholder: ex. i3-gaps 4.19.1
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: distro
|
||||
attributes:
|
||||
label: Linux Distribution
|
||||
placeholder: ex. Ubuntu 21.04
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: version
|
||||
attributes:
|
||||
label: Polybar version
|
||||
description: Output of `polybar -vvv`
|
||||
render: text
|
||||
placeholder: |
|
||||
polybar 3.5.7
|
||||
|
||||
Features: +alsa +curl +i3 +mpd +network(libnl) +pulseaudio +xkeyboard
|
||||
|
||||
X extensions: +randr (+monitors) +composite +xkb +xrm +xcursor
|
||||
|
||||
Build type: Release
|
||||
Compiler: /usr/bin/c++
|
||||
Compiler flags: -D_FORTIFY_SOURCE=2 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -O3 -DNDEBUG -Wall -Wextra -Wpedantic -Wsuggest-override
|
||||
Linker flags: -Wall -Wextra -Wpedantic -Wsuggest-override -Wall -Wextra -Wpedantic -Wsuggest-override
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: Additional Context / Screenshots
|
||||
description: If applicable, add screenshots and additional context to explain your problem
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report! :heart:
|
||||
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 🙋 Ask a question
|
||||
url: https://github.com/polybar/polybar/blob/master/SUPPORT.md
|
||||
about: Have a look at our support resources and channels
|
||||
- name: 💡 Feature request
|
||||
url: https://github.com/polybar/polybar/discussions/categories/ideas
|
||||
about: Suggest your idea over in Discussions
|
||||
- name: 🛠️ Build Issues
|
||||
url: https://github.com/polybar/polybar/discussions/categories/build-support
|
||||
about: Get support when building polybar from source
|
||||
26
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
26
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
<!-- Please read our contributing guide before opening a PR: https://github.com/polybar/polybar/blob/master/CONTRIBUTING.md -->
|
||||
|
||||
## What type of PR is this? (check all applicable)
|
||||
|
||||
* [ ] Refactor
|
||||
* [ ] Feature
|
||||
* [ ] Bug Fix
|
||||
* [ ] Optimization
|
||||
* [ ] Documentation Update
|
||||
* [ ] Other: *Replace this with a description of the type of this PR*
|
||||
|
||||
## Description
|
||||
<!--
|
||||
Document user-facing changes in this PR (for example: new config options, changed behavior).
|
||||
|
||||
You can also motivate design decisions here.
|
||||
-->
|
||||
|
||||
## Related Issues & Documents
|
||||
<!-- For example: Fixes #1234, Closes #6789 -->
|
||||
|
||||
## Documentation (check all applicable)
|
||||
|
||||
* [ ] This PR requires changes to the Wiki documentation (describe the changes)
|
||||
* [ ] This PR requires changes to the documentation inside the git repo (please add them to the PR).
|
||||
* [ ] Does not require documentation changes
|
||||
21
.github/codecov.yml
vendored
Normal file
21
.github/codecov.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
coverage:
|
||||
status:
|
||||
project:
|
||||
default:
|
||||
# Coverage can drop by 0.1% without failing the status
|
||||
threshold: 0.1
|
||||
patch:
|
||||
default:
|
||||
# Patches don't need test coverage
|
||||
# TODO remove once we have proper testing infrastructure and documentation
|
||||
target: 0
|
||||
|
||||
ignore:
|
||||
- "tests/**/*"
|
||||
- "lib/**/*"
|
||||
|
||||
comment:
|
||||
require_changes: true
|
||||
|
||||
github_checks:
|
||||
annotations: false
|
||||
166
.github/workflows/ci.yml
vendored
Normal file
166
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,166 @@
|
||||
name: CI
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
ref:
|
||||
description: 'ref'
|
||||
required: false
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
docs:
|
||||
runs-on: ubuntu-22.04
|
||||
env:
|
||||
COLOR: "ON"
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-sphinx
|
||||
- name: Build Documentation
|
||||
run: |
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DDISABLE_ALL=ON -DBUILD_DOC=ON -DSPHINX_FLAGS="-W" ..
|
||||
make doc
|
||||
|
||||
ipc:
|
||||
runs-on: ubuntu-22.04
|
||||
env:
|
||||
COLOR: "ON"
|
||||
steps:
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libxcb-composite0-dev \
|
||||
libxcb-ewmh-dev \
|
||||
libxcb-icccm4-dev \
|
||||
libxcb-image0-dev \
|
||||
libxcb-randr0-dev \
|
||||
libxcb-util0-dev \
|
||||
libxcb1-dev \
|
||||
libcairo2-dev \
|
||||
python3-xcbgen \
|
||||
libuv1-dev \
|
||||
xcb-proto
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
- name: Build polybar-msg
|
||||
run: |
|
||||
mkdir -p build
|
||||
cd build
|
||||
cmake -DDISABLE_ALL=ON -DBUILD_POLYBAR_MSG=ON ..
|
||||
make polybar-msg
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
cxx: [g++, clang++]
|
||||
polybar_build_type: ["full"]
|
||||
build_type: ["Release"]
|
||||
include:
|
||||
- cxx: g++
|
||||
polybar_build_type: "tests"
|
||||
build_type: "Coverage"
|
||||
- cxx: g++
|
||||
polybar_build_type: "minimal"
|
||||
build_type: "Release"
|
||||
env:
|
||||
CXX: ${{ matrix.cxx }}
|
||||
BUILD_TYPE: ${{ matrix.build_type }}
|
||||
POLYBAR_BUILD_TYPE: ${{ matrix.polybar_build_type }}
|
||||
POLYBAR_DIR: ${{ github.workspace }}
|
||||
BUILD_DIR: "${{ github.workspace}}/build"
|
||||
MAKEFLAGS: "-j4"
|
||||
COLOR: "ON"
|
||||
steps:
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y \
|
||||
libxcb-composite0-dev \
|
||||
libxcb-ewmh-dev \
|
||||
libxcb-icccm4-dev \
|
||||
libxcb-image0-dev \
|
||||
libxcb-randr0-dev \
|
||||
libxcb-util0-dev \
|
||||
libxcb1-dev \
|
||||
libcairo2-dev \
|
||||
python3-xcbgen \
|
||||
libuv1-dev \
|
||||
xcb-proto
|
||||
|
||||
if [ "$POLYBAR_BUILD_TYPE" != "minimal" ]; then
|
||||
sudo apt-get install -y \
|
||||
libxcb-xkb-dev \
|
||||
libxcb-cursor-dev \
|
||||
libxcb-xrm-dev \
|
||||
i3-wm \
|
||||
libcurl4-openssl-dev \
|
||||
libjsoncpp-dev \
|
||||
libasound2-dev \
|
||||
libpulse-dev \
|
||||
libnl-genl-3-dev \
|
||||
libmpdclient-dev
|
||||
fi
|
||||
|
||||
if [ "$POLYBAR_BUILD_TYPE" = "tests" ]; then
|
||||
sudo apt-get install -y lcov
|
||||
fi
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
ref: ${{ github.event.inputs.ref }}
|
||||
- name: Summary
|
||||
run: ./common/ci/summary.sh
|
||||
- name: Configure
|
||||
run: ./common/ci/configure.sh
|
||||
- name: Build
|
||||
run: |
|
||||
cd "$BUILD_DIR"
|
||||
make
|
||||
- name: Collect initial coverage
|
||||
if: ${{ matrix.polybar_build_type == 'tests' }}
|
||||
run: |
|
||||
lcov --capture --initial --no-external --directory . -o cov_base.info
|
||||
- name: Tests
|
||||
if: ${{ matrix.polybar_build_type == 'tests' }}
|
||||
run: |
|
||||
cd "$BUILD_DIR"
|
||||
make check
|
||||
- name: Collect coverage
|
||||
if: ${{ matrix.polybar_build_type == 'tests' }}
|
||||
run: |
|
||||
lcov --capture --no-external --directory . -o cov_tests.info
|
||||
lcov --add-tracefile cov_base.info --add-tracefile cov_tests.info -o cov_total.info
|
||||
lcov --remove cov_total.info "${PWD}/build/*" "${PWD}/tests/*" "${PWD}/lib/*" -o cov.info
|
||||
- name: Upload Coverage
|
||||
if: ${{ matrix.polybar_build_type == 'tests' }}
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
token: ${{ secrets.CODECOV_TOKEN }}
|
||||
flags: unittests
|
||||
# We provide our own coverage files
|
||||
disable_search: true
|
||||
# Disable all plugins, we handle all preparations ourselves
|
||||
plugins: noop
|
||||
files: ./cov.info
|
||||
fail_ci_if_error: true
|
||||
verbose: true
|
||||
- name: Upload Logs
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: cmake
|
||||
path: |
|
||||
build/CMakeFiles/CMakeError.log
|
||||
build/CMakeFiles/CMakeOutput.log
|
||||
retention-days: 5
|
||||
105
.github/workflows/release.yml
vendored
Normal file
105
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
# Workflow For Releases
|
||||
#
|
||||
# Automatically creates and uploads a complete release archive for the given
|
||||
# release.
|
||||
name: Release Workflow
|
||||
|
||||
# Is triggered when a new release is published or by hand
|
||||
# If triggered by hand, the release tag that this should target has to be
|
||||
# specified.
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
description: 'Release Tag'
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
upload:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Get Version
|
||||
if: ${{ github.event.inputs.tag }} != ''
|
||||
run: |
|
||||
if [ ${{ github.event_name }} == 'workflow_dispatch' ]; then
|
||||
echo "Manual Release Triggered"
|
||||
RELEASE_TAG=${{ github.event.inputs.tag }}
|
||||
else
|
||||
echo "Automatic Release Triggered"
|
||||
RELEASE_TAG=${GITHUB_REF#refs/tags/}
|
||||
fi
|
||||
echo "Publishing Version $RELEASE_TAG"
|
||||
{
|
||||
echo "RELEASE_TAG=$RELEASE_TAG"
|
||||
echo "POLYBAR_DIR=polybar-$RELEASE_TAG"
|
||||
echo "POLYBAR_ARCHIVE=polybar-$RELEASE_TAG.tar.gz"
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
# Checks out the target tag
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ env.RELEASE_TAG }}
|
||||
submodules: true
|
||||
path: ${{ env.POLYBAR_DIR }}
|
||||
|
||||
- name: Create Release Archive
|
||||
run: |
|
||||
find "$DIR" -type d -name ".git" -exec rm -rf {} \+
|
||||
tar czf "$ARCHIVE" "$DIR"
|
||||
echo "SHA256SUM=$(sha256sum "$ARCHIVE" | cut -d ' ' -f 1)" >> "$GITHUB_ENV"
|
||||
env:
|
||||
DIR: ${{ env.POLYBAR_DIR }}
|
||||
ARCHIVE: ${{ env.POLYBAR_ARCHIVE }}
|
||||
|
||||
- name: Get Upload URL
|
||||
id: get_upload_url
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
const tag = '${{ env.RELEASE_TAG }}';
|
||||
console.log(`Getting Upload URL for '${tag}'`);
|
||||
const release = await github.rest.repos.getReleaseByTag({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
tag: tag
|
||||
});
|
||||
core.exportVariable('UPLOAD_URL', release.data.upload_url);
|
||||
core.exportVariable('RELEASE_ID', release.data.id);
|
||||
core.exportVariable('RELEASE_BODY', release.data.body);
|
||||
|
||||
- name: Upload Release Archive
|
||||
id: upload_archive
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ env.UPLOAD_URL }}
|
||||
asset_path: "./${{ env.POLYBAR_ARCHIVE }}"
|
||||
asset_name: ${{ env.POLYBAR_ARCHIVE }}
|
||||
asset_content_type: application/gzip
|
||||
|
||||
# Adds a download section to the beginning of the release body
|
||||
- name: Update Release Body
|
||||
uses: actions/github-script@v7
|
||||
env:
|
||||
# Existing release body, fetched in the get_upload_url step.
|
||||
RELEASE_BODY: ${{ env.RELEASE_BODY }}
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
const fname = '${{ env.POLYBAR_ARCHIVE }}'
|
||||
const url = '${{ steps.upload_archive.outputs.browser_download_url }}'
|
||||
const hash = '${{ env.SHA256SUM }}'
|
||||
let body = "## Download\n\n"
|
||||
body += `[${fname}](${url}) (**sha256**: \`${hash}\`)\n\n`
|
||||
body += process.env.RELEASE_BODY;
|
||||
|
||||
const release = await github.rest.repos.updateRelease({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
release_id: '${{ env.RELEASE_ID}}',
|
||||
body: body
|
||||
});
|
||||
17
.gitignore
vendored
17
.gitignore
vendored
@@ -1,6 +1,17 @@
|
||||
build
|
||||
tags
|
||||
/build
|
||||
/tags
|
||||
/compile_commands.json
|
||||
*.bak
|
||||
*.pyc
|
||||
*.swp
|
||||
*.tmp
|
||||
include/config.hpp
|
||||
.tags
|
||||
*.user
|
||||
|
||||
# clangd
|
||||
/.cache
|
||||
|
||||
polybar-*.tar
|
||||
*.cache
|
||||
|
||||
.venv
|
||||
|
||||
12
.gitmodules
vendored
12
.gitmodules
vendored
@@ -1,12 +1,8 @@
|
||||
[submodule "contrib/lemonbar-sm-git"]
|
||||
path = contrib/lemonbar-sm-git
|
||||
url = https://github.com/jaagr/bar
|
||||
branch = v1.1
|
||||
[submodule "lib/i3ipcpp"]
|
||||
path = lib/i3ipcpp
|
||||
url = https://github.com/jaagr/i3ipcpp
|
||||
branch = v0.1.4
|
||||
url = https://github.com/polybar/i3ipcpp
|
||||
branch = master
|
||||
[submodule "lib/xpp"]
|
||||
path = lib/xpp
|
||||
url = https://github.com/jaagr/xpp
|
||||
branch = 1.0.0
|
||||
url = https://github.com/polybar/xpp
|
||||
branch = master
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Pass if the README.md isn't staged for commit
|
||||
test "$(git diff --staged README.md)" || exit 0
|
||||
|
||||
# Redirect all output to stderr
|
||||
exec 1>&2
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
tag_prev=$(git tag -l | tail -2 | head -1)
|
||||
tag_curr=$(git tag -l | tail -1)
|
||||
|
||||
# Pass if tags aren't defined
|
||||
[ "$tag_prev" ] || exit 0
|
||||
[ "$tag_curr" ] || exit 0
|
||||
|
||||
sed -n "/${tag_prev}/q1" README.md
|
||||
|
||||
# Pass if the previous tag wasn't found
|
||||
[ $? -eq 1 ] || exit 0
|
||||
|
||||
echo
|
||||
echo "\033[36;1mNOTICE \033[37;1m**\033[0m Updating README.md with latest tag (\033[1m${tag_prev}\033[0m => \033[1m${tag_curr}\033[0m)"
|
||||
echo " The change will be staged for commit..."
|
||||
echo
|
||||
|
||||
sed -i "s/${tag_prev}/${tag_curr}/g" README.md
|
||||
22
.readthedocs.yaml
Normal file
22
.readthedocs.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
# .readthedocs.yaml
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Set the version of Python and other tools you might need
|
||||
build:
|
||||
os: ubuntu-22.04
|
||||
tools:
|
||||
python: "3"
|
||||
|
||||
# Build documentation in the docs/ directory with Sphinx
|
||||
sphinx:
|
||||
configuration: doc/conf.py
|
||||
fail_on_warning: true
|
||||
|
||||
python:
|
||||
install:
|
||||
- requirements: doc/requirements.txt
|
||||
44
.travis.yml
44
.travis.yml
@@ -1,44 +0,0 @@
|
||||
sudo: required
|
||||
dist: trusty
|
||||
|
||||
language: cpp
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
cache: ccache
|
||||
|
||||
env:
|
||||
global:
|
||||
- LLVM_VERSION=3.8.0
|
||||
- LLVM_ARCHIVE_PATH=$HOME/clang+llvm.tar.xz
|
||||
|
||||
before_install:
|
||||
- wget http://llvm.org/releases/$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-linux-gnu-ubuntu-14.04.tar.xz -O $LLVM_ARCHIVE_PATH
|
||||
- mkdir $HOME/clang-$LLVM_VERSION
|
||||
- tar xf $LLVM_ARCHIVE_PATH -C $HOME/clang-$LLVM_VERSION --strip-components 1
|
||||
- export PATH=$HOME/clang-$LLVM_VERSION/bin:$PATH
|
||||
- sudo apt-add-repository -y "ppa:george-edison55/george-edison"
|
||||
- sudo sed -i "s/trusty/wily/g" /etc/apt/sources.list
|
||||
- sudo apt-get -qq update
|
||||
- sudo apt-get install -y cmake cmake-data libxcb1-dev python-xcbgen xcb-proto libboost-dev libiw-dev libasound2-dev libmpdclient-dev
|
||||
|
||||
before_script:
|
||||
- if [ "$CXX" = "clang++" ]; then export CPPFLAGS="-I $HOME/clang-$LLVM_VERSION/include/c++/v1" CXXFLAGS="-Qunused-arguments"; fi
|
||||
- cmake --version
|
||||
- eval "$CXX --version"
|
||||
- eval "$CC --version"
|
||||
- mkdir build
|
||||
- cd build
|
||||
- cmake -DCMAKE_C_COMPILER="$CC" -DCMAKE_CXX_COMPILER="$CXX" -DCMAKE_CXX_FLAGS="$CXXFLAGS" ..
|
||||
|
||||
script: make
|
||||
|
||||
notifications:
|
||||
irc:
|
||||
channels:
|
||||
- "irc.freenode.net#lemonbuddy"
|
||||
template:
|
||||
- "%{author} pushed #%{commit} \"%{commit_subject}\" -> %{repository_name}/%{branch}"
|
||||
- "Build #%{build_number}: %{result} // Compare at %{compare_url}"
|
||||
use_notice: true
|
||||
skip_join: true
|
||||
101
.valgrind-suppressions
Normal file
101
.valgrind-suppressions
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
xft/fontconfig
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:malloc
|
||||
fun:FcPatternCreate
|
||||
fun:FcFontRenderPrepare
|
||||
fun:FcFontMatch
|
||||
fun:XftFontMatch
|
||||
fun:XftFontOpenName
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
}
|
||||
{
|
||||
xft/fontconfig
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:malloc
|
||||
obj:/usr/lib/libfontconfig.so.*
|
||||
obj:/usr/lib/libfontconfig.so.*
|
||||
fun:FcPatternAddDouble
|
||||
obj:/usr/lib/libXft.so.*
|
||||
obj:/usr/lib/libXft.so.*
|
||||
obj:/usr/lib/libXft.so.*
|
||||
obj:/usr/lib/libXft.so.*
|
||||
fun:XftDefaultHasRender
|
||||
fun:XftDefaultSubstitute
|
||||
fun:XftFontMatch
|
||||
fun:XftFontOpenName
|
||||
}
|
||||
{
|
||||
xft/fontconfig
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:malloc
|
||||
fun:XftFontCheckGlyph
|
||||
fun:XftGlyphRender
|
||||
fun:XftDrawGlyphs
|
||||
fun:XftDrawString16
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
}
|
||||
{
|
||||
xft/fontconfig
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:realloc
|
||||
obj:/usr/lib/libfontconfig.so.*
|
||||
obj:/usr/lib/libfontconfig.so.*
|
||||
fun:FcFontRenderPrepare
|
||||
fun:FcFontMatch
|
||||
fun:XftFontMatch
|
||||
fun:XftFontOpenName
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
...
|
||||
}
|
||||
{
|
||||
xresource manager
|
||||
Memcheck:Leak
|
||||
match-leak-kinds: definite
|
||||
fun:realloc
|
||||
obj:/usr/lib/libX11.so.*
|
||||
obj:/usr/lib/libX11.so.*
|
||||
obj:/usr/lib/libX11.so.*
|
||||
fun:_XlcCreateLC
|
||||
fun:_XlcDefaultLoader
|
||||
fun:_XOpenLC
|
||||
fun:_XrmInitParseInfo
|
||||
obj:/usr/lib/libX11.so.*
|
||||
fun:XrmGetStringDatabase
|
||||
...
|
||||
...
|
||||
}
|
||||
{
|
||||
xft conditional jump
|
||||
Memcheck:Cond
|
||||
obj:/usr/lib/libfreetype.so.*
|
||||
obj:/usr/lib/libfreetype.so.*
|
||||
fun:FT_Outline_Decompose
|
||||
obj:/usr/lib/libfreetype.so.*
|
||||
obj:/usr/lib/libfreetype.so.*
|
||||
obj:/usr/lib/libfreetype.so.*
|
||||
obj:/usr/lib/libfreetype.so.*
|
||||
obj:/usr/lib/libfreetype.so.*
|
||||
fun:XftFontLoadGlyphs
|
||||
fun:XftGlyphExtents
|
||||
...
|
||||
...
|
||||
}
|
||||
@@ -1,131 +0,0 @@
|
||||
# Here's the license text for this file:
|
||||
#
|
||||
# This is free and unencumbered software released into the public domain.
|
||||
#
|
||||
# Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
# distribute this software, either in source code form or as a compiled
|
||||
# binary, for any purpose, commercial or non-commercial, and by any
|
||||
# means.
|
||||
#
|
||||
# In jurisdictions that recognize copyright laws, the author or authors
|
||||
# of this software dedicate any and all copyright interest in the
|
||||
# software to the public domain. We make this dedication for the benefit
|
||||
# of the public at large and to the detriment of our heirs and
|
||||
# successors. We intend this dedication to be an overt act of
|
||||
# relinquishment in perpetuity of all present and future rights to this
|
||||
# software under copyright law.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
# OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# For more information, please refer to <http://unlicense.org/>
|
||||
|
||||
import os
|
||||
import ycm_core
|
||||
|
||||
flags = [
|
||||
'-std=c++14',
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Wpedantic',
|
||||
]
|
||||
|
||||
compilation_database_folder = ''
|
||||
|
||||
if os.path.exists( compilation_database_folder ):
|
||||
database = ycm_core.CompilationDatabase( compilation_database_folder )
|
||||
else:
|
||||
database = None
|
||||
|
||||
SOURCE_EXTENSIONS = ['.cpp', '.cxx', '.cc', '.c', '.m', '.mm']
|
||||
|
||||
def DirectoryOfThisScript():
|
||||
return os.path.dirname( os.path.abspath( __file__ ) )
|
||||
|
||||
flags.append('-I'+ DirectoryOfThisScript() +'/src')
|
||||
flags.append('-I'+ DirectoryOfThisScript() +'/include')
|
||||
flags.append('-I'+ DirectoryOfThisScript() +'/lib/i3ipcpp/include')
|
||||
flags.append('-I'+ DirectoryOfThisScript() +'/lib/xpp/include')
|
||||
|
||||
def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
|
||||
if not working_directory:
|
||||
return list( flags )
|
||||
new_flags = []
|
||||
make_next_absolute = False
|
||||
path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
|
||||
for flag in flags:
|
||||
new_flag = flag
|
||||
|
||||
if make_next_absolute:
|
||||
make_next_absolute = False
|
||||
if not flag.startswith( '/' ):
|
||||
new_flag = os.path.join( working_directory, flag )
|
||||
|
||||
for path_flag in path_flags:
|
||||
if flag == path_flag:
|
||||
make_next_absolute = True
|
||||
break
|
||||
|
||||
if flag.startswith( path_flag ):
|
||||
path = flag[ len( path_flag ): ]
|
||||
new_flag = path_flag + os.path.join( working_directory, path )
|
||||
break
|
||||
|
||||
if new_flag:
|
||||
new_flags.append( new_flag )
|
||||
return new_flags
|
||||
|
||||
def IsHeaderFile( filename ):
|
||||
extension = os.path.splitext( filename )[ 1 ]
|
||||
return extension in [ '.h', '.hxx', '.hpp', '.hh' ]
|
||||
|
||||
def GetCompilationInfoForFile( filename ):
|
||||
# The compilation_commands.json file generated by CMake does not have entries
|
||||
# for header files. So we do our best by asking the db for flags for a
|
||||
# corresponding source file, if any. If one exists, the flags for that file
|
||||
# should be good enough.
|
||||
if IsHeaderFile( filename ):
|
||||
basename = os.path.splitext( filename )[ 0 ]
|
||||
for extension in SOURCE_EXTENSIONS:
|
||||
replacement_file = basename + extension
|
||||
if os.path.exists( replacement_file ):
|
||||
compilation_info = database.GetCompilationInfoForFile(
|
||||
replacement_file )
|
||||
if compilation_info.compiler_flags_:
|
||||
return compilation_info
|
||||
return None
|
||||
return database.GetCompilationInfoForFile( filename )
|
||||
|
||||
|
||||
def FlagsForFile( filename, **kwargs ):
|
||||
# if database:
|
||||
# # Bear in mind that compilation_info.compiler_flags_ does NOT return a
|
||||
# # python list, but a "list-like" StringVec object
|
||||
# compilation_info = GetCompilationInfoForFile( filename )
|
||||
# if not compilation_info:
|
||||
# return None
|
||||
#
|
||||
# final_flags = MakeRelativePathsInFlagsAbsolute(
|
||||
# compilation_info.compiler_flags_,
|
||||
# compilation_info.compiler_working_dir_ )
|
||||
#
|
||||
# # NOTE: This is just for YouCompleteMe; it's highly likely that your project
|
||||
# # does NOT need to remove the stdlib flag. DO NOT USE THIS IN YOUR
|
||||
# # ycm_extra_conf IF YOU'RE NOT 100% SURE YOU NEED IT.
|
||||
# try:
|
||||
# final_flags.remove( '-stdlib=libc++' )
|
||||
# except ValueError:
|
||||
# pass
|
||||
# else:
|
||||
relative_to = DirectoryOfThisScript()
|
||||
final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )
|
||||
|
||||
return {
|
||||
'flags': final_flags,
|
||||
'do_cache': True
|
||||
}
|
||||
293
CHANGELOG.md
Normal file
293
CHANGELOG.md
Normal file
@@ -0,0 +1,293 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
Each release should have the following subsections, if entries exist, in the
|
||||
given order: `Breaking`, `Build`, `Deprecated`, `Removed`, `Added`, `Changed`,
|
||||
`Fixed`, `Security`.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- An option `unmute-on-scroll` for `internal/pulseaudio` and `internal/alsa` to unmute audio when the user scrolls on the widget.
|
||||
- `internal/battery`: Added `ramp-charging` tag.
|
||||
([`#3172`](https://github.com/polybar/polybar/pull/3172))
|
||||
by [@stringlapse](https://github.com/stringlapse).
|
||||
- Added tray-reversed = false option to tray module. Makes tray icons order reversed. ([`#3181`](https://github.com/polybar/polybar/discussions/3181))
|
||||
|
||||
### Changed
|
||||
- `internal/pulseaudio`: Volume adjustments now preserve balance instead of volume ratios ([`#3123`](https://github.com/polybar/polybar/issues/3123), [`#3169`](https://github.com/polybar/polybar/pull/3169)) by [`@parmort`](https://github.com/parmort)
|
||||
- When the `-r` flag is provided, and RandR reports zero connected active screens, polybar will not restart. This fixes polybar dying on some laptops when the lid is closed. ([`#3078`](https://github.com/polybar/polybar/pull/3078))).
|
||||
|
||||
## [3.7.2] - 2024-08-17
|
||||
### Fixed
|
||||
- `custom/script`: When a script with `tail = true` received multiple lines quickly, only the first would get displayed ([`#3117`](https://github.com/polybar/polybar/issues/3117), [`#3119`](https://github.com/polybar/polybar/pull/3119)) by [@Isak05](https://github.com/Isak05)
|
||||
- Token min-length calculations would behave differently when non-ASCII characters appear in the token ([`#3074`](https://github.com/polybar/polybar/issues/3074), [`#3087`](https://github.com/polybar/polybar/pull/3087)) by [@nklloyd](https://github.com/nklloyd)
|
||||
- i3: Fix duplicated rendering for non-full-width bars ([`#3091`](https://github.com/polybar/polybar/pull/3091), [`#3060`](https://github.com/polybar/polybar/issues/3060))
|
||||
- `internal/backlight`: Module could display the literal `%percentage%` token if the backlight reports a value of 0 at startup ([`#3081`](https://github.com/polybar/polybar/pull/3081)) by [@unclechu](https://github.com/unclechu)
|
||||
- `internal/tray`: Fix crash during restarting, when tray icons were not removed proberly ([`#3111`](https://github.com/polybar/polybar/issues/3111), [`#3112`](https://github.com/polybar/polybar/pull/3112))
|
||||
- `custom/ipc`: Module would display the literal `%output%` token before the initial hook finished executing ([`#3131`](https://github.com/polybar/polybar/issues/3131), [`#3140`](https://github.com/polybar/polybar/pull/3140))
|
||||
- renderer: Pseudo-transparency rendering artifacts when wallpaper does not fill entire screen ([`#3096`](https://github.com/polybar/polybar/pull/3096), [`#3041`](https://github.com/polybar/polybar/issues/3041))
|
||||
|
||||
## [3.7.1] - 2023-11-27
|
||||
### Build
|
||||
- Fixed missing header when using `libc++` in clang 15 and below
|
||||
|
||||
### Changed
|
||||
- `internal/tray`: The module must use the `<tray>` tag (this is the default) ([`#3037`](https://github.com/polybar/polybar/pull/3037))
|
||||
|
||||
### Fixed
|
||||
- Modules did not validate that all tags (e.g. `<label>`) used in a format were valid for that format ([`#3043`](https://github.com/polybar/polybar/issues/3043), [`#3045`](https://github.com/polybar/polybar/pull/3045))
|
||||
- `internal/tray`: Fixed `module-margin` and `separator` being applied to completely empty tray module ([`#3036`](https://github.com/polybar/polybar/issues/3036), [`#3037`](https://github.com/polybar/polybar/pull/3037))
|
||||
|
||||
## [3.7.0] - 2023-11-05
|
||||
### Breaking
|
||||
- `custom/script`:
|
||||
- No longer hides the module if the `exec` command failed and did not change the output from the previous run ([`#2636`](https://github.com/polybar/polybar/issues/2636)). Somewhat similar original behaviour can be imitated with `format-fail`, if necessary.
|
||||
- If the `exec` command produced no output and exited with a non-zero exit code the module is no longer completely empty, but just has an empty `%output%` token. If you relied on this behavior to hide the module under certain circumstances, make sure the script exits with an exit code of zero. ([`#2857`](https://github.com/polybar/polybar/discussions/2857), [`#2861`](https://github.com/polybar/polybar/pull/2861))
|
||||
|
||||
### Build
|
||||
- Respect `CMAKE_INSTALL_PREFIX` when installing default config ([`#2770`](https://github.com/polybar/polybar/pull/2770), [`#2917`](https://github.com/polybar/polybar/pull/2917))
|
||||
- Change default `CMAKE_INSTALL_PREFIX` to `/usr`. Installations with default flags will now go into `/usr` instead of `/usr/local` ([`#2917`](https://github.com/polybar/polybar/pull/2917))
|
||||
- Bump C++ version to C++17 ([`#2847`](https://github.com/polybar/polybar/pull/2847))
|
||||
|
||||
### Deprecated
|
||||
- `custom/text`: The `content` setting and all its properties are deprecated in favor of `format` with the same functionality. ([`#2676`](https://github.com/polybar/polybar/pull/2676))
|
||||
- tray: All tray-related settings in the bar section are deprecated. They are replaced by the new tray module ([`#3002`](https://github.com/polybar/polybar/pull/3002))
|
||||
- `tray-position`, `tray-detached`, `tray-maxsize`, `tray-scale`, `tray-transparent`, `tray-background`, `tray-foreground`, `tray-padding`, `tray-offset-x`, `tray-offset-y`
|
||||
|
||||
### Added
|
||||
- A tray module with type `internal/tray` for positioning the tray like a module ([`#2689`](https://github.com/polybar/polybar/issues/2689))
|
||||
- `internal/temperature`: `%temperature-k%` token displays the temperature in Kelvin ([`#2774`](https://github.com/polybar/polybar/discussions/2774), [`#2784`](https://github.com/polybar/polybar/pull/2784))
|
||||
- `internal/pulseaudio`: `reverse-scroll` option ([`#2664`](https://github.com/polybar/polybar/pull/2664))
|
||||
- `custom/script`: Repeat interval for script failure (`interval-fail`) and `exec-if` (`interval-if`) ([`#943`](https://github.com/polybar/polybar/issues/943), [`#2606`](https://github.com/polybar/polybar/issues/2606), [`#2630`](https://github.com/polybar/polybar/pull/2630))
|
||||
- `custom/ipc`:
|
||||
- Added support for `<label>` in `format` ([`#2841`](https://github.com/polybar/polybar/pull/2841)) by [@madhavpcm](https://github.com/madhavpcm).
|
||||
- Added support for `format-i` for each defined `hook-i` ([`#2775`](https://github.com/polybar/polybar/issues/2775), [`#2810`](https://github.com/polybar/polybar/pull/2810)) by [@madhavpcm](https://github.com/madhavpcm).
|
||||
- `custom/text`: Loads the `format` setting, which supports the `<label>` tag, if the deprecated `content` is not defined ([`#1331`](https://github.com/polybar/polybar/issues/1331), [`#2673`](https://github.com/polybar/polybar/pull/2673), [`#2676`](https://github.com/polybar/polybar/pull/2676))
|
||||
- `internal/backlight`:
|
||||
- `scroll-interval` option ([`#2696`](https://github.com/polybar/polybar/issues/2696), [`#2700`](https://github.com/polybar/polybar/pull/2700))
|
||||
- `poll-interval` setting controls how often the module is updated (in case it does not happen when the brightness changes) ([`#2835`](https://github.com/polybar/polybar/issues/2835), [`#3028`](https://github.com/polybar/polybar/pull/3028))
|
||||
- `internal/temperature`: Added `zone-type` setting ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2752`](https://github.com/polybar/polybar/pull/2752)) by [@xphoniex](https://github.com/xphoniex)
|
||||
- `internal/xwindow`: `%class%` and `%instance%` tokens, which show the contents of the `WM_CLASS` property of the active window ([`#2830`](https://github.com/polybar/polybar/pull/2830))
|
||||
- Added `enable-struts` option in bar section to enable/disable struts ([`#2769`](https://github.com/polybar/polybar/issues/2769), [`#2844`](https://github.com/polybar/polybar/pull/2844)) by [@VanillaViking](https://github.com/VanillaViking).
|
||||
- `wm-restack`:
|
||||
- `bottom`: lowers polybar to the bottom of the window stack (same as the previous behavior of `generic`) ([`#2961`](https://github.com/polybar/polybar/pull/2961))
|
||||
- `ewmh`: Tries to use the `_NET_SUPPORTING_WM_CHECK` hint to position the bar ([`#2961`](https://github.com/polybar/polybar/pull/2961))
|
||||
- `internal/xworkspaces`: `group-by-monitor` setting to decide whether `_NET_DESKTOP_VIEWPORT` should be used to group workspaces by monitor; ([`#2603`](https://github.com/polybar/polybar/issues/2603), [`#2926`](https://github.com/polybar/polybar/pull/2926)) by [@slotThe](https://github.com/slotThe/).
|
||||
|
||||
### Changed
|
||||
- `custom/script`:
|
||||
- No longer produces a completely empty module if the `exec` command failed. It only produces an empty module if the script had a zero exit code. ([`#2857`](https://github.com/polybar/polybar/discussions/2857), [`#2861`](https://github.com/polybar/polybar/pull/2861))
|
||||
- Bumped the script polling interval (not related to the `interval` setting) to decrease wakeups. Polybar may take slightly longer to shut down. [`#2879`](https://github.com/polybar/polybar/pull/2879)
|
||||
- `internal/fs`: Use `/` as a fallback if no mountpoints are specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2705`](https://github.com/polybar/polybar/pull/2705))
|
||||
- `internal/backlight`:
|
||||
- Detect backlight if none specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2728`](https://github.com/polybar/polybar/pull/2728))
|
||||
- `use-actual-brightness` now always defaults to `true` (even for `amdgpu` backlights) ([`#2835`](https://github.com/polybar/polybar/issues/2835), [`2839`](https://github.com/polybar/polybar/pull/2839))
|
||||
- Providing a negative min-width to a token adds right-padding ([`#2789`](https://github.com/polybar/polybar/issues/2789), [`#2801`](https://github.com/polybar/polybar/pull/2801)) by [@VanillaViking](https://github.com/VanillaViking).
|
||||
- Changed fuzzy match option on i3 and bspwm modules to find longest match instead of the first match ([`#2831`](https://github.com/polybar/polybar/pull/2831), [`#2829`](https://github.com/polybar/polybar/issues/2829)) by [@Ron0Studios](https://github.com/ron0studios/).
|
||||
- `wm-restack`
|
||||
- `generic`: Is now a best effort combination of other restacking strategies. First tries `ewmh` and then the `bottom` strategy ([`#2961`](https://github.com/polybar/polybar/pull/2961))
|
||||
- `bspwm`: Will restack above the topmost bspwm root window instead of the root window associated with the monitor polybar is on ([`#3019`](https://github.com/polybar/polybar/pull/3019))
|
||||
|
||||
### Fixed
|
||||
- Waiting for double click interval on modules that don't have a double click action ([`#2663`](https://github.com/polybar/polybar/issues/2663), [`#2695`](https://github.com/polybar/polybar/pull/2695))
|
||||
- renderer:
|
||||
- Small gaps when rendering emojis ([`#2785`](https://github.com/polybar/polybar/issues/2785), [`#2802`](https://github.com/polybar/polybar/pull/2802))
|
||||
- Crash when using pseudo-transparency with certain wallpapers ([`#2798`](https://github.com/polybar/polybar/issues/2798), [`#2813`](https://github.com/polybar/polybar/pull/2813))
|
||||
- Crash when invalid UTF-8 text is encountered ([`#2091`](https://github.com/polybar/polybar/issues/2091), [`#2958`](https://github.com/polybar/polybar/pull/2958))
|
||||
- config:
|
||||
- Error reporting for deprecated config values ([`#2724`](https://github.com/polybar/polybar/issues/2724))
|
||||
- Also monitor include-files for changes when --reload is set ([`#675`](https://github.com/polybar/polybar/issues/675), [`#2759`](https://github.com/polybar/polybar/pull/2759))
|
||||
- `internal/xwindow`: module does not crash when a tag is not provided in format ([`#2826`](https://github.com/polybar/polybar/issues/2826), [`#2833`](https://github.com/polybar/polybar/pull/2833)) by [@VanillaViking](https://github.com/VanillaViking)
|
||||
- `internal/i3`: module errors when i3 has negative gaps ([`#2888`](https://github.com/polybar/polybar/issues/2888), [`#2889`](https://github.com/polybar/polybar/pull/2889))
|
||||
- `internal/backlight`: Fix module being one step behind every update ([`#2835`](https://github.com/polybar/polybar/issues/2835), [`#3028`](https://github.com/polybar/polybar/pull/3028))
|
||||
- `wm-restack = bspwm`: bar may become unclickable if there are overlapping monitors ([`#2873`](https://github.com/polybar/polybar/issues/2873), [`#2961`](https://github.com/polybar/polybar/pull/2961))
|
||||
|
||||
## [3.6.3] - 2022-05-04
|
||||
### Fixed
|
||||
- `custom/script`: Output clearing when `exec-if` fails ([`#2674`](https://github.com/polybar/polybar/issues/2674))
|
||||
- `internal/battery`: `poll-interval` not working ([`#2649`](https://github.com/polybar/polybar/issues/2649), [`#2677`](https://github.com/polybar/polybar/pull/2677))
|
||||
- ipc: Polybar failing to open IPC channel after another user already ran polybar, if `XDG_RUNTIME_DIR` is not set ([`#2683`](https://github.com/polybar/polybar/issues/2683), [`#2684`](https://github.com/polybar/polybar/pull/2684))
|
||||
- No overlines/underlines being drawn when using offsets ([`#2685`](https://github.com/polybar/polybar/pull/2685))
|
||||
- Update struts (`_NET_WM_STRUT_PARTIAL`) when hiding the bar ([`#2702`](https://github.com/polybar/polybar/pull/2702))
|
||||
- `internal/pulseaudio`: Hanging during startup ([`#2707`](https://github.com/polybar/polybar/issues/2707), [`#2709`](https://github.com/polybar/polybar/pull/2709))
|
||||
- `internal/xworkspaces`: Updates of `_NET_DESKTOP_VIEWPORT` being ignored ([`#2693`](https://github.com/polybar/polybar/issues/2693), [`#2698`](https://github.com/polybar/polybar/pull/2698))
|
||||
|
||||
## [3.6.2] - 2022-04-03
|
||||
### Fixed
|
||||
- `format-offset` being ignored ([`#2643`](https://github.com/polybar/polybar/pull/2643))
|
||||
- Negative struts (`margin-bottom`, `margin-top`) being ignored ([`#2642`](https://github.com/polybar/polybar/issues/2642), [`#2644`](https://github.com/polybar/polybar/pull/2644))
|
||||
- Positioning in awesomeWM ([`#2651`](https://github.com/polybar/polybar/pull/2651))
|
||||
- `internal/xworkspaces`: The module sometimes crashed polybar when windows were closed. ([`#2655`](https://github.com/polybar/polybar/pull/2655))
|
||||
- Mouseover error when only one cursor is defined ([`#2656`](https://github.com/polybar/polybar/pull/2656))
|
||||
- `custom/script`: Timing inconsistencies ([`#2650`](https://github.com/polybar/polybar/issues/2650), first described at [`#2630`](https://github.com/polybar/polybar/pull/2630))
|
||||
|
||||
## [3.6.1] - 2022-03-05
|
||||
### Build
|
||||
- Fixed compiler warning in Clang 13 ([`#2613`](https://github.com/polybar/polybar/pull/2613))
|
||||
- Fixed compiler error in GCC 12 ([`#2616`](https://github.com/polybar/polybar/pull/2616), [`#2614`](https://github.com/polybar/polybar/issues/2614))
|
||||
- Fixed installation of docs when some are not generated (man, html...) ([`#2612`](https://github.com/polybar/polybar/pull/2612))
|
||||
- Fix `LDFLAGS` not being respected ([`#2619`](https://github.com/polybar/polybar/pull/2619))
|
||||
|
||||
### Fixed
|
||||
- `tray-offset-x`, `tray-offset-y`, `offset-x`, and `offset-y` were mistakenly capped below at 0 ([`#2620`](https://github.com/polybar/polybar/pull/2620))
|
||||
- `custom/script`: Polybar shutdown being stalled by hanging script ([`#2621`](https://github.com/polybar/polybar/pull/2621))
|
||||
- `polybar-msg`: Wrong hint when using deprecated `hook` ([`#2624`](https://github.com/polybar/polybar/pull/2624))
|
||||
|
||||
## [3.6.0] - 2022-03-01
|
||||
### Breaking
|
||||
- We added the backslash escape character (\\) for configuration values. This means that the literal backslash character now has special meaning in configuration files, therefore if you want to use it in a value as a literal backslash, you need to escape it with the backslash escape character. The parser logs an error if any unescaped backslashes are found in a value. This affects you only if you are using two consecutive backslashes in a config value, which will now be interpreted as a single literal backslash. ([`#2354`](https://github.com/polybar/polybar/issues/2354))
|
||||
- We rewrote our formatting tag parser. This shouldn't break anything, if you experience any problems, please let us know. The new parser now gives errors for certain invalid tags where the old parser would just silently ignore them. Adding extra text to the end of a valid tag now produces an error. For example, tags like `%{T-a}`, `%{T2abc}`, `%{rfoo}`, and others will now start producing errors. This does not affect you unless you are producing your own invalid formatting tags (for example in a script).
|
||||
- For security reasons, the named pipe at `/tmp/polybar_mqueue.<PID>` had its permission bits changed from `666` to `600` to prevent sending ipc messages to polybar processes running under a different user.
|
||||
- Also for security reasons, the `polybar-msg` command will now only send messages to polybar processes running under the same user. See the [IPC documentation](https://polybar.readthedocs.io/user/ipc.html) for what exactly this means.
|
||||
|
||||
### Build
|
||||
- New dependency: [libuv](https://github.com/libuv/libuv). At least version 1.3 is required.
|
||||
- Bump the minimum cmake version to 3.5
|
||||
- The `BUILD_IPC_MSG` option has been renamed to `BUILD_POLYBAR_MSG`
|
||||
- Building the documentation is now enabled by default and not just when `sphinx-build` is found.
|
||||
- Users can control exactly which targets should be available with the following cmake options (together with their default value):
|
||||
- `BUILD_POLYBAR=ON` - Builds the `polybar` executable
|
||||
- `BUILD_POLYBAR_MSG=ON` - Builds the `polybar-msg` executable
|
||||
- `BUILD_TESTS=OFF` - Builds the test suite
|
||||
- `BUILD_DOC=ON` - Builds the documentation
|
||||
- `BUILD_DOC_HTML=BUILD_DOC` - Builds the html documentation (depends on `BUILD_DOC`)
|
||||
- `BUILD_DOC_MAN=BUILD_DOC` - Builds the manpages (depends on `BUILD_DOC`)
|
||||
- `BUILD_CONFIG=ON` - Generates the default config
|
||||
- `BUILD_SHELL=ON` - Generates shell completion files
|
||||
- `DISABLE_ALL=OFF` - Disables all above targets by default. Individual targets can still be enabled explicitly.
|
||||
- The documentation can no longer be built by directly configuring the `doc` directory.
|
||||
- The `POLYBAR_FLAGS` cmake variable can be used to pass extra C++ compiler flags.
|
||||
- The sample config file has been removed.
|
||||
- Polybar now ships a default config that is installed to `/etc/polybar/config.ini`, it lives in `doc/config.ini`. It will also be placed in the `examples` directory in the documentation folder. ([`#2405`](https://github.com/polybar/polybar/issues/2405))
|
||||
- The `userconfig` target has been removed, you can no longer use `make userconfig`. As an alternative, you can copy the default config from `/etc/polybar/config.ini`.
|
||||
- The `DEBUG_SHADED` cmake variable and its associated functionality has been removed.
|
||||
|
||||
### Deprecated
|
||||
- `[settings]`: `throttle-output` and `throttle-output-for` have been removed. The new event loop already does a similar thing where it coalesces update triggers if they happen directly after one another, leading to only a single bar update.
|
||||
- When not specifying the config file with `--config`, naming your config file `config` is deprecated. Rename your config file to `config.ini`.
|
||||
- Directly writing ipc messages to `/tmp/polybar_mqueue.<PID>` is deprecated, users should always use `polybar-msg`. As a consequence the message format used for IPC is deprecated as well.
|
||||
- `polybar-msg hook` is deprecated in favor of using the hook action. `polybar-msg` will tell you the correct command to use.
|
||||
|
||||
### Added
|
||||
- Support `px` and `pt` units everyhwere where before only a number of spaces or pixels could be specified. ([`#2578`](https://github.com/polybar/polybar/pull/2578), [`#1651`](https://github.com/polybar/polybar/issues/1651), [`#951`](https://github.com/polybar/polybar/issues/951))
|
||||
- `internal/alsa`: Right and middle click settings. ([`#2566`](https://github.com/polybar/polybar/issues/2566), [`#2573`](https://github.com/polybar/polybar/pull/2573))
|
||||
- `internal/network`:
|
||||
- New token `%mac%` shows MAC address of selected interface ([`#2568`](https://github.com/polybar/polybar/issues/2568), [`#2569`](https://github.com/polybar/polybar/pull/2569))
|
||||
- New token `%netspeed%` that provides the total speed of the internet (up + down speed) ([`#2590`](https://github.com/polybar/polybar/pull/2590), [`#1083`](https://github.com/polybar/polybar/issues/1083))
|
||||
- `speed-unit = B/s` can be used to customize how network speeds are displayed. ([`#2068`](https://github.com/polybar/polybar/pull/2068))
|
||||
- `interface-type` may be used in place of `interface` to automatically select a network interface ([`#2025`](https://github.com/polybar/polybar/pull/2025), [`#339`](https://github.com/polybar/polybar/issues/339))
|
||||
- Polybar can now read config files from stdin: `polybar -c /dev/stdin`. ([`#2545`](https://github.com/polybar/polybar/pull/2545))
|
||||
- `custom/script`:
|
||||
- Setting environment variables using `env-*` config option. ([`#2090`](https://github.com/polybar/polybar/issues/2090), [`#2512`](https://github.com/polybar/polybar/pull/2512))
|
||||
- Add formatting for script failure (`format-fail`, `label-fail`) ([`#2588`](https://github.com/polybar/polybar/issues/2588), [`#2596`](https://github.com/polybar/polybar/pull/2596))
|
||||
- Support for ramp weights. ([`#1750`](https://github.com/polybar/polybar/issues/1750), [`#2505`](https://github.com/polybar/polybar/pull/2505))
|
||||
- `internal/memory`: New tokens `%used%`, `%free%`, `%total%`, `%swap_total%`, `%swap_free%`, and `%swap_used%` that automatically switch between MiB and GiB when below or above 1GiB. ([`#2472`](https://github.com/polybar/polybar/issues/2472), [`#2488`](https://github.com/polybar/polybar/pull/2488))
|
||||
- `internal/i3`: `show-urgent` option to always show urgent windows when `pin-workspace` is active ([`#2374`](https://github.com/polybar/polybar/issues/2374), [`#2378`](https://github.com/polybar/polybar/pull/2378))
|
||||
- `internal/xworkspaces`:
|
||||
- `reverse-scroll` can be used to reverse the scroll direction when cycling through desktops. ([`#2365`](https://github.com/polybar/polybar/pull/2365))
|
||||
- `%nwin%` can be used to display the number of open windows per workspace ([`#604`](https://github.com/polybar/polybar/issues/604), [`#2329`](https://github.com/polybar/polybar/pull/2329))
|
||||
- Initial support for the backslash escape character (\\) in configs. ([`#2354`](https://github.com/polybar/polybar/issues/2354), [`#2361`](https://github.com/polybar/polybar/pull/2361))
|
||||
- Warn states for the cpu, memory, fs, and battery modules. ([`#570`](https://github.com/polybar/polybar/issues/570), [`#956`](https://github.com/polybar/polybar/issues/956), [`#1871`](https://github.com/polybar/polybar/issues/1871), [`#2141`](https://github.com/polybar/polybar/issues/2141), [`#2199`](https://github.com/polybar/polybar/pull/2199))
|
||||
- `internal/battery`: `format-low`, `label-low`, `animation-low`, `low-at = 10`.
|
||||
- `internal/cpu`: `format-warn`, `label-warn`, `warn-percentage = 80`
|
||||
- `internal/fs`: `format-warn`, `label-warn`, `warn-percentage = 90`
|
||||
- `internal/memory`: `format-warn`, `label-warn`, `warn-percentage = 90`
|
||||
- `radius` now affects the bar border as well ([`#1566`](https://github.com/polybar/polybar/issues/1566), [`#2359`](https://github.com/polybar/polybar/pull/2359))
|
||||
- Per-corner radius with `radius-{bottom,top}-{left,right}` ([`#2294`](https://github.com/polybar/polybar/issues/2294), [`#2297`](https://github.com/polybar/polybar/pull/2297))
|
||||
- `internal/xkeyboard`:
|
||||
- `%variant%` token to display the keyboard layout variant ([`#316`](https://github.com/polybar/polybar/issues/316), [`#2163`](https://github.com/polybar/polybar/pull/2163))
|
||||
- Allow matching of variants in `layout-icon` ([`#2414`](https://github.com/polybar/polybar/issues/2414), [`#2521`](https://github.com/polybar/polybar/pull/2521))
|
||||
- Config option to hide a certain module (`hidden = false`) ([`#2108`](https://github.com/polybar/polybar/issues/2108), [`#2342`](https://github.com/polybar/polybar/pull/2342))
|
||||
- Actions to control visibility of modules (`module_toggle`, `module_show`, and `module_hide`) ([`#2108`](https://github.com/polybar/polybar/issues/2108), [`#2426`](https://github.com/polybar/polybar/pull/2426))
|
||||
- `internal/backlight`: `use-actual-brightness` option to use the `actual_brightness` file to get the brightness ([`#2380`](https://github.com/polybar/polybar/pull/2380))
|
||||
- `wm-restack = generic` option that lowers polybar to the bottom of the window stack. Fixes the issue where the bar is being drawn on top of fullscreen windows in xmonad. ([`#2205`](https://github.com/polybar/polybar/issues/2205), [`#2404`](https://github.com/polybar/polybar/pull/2404))
|
||||
- `internal/bspwm`: `occupied-scroll = true` option allows scrolling through occupied desktops only. ([`#2427`](https://github.com/polybar/polybar/issues/2427), [`#2428`](https://github.com/polybar/polybar/pull/2428))
|
||||
- `custom/ipc`:
|
||||
- `send` action to send arbitrary strings to be displayed in the module. ([`#2455`](https://github.com/polybar/polybar/issues/2455), [`#2463`](https://github.com/polybar/polybar/pull/2463))
|
||||
- `hook`, `next`, `prev`, `reset` actions to control the module through actions instead of the deprecated hook messages ([`#2464`](https://github.com/polybar/polybar/issues/2464), [`#2528`](https://github.com/polybar/polybar/pull/2528))
|
||||
- Added `double-click-interval` setting to the bar section to control the time interval in which a double-click is recognized. Defaults to 400 (ms) ([`#1441`](https://github.com/polybar/polybar/issues/1441), [`#2510`](https://github.com/polybar/polybar/pull/2510))
|
||||
- Added a new `tray-foreground` setting to give hints to tray icons about what color they should be. ([`#2235`](https://github.com/polybar/polybar/issues/2235), [`#2552`](https://github.com/polybar/polybar/pull/2552))
|
||||
- `polybar-msg`:
|
||||
- For module actions, you can now also specify the module name, action name, and optional data as separate arguments. ([`#2539`](https://github.com/polybar/polybar/pull/2539))
|
||||
- Added man page: `man 1 polybar-msg` ([`#2539`](https://github.com/polybar/polybar/pull/2539))
|
||||
|
||||
### Changed
|
||||
- Polybar now also reads `config.ini` when searching for config files. ([`#2323`](https://github.com/polybar/polybar/issues/2323), [`#2324`](https://github.com/polybar/polybar/pull/2324))
|
||||
- Polybar additionally searches in `XDG_CONFIG_DIRS/polybar/config.ini` (or `/etc/xdg/polybar/config.ini` if it is not set) and `/etc/polybar/config.ini` for config files. ([`#2016`](https://github.com/polybar/polybar/issues/2016), [`#2511`](https://github.com/polybar/polybar/pull/2511))
|
||||
- We rewrote polybar's main event loop. This shouldn't change any behavior for the user, but be on the lookout for X events, click events, or ipc messages not arriving and the bar not shutting down/restarting properly and let us know if you find any issues. ([`#2384`](https://github.com/polybar/polybar/pull/2384))
|
||||
- Slight changes to the value ranges the different ramp levels are responsible for in the cpu, memory, fs, and battery modules. The first level is used for everything at and below the start of the value range and the last level for everything at and above the end of the value range. The other levels are evenly distributed over the value range as before. The value range is bounded by the new warning thresholds. ([`#2199`](https://github.com/polybar/polybar/pull/2199))
|
||||
- `custom/script`: `interval` now defaults to 0 if `tail = true` as per the documentation. ([`#2240`](https://github.com/polybar/polybar/pull/2240))
|
||||
- `internal/network`: Increased precision for upload and download speeds: 0 decimal places for KB/s (as before), 1 for MB/s and 2 for GB/s. ([`#2054`](https://github.com/polybar/polybar/pull/2054))
|
||||
- Clicks arriving in close succession, no longer get dropped. Before polybar would drop any click that arrived within 5ms of the previous one. ([`#2510`](https://github.com/polybar/polybar/pull/2510))
|
||||
- Increased the double click interval from 150ms to 400ms. ([`#2510`](https://github.com/polybar/polybar/pull/2510))
|
||||
- Stop ignoring actions if they arrive while the previous one hasn't been processed yet. ([`#2469`](https://github.com/polybar/polybar/issues/2469), [`#2517`](https://github.com/polybar/polybar/pull/2517))
|
||||
- Polybar can now be run without passing the bar name as argument given that the configuration file only defines one bar ([`#2525`](https://github.com/polybar/polybar/issues/2525), [`#2526`](https://github.com/polybar/polybar/pull/2526))
|
||||
- `include-directory` and `include-file` now support relative paths. The paths are relative to the folder of the file where those directives appear. ([`#2523`](https://github.com/polybar/polybar/issues/2523), [`#2535`](https://github.com/polybar/polybar/issues/2535))
|
||||
- `custom/ipc`: Empty output strings are no longer formatted. This prevents extraneous spaces and separators from appearing in the bar when the output of an ipc module is empty. ([`#2549`](https://github.com/polybar/polybar/pull/2549))
|
||||
|
||||
### Fixed
|
||||
- Broken positioning in Openbox when the bar is hidden and shown again ([`#2021`](https://github.com/polybar/polybar/issues/2021), [`#2600`](https://github.com/polybar/polybar/pull/2600))
|
||||
- Handling of action blocks that contain negative offsets ([`#1814`](https://github.com/polybar/polybar/issues/1814), [`#2601`](https://github.com/polybar/polybar/pull/2601))
|
||||
- `polybar -m` used to show both physical outputs and RandR monitors, even if the outputs were covered by monitors. ([`#2481`](https://github.com/polybar/polybar/issues/2481), [`#2485`](https://github.com/polybar/polybar/pull/2485))
|
||||
- Parser error if click command contained `}` ([`#2040`](https://github.com/polybar/polybar/issues/2040), [`#2303`](https://github.com/polybar/polybar/pull/2303))
|
||||
- Some modules stop updating when system time moves backwards. ([`#857`](https://github.com/polybar/polybar/issues/857), [`#1932`](https://github.com/polybar/polybar/issues/1932), [`#2559`](https://github.com/polybar/polybar/pull/2559))
|
||||
- `custom/script`: Concurrency issues with fast-updating tailed scripts. ([`#1978`](https://github.com/polybar/polybar/issues/1978), [`#2518`](https://github.com/polybar/polybar/pull/2518))
|
||||
- `internal/alsa`: Slight imprecision when calculating percentages. This caused the volume reported to be off by one. ([`#2399`](https://github.com/polybar/polybar/issues/2399), [`#2401`](https://github.com/polybar/polybar/pull/2401))
|
||||
- `internal/backlight`: With amdgpu backlights, the brightness indicator was slightly behind. ([`#2367`](https://github.com/polybar/polybar/issues/2367), [`#2380`](https://github.com/polybar/polybar/pull/2380))
|
||||
- `internal/bspwm`: Warning message regarding T@ ([`#2371`](https://github.com/polybar/polybar/issues/2371), [`#2439`](https://github.com/polybar/polybar/pull/2439))
|
||||
- `internal/xkeyboard`: Trailing space after the layout label when indicators are empty and made sure right amount of spacing is added between the indicator labels ([`#2292`](https://github.com/polybar/polybar/issues/2292), [`#2306`](https://github.com/polybar/polybar/pull/2306))
|
||||
- `internal/xworkspaces`:
|
||||
- Broken scroll-wrapping and order of workspaces when scrolling ([`#2491`](https://github.com/polybar/polybar/issues/2491), [`#2492`](https://github.com/polybar/polybar/pull/2492))
|
||||
- Module would error if WM was not full started up. ([`#1915`](https://github.com/polybar/polybar/issues/1915), [`#2429`](https://github.com/polybar/polybar/pull/2429))
|
||||
- Make the urgent hint persistent ([`#1081`](https://github.com/polybar/polybar/issues/1081), [`#2340`](https://github.com/polybar/polybar/pull/2340))
|
||||
- Crash when the WM sets -1 for `_NET_WM_DESKTOP` ([`#2352`](https://github.com/polybar/polybar/issues/2352), [`#2353`](https://github.com/polybar/polybar/issues/2353))
|
||||
- `internal/network`: The module now properly supports 'altnames' for interfaces. ([`#2540`](https://github.com/polybar/polybar/pull/2540))
|
||||
- `internal/battery`: More accurate battery state ([`#2563`](https://github.com/polybar/polybar/issues/2563), [`#2556`](https://github.com/polybar/polybar/pull/2556))
|
||||
- Offset tag does not respect current background color ([`#2578`](https://github.com/polybar/polybar/pull/2578), [`#1700`](https://github.com/polybar/polybar/issues/1700))
|
||||
- Crash when negative margin or padding was specified ([`#2578`](https://github.com/polybar/polybar/pull/2578), [`#1265`](https://github.com/polybar/polybar/issues/1265))
|
||||
|
||||
## [3.5.7] - 2021-09-21
|
||||
### Fixed
|
||||
- The tray mistakenly removed tray icons that did not support XEMBED
|
||||
([`#2479`](https://github.com/polybar/polybar/issues/2479),
|
||||
[`#2442`](https://github.com/polybar/polybar/issues/2442))
|
||||
- `custom/ipc`: Only the first appearance of the `%pid%` token was replaced
|
||||
([`#2500`](https://github.com/polybar/polybar/issues/2500))
|
||||
|
||||
## [3.5.6] - 2021-05-24
|
||||
### Build
|
||||
- Support building documentation on sphinx 4.0 ([`#2424`](https://github.com/polybar/polybar/issues/2424))
|
||||
### Fixed
|
||||
- Tray icons sometimes appears outside of bar ([`#2430`](https://github.com/polybar/polybar/issues/2430), [`#1679`](https://github.com/polybar/polybar/issues/1679))
|
||||
- Crash in the i3 module ([`#2416`](https://github.com/polybar/polybar/issues/2416))
|
||||
|
||||
## [3.5.5] - 2021-03-01
|
||||
### Build
|
||||
- Support older python sphinx versions again ([`#2356`](https://github.com/polybar/polybar/issues/2356))
|
||||
|
||||
## [3.5.4] - 2021-01-07
|
||||
### Fixed
|
||||
- Wrong text displayed if module text ends with `}` ([`#2331`](https://github.com/polybar/polybar/issues/2331))
|
||||
|
||||
## [3.5.3] - 2020-12-23
|
||||
### Build
|
||||
- Don't use `git` when building documentation ([`#2309`](https://github.com/polybar/polybar/issues/2309))
|
||||
### Fixed
|
||||
- Empty color values are no longer treated as invalid and no longer produce an error.
|
||||
|
||||
[Unreleased]: https://github.com/polybar/polybar/compare/3.7.2...HEAD
|
||||
[3.7.2]: https://github.com/polybar/polybar/releases/tag/3.7.2
|
||||
[3.7.1]: https://github.com/polybar/polybar/releases/tag/3.7.1
|
||||
[3.7.0]: https://github.com/polybar/polybar/releases/tag/3.7.0
|
||||
[3.6.3]: https://github.com/polybar/polybar/releases/tag/3.6.3
|
||||
[3.6.2]: https://github.com/polybar/polybar/releases/tag/3.6.2
|
||||
[3.6.1]: https://github.com/polybar/polybar/releases/tag/3.6.1
|
||||
[3.6.0]: https://github.com/polybar/polybar/releases/tag/3.6.0
|
||||
[3.5.7]: https://github.com/polybar/polybar/releases/tag/3.5.7
|
||||
[3.5.6]: https://github.com/polybar/polybar/releases/tag/3.5.6
|
||||
[3.5.5]: https://github.com/polybar/polybar/releases/tag/3.5.5
|
||||
[3.5.4]: https://github.com/polybar/polybar/releases/tag/3.5.4
|
||||
[3.5.3]: https://github.com/polybar/polybar/releases/tag/3.5.3
|
||||
250
CMakeLists.txt
250
CMakeLists.txt
@@ -1,200 +1,98 @@
|
||||
#
|
||||
# Build configuration
|
||||
#
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(lemonbuddy)
|
||||
cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
|
||||
project(polybar CXX)
|
||||
|
||||
# Include the local cmake modules
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
||||
# Extract version information from version.txt. The first line that looks like
|
||||
# a version string is used, so the file supports comments
|
||||
file(STRINGS version.txt version_txt REGEX "^[0-9]+\\.[0-9]+\\.[0-9]+.*$" LIMIT_COUNT 1)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -Wall -Wextra -Wpedantic -Wno-unused-parameter")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g3 -DDEBUG")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -Wno-unused-variable")
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
message(STATUS "No build type specified; using Release")
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
execute_process(COMMAND git rev-parse --show-toplevel
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
RESULT_VARIABLE git_top_dir_result
|
||||
OUTPUT_VARIABLE git_top_dir
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
# Set fallback first, override if more information (from git) is found
|
||||
set(APP_VERSION "${version_txt}")
|
||||
|
||||
# Prevent formatting errors & resolve symlinks (REALPATH)
|
||||
get_filename_component(resolved_project_source_dir ${PROJECT_SOURCE_DIR} REALPATH)
|
||||
if(NOT ("${git_top_dir}" STREQUAL ""))
|
||||
get_filename_component(git_top_dir ${git_top_dir} REALPATH)
|
||||
endif()
|
||||
|
||||
string(ASCII 27 ANSI)
|
||||
if(git_top_dir_result EQUAL "0" AND git_top_dir STREQUAL resolved_project_source_dir)
|
||||
# If we are in a git repo we can get the version information from git describe
|
||||
execute_process(COMMAND git describe --tags --dirty=-dev
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
RESULT_VARIABLE git_describe_result
|
||||
OUTPUT_VARIABLE git_describe
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET)
|
||||
|
||||
#
|
||||
# Internal values and switches
|
||||
#
|
||||
|
||||
# Keep track if the i3 option is explicitly defined
|
||||
if(ENABLE_I3)
|
||||
set(ENABLE_I3_NODEF ON)
|
||||
endif()
|
||||
|
||||
option(ENABLE_CCACHE "Enable ccache support" ON)
|
||||
option(ENABLE_ALSA "Enable alsa support" ON)
|
||||
option(ENABLE_I3 "Enable i3 support" ON)
|
||||
option(ENABLE_MPD "Enable mpd support" ON)
|
||||
option(ENABLE_NETWORK "Enable network support" ON)
|
||||
|
||||
if(ENABLE_ALSA)
|
||||
set(SETTING_ALSA_SOUNDCARD "default"
|
||||
CACHE STRING "Name of the ALSA soundcard driver")
|
||||
endif()
|
||||
|
||||
set(SETTING_CONNECTION_TEST_IP "8.8.8.8"
|
||||
CACHE STRING "Address to ping when testing network connection")
|
||||
set(SETTING_PATH_BACKLIGHT_VAL "/sys/class/backlight/%card%/brightness"
|
||||
CACHE STRING "Path to file containing the current backlight value")
|
||||
set(SETTING_PATH_BACKLIGHT_MAX "/sys/class/backlight/%card%/max_brightness"
|
||||
CACHE STRING "Path to file containing the maximum backlight value")
|
||||
set(SETTING_PATH_BATTERY_CAPACITY "/sys/class/power_supply/%battery%/capacity"
|
||||
CACHE STRING "Path to file containing the current battery capacity")
|
||||
set(SETTING_PATH_ADAPTER_STATUS "/sys/class/power_supply/%adapter%/online"
|
||||
CACHE STRING "Path to file containing the current adapter status")
|
||||
set(SETTING_BSPWM_SOCKET_PATH "/tmp/bspwm_0_0-socket"
|
||||
CACHE STRING "Path to bspwm socket")
|
||||
set(SETTING_BSPWM_STATUS_PREFIX "W"
|
||||
CACHE STRING "Prefix prepended to the bspwm status line")
|
||||
set(SETTING_PATH_CPU_INFO "/proc/stat"
|
||||
CACHE STRING "Path to file containing cpu info")
|
||||
set(SETTING_PATH_MEMORY_INFO "/proc/meminfo"
|
||||
CACHE STRING "Path to file containing memory info")
|
||||
|
||||
if(ENABLE_CCACHE)
|
||||
find_program(CCACHE_FOUND "ccache")
|
||||
if(CCACHE_FOUND)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "ccache")
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "ccache")
|
||||
if(git_describe_result EQUAL "0")
|
||||
set(APP_VERSION "${git_describe}")
|
||||
else()
|
||||
message(STATUS "Could not detect version with git, falling back to built-in version information.")
|
||||
endif()
|
||||
|
||||
else()
|
||||
message(STATUS "CMake and git directory mismatch, falling back to built-in version information.") # Assuming that if git rev-parse doesn't return 0, git describe won't either
|
||||
endif()
|
||||
|
||||
#
|
||||
# Locate and insert libs
|
||||
#
|
||||
find_package("Boost" REQUIRED)
|
||||
find_package("Threads" REQUIRED)
|
||||
|
||||
set(PROJECT_INCL_DIRS "${PROJECT_SOURCE_DIR}/include"
|
||||
${BOOST_INCLUDE_DIR})
|
||||
set(PROJECT_LINK_LIBS
|
||||
${BOOST_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
if(ENABLE_I3)
|
||||
find_program(I3_EXECUTABLE "i3")
|
||||
if(NOT I3_EXECUTABLE)
|
||||
if(NOT ENABLE_I3_NODEF)
|
||||
message(WARNING "${ANSI}[41;1mDisabling \"i3 module\" support (prerequisites failed)${ANSI}[0m")
|
||||
set(ENABLE_I3 OFF)
|
||||
endif()
|
||||
endif()
|
||||
if(ENABLE_I3)
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/i3ipcpp" EXCLUDE_FROM_ALL)
|
||||
set(PROJECT_INCL_DIRS
|
||||
${PROJECT_INCL_DIRS}
|
||||
${SIGCPP_INCLUDE_DIRS}
|
||||
${I3IPCPP_INCLUDE_DIRS})
|
||||
set(PROJECT_LINK_LIBS
|
||||
${PROJECT_LINK_LIBS}
|
||||
${I3IPCPP_LIBRARIES})
|
||||
endif()
|
||||
# Set the default installation prefix to /usr
|
||||
# Otherwise the default value is /usr/local which causes the default config
|
||||
# file to be installed to /usr/local/etc, with /usr, cmake has special handling
|
||||
# for this.
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Project-default installation prefix" FORCE)
|
||||
endif()
|
||||
|
||||
if(ENABLE_ALSA)
|
||||
find_package("ALSA")
|
||||
if(ALSA_FOUND)
|
||||
set(PROJECT_INCL_DIRS ${PROJECT_INCL_DIRS} ${ALSA_INCLUDE_DIR})
|
||||
set(PROJECT_LINK_LIBS ${PROJECT_LINK_LIBS} ${ALSA_LIBRARY})
|
||||
else(ALSA_FOUND)
|
||||
message(WARNING "${ANSI}[41;1mDisabling \"volume module\" support (prerequisites failed)${ANSI}[0m")
|
||||
set(ENABLE_ALSA OFF)
|
||||
endif()
|
||||
list(APPEND CMAKE_MODULE_PATH
|
||||
${PROJECT_SOURCE_DIR}/cmake
|
||||
${PROJECT_SOURCE_DIR}/cmake/common
|
||||
${PROJECT_SOURCE_DIR}/cmake/modules)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(utils)
|
||||
include(01-core)
|
||||
include(02-opts)
|
||||
include(04-targets)
|
||||
|
||||
if(BUILD_DOC)
|
||||
add_subdirectory(doc)
|
||||
endif()
|
||||
|
||||
if(ENABLE_MPD)
|
||||
find_package("LibMPDClient")
|
||||
if(LIBMPDCLIENT_FOUND)
|
||||
set(PROJECT_INCL_DIRS ${PROJECT_INCL_DIRS} ${LIBMPDCLIENT_INCLUDE_DIR})
|
||||
set(PROJECT_LINK_LIBS ${PROJECT_LINK_LIBS} ${LIBMPDCLIENT_LIBRARY})
|
||||
else(LIBMPDCLIENT_FOUND)
|
||||
message(WARNING "${ANSI}[41;1mDisabling \"mpd module\" support (prerequisites failed)${ANSI}[0m")
|
||||
set(ENABLE_MPD OFF)
|
||||
endif()
|
||||
if (BUILD_SHELL)
|
||||
add_subdirectory(contrib/bash)
|
||||
add_subdirectory(contrib/zsh)
|
||||
endif()
|
||||
|
||||
if(ENABLE_NETWORK)
|
||||
find_package("Libiw")
|
||||
if(LIBIW_FOUND)
|
||||
set(PROJECT_INCL_DIRS ${PROJECT_INCL_DIRS} ${LIBIW_INCLUDE_DIR})
|
||||
set(PROJECT_LINK_LIBS ${PROJECT_LINK_LIBS} ${LIBIW_LIBRARY})
|
||||
else(LIBIW_FOUND)
|
||||
message(WARNING "${ANSI}[41;1mDisabling \"network module\" support (prerequisites failed)${ANSI}[0m")
|
||||
set(ENABLE_NETWORK OFF)
|
||||
# Setup everything that uses a C++ compiler (polybar, polybar-msg, tests)
|
||||
if(HAS_CXX_COMPILATION)
|
||||
include(cxx)
|
||||
if(BUILD_LIBPOLY)
|
||||
include(libpoly)
|
||||
add_subdirectory(lib)
|
||||
endif()
|
||||
add_subdirectory(include)
|
||||
add_subdirectory(src bin)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Load the xpp library
|
||||
#
|
||||
set(XCB_PROTOS xproto randr)
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/lib/xpp")
|
||||
set(PROJECT_INCL_DIRS ${PROJECT_INCL_DIRS} ${XPP_INCLUDE_DIRS})
|
||||
set(PROJECT_LINK_LIBS ${PROJECT_LINK_LIBS} ${XPP_LIBRARIES})
|
||||
# We need to enable testing in the root folder so that 'ctest' and 'make test'
|
||||
# can be run in the build directory
|
||||
if(BUILD_TESTS)
|
||||
enable_testing()
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Execute versioning script
|
||||
#
|
||||
execute_process(COMMAND ./version.sh WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_QUIET ERROR_QUIET)
|
||||
if(BUILD_CONFIG)
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/doc/config.ini
|
||||
DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/${PROJECT_NAME}
|
||||
COMPONENT config)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Install executable and wrapper
|
||||
#
|
||||
message(STATUS "---------------------------")
|
||||
message(STATUS " Build type: ${CMAKE_BUILD_TYPE}")
|
||||
message(STATUS " Compiler C: ${CMAKE_C_COMPILER}")
|
||||
message(STATUS " Compiler C++: ${CMAKE_CXX_COMPILER}")
|
||||
message(STATUS "---------------------------")
|
||||
message(STATUS " Enable ccache support ${ENABLE_CCACHE}")
|
||||
message(STATUS " Enable alsa support ${ENABLE_ALSA}")
|
||||
message(STATUS " Enable i3 support ${ENABLE_I3}")
|
||||
message(STATUS " Enable mpd support ${ENABLE_MPD}")
|
||||
message(STATUS " Enable network support ${ENABLE_NETWORK}")
|
||||
message(STATUS "---------------------------")
|
||||
|
||||
add_subdirectory("${PROJECT_SOURCE_DIR}/src" EXCLUDE_FROM_ALL)
|
||||
link_directories(${PROJECT_LINK_DIRS})
|
||||
include_directories(${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR} ${PROJECT_INCL_DIRS})
|
||||
link_libraries(${PROJECT_LINK_LIBS})
|
||||
add_executable(${PROJECT_NAME} ${FILES}
|
||||
"examples/config"
|
||||
"examples/config.bspwm"
|
||||
"examples/config.i3")
|
||||
target_link_libraries(${PROJECT_NAME} ${PROJECT_LINK_LIBS})
|
||||
|
||||
configure_file("${CMAKE_SOURCE_DIR}/include/config.hpp.cmake" "${CMAKE_SOURCE_DIR}/include/config.hpp" ESCAPE_QUOTES @ONLY)
|
||||
|
||||
install(TARGETS ${PROJECT_NAME}
|
||||
DESTINATION "bin"
|
||||
COMPONENT "binaries")
|
||||
install(PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/lemonbuddy_wrapper"
|
||||
DESTINATION "bin" COMPONENT "binaries")
|
||||
install(PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/lemonbuddy_terminate"
|
||||
DESTINATION "bin" COMPONENT "binaries")
|
||||
|
||||
install(FILES "examples/config"
|
||||
DESTINATION "share/examples/${PROJECT_NAME}"
|
||||
COMPONENT "config")
|
||||
install(FILES "examples/config.bspwm"
|
||||
DESTINATION "share/examples/${PROJECT_NAME}"
|
||||
COMPONENT "config")
|
||||
install(FILES "examples/config.i3"
|
||||
DESTINATION "share/examples/${PROJECT_NAME}"
|
||||
COMPONENT "config")
|
||||
|
||||
#
|
||||
# Uninstall target
|
||||
#
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/uninstall.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake"
|
||||
IMMEDIATE @ONLY)
|
||||
|
||||
add_custom_target(uninstall COMMAND ${CMAKE_COMMAND}
|
||||
-P "${CMAKE_CURRENT_BINARY_DIR}/cmake/uninstall.cmake")
|
||||
include(05-summary)
|
||||
|
||||
169
CONTRIBUTING.md
Normal file
169
CONTRIBUTING.md
Normal file
@@ -0,0 +1,169 @@
|
||||
# Contributing
|
||||
|
||||
First of all, thank you very much for considering contributing to polybar. You
|
||||
are awesome! :tada:
|
||||
|
||||
**Table of Contents:**
|
||||
* [Bug Reports](#bug-reports)
|
||||
* [Pull Requests](#pull-requests)
|
||||
+ [Testing](#testing)
|
||||
+ [Changelog](#changelog)
|
||||
+ [Documentation](#documentation)
|
||||
+ [Style](#style)
|
||||
* [Donations](#donations)
|
||||
|
||||
## Bug Reports
|
||||
|
||||
Bugs should be reported at the polybar issue tracker, using the [bug report
|
||||
template](https://github.com/polybar/polybar/issues/new?template=bug_report.yml).
|
||||
Make sure you fill out all the required sections.
|
||||
|
||||
Before opening a bug report, please search our [issue
|
||||
tracker](https://github.com/polybar/polybar/issues?q=is%3Aissue) and [known
|
||||
issues page](https://github.com/polybar/polybar/wiki/Known-Issues) for your
|
||||
problem to avoid duplicates.
|
||||
|
||||
If your issue has already been reported but is already marked as fixed and the
|
||||
version of polybar you are using includes this supposed fix, feel free to open a
|
||||
new issue.
|
||||
|
||||
You should also go through our [debugging
|
||||
guide](https://github.com/polybar/polybar/wiki/Debugging-your-Config) to confirm
|
||||
what you are experiencing is indeed a polybar bug and not an issue with your
|
||||
configuration.
|
||||
This will also help you narrow down the issue which, in turn, will help us
|
||||
resolve it, if it turns out to be a bug in polybar.
|
||||
|
||||
If this bug was not present in a previous version of polybar and you know how
|
||||
to, doing a `git bisect` and providing us with the commit ID that introduced the
|
||||
issue would be immensely helpful.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
If you want to start contributing to polybar, a good place to start are issues
|
||||
labeled with
|
||||
[help wanted](https://github.com/polybar/polybar/labels/help%20wanted)
|
||||
or
|
||||
[good first issue](https://github.com/polybar/polybar/labels/good%20first%20issue).
|
||||
|
||||
Except for small changes, PRs should always address an already open and accepted
|
||||
issue.
|
||||
Otherwise you run the risk of spending time implementing something and then the
|
||||
PR being rejected because the feature you implemented was not actually something
|
||||
we want in polybar.
|
||||
|
||||
Issues with any of the following labels are generally safe to start working on,
|
||||
unless they also have the `needs confirmation` label or someone else has
|
||||
already claimed them:
|
||||
|
||||
* [bug](https://github.com/polybar/polybar/labels/bug)
|
||||
* [confirmed](https://github.com/polybar/polybar/labels/confirmed)
|
||||
* [good first issue](https://github.com/polybar/polybar/labels/good%20first%20issue)
|
||||
* [help wanted](https://github.com/polybar/polybar/labels/help%20wanted)
|
||||
* [hacktoberfest](https://github.com/polybar/polybar/labels/Hacktoberfest) (can also be worked on outside of October :wink:)
|
||||
|
||||
For anything else, it's a good idea to first comment under the issue to ask
|
||||
whether it is something that can/should be worked on right now.
|
||||
This is especially true for issues labeled with `feature` (and none of the
|
||||
labels listed above), here a feature may depend on some other things being
|
||||
implemented first or it may need to be split into many smaller features, because
|
||||
it is too big otherwise.
|
||||
In particular, this means that you should not open a feature request and
|
||||
immediately start working on that feature, unless you are very sure it will be
|
||||
accepted or accept the risk of it being rejected.
|
||||
|
||||
Things like documentation changes or refactorings, don't necessarily need an
|
||||
issue associated with them.
|
||||
These changes are less likely to be rejected since they don't change the
|
||||
behavior of polybar.
|
||||
Nevertheless, for bigger changes or when in doubt, open an issue and ask whether
|
||||
such changes would be desirable.
|
||||
|
||||
To claim an issue, comment under it to let others know that you are working on
|
||||
it.
|
||||
|
||||
Feel free to ask for feedback about your changes at any time.
|
||||
Especially when implementing features, this can be very useful because it allows
|
||||
us to make sure you are going in the direction we had envisioned for that
|
||||
feature and you don't lose time on something that ultimately has to be
|
||||
rewritten.
|
||||
In that case, a [draft PR](https://github.blog/2019-02-14-introducing-draft-pull-requests/)
|
||||
is a useful tool.
|
||||
|
||||
When creating a PR, please fill out the PR template.
|
||||
|
||||
### Testing
|
||||
|
||||
Your PR must pass all existing tests.
|
||||
If possible, you should also add tests for the things you write.
|
||||
However, this is not always possible, for example when working on modules.
|
||||
But at least isolated components should be tested.
|
||||
|
||||
See the [testing
|
||||
page](https://polybar.readthedocs.io/en/latest/dev/testing.html) in the
|
||||
documentation.
|
||||
Also don't hesitate to ask for help, testing isn't that mature in polybar yet
|
||||
and some things may be harder/impossible to test right now.
|
||||
|
||||
### Changelog
|
||||
|
||||
We use the [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) format for
|
||||
keeping track of changes in a release.
|
||||
|
||||
If your PR introduces notable changes to polybar, please add them the correct
|
||||
subsection in the `Unreleased` section in the `CHANGELOG.md` file at the root
|
||||
of this repository.
|
||||
Notable changes are any user-visible changes, like bug fixes, new config
|
||||
options, changes to the build, etc., but not, for example, code cleanup that
|
||||
doesn't change polybar's behavior or minor documentation changes.
|
||||
One thing that also should not be added to the changelog are bugfixes for
|
||||
unreleased features.
|
||||
|
||||
An entry in the changelog should include a link to the issue(s) that the PR
|
||||
addresses, to the PR itself, and to your username:
|
||||
|
||||
```
|
||||
- A short description of the change
|
||||
([`#XYZ`](https://github.com/polybar/polybar/issues/XYZ),
|
||||
[`#UVW`](https://github.com/polybar/polybar/pull/UVW))
|
||||
by [@yourname](https://github.com/yourname).
|
||||
```
|
||||
|
||||
You will first need to open the PR before you can link to it though :wink:.
|
||||
|
||||
|
||||
If you are unsure whether something is a notable change, just add it to the
|
||||
changelog and we can determine whether it is a notable change when reviewing.
|
||||
|
||||
### Documentation
|
||||
|
||||
Right now, documentation for polybar lives in two places: The GitHub wiki and
|
||||
the git repo itself.
|
||||
|
||||
Ultimately, most of the documentation is supposed to live in the repo itself.
|
||||
|
||||
For now, if your PR requires documentation changes in the repo, those changes
|
||||
need to be in the PR as well.
|
||||
|
||||
Changes on the wiki should not be made right away because the wiki should
|
||||
reflect the currently released version and not the development version.
|
||||
In that case, outline the documentation changes that need to be made (for
|
||||
example, which new config options are available).
|
||||
If your PR would introduce a lot of new documentation on the wiki, let us know
|
||||
and we can decide if we want to put some of the documentation directly into the
|
||||
repo.
|
||||
|
||||
### Style
|
||||
|
||||
Please read our [style
|
||||
guide](https://polybar.readthedocs.io/en/latest/dev/style-guide.html).
|
||||
|
||||
## Donations
|
||||
|
||||
Donations support the sustained development of polybar.
|
||||
We accept donations through [our open collective page](
|
||||
https://opencollective.com/polybar).
|
||||
This can be either a one time or a recurring donation.
|
||||
|
||||
Our [blog post](https://polybar.github.io/2020/12/21/Polybar-Funding.html) lays
|
||||
out the why and how behind our decision to accept donations.
|
||||
34
SUPPORT.md
Normal file
34
SUPPORT.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Getting Help
|
||||
|
||||
If you need help or troubleshooting tips or just have a question:
|
||||
|
||||
* If applicable, go through our [debugging guide](https://github.com/polybar/polybar/wiki/Debugging-your-Config).
|
||||
* Read the [Known Issues page](https://github.com/polybar/polybar/wiki/Known-Issues), maybe others had the same issue before.
|
||||
* Read the [Wiki page](https://github.com/polybar/polybar/wiki) for the thing you have problems with.
|
||||
* Ask your question on [GitHub Discussions](https://github.com/polybar/polybar/discussions)
|
||||
* Join our Gitter room at [`gitter.im/polybar/polybar`](https://gitter.im/polybar/polybar)
|
||||
* Ask in our reddit community at [`r/polybar`](https://www.reddit.com/r/polybar)
|
||||
* Join the official IRC channel `#polybar` on the [`irc.libera.chat:6697`](https://libera.chat/) network. This is IRC, you will need to be connected to receive answers.
|
||||
* Ask on [Unix & Linux StackExchange](https://unix.stackexchange.com/). Though not all questions may be suited over there, make sure you're [on topic](https://unix.stackexchange.com/help/on-topic).
|
||||
|
||||
**Do not** use the GitHub issue tracker to ask for help or if you have questions, it is meant for bug reports.
|
||||
Issues will be closed and you will be referred to the above resources.
|
||||
|
||||
## Asking Quality Questions
|
||||
|
||||
Spending some time to precisely frame your question will save a lot of time.
|
||||
You will better understand your problem and may be able to solve it yourself
|
||||
and other will be able to better understand what you are asking.
|
||||
Here are some tips:
|
||||
|
||||
* Be explicit and precise:
|
||||
* What are you trying to achieve?
|
||||
* What problems have you encountered while trying to achieve this?
|
||||
* What is stopping you from overcoming these problems?
|
||||
* If a problem is difficult to describe, screenshots can help. Do not make
|
||||
screenshots of your config file or error messages, copy-paste them as text.
|
||||
* Provide as much context as possible. In most cases this includes at least the following:
|
||||
* Window Manager
|
||||
* Polybar version
|
||||
* Relevant portions of your config file. If you are not sure what is relevant, provide the whole thing.
|
||||
* How you start polybar
|
||||
267
build.sh
267
build.sh
@@ -1,37 +1,258 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
function msg_err {
|
||||
printf "\033[41;30m err \033[0m %s\n" "$@"
|
||||
readonly SELF=${0##*/}
|
||||
declare -rA COLORS=(
|
||||
[RED]=$'\033[0;31m'
|
||||
[GREEN]=$'\033[0;32m'
|
||||
[BLUE]=$'\033[0;34m'
|
||||
[PURPLE]=$'\033[0;35m'
|
||||
[CYAN]=$'\033[0;36m'
|
||||
[WHITE]=$'\033[0;37m'
|
||||
[YELLOW]=$'\033[0;33m'
|
||||
[BOLD]=$'\033[1m'
|
||||
[OFF]=$'\033[0m'
|
||||
)
|
||||
|
||||
usage() {
|
||||
echo "
|
||||
Builds and installs polybar.
|
||||
|
||||
${COLORS[GREEN]}${COLORS[BOLD]}Usage:${COLORS[OFF]}
|
||||
${COLORS[CYAN]}${SELF}${COLORS[OFF]} [options]
|
||||
|
||||
${COLORS[GREEN]}${COLORS[BOLD]}Options:${COLORS[OFF]}
|
||||
${COLORS[GREEN]}-3, --i3${COLORS[OFF]}
|
||||
Include support for internal/i3 (requires i3); disabled by default.
|
||||
${COLORS[GREEN]}-a, --alsa${COLORS[OFF]}
|
||||
Include support for internal/alsa (requires alsalib); disabled by default.
|
||||
${COLORS[GREEN]}-p, --pulseaudio${COLORS[OFF]}
|
||||
Include support for internal/pulseaudio (requires libpulse); disabled by default.
|
||||
${COLORS[GREEN]}-n, --network${COLORS[OFF]}
|
||||
Include support for internal/network (requires libnl/libiw); disabled by default.
|
||||
${COLORS[GREEN]}-m, --mpd${COLORS[OFF]}
|
||||
Include support for internal/mpd (requires libmpdclient); disabled by default.
|
||||
${COLORS[GREEN]}-c, --curl${COLORS[OFF]}
|
||||
Include support for internal/github (requires libcurl); disabled by default.
|
||||
${COLORS[GREEN]}-i, --ipc${COLORS[OFF]}
|
||||
Build polybar-msg used to send ipc messages; disabled by default.
|
||||
${COLORS[GREEN]}--all-features${COLORS[OFF]}
|
||||
Enable all abovementioned features;
|
||||
equal to -3 -a -p -n -m -c -i
|
||||
${COLORS[GREEN]}-g, --gcc${COLORS[OFF]}
|
||||
Use GCC even if Clang is installed; disabled by default.
|
||||
${COLORS[GREEN]}-j, --jobs${COLORS[OFF]}
|
||||
Use make -j to use make jobs with $(nproc) jobs; disabled by default.
|
||||
${COLORS[GREEN]}-f${COLORS[OFF]}
|
||||
Remove existing build dir; disabled by default.
|
||||
${COLORS[GREEN]}-I, --no-install${COLORS[OFF]}
|
||||
Do not execute 'sudo make install'; enabled by default.
|
||||
${COLORS[GREEN]}-A, --auto${COLORS[OFF]}
|
||||
Automatic, non-interactive installation; disabled by default.
|
||||
When set, script defaults options not explicitly set.
|
||||
${COLORS[GREEN]}-h, --help${COLORS[OFF]}
|
||||
Displays this help.
|
||||
"
|
||||
}
|
||||
|
||||
msg_err() {
|
||||
echo -e "${COLORS[RED]}${COLORS[BOLD]}** ${COLORS[OFF]}$*\n"
|
||||
exit 1
|
||||
}
|
||||
|
||||
function msg {
|
||||
printf "\033[36;1m info \033[0m%s\n" "$@"
|
||||
msg() {
|
||||
echo -e "${COLORS[GREEN]}${COLORS[BOLD]}** ${COLORS[OFF]}$*\n"
|
||||
}
|
||||
|
||||
function main
|
||||
{
|
||||
[[ -d ./build ]] && msg_err "A build directory already exists"
|
||||
[[ -d ./.git ]] && {
|
||||
git submodule update --init --recursive || msg_err "Failed to clone submodules"
|
||||
}
|
||||
install() {
|
||||
local p
|
||||
|
||||
mkdir ./build || msg_err "Failed to create build dir"
|
||||
cd ./build || msg_err "Failed to enter build dir"
|
||||
if [[ "$AUTO" == ON ]]; then
|
||||
[[ -z "$INSTALL" ]] && INSTALL="ON"
|
||||
fi
|
||||
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr .. || \
|
||||
msg_err "Failed to generate build... read output to get a hint of what went wrong"
|
||||
if [[ -z "$INSTALL" ]]; then
|
||||
read -r -p "$(msg "Execute 'sudo make install'? [Y/n] ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "N" ]] && INSTALL="ON" || INSTALL="OFF"
|
||||
fi
|
||||
|
||||
make || msg_err "Failed to build project"
|
||||
|
||||
echo -e "\n"
|
||||
|
||||
read -N1 -p "Do you want to execute \"sudo make install\"? [Y/n] " -r choice
|
||||
echo
|
||||
|
||||
if [[ "${choice^^}" == "Y" ]]; then
|
||||
if [[ "$INSTALL" == ON ]]; then
|
||||
sudo make install || msg_err "Failed to install executables..."
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
set_build_opts() {
|
||||
local p
|
||||
|
||||
msg "Setting build options"
|
||||
|
||||
if [[ "$AUTO" == ON ]]; then
|
||||
[[ -z "$USE_GCC" ]] && USE_GCC="OFF"
|
||||
[[ -z "$ENABLE_I3" ]] && ENABLE_I3="OFF"
|
||||
[[ -z "$ENABLE_ALSA" ]] && ENABLE_ALSA="OFF"
|
||||
[[ -z "$ENABLE_PULSEAUDIO" ]] && ENABLE_PULSEAUDIO="OFF"
|
||||
[[ -z "$ENABLE_NETWORK" ]] && ENABLE_NETWORK="OFF"
|
||||
[[ -z "$ENABLE_MPD" ]] && ENABLE_MPD="OFF"
|
||||
[[ -z "$ENABLE_CURL" ]] && ENABLE_CURL="OFF"
|
||||
[[ -z "$ENABLE_IPC_MSG" ]] && ENABLE_IPC_MSG="OFF"
|
||||
[[ -z "$JOB_COUNT" ]] && JOB_COUNT=1
|
||||
fi
|
||||
|
||||
if [[ -z "$USE_GCC" ]]; then
|
||||
read -r -p "$(msg "Use GCC even if Clang is installed ----------------------------- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && USE_GCC="OFF" || USE_GCC="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$ENABLE_I3" ]]; then
|
||||
read -r -p "$(msg "Include support for \"internal/i3\" (requires i3) ---------------- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && ENABLE_I3="OFF" || ENABLE_I3="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$ENABLE_ALSA" ]]; then
|
||||
read -r -p "$(msg "Include support for \"internal/alsa\" (requires alsalib) --------- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && ENABLE_ALSA="OFF" || ENABLE_ALSA="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$ENABLE_PULSEAUDIO" ]]; then
|
||||
read -r -p "$(msg "Include support for \"internal/pulseaudio\" (requires libpulse) -- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && ENABLE_PULSEAUDIO="OFF" || ENABLE_PULSEAUDIO="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$ENABLE_NETWORK" ]]; then
|
||||
read -r -p "$(msg "Include support for \"internal/network\" (requires libnl/libiw) -- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && ENABLE_NETWORK="OFF" || ENABLE_NETWORK="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$ENABLE_MPD" ]]; then
|
||||
read -r -p "$(msg "Include support for \"internal/mpd\" (requires libmpdclient) ----- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && ENABLE_MPD="OFF" || ENABLE_MPD="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$ENABLE_CURL" ]]; then
|
||||
read -r -p "$(msg "Include support for \"internal/github\" (requires libcurl) ------- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && ENABLE_CURL="OFF" || ENABLE_CURL="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$ENABLE_IPC_MSG" ]]; then
|
||||
read -r -p "$(msg "Build \"polybar-msg\" used to send ipc messages ------------------ [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && ENABLE_IPC_MSG="OFF" || ENABLE_IPC_MSG="ON"
|
||||
fi
|
||||
|
||||
if [[ -z "$JOB_COUNT" ]]; then
|
||||
read -r -p "$(msg "Parallelize the build using make -j$(nproc) --------------------------- [y/N]: ")" -n 1 p && echo
|
||||
[[ "${p^^}" != "Y" ]] && JOB_COUNT=1 || JOB_COUNT=$(nproc)
|
||||
fi
|
||||
|
||||
|
||||
CXX="c++"
|
||||
|
||||
if [[ "$USE_GCC" == OFF ]]; then
|
||||
if command -v clang++ >/dev/null; then
|
||||
msg "Using compiler: clang++/clang"
|
||||
CXX="clang++"
|
||||
elif command -v g++ >/dev/null; then
|
||||
msg "Using compiler: g++/gcc"
|
||||
CXX="g++"
|
||||
fi
|
||||
else
|
||||
CXX="g++"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
[[ -d ./.git ]] && {
|
||||
msg "Fetching submodules"
|
||||
git submodule update --init --recursive || msg_err "Failed to clone submodules"
|
||||
}
|
||||
|
||||
[[ -d ./build ]] && {
|
||||
if [[ "$REMOVE_BUILD_DIR" == ON ]]; then
|
||||
msg "Removing existing build dir (-f)"
|
||||
rm -rf ./build >/dev/null || msg_err "Failed to remove existing build dir"
|
||||
else
|
||||
msg "A build dir already exists (pass -f to replace)"
|
||||
fi
|
||||
}
|
||||
|
||||
mkdir -p ./build || msg_err "Failed to create build dir"
|
||||
cd ./build || msg_err "Failed to enter build dir"
|
||||
|
||||
set_build_opts
|
||||
|
||||
msg "Executing cmake command"
|
||||
cmake \
|
||||
-DCMAKE_CXX_COMPILER="${CXX}" \
|
||||
-DENABLE_ALSA:BOOL="${ENABLE_ALSA}" \
|
||||
-DENABLE_PULSEAUDIO:BOOL="${ENABLE_PULSEAUDIO}"\
|
||||
-DENABLE_I3:BOOL="${ENABLE_I3}" \
|
||||
-DENABLE_MPD:BOOL="${ENABLE_MPD}" \
|
||||
-DENABLE_NETWORK:BOOL="${ENABLE_NETWORK}" \
|
||||
-DENABLE_CURL:BOOL="${ENABLE_CURL}" \
|
||||
-DBUILD_POLYBAR_MSG:BOOL="${ENABLE_IPC_MSG}" \
|
||||
.. || msg_err "Failed to generate build... read output to get a hint of what went wrong"
|
||||
|
||||
msg "Building project"
|
||||
if [ -z ${JOB_COUNT} ]; then
|
||||
make || msg_err "Failed to build project"
|
||||
else
|
||||
make -j$JOB_COUNT || msg_err "Failed to build project"
|
||||
fi
|
||||
install
|
||||
msg "Build complete!"
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
|
||||
#################
|
||||
###### Entry
|
||||
#################
|
||||
while [[ "$1" == -* ]]; do
|
||||
case "$1" in
|
||||
-3|--i3)
|
||||
ENABLE_I3=ON; shift ;;
|
||||
-a|--alsa)
|
||||
ENABLE_ALSA=ON; shift ;;
|
||||
-p|--pulseaudio)
|
||||
ENABLE_PULSEAUDIO=ON; shift ;;
|
||||
-n|--network)
|
||||
ENABLE_NETWORK=ON; shift ;;
|
||||
-m|--mpd)
|
||||
ENABLE_MPD=ON; shift ;;
|
||||
-c|--curl)
|
||||
ENABLE_CURL=ON; shift ;;
|
||||
-i|--ipc)
|
||||
ENABLE_IPC_MSG=ON; shift ;;
|
||||
--all-features)
|
||||
ENABLE_I3=ON
|
||||
ENABLE_ALSA=ON
|
||||
ENABLE_PULSEAUDIO=ON
|
||||
ENABLE_NETWORK=ON
|
||||
ENABLE_MPD=ON
|
||||
ENABLE_CURL=ON
|
||||
ENABLE_IPC_MSG=ON
|
||||
shift ;;
|
||||
|
||||
-g|--gcc)
|
||||
USE_GCC=ON; shift ;;
|
||||
-j|--jobs)
|
||||
JOB_COUNT=$(nproc); shift ;;
|
||||
-f)
|
||||
REMOVE_BUILD_DIR=ON; shift ;;
|
||||
-I|--no-install)
|
||||
INSTALL=OFF; shift ;;
|
||||
-A|--auto)
|
||||
AUTO=ON; shift ;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
--) shift; break ;;
|
||||
*)
|
||||
usage
|
||||
[[ "$1" =~ ^-[0-9a-zA-Z]{2,}$ ]] && msg_err "don't combine options: ie do [-c -i] instead of [-ci]" || msg_err "unknown option [$1]"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
main
|
||||
|
||||
|
||||
20
bump.sh
20
bump.sh
@@ -1,20 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Use passed argument as new tag
|
||||
[ $# -eq 1 ] && {
|
||||
git tag "$@" || exit 1
|
||||
}
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
tag_prev=$(git tag -l | tail -2 | head -1)
|
||||
tag_curr=$(git tag -l | tail -1)
|
||||
|
||||
./version.sh "$tag_curr"
|
||||
|
||||
sed -r "s/${tag_prev}/${tag_curr}/g" -i README.md CMakeLists.txt contrib/lemonbuddy.aur/PKGBUILD contrib/lemonbuddy.aur/.SRCINFO
|
||||
git add README.md CMakeLists.txt contrib/lemonbuddy.aur/PKGBUILD contrib/lemonbuddy.aur/.SRCINFO
|
||||
git add -u include/version.hpp
|
||||
git commit -m "build: Bump version to ${tag_curr}"
|
||||
|
||||
# Recreate the tag to include the last commit
|
||||
[ $# -eq 1 ] && git tag -f "$@"
|
||||
45
cmake/01-core.cmake
Normal file
45
cmake/01-core.cmake
Normal file
@@ -0,0 +1,45 @@
|
||||
#
|
||||
# Core setup
|
||||
#
|
||||
option(DISABLE_ALL "Set this to ON disable all targets. Individual targets can be enabled explicitly." OFF)
|
||||
|
||||
# If all targets are disabled, we set the default value for options that are on
|
||||
# by default to OFF
|
||||
if (DISABLE_ALL)
|
||||
set(DEFAULT_ON OFF)
|
||||
else()
|
||||
set(DEFAULT_ON ON)
|
||||
endif()
|
||||
|
||||
option(BUILD_POLYBAR "Build the main polybar executable" ${DEFAULT_ON})
|
||||
option(BUILD_POLYBAR_MSG "Build polybar-msg" ${DEFAULT_ON})
|
||||
option(BUILD_TESTS "Build testsuite" OFF)
|
||||
option(BUILD_DOC "Build documentation" ${DEFAULT_ON})
|
||||
option(BUILD_CONFIG "Generate default configuration" ${DEFAULT_ON})
|
||||
option(BUILD_SHELL "Generate shell completion files" ${DEFAULT_ON})
|
||||
|
||||
include(CMakeDependentOption)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_DOC_HTML "Build HTML documentation" ON "BUILD_DOC" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_DOC_MAN "Build manpages" ON "BUILD_DOC" OFF)
|
||||
|
||||
if (BUILD_POLYBAR OR BUILD_TESTS OR BUILD_POLYBAR_MSG)
|
||||
set(BUILD_LIBPOLY ON)
|
||||
else()
|
||||
set(BUILD_LIBPOLY OFF)
|
||||
endif()
|
||||
|
||||
if (BUILD_POLYBAR OR BUILD_POLYBAR_MSG OR BUILD_TESTS)
|
||||
set(HAS_CXX_COMPILATION ON)
|
||||
else()
|
||||
set(HAS_CXX_COMPILATION OFF)
|
||||
endif()
|
||||
|
||||
# Export compile commands used for custom targets
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
# Set default build type if not specified
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
message_colored(STATUS "No build type specified; using ${CMAKE_BUILD_TYPE}" 33)
|
||||
endif()
|
||||
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER)
|
||||
24
cmake/02-opts.cmake
Normal file
24
cmake/02-opts.cmake
Normal file
@@ -0,0 +1,24 @@
|
||||
set(SETTING_ALSA_SOUNDCARD "default"
|
||||
CACHE STRING "Name of the ALSA soundcard driver")
|
||||
set(SETTING_BSPWM_SOCKET_PATH "/tmp/bspwm_0_0-socket"
|
||||
CACHE STRING "Path to bspwm socket")
|
||||
set(SETTING_BSPWM_STATUS_PREFIX "W"
|
||||
CACHE STRING "Prefix prepended to the bspwm status line")
|
||||
set(SETTING_CONNECTION_TEST_IP "8.8.8.8"
|
||||
CACHE STRING "Address to ping when testing network connection")
|
||||
set(SETTING_PATH_ADAPTER "/sys/class/power_supply/%adapter%"
|
||||
CACHE STRING "Path to adapter")
|
||||
set(SETTING_PATH_BACKLIGHT "/sys/class/backlight/%card%"
|
||||
CACHE STRING "Path to backlight sysfs folder")
|
||||
set(SETTING_PATH_BATTERY "/sys/class/power_supply/%battery%"
|
||||
CACHE STRING "Path to battery")
|
||||
set(SETTING_PATH_CPU_INFO "/proc/stat"
|
||||
CACHE STRING "Path to file containing cpu info")
|
||||
set(SETTING_PATH_MEMORY_INFO "/proc/meminfo"
|
||||
CACHE STRING "Path to file containing memory info")
|
||||
set(SETTING_PATH_MESSAGING_FIFO "/tmp/polybar_mqueue.%pid%"
|
||||
CACHE STRING "Path to file containing the current temperature")
|
||||
set(SETTING_PATH_TEMPERATURE_INFO "/sys/class/thermal/thermal_zone%zone%/temp"
|
||||
CACHE STRING "Path to file containing the current temperature")
|
||||
set(SETTING_PATH_THERMAL_ZONE_WILDCARD "/sys/class/thermal/thermal_zone*"
|
||||
CACHE STRING "Wildcard path to different thermal zones")
|
||||
74
cmake/04-targets.cmake
Normal file
74
cmake/04-targets.cmake
Normal file
@@ -0,0 +1,74 @@
|
||||
#
|
||||
# Custom targets
|
||||
#
|
||||
|
||||
# Target: uninstall {{{
|
||||
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/cmake/templates/uninstall.cmake.in
|
||||
${PROJECT_BINARY_DIR}/cmake/uninstall.cmake
|
||||
ESCAPE_QUOTES @ONLY)
|
||||
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P ${PROJECT_BINARY_DIR}/cmake/uninstall.cmake)
|
||||
|
||||
# }}}
|
||||
|
||||
# folders where the clang tools should operate
|
||||
set(CLANG_SEARCH_PATHS ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/tests)
|
||||
|
||||
# Runs clang-format on all source files
|
||||
add_custom_target(
|
||||
clangformat
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/common/file-runner.py
|
||||
--dirs ${CLANG_SEARCH_PATHS}
|
||||
-- clang-format -style=file -i --verbose
|
||||
)
|
||||
|
||||
# Dry-runs clang-format on all source files
|
||||
# Useful for CI since it will exit with an error code
|
||||
add_custom_target(
|
||||
clangformat-dryrun
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/common/file-runner.py
|
||||
--dirs ${CLANG_SEARCH_PATHS}
|
||||
-- clang-format -style=file --dry-run -Werror --verbose
|
||||
)
|
||||
|
||||
# Target: codecheck (clang-tidy) {{{
|
||||
|
||||
add_custom_target(codecheck)
|
||||
add_custom_command(TARGET codecheck
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/common/clang-tidy.sh
|
||||
${PROJECT_BINARY_DIR} ${CLANG_SEARCH_PATHS})
|
||||
|
||||
# }}}
|
||||
# Target: codecheck-fix (clang-tidy + clang-format) {{{
|
||||
|
||||
add_custom_target(codecheck-fix)
|
||||
add_custom_command(TARGET codecheck-fix
|
||||
COMMAND ${PROJECT_SOURCE_DIR}/common/clang-tidy.sh
|
||||
${PROJECT_BINARY_DIR} -fix ${CLANG_SEARCH_PATHS})
|
||||
|
||||
# }}}
|
||||
|
||||
# Target: memcheck (valgrind) {{{
|
||||
|
||||
add_custom_target(memcheck)
|
||||
add_custom_command(TARGET memcheck
|
||||
COMMAND valgrind
|
||||
--leak-check=summary
|
||||
--suppressions=${PROJECT_SOURCE_DIR}/.valgrind-suppressions
|
||||
${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${PROJECT_NAME}
|
||||
example --config=${PROJECT_SOURCE_DIR}/doc/config)
|
||||
|
||||
add_custom_target(memcheck-full)
|
||||
add_custom_command(TARGET memcheck-full
|
||||
COMMAND valgrind
|
||||
--leak-check=full
|
||||
--track-origins=yes
|
||||
--track-fds=yes
|
||||
--suppressions=${PROJECT_SOURCE_DIR}/.valgrind-suppressions
|
||||
${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/${PROJECT_NAME}
|
||||
example --config=${PROJECT_SOURCE_DIR}/doc/config)
|
||||
|
||||
# }}}
|
||||
60
cmake/05-summary.cmake
Normal file
60
cmake/05-summary.cmake
Normal file
@@ -0,0 +1,60 @@
|
||||
#
|
||||
# Output build summary
|
||||
#
|
||||
message(STATUS " Build:")
|
||||
message_colored(STATUS " Version: ${APP_VERSION}" "32;1")
|
||||
message_colored(STATUS " Type: ${CMAKE_BUILD_TYPE}" "37;2")
|
||||
if (HAS_CXX_COMPILATION)
|
||||
message_colored(STATUS " CXX: ${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}} ${cxx_flags_str}" "37;2")
|
||||
message_colored(STATUS " LD: ${CMAKE_LINKER} ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UPPER}} ${cxx_linker_flags_str}" "37;2")
|
||||
endif()
|
||||
if (BUILD_DOC)
|
||||
message_colored(STATUS " sphinx-build: ${BIN_SPHINX} ${SPHINX_FLAGS}" "37;2")
|
||||
endif()
|
||||
|
||||
message(STATUS " Install Paths:")
|
||||
message_colored(STATUS " PREFIX: ${CMAKE_INSTALL_PREFIX}" "32")
|
||||
message_colored(STATUS " BINDIR: ${CMAKE_INSTALL_FULL_BINDIR}" "32")
|
||||
message_colored(STATUS " DATADIR: ${CMAKE_INSTALL_FULL_DATADIR}" "32")
|
||||
message_colored(STATUS " DOCDIR: ${CMAKE_INSTALL_FULL_DOCDIR}" "32")
|
||||
message_colored(STATUS " MANDIR: ${CMAKE_INSTALL_FULL_MANDIR}" "32")
|
||||
message_colored(STATUS " SYSCONFDIR: ${CMAKE_INSTALL_FULL_SYSCONFDIR}" "32")
|
||||
|
||||
message(STATUS " Targets:")
|
||||
colored_option(" polybar" BUILD_POLYBAR)
|
||||
colored_option(" polybar-msg" BUILD_POLYBAR_MSG)
|
||||
colored_option(" testsuite" BUILD_TESTS)
|
||||
colored_option(" documentation" BUILD_DOC)
|
||||
colored_option(" html" BUILD_DOC_HTML)
|
||||
colored_option(" man" BUILD_DOC_MAN)
|
||||
colored_option(" default config" BUILD_CONFIG)
|
||||
colored_option(" shell files" BUILD_SHELL)
|
||||
|
||||
if (BUILD_LIBPOLY)
|
||||
message(STATUS " Module support:")
|
||||
colored_option(" alsa" ENABLE_ALSA ALSA_VERSION)
|
||||
colored_option(" curl" ENABLE_CURL CURL_VERSION)
|
||||
colored_option(" i3" ENABLE_I3)
|
||||
colored_option(" mpd" ENABLE_MPD MPD_VERSION)
|
||||
colored_option(" network (${WIRELESS_LIB})" ENABLE_NETWORK NETWORK_LIBRARY_VERSION)
|
||||
colored_option(" pulseaudio" ENABLE_PULSEAUDIO PULSEAUDIO_VERSION)
|
||||
colored_option(" xkeyboard" WITH_XKB Xcb_XKB_VERSION)
|
||||
|
||||
message(STATUS " X extensions:")
|
||||
colored_option(" xcb-randr" Xcb_RANDR_FOUND Xcb_RANDR_VERSION)
|
||||
colored_option(" xcb-randr (monitor support)" WITH_XRANDR_MONITORS Xcb_RANDR_VERSION)
|
||||
colored_option(" xcb-composite" Xcb_COMPOSITE_FOUND Xcb_COMPOSITE_VERSION)
|
||||
colored_option(" xcb-xkb" WITH_XKB Xcb_XKB_VERSION)
|
||||
colored_option(" xcb-xrm" WITH_XRM Xcb_XRM_VERSION)
|
||||
colored_option(" xcb-cursor" WITH_XCURSOR Xcb_CURSOR_VERSION)
|
||||
|
||||
message(STATUS " Log options:")
|
||||
colored_option(" Trace logging" DEBUG_LOGGER)
|
||||
|
||||
if(CMAKE_BUILD_TYPE_UPPER MATCHES DEBUG)
|
||||
message(STATUS " Debug options:")
|
||||
colored_option(" Trace logging (verbose)" DEBUG_LOGGER_VERBOSE)
|
||||
colored_option(" Draw clickable areas" DEBUG_HINTS)
|
||||
colored_option(" Print fc-match details" DEBUG_FONTCONFIG)
|
||||
endif()
|
||||
endif()
|
||||
116
cmake/common/utils.cmake
Normal file
116
cmake/common/utils.cmake
Normal file
@@ -0,0 +1,116 @@
|
||||
#
|
||||
# Collection of cmake utility functions
|
||||
#
|
||||
|
||||
# message_colored {{{
|
||||
|
||||
function(message_colored message_level text color)
|
||||
string(ASCII 27 esc)
|
||||
message(${message_level} "${esc}[${color}m${text}${esc}[0m")
|
||||
endfunction()
|
||||
|
||||
# }}}
|
||||
# colored_option {{{
|
||||
|
||||
function(colored_option text flag)
|
||||
if(ARGC GREATER 2 AND NOT "${${ARGV2}}" STREQUAL "")
|
||||
set(text "${text} (${${ARGV2}})")
|
||||
endif()
|
||||
|
||||
if(${flag})
|
||||
message_colored(STATUS "[X]${text}" "32;1")
|
||||
else()
|
||||
message_colored(STATUS "[ ]${text}" "37;2")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# }}}
|
||||
|
||||
# find_package_impl {{{
|
||||
|
||||
# Uses PkgConfig to search for pkg_config_name
|
||||
#
|
||||
# Defines the following variables:
|
||||
# ${find_pkg_name}_FOUND - True if the package has been found
|
||||
# ${find_pkg_name}_INCLUDE_DIR - <...>_INCLUDE_DIRS exported by pkg_check_modules
|
||||
# ${find_pkg_name}_INCLUDE_DIRS - Same as ${find_pkg_name}_INCLUDE_DIR
|
||||
# ${find_pkg_name}_LIBRARY - <...>_LIBRARIES exported by pkg_check_modules
|
||||
# ${find_pkg_name}_LIBRARIES - Same as ${find_pkg_name}_LIBRARY
|
||||
# ${find_pkg_name}_VERSION - <...>_VERSION exported by pkg_check_modules
|
||||
#
|
||||
macro(find_package_impl pkg_config_name find_pkg_name header_to_find)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
pkg_check_modules(PC_${find_pkg_name} REQUIRED ${pkg_config_name})
|
||||
|
||||
if (NOT ${header_to_find} STREQUAL "")
|
||||
find_path(PC_${find_pkg_name}_INCLUDE_DIRS_
|
||||
NAMES "${header_to_find}"
|
||||
HINTS "${PC_${find_pkg_name}_INCLUDE_DIRS}"
|
||||
)
|
||||
set(PC_${find_pkg_name}_INCLUDE_DIRS ${PC_${find_pkg_name}_INCLUDE_DIRS_})
|
||||
endif()
|
||||
|
||||
set(${find_pkg_name}_INCLUDE_DIR ${PC_${find_pkg_name}_INCLUDE_DIRS})
|
||||
set(${find_pkg_name}_INCLUDE_DIRS ${${find_pkg_name}_INCLUDE_DIR})
|
||||
set(${find_pkg_name}_LIBRARY ${PC_${find_pkg_name}_LIBRARIES})
|
||||
set(${find_pkg_name}_VERSION ${PC_${find_pkg_name}_VERSION})
|
||||
set(${find_pkg_name}_LIBRARIES ${${find_pkg_name}_LIBRARY})
|
||||
|
||||
find_package_handle_standard_args(${find_pkg_name}
|
||||
REQUIRED_VARS
|
||||
${find_pkg_name}_INCLUDE_DIRS
|
||||
${find_pkg_name}_LIBRARIES
|
||||
VERSION_VAR
|
||||
${find_pkg_name}_VERSION
|
||||
)
|
||||
|
||||
mark_as_advanced(${find_pkg_name}_INCLUDE_DIR ${find_pkg_name}_LIBRARY)
|
||||
endmacro()
|
||||
|
||||
# }}}
|
||||
# create_imported_target {{{
|
||||
function(create_imported_target library_name includes libraries)
|
||||
add_library(${library_name} INTERFACE IMPORTED)
|
||||
set_target_properties(${library_name} PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "${libraries}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${includes}"
|
||||
)
|
||||
endfunction()
|
||||
# }}}
|
||||
# checklib {{{
|
||||
|
||||
function(checklib flag type pkg)
|
||||
if(NOT DEFINED ${flag})
|
||||
if(${type} STREQUAL "cmake")
|
||||
find_package(${pkg} QUIET)
|
||||
set(${flag} ${${pkg}_FOUND} CACHE BOOL "")
|
||||
elseif(${type} STREQUAL "pkg-config")
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(PKG_${flag} QUIET ${pkg})
|
||||
set(${flag} ${PKG_${flag}_FOUND} CACHE BOOL "")
|
||||
elseif(${type} STREQUAL "binary")
|
||||
find_program(BIN_${flag} ${pkg})
|
||||
set(${flag} ${BIN_${flag}} CACHE BOOL "")
|
||||
else()
|
||||
message(FATAL_ERROR "Invalid lookup type '${type}'")
|
||||
endif()
|
||||
mark_as_advanced(${flag})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(get_include_dirs output)
|
||||
get_filename_component(generated_sources_dir ${CMAKE_BINARY_DIR}/generated-sources ABSOLUTE)
|
||||
get_filename_component(include_dir ${CMAKE_SOURCE_DIR}/include ABSOLUTE)
|
||||
|
||||
set(${output} ${include_dir} ${generated_sources_dir} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(get_sources_dirs output)
|
||||
get_filename_component(src_dir ${CMAKE_SOURCE_DIR}/src ABSOLUTE)
|
||||
|
||||
set(${output} ${src_dir} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# }}}
|
||||
108
cmake/cxx.cmake
Normal file
108
cmake/cxx.cmake
Normal file
@@ -0,0 +1,108 @@
|
||||
option(ENABLE_CCACHE "Enable ccache support" ON)
|
||||
if(ENABLE_CCACHE)
|
||||
find_program(BIN_CCACHE ccache)
|
||||
mark_as_advanced(BIN_CCACHE)
|
||||
|
||||
if(NOT BIN_CCACHE)
|
||||
message_colored(STATUS "Couldn't locate ccache, disabling ccache..." "33")
|
||||
else()
|
||||
# Enable only if the binary is found
|
||||
message_colored(STATUS "Using compiler cache ${BIN_CCACHE}" "32")
|
||||
set(CMAKE_CXX_COMPILER_LAUNCHER ${BIN_CCACHE} CACHE STRING "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(CXXLIB_CLANG "Link against libc++" OFF)
|
||||
option(CXXLIB_GCC "Link against stdlibc++" OFF)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
|
||||
set(POLYBAR_FLAGS "" CACHE STRING "C++ compiler flags used for compiling polybar")
|
||||
|
||||
list(APPEND cxx_base -Wall -Wextra -Wpedantic -Wdeprecated-copy-dtor)
|
||||
list(APPEND cxx_debug -DDEBUG -g2 -Og)
|
||||
list(APPEND cxx_minsizerel "")
|
||||
list(APPEND cxx_sanitize ${cxx_debug} -O0 -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls)
|
||||
list(APPEND cxx_coverage ${cxx_debug} --coverage)
|
||||
|
||||
list(APPEND cxx_linker_base "")
|
||||
list(APPEND cxx_linker_minsizerel "")
|
||||
|
||||
# Compiler flags
|
||||
include(CheckCXXCompilerFlag)
|
||||
check_cxx_compiler_flag("-Wsuggest-override" HAS_SUGGEST_OVERRIDE)
|
||||
if (HAS_SUGGEST_OVERRIDE)
|
||||
list(APPEND cxx_base -Wsuggest-override)
|
||||
endif()
|
||||
unset(HAS_SUGGEST_OVERRIDE)
|
||||
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
# Need dprintf() for FreeBSD 11.1 and older
|
||||
# libinotify uses c99 extension, so suppress this error
|
||||
list(APPEND cxx_base -D_WITH_DPRINTF -Wno-c99-extensions)
|
||||
# Ensures that libraries from dependencies in LOCALBASE are used
|
||||
list(APPEND cxx_linker_base -L/usr/local/lib)
|
||||
endif()
|
||||
|
||||
# Check compiler
|
||||
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||
list(APPEND cxx_base -Wno-error=parentheses-equality -Wno-zero-length-array)
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.4.0")
|
||||
message_colored(FATAL_ERROR "Compiler not supported (Requires clang-3.4+ or gcc-5.1+)" 31)
|
||||
else()
|
||||
message_colored(STATUS "Using supported compiler ${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}" 32)
|
||||
endif()
|
||||
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
|
||||
list(APPEND cxx_minsizerel -fdata-sections -ffunction-sections -flto)
|
||||
list(APPEND cxx_linker_minsizerel -Wl,--gc-sections)
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.1.0")
|
||||
message_colored(FATAL_ERROR "Compiler not supported (Requires clang-3.4+ or gcc-5.1+)" 31)
|
||||
else()
|
||||
message_colored(STATUS "Using supported compiler ${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION}" 32)
|
||||
endif()
|
||||
else()
|
||||
message_colored(WARNING "Using unsupported compiler ${CMAKE_CXX_COMPILER_ID}-${CMAKE_CXX_COMPILER_VERSION} !" 31)
|
||||
endif()
|
||||
|
||||
# Set compiler and linker flags for preferred C++ library
|
||||
if(CXXLIB_CLANG)
|
||||
message_colored(STATUS "Linking against libc++" 32)
|
||||
list(APPEND cxx_base -stdlib=libc++)
|
||||
list(APPEND cxx_linker_base -lc++ -lc++abi)
|
||||
elseif(CXXLIB_GCC)
|
||||
message_colored(STATUS "Linking against libstdc++" 32)
|
||||
list(APPEND cxx_linker_base -lstdc++)
|
||||
endif()
|
||||
|
||||
SET(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_COVERAGE}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${CMAKE_EXE_LINKER_FLAGS_COVERAGE}")
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${CMAKE_SHARED_LINKER_FLAGS_COVERAGE}")
|
||||
|
||||
list(APPEND cxx_flags ${cxx_base})
|
||||
list(APPEND cxx_linker_flags ${cxx_linker_base})
|
||||
|
||||
if (CMAKE_BUILD_TYPE_UPPER STREQUAL "DEBUG")
|
||||
list(APPEND cxx_flags ${cxx_debug})
|
||||
elseif (CMAKE_BUILD_TYPE_UPPER STREQUAL "MINSIZEREL")
|
||||
list(APPEND cxx_flags ${cxx_minsizerel})
|
||||
list(APPEND cxx_linker_flags ${cxx_linker_minsizerel})
|
||||
elseif (CMAKE_BUILD_TYPE_UPPER STREQUAL "SANITIZE")
|
||||
list(APPEND cxx_flags ${cxx_sanitize})
|
||||
elseif (CMAKE_BUILD_TYPE_UPPER STREQUAL "COVERAGE")
|
||||
list(APPEND cxx_flags ${cxx_coverage})
|
||||
endif()
|
||||
|
||||
string(REPLACE " " ";" polybar_flags_list "${POLYBAR_FLAGS}")
|
||||
list(APPEND cxx_flags ${polybar_flags_list})
|
||||
|
||||
list(APPEND cxx_linker_flags ${cxx_flags})
|
||||
|
||||
string(REPLACE ";" " " cxx_flags_str "${cxx_flags}")
|
||||
string(REPLACE ";" " " cxx_linker_flags_str "${cxx_linker_flags}")
|
||||
|
||||
# TODO use target_link_options once min cmake version is >= 3.13
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${cxx_linker_flags_str}")
|
||||
107
cmake/libpoly.cmake
Normal file
107
cmake/libpoly.cmake
Normal file
@@ -0,0 +1,107 @@
|
||||
# Sets up options and dependencies for libpoly
|
||||
|
||||
|
||||
# Automatically enable all optional dependencies that are available on the machine
|
||||
checklib(ENABLE_ALSA "pkg-config" alsa)
|
||||
checklib(ENABLE_CURL "pkg-config" libcurl)
|
||||
checklib(ENABLE_I3 "binary" i3)
|
||||
checklib(ENABLE_MPD "pkg-config" libmpdclient)
|
||||
checklib(WITH_LIBNL "pkg-config" libnl-genl-3.0)
|
||||
if(WITH_LIBNL)
|
||||
checklib(ENABLE_NETWORK "pkg-config" libnl-genl-3.0)
|
||||
set(WIRELESS_LIB "libnl")
|
||||
else()
|
||||
checklib(ENABLE_NETWORK "cmake" Libiw)
|
||||
set(WIRELESS_LIB "wireless-tools")
|
||||
endif()
|
||||
checklib(ENABLE_PULSEAUDIO "pkg-config" libpulse)
|
||||
checklib(WITH_XKB "pkg-config" xcb-xkb)
|
||||
checklib(WITH_XRM "pkg-config" xcb-xrm)
|
||||
checklib(WITH_XRANDR_MONITORS "pkg-config" "xcb-randr>=1.12")
|
||||
checklib(WITH_XCURSOR "pkg-config" "xcb-cursor")
|
||||
|
||||
option(ENABLE_ALSA "Enable alsa support" ON)
|
||||
option(ENABLE_CURL "Enable curl support" ON)
|
||||
option(ENABLE_I3 "Enable i3 support" ON)
|
||||
option(ENABLE_MPD "Enable mpd support" ON)
|
||||
option(WITH_LIBNL "Use netlink interface for wireless" ON)
|
||||
option(ENABLE_NETWORK "Enable network support" ON)
|
||||
option(ENABLE_XKEYBOARD "Enable xkeyboard support" ON)
|
||||
option(ENABLE_PULSEAUDIO "Enable PulseAudio support" ON)
|
||||
|
||||
option(WITH_XRANDR_MONITORS "xcb-randr monitor support" ON)
|
||||
option(WITH_XKB "xcb-xkb support" ON)
|
||||
option(WITH_XRM "xcb-xrm support" ON)
|
||||
option(WITH_XCURSOR "xcb-cursor support" ON)
|
||||
|
||||
option(DEBUG_LOGGER "Trace logging" ON)
|
||||
|
||||
if(CMAKE_BUILD_TYPE_UPPER MATCHES DEBUG)
|
||||
option(DEBUG_LOGGER_VERBOSE "Trace logging (verbose)" OFF)
|
||||
option(DEBUG_HINTS "Debug clickable areas" OFF)
|
||||
option(DEBUG_WHITESPACE "Debug whitespace" OFF)
|
||||
option(DEBUG_FONTCONFIG "Debug fontconfig" OFF)
|
||||
endif()
|
||||
|
||||
# Load all packages for enabled components
|
||||
|
||||
find_package(Threads REQUIRED)
|
||||
find_package(CairoFC REQUIRED)
|
||||
find_package(Freetype REQUIRED)
|
||||
|
||||
find_package(LibUV 1.3.0 REQUIRED)
|
||||
|
||||
if (ENABLE_ALSA)
|
||||
find_package(ALSA REQUIRED)
|
||||
endif()
|
||||
|
||||
if (ENABLE_CURL)
|
||||
find_package(CURL REQUIRED)
|
||||
endif()
|
||||
|
||||
if (ENABLE_MPD)
|
||||
find_package(LibMPDClient REQUIRED)
|
||||
set(MPD_VERSION ${LibMPDClient_VERSION})
|
||||
endif()
|
||||
|
||||
if (ENABLE_NETWORK)
|
||||
if(WITH_LIBNL)
|
||||
find_package(LibNlGenl3 REQUIRED)
|
||||
set(NETWORK_LIBRARY_VERSION ${LibNlGenl3_VERSION})
|
||||
else()
|
||||
find_package(Libiw REQUIRED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ENABLE_PULSEAUDIO)
|
||||
find_package(LibPulse REQUIRED)
|
||||
set(PULSEAUDIO_VERSION ${LibPulse_VERSION})
|
||||
endif()
|
||||
|
||||
# xcomposite is required
|
||||
list(APPEND XORG_EXTENSIONS COMPOSITE)
|
||||
if (WITH_XKB)
|
||||
list(APPEND XORG_EXTENSIONS XKB)
|
||||
endif()
|
||||
if (WITH_XCURSOR)
|
||||
list(APPEND XORG_EXTENSIONS CURSOR)
|
||||
endif()
|
||||
if (WITH_XRM)
|
||||
list(APPEND XORG_EXTENSIONS XRM)
|
||||
endif()
|
||||
|
||||
# Set min xrandr version required
|
||||
if (WITH_XRANDR_MONITORS)
|
||||
set(XRANDR_VERSION "1.12")
|
||||
else ()
|
||||
set(XRANDR_VERSION "")
|
||||
endif()
|
||||
|
||||
# Randr is required. Searches for randr only because we may do a version check
|
||||
find_package(Xcb ${XRANDR_VERSION} REQUIRED COMPONENTS RANDR)
|
||||
find_package(Xcb REQUIRED COMPONENTS ${XORG_EXTENSIONS})
|
||||
|
||||
# FreeBSD Support
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
|
||||
find_package(LibInotify REQUIRED)
|
||||
endif()
|
||||
14
cmake/modules/FindALSA.cmake
Normal file
14
cmake/modules/FindALSA.cmake
Normal file
@@ -0,0 +1,14 @@
|
||||
# This module defines an imported target `ALSA::ALSA` if alsa is found
|
||||
#
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# ALSA_FOUND
|
||||
# ALSA_INCLUDE_DIR
|
||||
# ALSA_INCLUDE_DIRS
|
||||
# ALSA_LIBRARY
|
||||
# ALSA_LIBRARIES
|
||||
# ALSA_VERSION
|
||||
find_package_impl("alsa" "ALSA" "alsa/asoundlib.h")
|
||||
|
||||
if(ALSA_FOUND AND NOT TARGET ALSA::ALSA)
|
||||
create_imported_target("ALSA::ALSA" "${ALSA_INCLUDE_DIR}" "${ALSA_LIBRARY}")
|
||||
endif()
|
||||
14
cmake/modules/FindCURL.cmake
Normal file
14
cmake/modules/FindCURL.cmake
Normal file
@@ -0,0 +1,14 @@
|
||||
# This module defines an imported target `CURL::libcurl` if libcurl is found
|
||||
#
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# CURL_FOUND
|
||||
# CURL_INCLUDE_DIR
|
||||
# CURL_INCLUDE_DIRS
|
||||
# CURL_LIBRARY
|
||||
# CURL_LIBRARIES
|
||||
# CURL_VERSION
|
||||
find_package_impl("libcurl" "CURL" "curl/curl.h")
|
||||
|
||||
if(CURL_FOUND AND NOT TARGET CURL::libcurl)
|
||||
create_imported_target("CURL::libcurl" "${CURL_INCLUDE_DIR}" "${CURL_LIBRARY}")
|
||||
endif()
|
||||
14
cmake/modules/FindCairoFC.cmake
Normal file
14
cmake/modules/FindCairoFC.cmake
Normal file
@@ -0,0 +1,14 @@
|
||||
# This module defines an imported target `Cairo::CairoFC` if cairo-fc is found
|
||||
#
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# CairoFC_FOUND
|
||||
# CairoFC_INCLUDE_DIR
|
||||
# CairoFC_INCLUDE_DIRS
|
||||
# CairoFC_LIBRARY
|
||||
# CairoFC_LIBRARIES
|
||||
# CairoFC_VERSION
|
||||
find_package_impl("cairo-fc" "CairoFC" "")
|
||||
|
||||
if(CairoFC_FOUND AND NOT TARGET Cairo::CairoFC)
|
||||
create_imported_target("Cairo::CairoFC" "${CairoFC_INCLUDE_DIR}" "${CairoFC_LIBRARY}")
|
||||
endif()
|
||||
14
cmake/modules/FindLibInotify.cmake
Normal file
14
cmake/modules/FindLibInotify.cmake
Normal file
@@ -0,0 +1,14 @@
|
||||
# This module defines an imported target `LibInotify::LibInotify` if libinotify is found
|
||||
#
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# LibInotify_FOUND
|
||||
# LibInotify_INCLUDE_DIR
|
||||
# LibInotify_INCLUDE_DIRS
|
||||
# LibInotify_LIBRARY
|
||||
# LibInotify_LIBRARIES
|
||||
# LibInotify_VERSION
|
||||
find_package_impl("libinotify" "LibInotify" "")
|
||||
|
||||
if(LibInotify_FOUND AND NOT TARGET LibInotify::LibInotify)
|
||||
create_imported_target("LibInotify::LibInotify" "${LibInotify_INCLUDE_DIR}" "${LibInotify_LIBRARY}")
|
||||
endif()
|
||||
@@ -1,31 +1,14 @@
|
||||
# - Try to find LibMPDClient
|
||||
# Once done, this will define
|
||||
# This module defines an imported target `LibMPDClient::LibMPDClient` if libmpdclient is found
|
||||
#
|
||||
# LIBMPDCLIENT_FOUND - System has LibMPDClient
|
||||
# LIBMPDCLIENT_INCLUDE_DIRS - The LibMPDClient include directories
|
||||
# LIBMPDCLIENT_LIBRARIES - The libraries needed to use LibMPDClient
|
||||
# LIBMPDCLIENT_DEFINITIONS - Compiler switches required for using LibMPDClient
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# LibMPDClient_FOUND
|
||||
# LibMPDClient_INCLUDE_DIR
|
||||
# LibMPDClient_INCLUDE_DIRS
|
||||
# LibMPDClient_LIBRARY
|
||||
# LibMPDClient_LIBRARIES
|
||||
# LibMPDClient_VERSION
|
||||
find_package_impl("libmpdclient" "LibMPDClient" "mpd/player.h")
|
||||
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(PC_LIBMPDCLIENT QUIET libmpdclient)
|
||||
set(LIBMPDCLIENT_DEFINITIONS ${PC_LIBMPDCLIENT_CFLAGS_OTHER})
|
||||
|
||||
find_path(LIBMPDCLIENT_INCLUDE_DIR
|
||||
NAMES mpd/player.h
|
||||
HINTS ${PC_LIBMPDCLIENT_INCLUDEDIR} ${PC_LIBMPDCLIENT_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
find_library(LIBMPDCLIENT_LIBRARY
|
||||
NAMES mpdclient
|
||||
HINTS ${PC_LIBMPDCLIENT_LIBDIR} ${PC_LIBMPDCLIENT_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
set(LIBMPDCLIENT_LIBRARIES ${LIBMPDCLIENT_LIBRARY})
|
||||
set(LIBMPDCLIENT_INCLUDE_DIRS ${LIBMPDCLIENT_INCLUDE_DIR})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LibMPDClient DEFAULT_MSG
|
||||
LIBMPDCLIENT_LIBRARY LIBMPDCLIENT_INCLUDE_DIR
|
||||
)
|
||||
|
||||
mark_as_advanced(LIBMPDCLIENT_LIBRARY LIBMPDCLIENT_INCLUDE_DIR)
|
||||
if(LibMPDClient_FOUND AND NOT TARGET LibMPDClient::LibMPDClient)
|
||||
create_imported_target("LibMPDClient::LibMPDClient" "${LibMPDClient_INCLUDE_DIR}" "${LibMPDClient_LIBRARY}")
|
||||
endif()
|
||||
|
||||
14
cmake/modules/FindLibNlGenl3.cmake
Normal file
14
cmake/modules/FindLibNlGenl3.cmake
Normal file
@@ -0,0 +1,14 @@
|
||||
# This module defines an imported target `LibNlGenl3::LibNlGenl3` if libnl-genl-3.0 is found
|
||||
#
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# LibNlGenl3_FOUND
|
||||
# LibNlGenl3_INCLUDE_DIR
|
||||
# LibNlGenl3_INCLUDE_DIRS
|
||||
# LibNlGenl3_LIBRARY
|
||||
# LibNlGenl3_LIBRARIES
|
||||
# LibNlGenl3_VERSION
|
||||
find_package_impl("libnl-genl-3.0" "LibNlGenl3" "")
|
||||
|
||||
if(LibNlGenl3_FOUND AND NOT TARGET LibNlGenl3::LibNlGenl3)
|
||||
create_imported_target("LibNlGenl3::LibNlGenl3" "${LibNlGenl3_INCLUDE_DIR}" "${LibNlGenl3_LIBRARY}")
|
||||
endif()
|
||||
14
cmake/modules/FindLibPulse.cmake
Normal file
14
cmake/modules/FindLibPulse.cmake
Normal file
@@ -0,0 +1,14 @@
|
||||
# This module defines an imported target `LibPulse::LibPulse` if libpulse is found
|
||||
#
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# LibPulse_FOUND
|
||||
# LibPulse_INCLUDE_DIR
|
||||
# LibPulse_INCLUDE_DIRS
|
||||
# LibPulse_LIBRARY
|
||||
# LibPulse_LIBRARIES
|
||||
# LibPulse_VERSION
|
||||
find_package_impl("libpulse" "LibPulse" "pulse/version.h")
|
||||
|
||||
if(LibPulse_FOUND AND NOT TARGET LibPulse::LibPulse)
|
||||
create_imported_target("LibPulse::LibPulse" "${LibPulse_INCLUDE_DIR}" "${LibPulse_LIBRARY}")
|
||||
endif()
|
||||
13
cmake/modules/FindLibUV.cmake
Normal file
13
cmake/modules/FindLibUV.cmake
Normal file
@@ -0,0 +1,13 @@
|
||||
# This module defines
|
||||
# LibUV_FOUND
|
||||
# LibUV_INCLUDE_DIR
|
||||
# LibUV_INCLUDE_DIRS
|
||||
# LibUV_LIBRARY
|
||||
# LibUV_LIBRARIES
|
||||
# LibUV_VERSION
|
||||
|
||||
find_package_impl("libuv" "LibUV" "uv.h")
|
||||
|
||||
if(LibUV_FOUND AND NOT TARGET LibUV::LibUV)
|
||||
create_imported_target("LibUV::LibUV" "${LibUV_INCLUDE_DIR}" "${LibUV_LIBRARY}")
|
||||
endif()
|
||||
@@ -6,7 +6,7 @@
|
||||
find_library(LIBIW_LIBRARY iw)
|
||||
|
||||
if(LIBIW_LIBRARY)
|
||||
set(LIBIW_LIBRARIES ${LIBIW_LIBRARY})
|
||||
set(LIBIW_LIBRARIES ${LIBIW_LIBRARY})
|
||||
endif(LIBIW_LIBRARY)
|
||||
|
||||
find_path(LIBIW_INCLUDE_DIR NAMES iwlib.h)
|
||||
@@ -15,3 +15,7 @@ include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Libiw DEFAULT_MSG LIBIW_LIBRARY LIBIW_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(LIBIW_INCLUDE_DIR LIBIW_LIBRARY)
|
||||
|
||||
if(Libiw_FOUND AND NOT TARGET Libiw::Libiw)
|
||||
create_imported_target("Libiw::Libiw" "${LIBIW_INCLUDE_DIR}" "${LIBIW_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
# - Try to find libX11-xcb
|
||||
# Once done this will define
|
||||
#
|
||||
# X11_XCB_FOUND - system has libX11-xcb
|
||||
# X11_XCB_LIBRARIES - Link these to use libX11-xcb
|
||||
# X11_XCB_INCLUDE_DIR - the libX11-xcb include dir
|
||||
# X11_XCB_DEFINITIONS - compiler switches required for using libX11-xcb
|
||||
|
||||
# Copyright (c) 2011 Fredrik Höglund <fredrik@kde.org>
|
||||
# Copyright (c) 2008 Helio Chissini de Castro, <helio@kde.org>
|
||||
# Copyright (c) 2007 Matthias Kretz, <kretz@kde.org>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
IF (NOT WIN32)
|
||||
# use pkg-config to get the directories and then use these values
|
||||
# in the FIND_PATH() and FIND_LIBRARY() calls
|
||||
FIND_PACKAGE(PkgConfig)
|
||||
PKG_CHECK_MODULES(PKG_X11_XCB QUIET x11-xcb)
|
||||
|
||||
SET(X11_XCB_DEFINITIONS ${PKG_X11_XCB_CFLAGS})
|
||||
|
||||
FIND_PATH(X11_XCB_INCLUDE_DIR NAMES X11/Xlib-xcb.h HINTS ${PKG_X11_XCB_INCLUDE_DIRS})
|
||||
FIND_LIBRARY(X11_XCB_LIBRARIES NAMES X11-xcb HINTS ${PKG_X11_XCB_LIBRARY_DIRS})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(X11_XCB DEFAULT_MSG X11_XCB_LIBRARIES X11_XCB_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(X11_XCB_INCLUDE_DIR X11_XCB_LIBRARIES)
|
||||
ENDIF (NOT WIN32)
|
||||
@@ -1,244 +0,0 @@
|
||||
# Try to find XCB on a Unix system
|
||||
#
|
||||
# This will define:
|
||||
#
|
||||
# XCB_FOUND - True if xcb is available
|
||||
# XCB_LIBRARIES - Link these to use xcb
|
||||
# XCB_INCLUDE_DIRS - Include directory for xcb
|
||||
# XCB_DEFINITIONS - Compiler flags for using xcb
|
||||
#
|
||||
# In addition the following more fine grained variables will be defined:
|
||||
#
|
||||
# XCB_XCB_FOUND XCB_XCB_INCLUDE_DIR XCB_XCB_LIBRARY
|
||||
# XCB_UTIL_FOUND XCB_UTIL_INCLUDE_DIR XCB_UTIL_LIBRARY
|
||||
# XCB_COMPOSITE_FOUND XCB_COMPOSITE_INCLUDE_DIR XCB_COMPOSITE_LIBRARY
|
||||
# XCB_DAMAGE_FOUND XCB_DAMAGE_INCLUDE_DIR XCB_DAMAGE_LIBRARY
|
||||
# XCB_XFIXES_FOUND XCB_XFIXES_INCLUDE_DIR XCB_XFIXES_LIBRARY
|
||||
# XCB_RENDER_FOUND XCB_RENDER_INCLUDE_DIR XCB_RENDER_LIBRARY
|
||||
# XCB_RANDR_FOUND XCB_RANDR_INCLUDE_DIR XCB_RANDR_LIBRARY
|
||||
# XCB_SHAPE_FOUND XCB_SHAPE_INCLUDE_DIR XCB_SHAPE_LIBRARY
|
||||
# XCB_DRI2_FOUND XCB_DRI2_INCLUDE_DIR XCB_DRI2_LIBRARY
|
||||
# XCB_GLX_FOUND XCB_GLX_INCLUDE_DIR XCB_GLX_LIBRARY
|
||||
# XCB_SHM_FOUND XCB_SHM_INCLUDE_DIR XCB_SHM_LIBRARY
|
||||
# XCB_XV_FOUND XCB_XV_INCLUDE_DIR XCB_XV_LIBRARY
|
||||
# XCB_SYNC_FOUND XCB_SYNC_INCLUDE_DIR XCB_SYNC_LIBRARY
|
||||
# XCB_XTEST_FOUND XCB_XTEST_INCLUDE_DIR XCB_XTEST_LIBRARY
|
||||
# XCB_ICCCM_FOUND XCB_ICCCM_INCLUDE_DIR XCB_ICCCM_LIBRARY
|
||||
# XCB_EWMH_FOUND XCB_EWMH_INCLUDE_DIR XCB_EWMH_LIBRARY
|
||||
# XCB_IMAGE_FOUND XCB_IMAGE_INCLUDE_DIR XCB_IMAGE_LIBRARY
|
||||
# XCB_RENDERUTIL_FOUND XCB_RENDERUTIL_INCLUDE_DIR XCB_RENDERUTIL_LIBRARY
|
||||
# XCB_KEYSYMS_FOUND XCB_KEYSYMS_INCLUDE_DIR XCB_KEYSYMS_LIBRARY
|
||||
#
|
||||
# Copyright (c) 2011 Fredrik Höglund <fredrik@kde.org>
|
||||
# Copyright (c) 2013 Martin Gräßlin <mgraesslin@kde.org>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
set(knownComponents XCB
|
||||
COMPOSITE
|
||||
DAMAGE
|
||||
DRI2
|
||||
EWMH
|
||||
GLX
|
||||
ICCCM
|
||||
IMAGE
|
||||
KEYSYMS
|
||||
RANDR
|
||||
RENDER
|
||||
RENDERUTIL
|
||||
SHAPE
|
||||
SHM
|
||||
SYNC
|
||||
UTIL
|
||||
XFIXES
|
||||
XTEST
|
||||
XV
|
||||
XINERAMA)
|
||||
|
||||
unset(unknownComponents)
|
||||
|
||||
set(pkgConfigModules)
|
||||
set(requiredComponents)
|
||||
|
||||
if (XCB_FIND_COMPONENTS)
|
||||
set(comps ${XCB_FIND_COMPONENTS})
|
||||
else()
|
||||
set(comps ${knownComponents})
|
||||
endif()
|
||||
|
||||
# iterate through the list of requested components, and check that we know them all.
|
||||
# If not, fail.
|
||||
foreach(comp ${comps})
|
||||
list(FIND knownComponents ${comp} index )
|
||||
if("${index}" STREQUAL "-1")
|
||||
list(APPEND unknownComponents "${comp}")
|
||||
else()
|
||||
if("${comp}" STREQUAL "XCB")
|
||||
list(APPEND pkgConfigModules "xcb")
|
||||
elseif("${comp}" STREQUAL "COMPOSITE")
|
||||
list(APPEND pkgConfigModules "xcb-composite")
|
||||
elseif("${comp}" STREQUAL "DAMAGE")
|
||||
list(APPEND pkgConfigModules "xcb-damage")
|
||||
elseif("${comp}" STREQUAL "DRI2")
|
||||
list(APPEND pkgConfigModules "xcb-dri2")
|
||||
elseif("${comp}" STREQUAL "EWMH")
|
||||
list(APPEND pkgConfigModules "xcb-ewmh")
|
||||
elseif("${comp}" STREQUAL "GLX")
|
||||
list(APPEND pkgConfigModules "xcb-glx")
|
||||
elseif("${comp}" STREQUAL "ICCCM")
|
||||
list(APPEND pkgConfigModules "xcb-icccm")
|
||||
elseif("${comp}" STREQUAL "IMAGE")
|
||||
list(APPEND pkgConfigModules "xcb-image")
|
||||
elseif("${comp}" STREQUAL "KEYSYMS")
|
||||
list(APPEND pkgConfigModules "xcb-keysyms")
|
||||
elseif("${comp}" STREQUAL "RANDR")
|
||||
list(APPEND pkgConfigModules "xcb-randr")
|
||||
elseif("${comp}" STREQUAL "RENDER")
|
||||
list(APPEND pkgConfigModules "xcb-render")
|
||||
elseif("${comp}" STREQUAL "RENDERUTIL")
|
||||
list(APPEND pkgConfigModules "xcb-renderutil")
|
||||
elseif("${comp}" STREQUAL "SHAPE")
|
||||
list(APPEND pkgConfigModules "xcb-shape")
|
||||
elseif("${comp}" STREQUAL "SHM")
|
||||
list(APPEND pkgConfigModules "xcb-shm")
|
||||
elseif("${comp}" STREQUAL "SYNC")
|
||||
list(APPEND pkgConfigModules "xcb-sync")
|
||||
elseif("${comp}" STREQUAL "UTIL")
|
||||
list(APPEND pkgConfigModules "xcb-util")
|
||||
elseif("${comp}" STREQUAL "XFIXES")
|
||||
list(APPEND pkgConfigModules "xcb-xfixes")
|
||||
elseif("${comp}" STREQUAL "XTEST")
|
||||
list(APPEND pkgConfigModules "xcb-xtest")
|
||||
elseif("${comp}" STREQUAL "XV")
|
||||
list(APPEND pkgConfigModules "xcb-xv")
|
||||
elseif("${comp}" STREQUAL "XINERAMA")
|
||||
list(APPEND pkgConfigModules "xcb-xinerama")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
||||
if(DEFINED unknownComponents)
|
||||
set(msgType STATUS)
|
||||
if(XCB_FIND_REQUIRED)
|
||||
set(msgType FATAL_ERROR)
|
||||
endif()
|
||||
if(NOT XCB_FIND_QUIETLY)
|
||||
message(${msgType} "XCB: requested unknown components ${unknownComponents}")
|
||||
endif()
|
||||
return()
|
||||
endif()
|
||||
|
||||
macro(_XCB_HANDLE_COMPONENT _comp)
|
||||
set(_header )
|
||||
set(_lib )
|
||||
if("${_comp}" STREQUAL "XCB")
|
||||
set(_header "xcb/xcb.h")
|
||||
set(_lib "xcb")
|
||||
elseif("${_comp}" STREQUAL "COMPOSITE")
|
||||
set(_header "xcb/composite.h")
|
||||
set(_lib "xcb-composite")
|
||||
elseif("${_comp}" STREQUAL "DAMAGE")
|
||||
set(_header "xcb/damage.h")
|
||||
set(_lib "xcb-damage")
|
||||
elseif("${_comp}" STREQUAL "DRI2")
|
||||
set(_header "xcb/dri2.h")
|
||||
set(_lib "xcb-dri2")
|
||||
elseif("${_comp}" STREQUAL "EWMH")
|
||||
set(_header "xcb/xcb_ewmh.h")
|
||||
set(_lib "xcb-ewmh")
|
||||
elseif("${_comp}" STREQUAL "GLX")
|
||||
set(_header "xcb/glx.h")
|
||||
set(_lib "xcb-glx")
|
||||
elseif("${_comp}" STREQUAL "ICCCM")
|
||||
set(_header "xcb/xcb_icccm.h")
|
||||
set(_lib "xcb-icccm")
|
||||
elseif("${_comp}" STREQUAL "IMAGE")
|
||||
set(_header "xcb/xcb_image.h")
|
||||
set(_lib "xcb-image")
|
||||
elseif("${_comp}" STREQUAL "KEYSYMS")
|
||||
set(_header "xcb/xcb_keysyms.h")
|
||||
set(_lib "xcb-keysyms")
|
||||
elseif("${_comp}" STREQUAL "RANDR")
|
||||
set(_header "xcb/randr.h")
|
||||
set(_lib "xcb-randr")
|
||||
elseif("${_comp}" STREQUAL "RENDER")
|
||||
set(_header "xcb/render.h")
|
||||
set(_lib "xcb-render")
|
||||
elseif("${_comp}" STREQUAL "RENDERUTIL")
|
||||
set(_header "xcb/xcb_renderutil.h")
|
||||
set(_lib "xcb-render-util")
|
||||
elseif("${_comp}" STREQUAL "SHAPE")
|
||||
set(_header "xcb/shape.h")
|
||||
set(_lib "xcb-shape")
|
||||
elseif("${_comp}" STREQUAL "SHM")
|
||||
set(_header "xcb/shm.h")
|
||||
set(_lib "xcb-shm")
|
||||
elseif("${_comp}" STREQUAL "SYNC")
|
||||
set(_header "xcb/sync.h")
|
||||
set(_lib "xcb-sync")
|
||||
elseif("${_comp}" STREQUAL "UTIL")
|
||||
set(_header "xcb/xcb_util.h")
|
||||
set(_lib "xcb-util")
|
||||
elseif("${_comp}" STREQUAL "XFIXES")
|
||||
set(_header "xcb/xfixes.h")
|
||||
set(_lib "xcb-xfixes")
|
||||
elseif("${_comp}" STREQUAL "XTEST")
|
||||
set(_header "xcb/xtest.h")
|
||||
set(_lib "xcb-xtest")
|
||||
elseif("${_comp}" STREQUAL "XV")
|
||||
set(_header "xcb/xv.h")
|
||||
set(_lib "xcb-xv")
|
||||
elseif("${_comp}" STREQUAL "XINERAMA")
|
||||
set(_header "xcb/xinerama.h")
|
||||
set(_lib "xcb-xinerama")
|
||||
endif()
|
||||
|
||||
find_path(XCB_${_comp}_INCLUDE_DIR NAMES ${_header} HINTS ${PKG_XCB_INCLUDE_DIRS})
|
||||
find_library(XCB_${_comp}_LIBRARY NAMES ${_lib} HINTS ${PKG_XCB_LIBRARY_DIRS})
|
||||
|
||||
if(XCB_${_comp}_INCLUDE_DIR AND XCB_${_comp}_LIBRARY)
|
||||
list(APPEND XCB_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR})
|
||||
list(APPEND XCB_LIBRARIES ${XCB_${_comp}_LIBRARY})
|
||||
if (NOT XCB_FIND_QUIETLY)
|
||||
message(STATUS "XCB[${_comp}]: Found component ${_comp}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(XCB_FIND_REQUIRED_${_comp})
|
||||
list(APPEND requiredComponents XCB_${_comp}_FOUND)
|
||||
endif()
|
||||
|
||||
find_package_handle_standard_args(XCB_${_comp} DEFAULT_MSG XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(XCB_${_comp}_LIBRARY XCB_${_comp}_INCLUDE_DIR)
|
||||
|
||||
# compatibility for old variable naming
|
||||
set(XCB_${_comp}_INCLUDE_DIRS ${XCB_${_comp}_INCLUDE_DIR})
|
||||
set(XCB_${_comp}_LIBRARIES ${XCB_${_comp}_LIBRARY})
|
||||
endmacro()
|
||||
|
||||
IF (NOT WIN32)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
# Use pkg-config to get the directories and then use these values
|
||||
# in the FIND_PATH() and FIND_LIBRARY() calls
|
||||
find_package(PkgConfig)
|
||||
pkg_check_modules(PKG_XCB QUIET ${pkgConfigModules})
|
||||
|
||||
set(XCB_DEFINITIONS ${PKG_XCB_CFLAGS})
|
||||
|
||||
foreach(comp ${comps})
|
||||
_xcb_handle_component(${comp})
|
||||
endforeach()
|
||||
|
||||
if(XCB_INCLUDE_DIRS)
|
||||
list(REMOVE_DUPLICATES XCB_INCLUDE_DIRS)
|
||||
endif()
|
||||
|
||||
find_package_handle_standard_args(XCB DEFAULT_MSG XCB_LIBRARIES XCB_INCLUDE_DIRS ${requiredComponents})
|
||||
|
||||
# compatibility for old variable naming
|
||||
set(XCB_INCLUDE_DIR ${XCB_INCLUDE_DIRS})
|
||||
|
||||
ENDIF (NOT WIN32)
|
||||
59
cmake/modules/FindXcb.cmake
Normal file
59
cmake/modules/FindXcb.cmake
Normal file
@@ -0,0 +1,59 @@
|
||||
# Loads multiple XCB components
|
||||
# Version checks will be made against all requested components
|
||||
#
|
||||
# For each component ${comp} it does the following:
|
||||
#
|
||||
# Defines an imported target `Xcb::${comp}` if xcb-${comp} is found
|
||||
#
|
||||
# Defines the following Variables (see find_package_impl for more info):
|
||||
# Xcb_${comp}_FOUND
|
||||
# Xcb_${comp}_INCLUDE_DIR
|
||||
# Xcb_${comp}_INCLUDE_DIRS
|
||||
# Xcb_${comp}_LIBRARY
|
||||
# Xcb_${comp}_LIBRARIES
|
||||
# Xcb_${comp}_VERSION
|
||||
|
||||
# This script only supports the following components of XCB
|
||||
set(XCB_known_components
|
||||
XCB
|
||||
RANDR
|
||||
COMPOSITE
|
||||
XKB
|
||||
XRM
|
||||
CURSOR)
|
||||
|
||||
# Deducing header from the name of the component
|
||||
foreach(_comp ${XCB_known_components})
|
||||
string(TOLOWER "${_comp}" _lc_comp)
|
||||
set(XCB_${_comp}_pkg_config "xcb-${_lc_comp}")
|
||||
set(XCB_${_comp}_header "xcb/${_lc_comp}.h")
|
||||
endforeach()
|
||||
# Exception cases
|
||||
set(XCB_XRM_header "xcb/xcb_xrm.h")
|
||||
set(XCB_CURSOR_header "xcb/xcb_cursor.h")
|
||||
|
||||
foreach(_comp ${Xcb_FIND_COMPONENTS})
|
||||
if (NOT ${_comp} IN_LIST XCB_known_components)
|
||||
message(FATAL_ERROR "Unknow component \"${_comp}\" of XCB")
|
||||
endif()
|
||||
|
||||
# Forward the different find options set for FindXcb to the individual
|
||||
# components. This is required because find_package_handle_standard_args in
|
||||
# find_package_impl uses these variables for version checks and other things.
|
||||
set(Xcb_${_comp}_FIND_VERSION ${Xcb_FIND_VERSION})
|
||||
set(Xcb_${_comp}_FIND_QUIETLY ${Xcb_FIND_QUIETLY})
|
||||
set(Xcb_${_comp}_FIND_REQUIRED ${Xcb_FIND_REQUIRED})
|
||||
|
||||
# Bypass developer warning that the first argument to
|
||||
# find_package_handle_standard_args (Xcb_...) does not match the name of the
|
||||
# calling package (Xcb)
|
||||
# https://cmake.org/cmake/help/v3.17/module/FindPackageHandleStandardArgs.html
|
||||
set(FPHSA_NAME_MISMATCHED TRUE)
|
||||
find_package_impl(${XCB_${_comp}_pkg_config} "Xcb_${_comp}" "${XCB_${_comp}_header}")
|
||||
|
||||
if(Xcb_${_comp}_FOUND AND NOT TARGET Xcb::${_comp})
|
||||
create_imported_target("Xcb::${_comp}" "${Xcb_${_comp}_INCLUDE_DIRS}" "${Xcb_${_comp}_LIBRARIES}")
|
||||
elseif(NOT Xcb_${_comp}_FOUND AND Xcb_FIND_REQUIRED)
|
||||
message(FATAL_ERROR "Xcb: Required component \"${_comp}\" was not found")
|
||||
endif()
|
||||
endforeach()
|
||||
23
cmake/templates/uninstall.cmake.in
Normal file
23
cmake/templates/uninstall.cmake.in
Normal file
@@ -0,0 +1,23 @@
|
||||
set(INSTALL_MANIFEST "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
if(NOT EXISTS ${INSTALL_MANIFEST})
|
||||
message(FATAL_ERROR "Cannot find install manifest: ${INSTALL_MANIFEST}")
|
||||
endif()
|
||||
|
||||
file(READ ${INSTALL_MANIFEST} files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
list(REVERSE files)
|
||||
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(EXISTS "$ENV{DESTDIR}${file}")
|
||||
execute_process(COMMAND "@CMAKE_COMMAND@"
|
||||
-E remove "$ENV{DESTDIR}${file}"
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RESULT_VARIABLE rm_retval)
|
||||
if(NOT ${rm_retval} EQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist")
|
||||
endif()
|
||||
endforeach()
|
||||
@@ -1,26 +0,0 @@
|
||||
set(INSTALL_MANIFEST "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
|
||||
if (NOT EXISTS ${INSTALL_MANIFEST})
|
||||
message(FATAL_ERROR
|
||||
"Cannot find install manifest:
|
||||
\"${INSTALL_MANIFEST}\"")
|
||||
endif(NOT EXISTS ${INSTALL_MANIFEST})
|
||||
|
||||
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
list(REVERSE files)
|
||||
|
||||
foreach (file ${files})
|
||||
message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"")
|
||||
if (EXISTS "$ENV{DESTDIR}${file}")
|
||||
execute_process(
|
||||
COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}"
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RESULT_VARIABLE rm_retval)
|
||||
if(NOT ${rm_retval} EQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"")
|
||||
endif (NOT ${rm_retval} EQUAL 0)
|
||||
else (EXISTS "$ENV{DESTDIR}${file}")
|
||||
message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.")
|
||||
endif (EXISTS "$ENV{DESTDIR}${file}")
|
||||
endforeach(file)
|
||||
45
common/ci/configure.sh
Executable file
45
common/ci/configure.sh
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
if [ -d "$BUILD_DIR" ]; then
|
||||
rm -Rf "$BUILD_DIR"
|
||||
fi
|
||||
|
||||
mkdir -p "${BUILD_DIR}"
|
||||
cd "${BUILD_DIR}"
|
||||
|
||||
if [ "$POLYBAR_BUILD_TYPE" != "minimal" ]; then
|
||||
ENABLE_PULSEAUDIO=ON
|
||||
ENABLE_NETWORK=ON
|
||||
ENABLE_MPD=ON
|
||||
ENABLE_CURL=ON
|
||||
ENABLE_ALSA=ON
|
||||
ENABLE_I3=ON
|
||||
WITH_XRM=ON
|
||||
WITH_XKB=ON
|
||||
WITH_XRANDR_MONITORS=ON
|
||||
WITH_XCURSOR=ON
|
||||
fi
|
||||
|
||||
if [ "$POLYBAR_BUILD_TYPE" = "tests" ]; then
|
||||
BUILD_TESTS=ON
|
||||
fi
|
||||
|
||||
cmake \
|
||||
-DCMAKE_CXX_COMPILER="${CXX}" \
|
||||
-DPOLYBAR_FLAGS="${CXXFLAGS} -Werror" \
|
||||
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
|
||||
-DBUILD_TESTS:BOOL="${BUILD_TESTS:-OFF}" \
|
||||
-DBUILD_DOC:BOOL=OFF \
|
||||
-DENABLE_PULSEAUDIO="${ENABLE_PULSEAUDIO:-OFF}" \
|
||||
-DENABLE_NETWORK="${ENABLE_NETWORK:-OFF}" \
|
||||
-DENABLE_MPD="${ENABLE_MPD:-OFF}" \
|
||||
-DENABLE_CURL="${ENABLE_CURL:-OFF}" \
|
||||
-DENABLE_ALSA="${ENABLE_ALSA:-OFF}" \
|
||||
-DENABLE_I3="${ENABLE_I3:-OFF}" \
|
||||
-DWITH_XRM="${WITH_XRM:-OFF}" \
|
||||
-DWITH_XKB="${WITH_XKB:-OFF}" \
|
||||
-DWITH_XRANDR_MONITORS="${WITH_XRANDR_MONITORS:-OFF}" \
|
||||
-DWITH_XCURSOR="${WITH_XCURSOR:-OFF}" \
|
||||
..
|
||||
19
common/ci/summary.sh
Executable file
19
common/ci/summary.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
set -x
|
||||
|
||||
"${CXX}" --version
|
||||
cmake --version
|
||||
|
||||
set +x
|
||||
|
||||
echo "PATH=${PATH}"
|
||||
echo "CXX=${CXX}"
|
||||
echo "CXXFLAGS=${CXXFLAGS}"
|
||||
echo "LDFLAGS=${LDFLAGS}"
|
||||
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
|
||||
echo "MAKEFLAGS=${MAKEFLAGS}"
|
||||
echo "POLYBAR_BUILD_TYPE=${POLYBAR_BUILD_TYPE}"
|
||||
echo "CMAKE_BUILD_TYPE=${BUILD_TYPE}"
|
||||
26
common/clang-tidy.sh
Executable file
26
common/clang-tidy.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
main() {
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "$0 build_path [-fix] DIR..." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
args="-p $1"; shift
|
||||
|
||||
if [ "$1" = "-fix" ]; then
|
||||
args="${args} -fix"; shift
|
||||
fi
|
||||
|
||||
# Search paths
|
||||
search="${*:-.}"
|
||||
|
||||
echo "$0 in $search"
|
||||
|
||||
# shellcheck disable=2086
|
||||
find $search -iname "*.cpp" \
|
||||
-exec printf "\\033[32;1m** \\033[0mProcessing %s\\n" {} \; \
|
||||
-exec clang-tidy $args {} \;
|
||||
}
|
||||
|
||||
main "$@"
|
||||
50
common/file-runner.py
Executable file
50
common/file-runner.py
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from pathlib import Path
|
||||
import sys
|
||||
import os
|
||||
import argparse
|
||||
import subprocess
|
||||
|
||||
EXTENSIONS = set('.' + ext for ext in ['c', 'h', 'cpp', 'hpp', 'inl'])
|
||||
|
||||
|
||||
def get_files(dirs):
|
||||
"""
|
||||
Generator which yields all files in the given directories with any of the
|
||||
EXTENSIONS.
|
||||
"""
|
||||
for dir in dirs:
|
||||
for root, _, files in os.walk(dir):
|
||||
for file in files:
|
||||
path = Path(os.path.join(root, file))
|
||||
if path.suffix in EXTENSIONS:
|
||||
yield path
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="""
|
||||
Run command on all C/C++ source files in the given directories
|
||||
""")
|
||||
parser.add_argument('--dirs', type=Path, nargs='+',
|
||||
help='Directories to search in')
|
||||
parser.add_argument('command', nargs='+',
|
||||
help='Command to which to pass found files')
|
||||
args = parser.parse_args()
|
||||
|
||||
all_files = list(str(file) for file in get_files(args.dirs))
|
||||
|
||||
if not all_files:
|
||||
print("No files found")
|
||||
sys.exit(1)
|
||||
|
||||
result = subprocess.run(args.command + all_files)
|
||||
print(f'Formatted {len(all_files)} files')
|
||||
|
||||
if result.returncode != 0:
|
||||
sys.exit(result.returncode)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
922
config
922
config
@@ -1,922 +0,0 @@
|
||||
[settings]
|
||||
; Limit the amount of events sent to lemonbar within a set timeframe:
|
||||
; - "Allow <throttle_limit> updates within <throttle_ms> of time"
|
||||
; Default values:
|
||||
throttle_limit = 5
|
||||
throttle_ms = 50
|
||||
|
||||
;
|
||||
; Bar configurations
|
||||
; ---------------------------------------
|
||||
;
|
||||
; Quote the value to keep spaces:
|
||||
; key = " value"
|
||||
;
|
||||
; Values for the current bar can be accessed using:
|
||||
; ${BAR.foreground}
|
||||
;
|
||||
; Other values can be referenced using:
|
||||
; ${section.key}
|
||||
;
|
||||
; format-NAME = <TAG...>
|
||||
; label-NAME[-(foreground|background|(under|over)line|font|padding)] =
|
||||
; icon-NAME[-(foreground|background|(under|over)line|font|padding)] =
|
||||
; ramp-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] =
|
||||
; animation-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] =
|
||||
;
|
||||
; bar-NAME-width =
|
||||
; bar-NAME-format = (tokens: %fill% %indicator% %empty%)
|
||||
; bar-NAME-foreground-[0-9]+ =
|
||||
; bar-NAME-indicator[-(foreground|background|(under|over)line|font|padding)] =
|
||||
; bar-NAME-fill[-(foreground|background|(under|over)line|font|padding)] =
|
||||
; bar-NAME-empty[-(foreground|background|(under|over)line|font|padding)] =
|
||||
;
|
||||
; These keys can be used to style the module container
|
||||
; format-NAME-spacing = N (unit: whitespace)
|
||||
; format-NAME-padding = N (unit: whitespace)
|
||||
; format-NAME-margin = N (unit: whitespace)
|
||||
; format-NAME-offset = N (unit: pixels)
|
||||
; format-NAME-foreground = #hexcolor
|
||||
; format-NAME-background = #hexcolor
|
||||
; format-NAME-underline = #hexcolor
|
||||
; format-NAME-overline = #hexcolor
|
||||
;
|
||||
; Module types:
|
||||
; internal/backlight
|
||||
; internal/battery
|
||||
; internal/bspwm
|
||||
; internal/cpu
|
||||
; internal/date
|
||||
; internal/i3
|
||||
; internal/memory
|
||||
; internal/mpd
|
||||
; internal/network
|
||||
; internal/volume
|
||||
;
|
||||
; custom/text
|
||||
; content
|
||||
; click-(left|middle|right)
|
||||
; scroll-(up|down)
|
||||
; custom/script
|
||||
; exec
|
||||
; interval
|
||||
; format
|
||||
; click-(left|middle|right)
|
||||
; scroll-(up|down)
|
||||
; custom/menu
|
||||
; format
|
||||
; label-open
|
||||
; label-close
|
||||
; menu-LEVEL-n
|
||||
; menu-LEVEL-n-exec
|
||||
;
|
||||
|
||||
[bar/top]
|
||||
monitor = eDP-1
|
||||
width = 100%
|
||||
height = 30
|
||||
clickareas = 35
|
||||
|
||||
background = #222222
|
||||
foreground = #eefafafa
|
||||
linecolor = ${bar/top.background}
|
||||
|
||||
;separator = |
|
||||
|
||||
spacing = 3
|
||||
lineheight = 14
|
||||
;padding_left = 5
|
||||
;padding_right = 2
|
||||
module_margin_left = 3
|
||||
module_margin_right = 3
|
||||
|
||||
font-0 = NotoSans-Regular:size=8;0
|
||||
font-1 = MaterialIcons:size=10;0
|
||||
font-2 = Termsynu:size=8;-1
|
||||
font-3 = FontAwesome:size=10;0
|
||||
|
||||
modules-left = powermenu mpd
|
||||
modules-right = backlight volume wireless-network wired-network battery date
|
||||
; modules-right = battery
|
||||
|
||||
[bar/bottom]
|
||||
monitor = eDP-1
|
||||
bottom = true
|
||||
width = 100%
|
||||
height = 27
|
||||
;clickareas = 25
|
||||
|
||||
background = #111111
|
||||
foreground = #ccffffff
|
||||
linecolor = ${bar/bottom.background}
|
||||
|
||||
spacing = 3
|
||||
lineheight = 2
|
||||
;padding_left = 0
|
||||
padding_right = 4
|
||||
module_margin_left = 0
|
||||
module_margin_right = 6
|
||||
|
||||
; font-idx = font:size=N;offsetY
|
||||
font-0 = NotoSans-Regular:size=8;0
|
||||
font-1 = Unifont:size=6;-3
|
||||
;font-1 = Termsynu:size=8;-1
|
||||
font-2 = FontAwesome:size=8;-2
|
||||
font-3 = NotoSans-Regular:size=8;-1
|
||||
font-4 = MaterialIcons:size=10;-1
|
||||
|
||||
modules-left = bspwm
|
||||
modules-right = cpu memory
|
||||
; modules-right = cpu memory
|
||||
|
||||
[bar/external_bottom]
|
||||
monitor = HDMI-1
|
||||
bottom = true
|
||||
width = 100%
|
||||
height = 27
|
||||
;clickareas = 25
|
||||
|
||||
background = #111111
|
||||
foreground = #ccffffff
|
||||
linecolor = ${bar/external_bottom.background}
|
||||
|
||||
spacing = 3
|
||||
lineheight = 2
|
||||
;padding_left = 0
|
||||
padding_right = 3
|
||||
module_margin_left = 0
|
||||
module_margin_right = 6
|
||||
|
||||
font-0 = NotoSans-Regular:size=8;0
|
||||
font-1 = Unifont:size=6;-3
|
||||
font-2 = FontAwesome:size=8;-2
|
||||
font-3 = NotoSans-Regular:size=8;-1
|
||||
font-4 = MaterialIcons:size=10;0
|
||||
|
||||
modules-left = bspwm
|
||||
modules-right = clock
|
||||
|
||||
|
||||
[module/backlight]
|
||||
type = internal/backlight
|
||||
|
||||
; Use the following command to list available cards:
|
||||
; $ ls -1 /sys/class/backlight/
|
||||
card = intel_backlight
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
; <bar>
|
||||
format = %{A4:backlight_percentage%__p5:}%{A5:backlight_percentage%__m5:} <ramp> <bar> %{A}%{A}
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
;label = %percentage%
|
||||
|
||||
; Required if <ramp> is used
|
||||
ramp-0 =
|
||||
ramp-1 =
|
||||
ramp-2 =
|
||||
|
||||
; Required if <bar> is used
|
||||
bar-width = 10
|
||||
bar-format = %{+u}%{+o}%fill%%{-u}%{-o}%indicator%%{+u}%{+o}%empty%%{-u}%{-o}
|
||||
bar-indicator = |
|
||||
bar-indicator-foreground = #ddffffff
|
||||
bar-indicator-font = 3
|
||||
bar-fill = █
|
||||
bar-fill-foreground = #99ffffff
|
||||
bar-fill-font = 3
|
||||
bar-empty = █
|
||||
bar-empty-font = 3
|
||||
bar-empty-foreground = #44ffffff
|
||||
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
|
||||
;battery = BAT0
|
||||
;adapter = ADP1
|
||||
full_at = 99
|
||||
|
||||
; Available tags:
|
||||
; <label-charging> (default)
|
||||
; <bar-capaity>
|
||||
; <ramp-capacity>
|
||||
; <animation-charging>
|
||||
format-charging = Charging <animation-charging> <label-charging>
|
||||
|
||||
; Available tags:
|
||||
; <label-discharging> (default)
|
||||
; <bar-capaity>
|
||||
; <ramp-capacity>
|
||||
format-discharging = Discharging <ramp-capacity> <label-discharging>
|
||||
|
||||
; Available tags:
|
||||
; <label-full> (default)
|
||||
; <bar-capaity>
|
||||
; <ramp-capacity>
|
||||
format-full = Fully charged <ramp-capacity> <label-full>
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
;label-charging = Charging %percentage%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
;label-discharging = Discharging %percentage%
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
;label-full = Fully charged
|
||||
|
||||
; Required if <ramp-capacity> is used
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-0-foreground = #f53c3c
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-1-foreground = #ffa900
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-2-foreground = #ffffff
|
||||
ramp-capacity-3 =
|
||||
ramp-capacity-3-foreground = #ffffff
|
||||
ramp-capacity-4 =
|
||||
ramp-capacity-4-foreground = #ffffff
|
||||
|
||||
; Required if <bar-capacity> is used
|
||||
bar-capacity-width = 10
|
||||
bar-capacity-format = %{+u}%{+o}%fill%%empty%%{-u}%{-o}
|
||||
bar-capacity-fill = █
|
||||
bar-capacity-fill-foreground = #ddffffff
|
||||
bar-capacity-fill-font = 3
|
||||
bar-capacity-empty = █
|
||||
bar-capacity-empty-font = 3
|
||||
bar-capacity-empty-foreground = #44ffffff
|
||||
|
||||
; Required if <animation-charging> is used
|
||||
; animation-charging-0 = %{T3}%{F#ddffffff}%{+u}%{+o}█%{F#44ffffff}█████████%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-1 = %{T3}%{F#ddffffff}%{+u}%{+o}██%{F#44ffffff}████████%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-2 = %{T3}%{F#ddffffff}%{+u}%{+o}███%{F#44ffffff}███████%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-3 = %{T3}%{F#ddffffff}%{+u}%{+o}████%{F#44ffffff}██████%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-4 = %{T3}%{F#ddffffff}%{+u}%{+o}█████%{F#44ffffff}█████%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-5 = %{T3}%{F#ddffffff}%{+u}%{+o}██████%{F#44ffffff}████%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-6 = %{T3}%{F#ddffffff}%{+u}%{+o}███████%{F#44ffffff}███%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-7 = %{T3}%{F#ddffffff}%{+u}%{+o}████████%{F#44ffffff}██%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-8 = %{T3}%{F#ddffffff}%{+u}%{+o}█████████%{F#44ffffff}█%{T-}%{F-}%{-u}%{-o}
|
||||
; animation-charging-9 = %{T3}%{F#ddffffff}%{+u}%{+o}██████████%{T-}%{F-}%{-u}%{-o}
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-3 =
|
||||
animation-charging-4 =
|
||||
animation-charging-framerate_ms = 750
|
||||
|
||||
[module/bspwm]
|
||||
type = internal/bspwm
|
||||
|
||||
; workspace_icon-[0-9]+ = label;icon
|
||||
; workspace_icon-default = icon
|
||||
workspace_icon-0 = term;
|
||||
workspace_icon-1 = web;
|
||||
workspace_icon-2 = code;
|
||||
workspace_icon-3 = music;
|
||||
workspace_icon-4 = irssi;
|
||||
workspace_icon-default =
|
||||
|
||||
; Available tags:
|
||||
; <label-state> (default) - gets replaced with <label-(active|urgent|occupied|empty)>
|
||||
; <label-mode> - gets replaced with <label-(monocle|tiled|fullscreen|floating|locked|sticky|private)>
|
||||
format = <label-state> <label-mode>
|
||||
|
||||
; If any of these are defined, the workspace/mode colors will get overridden
|
||||
; with these values if the monitor is out of focus
|
||||
;label-dimmed-foreground = #555
|
||||
;label-dimmed-background = ${BAR.background}
|
||||
label-dimmed-underline = ${BAR.background}
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-active = %icon%
|
||||
label-active-foreground = #ffffff
|
||||
label-active-background = #3f3f3f
|
||||
label-active-underline = #fba922
|
||||
label-active-font = 4
|
||||
label-active-padding = 4
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-occupied = %icon%
|
||||
label-occupied-underline = #555555
|
||||
label-occupied-font = 4
|
||||
label-occupied-padding = 4
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-urgent = %icon%
|
||||
label-urgent-foreground = #000000
|
||||
label-urgent-background = #bd2c40
|
||||
label-urgent-underline = #9b0a20
|
||||
label-urgent-font = 4
|
||||
label-urgent-padding = 4
|
||||
|
||||
; Available tokens:
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-empty = %icon%
|
||||
label-empty-foreground = #55ffffff
|
||||
label-empty-font = 4
|
||||
label-empty-padding = 4
|
||||
|
||||
; Available tokens:
|
||||
; None
|
||||
label-monocle =
|
||||
label-monocle-underline = ${module/bspwm.label-active-underline}
|
||||
label-monocle-padding = 2
|
||||
;label-tiled =
|
||||
;label-fullscreen =
|
||||
;label-floating =
|
||||
label-locked =
|
||||
label-locked-foreground = #bd2c40
|
||||
label-locked-underline = ${module/bspwm.label-monocle-underline}
|
||||
label-locked-padding = ${module/bspwm.label-monocle-padding}
|
||||
label-sticky =
|
||||
label-sticky-foreground = #fba922
|
||||
label-sticky-underline = ${module/bspwm.label-monocle-underline}
|
||||
label-sticky-padding = ${module/bspwm.label-monocle-padding}
|
||||
label-private =
|
||||
label-private-foreground = #bd2c40
|
||||
label-private-underline = ${module/bspwm.label-monocle-underline}
|
||||
label-private-padding = ${module/bspwm.label-monocle-padding}
|
||||
|
||||
[module/i3]
|
||||
type = internal/i3
|
||||
|
||||
; workspace_icon-[0-9]+ = label;icon
|
||||
; workspace_icon-default = icon
|
||||
workspace_icon-0 = 1;
|
||||
workspace_icon-1 = 2;
|
||||
workspace_icon-2 = 3;
|
||||
workspace_icon-3 = 4;
|
||||
workspace_icon-4 = 5;
|
||||
workspace_icon-default =
|
||||
|
||||
; Available tags:
|
||||
; <label-state> (default) - gets replaced with <label-(focused|unfocused|visible|urgent)>
|
||||
;format = <label-state>
|
||||
|
||||
; If any of these are defined, the workspace/mode colors will get overridden
|
||||
; with these values if the monitor is out of focus
|
||||
;label-dimmed-foreground = #555
|
||||
;label-dimmed-background = ${BAR.background}
|
||||
label-dimmed-underline = ${BAR.background}
|
||||
|
||||
; Available tokens-
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-focused = %icon%
|
||||
label-focused-foreground = #ffffff
|
||||
label-focused-background = #3f3f3f
|
||||
label-focused-underline = #fba922
|
||||
label-focused-font = 4
|
||||
label-focused-padding = 4
|
||||
|
||||
; Available tokens-
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-unfocused = %icon%
|
||||
|
||||
; Available tokens-
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-visible = %icon%
|
||||
label-visible-underline = #555555
|
||||
label-visible-font = 4
|
||||
label-visible-padding = 4
|
||||
|
||||
; Available tokens-
|
||||
; %name%
|
||||
; %icon%
|
||||
; %index%
|
||||
; Default- %icon% %name%
|
||||
label-urgent = %icon%
|
||||
label-urgent-foreground = #000000
|
||||
label-urgent-background = #bd2c40
|
||||
label-urgent-underline = #9b0a20
|
||||
label-urgent-font = 4
|
||||
label-urgent-padding = 4
|
||||
|
||||
; Available tokens-
|
||||
; None
|
||||
label-monocle =
|
||||
label-monocle-underline = ${module/bspwm.label-active-underline}
|
||||
label-monocle-padding = 2
|
||||
;label-tiled =
|
||||
;label-fullscreen =
|
||||
;label-floating =
|
||||
label-locked =
|
||||
label-locked-foreground = #bd2c40
|
||||
label-locked-underline = ${module/bspwm.label-monocle-underline}
|
||||
label-locked-padding = ${module/bspwm.label-monocle-padding}
|
||||
label-sticky =
|
||||
label-sticky-foreground = #fba922
|
||||
label-sticky-underline = ${module/bspwm.label-monocle-underline}
|
||||
label-sticky-padding = ${module/bspwm.label-monocle-padding}
|
||||
label-private =
|
||||
label-private-foreground = #bd2c40
|
||||
label-private-underline = ${module/bspwm.label-monocle-underline}
|
||||
label-private-padding = ${module/bspwm.label-monocle-padding}
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
|
||||
; Seconds to sleep between updates
|
||||
interval = 0.5
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
; <bar-load>
|
||||
; <ramp-load>
|
||||
; <ramp-load_per_core>
|
||||
format = <label> <ramp-load_per_core>
|
||||
|
||||
; Available tokens-
|
||||
; %percentage% (default)
|
||||
label = CPU
|
||||
|
||||
; Required if <ramp-core_load> is used
|
||||
ramp-load_per_core-0 = ▁
|
||||
ramp-load_per_core-0-font = 2
|
||||
ramp-load_per_core-0-foreground = #55aa55
|
||||
ramp-load_per_core-1 = ▂
|
||||
ramp-load_per_core-1-font = 2
|
||||
ramp-load_per_core-1-foreground = #55aa55
|
||||
ramp-load_per_core-2 = ▃
|
||||
ramp-load_per_core-2-font = 2
|
||||
ramp-load_per_core-2-foreground = #55aa55
|
||||
ramp-load_per_core-3 = ▄
|
||||
ramp-load_per_core-3-font = 2
|
||||
ramp-load_per_core-3-foreground = #55aa55
|
||||
ramp-load_per_core-4 = ▅
|
||||
ramp-load_per_core-4-font = 2
|
||||
ramp-load_per_core-4-foreground = #f5a70a
|
||||
ramp-load_per_core-5 = ▆
|
||||
ramp-load_per_core-5-font = 2
|
||||
ramp-load_per_core-5-foreground = #f5a70a
|
||||
ramp-load_per_core-6 = ▇
|
||||
ramp-load_per_core-6-font = 2
|
||||
ramp-load_per_core-6-foreground = #ff5555
|
||||
ramp-load_per_core-7 = █
|
||||
ramp-load_per_core-7-font = 2
|
||||
ramp-load_per_core-7-foreground = #ff5555
|
||||
|
||||
; Required if <bar-total_load> is used
|
||||
;bar-total_load-width = 10
|
||||
;bar-total_load-indicator = |
|
||||
;bar-total_load-fill = =
|
||||
;bar-total_load-empty = =
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
|
||||
; see "man date" for formatting
|
||||
; if date_detailed is defined, clicking the area will toggle between formats
|
||||
; if you want to use lemonbar tags here you need to use %%{...}
|
||||
date = %%{F#888}%Y-%m-%d%%{F-} %%{F#fff}%H-%M%%{F-}
|
||||
date_detailed = %%{F#888}%A, %d %B %Y %%{F#fff}%H-%M%%{F#666}-%%{F#fba922}%S%%{F-}
|
||||
|
||||
; Seconds to sleep between updates
|
||||
;interval = 1.0
|
||||
|
||||
; Available tags:
|
||||
; <date> (default)
|
||||
format = <date>
|
||||
format-background = #111
|
||||
format-padding = 5
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
|
||||
; Seconds to sleep between updates
|
||||
;interval = 1.0
|
||||
|
||||
; Available tags:
|
||||
; <label> (default)
|
||||
; <bar-used>
|
||||
; <bar-free>
|
||||
format = <label> <bar-used>
|
||||
|
||||
; Available tokens-
|
||||
; %percentage_used% (default)
|
||||
; %percentage_free%
|
||||
; %gb_used%
|
||||
; %gb_free%
|
||||
; %gb_total%
|
||||
; %mb_used%
|
||||
; %mb_free%
|
||||
; %mb_total%
|
||||
label = RAM
|
||||
|
||||
; Required if <bar-used> is used
|
||||
bar-used-width = 50
|
||||
bar-used-foreground-0 = #55aa55
|
||||
bar-used-foreground-1 = #557755
|
||||
bar-used-foreground-2 = #f5a70a
|
||||
bar-used-foreground-3 = #ff5555
|
||||
bar-used-indicator = ▐
|
||||
bar-used-indicator-font = 2
|
||||
bar-used-indicator-foreground = #ddffffff
|
||||
bar-used-fill = ▐
|
||||
bar-used-fill-font = 2
|
||||
bar-used-empty = ▐
|
||||
bar-used-empty-font = 2
|
||||
bar-used-empty-foreground = #444444
|
||||
|
||||
; Required if <bar-free> is used
|
||||
;bar-free-width = 50
|
||||
;bar-free-foreground-0 = #ff5555
|
||||
;bar-free-foreground-1 = #f5a70a
|
||||
;bar-free-foreground-2 = #557755
|
||||
;bar-free-foreground-3 = #55aa55
|
||||
;bar-free-indicator = ▐
|
||||
;bar-free-indicator-font = 2
|
||||
;bar-free-indicator-foreground = #ddffffff
|
||||
;bar-free-fill = ▐
|
||||
;bar-free-fill-font = 2
|
||||
;bar-free-empty = ▐
|
||||
;bar-free-empty-font = 2
|
||||
;bar-free-empty-foreground = #444444
|
||||
|
||||
[module/mpd]
|
||||
type = internal/mpd
|
||||
|
||||
; Seconds to sleep between progressbar/song timer updates
|
||||
;interval = 0.5
|
||||
|
||||
; Available tags:
|
||||
; <label-song> (default)
|
||||
; <label-time>
|
||||
; <bar-progress>
|
||||
; <toggle> - gets replaced with <icon-(pause|play)>
|
||||
; <icon-random>
|
||||
; <icon-repeat>
|
||||
; <icon-repeatone>
|
||||
; <icon-prev>
|
||||
; <icon-stop>
|
||||
; <icon-play>
|
||||
; <icon-pause>
|
||||
; <icon-next>
|
||||
format-online = <icon-prev> <icon-stop> <toggle> <icon-next> <icon-repeat> <icon-random> <bar-progress> <label-time> <label-song>
|
||||
|
||||
; Available tags:
|
||||
; <label-offline>
|
||||
format-offline = <label-offline>
|
||||
format-offline-offset = -8
|
||||
|
||||
; Available tokens:
|
||||
; %artist%
|
||||
; %album%
|
||||
; %title%
|
||||
; Default- %artist% - %title%
|
||||
;label-song = %artist% - %title%
|
||||
;label-song-foreground = ${BAR.foreground}
|
||||
|
||||
; Available tokens:
|
||||
; %elapsed%
|
||||
; %total%
|
||||
; Default- %elapsed% / %total%
|
||||
;label-time = %elapsed% / %total%
|
||||
label-time-foreground = #66fafafa
|
||||
|
||||
; Available tokens:
|
||||
; None
|
||||
label-offline = mpd is off
|
||||
label-offline-foreground = #66fafafa
|
||||
|
||||
icon-play =
|
||||
icon-pause =
|
||||
icon-stop =
|
||||
icon-prev =
|
||||
icon-next =
|
||||
icon-random =
|
||||
icon-repeat =
|
||||
;icon-repeatone = 🔂
|
||||
|
||||
; Used to display the state of random/repeat/repeatone
|
||||
toggle_on-foreground =
|
||||
toggle_off-foreground = #66fafafa
|
||||
|
||||
; Required if <bar-progress> is used
|
||||
bar-progress-width = 45
|
||||
bar-progress-format = %{+u}%{+o}%fill%%{-u}%{-o}%indicator%%{+u}%{+o}%empty%%{-u}%{-o}
|
||||
bar-progress-indicator = |
|
||||
bar-progress-indicator-foreground = #ddffffff
|
||||
bar-progress-indicator-font = 3
|
||||
bar-progress-fill = █
|
||||
bar-progress-fill-foreground = #aaffffff
|
||||
bar-progress-fill-font = 3
|
||||
bar-progress-empty = █
|
||||
bar-progress-empty-font = 3
|
||||
bar-progress-empty-foreground = #44ffffff
|
||||
|
||||
[module/wireless-network]
|
||||
type = internal/network
|
||||
|
||||
interface = net1
|
||||
|
||||
; Seconds to sleep between updates
|
||||
interval = 3.0
|
||||
|
||||
; Test connectivity every Nth update
|
||||
; A value of 0 disables the feature
|
||||
; Default: 0
|
||||
; Recommended minimum value: round(10 / interval)
|
||||
; - which would test the connection approx. every 10th sec.
|
||||
ping_interval = 3
|
||||
|
||||
; Available tags:
|
||||
; <label-connected> (default)
|
||||
; <ramp-signal>
|
||||
format-connected = <ramp-signal> <label-connected>
|
||||
|
||||
; Available tags:
|
||||
; <label-disconnected> (default)
|
||||
;format-disconnected = <label-disconnected>
|
||||
|
||||
; Available tags:
|
||||
; <label-connected> (default)
|
||||
; <label-packetloss>
|
||||
; <animation-packetloss>
|
||||
;format-packetloss = <animation-packetloss> <label-connected>
|
||||
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; %local_ip% [wireless+wired]
|
||||
; %essid% [wireless]
|
||||
; %signal% [wireless]
|
||||
; %linkspeed% [wired]
|
||||
; Default: %ifname% %local_ip%
|
||||
label-connected = %essid%
|
||||
label-connected-foreground = #eefafafa
|
||||
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; Default: (none)
|
||||
label-disconnected = not connected
|
||||
label-disconnected-foreground = #66ffffff
|
||||
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; %local_ip% [wireless+wired]
|
||||
; %essid% [wireless]
|
||||
; %signal% [wireless]
|
||||
; %linkspeed% [wired]
|
||||
; Default: (none)
|
||||
;label-packetloss = %essid%
|
||||
;label-packetloss-foreground = #eefafafa
|
||||
|
||||
ramp-signal-0 =
|
||||
ramp-signal-0-foreground = #33ffffff
|
||||
ramp-signal-1 =
|
||||
ramp-signal-1-foreground = #66ffffff
|
||||
ramp-signal-2 =
|
||||
ramp-signal-2-foreground = #99ffffff
|
||||
ramp-signal-3 =
|
||||
ramp-signal-3-foreground = #ccffffff
|
||||
ramp-signal-4 =
|
||||
ramp-signal-4-foreground = #ffffffff
|
||||
|
||||
animation-packetloss-0 =
|
||||
animation-packetloss-0-foreground = #ffa64c
|
||||
animation-packetloss-1 =
|
||||
animation-packetloss-1-foreground = ${bar/top.foreground}
|
||||
animation-packetloss-framerate_ms = 500
|
||||
|
||||
[module/wired-network]
|
||||
type = internal/network
|
||||
|
||||
interface = net0
|
||||
|
||||
; Seconds to sleep between updates
|
||||
interval = 2.0
|
||||
|
||||
; Seconds to sleep between connectivity tests
|
||||
; A value of 0 disables the testing
|
||||
; Default- 0
|
||||
;connectivity_test_interval = 0
|
||||
|
||||
; Available tags:
|
||||
; <label-connected> (default)
|
||||
; <ramp-signal>
|
||||
;format-connected = <label-connected>
|
||||
|
||||
; Available tags:
|
||||
; <label-disconnected> (default)
|
||||
;format-disconnected = <label-disconnected>
|
||||
|
||||
; Available tags:
|
||||
; <label-packetloss> (default)
|
||||
; <animation-packetloss>
|
||||
; format-packetloss = <animation-packetloss> <label-packetloss>
|
||||
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; %local_ip% [wireless+wired]
|
||||
; %essid% [wireless]
|
||||
; %signal% [wireless]
|
||||
; %linkspeed% [wired]
|
||||
; Default- %ifname% %local_ip%
|
||||
label-connected = %{T3}%local_ip%%{T-}
|
||||
;label-connected-foreground = #eefafafa
|
||||
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; Default- (none)
|
||||
;label-disconnected = not connected
|
||||
;label-disconnected-foreground = #66ffffff
|
||||
|
||||
; Available tokens:
|
||||
; %ifname% [wireless+wired]
|
||||
; %local_ip% [wireless+wired]
|
||||
; %essid% [wireless]
|
||||
; %signal% [wireless]
|
||||
; %linkspeed% [wired]
|
||||
; Default- %ifname% %local_ip%
|
||||
; ------------------------- NOT ACTIVATED (Needs more testing)
|
||||
;label-packetloss = %essid%
|
||||
;label-packetloss-foreground = #eefafafa
|
||||
|
||||
|
||||
[module/volume]
|
||||
type = internal/volume
|
||||
|
||||
; Use the following command to list available mixer controls:
|
||||
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
|
||||
speaker_mixer = Speaker
|
||||
headphone_mixer = Headphone
|
||||
|
||||
; Use the following command to list available device controls
|
||||
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
|
||||
headphone_control_numid = 9
|
||||
|
||||
; Available tags:
|
||||
; <label-volume> (default)
|
||||
; <ramp-volume>
|
||||
; <bar-volume>
|
||||
format-volume = <ramp-volume> <label-volume>
|
||||
|
||||
; Available tags:
|
||||
; <label-muted> (default)
|
||||
; <ramp-volume>
|
||||
; <bar-volume>
|
||||
;format-muted = <label-muted>
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
;label-volume = %percentage%
|
||||
label-volume-foreground = #ffffff
|
||||
|
||||
; Available tokens:
|
||||
; %percentage% (default)
|
||||
label-muted = muted
|
||||
label-muted-foreground = #66ffffff
|
||||
|
||||
; Required if <ramp-volume> is used
|
||||
ramp-volume-0 =
|
||||
ramp-volume-0-foreground = #99ffffff
|
||||
ramp-volume-1 =
|
||||
ramp-volume-1-foreground = #bbffffff
|
||||
ramp-volume-2 =
|
||||
ramp-volume-2-foreground = #ddffffff
|
||||
ramp-volume-3 =
|
||||
ramp-volume-3-foreground = #ffffffff
|
||||
|
||||
; Required if <bar-capacity> is used
|
||||
bar-volume-width = 10
|
||||
bar-volume-format = %{+u}%{+o}%fill%%empty%%{-u}%{-o}
|
||||
bar-volume-fill = █
|
||||
bar-volume-fill-foreground = #ddffffff
|
||||
bar-volume-fill-font = 3
|
||||
bar-volume-empty = █
|
||||
bar-volume-empty-font = 3
|
||||
bar-volume-empty-foreground = #44ffffff
|
||||
|
||||
|
||||
|
||||
[module/powermenu]
|
||||
type = custom/menu
|
||||
|
||||
; Available tags:
|
||||
; <label-toggle> (default) - gets replaced with <label-(open|close)>
|
||||
; <menu> (default)
|
||||
;format = <label-toggle> <menu>
|
||||
format-background = #111111
|
||||
format-padding = 3
|
||||
|
||||
label-open =
|
||||
label-close =
|
||||
|
||||
; "menu-LEVEL-N" has the same properties as "label-NAME" with
|
||||
; the additional "exec" property
|
||||
;
|
||||
; Available exec commands:
|
||||
; menu_open-LEVEL
|
||||
; menu_close
|
||||
; Other commands will be executed using "/usr/bin/env sh -c $COMMAND"
|
||||
|
||||
menu-0-0 = Terminate WM
|
||||
menu-0-0-foreground = #fba922
|
||||
menu-0-0-exec = bspc quit -1
|
||||
menu-0-1 = Reboot
|
||||
menu-0-1-foreground = #fba922
|
||||
menu-0-1-exec = menu_open-1
|
||||
menu-0-2 = Power off
|
||||
menu-0-2-foreground = #fba922
|
||||
menu-0-2-exec = menu_open-2
|
||||
|
||||
menu-1-0 = Cancel
|
||||
menu-1-0-foreground = #fba922
|
||||
menu-1-0-exec = menu_open-0
|
||||
menu-1-1 = Reboot
|
||||
menu-1-1-foreground = #fba922
|
||||
menu-1-1-exec = sudo reboot
|
||||
|
||||
menu-2-0 = Power off
|
||||
menu-2-0-foreground = #fba922
|
||||
menu-2-0-exec = sudo poweroff
|
||||
menu-2-1 = Cancel
|
||||
menu-2-1-foreground = #fba922
|
||||
menu-2-1-exec = menu_open-0
|
||||
|
||||
[module/text-example]
|
||||
type = custom/text
|
||||
|
||||
; "content" has the same properties as "format-NAME"
|
||||
content =
|
||||
content-background = #000
|
||||
content-foreground = #fff
|
||||
content-padding = 4
|
||||
|
||||
; "click-(left|middle|right)" will be executed using "/usr/bin/env sh -c $COMMAND"
|
||||
click-left = echo left
|
||||
click-middle = echo middle
|
||||
click-right = echo right
|
||||
|
||||
; "scroll-(up|down)" will be executed using "/usr/bin/env sh -c $COMMAND"
|
||||
scroll-up = echo scroll up
|
||||
scroll-down = echo scroll down
|
||||
|
||||
[module/script-example]
|
||||
type = custom/script
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
;
|
||||
; The "exec" command will be executed using "/usr/bin/env sh -c [command]"
|
||||
exec = echo %counter%
|
||||
|
||||
; Seconds to sleep between updates
|
||||
interval = 0.5
|
||||
|
||||
; Available tags:
|
||||
; <output> (default)
|
||||
;format = <output>
|
||||
format-background = #999
|
||||
format-foreground = #000
|
||||
format-padding = 4
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
;
|
||||
; "click-(left|middle|right)" will be executed using "/usr/bin/env sh -c [command]"
|
||||
click-left = echo left %counter%
|
||||
click-middle = echo middle %counter%
|
||||
click-right = echo right %counter%
|
||||
|
||||
; Available tokens:
|
||||
; %counter%
|
||||
;
|
||||
; "scroll-(up|down)" will be executed using "/usr/bin/env sh -c [command]"
|
||||
scroll-up = echo scroll up %counter%
|
||||
scroll-down = echo scroll down %counter%
|
||||
|
||||
[module/clock]
|
||||
type = internal/date
|
||||
interval = 5
|
||||
date = %%{F#999}%Y-%m-%d%%{F-} %%{F#fff}%H:%M%%{F-}
|
||||
|
||||
; vim:ft=dosini
|
||||
6
contrib/bash/CMakeLists.txt
Normal file
6
contrib/bash/CMakeLists.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
#
|
||||
# Bash completion template
|
||||
#
|
||||
install(FILES polybar
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/bash-completion/completions
|
||||
COMPONENT tools)
|
||||
107
contrib/bash/polybar
Normal file
107
contrib/bash/polybar
Normal file
@@ -0,0 +1,107 @@
|
||||
_polybar_default_file() {
|
||||
local suffix=/polybar/config.ini
|
||||
|
||||
local home_path=${XDG_CONFIG_HOME:-$HOME/.config}${suffix}
|
||||
local etc_xdg_path=${XDG_CONFIG_DIRS:-/etc/xdg}${suffix}
|
||||
local etc_path=/etc${suffix}
|
||||
|
||||
if [ -r "$home_path" ]; then
|
||||
echo "$home_path"
|
||||
elif [ -r "$etc_xdg_path" ]; then
|
||||
echo "$etc_xdg_path"
|
||||
elif [ -r "$etc_path" ]; then
|
||||
echo "$etc_path"
|
||||
fi
|
||||
}
|
||||
|
||||
_polybar_config_file() {
|
||||
for ((i = 0; i < COMP_CWORD; i++)); do
|
||||
case ${COMP_WORDS[i]} in
|
||||
--config)
|
||||
echo "${COMP_WORDS[i + 2]}"
|
||||
return
|
||||
;;
|
||||
-c)
|
||||
echo "${COMP_WORDS[i + 1]}"
|
||||
return
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
_polybar_default_file
|
||||
}
|
||||
|
||||
_polybar_bars() {
|
||||
local config_file=$(_polybar_config_file)
|
||||
|
||||
if [ -r "$config_file" ]; then
|
||||
sed -nE 's|[[:space:]]*\[bar/([^\]+)\][[:space:]]*$|\1|p' "$config_file"
|
||||
fi
|
||||
}
|
||||
|
||||
_polybar() {
|
||||
local options='-h --help
|
||||
-v --version
|
||||
-l --log=
|
||||
-q --quiet
|
||||
-c --config=
|
||||
-r --reload
|
||||
-d --dump=
|
||||
-m --list-monitors
|
||||
-M --list-all-monitors
|
||||
-w --print-wmname
|
||||
-s --stdout
|
||||
-p --png='
|
||||
|
||||
local log_levels='error
|
||||
warning
|
||||
notice
|
||||
info
|
||||
trace'
|
||||
|
||||
COMPREPLY=()
|
||||
|
||||
local cur=${COMP_WORDS[COMP_CWORD]}
|
||||
case "$cur" in
|
||||
-*)
|
||||
COMPREPLY=( $(compgen -W "$options" -- "$cur") )
|
||||
;;
|
||||
*)
|
||||
local prev=${COMP_WORDS[COMP_CWORD - 1]}
|
||||
if [ "$prev" = "=" ]; then
|
||||
prev=${COMP_WORDS[COMP_CWORD - 2]}
|
||||
fi
|
||||
|
||||
case "$prev" in
|
||||
-l|--log)
|
||||
COMPREPLY=( $(compgen -W "$log_levels" -- "$cur") )
|
||||
return 0
|
||||
;;
|
||||
-c|--config)
|
||||
COMPREPLY=( $(compgen -f "$cur") )
|
||||
return 0
|
||||
;;
|
||||
-p|--png)
|
||||
COMPREPLY=( $(compgen -f -X "!*.png" "$cur") )
|
||||
return 0
|
||||
;;
|
||||
-d|--dump)
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
COMPREPLY=( $(compgen -W "$options $(_polybar_bars)" -- "$cur") )
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
|
||||
for ((i = 0; i < ${#COMPREPLY[@]}; i++)); do
|
||||
case ${COMPREPLY[i]} in
|
||||
--*=) ;;
|
||||
-*) COMPREPLY[i]+=" "
|
||||
esac
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
complete -o filenames -o noquote -o nospace -F _polybar polybar
|
||||
Submodule contrib/lemonbar-sm-git deleted from 8ed285ec22
@@ -1,28 +0,0 @@
|
||||
pkgbase = lemonbuddy-git
|
||||
pkgdesc = A fast and easy-to-use tool for Lemonbar
|
||||
pkgver = 1.3.0
|
||||
pkgrel = 1
|
||||
url = https://github.com/jaagr/lemonbuddy
|
||||
arch = i686
|
||||
arch = x86_64
|
||||
license = MIT
|
||||
makedepends = cmake
|
||||
makedepends = pkg-config
|
||||
makedepends = clang
|
||||
makedepends = glibc
|
||||
makedepends = boost
|
||||
makedepends = libxcb
|
||||
depends = bash
|
||||
depends = libxcb
|
||||
optdepends = alsa-lib: volume module support
|
||||
optdepends = libmpdclient: mpd module support
|
||||
optdepends = wireless_tools: network module support
|
||||
optdepends = libsigc++: i3 module support
|
||||
optdepends = i3ipc-glib-git: i3 module support
|
||||
provides = lemonbuddy
|
||||
conflicts = lemonbuddy
|
||||
source = lemonbuddy::git+https://github.com/jaagr/lemonbuddy.git
|
||||
md5sums = SKIP
|
||||
|
||||
pkgname = lemonbuddy-git
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
# Maintainer: Michael Carlberg <c@rlberg.se>
|
||||
# Contributor: Michael Carlberg <c@rlberg.se>
|
||||
_pkgname=lemonbuddy
|
||||
pkgname="${_pkgname}-git"
|
||||
pkgver=1.3.0
|
||||
pkgrel=1
|
||||
pkgdesc="A fast and easy-to-use tool for Lemonbar"
|
||||
arch=("i686" "x86_64")
|
||||
url="https://github.com/jaagr/lemonbuddy"
|
||||
license=("MIT")
|
||||
depends=("bash" "libxcb")
|
||||
optdepends=("alsa-lib: volume module support"
|
||||
"libmpdclient: mpd module support"
|
||||
"wireless_tools: network module support"
|
||||
"libsigc++: i3 module support"
|
||||
"i3ipc-glib-git: i3 module support")
|
||||
makedepends=("cmake" "pkg-config" "clang" "glibc" "boost" "libxcb")
|
||||
provides=("lemonbuddy")
|
||||
conflicts=("lemonbuddy")
|
||||
source=("${_pkgname}::git+${url}.git")
|
||||
md5sums=("SKIP")
|
||||
|
||||
pkgver() {
|
||||
cd "$_pkgname" || exit
|
||||
git describe --long --tags | sed "s/-/.r/;s/-/./"
|
||||
}
|
||||
|
||||
prepare() {
|
||||
cd "$_pkgname" || exit
|
||||
git submodule update --init --recursive
|
||||
mkdir build
|
||||
sed 's/python2.7/python3.5/g' -i lib/xpp/CMakeLists.txt
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${_pkgname}/build" || exit
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${_pkgname}/build" || exit
|
||||
make DESTDIR="$pkgdir/" install
|
||||
cd .. || exit
|
||||
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
pkgbase = lemonbuddy
|
||||
pkgdesc = A fast and easy-to-use tool for Lemonbar
|
||||
pkgver = 1.3.0
|
||||
pkgrel = 1
|
||||
url = https://github.com/jaagr/lemonbuddy
|
||||
arch = i686
|
||||
arch = x86_64
|
||||
license = MIT
|
||||
makedepends = cmake
|
||||
makedepends = pkg-config
|
||||
makedepends = clang
|
||||
makedepends = glibc
|
||||
makedepends = boost
|
||||
makedepends = libxcb
|
||||
depends = bash
|
||||
depends = libxcb
|
||||
optdepends = alsa-lib: volume module support
|
||||
optdepends = libmpdclient: mpd module support
|
||||
optdepends = wireless_tools: network module support
|
||||
optdepends = libsigc++: i3 module support
|
||||
optdepends = i3ipc-glib-git: i3 module support
|
||||
conflicts = lemonbuddy-git
|
||||
source = lemonbuddy::git+https://github.com/jaagr/lemonbuddy.git#tag=1.3.0
|
||||
md5sums = SKIP
|
||||
|
||||
pkgname = lemonbuddy
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
# Maintainer: Michael Carlberg <c@rlberg.se>
|
||||
# Contributor: Michael Carlberg <c@rlberg.se>
|
||||
pkgname=lemonbuddy
|
||||
pkgver=1.3.0
|
||||
pkgrel=1
|
||||
pkgdesc="A fast and easy-to-use tool for Lemonbar"
|
||||
arch=("i686" "x86_64")
|
||||
url="https://github.com/jaagr/lemonbuddy"
|
||||
license=("MIT")
|
||||
depends=("bash" "libxcb")
|
||||
optdepends=("alsa-lib: volume module support"
|
||||
"libmpdclient: mpd module support"
|
||||
"wireless_tools: network module support"
|
||||
"libsigc++: i3 module support"
|
||||
"i3ipc-glib-git: i3 module support")
|
||||
makedepends=("cmake" "pkg-config" "clang" "glibc" "boost" "libxcb")
|
||||
conflicts=("lemonbuddy-git")
|
||||
source=("${pkgname}::git+${url}.git#tag=${pkgver}")
|
||||
md5sums=("SKIP")
|
||||
|
||||
prepare() {
|
||||
cd "$pkgname" || exit
|
||||
git submodule update --init --recursive
|
||||
mkdir build
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${pkgname}/build" || exit
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||
make
|
||||
sed 's/python2.7/python3.5/g' -i lib/xpp/CMakeLists.txt
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${pkgname}/build" || exit
|
||||
make DESTDIR="${pkgdir}/" install
|
||||
cd .. || exit
|
||||
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
# Template file for 'lemonbuddy'
|
||||
pkgname=lemonbuddy
|
||||
version=1.2.1
|
||||
revision=1
|
||||
_i3ipcpp_version=0.1.3
|
||||
_lemonbar_version=1.1
|
||||
build_style=cmake
|
||||
hostmakedepends="clang pkg-config"
|
||||
makedepends="libX11-devel libXrandr-devel boost-devel
|
||||
$(vopt_if alsa "alsa-lib-devel")
|
||||
$(vopt_if i3 "i3-devel i3ipc-glib-devel libsigc++-devel")
|
||||
$(vopt_if mpd "libmpdclient-devel")
|
||||
$(vopt_if network "wireless_tools-devel")"
|
||||
short_desc="A fast and easy-to-use tool for Lemonbar"
|
||||
maintainer="Michael Carlberg <c@rlberg.se>"
|
||||
license="MIT"
|
||||
homepage="https://github.com/jaagr/lemonbuddy"
|
||||
distfiles="
|
||||
https://github.com/jaagr/lemonbuddy/archive/${version}.tar.gz
|
||||
https://github.com/jaagr/i3ipcpp/archive/v${_i3ipcpp_version}.tar.gz
|
||||
https://github.com/jaagr/bar/archive/v${_lemonbar_version}.tar.gz"
|
||||
checksum="
|
||||
dfbeb74aaac49cb0f3c5c98466aadf2477c6a709025174e11e1da7ad7edafef4
|
||||
fb5ea31bf2d008065512f12ab9d9cc8304b2a4e6ba2ae93082df29712f372449
|
||||
d9073ecc3d2638804a723d47c74666ba3cd1c3771dfe254809de01ec5c428d4a"
|
||||
|
||||
build_options="alsa i3 mpd network"
|
||||
build_options_default="$build_options"
|
||||
|
||||
post_extract() {
|
||||
mv ../i3ipcpp-$_i3ipcpp_version contrib/i3ipcpp
|
||||
mv ../bar-$_lemonbar_version contrib/lemonbar-sm-git
|
||||
}
|
||||
|
||||
post_install() {
|
||||
vlicense LICENSE
|
||||
}
|
||||
42
contrib/polybar-git.aur/PKGBUILD
Normal file
42
contrib/polybar-git.aur/PKGBUILD
Normal file
@@ -0,0 +1,42 @@
|
||||
# Maintainer: Patrick Ziegler <p.ziegler96@gmail.com>
|
||||
_pkgname=polybar
|
||||
pkgname="${_pkgname}-git"
|
||||
pkgver=3.7.2
|
||||
pkgrel=1
|
||||
pkgdesc="A fast and easy-to-use status bar"
|
||||
# aarch64 is not officially supported by polybar, it is only listed here for convenience
|
||||
arch=("i686" "x86_64" "aarch64")
|
||||
url="https://github.com/polybar/polybar"
|
||||
license=("MIT")
|
||||
depends=("libuv" "cairo" "xcb-util-image" "xcb-util-wm" "xcb-util-xrm"
|
||||
"xcb-util-cursor" "alsa-lib" "libpulse" "libmpdclient" "libnl"
|
||||
"jsoncpp" "curl")
|
||||
optdepends=("i3-wm: i3 module support")
|
||||
makedepends=("cmake" "git" "python" "pkg-config" "python-sphinx"
|
||||
"python-packaging" "i3-wm")
|
||||
backup=("etc/polybar/config.ini")
|
||||
provides=("polybar")
|
||||
conflicts=("polybar")
|
||||
source=("${_pkgname}::git+${url}.git")
|
||||
sha256sums=("SKIP")
|
||||
|
||||
pkgver() {
|
||||
git -C "${_pkgname}" describe --long --tags | sed "s/-/.r/;s/-/./g"
|
||||
}
|
||||
|
||||
prepare() {
|
||||
git -C "${_pkgname}" submodule update --init --recursive
|
||||
mkdir -p "${_pkgname}/build"
|
||||
}
|
||||
|
||||
build() {
|
||||
cd "${_pkgname}/build" || exit 1
|
||||
# Force cmake to use system python (to detect xcbgen)
|
||||
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 ..
|
||||
cmake --build .
|
||||
}
|
||||
|
||||
package() {
|
||||
cmake --build "${_pkgname}/build" --target install -- DESTDIR="${pkgdir}"
|
||||
install -Dm644 "${_pkgname}/LICENSE" "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
|
||||
}
|
||||
19
contrib/vim/autoload/ft/cpphpp.vim
Normal file
19
contrib/vim/autoload/ft/cpphpp.vim
Normal file
@@ -0,0 +1,19 @@
|
||||
"
|
||||
" Get the filename of the swap file
|
||||
"
|
||||
func! ft#cpphpp#GetFilename()
|
||||
let ext = expand('%:e')
|
||||
let root = expand('%:p:r')
|
||||
if (ext == 'cpp')
|
||||
return fnameescape(substitute(root, '\(src/.*/\)\?src/', '\1include/', '') . '.hpp')
|
||||
elseif (ext == 'hpp')
|
||||
return fnameescape(substitute(root, '\(include/.*/\)\?include/', '\1src/', '') . '.cpp')
|
||||
endif
|
||||
endfunc
|
||||
|
||||
"
|
||||
" Swap between source/header using given cmd
|
||||
"
|
||||
func! ft#cpphpp#Swap(cmd)
|
||||
execute a:cmd . ' ' . ft#cpphpp#GetFilename()
|
||||
endfunc
|
||||
8
contrib/vim/ftplugin/cpp.vim
Normal file
8
contrib/vim/ftplugin/cpp.vim
Normal file
@@ -0,0 +1,8 @@
|
||||
" Swap between source/header
|
||||
nnoremap <silent> <leader>af :call ft#cpphpp#Swap('edit')<cr>
|
||||
nnoremap <silent> <leader>as :call ft#cpphpp#Swap('new')<cr>
|
||||
nnoremap <silent> <leader>av :call ft#cpphpp#Swap('vnew')<cr>
|
||||
|
||||
" Code formatting using clang-format
|
||||
set formatprg=/usr/bin/clang-format
|
||||
nmap <f1> :ClangFormat<cr>
|
||||
6
contrib/zsh/CMakeLists.txt
Normal file
6
contrib/zsh/CMakeLists.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
#
|
||||
# Zsh completion template
|
||||
#
|
||||
install(FILES _polybar _polybar_msg
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/zsh/site-functions
|
||||
COMPONENT tools)
|
||||
61
contrib/zsh/_polybar
Normal file
61
contrib/zsh/_polybar
Normal file
@@ -0,0 +1,61 @@
|
||||
#compdef polybar
|
||||
#
|
||||
# Completion for polybar (https://github.com/polybar/polybar)
|
||||
# jaagr <c@rlberg.se>
|
||||
#
|
||||
_polybar() {
|
||||
local L='-l --log'
|
||||
local Q='-q --quiet'
|
||||
local C='-c --config'
|
||||
local R='-r --reload'
|
||||
local D='-d --dump'
|
||||
local M='-m --list-monitors'
|
||||
local MM='-M --list-all-monitors'
|
||||
local W='-w --print-wmname'
|
||||
local S='-s --stdout'
|
||||
|
||||
_arguments -n : \
|
||||
'(-)'{-h,--help}'[Display help text and exit]' \
|
||||
'(-)'{-v,--version}'[Display build details and exit]' \
|
||||
"($L $Q)"{-l,--log=}'[Set the logging verbosity (default: notice)]:verbosity level:(error warning notice info trace)' \
|
||||
"($L $Q)"{-q,--quiet}'[Be quiet (will override -l)]' \
|
||||
"($C)"{-c,--config=}'[Path to the configuration file]:configuration file:_files' \
|
||||
"($R)"{-r,--reload}'[Reload when the configuration has been modified]' \
|
||||
"($D $R $M $W $S)"{-d,--dump=}'[Print parameter value in bar section and exit]:parameter name' \
|
||||
"($MM $M $D $R $W $S)"{-m,--list-monitors}'[Print list of available monitors (Excluding cloned monitors) and exit]' \
|
||||
"($MM $M $D $R $W $S)"{-M,--list-all-monitors}'[Print list of all available monitors (Including cloned monitors) and exit]' \
|
||||
"($W $R $D $M $S)"{-w,--print-wmname}'[Print the generated WM_NAME and exit]' \
|
||||
"($S)"{-s,--stdout}'[Output data to stdout instead of drawing the X window]' \
|
||||
'::bar name:_polybar_list_names'
|
||||
}
|
||||
|
||||
(( $+functions[_polybar_default_file] )) || _polybar_default_file() {
|
||||
local suffix=/polybar/config.ini
|
||||
|
||||
local home_path=${XDG_CONFIG_HOME:-$HOME/.config}${suffix}
|
||||
local etc_xdg_path=${XDG_CONFIG_DIRS:-/etc/xdg}${suffix}
|
||||
local etc_path=/etc${suffix}
|
||||
|
||||
if [ -r "$home_path" ]; then
|
||||
echo "$home_path"
|
||||
elif [ -r "$etc_xdg_path" ]; then
|
||||
echo "$etc_xdg_path"
|
||||
elif [ -r "$etc_path" ]; then
|
||||
echo "$etc_path"
|
||||
fi
|
||||
}
|
||||
|
||||
(( $+functions[_polybar_list_names] )) || _polybar_list_names() {
|
||||
local conf
|
||||
if (( $+opt_args[-c] )); then
|
||||
conf=${(e)opt_args[-c]}
|
||||
elif (( $+opt_args[--config] )); then
|
||||
conf=${(e)opt_args[--config]}
|
||||
else
|
||||
conf=$(_polybar_default_file)
|
||||
fi
|
||||
local names; names=(${(f)"$(sed -nE 's|[[:space:]]*\[bar/([^\]+)\][[:space:]]*$|\1|p' ${conf} 2>/dev/null)"})
|
||||
_describe -t names 'configuration name' names
|
||||
}
|
||||
|
||||
_polybar "$@"
|
||||
32
contrib/zsh/_polybar_msg
Normal file
32
contrib/zsh/_polybar_msg
Normal file
@@ -0,0 +1,32 @@
|
||||
#compdef polybar-msg
|
||||
#
|
||||
# Completion for polybar-msg (https://github.com/polybar/polybar)
|
||||
# jaagr <c@rlberg.se>
|
||||
#
|
||||
_polybar_msg() {
|
||||
integer ret=1
|
||||
|
||||
_arguments -n : \
|
||||
'-p[Process id of target instance]:process id:_polybar_msg_pids' \
|
||||
'(-p)1:message type:(action cmd hook)' \
|
||||
'*:: :->args'
|
||||
|
||||
case $state in
|
||||
args)
|
||||
case $words[1] in
|
||||
hook) _arguments ':module name:' ':hook index:'; ret=0 ;;
|
||||
action) _arguments ':action payload:'; ret=0 ;;
|
||||
cmd) _arguments ':command payload:(show hide toggle restart quit)'; ret=0 ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
||||
(( $+functions[_polybar_msg_pids] )) || _polybar_msg_pids() {
|
||||
local pids; pids=(${(f)"$(ls -1 /tmp/polybar_mqueue.* | egrep -o '[0-9]+$')"})
|
||||
_describe -t pids 'process id of target instance' pids
|
||||
}
|
||||
|
||||
_polybar_msg "$@"
|
||||
1
doc/.gitignore
vendored
Normal file
1
doc/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
build
|
||||
80
doc/CMakeLists.txt
Normal file
80
doc/CMakeLists.txt
Normal file
@@ -0,0 +1,80 @@
|
||||
set(SPHINX_BUILD "sphinx-build" CACHE STRING "Name/Path of the sphinx-build executable to use.")
|
||||
set(SPHINX_FLAGS "" CACHE STRING "Flags to pass to sphinx-build")
|
||||
|
||||
find_program(BIN_SPHINX "${SPHINX_BUILD}")
|
||||
|
||||
if(NOT BIN_SPHINX)
|
||||
message(FATAL_ERROR "sphinx-build executable '${SPHINX_BUILD}' not found.")
|
||||
endif()
|
||||
|
||||
separate_arguments(sphinx_flags UNIX_COMMAND "${SPHINX_FLAGS}")
|
||||
|
||||
set(doc_path "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
# Configures conf.py in the current folder and puts it in the build folder
|
||||
configure_file(conf.py conf.py @ONLY)
|
||||
|
||||
# We want to run `sphinx-build` with the following builders
|
||||
if (BUILD_DOC_HTML)
|
||||
list(APPEND doc_builders "html")
|
||||
endif()
|
||||
|
||||
if (BUILD_DOC_MAN)
|
||||
list(APPEND doc_builders "man")
|
||||
endif()
|
||||
|
||||
# Name of all documentation targets
|
||||
set(doc_targets "")
|
||||
|
||||
foreach(builder ${doc_builders})
|
||||
set(doc_target "doc_${builder}")
|
||||
set(builder_log "builder-${builder}.log")
|
||||
add_custom_target(${doc_target}
|
||||
COMMAND ${BIN_SPHINX}
|
||||
-b ${builder}
|
||||
# conf.py dir
|
||||
-c "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
-d "${CMAKE_CURRENT_BINARY_DIR}/doctrees"
|
||||
-n
|
||||
${sphinx_flags}
|
||||
# Documentation source file dir
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
# Output dir
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${builder}" > ${builder_log}
|
||||
COMMENT "sphinx-build ${builder}: see doc/${builder_log}")
|
||||
|
||||
list(APPEND doc_targets ${doc_target})
|
||||
endforeach()
|
||||
|
||||
# Dummy target that depends on all documentation targets
|
||||
add_custom_target(doc ALL DEPENDS ${doc_targets})
|
||||
|
||||
if (BUILD_DOC_HTML)
|
||||
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/
|
||||
DESTINATION ${CMAKE_INSTALL_DOCDIR}
|
||||
COMPONENT doc
|
||||
PATTERN ".buildinfo" EXCLUDE)
|
||||
endif()
|
||||
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/CHANGELOG.md
|
||||
DESTINATION ${CMAKE_INSTALL_DOCDIR}
|
||||
COMPONENT doc)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_LIST_DIR}/config.ini
|
||||
DESTINATION ${CMAKE_INSTALL_DOCDIR}/examples
|
||||
COMPONENT doc)
|
||||
|
||||
if (BUILD_DOC_MAN)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/man/polybar.1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
|
||||
COMPONENT doc)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/man/polybar-msg.1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
|
||||
COMPONENT doc)
|
||||
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/man/polybar.5
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man5
|
||||
COMPONENT doc)
|
||||
endif()
|
||||
|
||||
19
doc/README.md
Normal file
19
doc/README.md
Normal file
@@ -0,0 +1,19 @@
|
||||
Polybar Manual
|
||||
==============
|
||||
|
||||
The official polybar documentation lives here.
|
||||
|
||||
The html documentation and man pages are built automatically when you build with cmake (cmake creates the custom
|
||||
target `doc`).
|
||||
|
||||
## Preview Locally
|
||||
The documentation uses [Sphinx](https://www.sphinx-doc.org/en/stable/) to generate the documentation, so you will need to
|
||||
have that installed.
|
||||
|
||||
If you build polybar normally while having Sphinx installed during configuration, the documentation will be enabled and
|
||||
built as well. Building the documentation can be disabled by passing `-DBUILD_DOC=OFF` to `cmake`.
|
||||
|
||||
Once configured, all of the documentation can be generated with `make doc` or use `make doc_html` or `make doc_man` to
|
||||
only generate the html documentation or the man pages respectively.
|
||||
|
||||
The HTML documentation is in `doc/html/index.html` in your build directory and the man pages are in `doc/man`.
|
||||
0
doc/_static/.gitignore
vendored
Normal file
0
doc/_static/.gitignore
vendored
Normal file
BIN
doc/_static/banner-dark-mode.png
vendored
Normal file
BIN
doc/_static/banner-dark-mode.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
doc/_static/banner.png
vendored
Normal file
BIN
doc/_static/banner.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
BIN
doc/_static/default.png
vendored
Normal file
BIN
doc/_static/default.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
doc/_static/nerd-fonts/bad.png
vendored
Normal file
BIN
doc/_static/nerd-fonts/bad.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
BIN
doc/_static/nerd-fonts/good.png
vendored
Normal file
BIN
doc/_static/nerd-fonts/good.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.1 KiB |
26
doc/_templates/layout.html
vendored
Normal file
26
doc/_templates/layout.html
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
{% extends "!layout.html" -%}
|
||||
{# Refer to https://github.com/readthedocs/sphinx_rtd_theme/blob/master/sphinx_rtd_theme/layout.html #}
|
||||
|
||||
{%- block document %}
|
||||
{#
|
||||
Adds a warning message on the 'latest' version.
|
||||
The warning is only added on readthedocs, if the version is 'latest'.
|
||||
For the 'dev' folder, no warning is shown since the 'latest' version is
|
||||
usually the most up-to-date.
|
||||
#}
|
||||
{% if READTHEDOCS and polybar_is_latest and not pagename.startswith('dev/') %}
|
||||
<div class="admonition important">
|
||||
<p class="admonition-title">Development Version</p>
|
||||
<p>
|
||||
This is the <code class="docutils literal notranslate"><span class="pre">latest</span></code>
|
||||
(unstable) version of this documentation, which may document features
|
||||
not available in or compatible with released stable versions of polybar.
|
||||
</p>
|
||||
<p>
|
||||
See the <a href="https://polybar.readthedocs.io/{{ pagename }}.html">stable version</a> of this documentation page instead.
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ super() }}
|
||||
{%- endblock %}
|
||||
354
doc/conf.py
Normal file
354
doc/conf.py
Normal file
@@ -0,0 +1,354 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file does only contain a selection of the most common options. For a
|
||||
# full list see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/config
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#
|
||||
import os
|
||||
from pathlib import Path
|
||||
import datetime
|
||||
import sphinx
|
||||
import packaging.version
|
||||
|
||||
from sphinx.util.docfields import Field
|
||||
from sphinx.locale import _
|
||||
|
||||
|
||||
def get_version(root_path):
|
||||
"""
|
||||
Reads the polybar version from the version.txt at the root of the repo.
|
||||
"""
|
||||
path = Path(root_path) / "version.txt"
|
||||
with open(path, "r") as f:
|
||||
for line in f.readlines():
|
||||
if not line.startswith("#"):
|
||||
# NB: we can't parse it yet since sphinx could import
|
||||
# pkg_resources later on and it could patch packaging.version
|
||||
return line
|
||||
|
||||
raise RuntimeError("No version found in {}".format(path))
|
||||
|
||||
|
||||
sphinx_version = packaging.version.parse(sphinx.__version__)
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
|
||||
project = 'Polybar User Manual'
|
||||
copyright = '2016-{}, Michael Carlberg & contributors'.format(
|
||||
datetime.datetime.now().year
|
||||
)
|
||||
author = 'Polybar Team'
|
||||
|
||||
# is whether we are on readthedocs.io
|
||||
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
|
||||
|
||||
if on_rtd:
|
||||
# On readthedocs, cmake isn't run so the version string isn't available
|
||||
version = os.environ.get('READTHEDOCS_VERSION', None)
|
||||
else:
|
||||
# The short X.Y version
|
||||
version = '@APP_VERSION@'
|
||||
|
||||
# The full version, including alpha/beta/rc tags
|
||||
release = version
|
||||
|
||||
# Set path to documentation
|
||||
if on_rtd:
|
||||
# On readthedocs conf.py is already in the doc folder
|
||||
doc_path = '.'
|
||||
else:
|
||||
# In all other builds conf.py is configured with cmake and put into the
|
||||
# build folder.
|
||||
doc_path = '@doc_path@'
|
||||
|
||||
# The version from the version.txt file. Since we are not always first
|
||||
# configured by cmake, we don't necessarily have access to the current version
|
||||
# number
|
||||
version_txt = get_version(Path(doc_path).absolute().parent)
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
#
|
||||
# needs_sphinx = '1.0'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
"sphinx.ext.extlinks",
|
||||
]
|
||||
|
||||
if on_rtd:
|
||||
extensions += [
|
||||
# The custom 404 page is only needed
|
||||
"notfound.extension",
|
||||
# The search extension works only on readthedocs
|
||||
# See https://readthedocs-sphinx-search.readthedocs.io
|
||||
"sphinx_search.extension",
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = [doc_path + '/_templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
#
|
||||
# source_suffix = ['.rst', '.md']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
# language = None
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = []
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = None
|
||||
|
||||
highlight_language = 'none'
|
||||
|
||||
smartquotes = False
|
||||
|
||||
# Quickly link to issues or PRs using :issue:`...` or :pull:`...`
|
||||
if sphinx_version >= packaging.version.parse("4.0.0"):
|
||||
extlinks = {
|
||||
"issue": ("https://github.com/polybar/polybar/issues/%s", "#%s"),
|
||||
"pull": ("https://github.com/polybar/polybar/pull/%s", "PR #%s"),
|
||||
}
|
||||
else:
|
||||
# Versions before 4.0 (e.g. on readthedocs) do not support %s in the
|
||||
# caption and simply append the value
|
||||
extlinks = {
|
||||
"issue": ("https://github.com/polybar/polybar/issues/%s", "#"),
|
||||
"pull": ("https://github.com/polybar/polybar/pull/%s", "PR #"),
|
||||
}
|
||||
|
||||
extlinks_detect_hardcoded_links = True
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
# documentation.
|
||||
#
|
||||
html_theme_options = {}
|
||||
|
||||
html_context = {
|
||||
'polybar_is_latest': version == 'latest',
|
||||
}
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
if on_rtd or os.environ.get('USE_RTD_THEME', '0') == '1':
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
html_theme_options['collapse_navigation'] = False
|
||||
html_theme_options['style_external_links'] = True
|
||||
else:
|
||||
html_theme = 'alabaster'
|
||||
html_theme_options['description'] = version
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = [doc_path + '/_static']
|
||||
|
||||
# Custom sidebar templates, must be a dictionary that maps document names
|
||||
# to template names.
|
||||
#
|
||||
# The default sidebars (for documents that don't match any pattern) are
|
||||
# defined by theme itself. Builtin themes are using these templates by
|
||||
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
|
||||
# 'searchbox.html']``.
|
||||
#
|
||||
# html_sidebars = {}
|
||||
|
||||
|
||||
# -- Options for HTMLHelp output ---------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'polybardoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output ------------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#
|
||||
# 'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#
|
||||
# 'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'polybar.tex', 'polybar Documentation',
|
||||
'Polybar Team', 'manual'),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for manual page output ------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(
|
||||
'man/polybar.1', 'polybar',
|
||||
'A fast and easy-to-use tool status bar', [], 1
|
||||
),
|
||||
(
|
||||
'man/polybar-msg.1', 'polybar-msg',
|
||||
'Send IPC messages to polybar', [], 1
|
||||
),
|
||||
(
|
||||
'man/polybar.5', 'polybar',
|
||||
'configuration file for polybar(1)', [], 5
|
||||
)
|
||||
]
|
||||
|
||||
man_make_section_directory = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output ----------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'polybar', 'polybar Documentation',
|
||||
author, 'polybar', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
|
||||
# -- Options for Epub output -------------------------------------------------
|
||||
|
||||
# Bibliographic Dublin Core info.
|
||||
epub_title = project
|
||||
|
||||
# The unique identifier of the text. This can be a ISBN number
|
||||
# or the project homepage.
|
||||
#
|
||||
# epub_identifier = ''
|
||||
|
||||
# A unique identification for the text.
|
||||
#
|
||||
# epub_uid = ''
|
||||
|
||||
# A list of files that should not be packed into the epub file.
|
||||
epub_exclude_files = ['search.html']
|
||||
|
||||
# The 'versionadded' and 'versionchanged' directives are overridden.
|
||||
suppress_warnings = ['app.add_directive']
|
||||
|
||||
|
||||
def setup(app):
|
||||
|
||||
# Adds a new directive for document a polybar config setting
|
||||
# Inside goes the description of the option as well as custom roles to
|
||||
# document the type, default value, etc:
|
||||
# .. poly-setting:: NAME
|
||||
#
|
||||
# Description
|
||||
# :type: ...
|
||||
# :default: ...
|
||||
app.add_object_type(
|
||||
'poly-setting',
|
||||
'poly-setting',
|
||||
objname='configuration value',
|
||||
indextemplate='pair: %s; configuration value',
|
||||
doc_field_types=[
|
||||
Field('type',
|
||||
label=_("Type"),
|
||||
names=['type'],
|
||||
has_arg=False,
|
||||
),
|
||||
Field('tags',
|
||||
label=_("Available Tags"),
|
||||
names=['tags'],
|
||||
has_arg=False,
|
||||
),
|
||||
Field('tokens',
|
||||
label=_("Supported Tokens"),
|
||||
names=['tokens'],
|
||||
has_arg=False,
|
||||
),
|
||||
Field('default',
|
||||
label=_("Default Value"),
|
||||
names=['default'],
|
||||
has_arg=False,
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
try:
|
||||
inject_version_directives(app)
|
||||
except NameError:
|
||||
# Function was not defined because sphinx version was too low
|
||||
pass
|
||||
|
||||
|
||||
# It is not exactly clear in which version the VersionChange class was
|
||||
# introduced, but we know it is available in at least 1.8.5.
|
||||
# This feature is mainly needed for the online docs on readthedocs for the docs
|
||||
# built from master, documentation built for proper releases should not even
|
||||
# mention unreleased changes. Because of that it's not that important that this
|
||||
# is added to local builds.
|
||||
if sphinx_version >= packaging.version.parse("1.8.5"):
|
||||
|
||||
from typing import List
|
||||
from docutils.nodes import Node
|
||||
from sphinx.domains.changeset import VersionChange
|
||||
|
||||
def inject_version_directives(app):
|
||||
app.add_directive('deprecated', VersionDirective)
|
||||
app.add_directive('versionadded', VersionDirective)
|
||||
app.add_directive('versionchanged', VersionDirective)
|
||||
|
||||
class VersionDirective(VersionChange):
|
||||
"""
|
||||
Overwrites the Sphinx directive for versionchanged, versionadded, and
|
||||
deprecated and adds an unreleased tag to versions that are not yet
|
||||
released
|
||||
"""
|
||||
|
||||
def run(self) -> List[Node]:
|
||||
directive_version = packaging.version.parse(self.arguments[0])
|
||||
parsed_version_txt = packaging.version.parse(version_txt)
|
||||
|
||||
if directive_version > parsed_version_txt:
|
||||
self.arguments[0] += " (unreleased)"
|
||||
|
||||
return super().run()
|
||||
184
doc/config.ini
Normal file
184
doc/config.ini
Normal file
@@ -0,0 +1,184 @@
|
||||
;==========================================================
|
||||
;
|
||||
;
|
||||
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
;
|
||||
;
|
||||
; To learn more about how to configure Polybar
|
||||
; go to https://github.com/polybar/polybar
|
||||
;
|
||||
; The README contains a lot of information
|
||||
;
|
||||
;==========================================================
|
||||
|
||||
[colors]
|
||||
background = #282A2E
|
||||
background-alt = #373B41
|
||||
foreground = #C5C8C6
|
||||
primary = #F0C674
|
||||
secondary = #8ABEB7
|
||||
alert = #A54242
|
||||
disabled = #707880
|
||||
|
||||
[bar/example]
|
||||
width = 100%
|
||||
height = 24pt
|
||||
radius = 6
|
||||
|
||||
; dpi = 96
|
||||
|
||||
background = ${colors.background}
|
||||
foreground = ${colors.foreground}
|
||||
|
||||
line-size = 3pt
|
||||
|
||||
border-size = 4pt
|
||||
border-color = #00000000
|
||||
|
||||
padding-left = 0
|
||||
padding-right = 1
|
||||
|
||||
module-margin = 1
|
||||
|
||||
separator = |
|
||||
separator-foreground = ${colors.disabled}
|
||||
|
||||
font-0 = monospace;2
|
||||
|
||||
modules-left = xworkspaces xwindow
|
||||
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date
|
||||
|
||||
cursor-click = pointer
|
||||
cursor-scroll = ns-resize
|
||||
|
||||
enable-ipc = true
|
||||
|
||||
; wm-restack = generic
|
||||
; wm-restack = bspwm
|
||||
; wm-restack = i3
|
||||
|
||||
; override-redirect = true
|
||||
|
||||
; This module is not active by default (to enable it, add it to one of the
|
||||
; modules-* list above).
|
||||
; Please note that only a single tray can exist at any time. If you launch
|
||||
; multiple bars with this module, only a single one will show it, the others
|
||||
; will produce a warning. Which bar gets the module is timing dependent and can
|
||||
; be quite random.
|
||||
; For more information, see the documentation page for this module:
|
||||
; https://polybar.readthedocs.io/en/stable/user/modules/tray.html
|
||||
[module/systray]
|
||||
type = internal/tray
|
||||
|
||||
format-margin = 8pt
|
||||
tray-spacing = 16pt
|
||||
|
||||
[module/xworkspaces]
|
||||
type = internal/xworkspaces
|
||||
|
||||
label-active = %name%
|
||||
label-active-background = ${colors.background-alt}
|
||||
label-active-underline= ${colors.primary}
|
||||
label-active-padding = 1
|
||||
|
||||
label-occupied = %name%
|
||||
label-occupied-padding = 1
|
||||
|
||||
label-urgent = %name%
|
||||
label-urgent-background = ${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
|
||||
label-empty = %name%
|
||||
label-empty-foreground = ${colors.disabled}
|
||||
label-empty-padding = 1
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:60:...%
|
||||
|
||||
[module/filesystem]
|
||||
type = internal/fs
|
||||
interval = 25
|
||||
|
||||
mount-0 = /
|
||||
|
||||
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
|
||||
|
||||
label-unmounted = %mountpoint% not mounted
|
||||
label-unmounted-foreground = ${colors.disabled}
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
|
||||
format-volume-prefix = "VOL "
|
||||
format-volume-prefix-foreground = ${colors.primary}
|
||||
format-volume = <label-volume>
|
||||
|
||||
label-volume = %percentage%%
|
||||
|
||||
label-muted = muted
|
||||
label-muted-foreground = ${colors.disabled}
|
||||
|
||||
[module/xkeyboard]
|
||||
type = internal/xkeyboard
|
||||
blacklist-0 = num lock
|
||||
|
||||
label-layout = %layout%
|
||||
label-layout-foreground = ${colors.primary}
|
||||
|
||||
label-indicator-padding = 2
|
||||
label-indicator-margin = 1
|
||||
label-indicator-foreground = ${colors.background}
|
||||
label-indicator-background = ${colors.secondary}
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 2
|
||||
format-prefix = "RAM "
|
||||
format-prefix-foreground = ${colors.primary}
|
||||
label = %percentage_used:2%%
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 2
|
||||
format-prefix = "CPU "
|
||||
format-prefix-foreground = ${colors.primary}
|
||||
label = %percentage:2%%
|
||||
|
||||
[network-base]
|
||||
type = internal/network
|
||||
interval = 5
|
||||
format-connected = <label-connected>
|
||||
format-disconnected = <label-disconnected>
|
||||
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
|
||||
|
||||
[module/wlan]
|
||||
inherit = network-base
|
||||
interface-type = wireless
|
||||
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
|
||||
|
||||
[module/eth]
|
||||
inherit = network-base
|
||||
interface-type = wired
|
||||
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 1
|
||||
|
||||
date = %H:%M
|
||||
date-alt = %Y-%m-%d %H:%M:%S
|
||||
|
||||
label = %date%
|
||||
label-foreground = ${colors.primary}
|
||||
|
||||
[settings]
|
||||
screenchange-reload = true
|
||||
pseudo-transparency = true
|
||||
|
||||
; vim:ft=dosini
|
||||
41
doc/dev/getting-started.rst
Normal file
41
doc/dev/getting-started.rst
Normal file
@@ -0,0 +1,41 @@
|
||||
Getting Started
|
||||
===============
|
||||
|
||||
Setting up polybar for development is basically the same process as `compiling
|
||||
it from source <https://github.com/polybar/polybar/wiki/Compiling>`_.
|
||||
However, we recommend using the ``Debug`` or ``Sanitize`` cmake build type when
|
||||
configuring the project:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug ..
|
||||
# Or
|
||||
cmake -DCMAKE_BUILD_TYPE=Sanitize ..
|
||||
|
||||
This will give you debug symbols in the executable and the ``Sanitize`` build
|
||||
type will also enable the ``AddressSanitizer`` and
|
||||
``UndefinedBehaviorSanitizer``, which can give you very useful information
|
||||
about crashes and undefined behavior at runtime.
|
||||
|
||||
Editors
|
||||
-------
|
||||
|
||||
Since this is a cmake project, most IDEs will have built-in support or a plugin
|
||||
to automatically setup this project.
|
||||
|
||||
In addition, the ``cmake`` command creates a ``compile_commands.json`` file in
|
||||
the build folder, which can be used by many `language servers
|
||||
<https://microsoft.github.io/language-server-protocol/>`_.
|
||||
If you are using a C++ language server in your editor, it should be as easy as
|
||||
symlinking the ``compile_commands.json`` into the repo root directory:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
ln -s build/compile_commands.json .
|
||||
|
||||
Distro-Specific Setup
|
||||
---------------------
|
||||
|
||||
The wiki contains user-contributed `setup tips
|
||||
<https://github.com/polybar/polybar/wiki/Distro-Specific-Setup>`_ for some
|
||||
distros.
|
||||
87
doc/dev/packaging.rst
Normal file
87
doc/dev/packaging.rst
Normal file
@@ -0,0 +1,87 @@
|
||||
Packaging Polybar
|
||||
=================
|
||||
|
||||
Do you want to package polybar for a distro? Great! Read this page to get
|
||||
started.
|
||||
|
||||
First Steps
|
||||
-----------
|
||||
|
||||
Before you get started, have a look at the `Packaging Label
|
||||
<https://github.com/polybar/polybar/issues?q=label%3APackaging>`_ on our GitHub
|
||||
repo and `Repology <https://repology.org/project/polybar/versions>`_ to see if
|
||||
polybar is already packaged for that distro or if there are efforts to do so.
|
||||
|
||||
Even if a package already exists, it might still make sense for you to package
|
||||
polybar in some cases. Some of these cases are:
|
||||
|
||||
- The existing package is out-of-date and the packager is no longer able/willing
|
||||
to continue maintaining the package (or they are simply not reachable
|
||||
anymore).
|
||||
- The existing package exist in some non-official repository and you are able to
|
||||
introduce the package into the official package repository for the
|
||||
distro/package manager. For example if there is a PPA providing polybar for
|
||||
Ubuntu and you can add polybar to the official Ubuntu repositories, please do
|
||||
:)
|
||||
|
||||
The list above is not exhaustive, if you are unsure, feel free to ask in a new
|
||||
GitHub issue or on `Gitter <https://gitter.im/polybar>`_. Please also ask if you
|
||||
run into any polybar related issues while packaging.
|
||||
|
||||
Packaging
|
||||
---------
|
||||
|
||||
If you haven't already, carefully read the `Compiling
|
||||
<https://github.com/polybar/polybar/wiki/Compiling>`_ wiki page to make sure you
|
||||
fully understand all the dependencies involved and how to build polybar
|
||||
manually.
|
||||
|
||||
We can't really tell you how to create a package for your distro, you need to
|
||||
figure that out yourself. But we can give you some guidance on building polybar
|
||||
for a package
|
||||
|
||||
Gathering the Source Code
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Unless you are creating a package that tracks the ``master`` branch, don't clone
|
||||
the git repository. We provide a tarball with all the required source code on
|
||||
our `Release Page <https://github.com/polybar/polybar/releases>`_, use that in
|
||||
your build.
|
||||
|
||||
Configuring and Compiling
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. note::
|
||||
|
||||
Do not use the ``build.sh`` script for building polybar for your package. The
|
||||
usage and flags of the script may change without notice and we don't consider
|
||||
that a breaking change.
|
||||
|
||||
You can mostly follow the instructions on the `wiki
|
||||
<https://github.com/polybar/polybar/wiki/Compiling#compiling>`_ for how to
|
||||
compile polybar, but there are some additional ``cmake`` arguments you might
|
||||
want to use:
|
||||
|
||||
- ``-DCMAKE_BUILD_TYPE=Release``: As of writing this is already the default, but
|
||||
use it just to be on the safe side.
|
||||
- ``-DCMAKE_INSTALL_PREFIX=/usr``: Without this all the polybar files will be
|
||||
installed under ``/usr/local``. However, for packages it is often recommended
|
||||
they directly install to ``/usr``. So this flag will install polybar to
|
||||
``/usr/bin/polybar`` instead of ``/usr/local/bin/polybar``. The packaging
|
||||
guidelines for your distro may disagree with this, in that case be sure to
|
||||
follow your distro's guidelines.
|
||||
|
||||
Instead of ``sudo make install``, you will most likely want to use
|
||||
``DESTDIR=<dir> make install``. That way the files will be installed into
|
||||
``<dir>`` instead of your filesystem root.
|
||||
|
||||
Finishing Up
|
||||
------------
|
||||
|
||||
Finally, subscribe to our :issue:`GitHub thread for package maintainers <1971>`
|
||||
to get notified about new releases and changes to how polybar is built.
|
||||
If you want to, you can also open a PR to add your package to the `Getting
|
||||
Started <https://github.com/polybar/polybar#getting-started>`_ section of our
|
||||
README.
|
||||
|
||||
Thank you very much for maintaining a polybar package! 🎉
|
||||
273
doc/dev/release-workflow.rst
Normal file
273
doc/dev/release-workflow.rst
Normal file
@@ -0,0 +1,273 @@
|
||||
Release Workflow
|
||||
================
|
||||
|
||||
We try to follow `Semantic Versioning <https://semver.org/>`_ in this project.
|
||||
Patch releases (e.g. ``3.3.X``) contain only bug fixes. Minor releases (e.g.
|
||||
``3.X.0``) can have backwards-compatible features. And major releases (
|
||||
``X.0.0``) can introduce incompatible changes.
|
||||
|
||||
.. note::
|
||||
|
||||
This document replaces the "`Release Guidelines
|
||||
<https://github.com/polybar/polybar/wiki/Release-Guidelines>`_" on the wiki
|
||||
that we used between 3.2.0 and 3.4.3. Starting with 3.5.0, we will follow
|
||||
the workflow described here to publish releases.
|
||||
|
||||
Polybar uses the `OneFlow
|
||||
<https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow>`_
|
||||
branching model for publishing new releases and introducing hotfixes.
|
||||
|
||||
The way we accept code from contributors does not change: Contributors fork
|
||||
polybar, commit their changes to a new branch and open a PR to get that branch
|
||||
merged.
|
||||
After reviewing and approving the changes, a maintainer "merges" the PR.
|
||||
"Merging" is done in the GitHub UI by either rebasing or squashing the
|
||||
changes.
|
||||
Regular merging is disabled because we do not want merge a merge commit for
|
||||
every PR.
|
||||
|
||||
This document is mainly concerned with how to properly release a new version of
|
||||
polybar.
|
||||
For that reason this might not be of interest to you, if you are not a
|
||||
maintainer, but feel free to read on anyway.
|
||||
|
||||
Drafting a new Release
|
||||
----------------------
|
||||
|
||||
There a two processes for how to draft a new release. The process for major and
|
||||
minor versions is the same as they both are "regular" releases.
|
||||
Patch releases are triggered by bugfixes that cannot wait until the next regular
|
||||
release and have a slightly different workflow.
|
||||
|
||||
Regular Releases (Major, Minor)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Regular releases are created once we find that ``master`` is in a stable state
|
||||
and that there are enough new features to justify a new release.
|
||||
A release branch ``release/X.Y.0`` is branched off of a commit on ``master``
|
||||
that contains all the features we want in the release, this branch is pushed to
|
||||
the official repository.
|
||||
For example for version ``3.5.0`` the branch ``release/3.5.0`` would be created:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git checkout -b release/3.5.0 <commit>
|
||||
|
||||
The release branch should typically only exist for at most a few days.
|
||||
|
||||
Hotfix Releases (Patch)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
A hotfix release is created whenever we receive a fix for a bug that we believe
|
||||
should be released immediately instead of it only being part of the next regular
|
||||
release.
|
||||
Generally any bugfix qualifies, but it is up to the maintainers to decide
|
||||
whether a hotfix release should be created.
|
||||
|
||||
The hotfix release branch ``hotfix/X.Y.Z`` is created by branching off at the
|
||||
previous release tag (``X.Y.Z-1``).
|
||||
For example, if the latest version is ``3.5.2``, the next hotfix will be on
|
||||
branch ``hotfix/3.5.3``:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git checkout -b hotfix/3.5.3 3.5.2
|
||||
|
||||
Since the PRs for such bugfixes are often not created by maintainers, they will
|
||||
often not be based on the latest release tag, but just be branched off
|
||||
``master`` because contributors don't necessarily know about this branching
|
||||
model and also may well not know whether a hotfix will be created for a certain
|
||||
bugfix.
|
||||
|
||||
.. TODO create contributor page that describes where to branch off. And link to
|
||||
that page.
|
||||
|
||||
In case a PR containing a bugfix that is destined for a patch release is not
|
||||
branched off the previous release, a maintainer creates the proper release
|
||||
branch and cherry-picks the bugfix commits.
|
||||
|
||||
.. note::
|
||||
|
||||
Alternatively, the contributor can also ``git rebase --onto`` to base the
|
||||
branch off the previous release tag. However, in most cases it makes sense for
|
||||
a maintainer to create the release branch since they will also need to create
|
||||
a `Release PR`_ for it.
|
||||
|
||||
Once the release branch is created and contains the right commits, the
|
||||
maintainer should follow `Publishing a new Release`_ to finish this patch
|
||||
release.
|
||||
|
||||
If multiple bugfixes are submitted in close succession, they can all be
|
||||
cherry-picked onto the same patch release branch to not create many individual
|
||||
release with only a single fix.
|
||||
The maintainer can also decide to leave the release branch for this patch
|
||||
release open for a week in order to possibly combine multiple bugfixes into a
|
||||
single release.
|
||||
|
||||
Publishing a new Release
|
||||
------------------------
|
||||
|
||||
The process for publishing a release is the same for all release types. It goes
|
||||
as follows:
|
||||
|
||||
* A `Release PR`_ is created for the release. This PR MUST NOT be merged in
|
||||
GitHub's interface, it is only here for review, merging happens at the
|
||||
commandline.
|
||||
* After approval, a signed git tag without message is created locally at the
|
||||
tip of the release branch and pushed:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git tag -m "" -s X.Y.Z <release-branch>
|
||||
git push --tags
|
||||
|
||||
* A `draft release`_ targetting the new tag is created in GitHub's release
|
||||
publishing tools and published.
|
||||
* After the tag is created, the release branch is manually merged into
|
||||
``master``.
|
||||
Here it is vitally important that the history of the release branch does not
|
||||
change and so we use ``git merge``. We do it manually because using ``git
|
||||
merge`` is disabled on PRs.
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git checkout master
|
||||
git merge <release-branch>
|
||||
git push origin
|
||||
|
||||
* After the tag is created, the release branch can be deleted with ``git push
|
||||
origin :<release-branch>``.
|
||||
* Work through the `After-Release Checklist`_.
|
||||
|
||||
Here ``<release-branch>`` is either a ``release/X.Y.0`` branch or a
|
||||
``hotfix/X.Y.Z`` branch.
|
||||
|
||||
Release PR
|
||||
~~~~~~~~~~
|
||||
|
||||
The final state of the release branch is prepared as a draft PR on
|
||||
GitHub.
|
||||
That PR is not merged from the GitHub interface though.
|
||||
|
||||
The release PR must do the following things:
|
||||
|
||||
* Write any missing migration guides for:
|
||||
|
||||
* Deprecated or removed options
|
||||
* New features that it might be worth migrating to
|
||||
* Have a release commit at its tip with the message ``Version X.Y.Z`` and the following changes
|
||||
|
||||
* Finalizes the `Changelog`_ for this release
|
||||
* Updates the version number in ``version.txt``
|
||||
|
||||
Changelog
|
||||
~~~~~~~~~
|
||||
|
||||
The ``CHANGELOG.md`` file at the root of the repo should already contain all the
|
||||
changes for the upcoming release in a format based on
|
||||
`keep a changelog <https://keepachangelog.com/en/1.0.0/>`_.
|
||||
For each release those changes should be checked to make sure we did not miss
|
||||
anything.
|
||||
|
||||
For all releases, a new section of the following form should be created below
|
||||
the ``Unreleased`` section:
|
||||
|
||||
.. code-block:: md
|
||||
|
||||
## [X.Y.Z] - YYYY-MM-DD
|
||||
|
||||
In addition, the reference link for the release should be added and the
|
||||
reference link for the unreleased section should be updated at the bottom of the
|
||||
document:
|
||||
|
||||
.. code-block:: md
|
||||
|
||||
[Unreleased]: https://github.com/polybar/polybar/compare/X.Y.Z...HEAD
|
||||
[X.Y.Z]: https://github.com/polybar/polybar/releases/tag/X.Y.Z
|
||||
|
||||
Since the release tag doesn't exist yet, both of these links will be invalid
|
||||
until the release is published.
|
||||
|
||||
All changes from the ``Unreleased`` section that apply to this release should be
|
||||
moved into the new release section.
|
||||
For regular releases this is generally the entire ``Unreleased`` section, while
|
||||
for patch releases it will only be a few entries.
|
||||
|
||||
The contents of the release section can be copied into the draft release in
|
||||
GitHub's release tool with a heading named ``## Changelog``.
|
||||
|
||||
Since major releases generally break backwards compatibility in some way, their
|
||||
changelog should also prominently feature precisely what breaking changes were
|
||||
introduced. If suitable, maybe even separate documentation dedicated to the
|
||||
migration should be written.
|
||||
|
||||
Draft Release
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
On `GitHub <https://github.com/polybar/polybar/releases/new>`_ a new release
|
||||
should be drafted.
|
||||
The release targets the git tag that was just pushed, the name of the release
|
||||
and the tag is simply the release number.
|
||||
|
||||
The content of the release message should contain the changelog copied from
|
||||
``CHANGELOG.md`` under the heading ``## Changelog``.
|
||||
In addition using GitHub's "Auto-generate release notes" feature, the list of
|
||||
new contributors should be generated and put at the end of the release notes.
|
||||
The generated list of PRs can be removed.
|
||||
|
||||
For minor and major releases, add a link to the migration guide directly under
|
||||
the ``## Changelog`` header:
|
||||
|
||||
.. code-block:: markdown
|
||||
|
||||
**[Migration Guide](https://polybar.readthedocs.io/en/stable/migration/X.Y/index.html)**
|
||||
|
||||
At the bottom, check the two boxes "Set as the latest release" and "Create a
|
||||
discussion for this release" (select the category "Announcements").
|
||||
|
||||
After-Release Checklist
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Verify the release archive (see `Verify Release`_)
|
||||
* Update the Wiki
|
||||
|
||||
* Make sure all the new functionality is documented
|
||||
* Mark deprecated features appropriately (see `Deprecations`_)
|
||||
* Remove all "unreleased" notes (not for patch releases)
|
||||
* Inform packagers of new release in :issue:`1971`. Mention any dependency
|
||||
changes and any changes to the build workflow. Also mention any new files are
|
||||
created by the installation.
|
||||
* Create a PR that updates the AUR ``PKGBUILD`` file for the ``polybar-git``
|
||||
package (push after the release archive is uploaded).
|
||||
* Close the `GitHub Milestone <https://github.com/polybar/polybar/milestones>`_
|
||||
for the new release and move open issues (if any) to a later release.
|
||||
* Activate the version on `Read the Docs
|
||||
<https://readthedocs.org/projects/polybar/versions/>`_ and deactivate all
|
||||
previous versions for the same minor release (e.g. for 3.5.4, deactivate all
|
||||
other 3.5.X versions).
|
||||
|
||||
Verify Release
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
Confirm that the release archive was added to the release.
|
||||
We have a GitHub action workflow called 'Release Workflow' that on every
|
||||
release automatically creates a release archive, uploads it to the release,
|
||||
and adds a 'Download' section to the release body.
|
||||
If this fails for some reason, it should be triggered manually.
|
||||
|
||||
Afterwards, download the archive, verify its hash, and sign it:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
gpg --armor --detach-sign polybar-X.Y.Z.tar.gz
|
||||
|
||||
Finally, upload the generated ``polybar-X.Y.Z.tar.gz.asc`` to the GitHub
|
||||
release.
|
||||
|
||||
Deprecations
|
||||
~~~~~~~~~~~~
|
||||
|
||||
If any publicly facing part of polybar is being deprecated, it should be marked
|
||||
as such in the code, through warnings/errors in the log, and by comments in the
|
||||
wiki. Every deprecated functionality is kept until the next major release and
|
||||
removed there, unless it has not been deprecated in a minor release before.
|
||||
75
doc/dev/style-guide.rst
Normal file
75
doc/dev/style-guide.rst
Normal file
@@ -0,0 +1,75 @@
|
||||
Style Guide
|
||||
===========
|
||||
|
||||
There is a ``.editorconfig`` and a ``.clang-format`` file in the project root
|
||||
that defines some basic guidelines, mainly relating to indentation.
|
||||
|
||||
Code Formatting
|
||||
---------------
|
||||
|
||||
We use ``clang-format`` for code formatting, the style rules are defined in
|
||||
``.clang-format``, before submitting a PR, make sure to run the following command
|
||||
on all the C++ files you changed:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
clang-format -style=file -i <FILES>
|
||||
|
||||
**Note:** Depending on which file you change, this may produce a lot of changes
|
||||
because we have not run ``clang-format`` on all files in the project. This is
|
||||
fine.
|
||||
|
||||
Indentation
|
||||
~~~~~~~~~~~
|
||||
|
||||
Files use 2 spaces for indentation.
|
||||
|
||||
Line Width
|
||||
~~~~~~~~~~
|
||||
|
||||
Lines should not be longer than 120 characters, ``clang-format`` will enforce
|
||||
this when run. However, try to keep lines under 80 characters if it seems
|
||||
reasonable in the current situation.
|
||||
|
||||
In some cases it makes sense to have lines longer than 80 characters for
|
||||
readability. But long lines can just the same be unreadable, for example if you
|
||||
have long if-conditions or use complex expressions as function parameters. Make
|
||||
sure you only use longer lines if keeping it under 80 would be less readable.
|
||||
|
||||
Comments
|
||||
--------
|
||||
|
||||
Use Doxygen ``/** */`` comments in front of functions, methods, types, members and
|
||||
classes:
|
||||
|
||||
.. code-block:: cpp
|
||||
|
||||
/**
|
||||
* @brief Generates a config object from a config file
|
||||
*
|
||||
* For modularity the parsing and storing of the config is separated
|
||||
*/
|
||||
class config_parser {
|
||||
...
|
||||
/**
|
||||
* @brief Is used to resolve ${root...} references
|
||||
*/
|
||||
string m_barname;
|
||||
...
|
||||
}
|
||||
|
||||
For all other comments use ``//`` for single-line and ``/* */`` for multi-line comments.
|
||||
|
||||
Your comments should describe the intent and purpose of your code, not necessarily what it does.
|
||||
|
||||
Header Files
|
||||
------------
|
||||
|
||||
Header files should end in ``.hpp``.
|
||||
|
||||
We use pragmas instead of include guards to guarantee header files are included
|
||||
only once:
|
||||
|
||||
.. code-block:: cpp
|
||||
|
||||
#pragma once
|
||||
26
doc/dev/testing.rst
Normal file
26
doc/dev/testing.rst
Normal file
@@ -0,0 +1,26 @@
|
||||
Testing
|
||||
=======
|
||||
|
||||
Polybar uses `googletest <https://google.github.io/googletest/>`_ as its
|
||||
testing and mocking framework.
|
||||
Tests live in the ``tests/`` directory; they can be enabled during cmake with
|
||||
``-DBUILD_TESTS=ON`` and compiled with ``make all_unit_tests``.
|
||||
|
||||
Each test gets its own executable in ``build/tests``, which can be executed to run
|
||||
a specific test.
|
||||
|
||||
Running all tests is preferably done with the following command:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
make check
|
||||
|
||||
This runs all available tests and prints the output in color for failed tests
|
||||
only.
|
||||
|
||||
Adding New Tests
|
||||
----------------
|
||||
|
||||
All new tests need to be added to the ``tests/CMakeLists.txt`` file. Have a look
|
||||
at the other unit tests in ``tests/unit_tests`` to see how to write tests for your
|
||||
code.
|
||||
52
doc/index.rst
Normal file
52
doc/index.rst
Normal file
@@ -0,0 +1,52 @@
|
||||
Polybar Documentation
|
||||
=====================
|
||||
|
||||
.. note:: This is still very much a work-in-progress. Most information is still
|
||||
to be found on our `GitHub Wiki <https://github.com/polybar/polybar/wiki>`_.
|
||||
We will migrate the wiki content step-by-step.
|
||||
|
||||
|
||||
Welcome to the official polybar documentation.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Content:
|
||||
|
||||
user/actions
|
||||
user/ipc
|
||||
user/modules/index
|
||||
user/fonts/index
|
||||
user/default-config
|
||||
migration/index
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Manual Pages:
|
||||
|
||||
man/polybar.1
|
||||
man/polybar-msg.1
|
||||
man/polybar.5
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: For Contributors:
|
||||
|
||||
dev/packaging
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Developer Documentation:
|
||||
|
||||
dev/getting-started
|
||||
dev/style-guide
|
||||
dev/testing
|
||||
dev/release-workflow
|
||||
|
||||
Getting Help
|
||||
============
|
||||
|
||||
* `Polybar Wiki <https://github.com/polybar/polybar/wiki>`_
|
||||
* `Gitter <https://gitter.im/polybar/polybar>`_
|
||||
* `/r/polybar <https://reddit.com/r/polybar>`_ on reddit
|
||||
* ``#polybar`` on `irc.libera.chat:6697 <https://libera.chat/>`_
|
||||
|
||||
75
doc/man/polybar-msg.1.rst
Normal file
75
doc/man/polybar-msg.1.rst
Normal file
@@ -0,0 +1,75 @@
|
||||
polybar-msg(1)
|
||||
==============
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
| **polybar-msg** [*OPTIONS*] **action** *action-string*
|
||||
| **polybar-msg** [*OPTIONS*] **action** *module* *action* [*data*]
|
||||
| **polybar-msg** [*OPTIONS*] **cmd** *command*
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Polybar allows external control through *actions* and *commands*.
|
||||
Actions control individual modules and commands control the bar itself.
|
||||
|
||||
The full IPC documentation is linked at the end of this document.
|
||||
|
||||
The available actions depend on the target module.
|
||||
For actions, the payload is either a single action string or the module name,
|
||||
the action name, and the optional data string specified separately.
|
||||
|
||||
In order for **polybar-msg** being able to send a message to a running
|
||||
**polybar** process, the bar must have IPC enabled and both **polybar-msg** and
|
||||
**polybar** must run under the same user.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
.. program:: polybar-msg
|
||||
|
||||
.. option:: -h, --help
|
||||
|
||||
Display help text and exit
|
||||
|
||||
.. option:: -p PID
|
||||
|
||||
Send message only to **polybar** process running under the given process ID.
|
||||
If not specified, the message is sent to all running **polybar** processes.
|
||||
|
||||
EXAMPLES
|
||||
--------
|
||||
|
||||
**polybar-msg** **cmd** *quit*
|
||||
Terminate all running **polybar** instances.
|
||||
|
||||
**polybar-msg** **action** *mymodule* *module_hide*
|
||||
|
||||
**polybar-msg** **action** "*#mymodule.module_hide*"
|
||||
Hide the module named *mymodule*.
|
||||
The first variant specifies the module and action names separately, the second uses an action string.
|
||||
|
||||
AUTHORS
|
||||
-------
|
||||
| Polybar was created by Michael Carlberg and is currently maintained by Patrick Ziegler.
|
||||
| Contributors can be listed on GitHub.
|
||||
|
||||
REPORTING BUGS
|
||||
--------------
|
||||
Report issues on GitHub <https://github.com/polybar/polybar>
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
.. only:: man
|
||||
|
||||
:manpage:`polybar`\(1),
|
||||
:manpage:`polybar`\(5)
|
||||
|
||||
| IPC documentation: <https://polybar.rtfd.org/en/stable/user/ipc.html>
|
||||
|
||||
|
||||
.. only:: not man
|
||||
|
||||
:doc:`polybar.1`,
|
||||
:doc:`polybar.5`
|
||||
|
||||
:doc:`/user/ipc`
|
||||
92
doc/man/polybar.1.rst
Normal file
92
doc/man/polybar.1.rst
Normal file
@@ -0,0 +1,92 @@
|
||||
polybar(1)
|
||||
==========
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
**polybar** [*OPTIONS*]... [*BAR*]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
Polybar aims to help users build beautiful and highly customizable status bars for their desktop environment, without the need of having a black belt in shell scripting.
|
||||
If the *BAR* argument is not provided and the configuration file only contains one bar definition, polybar will display this bar.
|
||||
|
||||
OPTIONS
|
||||
-------
|
||||
|
||||
.. program:: polybar
|
||||
|
||||
.. option:: -h, --help
|
||||
|
||||
Display help text and exit
|
||||
|
||||
.. option:: -v, --version
|
||||
|
||||
Display build details and exit
|
||||
.. option:: -l, --log=LEVEL
|
||||
|
||||
| Set the logging verbosity (default: **notice**)
|
||||
| *LEVEL* is one of: error, warning, notice, info, trace
|
||||
.. option:: -q, --quiet
|
||||
|
||||
Be quiet (will override -l)
|
||||
.. option:: -c, --config=FILE
|
||||
|
||||
Specify the path to the configuration file. By default, the configuration file is loaded from:
|
||||
|
||||
* ``$XDG_CONFIG_HOME/polybar/config``
|
||||
* ``$XDG_CONFIG_HOME/polybar/config.ini``
|
||||
* ``$HOME/.config/polybar/config``
|
||||
* ``$HOME/.config/polybar/config.ini``
|
||||
* ``$XDG_CONFIG_DIRS/polybar/config.ini``
|
||||
* ``/etc/xdg/polybar/config.ini`` (only if ``XDG_CONFIG_DIRS`` is not set)
|
||||
* ``/etc/polybar/config.ini``
|
||||
.. option:: -r, --reload
|
||||
|
||||
Reload the application when the config file has been modified
|
||||
.. option:: -d, --dump=PARAM
|
||||
|
||||
Print the value of the specified parameter *PARAM* in bar section and exit
|
||||
.. option:: -m, --list-monitors
|
||||
|
||||
| Print list of available monitors and exit.
|
||||
| If some monitors are cloned, this will exclude all but one of them.
|
||||
| If polybar was compiled with RandR monitor support, only monitors are listed and not physical outputs.
|
||||
.. option:: -M, --list-all-monitors
|
||||
|
||||
| Print list of all available monitors and exit.
|
||||
| This includes cloned monitors as well as both physical outputs and RandR monitors (if supported).
|
||||
| Only the names listed here can be used as monitor names in polybar.
|
||||
.. option:: -w, --print-wmname
|
||||
|
||||
Print the generated *WM_NAME* and exit
|
||||
.. option:: -s, --stdout
|
||||
|
||||
Output the data to stdout instead of drawing it to the X window
|
||||
.. option:: -p, --png=FILE
|
||||
|
||||
Save png snapshot to *FILE* after running for 3 seconds
|
||||
|
||||
AUTHORS
|
||||
-------
|
||||
| Polybar was created by Michael Carlberg and is currently maintained by Patrick Ziegler.
|
||||
| Contributors can be listed on GitHub.
|
||||
|
||||
REPORTING BUGS
|
||||
--------------
|
||||
Report issues on GitHub <https://github.com/polybar/polybar>
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
.. only:: man
|
||||
|
||||
:manpage:`polybar-msg`\(1),
|
||||
:manpage:`polybar`\(5)
|
||||
|
||||
|
||||
.. only:: not man
|
||||
|
||||
:doc:`polybar-msg.1`,
|
||||
:doc:`polybar.5`
|
||||
|
||||
| Full documentation at: <https://github.com/polybar/polybar>
|
||||
| Project wiki: <https://github.com/polybar/polybar/wiki>
|
||||
184
doc/man/polybar.5.rst
Normal file
184
doc/man/polybar.5.rst
Normal file
@@ -0,0 +1,184 @@
|
||||
.. highlight:: ini
|
||||
|
||||
polybar(5)
|
||||
==========
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
The polybar configuration file defines the behavior and look of polybar. It uses
|
||||
a variant of the `INI <https://en.wikipedia.org/wiki/INI_file>`_ file format.
|
||||
The exact syntax is described below but first a small snippet to get familiar
|
||||
with the syntax:
|
||||
|
||||
::
|
||||
|
||||
[section_name]
|
||||
; A comment
|
||||
# Another comment
|
||||
|
||||
background = #ff992a
|
||||
width = 90%
|
||||
monitor = HDMI-0
|
||||
|
||||
screenchange-reload = false
|
||||
|
||||
; Use double quotes if you want to keep the surrounding space.
|
||||
text = " Some text "
|
||||
|
||||
When started ``polybar`` will search for the config file in one of several
|
||||
places in the following order:
|
||||
|
||||
* If the ``-c`` or ``--config`` command line argument is specified, it will use
|
||||
the path given there.
|
||||
* ``$XDG_CONFIG_HOME/polybar/config``
|
||||
* ``$XDG_CONFIG_HOME/polybar/config.ini``
|
||||
* ``$HOME/.config/polybar/config``
|
||||
* ``$HOME/.config/polybar/config.ini``
|
||||
* ``$XDG_CONFIG_DIRS/polybar/config.ini``
|
||||
* ``/etc/xdg/polybar/config.ini`` (only if ``XDG_CONFIG_DIRS`` is not set)
|
||||
* ``/etc/polybar/config.ini``
|
||||
|
||||
Syntax
|
||||
------
|
||||
|
||||
The entire config is line-based so everything is constrained to a single line.
|
||||
This means there are no multiline values or other multiline constructs (except
|
||||
for sections).
|
||||
Each line has one of four types:
|
||||
|
||||
* Empty
|
||||
* Comment
|
||||
* Section Header
|
||||
* Key
|
||||
|
||||
Spaces at the beginning and end of each line will be ignored.
|
||||
|
||||
.. note::
|
||||
|
||||
In this context "spaces" include the regular space character as well as the
|
||||
tab character and any other character for which :manpage:`isspace(3)` returns
|
||||
``true`` (e.g. ``\r``).
|
||||
|
||||
Any line that doesn't fit into one of these four types is a syntax error.
|
||||
|
||||
.. note::
|
||||
|
||||
It is recommended that `section header` names and `key` names only use
|
||||
alphanumeric characters as well as dashes (``-``), underscores (``_``) and
|
||||
forward slashes (``/``).
|
||||
|
||||
In practice all characters are allowed except for spaces and any of these:
|
||||
``"'=;#[](){}:.$\%``
|
||||
|
||||
Section Headers
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
Sections are used to group config options together. For example each module is
|
||||
defined in its own section.
|
||||
|
||||
A section is defined by placing the name of the section in square brackets
|
||||
(``[`` and ``]``). For example:
|
||||
|
||||
::
|
||||
|
||||
[module/wm]
|
||||
|
||||
This declares a section with the name ``module/wm`` and all keys defined after
|
||||
this line will belong to that section until a new section is declared.
|
||||
|
||||
.. warning::
|
||||
The first non-empty and non-comment line in the main config file must be a
|
||||
section header. It cannot be a key because that key would not belong to any
|
||||
section.
|
||||
|
||||
.. note::
|
||||
The following section names are reserved and cannot be used inside the config:
|
||||
``self``, ``root``, and ``BAR``.
|
||||
|
||||
Keys
|
||||
^^^^
|
||||
|
||||
Keys are defined by assigning a value to a name like this:
|
||||
|
||||
|
||||
::
|
||||
|
||||
name = value
|
||||
|
||||
This assigns ``value`` to the key ``name`` in whatever section this line is in.
|
||||
Key names need to be unique per section.
|
||||
If the value is enclosed by double-quotes (``"``), the quotes will be ignored.
|
||||
So the following still assigns ``value`` to ``name``:
|
||||
|
||||
::
|
||||
|
||||
name = "value"
|
||||
|
||||
Spaces around the equal sign are ignored, the following are all equivalent:
|
||||
|
||||
::
|
||||
|
||||
name=value
|
||||
name = value
|
||||
name = value
|
||||
|
||||
Because spaces at the beginning and end of the line are also ignored, if you
|
||||
want your value to begin and/or end with a space, the value needs to be enclosed
|
||||
in double-quotes:
|
||||
|
||||
::
|
||||
|
||||
name = " value "
|
||||
|
||||
Here the value of the ``name`` key has a leading and trailing whitespace.
|
||||
|
||||
To treat characters with special meaning as literal characters, you need to
|
||||
prepend them with the backslash (``\``) escape character:
|
||||
|
||||
::
|
||||
|
||||
name = "value\\value\\value"
|
||||
|
||||
Value of this key ``name`` results in ``value\value\value``.
|
||||
|
||||
.. note::
|
||||
|
||||
The only character with a special meaning right now is the backslash character
|
||||
(``\``), which serves as the escape character.
|
||||
More will be added in the future.
|
||||
|
||||
Empty Lines & Comments
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Empty lines and comment lines are ignored when reading the config file, they do
|
||||
not affect polybar's behavior. Comment lines start with either the ``;`` or the
|
||||
``#`` character.
|
||||
|
||||
.. note::
|
||||
|
||||
Inline comments are not supported. For example the following line does not end
|
||||
with a comment, the value of ``name`` is actually set to ``value ; comment``:
|
||||
|
||||
::
|
||||
|
||||
name = value ; comment
|
||||
|
||||
AUTHORS
|
||||
-------
|
||||
| Polybar was created by Michael Carlberg and is currently maintained by Patrick Ziegler.
|
||||
| Contributors can be listed on GitHub.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
||||
.. only:: man
|
||||
|
||||
:manpage:`polybar`\(1),
|
||||
:manpage:`polybar-msg`\(1)
|
||||
|
||||
|
||||
.. only:: not man
|
||||
|
||||
:doc:`polybar.1`,
|
||||
:doc:`polybar-msg.1`
|
||||
40
doc/migration/3.7/index.rst
Normal file
40
doc/migration/3.7/index.rst
Normal file
@@ -0,0 +1,40 @@
|
||||
Migrating From Version 3.6 to 3.7
|
||||
=================================
|
||||
|
||||
Text Module (``custom/text``)
|
||||
-----------------------------
|
||||
|
||||
Using ``content`` to specify the text of the module is deprecated in favor of
|
||||
using the same concepts as all other modules (formats and labels).
|
||||
|
||||
For example, the following text module:
|
||||
|
||||
.. code-block:: dosini
|
||||
|
||||
[module/text]
|
||||
type = custom/text
|
||||
content = Hello World
|
||||
content-foreground = #ff0000
|
||||
|
||||
Should now look like this:
|
||||
|
||||
.. code-block:: dosini
|
||||
|
||||
[module/text]
|
||||
type = custom/text
|
||||
label = Hello World
|
||||
label-foreground = #ff0000
|
||||
|
||||
Because it is set to its default value, the ``format`` setting can also be
|
||||
completely left out.
|
||||
|
||||
In general, all properties on ``content`` also apply the same on ``label``
|
||||
(e.g. ``background``, ``font``), except for ``offset``,
|
||||
``prefix``, ``suffix`` (and their sub-properties).
|
||||
Those three properties have to instead be applied to ``format`` (e.g.
|
||||
``format-offset``).
|
||||
|
||||
System Tray
|
||||
-----------
|
||||
|
||||
.. include:: tray.rst
|
||||
57
doc/migration/3.7/tray.rst
Normal file
57
doc/migration/3.7/tray.rst
Normal file
@@ -0,0 +1,57 @@
|
||||
..
|
||||
File included directly in other pages describing migrating to the new tray module
|
||||
|
||||
Polybar version 3.7 introduced the new tray module and deprecated the legacy
|
||||
tray implementation which uses ``tray-position`` to position the tray.
|
||||
You should switch over to the tray module as soon as possible.
|
||||
|
||||
The legacy tray was configured in the `bar section
|
||||
<https://github.com/polybar/polybar/wiki/Configuration#bar-settings>`_, the
|
||||
setting for the module live in that module's section of the config file.
|
||||
The settings in the bar section don't always directly correspond to an
|
||||
equivalent setting in the module section for the new tray module.
|
||||
|
||||
The following lists how each old setting in the bar section should be migrated:
|
||||
|
||||
``tray-position``
|
||||
The tray is now positioned as a module and so its positioning is done by
|
||||
placing it where you want it to appear in one of the three module lists
|
||||
``modules-left``, ``modules-center``, ``modules-right``.
|
||||
|
||||
``tray-detached``
|
||||
This setting does not have an equivalent, detaching the tray is no longer
|
||||
possible.
|
||||
|
||||
``tray-maxsize``
|
||||
The :poly-setting:`tray-size` setting now determines the size of tray icons.
|
||||
|
||||
``tray-transparent``
|
||||
Was already deprecated and does not exist in the tray module.
|
||||
Transparency is enabled automatically if a transparent background is used.
|
||||
|
||||
``tray-background``
|
||||
Also exists in the module section (see :poly-setting:`tray-background`). Now,
|
||||
the setting only applies to the icons themselves and no longer to the space
|
||||
around them.
|
||||
|
||||
``tray-foreground``
|
||||
Also exists in the module section with the same functionality (see
|
||||
:poly-setting:`tray-foreground`).
|
||||
|
||||
``tray-offset-x``, ``tray-offset-y``
|
||||
Has no direct equivalent in the module settings. Horizontally, the tray can
|
||||
be moved in the same way other module content can be moved; by reordering the
|
||||
modules or using things like ``format-offset``, ``format-margin``, or
|
||||
``format-padding``.
|
||||
The tray can't be moved vertically.
|
||||
|
||||
In any case, the tray can no longer be moved outside of the bar window.
|
||||
|
||||
``tray-padding``
|
||||
Spacing between tray icons works a bit different now and needs to be
|
||||
completely reconfigured (see :poly-setting:`tray-padding` and
|
||||
:poly-setting:`tray-spacing`).
|
||||
|
||||
``tray-scale``
|
||||
No longer exist. The size of the icons is solely determined by
|
||||
:poly-setting:`tray-size`.
|
||||
24
doc/migration/index.rst
Normal file
24
doc/migration/index.rst
Normal file
@@ -0,0 +1,24 @@
|
||||
Polybar Migration Guides
|
||||
========================
|
||||
|
||||
Updating polybar to the newest version often requires updating your
|
||||
configuration files to use the newest features and replace outdated settings.
|
||||
|
||||
Starting from version 3.7, we include a small guide here for how to migrate
|
||||
from the previous version.
|
||||
If you are upgrading over multiple versions (e.g. from 3.5 to 3.7), also read
|
||||
the migration guides for all versions in between.
|
||||
|
||||
For migration guides before version 3.7, please look at our `release blog posts
|
||||
<https://polybar.github.io/blog/>`_.
|
||||
|
||||
When upgrading make sure to run polybar from the terminal and look for errors,
|
||||
warnings, and deprecation messages.
|
||||
This can save you a lot of issues in the future when deprecated settings and
|
||||
features are removed.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:caption: Guides
|
||||
|
||||
3.7/index
|
||||
7
doc/requirements.txt
Normal file
7
doc/requirements.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
# Installing these packages is only really needed on readthedocs, building
|
||||
# locally works as long as sphinx is installed.
|
||||
# For local development, you may want to install some of these though.
|
||||
sphinx~=7.2.6
|
||||
sphinx-rtd-theme~=2.0.0rc2
|
||||
sphinx-notfound-page~=1.0.0
|
||||
readthedocs-sphinx-search~=0.3.2
|
||||
463
doc/user/actions.rst
Normal file
463
doc/user/actions.rst
Normal file
@@ -0,0 +1,463 @@
|
||||
Actions
|
||||
=======
|
||||
|
||||
.. versionadded:: 3.5.0
|
||||
|
||||
.. contents:: Table of Contents
|
||||
:local:
|
||||
|
||||
"Actions" are used to trigger certain behavior in modules.
|
||||
For example, when you click on your volume module (pulseaudio or alsa), polybar
|
||||
internally sends an action to that module that tells it to mute/unmute the
|
||||
audio.
|
||||
|
||||
These actions are not only used internally, but users can also send these
|
||||
actions to polybar through `Inter Process Communication
|
||||
<https://github.com/polybar/polybar/wiki/Inter-process-messaging>`_ (IPC) to
|
||||
trigger certain behavior in polybar modules.
|
||||
|
||||
.. _action-string-format:
|
||||
|
||||
Action String Format
|
||||
--------------------
|
||||
|
||||
An action string follows the following format:
|
||||
|
||||
::
|
||||
|
||||
#NAME.ACTION[.DATA]
|
||||
|
||||
Where ``NAME`` is the name of the target module (not the type!) and ``ACTION``
|
||||
is the name of the action in that module. ``DATA`` is optional data attached to
|
||||
an action (for example to say which menu level should be opened).
|
||||
|
||||
For example the
|
||||
`date module <https://github.com/polybar/polybar/wiki/Module:-date>`_ supports
|
||||
the ``toggle`` action to toggle between the regular and the alternative time and
|
||||
date format.
|
||||
If you have the following date module:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[module/mydate]
|
||||
type = internal/date
|
||||
...
|
||||
|
||||
The action string for toggling between the date formats would look like this:
|
||||
|
||||
::
|
||||
|
||||
#mydate.toggle
|
||||
|
||||
Note that we use the name of the module (``mydate``) and not the type.
|
||||
|
||||
As an example for an action string with additional data, take the menu module:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[module/powermenu]
|
||||
type = custom/menu
|
||||
menu-0-0 = Poweroff
|
||||
menu-0-0-exec = poweroff
|
||||
menu-0-1 = Suspend
|
||||
menu-0-1-exec = systemctl suspend
|
||||
|
||||
The action name to open a certain menu level is ``open``, so to open level 0
|
||||
(`menu-0`), the action string additionally has the level attached to it:
|
||||
|
||||
::
|
||||
|
||||
#powermenu.open.0
|
||||
|
||||
Triggering Actions
|
||||
------------------
|
||||
|
||||
Most modules already use action strings to trigger actions when you click on or
|
||||
scroll over a module.
|
||||
But in some cases you may want or need to manually send action strings to
|
||||
polybar to trigger a certain behavior.
|
||||
|
||||
Everywhere where you can specify a command to run on click or scroll, you can
|
||||
also specify an action string.
|
||||
For example, in the bar section, you can specify a command that is triggered
|
||||
when you click anywhere on the bar (where there isn't another click action):
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[bar/mybar]
|
||||
...
|
||||
click-left = #mydate.toggle
|
||||
...
|
||||
|
||||
This will then trigger the ``toggle`` action on the ``mydate`` module when you
|
||||
click anywhere on the bar.
|
||||
|
||||
Similarly, we can use action strings in ``%{A}``
|
||||
`formatting tags <https://github.com/polybar/polybar/wiki/Formatting#action-a>`_
|
||||
just as we would regular commands:
|
||||
|
||||
::
|
||||
|
||||
%{A1:firefox:}%{A3:#mydate.toggle:}Opens firefox on left-click and toggles the
|
||||
date on right-click %{A}%{A}
|
||||
|
||||
Finally, polybar's `Inter Process Communication
|
||||
<https://github.com/polybar/polybar/wiki/Inter-process-messaging>`_ (IPC) can
|
||||
also be used to trigger actions:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
polybar-msg action "#mydate.toggle"
|
||||
|
||||
.. note::
|
||||
|
||||
The quotes around the action string are necessary, otherwise your shell may
|
||||
interpret the ``#`` as the beginning of the comment and ignore the rest of the
|
||||
line.
|
||||
|
||||
Available Actions
|
||||
-----------------
|
||||
|
||||
The following modules have actions available. Most of them are already used by
|
||||
the module by default for click and scroll events.
|
||||
|
||||
All Modules
|
||||
^^^^^^^^^^^
|
||||
|
||||
These actions are available to all modules and are prefixed with ``module_``.
|
||||
|
||||
:``module_show``, ``module_hide``:
|
||||
Shows/Hides a module. The module is still running in the background when
|
||||
hidden, it is just not drawn. The starting state can be configured with the
|
||||
`hidden` configuration option.
|
||||
|
||||
.. versionadded:: 3.6.0
|
||||
|
||||
:``module_toggle``:
|
||||
Toggles the visibility of a module.
|
||||
|
||||
.. versionadded:: 3.6.0
|
||||
|
||||
internal/date
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
:``toggle``:
|
||||
Toggles the date/time format between ``date``/``time`` and
|
||||
``date-alt``/``time-alt``
|
||||
|
||||
internal/alsa
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
:``inc``, ``dec``:
|
||||
Increases/Decreases the volume by ``interval`` percentage points, where
|
||||
``interval`` is the config setting in the module. Volume changed like this
|
||||
will never go above 100%.
|
||||
|
||||
if ``unmute-on-scroll`` is turned on, the sound will also be unmuted when
|
||||
this action is called.
|
||||
|
||||
:``toggle``:
|
||||
Toggles between muted and unmuted.
|
||||
|
||||
internal/pulseaudio
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
:``inc``, ``dec``:
|
||||
Increases/Decreases the volume by ``interval`` percentage points, where
|
||||
``interval`` is the config setting in the module. Volume changed like this
|
||||
will never go above ~153% (if ``use-ui-max`` is set to ``true``) or 100% (if
|
||||
not).
|
||||
|
||||
if ``unmute-on-scroll`` is turned on, the sound will also be unmuted when
|
||||
this action is called.
|
||||
|
||||
:``toggle``:
|
||||
Toggles between muted and unmuted.
|
||||
|
||||
internal/xbacklight
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
:``inc``, ``dec``:
|
||||
Increases/Decreases screen brightness 5 percentage points.
|
||||
|
||||
internal/backlight
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
:``inc``, ``dec``:
|
||||
Increases/Decreases screen brightness 5 percentage points.
|
||||
|
||||
internal/xkeyboard
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
:``switch``:
|
||||
Cycles through configured keyboard layouts.
|
||||
|
||||
internal/mpd
|
||||
^^^^^^^^^^^^
|
||||
|
||||
:``play``: Starts playing the current song.
|
||||
:``pause``: Pauses the current song.
|
||||
:``stop``: Stops playing.
|
||||
:``prev``: Starts playing the previous song.
|
||||
:``next``: Starts playing the next song.
|
||||
:``repeat``: Toggles repeat mode.
|
||||
:``single``: Toggles single mode.
|
||||
:``random``: Toggles random mode.
|
||||
:``consume``: Toggles consume mode.
|
||||
:``seek``: *(Has Data)* Seeks inside the current song.
|
||||
|
||||
The data must be of the form ``[+-]N``, where ``N`` is a number
|
||||
between 0 and 100.
|
||||
|
||||
If either ``+`` or ``-`` is used, it will seek forward or backward
|
||||
from the current position by ``N%`` (relative to the length of the
|
||||
song).
|
||||
Otherwise it will seek to ``N%`` of the current song.
|
||||
|
||||
internal/xworkspaces
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
:``focus``: *(Has Data)* Switches to the given workspace.
|
||||
|
||||
The data is the index of the workspace that should be selected.
|
||||
:``next``: Switches to the next workspace. The behavior of this action is
|
||||
affected by the ``pin-workspaces`` setting.
|
||||
:``prev``: Switches to the previous workspace. The behavior of this action is
|
||||
affected by the ``pin-workspaces`` setting.
|
||||
|
||||
internal/bspwm
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
:``focus``: *(Has Data)* Switches to the given workspace.
|
||||
|
||||
The data has the form ``N+M``, where ``N`` is the index of the
|
||||
monitor and ``M`` the index of the workspace on that monitor.
|
||||
Both indices are 0-based and correspond to the position the monitor
|
||||
and workspace appear in the output of ``bspc subscribe report``.
|
||||
:``next``: Switches to the next workspace. The behavior of this action is
|
||||
affected by the ``pin-workspaces`` setting.
|
||||
:``prev``: Switches to the previous workspace. The behavior of this action is
|
||||
affected by the ``pin-workspaces`` setting.
|
||||
|
||||
|
||||
internal/i3
|
||||
^^^^^^^^^^^
|
||||
|
||||
:``focus``: *(Has Data)* Switches to the given workspace.
|
||||
|
||||
The data is the name of the workspace defined in the i3 config.
|
||||
:``next``: Switches to the next workspace. The behavior of this action is
|
||||
affected by the ``pin-workspaces`` setting.
|
||||
:``prev``: Switches to the previous workspace. The behavior of this action is
|
||||
affected by the ``pin-workspaces`` setting.
|
||||
|
||||
custom/menu
|
||||
^^^^^^^^^^^
|
||||
|
||||
:``open``: *(Has Data)* Opens the given menu level
|
||||
|
||||
The data is a single number specifying which menu level should be
|
||||
opened.
|
||||
:``close``: Closes the menu
|
||||
:``exec``: *(Has Data)* Executes the command at the given menu element.
|
||||
|
||||
The data has the form ``N-M`` and the action will execute the command
|
||||
in ``menu-N-M-exec``.
|
||||
|
||||
|
||||
.. _actions-ipc:
|
||||
|
||||
custom/ipc
|
||||
^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 3.6.0
|
||||
|
||||
:``send``: *(Has Data)* Replace the contents of the module with the data passed in this action.
|
||||
:``hook``: *(Has Data)* Trigger the given hook.
|
||||
|
||||
The data is the 0-based index of the hook to trigger.
|
||||
:``next``: Switches to the next hook and wrap around when the last hook was displayed.
|
||||
:``prev``: Switches to the previous hook and wrap around when the first hook was displayed.
|
||||
:``reset``: Reset the module to its startup state: either empty or according to the ``initial`` setting.
|
||||
|
||||
|
||||
Deprecated Action Names
|
||||
-----------------------
|
||||
|
||||
.. deprecated:: 3.5.0
|
||||
|
||||
In earlier versions (< 3.5.0) action strings only included information about the
|
||||
module type.
|
||||
This meant in bars that contained multiple different modules of the same type,
|
||||
actions for these modules were sometimes processed by the wrong module with the
|
||||
same type.
|
||||
|
||||
Since version 3.5.0, this no longer happens. However, this also means we had to
|
||||
change what actions are recognized by polybar modules.
|
||||
|
||||
If you explicitly use any polybar action names in your config or any of your
|
||||
scripts, you are advised to change them, as they may stop working at some point
|
||||
in the future.
|
||||
For now polybar still supports the old action names, will convert them to the
|
||||
appropriate new action name, and will print a warning to help you find old
|
||||
action names in your config.
|
||||
|
||||
If you use the `menu module
|
||||
<https://github.com/polybar/polybar/wiki/Module:-menu>`_, you most likely use
|
||||
old action names to open and close the menu (for example ``menu-open-1`` or
|
||||
``menu-close``).
|
||||
The ``i3wm-wsnext``, ``i3wm-wsprev``, ``bspwm-desknext``, and ``bspwm-deskprev``
|
||||
actions, to switch workspaces in i3 and bspwm, may also appear in your config.
|
||||
|
||||
Migration
|
||||
^^^^^^^^^
|
||||
|
||||
Updating your config to use the new action names is quite straightforward.
|
||||
|
||||
For each action name, consult the table below to find the new action name.
|
||||
Afterwards build the complete action string as described in
|
||||
:ref:`action-string-format`.
|
||||
|
||||
Please see :ref:`below <menu-example>` for an example of migrating a typical menu module.
|
||||
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|Module Type |Deprecated Action Name |New Action Name|
|
||||
+=========================+=======================+===============+
|
||||
|``internal/date`` |``datetoggle`` |``toggle`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/alsa`` |``volup`` |``inc`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``voldown`` |``dec`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``volmute`` |``toggle`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/pulseaudio`` |``pa_volup`` |``inc`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``pa_voldown`` |``dec`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``pa_volmute`` |``toggle`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/xbacklight`` |``xbacklight+`` |``inc`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``xbacklight-`` |``dec`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/backlight`` |``backlight+`` |``inc`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``backlight-`` |``dec`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/xkeyboard`` |``xkeyboard/switch`` |``switch`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/mpd`` |``mpdplay`` |``play`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdpause`` |``pause`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdstop`` |``stop`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdprev`` |``prev`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdnext`` |``next`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdrepeat`` |``repeat`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdsingle`` |``single`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdrandom`` |``random`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdconsume`` |``consume`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``mpdseekN`` |``seek.N`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/xworkspaces`` |``xworkspaces-focus=N``|``focus.N`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``xworkspaces-next`` |``next`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``xworkspaces-prev`` |``prev`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/bspwm`` |``bspwm-deskfocusN`` |``focus.N`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``bspwm-desknext`` |``next`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``bspwm-deskprev`` |``prev`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``internal/i3`` |``i3wm-wsfocus-N`` |``focus.N`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``i3-wsnext`` |``next`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``i3-wsprev`` |``prev`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|``custom/menu`` |``menu-open-N`` |``open.N`` |
|
||||
| +-----------------------+---------------+
|
||||
| |``menu-close`` |``close`` |
|
||||
+-------------------------+-----------------------+---------------+
|
||||
|
||||
.. note::
|
||||
|
||||
Some deprecated action names are suffixed with ``N``, this means that that
|
||||
action has some additional data (represented by that ``N``), in the new
|
||||
action names this data will appear in exactly the same way, after a period.
|
||||
|
||||
.. _menu-example:
|
||||
|
||||
Menu Module Example
|
||||
"""""""""""""""""""
|
||||
|
||||
The menu module is the only module where we have to explicitly use actions for
|
||||
it to work. Because of this, almost everyone will need to update their menu
|
||||
module to use the new action format.
|
||||
|
||||
Below you can see an example of a menu module:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[module/apps]
|
||||
type = custom/menu
|
||||
|
||||
label-open = Apps
|
||||
|
||||
menu-0-0 = Browsers
|
||||
menu-0-0-exec = menu-open-1
|
||||
menu-0-1 = Multimedia
|
||||
menu-0-1-exec = menu-open-2
|
||||
|
||||
menu-1-0 = Firefox
|
||||
menu-1-0-exec = firefox
|
||||
menu-1-1 = Chromium
|
||||
menu-1-1-exec = chromium
|
||||
|
||||
menu-2-0 = Gimp
|
||||
menu-2-0-exec = gimp
|
||||
menu-2-1 = Scrot
|
||||
menu-2-1-exec = scrot
|
||||
|
||||
This module uses two actions: ``menu-open-1`` and ``menu-open-2``.
|
||||
These are actions with data, the data specifies which level of the menu should
|
||||
be opened.
|
||||
|
||||
Looking at the table, we see that the new action name for ``menu-open-N`` is
|
||||
``open.N``, where ``.N`` is the data attached to the action.
|
||||
Putting this together with the name of the module gives us ``#apps.open.1`` and
|
||||
``#apps.open.2`` as action strings.
|
||||
Since your menu module likely has a different name, your action strings will
|
||||
likely not use ``apps``, but the name of your module.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[module/apps]
|
||||
type = custom/menu
|
||||
|
||||
label-open = Apps
|
||||
|
||||
menu-0-0 = Browsers
|
||||
menu-0-0-exec = #apps.open.1
|
||||
menu-0-1 = Multimedia
|
||||
menu-0-1-exec = #apps.open.2
|
||||
|
||||
menu-1-0 = Firefox
|
||||
menu-1-0-exec = firefox
|
||||
menu-1-1 = Chromium
|
||||
menu-1-1-exec = chromium
|
||||
|
||||
menu-2-0 = Gimp
|
||||
menu-2-0-exec = gimp
|
||||
menu-2-1 = Scrot
|
||||
menu-2-1-exec = scrot
|
||||
16
doc/user/default-config.rst
Normal file
16
doc/user/default-config.rst
Normal file
@@ -0,0 +1,16 @@
|
||||
Default Configuration
|
||||
=====================
|
||||
|
||||
.. versionadded:: 3.6.0
|
||||
|
||||
Polybar's default configuration lives in ``/etc/polybar/config.ini`` and is
|
||||
loaded if no other configuration file can be found.
|
||||
|
||||
|
||||
.. image:: ../_static/default.png
|
||||
:alt: Screenshot of default polybar configuration
|
||||
|
||||
.. literalinclude:: ../config.ini
|
||||
:language: ini
|
||||
:linenos:
|
||||
:caption: :download:`Download <../config.ini>`
|
||||
8
doc/user/fonts/index.rst
Normal file
8
doc/user/fonts/index.rst
Normal file
@@ -0,0 +1,8 @@
|
||||
Fonts
|
||||
=====
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
Wiki <https://github.com/polybar/polybar/wiki/Fonts>
|
||||
Nerd Fonts <nerd-fonts>
|
||||
54
doc/user/fonts/nerd-fonts.rst
Normal file
54
doc/user/fonts/nerd-fonts.rst
Normal file
@@ -0,0 +1,54 @@
|
||||
Nerd Fonts
|
||||
==========
|
||||
|
||||
`Nerd Fonts <https://www.nerdfonts.com/>`_ (`GitHub
|
||||
<https://github.com/ryanoasis/nerd-fonts/>`_) is a project that patches
|
||||
together a textual font with font icons (or glyphs) from other projects (e.g.
|
||||
`Font Awesome <https://github.com/FortAwesome/Font-Awesome>`_, `Material Design
|
||||
Icons <https://github.com/Templarian/MaterialDesign>`_, etc.) into a single
|
||||
font.
|
||||
|
||||
In polybar, just using nerd fonts can lead to some issues:
|
||||
|
||||
* Cut-off Characters
|
||||
* Overlapping
|
||||
* No Spacing
|
||||
|
||||
These look something like this:
|
||||
|
||||
.. image:: /_static/nerd-fonts/bad.png
|
||||
:alt: Showcase of the three issues listed above.
|
||||
|
||||
This behavior is intrinsic to Nerd Fonts and is described in more detail `here
|
||||
<https://github.com/ryanoasis/nerd-fonts/issues/442#issuecomment-1263358904>`_.
|
||||
Also see :issue:`991` for more information.
|
||||
|
||||
**To resolve these issues, we recommend using Nerd Fonts like this:**
|
||||
|
||||
The monospaced variants of the different Nerd Fonts (all characters have the
|
||||
same width) don't have this issue.
|
||||
However, then you often have the problem that the icons are too small and that
|
||||
their size cannot be set independently of the text.
|
||||
|
||||
Due to that, we recommend using ``Symbols Nerd Font Mono`` (available for
|
||||
`download <https://github.com/ryanoasis/nerd-fonts/releases/>`_ as
|
||||
``NerdFontsSymbolsOnly.zip``).
|
||||
This font only contains the nerd font icons and no text.
|
||||
For the text, simply use any non-Nerd Font:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
font-0 = "Liberation Mono:size=20"
|
||||
font-1 = "Symbols Nerd Font Mono:size=26"
|
||||
|
||||
Now the icon sizes can be adjusted separately to get the best experience.
|
||||
This solves all three problems shown above:
|
||||
|
||||
.. image:: /_static/nerd-fonts/good.png
|
||||
:alt: The same config as in the previous screenshot but using ``Symbols Nerd
|
||||
Font Mono`` for the font icons
|
||||
|
||||
.. note::
|
||||
|
||||
In the overlap example, there is no space between the icon and text, that's
|
||||
why they're so close together.
|
||||
120
doc/user/ipc.rst
Normal file
120
doc/user/ipc.rst
Normal file
@@ -0,0 +1,120 @@
|
||||
Inter-process-messaging
|
||||
=======================
|
||||
|
||||
Polybar supports controlling parts of the bar and its modules from the outside
|
||||
through inter-process-messaging (IPC).
|
||||
|
||||
IPC is disabled by default and can be enabled by setting ``enable-ipc = true``
|
||||
in the bar section.
|
||||
|
||||
By default polybar ships with the ``polybar-msg`` tool that is needed to send
|
||||
messages to polybar.
|
||||
|
||||
.. note:: Starting with version 3.6.0, the underlying IPC mechanism has been
|
||||
completely changed.
|
||||
|
||||
Writing directly to the named pipe to send IPC messages has been
|
||||
deprecated, ``polybar-msg`` should be used exclusively
|
||||
Everything you could do by directly writing to the named pipe, you
|
||||
can also do using ``polybar-msg``.
|
||||
In addition, hook messages are also deprecated; they are replaced by
|
||||
actions on the :ref:`ipc module <actions-ipc>`.
|
||||
|
||||
Unless noted otherwise, everything in this guide is still valid for
|
||||
older versions.
|
||||
|
||||
Sending Messages
|
||||
----------------
|
||||
|
||||
``polybar-msg`` can be called on the commandline like this:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
polybar-msg [-p <pid>] <type> <payload>
|
||||
|
||||
If the ``-p`` argument is specified, the message is only sent to the running
|
||||
polybar instance with the given process ID.
|
||||
Otherwise, the message is sent to all running polybar processes that have IPC
|
||||
enabled.
|
||||
|
||||
.. note:: IPC messages are only sent to polybar instances running under the
|
||||
same user as ``polybar-msg`` is running as.
|
||||
|
||||
Concretely, ``polybar`` and ``polybar-msg`` use the
|
||||
``$XDG_RUNTIME_DIR`` environment variable in accordance with the `XDG
|
||||
Base Directory Specification`_ to determine where to find the socket
|
||||
to communicate.
|
||||
|
||||
If ``polybar`` and ``polybar-msg`` don't have the same value for
|
||||
``$XDG_RUNTIME_DIR``, they will likely not be able to communicate.
|
||||
The variable may not be set if you use ``su`` or ``sudo`` to execute
|
||||
``polybar-msg`` as a different user, often a full user session is
|
||||
required.
|
||||
|
||||
.. _XDG Base Directory Specification: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||
|
||||
The ``<type>`` argument is either :ref:`action <ipc-actions>` or
|
||||
:ref:`cmd <ipc-commands>`.
|
||||
The allowed values for ``<payload>`` depend on the type.
|
||||
|
||||
Message Types
|
||||
-------------
|
||||
|
||||
.. _ipc-commands:
|
||||
|
||||
Commands
|
||||
^^^^^^^^
|
||||
|
||||
Using ``cmd`` for ``<type>``, you can control certain aspects of the bar.
|
||||
|
||||
Available values for ``<payload>`` are:
|
||||
|
||||
* ``quit``: Terminates the bar
|
||||
* ``restart``: Restarts the bar in-place
|
||||
* ``hide``: Hides the bar
|
||||
* ``show``: Makes the bar visible again, if it was hidden
|
||||
* ``toggle``: Toggles between the hidden and visible state.
|
||||
|
||||
.. _ipc-actions:
|
||||
|
||||
Module Actions
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
For the ``<type>`` ``action``, ``polybar-msg`` can execute
|
||||
:doc:`module actions <actions>` in the bar.
|
||||
|
||||
An action consists of the name of the target module, the name of the action and an optional data string:
|
||||
|
||||
::
|
||||
|
||||
#<modulename>.<actionname>[.<data>]
|
||||
|
||||
More information about action strings and available actions can be found in
|
||||
:doc:`actions`
|
||||
|
||||
For example, if you have a date module named ``date``, you can toggle between
|
||||
the regular and alternative label with:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
polybar-msg action "#date.toggle"
|
||||
|
||||
As an example for an action with data, say you have a menu module named
|
||||
``powermenu``, you can open the menu level 0 using:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
polybar-msg action "#powermenu.open.0"
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
For convenience, ``polybar-msg`` also allows you to pass the module name,
|
||||
action name, and data as separate arguments:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
polybar-msg action date toggle
|
||||
polybar-msg action powermenu open 0
|
||||
|
||||
.. versionadded:: 3.6.0
|
||||
13
doc/user/modules/defs.rst
Normal file
13
doc/user/modules/defs.rst
Normal file
@@ -0,0 +1,13 @@
|
||||
.. highlight:: ini
|
||||
|
||||
..
|
||||
Substitutions for quickly referencing different config value types
|
||||
|
||||
.. |type-format| replace:: `format <type-format_>`_
|
||||
.. |type-extent| replace:: `extent <type-extent_>`_
|
||||
.. |type-pwo| replace:: `percentage with offset <type-pwo_>`_
|
||||
.. |type-color| replace:: color
|
||||
|
||||
.. _type-format: https://github.com/polybar/polybar/wiki/Formatting#formats
|
||||
.. _type-extent: https://github.com/polybar/polybar/wiki/Formatting#extent
|
||||
.. _type-pwo: https://github.com/polybar/polybar/wiki/Formatting#percentage-with-offset
|
||||
31
doc/user/modules/index.rst
Normal file
31
doc/user/modules/index.rst
Normal file
@@ -0,0 +1,31 @@
|
||||
Modules
|
||||
=======
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
System Tray <tray>
|
||||
|
||||
Alsa <https://github.com/polybar/polybar/wiki/Module:-alsa>
|
||||
Backlight <https://github.com/polybar/polybar/wiki/Module:-backlight>
|
||||
Battery <https://github.com/polybar/polybar/wiki/Module:-battery>
|
||||
bspwm <https://github.com/polybar/polybar/wiki/Module:-bspwm>
|
||||
CPU <https://github.com/polybar/polybar/wiki/Module:-cpu>
|
||||
Date and Time <https://github.com/polybar/polybar/wiki/Module:-date>
|
||||
Filesystem <https://github.com/polybar/polybar/wiki/Module:-filesystem>
|
||||
GitHub <https://github.com/polybar/polybar/wiki/Module:-github>
|
||||
i3 <https://github.com/polybar/polybar/wiki/Module:-i3>
|
||||
Inter-process-messaging (IPC) <https://github.com/polybar/polybar/wiki/Module:-ipc>
|
||||
Memory <https://github.com/polybar/polybar/wiki/Module:-memory>
|
||||
Menu <https://github.com/polybar/polybar/wiki/Module:-menu>
|
||||
MPD <https://github.com/polybar/polybar/wiki/Module:-mpd>
|
||||
Network <https://github.com/polybar/polybar/wiki/Module:-network>
|
||||
PulseAudio <https://github.com/polybar/polybar/wiki/Module:-pulseaudio>
|
||||
Script <https://github.com/polybar/polybar/wiki/Module:-script>
|
||||
Temperature <https://github.com/polybar/polybar/wiki/Module:-temperature>
|
||||
Text <https://github.com/polybar/polybar/wiki/Module:-text>
|
||||
XBacklight <https://github.com/polybar/polybar/wiki/Module:-xbacklight>
|
||||
XKeyboard <https://github.com/polybar/polybar/wiki/Module:-xkeyboard>
|
||||
XWindow <https://github.com/polybar/polybar/wiki/Module:-xwindow>
|
||||
XWorkspaces <https://github.com/polybar/polybar/wiki/Module:-xworkspaces>
|
||||
User contributed modules <https://github.com/polybar/polybar/wiki/User-contributed-modules>
|
||||
118
doc/user/modules/tray.rst
Normal file
118
doc/user/modules/tray.rst
Normal file
@@ -0,0 +1,118 @@
|
||||
.. include:: defs.rst
|
||||
|
||||
Tray Module
|
||||
===========
|
||||
.. poly-setting:: type = internal/tray
|
||||
|
||||
.. versionadded:: 3.7.0
|
||||
|
||||
The tray module displays system tray application icons on the bar.
|
||||
|
||||
This module is a bit different from the other modules.
|
||||
The tray icons (also called clients) are individual windows managed by their
|
||||
respective application (e.g. the Dropbox tray icon is created and managed by
|
||||
the Dropbox application).
|
||||
Polybar is only responsible for embedding the windows in the bar and
|
||||
positioning them correctly.
|
||||
|
||||
.. attention::
|
||||
|
||||
Only a single instance of this module can be active at the same time (across
|
||||
all polybar instances in the same graphical session).
|
||||
|
||||
The way the `system tray protocol <systray-spec_>`_ works, at most one tray
|
||||
can exist at any time.
|
||||
Polybar will produce a warning if additional tray instances are created.
|
||||
This also applies when another tray application (e.g. ``stalonetray``) is
|
||||
active.
|
||||
|
||||
For transparent background colors, the tray will use pseudo-transparency, true
|
||||
transparency is not possible for the tray icons.
|
||||
|
||||
Formats
|
||||
-------
|
||||
|
||||
The module only has a single format:
|
||||
|
||||
.. poly-setting:: format
|
||||
|
||||
:type: |type-format|
|
||||
:tags: ``<tray>``: Shows tray icons
|
||||
:default: ``<tray>``
|
||||
|
||||
Settings
|
||||
--------
|
||||
|
||||
.. poly-setting:: tray-spacing
|
||||
|
||||
Space added between tray icons
|
||||
|
||||
:type: |type-extent|, non-negative
|
||||
:default: ``0px``
|
||||
|
||||
.. poly-setting:: tray-padding
|
||||
|
||||
Space added before and after each tray icon
|
||||
|
||||
:type: |type-extent|, non-negative
|
||||
:default: ``0px``
|
||||
|
||||
.. poly-setting:: tray-size
|
||||
|
||||
Size of individual tray icons
|
||||
|
||||
:type: |type-pwo|, relative to bar height, non-negative
|
||||
:default: 66%
|
||||
|
||||
.. poly-setting:: tray-background
|
||||
|
||||
Background color of tray icons
|
||||
|
||||
.. note::
|
||||
This only affects the color of the individual icons and not the space in
|
||||
between, changing this setting to anything else than the bar background
|
||||
will likely not look good unless the background color is also changed for
|
||||
the rest of the tray module (e.g. with ``format-background``).
|
||||
|
||||
:type: |type-color|
|
||||
:default: ``${root.background}``
|
||||
|
||||
.. poly-setting:: tray-foreground
|
||||
|
||||
Tray icon color
|
||||
|
||||
This serves as a hint to the tray icon application for which color to use for
|
||||
the icon.
|
||||
|
||||
This is not guaranteed to have any effect (likely only in GTK3) because it
|
||||
targets a non-standard part of the `system tray protocol <systray-spec_>`_ by
|
||||
setting the ``_NET_SYSTEM_TRAY_COLORS`` atom on the tray window.
|
||||
|
||||
:type: |type-color|
|
||||
:default: ``${tray-foreground}``
|
||||
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
::
|
||||
|
||||
[module/tray]
|
||||
type = internal/tray
|
||||
|
||||
format-margin = 8px
|
||||
tray-spacing = 8px
|
||||
|
||||
Migrating From Legacy Tray Implementation
|
||||
-----------------------------------------
|
||||
|
||||
.. include:: /migration/3.7/tray.rst
|
||||
|
||||
References
|
||||
----------
|
||||
|
||||
* `System Tray Protocol Specification <systray-spec_>`_
|
||||
* `XEmbed Protocol Specification <xembed_>`_
|
||||
|
||||
.. _systray-spec: https://specifications.freedesktop.org/systemtray-spec/systemtray-spec-latest.html
|
||||
.. _xembed: https://specifications.freedesktop.org/xembed-spec/xembed-spec-latest.html
|
||||
100
examples/config
100
examples/config
@@ -1,100 +0,0 @@
|
||||
;=====================================================
|
||||
;
|
||||
; To learn more about how to configure Lemonbuddy
|
||||
; go to https://github.com/jaagr/lemonbuddy
|
||||
;
|
||||
; The README contains alot of information
|
||||
;
|
||||
;=====================================================
|
||||
|
||||
[settings]
|
||||
; Limit the amount of events sent to lemonbar within a set timeframe:
|
||||
; - "Allow <throttle_limit> updates within <throttle_ms> of time"
|
||||
; Default values:
|
||||
;throttle_limit = 5
|
||||
;throttle_ms = 50
|
||||
|
||||
[bar/example]
|
||||
;monitor = eDP1
|
||||
bottom = true
|
||||
dock = false
|
||||
|
||||
width = 100%
|
||||
height = 25
|
||||
|
||||
;offset_x = 0
|
||||
;offset_y = 0
|
||||
|
||||
background = #00ffffff
|
||||
foreground = #fff
|
||||
;linecolor = #ff0000
|
||||
|
||||
spacing = 1
|
||||
lineheight = 1
|
||||
|
||||
;separator = |
|
||||
|
||||
;locale = en_US.UTF-8
|
||||
|
||||
padding_left = 1
|
||||
padding_right = 1
|
||||
module_margin_left = 0
|
||||
module_margin_right = 0
|
||||
|
||||
font-0 = sans:size=8;0
|
||||
font-1 = font awesome:size=10:weight=heavy;0
|
||||
|
||||
modules-left = label
|
||||
modules-right = volume cpu ram clock
|
||||
|
||||
[module/label]
|
||||
type = custom/text
|
||||
content = Lemonbuddy example
|
||||
content-background = #af2031
|
||||
content-underline = #cf4253
|
||||
content-overline = #cf4253
|
||||
content-padding = 2
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
label = CPU: %percentage%
|
||||
format-background = #c42
|
||||
format-underline = #f75
|
||||
format-overline = #f75
|
||||
format-padding = 2
|
||||
|
||||
[module/ram]
|
||||
type = internal/memory
|
||||
label = RAM: %percentage_used%
|
||||
format-background = #42c
|
||||
format-underline = #75f
|
||||
format-overline = #75f
|
||||
format-padding = 2
|
||||
|
||||
[module/clock]
|
||||
type = internal/date
|
||||
date = %Y-%m-%d %H:%M
|
||||
format-background = #493
|
||||
format-underline = #7a6
|
||||
format-overline = #7a6
|
||||
format-padding = 2
|
||||
|
||||
[module/volume]
|
||||
type = internal/volume
|
||||
;speaker_mixer = Speaker
|
||||
;headphone_mixer = Headphone
|
||||
;headphone_control_numid = 9
|
||||
|
||||
format-volume-background = #933484
|
||||
format-volume-underline = #9d6294
|
||||
format-volume-overline = #9d6294
|
||||
format-volume-padding = 2
|
||||
format-muted-background = #933484
|
||||
format-muted-underline = #9d6294
|
||||
format-muted-overline = #9d6294
|
||||
format-muted-padding = 2
|
||||
|
||||
label-volume = Volume: %percentage%
|
||||
label-muted = Sound is muted
|
||||
|
||||
; vim:ft=dosini
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user