1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
|
/*
* This file contains patch control flags.
*
* In principle you should be able to mix and match any patches
* you may want. In cases where patches are logically incompatible
* one patch may take precedence over the other as noted in the
* relevant descriptions.
*
* Although layouts typically come as patches they are differentiated
* here for grouping purposes.
*/
/**
* Bar modules
*/
/* Enhanced taskbar that shows the titles of all visible windows in the status
* bar and allows focus / hiding / unhiding of windows by clicking on the status
* bar. Awesomebar takes precedence over fancybar.
* https://dwm.suckless.org/patches/awesomebar/
*/
#define BAR_AWESOMEBAR_PATCH 0
/* This patch depends on statuscmd patch and adds integration with a (patched)
* dwmblocks instance to give a clickable status bar. One must not necessarily
* have to use dwmblocks for this feature, any status updater that has support
* for real-time signals (SIGRTMIN) can be used.
*
* dwmblocks: https://github.com/torrinfail/dwmblocks
* https://dwm.suckless.org/patches/statuscmd/
*/
#define BAR_DWMBLOCKS_PATCH 0
/* Originally the dwmblocks + statuscmd patch used a user defined signal
* (SIGUSR1) for communicating with dwmblocks to indicate update signal and what
* button was pressed. The signalling was later changed to SIGRTMIN instead.
*
* Ultimately this makes dwmblocks instances that were patched with the old
* patch are incompatible with the new dwm patch and vice versa.
*
* This is a compatibility patch that makes dwm use SIGUSR1 instead of SIGRTMIN
* so if button clicks are not working then you may want to try enabling this.
*
* If dwmblocks happen to die like this when clicking on a status
*
* [1] 54355 user-defined signal 1 dwmblocks
*
* then it suggests that dwmblocks does not support user defined signals and
* this patch should be left disabled.
*
* Patch: https://gist.github.com/danbyl/54f7c1d57fc6507242a95b71c3d8fdea
* https://dwm.suckless.org/patches/statuscmd/
*/
#define BAR_DWMBLOCKS_SIGUSR1_PATCH 0
/* This patch shows the titles of all visible windows in the status bar
* (as opposed to showing only the selected one).
* Awesomebar takes precedence over fancybar. Fancybar takes precedence over
* the centeredwindowname patch.
* https://dwm.suckless.org/patches/fancybar/
*/
#define BAR_FANCYBAR_PATCH 0
/* Being an evolution of the bartabgroups patch the flexwintitle patch
* specifically taps into the many layout options that flextile-deluxe offers to
* produce a window title section in the bar that is representative of what is
* shown on screen.
*/
#define BAR_FLEXWINTITLE_PATCH 0
/* Adds buttons to the bar that can be used to launch applications.
* https://dwm.suckless.org/patches/launcher/
*/
#define BAR_LAUNCHER_PATCH 0
/* This patch adds a context menu for layout switching.
* - xmenu needs to be installed.
* - Edit layoutmenu.sh with the installed layouts and with correct indexes.
* - Place layoutmenu.sh in PATH.
* - The text of the menu items is for display only. Name them however you
* want. https://dwm.suckless.org/patches/layoutmenu/
*/
#define BAR_LAYOUTMENU_PATCH 0
/* Show layout symbol in bar */
#define BAR_LTSYMBOL_PATCH 1
/* Adds a colour schme for the layout symbol */
#define BAR_LTSYMBOL_SCHEME_PATCH 0
/* Adds powerline arrows for the status.
* This uses statuscolors logic for choosing colors for the powerline. As these
* markers are also control characters there is no explicit statuscmd support
* for this patch.
*
* Powerline separators are defined as:
* |\xXX (creates a hard edge)
* <\xXX (creates a less than arrow)
* /\xXX (creates a diagonal line)
*
* Examples:
* xsetroot -name "$(echo -e '<\x01a<\x02b<\x03c')"
* xsetroot -name "$(echo -e '/\x01d/\x02e/\x03f')"
*
* https://gitlab.com/udiboy1209-suckless/dwm/-/commit/071f5063e8ac4280666828179f92788d893eea40#4b1a539194be7467cefbda22f675a3b7c19ceca7
* https://dwm.suckless.org/patches/statuscolors/
*/
#define BAR_POWERLINE_STATUS_PATCH 0
/* Adds powerline arrows for the tags.
* https://gitlab.com/udiboy1209-suckless/dwm/-/commit/071f5063e8ac4280666828179f92788d893eea40#4b1a539194be7467cefbda22f675a3b7c19ceca7
*/
#define BAR_POWERLINE_TAGS_PATCH 0
/* Alters the tags powerline to use forward slash instead of arrows */
#define BAR_POWERLINE_TAGS_SLASH_PATCH 0
/* This patch turns the titlebar area into a mfact-respecting tabbar showing
* each client's title. https://dwm.suckless.org/patches/bartabgroups/
*/
#define BAR_TABGROUPS_PATCH 0
/* This patch adds an option to place tags in rows like in many other window
* managers. https://dwm.suckless.org/patches/taggrid/
*/
#define BAR_TAGGRID_PATCH 0
/* Hover tag icons to see a preview of the windows on that tag.
*
* The patch depends on Imlib2 for icon scaling.
* You need to uncomment the corresponding line in config.mk to use the -lImlib2
* library
*
* Arch Linux:
* sudo pacman -S imlib2
* Debian:
* sudo apt install libimlib2-dev
*
* As with the winicon patch you may want to consider adding the compiler flags
* of -O3 and -march=native to enable auto loop vectorize for better
* performance.
*
* https://dwm.suckless.org/patches/tag-previews/
*/
#define BAR_TAGPREVIEW_PATCH 0
/* Show status in bar */
#define BAR_STATUS_PATCH 1
/* This patch adds a clickable button to the left hand side of the statusbar.
* https://dwm.suckless.org/patches/statusbutton/
*/
#define BAR_STATUSBUTTON_PATCH 0
/* This patch adds the ability to execute shell commands based on the mouse
* button and position when clicking the status bar. Refer to the website for
* usage. https://dwm.suckless.org/patches/statuscmd/
*/
#define BAR_STATUSCMD_PATCH 0
/* Status2d allows colors and rectangle drawing in your dwm status bar.
* This patch is incompatible with the statuscolors patch which takes
* precedence. This patch is incompatible with the extrabar patch.
* https://dwm.suckless.org/patches/status2d/
*/
#define BAR_STATUS2D_PATCH 0
/* Supplementary patch should you want to disable alpha for the status2d section
*/
#define BAR_STATUS2D_NO_ALPHA_PATCH 0
/* Addition to the status2d patch that allows the use of terminal colors (color0
* through color15) from xrdb in the status, allowing programs like pywal to
* change statusbar colors. This adds the C and B codes to use terminal
* foreground and background colors respectively. E.g. ^B5^ would use color5 as
* the background color. https://dwm.suckless.org/patches/status2d/
*/
#define BAR_STATUS2D_XRDB_TERMCOLORS_PATCH 0
/* The systray patch adds systray for the status bar.
* https://dwm.suckless.org/patches/systray/
*/
#define BAR_SYSTRAY_PATCH 0
/* Show tag symbols in the bar. */
#define BAR_TAGS_PATCH 1
/* Show tag symbols + class of master window in the bar.
* https://dwm.suckless.org/patches/taglabels/
*/
#define BAR_TAGLABELS_PATCH 0
/* This patch underlines the selected tag, or optionally all tags.
* https://dwm.suckless.org/patches/underlinetags/
*/
#define BAR_UNDERLINETAGS_PATCH 0
/* This patch adds the window icon next to the window title in the bar.
*
* The patch depends on Imlib2 for icon scaling.
* You need to uncomment the corresponding line in config.mk to use the -lImlib2
* library
*
* Arch Linux:
* sudo pacman -S imlib2
* Debian:
* sudo apt install libimlib2-dev
*
* The author recommends adding the compiler flags of -O3 and -march=native to
* enable auto loop vectorize for better performance.
*
* https://github.com/AdamYuan/dwm-winicon
* https://dwm.suckless.org/patches/winicon
*/
#define BAR_WINICON_PATCH 0
/* Show window title in bar */
#define BAR_WINTITLE_PATCH 1
/* Shows window titles in the bar, but only for floating clients.
* This depends on code from the flexwintitle patch.
* Note that the configuration in config.def.h for this is merely an example. If
* combined with the corresponding hidden patch then these two will overlap
* unless the width of the modules are controlled.
*/
#define BAR_WINTITLE_FLOATING_PATCH 0
/* Shows window titles in the bar, but only for floating clients.
* This depends on code from the flexwintitle patch.
* Note that the configuration in config.def.h for this is merely an example. If
* combined with the corresponding floating patch then these two will overlap
* unless the width of the modules are controlled.
*/
#define BAR_WINTITLE_HIDDEN_PATCH 0
/* Title bar modules such as wintitle (default), fancybar and awesomebar
* do not by default add left and/or right padding as they take up the
* remaining space. These options allow you explicitly add padding should
* you need it.
*/
#define BAR_TITLE_RIGHT_PAD_PATCH 0
#define BAR_TITLE_LEFT_PAD_PATCH 0
/**
* Bar options
*/
/* This patch changes the rectangle indicating if a tag is used by a client into
* a bar above the tag name for better visibility. Set the tagindicatortype
* variable in config.h to INDICATOR_TOP_BAR to enable this.
* https://dwm.suckless.org/patches/activetagindicatorbar/
*/
#define BAR_ACTIVETAGINDICATORBAR_PATCH N / A
/* Alternative patch to the activetagindicatorbar patch, adds the bar below the
* tag icon rather than above. Set the tagindicatortype variable in config.h to
* INDICATOR_BOTTOM_BAR to enable this.
*/
#define BAR_ACTIVETAGINDICATORBAR_ALT1_PATCH N / A
/* The alpha patch adds transparency for the status bar.
* You need to uncomment the corresponding line in config.mk to use the
* -lXrender library when including this patch.
* https://dwm.suckless.org/patches/alpha/
*/
#define BAR_ALPHA_PATCH 1
/* This patch introduces alternative tags which can be switched on the fly for
* the sole purpose of providing visual aid.
* https://dwm.suckless.org/patches/alternativetags/
*/
#define BAR_ALTERNATIVE_TAGS_PATCH 0
/* This patches provides the ability to use alternative text for tags which
* contain at least one window.
* https://dwm.suckless.org/patches/alttagsdecoration/
*/
#define BAR_ALTTAGSDECORATION_PATCH 0
/* This patch enables dwm to manage external status bars such as lemonbar and
* polybar. dwm treats the external bar as it would its own, so all regular dwm
* commands such as togglebar affect the external bar in the same way.
*
* NB: Unless you want both anybar + dwm bar(s) then the recommendation is to
* disable all bar modules and have { -2 } in the barrules.
*
* https://dwm.suckless.org/patches/anybar/
*/
#define BAR_ANYBAR_PATCH 0
/* Anybar option to place the next bar depending on previous bar's position (top
* or bottom) */
#define BAR_ANYBAR_TOP_AND_BOTTOM_BARS_PATCH 0
/* Anybar option to let dwm manage the width of the bar */
#define BAR_ANYBAR_MANAGE_WIDTH_PATCH 0
/* This patch adds a border around the status bar(s) just like the border of
* client windows. https://codemadness.org/paste/dwm-border-bar.patch
*/
#define BAR_BORDER_PATCH 0
/* Optional addon for the border patch. This makes it so that the bar border is
* drawn using the background colour of the bar as opposed to the border colour.
* This allows for the border to have the same transparency as the background
* thus giving a more uniform look.
*/
#define BAR_BORDER_COLBG_PATCH 0
/* This patch centers the WM_NAME of the currently selected window on the status
* bar. This is compatible with the wintitle, bartabgroups, flexwintitle and
* awesomebar bar modules. https://dwm.suckless.org/patches/centeredwindowname/
*/
#define BAR_CENTEREDWINDOWNAME_PATCH 0
/* Draws a dot indicator overlayed on each tag icon for each client. The
* selected client is drawn as a larger horizontal line. Set the
* tagindicatortype variable in config.h to INDICATOR_CLIENT_DOTS to enable
* this. https://dwm.suckless.org/patches/clientindicators/
*/
#define BAR_CLIENTINDICATOR_PATCH N / A
/* Updates the position of dmenu to match that of the bar. I.e. if topbar is 0
* then dmenu will appear at the bottom and if 1 then dmenu will appear at the
* top. https://dwm.suckless.org/patches/dmenumatchtop
*/
#define BAR_DMENUMATCHTOP_PATCH 0
/* Originally this was the extrabar patch, but as the handling of extra bars is
* now built-in only the splitting of the status by a designated separator
* remains. As such this has been renamed to more accurately reflect what it
* does - creating an extra status. https://dwm.suckless.org/patches/extrabar/
*/
#define BAR_EXTRASTATUS_PATCH 0
/* Adds EWMH support for _NET_NUMBER_OF_DESKTOPS, _NET_CURRENT_DESKTOP,
* _NET_DESKTOP_NAMES and _NET_DESKTOP_VIEWPORT, which allows for compatibility
* with other bars and programs that request workspace information. For example
* polybar's xworkspaces module.
*
* This patch also includes support for adding the _IS_FLOATING property for
* floating windows allowing for compositors to treat floating windows
* differently to tiled windows.
*
* E.g. this setting makes picom only render shadows for floating windows:
*
* shadow-exclude = [ "! _IS_FLOATING@:32c = 1" ];
*
* https://github.com/bakkeby/dwm-flexipatch/issues/50 (_IS_FLOATING patch)
* https://dwm.suckless.org/patches/ewmhtags/
*/
#define BAR_EWMHTAGS_PATCH 0
/* Allows the bar height to be explicitly set rather than being derived from
* font. https://dwm.suckless.org/patches/bar_height/
*/
#define BAR_HEIGHT_PATCH 0
/* This patch prevents dwm from drawing tags with no clients (i.e. vacant) on
* the bar. https://dwm.suckless.org/patches/hide_vacant_tags/
*/
#define BAR_HIDEVACANTTAGS_PATCH 0
/* With this patch dwm's built-in status bar is only shown when HOLDKEY is
* pressed and the bar will now overlay the display.
* http://dwm.suckless.org/patches/holdbar/
*/
#define BAR_HOLDBAR_PATCH 0
/* Sometimes dwm crashes when it cannot render some glyphs in window titles
* (usually emoji). This patch is essentially a hack to ignore any errors when
* drawing text on the status bar.
* https://groups.google.com/forum/m/#!topic/wmii/7bncCahYIww
* https://docs.google.com/viewer?a=v&pid=forums&srcid=MDAwODA2MTg0MDQyMjE0OTgzMzMBMDQ3ODQzODkyMTU3NTAyMTMxNTYBX2RUMVNtOUtDQUFKATAuMQEBdjI&authuser=0
*/
#define BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH 0
/* This patch adds back in the workaround for a BadLength error in the Xft
* library when color glyphs are used. This is for systems that do not have an
* updated version of the Xft library (or generally prefer monochrome fonts).
*/
#define BAR_NO_COLOR_EMOJI_PATCH 0
/* This patch adds vertical and horizontal space between the statusbar and the
* edge of the screen. https://dwm.suckless.org/patches/barpadding/
*/
#define BAR_PADDING_PATCH 0
/* Same as barpadding patch but specifically tailored for the vanitygaps patch
* in that the outer bar padding is derived from the vanitygaps settings. In
* addition to this the bar padding is toggled in unison when vanitygaps are
* toggled. Increasing or decreasing gaps during runtime will not affect the bar
* padding.
*/
#define BAR_PADDING_VANITYGAPS_PATCH 0
/* Smart bar padding patch that automatically adjusts the padding when there is
* only one client on the monitor. Works well with vanitygaps and barpadding
* patches.
*/
#define BAR_PADDING_SMART_PATCH 0
/* This patch adds simple markup for status messages using pango markup.
* This depends on the pango library v1.44 or greater.
* You need to uncomment the corresponding lines in config.mk to use the pango
* libraries when including this patch.
*
* Note that the pango patch does not protect against the BadLength error from
* Xft when color glyphs are used, which means that dwm will crash if color
* emoji is used.
*
* If you need color emoji then you may want to install this patched library
* from the AUR: https://aur.archlinux.org/packages/libxft-bgra/
*
* A long term fix for the libXft library is pending approval of this pull
* request: https://gitlab.freedesktop.org/xorg/lib/libxft/-/merge_requests/1
*
* Also see:
* https://developer.gnome.org/pygtk/stable/pango-markup-language.html
* https://lists.suckless.org/hackers/2004/17285.html
* https://dwm.suckless.org/patches/pango/
*/
#define BAR_PANGO_PATCH 0
/* This patch allows the status text to be fixed to the bar on a specific
* monitor rather than being drawn on the focused monitor.
* The statusallmons patch takes precedence over this patch.
* https://dwm.suckless.org/patches/staticstatus/
*/
#define BAR_STATICSTATUS_PATCH 0
/* This patch draws and updates the statusbar on all monitors.
* https://dwm.suckless.org/patches/statusallmons/
*/
#define BAR_STATUSALLMONS_PATCH 0
/* This patch enables colored text in the status bar. It changes the way colors
* are defined in config.h allowing multiple color combinations for use in the
* status script. This patch is incompatible with and takes precedence over the
* status2d patch.
*
* This patch is compatible with the statuscmd patch with the caveat that the
* first 16 markers are reserved for status colors restricting block signals to
* 17 through 31.
*
* https://dwm.suckless.org/patches/statuscolors/
*/
#define BAR_STATUSCOLORS_PATCH 0
/* This patch adds configuration options for horizontal and vertical padding in
* the status bar. https://dwm.suckless.org/patches/statuspadding/
*/
#define BAR_STATUSPADDING_PATCH 0
/* This patch adds the ability for dwm to read colors from the linux virtual
* console. /sys/module/vt/parameters/default_{red,grn,blu} Essentially this way
* the colors you use in your regular tty is "mirrored" to dwm.
* https://dwm.suckless.org/patches/vtcolors/
*/
#define BAR_VTCOLORS_PATCH 0
/* This patch allows client windows to be hidden. This code was originally part
* of awesomebar, but has been separated out so that other bar modules can take
* advantage of it. Both awesomebar and bartabgroups patches depend on this
* patch and it will be auto-enabled during compile time if it is needed. Note
* that if using flexipatch-finalizer this must be explicitly enabled.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-barmodules-wintitleactions-6.2.diff
*/
#define BAR_WINTITLEACTIONS_PATCH \
BAR_AWESOMEBAR_PATCH || BAR_TABGROUPS_PATCH || BAR_FLEXWINTITLE_PATCH
/***
* Other patches
*/
/* Adds a window task switcher toggled using alt-tab.
* https://dwm.suckless.org/patches/alt-tab/
*/
#define ALT_TAB_PATCH 0
/* All floating windows are centered, like the center patch, but without a rule.
* The center patch takes precedence over this patch.
* This patch interferes with the center transient windows patches.
* https://dwm.suckless.org/patches/alwayscenter/
*/
#define ALWAYSCENTER_PATCH 0
/* Allows for floating windows to be toggled to be always on top (aot).
*
* Disclaimer: Some flickering may be expected with this patch when floating and
* aot windows overlap.
*
* https://dwm.suckless.org/patches/alwaysontop/
*/
#define ALWAYSONTOP_PATCH 0
/* This patch allows windows to be resized with its aspect ratio remaining
* constant. https://dwm.suckless.org/patches/aspectresize/
*/
#define ASPECTRESIZE_PATCH 0
/* This patch adds new clients above the selected client, instead of always
* becoming the new master. This behaviour is known from Xmonad.
* This patch takes precedence over ATTACHASIDE_PATCH.
* https://dwm.suckless.org/patches/attachabove/
*/
#define ATTACHABOVE_PATCH 0
/* This patch adds new clients on top of the stack.
* This patch takes precedence over ATTACHBELOW_PATCH.
* https://dwm.suckless.org/patches/attachaside/
*/
#define ATTACHASIDE_PATCH 1
/* This patch adds new clients below the selected client.
* This patch takes precedence over ATTACHBOTTOM_PATCH.
* https://dwm.suckless.org/patches/attachbelow/
*/
#define ATTACHBELOW_PATCH 0
/* This patch adds new clients at the bottom of the stack.
* https://dwm.suckless.org/patches/attachbottom/
*/
#define ATTACHBOTTOM_PATCH 0
/* This patch will make dwm run "~/.local/share/dwm/autostart_blocking.sh" and
* "~/.local/share/dwm/autostart.sh &" before entering the handler loop. One or
* both of these files can be ommited. Note the path inside .local/share rather
* than the original ~/.dwm folder.
* https://dwm.suckless.org/patches/autostart/
*/
#define AUTOSTART_PATCH 0
/* By default, windows that are not visible when requesting a resize/move will
* not get resized/moved. With this patch, they will.
* https://dwm.suckless.org/patches/autoresize/
*/
#define AUTORESIZE_PATCH 0
/* This patch allows for the mouse cursor to automatically hide when the user
* uses the keyboard.
*
* You need to uncomment the corresponding lines in config.mk to use additional
* libraries when including this patch.
*
* This patch depends on the following libraries:
* - libxfixes
* - libxi
*
* https://github.com/bakkeby/patches/wiki/banish
*/
#define BANISH_PATCH 0
/* This patch adds proper support for Right-To-Left languages. (such as Farsi,
* Arabic or Hebrew).
*
* You need to uncomment the corresponding lines in config.mk to use the
* -lfribidi library when including this patch.
*
* This patch depends on the following additional library:
* - fribidi
*
* https://dwm.suckless.org/patches/bidi/
*/
#define BIDI_PATCH 0
/* This patch adds a client rule option to allow the border width to be
* specified on a per client basis.
*
* Example rule:
* RULE(.class = "Gimp", .bw = 0)
*
* https://dwm.suckless.org/patches/borderrule/
*/
#define BORDER_RULE_PATCH 0
/* This patch adds an iscentered rule to automatically center clients on the
* current monitor. This patch takes precedence over centeredwindowname,
* alwayscenter and fancybar patches. https://dwm.suckless.org/patches/center/
*/
#define CENTER_PATCH 0
/* A transient window is one that is meant to be short lived and is usually
* raised by a parent window. Such windows are typically dialog boxes and the
* like. It should be noted that in dwm transient windows are not subject to
* normal client rules and they are always floating by default. This patch
* centers transient windows on the screen like the center patch does. Note that
* the 6.2 center patch piggy-backed on the updatewindowtype function to ensure
* that all dialog boxes were centered, transient or not. This function was
* removed in relation to adding wintype as a client rule filter, hence this no
* longer works out of the box. This patch restores previous behaviour with the
* center patch.
*/
#define CENTER_TRANSIENT_WINDOWS_PATCH 0
/* As above, except that the transient window is centered within the position of
* the parent window, rather than at the center of the screen. This takes
* precedence over the above patch.
*/
#define CENTER_TRANSIENT_WINDOWS_BY_PARENT_PATCH 0
/* This patch provides the ability to assign different weights to clients in
* their respective stack in tiled layout.
* https://dwm.suckless.org/patches/cfacts/
*/
#define CFACTS_PATCH 0
/* This patch allows color attributes to be set through the command line.
* https://dwm.suckless.org/patches/cmdcustomize/
*/
#define CMDCUSTOMIZE_PATCH 0
/* This patch tweaks the tagging interface so that you can select multiple tags
* for tag or view by pressing all the right keys as a combo. For example to
* view tags 1 and 3, hold MOD and then press and hold 1 and 3 together.
* https://dwm.suckless.org/patches/combo/
*/
#define COMBO_PATCH 0
/* Allow dwm to execute commands from autostart array in your config.h file.
* When dwm exits then all processes from autostart array will be killed.
* https://dwm.suckless.org/patches/cool_autostart/
*/
#define COOL_AUTOSTART_PATCH 0
/* The cyclelayouts patch lets you cycle through all your layouts.
* https://dwm.suckless.org/patches/cyclelayouts/
*/
#define CYCLELAYOUTS_PATCH 0
/* Make dwm respect _MOTIF_WM_HINTS property, and not draw borders around
* windows requesting for it. Some applications use this property to notify
* window managers to not draw window decorations. Not respecting this property
* leads to issues with applications that draw their own borders, like chromium
* (with "Use system title bar and borders" turned off) or vlc in fullscreen
* mode. https://dwm.suckless.org/patches/decoration_hints/
*/
#define DECORATION_HINTS_PATCH 0
/* This feature distributes all clients on the current monitor evenly across all
* tags. It is a variant of the reorganizetags patch.
* https://dwm.suckless.org/patches/reorganizetags/
*/
#define DISTRIBUTETAGS_PATCH 0
/* By default dwm will terminate on color allocation failure and the behaviour
* is intended to catch and inform the user of color configuration issues.
*
* Some patches like status2d and xresources / xrdb can change colours during
* runtime, which means that if a color can't be allocated at this time then the
* window manager will abruptly terminate.
*
* This patch will ignore color allocation failures and continue on as normal.
* The effect of this is that the existing color, that was supposed to be
* replaced, will remain as-is.
*/
#define DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH 0
/* Similarly to the dragmfact patch this allows you to click and drag clients to
* change the cfact to adjust the client's size in the stack. This patch depends
* on the cfacts patch.
*/
#define DRAGCFACT_PATCH 0
/* This patch lets you resize the split in the tile layout (i.e. modify mfact)
* by holding the modkey and dragging the mouse. This patch can be a bit wonky
* with other layouts, but generally works.
* https://dwm.suckless.org/patches/dragmfact/
*/
#define DRAGMFACT_PATCH 0
/* Simple dwmc client using a fork of fsignal to communicate with dwm.
* To use this either copy the patch/dwmc shell script to somewhere in your path
* or uncomment the following line in Makefile: #cp -f patch/dwmc
* ${DESTDIR}${PREFIX}/bin http://dwm.suckless.org/patches/dwmc/
*/
#define DWMC_PATCH 0
/* This patch allows no tag at all to be selected. The result is that dwm will
* start with no tag selected and when you start a client with no tag rule and
* no tag selected then it will be opened on the first tag.
* https://dwm.suckless.org/patches/emptyview/
*/
#define EMPTYVIEW_PATCH 0
/* This patch allows the user to change size and placement of floating windows
* using only the keyboard. It also allows for temporary vertical and horizontal
* extension of windows similar to other WMs fill command.
* https://dwm.suckless.org/patches/exresize/
*/
#define EXRESIZE_PATCH 0
/* Only allow clients to "fullscreen" into the space currently given to them.
* As an example, this will allow you to view a fullscreen video in your browser
* on one half of the screen, while having the other half available for other
* tasks. This patch takes precedence over the fakefullscreen client patch
* below. https://dwm.suckless.org/patches/fakefullscreen/
*/
#define FAKEFULLSCREEN_PATCH 0
/* Similarly to the fakefullscreen patch this patch only allows clients to
* "fullscreen" into the space currently given to them. The "twist" with this
* patch is that fake fullscreen can be toggled on a per client basis rather
* than applying to all clients globally. Also see the selectivefakefullscreen
* option that adds a rule option to enabled this on client startup.
*/
#define FAKEFULLSCREEN_CLIENT_PATCH 0
/* This patch adds a float rule allowing the size and position of floating
* windows to be specified It also allows the size and position of floating
* windows to be controlled similar to the exresize, moveresize, and moveplace
* patches. The size and position can be specified using absolute, relative or
* fixed co-ordinates and https://github.com/bakkeby/patches/wiki/floatpos/
*/
#define FLOATPOS_PATCH 0
/* Add-on functionality for the above: make the float positions respect outer
* (vanity)gaps. */
#define FLOATPOS_RESPECT_GAPS_PATCH 0
/* This patch provides the ability to focus the tag on the immediate left or
* right of the currently focused tag. It also allows to send the focused window
* either on the left or the right tag.
* http://dwm.suckless.org/patches/focusadjacenttag/
*/
#define FOCUSADJACENTTAG_PATCH 0
/* Allows focusing on clients based on direction (up, down, left, right) instead
* of client order. https://github.com/bakkeby/patches/wiki/focusdir/
*/
#define FOCUSDIR_PATCH 0
/* When changing tags, closing windows or moving clients out of view then focus
* will revert to the client window that remains under the mouse cursor rather
* than the most recently focused window.
* https://github.com/bakkeby/patches/wiki/focusfollowmouse
*/
#define FOCUSFOLLOWMOUSE_PATCH 0
/* A simple patch that just puts focus back to the master client.
* https://dwm.suckless.org/patches/focusmaster/
*/
#define FOCUSMASTER_PATCH 0
/* A variant of the focusmaster patch that additionally allows the focus to be
* returned to the previously focused client
* https://dwm.suckless.org/patches/focusmaster/
*/
#define FOCUSMASTER_RETURN_PATCH 0
/* Switch focus only by mouse click and not sloppy (focus follows mouse
* pointer). https://dwm.suckless.org/patches/focusonclick/
*/
#define FOCUSONCLICK_PATCH 0
/* Selects the next window having the urgent flag regardless of the tag it is
* on. The urgent flag can be artificially set with the following xdotool
* command on any window: xdotool selectwindow -- set_window --urgency 1
* https://dwm.suckless.org/patches/focusurgent/
*/
#define FOCUSURGENT_PATCH 0
/* By default, dwm responds to _NET_ACTIVE_WINDOW client messages by setting
* the urgency bit on the named window. This patch activates the window instead.
* https://dwm.suckless.org/patches/focusonnetactive/
*/
#define FOCUSONNETACTIVE_PATCH 0
/* Send "fake signals" to dwm for handling, using xsetroot. This will not
* conflict with the status bar, which also is managed using xsetroot. Also see
* the dwmc patch, which takes precedence over this patch.
* https://dwm.suckless.org/patches/fsignal/
*/
#define FSIGNAL_PATCH 0
/* Applies the monocle layout with the focused client on top and hides the bar.
* When pressed again it shows the bar and restores the layout that was active
* before going fullscreen. https://dwm.suckless.org/patches/fullscreen/
*/
#define FULLSCREEN_PATCH 0
/* Adds a rule identifying clients as a "game" such that if the client is in
* fullscreen and it loses focus (e.g. by moving to another tag) then it will
* automatically be minimized (set to IconicState and unmapped).
*
* When the client receives focus again (e.g. by going back to its tag) then it
* will automatically be unminimized (set to NormalState and mapped). This
* should address many of the black screen or window is tiny issues after having
* moved to another tag and back again.
*
* https://github.com/bakkeby/patches/wiki/steam
*/
#define GAMES_PATCH 0
/* This patch provides a keybinding to rotate all clients in the currently
* selected area (master or stack) without affecting the other area.
* https://dwm.suckless.org/patches/inplacerotate/
*/
#define INPLACEROTATE_PATCH 0
/* This patch lets you define custom insets from each edge of the screen. One
* use case would be to arrange space for an external bar.
* https://dwm.suckless.org/patches/insets/
*/
#define INSETS_PATCH 0
/* This patch (v1.5.7) implements inter-process communication through a UNIX
* socket for dwm. This allows for the window manager to be queried for
* information, e.g. listen for events such as tag or layout changes, as well as
* send commands to control the window manager via other programs.
*
* You need to uncomment the corresponding lines in config.mk to use the -lyajl
* library when including this patch. This patch depends on the following
* additional library:
* - yajl
*
* https://github.com/mihirlad55/dwm-ipc
* https://dwm.suckless.org/patches/ipc/
*/
#define IPC_PATCH 0
/* Adds rule option for clients to avoid accidental termination by killclient
* for sticky windows. https://dwm.suckless.org/patches/ispermanent/
*/
#define ISPERMANENT_PATCH 0
/* This patch adds key modes (like in vim or emacs) where chains of keyboard
* shortcuts can be performed. https://dwm.suckless.org/patches/keymodes/
*/
#define KEYMODES_PATCH 0
/* This patch adds a keybinding to kills all visible clients that are not
* selected. https://dwm.suckless.org/patches/killunsel/
*/
#define KILLUNSEL_PATCH 0
/* This changes the window manager name to LG3d instead of dwm as a workaround
* for Java applications that assume that the window manager is using window
* reparenting. Refer to the ISSUES secton of the dwm man page for more details.
*/
#define LG3D_PATCH 0
/* By default in dwm it is possible to make an application fullscreen, then use
* the focusstack keybindings to focus on other windows beneath the current
* window. It is also possible to spawn new windows (e.g. a terminal) that end
* up getting focus while the previous window remains in fullscreen. This patch
* ensures that in such scenarios the previous window loses fullscreen.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-losefullscreen-6.2.diff
*/
#define LOSEFULLSCREEN_PATCH 0
/* This patch adds helper functions for maximizing, horizontally and vertically,
* floating windows using keybindings.
* https://dwm.suckless.org/patches/maximize/
*/
#define MAXIMIZE_PATCH 0
/* Control Music Player Daemon via keybinds.
* You need to uncomment the corresponding line in config.mk to use the
* -lmpdclient library when including this patch. This patch depends on the
* following additional library:
* - libmpdclient
* https://dwm.suckless.org/patches/mpdcontrol/
*/
#define MPDCONTROL_PATCH 0
/* Adds rules per monitor, e.g. have default layouts per monitor.
* The use case for this is if the second monitor is vertical (i.e. rotated)
* then you may want to use a different default layout for this monitor than
* what is used for the main monitor. E.g. normal vertical split for main
* monitor and horizontal split for the second.
*/
#define MONITOR_RULES_PATCH 0
/* Always display the the monocle-symbol as defined in config.h if the
* monocle-layout is activated. Do not display the number of open clients in the
* current tag. https://dwm.suckless.org/patches/monoclesymbol/
*/
#define MONOCLESYMBOL_PATCH 0
/* This patch provides a keybinding to center the focused window.
* https://dwm.suckless.org/patches/movecenter/
*/
#define MOVECENTER_PATCH 0
/* Makes a window floating and 1/3rd the height and 1/3rd the width of the
* screen and is positioned in either the center or one of the 8 cardinal
* directions depending on which key is pressed.
* https://dwm.suckless.org/patches/moveplace/
*/
#define MOVEPLACE_PATCH 0
/* This patch allows you to move and resize dwm's clients using keyboard
* bindings. https://dwm.suckless.org/patches/moveresize/
*/
#define MOVERESIZE_PATCH 0
/* This patch allows you to move clients around in the stack and swap them with
* the master. https://dwm.suckless.org/patches/movestack/
*/
#define MOVESTACK_PATCH 0
/* This patch allows you to change the names of tags during runtime.
*
* This is a bespoke version implemented specifically in relation to tagicons,
* which is integrated into dwm-flexipatch. By default it uses dmenu to retrieve
* the new name, but this can be customised via config along with the maximum
* text length and the format string.
*
* Special behaviour:
* - if more than one tag is selected then the name change applies to all
* selected tags
* - if tagicons is configured to have unique tags per monitor then the
* change only applies for the current monitor
* - the name change applies to the tag set that is active for the current
* tag:
* * if used in combination with BAR_ALTTAGSDECORATION_PATCH and there are
* clients on the given tag then the name change only applies to the
* ALT_TAGS_DECORATION tag set
* * if used in combination with the BAR_ALTERNATIVE_TAGS_PATCH and
* alternative tags are shown then the name change only applies to the
* ALTERNATIVE_TAGS tag set
* * if used in combination with both then BAR_ALTTAGSDECORATION_PATCH
* takes precedence
* * otherwise the name change applies to the DEFAULT_TAGS tag set
*
* https://dwm.suckless.org/patches/nametag/
*/
#define NAMETAG_PATCH 0
/* Variant of the above which prepends the tag number to the given string.
* The toggle does nothing on its own and need to be enabled in combination with
* the above. */
#define NAMETAG_PREPEND_PATCH 0
/* Adds support for the _NET_CLIENT_LIST_STACKING atom, needed by certain
* applications like the Zoom video conferencing application.
* https://github.com/bakkeby/patches/wiki/netclientliststacking/
*/
#define NET_CLIENT_LIST_STACKING_PATCH 0
/* Removes the border when there is only one window visible.
* https://dwm.suckless.org/patches/noborder/
*/
#define NOBORDER_PATCH 0
/* Enable modifying or removing dmenu in config.def.h which resulted previously
* in a compilation error because two lines of code hardcode dmenu into dwm.
* https://dwm.suckless.org/patches/nodmenu/
*/
#define NODMENU_PATCH 0
/* This patch allows for toggleable client button bindings that have no
modifiers.
* This can, for example, allow you to move or resize using the mouse alone
without holding
* down a modifier key. This can be practical if you have extra buttons on your
mouse.
* While you can use button bindings with no modifiers without this patch in a
bare dwm,
* those buttons are then unavailable for use within the application itself so
being able to
* toggle these on and off can be necessary in certain situations (e.g. being
able to use
* back and forward buttons in a browser).
* Example bindings:
* { ClkClientWin, 0, Button8, movemouse,
{0} },
* { ClkClientWin, 0, Button9, resizemouse,
{0} },
*/
#define NO_MOD_BUTTONS_PATCH 0
/* When terminals have transparency then their borders also become transparent.
* This patch ensures that borders have no transparency. Note that this patch is
* only relevant if you are not using the alpha patch.
* https://github.com/szatanjl/dwm/commit/1529909466206016f2101457bbf37c67195714c8
* https://dwm.suckless.org/patches/alpha/dwm-fixborders-6.2.diff
*/
#define NO_TRANSPARENT_BORDERS_PATCH 0
/* Port of InstantWM's on_empty_keys functionality allowing keybindings that
* apply only when a tag is empty. An example use case is being able to launch
* applications with first hand keys like "f" to launch firefox.
*
* https://github.com/instantOS/instantWM/
* https://github.com/bakkeby/dwm-flexipatch/issues/51
*/
#define ON_EMPTY_KEYS_PATCH 0
/* Minor patch that prevents more than one rule being matched for a given
* client. */
#define ONLY_ONE_RULE_MATCH_PATCH 0
/* This patch makes it so dwm will only exit via quit() if no windows are open.
* This is to prevent you accidentally losing all your work.
* https://dwm.suckless.org/patches/onlyquitonempty/
*/
#define ONLYQUITONEMPTY_PATCH 0
/* The pertag patch adds nmaster, mfacts and layouts per tag rather than per
* monitor (default).
* https://dwm.suckless.org/patches/pertag/
*/
#define PERTAG_PATCH 0
/* Option to enable gaps on a per tag basis rather than globally.
* Depends on both pertag and vanitygaps patches being enabled.
*/
#define PERTAG_VANITYGAPS_PATCH 0
/* This patch allows configuring vanity gaps on a per-monitor basis rather than
* all monitors (default).
*/
#define PERMON_VANITYGAPS_PATCH 0
/* This controls whether or not to also store bar position on a per
* tag basis, or leave it as one bar per monitor.
*/
#define PERTAGBAR_PATCH 0
/* Similar to the focusdir patch this patch allow users to move a window in any
* direction in the tiled stack (up, down, left, right).
* https://github.com/bakkeby/patches/wiki/placedir
*/
#define PLACEDIR_PATCH 0
/* This patch lets you change the position of a client in the stack using the
* mouse. https://github.com/bakkeby/patches/wiki/placemouse
*/
#define PLACEMOUSE_PATCH 0
/* This patch provides a way to move clients up and down inside the client list.
* https://dwm.suckless.org/patches/push/
*/
#define PUSH_PATCH 0
/* This patch provides a way to move clients up and down inside the client list,
* but does not push up or down into the master area (except that it does not
* take nmaster into account). This takes precedence over the push patch above.
* https://dwm.suckless.org/patches/push/
*/
#define PUSH_NO_MASTER_PATCH 0
/* Variant of the named scratchpads patch allowing scratch keys to be added or
* removed on demand, allowing multiple scratchpad windows to be toggled into
* and out of view in unison, as well as including multi-monitor support.
*
* https://github.com/bakkeby/patches/wiki/renamedscratchpads
*/
#define RENAMED_SCRATCHPADS_PATCH 0
/* Renamed scratchpads option to auto-hide scratchpads when moving to a
* different tag. This behaviour is similar to that of the (multiple)
* scratchpads patch. */
#define RENAMED_SCRATCHPADS_AUTO_HIDE_PATCH 0
/* Shifts all clients per tag to leftmost unoccupied tags.
*
* For example, if clients A, B, C are tagged on tags 1, 5, 9 respectively, when
* this function is called, they will now be on 1, 2, and 3. The focused client
* will also remain focused.
*
* Clients on multiple tags will be treated as if they only were only on their
* leftmost tag, and will be reduced to one tag after the operation is complete.
* https://dwm.suckless.org/patches/reorganizetags/
*/
#define REORGANIZETAGS_PATCH 0
/* By default, windows only resize from the bottom right corner. With this
* patch the mouse is warped to the nearest corner and you resize from there.
* https://dwm.suckless.org/patches/resizecorners/
*/
#define RESIZECORNERS_PATCH 0
/* Practically the same as resizecorners, but the cursor does not warp to
* corners. This takes precedence over the resizecorners patch.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-resizepoint-6.2.diff
*/
#define RESIZEPOINT_PATCH 0
/* Adds a keyboard shortcut to restart dwm or alternatively by using kill -HUP
* dwmpid. Additionally dwm can quit cleanly by using kill -TERM dwmpid.
* https://dwm.suckless.org/patches/restartsig/
*/
#define RESTARTSIG_PATCH 0
/* Adds rio-like drawing to resize the selected client.
* This depends on an external tool slop being installed.
* This patch was backported from instantWM.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-riodraw-6.2.diff
*/
#define RIODRAW_PATCH 0
/* This patch let's you rotate through the stack using keyboard shortcuts.
* https://dwm.suckless.org/patches/rotatestack/
*/
#define ROTATESTACK_PATCH 0
/* This patch adds rounded corners to client windows in dwm.
* You need to uncomment the corresponding line in config.mk to use the -lXext
* library when including this patch. You will also want to set "borderpx = 0;"
* in your config.h.
* https://github.com/mitchweaver/suckless/blob/master/dwm/patches/mitch-06-rounded_corners-f04cac6d6e39cd9e3fc4fae526e3d1e8df5e34b2.patch
*/
#define ROUNDED_CORNERS_PATCH 0
/* This patch saves size and position of every floating window before it is
* forced into tiled mode. If the window is made floating again then the old
* dimensions will be restored. https://dwm.suckless.org/patches/save_floats/
*/
#define SAVEFLOATS_PATCH 0
/* The scratchpad patch allows you to spawn or restore floating terminal
* windows. It is typically useful when one need to do some short typing.
*
* Note that this patch changes TAGMASK to make room for special scratchpad
* tags, so ~0 does more than select all tags with this patch. Code that relies
* on ~0 to represent all tags should use ~SPTAGMASK instead.
*
* Upgraded to Christian Tenllado's multiple scratchpad version.
* https://lists.suckless.org/hackers/2004/17205.html
* https://dwm.suckless.org/patches/scratchpads/
*/
#define SCRATCHPADS_PATCH 0
/* Minor alteration of the above allowing clients to keep their size and
* position when shown */
#define SCRATCHPADS_KEEP_POSITION_AND_SIZE_PATCH 0
/* This alternative patch enables a scratchpad feature in dwm similar to the
* scratchpad feature in i3wm. https://github.com/GasparVardanyan/dwm-scratchpad
*/
#define SCRATCHPAD_ALT_1_PATCH 0
/* This patch persists some settings across window manager restarts. These
* include but are not limited to:
* - client's assigned tag(s) on which monitor
* - the order of clients
* - nmaster
* - selected layout
* - plus various additions depending on what other patches are used
*
* The above is not persisted across reboots, however.
*/
#define SEAMLESS_RESTART_PATCH 0
/* As opposed to the original patch this only adds a rule option allowing fake
* fullscreen to be enabled for applications when they start. This is intended
* to be used in combination with the fakefullscreenclient patch and offers no
* practical functionality without it.
* https://dwm.suckless.org/patches/selectivefakefullscreen/
*/
#define SELECTIVEFAKEFULLSCREEN_PATCH 0
/* Allows restarting dwm without the dependency of an external script.
* https://dwm.suckless.org/patches/selfrestart/
*/
#define SELFRESTART_PATCH 0
/* Floating windows being sent to another monitor will be centered.
* https://dwm.suckless.org/patches/sendmoncenter/
*/
#define SENDMON_CENTER_PATCH 0
/* This patch allow clients to keep focus when being sent to another monitor.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-sendmon_keepfocus-6.2.diff
*/
#define SENDMON_KEEPFOCUS_PATCH 0
/* This patch allows border pixels to be changed during runtime.
* https://dwm.suckless.org/patches/setborderpx/
*/
#define SETBORDERPX_PATCH 0
/* Combines shifttag and shiftview. Basically moves the window to the next/prev
* tag and follows it. Also see the focusadjacenttag patch.
* https://dwm.suckless.org/patches/shift-tools/
*/
#define SHIFTBOTH_PATCH 0
/* Swaps all the clients on the current tag with all the client on the next/prev
* tag. Depends on the swaptags patch.
* https://dwm.suckless.org/patches/shift-tools/
*/
#define SHIFTSWAPTAGS_PATCH 0
/* Moves the current selected client to the adjacent tag.
* Also see the focusadjacenttag patch.
* https://dwm.suckless.org/patches/shift-tools/
*/
#define SHIFTTAG_PATCH 0
/* Moves the current selected client to the adjacent tag that has at least one
* client, if none then it acts as shifttag.
* https://dwm.suckless.org/patches/shift-tools/
*/
#define SHIFTTAGCLIENTS_PATCH 0
/* This patch adds keybindings for left and right circular shift through tags.
* https://github.com/chau-bao-long/dotfiles/blob/master/suckless/dwm/shiftview.diff
*/
#define SHIFTVIEW_PATCH 1
/* This variant of the shiftview patch adds left and right circular shift
* through tags, but skips tags where there are no clients.
*/
#define SHIFTVIEW_CLIENTS_PATCH 0
/* This patch makes dwm obey even "soft" sizehints for new clients. Any window
* that requests a specific initial size will be floated and set to that size.
* Unlike with "fixed size" windows, you are able to resize and/or unfloat these
* windows freely - only the initial state is affected.
* This version of the patch is honestly of limited utility since there are many
* clients that will abuse it.
* https://dwm.suckless.org/patches/sizehints/
*/
#define SIZEHINTS_PATCH 0
/* This patch makes dwm obey even "soft" sizehints for new clients. This ruled
* version is essentially the same patch except it obeys the "isfloating" rule
* if it is available in config.h for the given client.
* https://dwm.suckless.org/patches/sizehints/
*/
#define SIZEHINTS_RULED_PATCH 0
/* This patch makes dwm obey even "soft" sizehints for new clients. The
* isfreesize version is similar to the sizehints ruled patch except it allows
* you to specify via client rules which clients this should apply to. Soft
* sizehints applies by default to clients that are not ruled, and will be
* disabled by default for clients that are.
*
* Example client rule enabling soft sizehints:
* - RULE(.wintype = WTYPE "DIALOG", .isfloating = 1, .isfreesize = 1)
*
* https://dwm.suckless.org/patches/sizehints/
*/
#define SIZEHINTS_ISFREESIZE_PATCH 0
/* In a multi-head setup monitor 0 is by default the primary screen, with the
* left and right screen being monitor 1 and 2 respectively. This patch sorts
* screens left to right (or top to bottom in a vertical layout) which aims to
* address some inconsistencies when it comes to focusmon, tagmon and similar
* functionality.
* https://www.mail-archive.com/hackers@suckless.org/msg09400.html
*/
#define SORTSCREENS_PATCH 0
/* Spawns programs from currently focused client's working directory.
* https://dwm.suckless.org/patches/spawn_cwd/
*/
#define SPAWNCMD_PATCH 0
/* This patch provides comprehensive utilities for managing the client stack,
* providing keyboard shortcuts for focusing or placing a client at specific
* positions in the stack. Note that the default keybindings for this patch have
* been changed in dwm-flexipatch due to the many conflicts with other patches.
* As it provides similar functionality to the swapfocus patch it also uses the
* MOD+s shortcut to focus the previously selected client, thus note a conflict
* between these two patches. https://dwm.suckless.org/patches/stacker/
*/
#define STACKER_PATCH 0
/* Steam, and steam windows (games), trigger a ConfigureNotify request every
* time the window gets focus. More so, the configure event passed along from
* Steam tends to have the wrong x and y co-ordinates which can make the window,
* if floating, jump around the screen.
*
* This patch works around this age-old issue by ignoring the x and y
* co-ordinates for ConfigureNotify requests relating to Steam windows.
*
* https://github.com/bakkeby/patches/wiki/steam
*/
#define STEAM_PATCH 0
/* Adds toggleable keyboard shortcut to make a client 'sticky', i.e. visible on
* all tags. https://dwm.suckless.org/patches/sticky/
*/
#define STICKY_PATCH 0
/* This patch adds "window swallowing" to dwm as known from Plan 9's windowing
* system rio. Clients marked with isterminal in config.h swallow a window
* opened by any child process, e.g. running xclock in a terminal. Closing the
* xclock window restores the terminal window in the current position.
*
* This patch depends on the following additional libraries:
* - libxcb
* - Xlib-libxcb
* - xcb-res
*
* You need to uncomment the corresponding line in config.mk to use the above
* libraries when including this patch.
*
* https://dwm.suckless.org/patches/swallow/
*/
#define SWALLOW_PATCH 0
/* This patch depends on the pertag patch and makes it possible to switch focus
* with a single shortcut (MOD+s) instead of having to think if you should use
* mod-j or mod-k for reaching the previously used window.
* https://dwm.suckless.org/patches/swapfocus/
*/
#define SWAPFOCUS_PATCH 0
/* This patch allows swapping the contents of the currently selected tag with
* another tag using keyboard shortcuts.
* https://dwm.suckless.org/patches/swaptags/
*/
#define SWAPTAGS_PATCH 0
/* Switch focus between the master and stack columns using a single keybinding.
* https://dwm.suckless.org/patches/switchcol/
*/
#define SWITCHCOL_PATCH 0
/* By default dwm allow you to set application specific rules so that you can
* have your browser, for example, start up on tag 9 optionally on a given
* monitor when you open your browser it is then automatically moved to the
* configured tag, but you have to manually enable the tag to see the newly
* opened application. This patch adds an extra configuration option for
* individual rules where: 0 is default behaviour 1 automatically moves you to
* the tag of the newly opened application and 2 enables the tag of the newly
* opened application in addition to your existing enabled tags 3 as 1, but
* closing that window reverts the view back to what it was previously (*) 4 as
* 2, but closing that window reverts the view back to what it was previously
* (*)
*
* (*) except if the client has been moved between tags or to another monitor
*
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-switchtag-6.2.diff
* Also see https://dwm.suckless.org/patches/switchtotag
*/
#define SWITCHTAG_PATCH 0
/* This patch transforms the monocle layout into a "tabbed" layout if more than
* one window is present on the monocle view. This patch has been added for
* demonstration purposes only and has limited compatibility with other patches.
* It will conflict space-wise with a second bar. Note that fancybar,
* awesomebar, bartabgroups and similar patches make the tab patch redundant.
* https://dwm.suckless.org/patches/tab/
*/
#define TAB_PATCH 0
/* Adds keyboard shortcuts to move all (or only floating) windows from one tag
* to another. https://dwm.suckless.org/patches/tagall/
*/
#define TAGALL_PATCH 0
/* This patch allows you to move all visible windows on a monitor to an adjacent
* monitor.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-tagallmon-6.2.diff
*/
#define TAGALLMON_PATCH 0
/* This patch makes new clients attach into the stack area when you toggle a new
* tag into view. This means your master area will remain unchanged when
* toggling views. The allmaster patch will cause all clients in the master area
* to be left alone. This patch takes precedence over the onemaster tagintostack
* patch. https://dwm.suckless.org/patches/tagintostack/
*/
#define TAGINTOSTACK_ALLMASTER_PATCH 0
/* This patch makes new clients attach into the stack area when you toggle a new
* tag into view. This means your master area will remain unchanged when
* toggling views. The onemaster patch will cause the first client in the master
* area to be left alone. https://dwm.suckless.org/patches/tagintostack/
*/
#define TAGINTOSTACK_ONEMASTER_PATCH 0
/* If you try to send a fullscreen window to an adjacent monitor using tagmon
* then the window is moved behind the scenes, but it remains in fullscreen on
* the original monitor until you exit fullscreen view (at which point it will
* appear on the adjacent monitor). This patch allows a fullscreen window to be
* moved to an adjacent monitor while remaining in fullscreen.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-tagmonfixfs-6.2.diff
*/
#define TAGMONFIXFS_PATCH 0
/* Add functions and keybindings to tag a window to a desired tag on the next
* (right) or previous (left) monitor from the currently selected monitor.
* https://dwm.suckless.org/patches/tagothermonitor/
*/
#define TAGOTHERMONITOR_PATCH 0
/* This patch allows you to swap all visible windows on one monitor with those
* of an adjacent monitor.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-tagswapmon-6.2.diff
*/
#define TAGSWAPMON_PATCH 0
/* Sync tag actions across all monitors.
* This is comparable to a sort of pseudo-desktop environment.
* Also refer to the desktop patch:
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-desktop-6.3.diff
*/
#define TAGSYNC_PATCH 0
/* This patch can be useful to the touchpad users because it allows to
* resize windows using Mod + two-finger scroll. It is useful when
* two-finger scrolling is configured in libinput.
* https://dwm.suckless.org/patches/tapresize/
*/
#define TAPRESIZE_PATCH 0
/* This patch allows you to toggle fullscreen on and off using a single shortcut
* key.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-togglefullscreen-6.2.diff
*/
#define TOGGLEFULLSCREEN_PATCH 0
/* This patch allows for the bar position (top or bottom) to be toggled during
* runtime. https://dwm.suckless.org/patches/toggletopbar/
*/
#define TOGGLETOPBAR_PATCH 0
/* Minor patch that lets you use the same keyboard shortcut to toggle to the
* previous layout if the designated layout is already active.
*
* This allows you to use e.g. MOD+m to change to the monocle layout and use the
* same keybinding to toggle back to what it was previously. The default
* behaviour in dwm forces you to use either MOD+space or MOD+t to change back
* to tiled layout.
*
* https://github.com/bakkeby/patches/wiki/togglelayout
*/
#define TOGGLELAYOUT_PATCH 0
/* Minor patch that lets you use the same keyboard shortcut to toggle to the
* previous tag if the designated tag is already active.
*
* This allows you to use e.g. MOD+4 to quickly view the 4th tag and use the
* same keybinding to toggle back to what it was previously. The default
* behaviour in dwm forces you to use either MOD+tab or MOD+1 to change back to
* the previous tag.
*
* Idea ref.
* https://www.reddit.com/r/suckless/comments/ik27vd/key_toggle_between_next_and_previous_tag_dwm/
* https://github.com/bakkeby/patches/wiki/toggletag
*/
#define TOGGLETAG_PATCH 0
/* Lets you transfer the currently focused client between the master and stack
* area while increasing or decreasing the master area (nmaster) accordingly.
* https://dwm.suckless.org/patches/transfer/
*/
#define TRANSFER_PATCH 0
/* Lets you transfer all clients between the master and stack area
* while increasing or decreasing the master area (nmaster) accordingly.
* https://dwm.suckless.org/patches/transfer/
*/
#define TRANSFER_ALL_PATCH 0
/* This patch resets isfloating on any visible windows that have it set.
* Optionally also applies a layout.
* https://dwm.suckless.org/patches/unfloatvisible/
*/
#define UNFLOATVISIBLE_PATCH 0
/* This patch adds a client rule that allows for windows that do not specify the
* override-redirect to not be managed by the window manager. This can be useful
* for external bars, widgets, launchers, docks, desktop icons and more.
* https://github.com/bakkeby/patches/wiki/unmanaged
*/
#define UNMANAGED_PATCH 0
/* This patch adds configurable gaps between windows differentiating between
* outer, inner, horizontal and vertical gaps.
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-vanitygaps-6.2.diff
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-cfacts-vanitygaps-6.2.diff
*/
#define VANITYGAPS_PATCH 1
/* This patch adds outer gaps for the monocle layout.
* Most gaps patches tries to avoid gaps on the monocle layout, as it is often
* used as a fullscreen mode, hence this is enabled separately from the main
* vanitygaps patch.
*/
#define VANITYGAPS_MONOCLE_PATCH 0
/* By default MOD+Tab will take the user back to the previous tag only. If the
* user keeps using MOD+Tab then the view will switch back and forth between the
* current and previous tag. This patch allows dwm to keep a longer history of
* previous tag changes such that MOD+Tab can be pressed multiple times to go
* further back to earlier tag selections.
*
* The number of history elements is defined by the NUMVIEWHIST macro in dwm.c
* and defaults to the number of tags in the system.
*/
#define VIEW_HISTORY_PATCH 0
/* Follow a window to the tag it is being moved to.
* https://dwm.suckless.org/patches/viewontag/
*/
#define VIEWONTAG_PATCH 0
/* This patch warps the mouse cursor to the center of the currently focused
* window or screen when the mouse cursor is (a) on a different screen or (b) on
* top of a different window. https://dwm.suckless.org/patches/warp/
*/
#define WARP_PATCH 0
/* Sometimes a single application opens different windows depending on the task
* at hand and this is often reflected in the WM_WINDOW_ROLE(STRING) x property.
* This patch adds the role field to the rule configuration so that one can
* differentiate between, say, Firefox "browser" vs "Preferences" vs "Manager"
* or Google-chrome "browser" vs "pop-up".
* https://github.com/bakkeby/patches/blob/master/dwm/dwm-windowrolerule-6.2.diff
*/
#define WINDOWROLERULE_PATCH 0
/* The winview patch allows switching the view to that of a given client from
* the all-window view (Mod-0) using a keyboard shortcut.
* http://dwm.suckless.org/patches/winview/
*/
#define WINVIEW_PATCH 0
/* Remember keyboard layout per client.
* It is recommended that you configure xkb before using this patch as described
* in https://www.x.org/archive/X11R7.5/doc/input/XKB-Config.html
* https://dwm.suckless.org/patches/xkb/
*/
#define XKB_PATCH 0
/* Allows dwm to read colors from xrdb (.Xresources) during runtime. Compatible
* with the float border color, awesomebar, urgentborder and titlecolor patches.
* https://dwm.suckless.org/patches/xrdb/
*/
#define XRDB_PATCH 0
/* This patch allows for integer, float and string settings to be loaded from
* Xresources. Xresources takes precedence over xrdb.
* https://dwm.suckless.org/patches/xresources/
*/
#define XRESOURCES_PATCH 0
/* Simple patch that allows floating windows to be zoomed into the master stack
* position.
* https://www.reddit.com/r/suckless/comments/ie5fe3/zoomfloating_my_own_simple_original_patch/
*/
#define ZOOMFLOATING_PATCH 0
/* The zoomswap patch allows a master and a stack window to swap places
* rather than every window on the screen changing position.
* https://dwm.suckless.org/patches/zoomswap/
*/
#define ZOOMSWAP_PATCH 0
/**
* Layouts
*/
/* Bottomstack layout.
* https://dwm.suckless.org/patches/bottomstack/
*/
#define BSTACK_LAYOUT 0
/* Bottomstack horizontal layout.
* https://dwm.suckless.org/patches/bottomstack/
*/
#define BSTACKHORIZ_LAYOUT 0
/* Centered master layout.
* https://dwm.suckless.org/patches/centeredmaster/
*/
#define CENTEREDMASTER_LAYOUT 0
/* Centered floating master layout.
* https://dwm.suckless.org/patches/centeredmaster/
*/
#define CENTEREDFLOATINGMASTER_LAYOUT 0
/* Same as the default tile layout except clients in the master area are
* arranged in columns (i.e. left to right).
* https://dwm.suckless.org/patches/columns/
*/
#define COLUMNS_LAYOUT 0
/* Deck layout.
* https://dwm.suckless.org/patches/deck/
*/
#define DECK_LAYOUT 0
/* Fibonacci dwindle layout.
* https://dwm.suckless.org/patches/fibonacci/
*/
#define FIBONACCI_DWINDLE_LAYOUT 0
/* Fibonacci spiral layout.
* https://dwm.suckless.org/patches/fibonacci/
*/
#define FIBONACCI_SPIRAL_LAYOUT 0
/* Flextile deluxe layout.
* A revamped, more flexible, and over-the-top version of the original flextile
* layout. https://dwm.suckless.org/patches/flextile/ (original)
*/
#define FLEXTILE_DELUXE_LAYOUT 0
/* Gappless grid layout.
* https://dwm.suckless.org/patches/gaplessgrid/
*/
#define GAPPLESSGRID_LAYOUT 0
/* Gridmode (grid) layout.
* https://dwm.suckless.org/patches/gridmode/
*/
#define GRIDMODE_LAYOUT 0
/* Horizontal grid (horizgrid) layout.
* https://dwm.suckless.org/patches/horizgrid/
*/
#define HORIZGRID_LAYOUT 0
/* Grid layout where nmaster controls the number of rows.
* https://dwm.suckless.org/patches/nrowgrid/
*/
#define NROWGRID_LAYOUT 0
/* The default tile layout.
* This can be optionally disabled in favour of other layouts.
*/
#define TILE_LAYOUT 1
/* Monocle layout (default).
* This can be optionally disabled in favour of other layouts.
*/
#define MONOCLE_LAYOUT 1
|