From 1387bdc89fb224c1aa918f360942731c3057677f Mon Sep 17 00:00:00 2001 From: coast Date: Sat, 14 Jun 2025 16:41:27 +0330 Subject: [PATCH] preparing for distro hop --- .config/picom/picom/picom.conf | 3 +- .emacs.d/init.el | 30 +- .suckless/{st/dwm/dwm.c.orig => dwm/#dwm.c#} | 32 +- .suckless/dwm/config.h | 12 +- .suckless/dwm/config.h~ | 19 +- .suckless/dwm/dwm | Bin 74736 -> 74768 bytes .suckless/dwm/dwm.o | Bin 62512 -> 62592 bytes .suckless/dwm/patch/hidevacanttags.diff | 49 + .suckless/dwm/patch/hidevacanttags.diff.orig | 49 + .suckless/dwm/patch/hidevacanttags.diff.rej | 44 + .suckless/dwm/patches/hidevacanttags.diff | 48 + .suckless/slstatus/README | 65 - .suckless/slstatus/config.h | 8 +- .suckless/slstatus/slstatus | Bin 31800 -> 31800 bytes .suckless/slstatus/slstatus.o | Bin 6712 -> 6296 bytes .suckless/st/config.h.save | 486 --- .suckless/st/config.h.save.1 | 486 --- .suckless/st/config.h.save.2 | 486 --- .suckless/st/config.h.save.3 | 486 --- .suckless/st/dmenu/LICENSE | 30 - .suckless/st/dmenu/Makefile | 58 - .suckless/st/dmenu/README | 24 - .suckless/st/dmenu/arg.h | 49 - .suckless/st/dmenu/config.def.h | 23 - .suckless/st/dmenu/config.h | 23 - .suckless/st/dmenu/config.mk | 32 - .suckless/st/dmenu/dmenu | Bin 42928 -> 0 bytes .suckless/st/dmenu/dmenu.1 | 194 -- .suckless/st/dmenu/dmenu.c | 795 ----- .suckless/st/dmenu/dmenu.o | Bin 31968 -> 0 bytes .suckless/st/dmenu/dmenu_path | 13 - .suckless/st/dmenu/dmenu_run | 2 - .suckless/st/dmenu/drw.c | 448 --- .suckless/st/dmenu/drw.h | 58 - .suckless/st/dmenu/drw.o | Bin 11296 -> 0 bytes .suckless/st/dmenu/stest | Bin 16408 -> 0 bytes .suckless/st/dmenu/stest.1 | 90 - .suckless/st/dmenu/stest.c | 109 - .suckless/st/dmenu/stest.o | Bin 5240 -> 0 bytes .suckless/st/dmenu/util.c | 37 - .suckless/st/dmenu/util.h | 9 - .suckless/st/dmenu/util.o | Bin 2400 -> 0 bytes .suckless/st/dwm/LICENSE | 38 - .suckless/st/dwm/Makefile | 67 - .suckless/st/dwm/README | 48 - .suckless/st/dwm/README.md | 30 - .suckless/st/dwm/attachaside.diff | 93 - .suckless/st/dwm/config.def.h | 129 - .suckless/st/dwm/config.h | 405 --- .suckless/st/dwm/config.h~ | 160 - .suckless/st/dwm/config.mk | 55 - .suckless/st/dwm/configure | 40 - .suckless/st/dwm/drw.c | 451 --- .suckless/st/dwm/drw.h | 72 - .suckless/st/dwm/drw.o | Bin 10368 -> 0 bytes .suckless/st/dwm/dwm | Bin 100176 -> 0 bytes .suckless/st/dwm/dwm.1 | 187 -- .suckless/st/dwm/dwm.c | 2619 ----------------- .suckless/st/dwm/dwm.c.rej | 20 - .suckless/st/dwm/dwm.o | Bin 100416 -> 0 bytes .suckless/st/dwm/dwm.png | Bin 373 -> 0 bytes .suckless/st/dwm/mkconfig/config.mk.freebsd | 59 - .suckless/st/dwm/mkconfig/config.mk.linux | 55 - .suckless/st/dwm/mkconfig/config.mk.openbsd | 57 - .suckless/st/dwm/mkconfig/config.mk.solaris | 58 - .suckless/st/dwm/movestack.c | 48 - .suckless/st/dwm/patch/attachx.c | 20 - .suckless/st/dwm/patch/attachx.h | 2 - .suckless/st/dwm/patch/bar.c | 39 - .suckless/st/dwm/patch/bar.h | 2 - .suckless/st/dwm/patch/bar_alpha.c | 43 - .suckless/st/dwm/patch/bar_alpha.h | 4 - .suckless/st/dwm/patch/bar_indicators.c | 104 - .suckless/st/dwm/patch/bar_indicators.h | 21 - .suckless/st/dwm/patch/bar_ltsymbol.c | 18 - .suckless/st/dwm/patch/bar_ltsymbol.h | 4 - .suckless/st/dwm/patch/bar_status.c | 20 - .suckless/st/dwm/patch/bar_status.h | 4 - .suckless/st/dwm/patch/bar_tagicons.c | 9 - .suckless/st/dwm/patch/bar_tagicons.h | 8 - .suckless/st/dwm/patch/bar_tags.c | 81 - .suckless/st/dwm/patch/bar_tags.h | 4 - .suckless/st/dwm/patch/bar_wintitle.c | 48 - .suckless/st/dwm/patch/bar_wintitle.h | 4 - .suckless/st/dwm/patch/cool_autostart.c | 29 - .suckless/st/dwm/patch/cool_autostart.h | 2 - .../dwm/patch/dwm-alpha-20230401-348f655.diff | Bin 1024 -> 0 bytes .suckless/st/dwm/patch/dwmc | 130 - .suckless/st/dwm/patch/dwmc.c | 85 - .suckless/st/dwm/patch/dwmc.h | 14 - .suckless/st/dwm/patch/fullscreen.c | 15 - .suckless/st/dwm/patch/fullscreen.h | 2 - .suckless/st/dwm/patch/include.c | 27 - .suckless/st/dwm/patch/include.h | 26 - .suckless/st/dwm/patch/ipc/IPCClient.h | 62 - .suckless/st/dwm/patch/ipc/dwm-msg.c | 549 ---- .suckless/st/dwm/patch/ipc/yajl_dumps.h | 66 - .suckless/st/dwm/patch/layout_facts.c | 24 - .suckless/st/dwm/patch/layout_tile.c | 41 - .suckless/st/dwm/patch/layout_tile.h | 2 - .suckless/st/dwm/patch/moveresize.c | 65 - .suckless/st/dwm/patch/moveresize.h | 2 - .suckless/st/dwm/patch/movestack.c | 51 - .suckless/st/dwm/patch/movestack.h | 2 - .suckless/st/dwm/patch/scratchpad.c | 77 - .suckless/st/dwm/patch/scratchpad.h | 9 - .suckless/st/dwm/patch/swallow.c | 212 -- .suckless/st/dwm/patch/swallow.h | 8 - .suckless/st/dwm/patch/togglefullscreen.c | 10 - .suckless/st/dwm/patch/togglefullscreen.h | 2 - .suckless/st/dwm/patch/vanitygaps.c | 177 -- .suckless/st/dwm/patch/vanitygaps.h | 16 - .suckless/st/dwm/patch/xrdb.c | 73 - .suckless/st/dwm/patch/xrdb.h | 22 - .../dwm-attachaside-20160718-56a31dc.diff | 92 - .../patches/dwm-bar-height-spacing-6.3.diff | 25 - .../dwm-barpadding-20211020-a786211.diff | 118 - .../st/dwm/patches/dwm-fullgaps-6.4.diff | 94 - .../patches/dwm-notitle-20210715-138b405.diff | 81 - .../patches/dwm-restartsig-20180523-6.2.diff | 139 - .../st/dwm/patches/dwm-statusallmons-6.2.diff | 25 - .suckless/st/dwm/patches/dwm-warp-6.4.diff | 79 - .suckless/st/dwm/patches/dwm-xrdb-6.4.diff | 203 -- .suckless/st/dwm/readme.dwm.txt | 48 - .suckless/st/dwm/transient.c | 43 - .suckless/st/dwm/util.c | 36 - .suckless/st/dwm/util.h | 19 - .suckless/st/dwm/util.o | Bin 2216 -> 0 bytes .suckless/st/hb.c | 125 - .suckless/st/hb.h | 14 - .suckless/st/hb.o | Bin 4240 -> 0 bytes .suckless/st/slstatus/LICENSE | 46 - .suckless/st/slstatus/Makefile | 69 - .suckless/st/slstatus/README | 65 - .suckless/st/slstatus/arg.h | 33 - .suckless/st/slstatus/components/battery.c | 247 -- .suckless/st/slstatus/components/battery.o | Bin 5152 -> 0 bytes .suckless/st/slstatus/components/cat.c | 32 - .suckless/st/slstatus/components/cat.o | Bin 2104 -> 0 bytes .suckless/st/slstatus/components/cpu.c | 157 - .suckless/st/slstatus/components/cpu.o | Bin 3112 -> 0 bytes .suckless/st/slstatus/components/datetime.c | 20 - .suckless/st/slstatus/components/datetime.o | Bin 1944 -> 0 bytes .suckless/st/slstatus/components/disk.c | 59 - .suckless/st/slstatus/components/disk.o | Bin 3120 -> 0 bytes .suckless/st/slstatus/components/entropy.c | 29 - .suckless/st/slstatus/components/entropy.o | Bin 1800 -> 0 bytes .suckless/st/slstatus/components/hostname.c | 17 - .suckless/st/slstatus/components/hostname.o | Bin 1656 -> 0 bytes .suckless/st/slstatus/components/ip.c | 87 - .suckless/st/slstatus/components/ip.o | Bin 3104 -> 0 bytes .../st/slstatus/components/kernel_release.c | 19 - .../st/slstatus/components/kernel_release.o | Bin 1832 -> 0 bytes .../slstatus/components/keyboard_indicators.c | 50 - .../slstatus/components/keyboard_indicators.o | Bin 2416 -> 0 bytes .suckless/st/slstatus/components/keymap.c | 86 - .suckless/st/slstatus/components/keymap.o | Bin 4016 -> 0 bytes .suckless/st/slstatus/components/load_avg.c | 19 - .suckless/st/slstatus/components/load_avg.o | Bin 1864 -> 0 bytes .suckless/st/slstatus/components/netspeeds.c | 129 - .suckless/st/slstatus/components/netspeeds.o | Bin 2760 -> 0 bytes .suckless/st/slstatus/components/num_files.c | 32 - .suckless/st/slstatus/components/num_files.o | Bin 2112 -> 0 bytes .suckless/st/slstatus/components/pixVol.sh | 10 - .suckless/st/slstatus/components/ram.c | 212 -- .suckless/st/slstatus/components/ram.o | Bin 3072 -> 0 bytes .../st/slstatus/components/run_command.c | 31 - .../st/slstatus/components/run_command.o | Bin 2120 -> 0 bytes .suckless/st/slstatus/components/swap.c | 274 -- .suckless/st/slstatus/components/swap.o | Bin 3880 -> 0 bytes .../st/slstatus/components/temperature.c | 73 - .../st/slstatus/components/temperature.o | Bin 1720 -> 0 bytes .suckless/st/slstatus/components/uptime.c | 34 - .suckless/st/slstatus/components/uptime.o | Bin 1968 -> 0 bytes .suckless/st/slstatus/components/user.c | 33 - .suckless/st/slstatus/components/user.o | Bin 2192 -> 0 bytes .suckless/st/slstatus/components/volume.c | 219 -- .suckless/st/slstatus/components/volume.o | Bin 3584 -> 0 bytes .suckless/st/slstatus/components/wifi.c | 413 --- .suckless/st/slstatus/components/wifi.o | Bin 5920 -> 0 bytes .suckless/st/slstatus/config.def.h | 70 - .suckless/st/slstatus/config.h | 81 - .suckless/st/slstatus/config.h~ | 77 - .suckless/st/slstatus/config.mk | 22 - .suckless/st/slstatus/slstatus | Bin 31832 -> 0 bytes .suckless/st/slstatus/slstatus.1 | 47 - .suckless/st/slstatus/slstatus.c | 135 - .suckless/st/slstatus/slstatus.h | 85 - .suckless/st/slstatus/slstatus.o | Bin 6768 -> 0 bytes .suckless/st/slstatus/util.c | 141 - .suckless/st/slstatus/util.h | 16 - .suckless/st/slstatus/util.o | Bin 5576 -> 0 bytes ...st-alpha-changealpha-20230519-b44f2ad.diff | 194 -- .zshrc | 2 +- 194 files changed, 252 insertions(+), 15477 deletions(-) rename .suckless/{st/dwm/dwm.c.orig => dwm/#dwm.c#} (98%) create mode 100644 .suckless/dwm/patch/hidevacanttags.diff create mode 100644 .suckless/dwm/patch/hidevacanttags.diff.orig create mode 100644 .suckless/dwm/patch/hidevacanttags.diff.rej create mode 100644 .suckless/dwm/patches/hidevacanttags.diff delete mode 100644 .suckless/slstatus/README delete mode 100644 .suckless/st/config.h.save delete mode 100644 .suckless/st/config.h.save.1 delete mode 100644 .suckless/st/config.h.save.2 delete mode 100644 .suckless/st/config.h.save.3 delete mode 100644 .suckless/st/dmenu/LICENSE delete mode 100644 .suckless/st/dmenu/Makefile delete mode 100644 .suckless/st/dmenu/README delete mode 100644 .suckless/st/dmenu/arg.h delete mode 100644 .suckless/st/dmenu/config.def.h delete mode 100644 .suckless/st/dmenu/config.h delete mode 100644 .suckless/st/dmenu/config.mk delete mode 100755 .suckless/st/dmenu/dmenu delete mode 100644 .suckless/st/dmenu/dmenu.1 delete mode 100644 .suckless/st/dmenu/dmenu.c delete mode 100644 .suckless/st/dmenu/dmenu.o delete mode 100755 .suckless/st/dmenu/dmenu_path delete mode 100755 .suckless/st/dmenu/dmenu_run delete mode 100644 .suckless/st/dmenu/drw.c delete mode 100644 .suckless/st/dmenu/drw.h delete mode 100644 .suckless/st/dmenu/drw.o delete mode 100755 .suckless/st/dmenu/stest delete mode 100644 .suckless/st/dmenu/stest.1 delete mode 100644 .suckless/st/dmenu/stest.c delete mode 100644 .suckless/st/dmenu/stest.o delete mode 100644 .suckless/st/dmenu/util.c delete mode 100644 .suckless/st/dmenu/util.h delete mode 100644 .suckless/st/dmenu/util.o delete mode 100644 .suckless/st/dwm/LICENSE delete mode 100644 .suckless/st/dwm/Makefile delete mode 100644 .suckless/st/dwm/README delete mode 100644 .suckless/st/dwm/README.md delete mode 100644 .suckless/st/dwm/attachaside.diff delete mode 100644 .suckless/st/dwm/config.def.h delete mode 100644 .suckless/st/dwm/config.h delete mode 100644 .suckless/st/dwm/config.h~ delete mode 100644 .suckless/st/dwm/config.mk delete mode 100644 .suckless/st/dwm/configure delete mode 100644 .suckless/st/dwm/drw.c delete mode 100644 .suckless/st/dwm/drw.h delete mode 100644 .suckless/st/dwm/drw.o delete mode 100755 .suckless/st/dwm/dwm delete mode 100644 .suckless/st/dwm/dwm.1 delete mode 100644 .suckless/st/dwm/dwm.c delete mode 100644 .suckless/st/dwm/dwm.c.rej delete mode 100644 .suckless/st/dwm/dwm.o delete mode 100644 .suckless/st/dwm/dwm.png delete mode 100644 .suckless/st/dwm/mkconfig/config.mk.freebsd delete mode 100644 .suckless/st/dwm/mkconfig/config.mk.linux delete mode 100644 .suckless/st/dwm/mkconfig/config.mk.openbsd delete mode 100644 .suckless/st/dwm/mkconfig/config.mk.solaris delete mode 100644 .suckless/st/dwm/movestack.c delete mode 100644 .suckless/st/dwm/patch/attachx.c delete mode 100644 .suckless/st/dwm/patch/attachx.h delete mode 100644 .suckless/st/dwm/patch/bar.c delete mode 100644 .suckless/st/dwm/patch/bar.h delete mode 100644 .suckless/st/dwm/patch/bar_alpha.c delete mode 100644 .suckless/st/dwm/patch/bar_alpha.h delete mode 100644 .suckless/st/dwm/patch/bar_indicators.c delete mode 100644 .suckless/st/dwm/patch/bar_indicators.h delete mode 100644 .suckless/st/dwm/patch/bar_ltsymbol.c delete mode 100644 .suckless/st/dwm/patch/bar_ltsymbol.h delete mode 100644 .suckless/st/dwm/patch/bar_status.c delete mode 100644 .suckless/st/dwm/patch/bar_status.h delete mode 100644 .suckless/st/dwm/patch/bar_tagicons.c delete mode 100644 .suckless/st/dwm/patch/bar_tagicons.h delete mode 100644 .suckless/st/dwm/patch/bar_tags.c delete mode 100644 .suckless/st/dwm/patch/bar_tags.h delete mode 100644 .suckless/st/dwm/patch/bar_wintitle.c delete mode 100644 .suckless/st/dwm/patch/bar_wintitle.h delete mode 100644 .suckless/st/dwm/patch/cool_autostart.c delete mode 100644 .suckless/st/dwm/patch/cool_autostart.h delete mode 100644 .suckless/st/dwm/patch/dwm-alpha-20230401-348f655.diff delete mode 100644 .suckless/st/dwm/patch/dwmc delete mode 100644 .suckless/st/dwm/patch/dwmc.c delete mode 100644 .suckless/st/dwm/patch/dwmc.h delete mode 100644 .suckless/st/dwm/patch/fullscreen.c delete mode 100644 .suckless/st/dwm/patch/fullscreen.h delete mode 100644 .suckless/st/dwm/patch/include.c delete mode 100644 .suckless/st/dwm/patch/include.h delete mode 100644 .suckless/st/dwm/patch/ipc/IPCClient.h delete mode 100644 .suckless/st/dwm/patch/ipc/dwm-msg.c delete mode 100644 .suckless/st/dwm/patch/ipc/yajl_dumps.h delete mode 100644 .suckless/st/dwm/patch/layout_facts.c delete mode 100644 .suckless/st/dwm/patch/layout_tile.c delete mode 100644 .suckless/st/dwm/patch/layout_tile.h delete mode 100644 .suckless/st/dwm/patch/moveresize.c delete mode 100644 .suckless/st/dwm/patch/moveresize.h delete mode 100644 .suckless/st/dwm/patch/movestack.c delete mode 100644 .suckless/st/dwm/patch/movestack.h delete mode 100644 .suckless/st/dwm/patch/scratchpad.c delete mode 100644 .suckless/st/dwm/patch/scratchpad.h delete mode 100644 .suckless/st/dwm/patch/swallow.c delete mode 100644 .suckless/st/dwm/patch/swallow.h delete mode 100644 .suckless/st/dwm/patch/togglefullscreen.c delete mode 100644 .suckless/st/dwm/patch/togglefullscreen.h delete mode 100644 .suckless/st/dwm/patch/vanitygaps.c delete mode 100644 .suckless/st/dwm/patch/vanitygaps.h delete mode 100644 .suckless/st/dwm/patch/xrdb.c delete mode 100644 .suckless/st/dwm/patch/xrdb.h delete mode 100644 .suckless/st/dwm/patches/dwm-attachaside-20160718-56a31dc.diff delete mode 100644 .suckless/st/dwm/patches/dwm-bar-height-spacing-6.3.diff delete mode 100755 .suckless/st/dwm/patches/dwm-barpadding-20211020-a786211.diff delete mode 100755 .suckless/st/dwm/patches/dwm-fullgaps-6.4.diff delete mode 100755 .suckless/st/dwm/patches/dwm-notitle-20210715-138b405.diff delete mode 100755 .suckless/st/dwm/patches/dwm-restartsig-20180523-6.2.diff delete mode 100755 .suckless/st/dwm/patches/dwm-statusallmons-6.2.diff delete mode 100755 .suckless/st/dwm/patches/dwm-warp-6.4.diff delete mode 100755 .suckless/st/dwm/patches/dwm-xrdb-6.4.diff delete mode 100644 .suckless/st/dwm/readme.dwm.txt delete mode 100644 .suckless/st/dwm/transient.c delete mode 100644 .suckless/st/dwm/util.c delete mode 100644 .suckless/st/dwm/util.h delete mode 100644 .suckless/st/dwm/util.o delete mode 100644 .suckless/st/hb.c delete mode 100644 .suckless/st/hb.h delete mode 100644 .suckless/st/hb.o delete mode 100644 .suckless/st/slstatus/LICENSE delete mode 100644 .suckless/st/slstatus/Makefile delete mode 100644 .suckless/st/slstatus/README delete mode 100644 .suckless/st/slstatus/arg.h delete mode 100644 .suckless/st/slstatus/components/battery.c delete mode 100644 .suckless/st/slstatus/components/battery.o delete mode 100644 .suckless/st/slstatus/components/cat.c delete mode 100644 .suckless/st/slstatus/components/cat.o delete mode 100644 .suckless/st/slstatus/components/cpu.c delete mode 100644 .suckless/st/slstatus/components/cpu.o delete mode 100644 .suckless/st/slstatus/components/datetime.c delete mode 100644 .suckless/st/slstatus/components/datetime.o delete mode 100644 .suckless/st/slstatus/components/disk.c delete mode 100644 .suckless/st/slstatus/components/disk.o delete mode 100644 .suckless/st/slstatus/components/entropy.c delete mode 100644 .suckless/st/slstatus/components/entropy.o delete mode 100644 .suckless/st/slstatus/components/hostname.c delete mode 100644 .suckless/st/slstatus/components/hostname.o delete mode 100644 .suckless/st/slstatus/components/ip.c delete mode 100644 .suckless/st/slstatus/components/ip.o delete mode 100644 .suckless/st/slstatus/components/kernel_release.c delete mode 100644 .suckless/st/slstatus/components/kernel_release.o delete mode 100644 .suckless/st/slstatus/components/keyboard_indicators.c delete mode 100644 .suckless/st/slstatus/components/keyboard_indicators.o delete mode 100644 .suckless/st/slstatus/components/keymap.c delete mode 100644 .suckless/st/slstatus/components/keymap.o delete mode 100644 .suckless/st/slstatus/components/load_avg.c delete mode 100644 .suckless/st/slstatus/components/load_avg.o delete mode 100644 .suckless/st/slstatus/components/netspeeds.c delete mode 100644 .suckless/st/slstatus/components/netspeeds.o delete mode 100644 .suckless/st/slstatus/components/num_files.c delete mode 100644 .suckless/st/slstatus/components/num_files.o delete mode 100644 .suckless/st/slstatus/components/pixVol.sh delete mode 100644 .suckless/st/slstatus/components/ram.c delete mode 100644 .suckless/st/slstatus/components/ram.o delete mode 100644 .suckless/st/slstatus/components/run_command.c delete mode 100644 .suckless/st/slstatus/components/run_command.o delete mode 100644 .suckless/st/slstatus/components/swap.c delete mode 100644 .suckless/st/slstatus/components/swap.o delete mode 100644 .suckless/st/slstatus/components/temperature.c delete mode 100644 .suckless/st/slstatus/components/temperature.o delete mode 100644 .suckless/st/slstatus/components/uptime.c delete mode 100644 .suckless/st/slstatus/components/uptime.o delete mode 100644 .suckless/st/slstatus/components/user.c delete mode 100644 .suckless/st/slstatus/components/user.o delete mode 100644 .suckless/st/slstatus/components/volume.c delete mode 100644 .suckless/st/slstatus/components/volume.o delete mode 100644 .suckless/st/slstatus/components/wifi.c delete mode 100644 .suckless/st/slstatus/components/wifi.o delete mode 100644 .suckless/st/slstatus/config.def.h delete mode 100644 .suckless/st/slstatus/config.h delete mode 100644 .suckless/st/slstatus/config.h~ delete mode 100644 .suckless/st/slstatus/config.mk delete mode 100755 .suckless/st/slstatus/slstatus delete mode 100644 .suckless/st/slstatus/slstatus.1 delete mode 100644 .suckless/st/slstatus/slstatus.c delete mode 100644 .suckless/st/slstatus/slstatus.h delete mode 100644 .suckless/st/slstatus/slstatus.o delete mode 100644 .suckless/st/slstatus/util.c delete mode 100644 .suckless/st/slstatus/util.h delete mode 100644 .suckless/st/slstatus/util.o delete mode 100644 .suckless/st/st-alpha-changealpha-20230519-b44f2ad.diff diff --git a/.config/picom/picom/picom.conf b/.config/picom/picom/picom.conf index e37adeb..1958c20 100644 --- a/.config/picom/picom/picom.conf +++ b/.config/picom/picom/picom.conf @@ -42,7 +42,7 @@ fading = true; fade-in-step = 0.03; fade-out-step = 0.03; fade-delta = 5; -#corner-radius = 10; +corner-radius = 0; rounded-corners-exclude = [ "class_g = 'slop'", "class_g = 'maim'" @@ -53,6 +53,7 @@ opacity-rule = [ "80:class_g = 'st'", "80:class_g = 'dmenu'", "85:class_g = 'dwm'", + "90:class_g = 'nekoray'", "100:class_g = 'mullvad-browser'", "100:class_g = 'screenie'", "100:class_g = 'import'", diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 71f9a6e..fc760ca 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -23,15 +23,16 @@ (set-frame-parameter (selected-frame) 'alpha '(95 . 95)) (add-to-list 'default-frame-alist '(alpha . (95 . 95))) -(use-package doom-themes - :config) +;;(use-package doom-themes +;; :config) (set-frame-parameter (selected-frame) 'alpha '(90 . 90)) (add-to-list 'default-frame-alist '(alpha . (90 . 90))) -(use-package kaolin-themes - :ensure t) -(load-theme 'kaolin-dark t) +;;(use-package zenburn-theme +;; :ensure t +;; :config +;; (load-theme 'zenburn t)) (menu-bar-mode -1) (tool-bar-mode -1) @@ -82,16 +83,6 @@ (use-package which-key :config (which-key-mode)) -(use-package centaur-tabs - :config - (setq centaur-tabs-set-bar 'over - centaur-tabs-set-icons t - centaur-tabs-gray-out-icons 'buffer - centaur-tabs-height 24 - centaur-tabs-set-modified-marker t - centaur-tabs-modified-marker "*") - (centaur-tabs-mode t)) - ;; --------------------------- ;; EDITOR BEHAVIOR ;; --------------------------- @@ -162,7 +153,14 @@ '(custom-safe-themes '("0325a6b5eea7e5febae709dab35ec8648908af12cf2d2b569bedc8da0a3a81c1" default)) - '(package-selected-packages nil)) + '(package-selected-packages + '(all-the-icons blackboard-theme centaur-tabs cherry-blossom-theme + company consult doom-modeline doom-themes elcord + evil fennel-mode flycheck gradle-mode kaolin-themes + lsp-java lsp-ui lua-mode macrostep marginalia + minimap neotree nix-mode rainbow-mode swiper + tree-sitter-langs vertico vterm yasnippet + zenburn-theme zig-mode))) (custom-set-faces ;; custom-set-faces was added by Custom. diff --git a/.suckless/st/dwm/dwm.c.orig b/.suckless/dwm/#dwm.c# similarity index 98% rename from .suckless/st/dwm/dwm.c.orig rename to .suckless/dwm/#dwm.c# index 7fd5c88..3c2c1b6 100644 --- a/.suckless/st/dwm/dwm.c.orig +++ b/.suckless/dwm/#dwm.c# @@ -50,7 +50,8 @@ #define CLEANMASK(mask) (mask & ~(numlockmask|LockMask) & (ShiftMask|ControlMask|Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)) #define INTERSECT(x,y,w,h,m) (MAX(0, MIN((x)+(w),(m)->wx+(m)->ww) - MAX((x),(m)->wx)) \ * MAX(0, MIN((y)+(h),(m)->wy+(m)->wh) - MAX((y),(m)->wy))) -#define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags])) +#define ISVISIBLEONTAG(C, T) ((C->tags & T)) +#define ISVISIBLE(C) ISVISIBLEONTAG(C, C->mon->tagset[C->mon->seltags]) #define MOUSEMASK (BUTTONMASK|PointerMotionMask) #define WIDTH(X) ((X)->w + 2 * (X)->bw) #define HEIGHT(X) ((X)->h + 2 * (X)->bw) @@ -163,6 +164,7 @@ static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interac static void arrange(Monitor *m); static void arrangemon(Monitor *m); static void attach(Client *c); +static void attachaside(Client *c); static void attachstack(Client *c); static void buttonpress(XEvent *e); static void checkotherwm(void); @@ -201,6 +203,7 @@ static void maprequest(XEvent *e); static void monocle(Monitor *m); static void motionnotify(XEvent *e); static void movemouse(const Arg *arg); +static Client *nexttagged(Client *c); static Client *nexttiled(Client *c); static void pop(Client *c); static void propertynotify(XEvent *e); @@ -434,6 +437,17 @@ attach(Client *c) c->mon->clients = c; } +void +attachaside(Client *c) { + Client *at = nexttagged(c); + if(!at) { + attach(c); + return; + } + c->next = at->next; + at->next = c; +} + void attachstack(Client *c) { @@ -1118,7 +1132,7 @@ manage(Window w, XWindowAttributes *wa) c->isfloating = c->oldstate = trans != None || c->isfixed; if (c->isfloating) XRaiseWindow(dpy, c->win); - attach(c); + attachaside(c); attachstack(c); XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend, (unsigned char *) &(c->win), 1); @@ -1246,6 +1260,16 @@ movemouse(const Arg *arg) } } +Client * +nexttagged(Client *c) { + Client *walked = c->mon->clients; + for(; + walked && (walked->isfloating || !ISVISIBLEONTAG(walked, c->tags)); + walked = walked->next + ); + return walked; +} + Client * nexttiled(Client *c) { @@ -1471,7 +1495,7 @@ sendmon(Client *c, Monitor *m) detachstack(c); c->mon = m; c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */ - attach(c); + attachaside(c); attachstack(c); focus(NULL); arrange(NULL); @@ -1990,7 +2014,7 @@ updategeom(void) m->clients = c->next; detachstack(c); c->mon = mons; - attach(c); + attachaside(c); attachstack(c); } if (m == selmon) diff --git a/.suckless/dwm/config.h b/.suckless/dwm/config.h index 861fc95..c63e84b 100644 --- a/.suckless/dwm/config.h +++ b/.suckless/dwm/config.h @@ -2,22 +2,22 @@ /* See LICENSE file for copyright and license details. */ /* appearance */ -static const unsigned int borderpx = 2; /* border pixel of windows */ +static const unsigned int borderpx = 2.5; /* border pixel of windows */ static const unsigned int gappx = 14; /* gaps between windows */ static const unsigned int snap = 3; /* snap pixel */ static const int user_bh = 12; /* 2 is the default spacing around the bar's font */ static const int showbar = 1; /* 0 means no bar */ static const int topbar = 1; /* 0 means bottom bar */ static const int vertpad = 10; /* vertical padding of bar */ -static const int sidepad = 16; /* horizontal padding of bar */ +static const int sidepad = 400; /* horizontal padding of bar */ static const char *fonts[] = {"CaskaydiaMonoNerdFont-Bold:size=9.2"}; static const char dmenufont[] = "CaskaydiaMonoNerdFont-Bold:size=10.6"; static char normbgcolor[] = "#222222"; static char normbordercolor[] = "#444444"; static char normfgcolor[] = "#bbbbbb"; static char selfgcolor[] = "#eeeeee"; -static char selbordercolor[] = "#722F37"; -static char selbgcolor[] = "#722F37"; +static char selbordercolor[] = "#005577"; +static char selbgcolor[] = "#005577"; static char *colors[][3] = { /* fg bg border */ [SchemeNorm] = { normfgcolor, normbgcolor, normbordercolor }, @@ -49,7 +49,7 @@ static const Layout layouts[] = { {"<@>", monocle}, }; -static const char *pcmanfm[] = { "pcmanfm", NULL }; +static const char *ranger[] = { "st", "-e", "ranger", NULL }; static const char *firemenu[] = { "firemenu", NULL }; #include @@ -97,7 +97,7 @@ static const char *termcmd[] = {"zsh", "-c", "st -e zsh & walrs -R -q ",NULL}; static Key keys[] = { /*modifierkey function argument */ { Mod4Mask|ShiftMask, XK_r, spawn, {.v = firemenu } }, - { MODKEY, XK_f, spawn, {.v = pcmanfm } }, + { MODKEY, XK_f, spawn, {.v = ranger } }, { MODKEY, XK_r, spawn, {.v = dmenucmd } }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, diff --git a/.suckless/dwm/config.h~ b/.suckless/dwm/config.h~ index 479e5f4..10f51cf 100644 --- a/.suckless/dwm/config.h~ +++ b/.suckless/dwm/config.h~ @@ -2,14 +2,14 @@ /* See LICENSE file for copyright and license details. */ /* appearance */ -static const unsigned int borderpx = 2; /* border pixel of windows */ +static const unsigned int borderpx = 2.5; /* border pixel of windows */ static const unsigned int gappx = 14; /* gaps between windows */ static const unsigned int snap = 3; /* snap pixel */ static const int user_bh = 12; /* 2 is the default spacing around the bar's font */ static const int showbar = 1; /* 0 means no bar */ static const int topbar = 1; /* 0 means bottom bar */ static const int vertpad = 10; /* vertical padding of bar */ -static const int sidepad = 16; /* horizontal padding of bar */ +static const int sidepad = 400; /* horizontal padding of bar */ static const char *fonts[] = {"CaskaydiaMonoNerdFont-Bold:size=9.2"}; static const char dmenufont[] = "CaskaydiaMonoNerdFont-Bold:size=10.6"; static char normbgcolor[] = "#222222"; @@ -25,7 +25,7 @@ static char *colors[][3] = { }; /* tagging */ -static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; +static const char *tags[] = { "[one]", "[two]", "[three]", "[four]", "[five]", "[six]", "[seven]", "[eight]", "[nine]" }; static const Rule rules[] = { /* xprop(1): @@ -45,11 +45,11 @@ static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen win static const Layout layouts[] = { /* symbol arrange function */ {"[]=", tile}, /* first entry is default */ - {"><>", NULL}, /* no layout function means floating behavior */ - {"", monocle}, + {"<#>", NULL}, /* no layout function means floating behavior */ + {"<@>", monocle}, }; -static const char *pcmanfm[] = { "pcmanfm", NULL }; +static const char *ranger[] = { "st", "-e", "ranger", NULL }; static const char *firemenu[] = { "firemenu", NULL }; #include @@ -97,7 +97,7 @@ static const char *termcmd[] = {"zsh", "-c", "st -e zsh & walrs -R -q ",NULL}; static Key keys[] = { /*modifierkey function argument */ { Mod4Mask|ShiftMask, XK_r, spawn, {.v = firemenu } }, - { MODKEY, XK_f, spawn, {.v = pcmanfm } }, + { MODKEY, XK_f, spawn, {.v = ranger } }, { MODKEY, XK_r, spawn, {.v = dmenucmd } }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, @@ -119,8 +119,7 @@ static Key keys[] = { { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, { MODKEY|ShiftMask, XK_q,quit, {0} }, - //{ MODKEY, XK_b, spawn, {.v = floorp} }, - { MODKEY, XK_b, spawn, SHCMD("floorp") }, + { MODKEY, XK_b, spawn, SHCMD("mullvad-browser") }, { MODKEY, XK_m, togglebar, {0} }, { MODKEY, XK_o, incnmaster, {.i = +1 } }, { MODKEY, XK_Return, spawn, {.v = termcmd } }, @@ -138,7 +137,7 @@ static Key keys[] = { { 0, XF86XK_AudioLowerVolume, spawn, SHCMD(XK_DOWN) }, //lock { MODKEY|ShiftMask, XK_l, spawn, SHCMD("slock") }, - { 0, XK_Print, spawn, SHCMD("flameshot gui -r | xclip -selection clipboard -t image/png") }, + { 0, XK_Print, spawn, SHCMD("flameshot gui -r | xclip -selection clipboard -t image/png && notify-send 'Screenshot taken!'") }, }; diff --git a/.suckless/dwm/dwm b/.suckless/dwm/dwm index 94233d3d8138eea2a9fa0894da17635ef08ba04f..ece1b783538e3c1eccc56bfa1d3dad7c06c4d774 100755 GIT binary patch delta 9616 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 delta 9555 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 diff --git a/.suckless/dwm/dwm.o b/.suckless/dwm/dwm.o index d0657a9f0aadd7630ae7f1b718fa6383eb02cb07..27e4d353d96de6f04aab737418c0cfca3f39daf2 100644 GIT binary patch delta 2002 zcmZA2e`wTo9LMp`=k}fMdu+Ki^4qs^-l#ur(!3oqPZ7Ntt#K8%9TX&k+|^W+k23Org48R#Qm(d|&rD&CkIe-|u~% zpYM-xU%sD-D+L2r3&L(5jZ~fXIKtdYdLFy4q^72}*5_jnV{2`wuh5Ej^|0zT*4^6i zLR+`BH883bawb01l`+T_)MzGHWYq*`im9&A^=Wgsly}p}juU*$TD!Af<79o_IqNV> zo%S(|73DVUjRM9vbFzf>(XL~Ts;HhDcgeg%%jG&b-Xh0)sB5=j9+EX7&z3*xD2<6~ z$vUdkvlJKgf~+k{%@FT3%*BPd>$;Ts5P5qI?xjGl$6P1oFjgY(=+35&M#LHFQ45*4 z%w3-+DJE*8tZjES#-5?HsGDT%SL*XrxyLZK%KDB{+bJY!hpe9{wTA{p?L#eL^542W zXMiH29+byMZja}74%0TOy@q*I)&->=r;Vb1EbCG{GIyp-P?xADWvy1~ z7c?g7m$Ei0Rs4>kek1F4rG8Jm&oFIQ$HL1>^7+_&2--@1eo{_El_Gz}4_^*aX|*%kVIK501l0 z7=zRB9J~ax#0L!iFZOlviv0)Rqi_v;0zL&p@Hw~*cEFe5LHI5_0b?)@FT+3KUyxDR zs|GKJ%i&769){qHa5o%+Z^94Yhwvnf!E^8uwGJ8l3igxmI=ls!;1^s5-EbAGv$dKI zY||FW7xC2a{37evTbmwn6g#aOR>fle6PZ(+`88|rlur|1BBvU}m+PmN7!IzHb9SX! zDBnpf^3k<772;2)(5y#1HiNTgnmo=)? zdTZm{IOkC-ef~FRAiogUlk9uDCe{i2b53}sLyjjX{i{Lk^QF2wcLJ88 z%6Vhi!vE&mQ%hwPOOaU8yvg#aBDqr8SF&g1Uzzz8EPn@2TO;$mI**c`Ji|LFp7ilK z(o=r%+Xhnoe1WD@4UYSrbZ>gKK6yTOnHmbEecVNd(th4V)53PrGk(640vW$!xS7g= tOKCLY=EF2Ch9^nS;(S@ZgKekRvK#cy1GzH=D4zA{i9d4RE>JAE{6DFG#n=D< delta 1948 zcmZA2ZERCj9LMowd^o84iben=(Tr)9}^3+?k-cI<0-{k45& zU}(PS-qz*h`zgBT6aKLo+}md7@0(*SF`JQaSZ`n~ zFSBEvIo2Hctlzx4zsFV*QQ4{TUVA35Q`hU&^#jy>P#Ev3I-zEBtJ*^YvR+WNSF2Yk zDeEm&>$RFDPe>SfxtVp{T3tqUA;HV3DdaWQ$}x-;s5R$yRTPyoY(ULra+!y==V?;b zT2*&F)EIk_TyF^DWmVg>x}Bf4Sk@Ej zz0n8PGY6f-4+(=*9nor-%4F?P^{!UWQiH7LRb7Jr%iNGCb<28D)suOW>^bffjeL;JOq!y4)`7n!wCEyUWdQHKVS;phifT$RPY7lIVN}!Tn(Rv z8{tc^0XD-n*bUFZFW_Z30)K;lLq>gX3ce5)!Ka`Pu7`E72_A)=@Ix4ZU&2B71B}5b zI7^=6g8zr(e5#YjPr#M10#?HsxCI8`F4znY!V~Zm{1gtt5jYKJ;9rna*;|4yhHmJE zm2eB(4MVU4o`fI4bMPV@gfTcp?QaWy8^;Ow4`lf5oUjms`0U29h; zUv_GZd3hf7#e}gy-MG56F^g$f)}^ZUYIQmBQDLl5HKNs0DwB1Ms{LABXEuy}&UwUi zjZf#hvQGkQkoDPSDLJ)>YU1;aE9zNb75VgF#qwosL)01<%SN@DeUeOA*QtGG5p9h- zjqLp|`#8$3Qf*GgLk`|c!I{f^4|x(kevN_&KfglZL>nI^BUx>`>!4SY&p1wxVOcqA zU(&}JjV1lOl#G<0Z=|5KhQcYot#KQ<0!t{7D&~!3r2YIf1z|Ytw@ozBc)HS2+mV@R SGkIoxj;=eIvzs&!DEc4NWV`?X diff --git a/.suckless/dwm/patch/hidevacanttags.diff b/.suckless/dwm/patch/hidevacanttags.diff new file mode 100644 index 0000000..0b02555 --- /dev/null +++ b/.suckless/dwm/patch/hidevacanttags.diff @@ -0,0 +1,49 @@ +:100644 100644 f1d86b2 0000000 M dwm.c + +diff --git a/dwm.c b/dwm.c +index f1d86b2..d41cc14 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -433,9 +433,15 @@ buttonpress(XEvent *e) + } + if (ev->window == selmon->barwin) { + i = x = 0; +- do ++ unsigned int occ = 0; ++ for(c = m->clients; c; c=c->next) ++ occ |= c->tags == TAGMASK ? 0 : c->tags; ++ do { ++ /* Do not reserve space for vacant tags */ ++ if (!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + x += TEXTW(tags[i]); +- while (ev->x >= x && ++i < LENGTH(tags)); ++ } while (ev->x >= x && ++i < LENGTH(tags)); + if (i < LENGTH(tags)) { + click = ClkTagBar; + arg.ui = 1 << i; +@@ -715,19 +721,18 @@ drawbar(Monitor *m) + } + + for (c = m->clients; c; c = c->next) { +- occ |= c->tags; ++ occ |= c->tags == TAGMASK ? 0 : c->tags; + if (c->isurgent) + urg |= c->tags; + } + x = 0; + for (i = 0; i < LENGTH(tags); i++) { ++ /* Do not draw vacant tags */ ++ if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + w = TEXTW(tags[i]); + drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); + drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); +- if (occ & 1 << i) +- drw_rect(drw, x + boxs, boxs, boxw, boxw, +- m == selmon && selmon->sel && selmon->sel->tags & 1 << i, +- urg & 1 << i); + x += w; + } + w = TEXTW(m->ltsymbol); + diff --git a/.suckless/dwm/patch/hidevacanttags.diff.orig b/.suckless/dwm/patch/hidevacanttags.diff.orig new file mode 100644 index 0000000..0b02555 --- /dev/null +++ b/.suckless/dwm/patch/hidevacanttags.diff.orig @@ -0,0 +1,49 @@ +:100644 100644 f1d86b2 0000000 M dwm.c + +diff --git a/dwm.c b/dwm.c +index f1d86b2..d41cc14 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -433,9 +433,15 @@ buttonpress(XEvent *e) + } + if (ev->window == selmon->barwin) { + i = x = 0; +- do ++ unsigned int occ = 0; ++ for(c = m->clients; c; c=c->next) ++ occ |= c->tags == TAGMASK ? 0 : c->tags; ++ do { ++ /* Do not reserve space for vacant tags */ ++ if (!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + x += TEXTW(tags[i]); +- while (ev->x >= x && ++i < LENGTH(tags)); ++ } while (ev->x >= x && ++i < LENGTH(tags)); + if (i < LENGTH(tags)) { + click = ClkTagBar; + arg.ui = 1 << i; +@@ -715,19 +721,18 @@ drawbar(Monitor *m) + } + + for (c = m->clients; c; c = c->next) { +- occ |= c->tags; ++ occ |= c->tags == TAGMASK ? 0 : c->tags; + if (c->isurgent) + urg |= c->tags; + } + x = 0; + for (i = 0; i < LENGTH(tags); i++) { ++ /* Do not draw vacant tags */ ++ if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + w = TEXTW(tags[i]); + drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); + drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); +- if (occ & 1 << i) +- drw_rect(drw, x + boxs, boxs, boxw, boxw, +- m == selmon && selmon->sel && selmon->sel->tags & 1 << i, +- urg & 1 << i); + x += w; + } + w = TEXTW(m->ltsymbol); + diff --git a/.suckless/dwm/patch/hidevacanttags.diff.rej b/.suckless/dwm/patch/hidevacanttags.diff.rej new file mode 100644 index 0000000..a6fdf1d --- /dev/null +++ b/.suckless/dwm/patch/hidevacanttags.diff.rej @@ -0,0 +1,44 @@ +--- dwm.c ++++ dwm.c +@@ -433,9 +433,15 @@ buttonpress(XEvent *e) + } + if (ev->window == selmon->barwin) { + i = x = 0; +- do ++ unsigned int occ = 0; ++ for(c = m->clients; c; c=c->next) ++ occ |= c->tags == TAGMASK ? 0 : c->tags; ++ do { ++ /* Do not reserve space for vacant tags */ ++ if (!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + x += TEXTW(tags[i]); +- while (ev->x >= x && ++i < LENGTH(tags)); ++ } while (ev->x >= x && ++i < LENGTH(tags)); + if (i < LENGTH(tags)) { + click = ClkTagBar; + arg.ui = 1 << i; +@@ -715,19 +721,18 @@ drawbar(Monitor *m) + } + + for (c = m->clients; c; c = c->next) { +- occ |= c->tags; ++ occ |= c->tags == TAGMASK ? 0 : c->tags; + if (c->isurgent) + urg |= c->tags; + } + x = 0; + for (i = 0; i < LENGTH(tags); i++) { ++ /* Do not draw vacant tags */ ++ if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + w = TEXTW(tags[i]); + drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); + drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); +- if (occ & 1 << i) +- drw_rect(drw, x + boxs, boxs, boxw, boxw, +- m == selmon && selmon->sel && selmon->sel->tags & 1 << i, +- urg & 1 << i); + x += w; + } + w = TEXTW(m->ltsymbol); diff --git a/.suckless/dwm/patches/hidevacanttags.diff b/.suckless/dwm/patches/hidevacanttags.diff new file mode 100644 index 0000000..42d9c05 --- /dev/null +++ b/.suckless/dwm/patches/hidevacanttags.diff @@ -0,0 +1,48 @@ +:100644 100644 f1d86b2 0000000 M dwm.c + +diff --git a/dwm.c b/dwm.c +index f1d86b2..d41cc14 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -433,9 +433,15 @@ buttonpress(XEvent *e) + } + if (ev->window == selmon->barwin) { + i = x = 0; +- do ++ unsigned int occ = 0; ++ for(c = m->clients; c; c=c->next) ++ occ |= c->tags == TAGMASK ? 0 : c->tags; ++ do { ++ /* Do not reserve space for vacant tags */ ++ if (!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + x += TEXTW(tags[i]); +- while (ev->x >= x && ++i < LENGTH(tags)); ++ } while (ev->x >= x && ++i < LENGTH(tags)); + if (i < LENGTH(tags)) { + click = ClkTagBar; + arg.ui = 1 << i; +@@ -715,19 +721,18 @@ drawbar(Monitor *m) + } + + for (c = m->clients; c; c = c->next) { +- occ |= c->tags; ++ occ |= c->tags == TAGMASK ? 0 : c->tags; + if (c->isurgent) + urg |= c->tags; + } + x = 0; + for (i = 0; i < LENGTH(tags); i++) { ++ /* Do not draw vacant tags */ ++ if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i)) ++ continue; + w = TEXTW(tags[i]); + drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); + drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); +- if (occ & 1 << i) +- drw_rect(drw, x + boxs, boxs, boxw, boxw, +- m == selmon && selmon->sel && selmon->sel->tags & 1 << i, +- urg & 1 << i); + x += w; + } + w = TEXTW(m->ltsymbol); diff --git a/.suckless/slstatus/README b/.suckless/slstatus/README deleted file mode 100644 index 4d592bb..0000000 --- a/.suckless/slstatus/README +++ /dev/null @@ -1,65 +0,0 @@ -slstatus - suckless status -========================== -slstatus is a small tool for providing system status information to other -programs over the EWMH property of the root window (used by dwm(1)) or -standard input/output. It is designed to be as efficient as possible by -only issuing the minimum of system calls required. - - -Features --------- -- Battery percentage/state/time left -- Cat (read file) -- CPU usage -- CPU frequency -- Custom shell commands -- Date and time -- Disk status (free storage, percentage, total storage and used storage) -- Available entropy -- Username/GID/UID -- Hostname -- IP address (IPv4 and IPv6), interface status -- Kernel version -- Keyboard indicators -- Keymap -- Load average -- Network speeds (RX and TX) -- Number of files in a directory (hint: Maildir) -- Memory status (free memory, percentage, total memory and used memory) -- Swap status (free swap, percentage, total swap and used swap) -- Temperature -- Uptime -- Volume percentage -- WiFi signal percentage and ESSID - - -Requirements ------------- -Currently slstatus works on FreeBSD, Linux and OpenBSD. -In order to build slstatus you need the Xlib header files. - -- For volume percentage on Linux the kernel module `snd-mixer-oss` must be - loaded. -- For volume percentage on FreeBSD, `sndio` must be installed. - - -Installation ------------- -Edit config.mk to match your local setup (slstatus is installed into the -/usr/local namespace by default). - -Afterwards enter the following command to build and install slstatus (if -necessary as root): - - make clean install - - -Running slstatus ----------------- -See the man page for details. - - -Configuration -------------- -slstatus can be customized by creating a custom config.h and (re)compiling the -source code. This keeps it fast, secure and simple. diff --git a/.suckless/slstatus/config.h b/.suckless/slstatus/config.h index 05a5273..aa73ce0 100644 --- a/.suckless/slstatus/config.h +++ b/.suckless/slstatus/config.h @@ -65,14 +65,10 @@ static const char unknown_str[] = "n/a"; */ static const struct arg args[] = { /* function format argument */ -// {run_command, " [󰤨 %s] ", "sb-network" }, - {uptime, "[ %s] "}, - {battery_state, " [%s", "BAT1"}, - {battery_perc, " %s%] ", "BAT1"}, {run_command, " [ %s%] ", "pamixer --get-volume"}, - {temp, " [ %s󰔄] ", "/sys/class/thermal/thermal_zone3/temp"}, {ram_used, " [ %s] ", NULL}, - {run_command, " [󰸗 %s] ", "date +'%b %d'"}, + {battery_state, " [%s", "BAT1"}, + {battery_perc, " %s%] ", "BAT1"}, {run_command, " [󱑃 %s] ", "date +%I:%M-%p"}, }; diff --git a/.suckless/slstatus/slstatus b/.suckless/slstatus/slstatus index 7fd9d24037eecd5583eb56abc621ce384049cc48..d51fc5881848aad41c7cf12620fcd6abd911c4a6 100755 GIT binary patch delta 2731 zcmZ{mdu&tJ9mnsvv58}_V~3DSAS4b+978BLBTdXBZ5&Z*tv~~7$;)vbYsnr-#)LbP z6qZqvi7bs2_zl5Yl+vx0+*WI|x_?*|6>f@JT5ZLkQry(6$wpRpln}B_OWDNP_xfHB zcBLK3`keFqJIYOevbB<2zac5>Iqa+23GG@R6{30F7IC9{B zIWHU0Y;=f8)=;N13LR8Qudovte{WSrcS*ZMU&d^$BHtyAi@yB-HH;^&K| zjsEd&B~KN#TBTBt#@epFhZ>FUSM@r&WtCV99kognwOVM>V(9DE_#Rh%f2Pr&Q}rVn z{rD}7Xt*ZkXpBL2FF^&FOZSd6$yN(6uVwPkY>r-Zy>()S5 zvm{z1Ei#4gQQc&cq~K=hoPowxgpb)4vR8tOY!~z^S}{TCjcvm}?Dh;jZQ+YOgYS9< z!cV1ohD|f2^sl09_A)K87nIfB=G-$>dAdmu;!poO(f_5~e-!#a*k9)vu8cX6Dja_+ zR}ijy;OnOj`^p{p35Omt99~i!egX%WU2OeE{hnceq2;XniN>?; zhCZf*ZlaidgYj()=F%;uaVO;!m$P2lUA(fQLUCRipPA?UuuJEcXZ(0wVoA@e5QHK9 zc6_p!rQdvq^M?kmJynfGl+qi;Id#_%f`JJRaR*j35KgSuRg#Fl57C~X{=)Mp;U_#L zx+3|r^XubX-yrJHxd`OaaAT9(>uz%U-rKV_J+B`Qg0N?VY>s^PU8;5zvaQtasA5Yf z;8>M8Czq~gaN2Leq+9C+fiIa1PCK4w%o{wk`W?o8N)N8t&RoIaHDx+!VX?d^m0Jqs zY395c0X21^R;%$sdM!?&vPEfUbp<7^D}9J;EZq{!Fbh0&Ml%KybO9k z=OxZNz*#T=-uQ&`NwDuS{O})k6?A}YS2(W&KL@+PEm6)-f#%OR4}<%`Yv43!&qOw)ABE3qq-)|4j}U7^)YJ49oYdYg7+KaT?Fl3ll$o#OY+1_!z^6vi!@ zYARvfWb&0TP8)m`+1pS7Pb!`^vBhk#q2G^6_!SNM3PekcUiW2*yJPgePu_~JeCx#A ztF)~7+u1+(Bj>x4f!memkW1zzI@l~NOF`k>Yh4P@0IZc?(Cf|1vJb=jL^8P9Y$!xO z2J;1)YA)We6ICY3R%`__3pwcKponUqSE{skOD>fjy|tzd=b@ z#p{Xm^7N z$pXQ$Hm?z<#7P?I*xR>llkA2{!Z{(g_#>&?A& zsj}X%f2}c;rG$sFg2(o6W#ViqO?0m{-g7I<=qWb_@YgH1Kt1j1DL37{%0Z)db&Dy` zV@vz*<&ZA+RHP-ZU{SL6R%A@7m#RtiA{iB^p?7Us=wKqP5Tc{K6=?zW7!Cw4_O`SC E04xmx3;+NC delta 3016 zcmZ{mdr(x@9mmhTvbvzKED&x$kOg6P1;Rsl#SBphFATZ^S#(J9GDQ z&iD5_zu&p%{_dVLvLK8s2z`@&Ly^pT4MiTAc`2tRNa<;0fl6Nhmg4TKQTl!Dk27nT z(yyXJf@F5rDn0iBmGldtKPZ2<(tAYOCRPMFiWT`0X-uq${(qV3mniP_l(VEVFJYdwicarY`rq-picit_3!h} zVnAoTN`q#}_m=82B>Th<>wG>}ts^?!Q0%&Cw)zOeWDb@5M>>@J@>gc0f>4R_Lsx{2 zFH&<92k-Bst08p4_?l(8aLTp9GGSOBjU=g`<@cU&!|v$$b|4RSbieQDa_?W}==FbY zEn~lx>&elx-I(fj^o}Nu%YJL_c;2EQ>*}-}UvTc|$$q1pF;B~Xz3n4%J0E(NyQ$dG zn|&z-8Qh*zs~EfGfNukR(;5@E%InY?0Ea=vp%D%+r{in)97L!d!&(})h6V>e^4zL; zX3-_<(|)E@#_pQ}{iRfjuw@7nwA~hynWi{D>AAJQ`Qa>|CON^MlD#wNh-9qCu-VC2 zm)q32{2}MhcU|9~i=0XHt}P;S4nxrKgM%jy6XhU{xXzL38lNB4Y_KN4&zVT?cF zan0L*CI}I(L-D^6gp0Hxu|Vi^^(LnINH5yp+?$;jD<{5hDjUCVD)HZGb4{mY8^rUQ zNXl3zoOXRZ<4r-_X`wf>!f9z%zwox}Sk@m_h3vZ9*=@1JHI`eLWmjAy%gx!5N-q_~ z72oaoKI8|(KkkGnxv{k|`NbM%V`FmD%hmg8oi!RO+g`1!UYFcdU0aU;cg}Ww73{(A zNWT(zkF%-Tl3kCeUHQ>O9oDYFV|H}C+X!{s`_?PYi?V#T$oEL+K!4~i~_&WIBH0N$G>JsPI!Cuhl z!#dbaG%P-ht(@UJ3rx7o`47Q#@Hn^u905;))8Mr$NMvB_cb_5wn0l4-KJYp?3ii+9 zfxw74#Kre@2+RT_u5n%lwt-Ec&)+#8Sc)(1CuodANSfz71UuV7FcJI@mEv1q2@_WYi%l~~0y7s#(P zL;Ugr<(9?>d#Jkf8PPLAZ$UdbMKh&IVJ5t}3U7b_i&zq1Ohmg0Z~7Y)y(>BTosT$g zm904efrrIBxaRqJCdIWAC6h{Z0DvJ{Ta*;kP+ajL+ zgks9K2+vVNxg`9Qy2}$p%MAUXJjPdk{4|ur&uOkaGwk0eplUgaJozeR=AE$SP-?~M z@DY^H;-|O3(GBav%T!k(FW8ZaWbxb;8mrhW1d)HG6rPU)YgXc=U@?sHq~$_8@hLr9 z85%hc^KQ*tj_1WCyLJBDr2`-Xw?)Bh9oV`7JuK2DN7Ru~H={7I#}~hX12; zE@XP&Czys>Exuo!oN1~x(^os64v@JmGw67`65zOc%C-np+Lq+&KA^~MI?|TuJFFfF LhFw!_dxif2VVE5v diff --git a/.suckless/slstatus/slstatus.o b/.suckless/slstatus/slstatus.o index 926802503038c83595bc4f2aa2abfe7ec4ad186a..7333d700cbeb9f5b2258a3b6b38a702ddee806f7 100644 GIT binary patch delta 983 zcmZ{iO=uHA6vyXn^U;mLc6V(yD^)krK-+`0AO;j-BVti1w$g*Ol(=mp7Ms|7m3WeX ziZ?9}B=urX;-P5EB8VV<5DejYD!nOI^i8rUL!p0|8Q%Qf|Gk;rd2yuF zeZO5QX)~Rluoc?&uD`x*n&Iq-$;{z!mYs|Zb~B2@Bc@$~XCPfG*nJHz0d}L;y^cMe zIVfYra}b`O%ex5$8ye38llDiJv#&<#vC>1TfJK>rFgLxQW3mm%>*p;7PEgv-<`D9{E@ z`9wO7(5xG$1*+0+-FvR;9TceO9YTw|@om)Qe9vi|AzBn@vrzeNwemZGY64xt4f0CP z8F`XO!x&O@OAS2&?|!3r+Y{242Bjy3$Pb{XG!66s=X*~(wTn5JQ$>Q}CABR?^% z>Czu&pWSl@pb?i_-h&Tk0}=U>^9sti8i+`yA5}dno9>#wfJ1u3cbUHeQa|8B{isxO z4O`K?f@S4x^SMtkK_tQfuUlYkQP+DU_|99 eeo0b4&KeQ6f3 delta 1213 zcmZ{j%TE(g6vpR{w9r(r#o~^ zpHJ%ZIY<-bN_NV+8<~>>iQZ@ge%N;Hizj29-Tl$18VhrJi*YsDnbaa-t~Zv5#P6zo zTvzf=wtRa%kETGb#GcQHG)AI~j2bdFHVd%=DxrCU@`Thf^cSQnap=z$l%we+sHcyN zqNmN!=^`+?2tUbP)ePN6DV<0t;M<8kA%==XEqb=-wKo{b*0#d~QrlHR%V=XHhGCA- z5r*1{T67-MofjGEVCYv6?AT*6dZbA#4L~!YvO(!}ex~*`4B9a|53+#KC3sCTZ!tb> z|My{;(1%;lQ9uIrJY%Svx#gwqKL;V<0!#`4&qu;&1PTjBU!Iwa94reGS_C9wlmm|_ zdA=AKttFY?K@}Y}2Mm=iJtY~dkQQ;{Uqc;Y=s{yomz1$DcCgp@j>f?!VmVVnC4)|s z=%);Ql2$d$me7zv7fST&C_61aMrZ|O=MoCTx-)2bYvhuD(G}#m9T0aZmXxVbnS=MP zptXs9b0q9M{B|AZo6K<7t(Y#-=Ld5Y4tU}Y@U3Q;cPo6t3_g<^DsX@wB57DblQ4+S l@GVZ5$BLz@TsPuUu#SV4jID5LfySz!CFLxf-od(~_8&gi9 0: keypad application mode enabled - * * = 2: term.numlock = 1 - * * < 0: keypad application mode disabled - * appcursor value: - * * 0: no value - * * > 0: cursor application mode enabled - * * < 0: cursor application mode disabled - * - * Be careful with the order of the definitions because st searches in - * this table sequentially, so any XK_ANY_MOD must be in the last - * position for a key. - */ - -/* - * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) - * to be mapped below, add them to this array. - */ -static KeySym mappedkeys[] = { -1 }; - -/* - * State bits to ignore when matching key or button events. By default, - * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. - */ -static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; - -/* - * This is the huge key array which defines all compatibility to the Linux - * world. Please decide about changes wisely. - */ -static Key key[] = { - /* keysym mask string appkey appcursor */ - { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, - { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, - { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, - { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, - { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, - { XK_KP_End, ControlMask, "\033[J", -1, 0}, - { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_KP_End, ShiftMask, "\033[K", -1, 0}, - { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, - { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, - { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, - { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, - { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, - { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, - { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, - { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, - { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, - { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, - { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, - { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, - { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, - { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, - { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, - { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, - { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, - { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, - { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, - { XK_Up, ControlMask, "\033[1;5A", 0, 0}, - { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, - { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, - { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, - { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, - { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, - { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, - { XK_Down, ControlMask, "\033[1;5B", 0, 0}, - { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, - { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, - { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, - { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, - { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, - { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, - { XK_Left, ControlMask, "\033[1;5D", 0, 0}, - { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, - { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, - { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, - { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, - { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, - { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, - { XK_Right, ControlMask, "\033[1;5C", 0, 0}, - { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, - { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, - { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, - { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, - { XK_Return, Mod1Mask, "\033\r", 0, 0}, - { XK_Return, XK_ANY_MOD, "\r", 0, 0}, - { XK_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_Insert, ControlMask, "\033[L", -1, 0}, - { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_Delete, ControlMask, "\033[M", -1, 0}, - { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, - { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, - { XK_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_End, ControlMask, "\033[J", -1, 0}, - { XK_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_End, ShiftMask, "\033[K", -1, 0}, - { XK_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, - { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_Next, ControlMask, "\033[6;5~", 0, 0}, - { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, - { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, - { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, - { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, - { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, - { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, - { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, - { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, - { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, - { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, - { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, - { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, - { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, - { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, - { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, - { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, - { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, - { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, - { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, - { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, - { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, - { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, - { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, - { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, - { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, - { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, - { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, - { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, - { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, - { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, - { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, - { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, - { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, - { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, - { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, - { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, - { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, - { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, - { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, - { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, - { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, - { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, - { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, - { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, - { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, - { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, - { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, - { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, - { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, - { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, - { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, - { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, - { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, - { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, - { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, - { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, - { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, - { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, - { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, - { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, - { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, - { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, - { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, - { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, - { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, - { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, - { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, - { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, - { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, - { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, - { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, - { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, - { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, - { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, - { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, - { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, - { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, - { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, - { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, - { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, - { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, - { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, - { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, - { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, - { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, - { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, -}; - -/* - * Selection types' masks. - * Use the same masks as usual. - * Button1Mask is always unset, to make masks match between ButtonPress. - * ButtonRelease and MotionNotify. - * If no match is found, regular selection is used. - */ -static uint selmasks[] = { - [SEL_RECTANGULAR] = Mod1Mask, -}; - -/* - * Printable characters in ASCII, used to estimate the advance width - * of single wide characters. - */ -static char ascii_printable[] = - " !\"#$%&'()*+,-./0123456789:;<=>?" - "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" - "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/.suckless/st/config.h.save.1 b/.suckless/st/config.h.save.1 deleted file mode 100644 index d608c5a..0000000 --- a/.suckless/st/config.h.save.1 +++ /dev/null @@ -1,486 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* - * appearance - * - * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html - */ -static char *font = "Terminus-9:antialias=true:autohint=true"; -static int borderpx = 2; - -/* - * What program is execed by st depends of these precedence rules: - * 1: program passed with -e - * 2: scroll and/or utmp - * 3: SHELL environment variable - * 4: value of shell in /etc/passwd - * 5: value of shell in config.h - */ -static char *shell = "/bin/sh"; -char *utmp = NULL; -/* scroll program: to enable use a string like "scroll" */ -char *scroll = NULL; -char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; - -/* identification sequence returned in DA and DECID */ -char *vtiden = "\033[?6c"; - -/* Kerning / character bounding-box multipliers */ -static float cwscale = 1.0; -static float chscale = 1.0; - -/* - * word delimiter string - * - * More advanced example: L" `'\"()[]{}" - */ -wchar_t *worddelimiters = L" "; - -/* selection timeouts (in milliseconds) */ -static unsigned int doubleclicktimeout = 300; -static unsigned int tripleclicktimeout = 600; - -/* alt screens */ -int allowaltscreen = 1; - -/* allow certain non-interactive (insecure) window operations such as: - setting the clipboard text */ -int allowwindowops = 0; - -/* - * draw latency range in ms - from new content/keypress/etc until drawing. - * within this range, st draws when content stops arriving (idle). mostly it's - * near minlatency, but it waits longer for slow updates to avoid partial draw. - * low minlatency will tear/flicker more, as it can "detect" idle too early. - */ -static double minlatency = 2; -static double maxlatency = 33; - -/* - * blinking timeout (set to 0 to disable blinking) for the terminal blinking - * attribute. - */ -static unsigned int blinktimeout = 800; - -/* - * thickness of underline and bar cursors - */ -static unsigned int cursorthickness = 2; - -/* - * bell volume. It must be a value between -100 and 100. Use 0 for disabling - * it - */ -static int bellvolume = 0; - -/* default TERM value */ -char *termname = "st-256color"; - -/* - * spaces per tab - * - * When you are changing this value, don't forget to adapt the »it« value in - * the st.info and appropriately install the st.info in the environment where - * you use this st version. - * - * it#$tabspaces, - * - * Secondly make sure your kernel is not expanding tabs. When running `stty - * -a` »tab0« should appear. You can tell the terminal to not expand tabs by - * running following command: - * - * stty tabs - */ -unsigned int tabspaces = 8; - -/* bg opacity */ -float alpha = 0.8; - -/* Background opacity */ -float alpha_def; - -/* Terminal colors (16 first used in escape sequence) */ -static const char *colorname[] = { - - /* 8 normal colors */ - "#0a0a0a", /* black */ - "#44516d", /* red */ - "#c95d38", /* green */ - "#de9e68", /* yellow */ - "#8b7675", /* blue */ - "#7e5f8c", /* magenta */ - "#8c82c2", /* cyan */ - "#eff7d0", /* white */ - - /* 8 bright colors */ - "#181818", /* black */ - "#7d87a1", /* red */ - "#e9673c", /* green */ - "#e0b18b", /* yellow */ - "#b9a192", /* blue */ - "#9a7ebd", /* magenta */ - "#bccce2", /* cyan */ - "#ffffff", /* white */ - - [255] = 0, - - /* more colors can be added after 255 to use with DefaultXX */ - "gray90", /* default foreground colour */ - "black", /* default background colour */ -}; - - -/* - * Default colors (colorname index) - * foreground, background, cursor, reverse cursor - */ -unsigned int defaultfg = 256; -unsigned int defaultbg = 257; -unsigned int defaultcs = 256; -static unsigned int defaultrcs = 257; - -/* - * Default shape of cursor - * 2: Block ("█") - * 4: Underline ("_") - * 6: Bar ("|") - * 7: Snowman ("☃") - */ -static unsigned int cursorshape = 6; - -/* - * Default columns and rows numbers - */ - -static unsigned int cols = 80; -static unsigned int rows = 24; - -/* - * Default colour and shape of the mouse cursor - */ -static unsigned int mouseshape = XC_xterm; -static unsigned int mousefg = 7; -static unsigned int mousebg = 0; - -/* - * Color used to display font attributes when fontconfig selected a font which - * doesn't match the ones requested. - */ -static unsigned int defaultattr = 11; - -/* - * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). - * Note that if you want to use ShiftMask with selmasks, set this to an other - * modifier, set to 0 to not use it. - */ -static uint forcemousemod = ShiftMask; - -/* - * Internal mouse shortcuts. - * Beware that overloading Button1 will disable the selection. - */ -static MouseShortcut mshortcuts[] = { - /* mask button function argument release */ - { XK_NO_MOD, Button4, kscrollup, {.i = 1} }, - { XK_NO_MOD, Button5, kscrolldown, {.i = 1} }, - { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, - { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, - { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, - { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, - { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, -}; - -/* Internal keyboard shortcuts. */ -#define MODKEY Mod1Mask -#define TERMMOD (Mod1Mask|ShiftMask) - -static Shortcut shortcuts[] = { - /* mask keysym function argument */ - { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, - { ControlMask, XK_Print, toggleprinter, {.i = 0} }, - { ShiftMask, XK_Print, printscreen, {.i = 0} }, - { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, - { ControlMask, XK_equal, zoom, {.f = +1} }, - { ControlMask, XK_minus, zoom, {.f = -1} }, - { TERMMOD, XK_Home, zoomreset, {.f = 0} }, - { MODKEY, XK_c, clipcopy, {.i = 0} }, - { MODKEY, XK_v, clippaste, {.i = 0} }, - { TERMMOD, XK_Y, selpaste, {.i = 0} }, - { ShiftMask, XK_Insert, selpaste, {.i = 0} }, - { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { ControlMask, XK_k, kscrollup, {.i = 1} }, - { ControlMask, XK_j, kscrolldown, {.i = 1} }, - { MODKEY, XK_a, chgalpha, {.f = -1} }, - { MODKEY, XK_s, chgalpha, {.f = +1} }, - { MODKEY, XK_d, chgalpha, {.f = 0} }, -}; - -/* - * Special keys (change & recompile st.info accordingly) - * - * Mask value: - * * Use XK_ANY_MOD to match the key no matter modifiers state - * * Use XK_NO_MOD to match the key alone (no modifiers) - * appkey value: - * * 0: no value - * * > 0: keypad application mode enabled - * * = 2: term.numlock = 1 - * * < 0: keypad application mode disabled - * appcursor value: - * * 0: no value - * * > 0: cursor application mode enabled - * * < 0: cursor application mode disabled - * - * Be careful with the order of the definitions because st searches in - * this table sequentially, so any XK_ANY_MOD must be in the last - * position for a key. - */ - -/* - * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) - * to be mapped below, add them to this array. - */ -static KeySym mappedkeys[] = { -1 }; - -/* - * State bits to ignore when matching key or button events. By default, - * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. - */ -static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; - -/* - * This is the huge key array which defines all compatibility to the Linux - * world. Please decide about changes wisely. - */ -static Key key[] = { - /* keysym mask string appkey appcursor */ - { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, - { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, - { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, - { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, - { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, - { XK_KP_End, ControlMask, "\033[J", -1, 0}, - { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_KP_End, ShiftMask, "\033[K", -1, 0}, - { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, - { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, - { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, - { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, - { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, - { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, - { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, - { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, - { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, - { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, - { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, - { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, - { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, - { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, - { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, - { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, - { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, - { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, - { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, - { XK_Up, ControlMask, "\033[1;5A", 0, 0}, - { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, - { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, - { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, - { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, - { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, - { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, - { XK_Down, ControlMask, "\033[1;5B", 0, 0}, - { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, - { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, - { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, - { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, - { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, - { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, - { XK_Left, ControlMask, "\033[1;5D", 0, 0}, - { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, - { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, - { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, - { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, - { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, - { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, - { XK_Right, ControlMask, "\033[1;5C", 0, 0}, - { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, - { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, - { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, - { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, - { XK_Return, Mod1Mask, "\033\r", 0, 0}, - { XK_Return, XK_ANY_MOD, "\r", 0, 0}, - { XK_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_Insert, ControlMask, "\033[L", -1, 0}, - { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_Delete, ControlMask, "\033[M", -1, 0}, - { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, - { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, - { XK_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_End, ControlMask, "\033[J", -1, 0}, - { XK_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_End, ShiftMask, "\033[K", -1, 0}, - { XK_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, - { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_Next, ControlMask, "\033[6;5~", 0, 0}, - { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, - { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, - { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, - { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, - { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, - { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, - { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, - { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, - { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, - { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, - { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, - { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, - { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, - { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, - { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, - { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, - { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, - { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, - { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, - { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, - { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, - { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, - { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, - { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, - { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, - { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, - { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, - { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, - { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, - { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, - { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, - { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, - { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, - { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, - { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, - { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, - { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, - { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, - { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, - { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, - { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, - { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, - { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, - { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, - { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, - { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, - { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, - { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, - { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, - { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, - { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, - { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, - { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, - { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, - { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, - { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, - { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, - { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, - { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, - { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, - { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, - { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, - { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, - { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, - { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, - { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, - { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, - { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, - { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, - { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, - { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, - { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, - { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, - { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, - { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, - { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, - { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, - { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, - { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, - { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, - { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, - { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, - { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, - { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, - { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, - { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, -}; - -/* - * Selection types' masks. - * Use the same masks as usual. - * Button1Mask is always unset, to make masks match between ButtonPress. - * ButtonRelease and MotionNotify. - * If no match is found, regular selection is used. - */ -static uint selmasks[] = { - [SEL_RECTANGULAR] = Mod1Mask, -}; - -/* - * Printable characters in ASCII, used to estimate the advance width - * of single wide characters. - */ -static char ascii_printable[] = - " !\"#$%&'()*+,-./0123456789:;<=>?" - "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" - "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/.suckless/st/config.h.save.2 b/.suckless/st/config.h.save.2 deleted file mode 100644 index 4869423..0000000 --- a/.suckless/st/config.h.save.2 +++ /dev/null @@ -1,486 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* - * appearance - * - * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html - */ -static char *font = "Terminus-9:antialias=true:autohint=true"; -static int borderpx = 2; - -/* - * What program is execed by st depends of these precedence rules: - * 1: program passed with -e - * 2: scroll and/or utmp - * 3: SHELL environment variable - * 4: value of shell in /etc/passwd - * 5: value of shell in config.h - */ -static char *shell = "/bin/sh"; -char *utmp = NULL; -/* scroll program: to enable use a string like "scroll" */ -char *scroll = NULL; -char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; - -/* identification sequence returned in DA and DECID */ -char *vtiden = "\033[?6c"; - -/* Kerning / character bounding-box multipliers */ -static float cwscale = 1.0; -static float chscale = 1.0; - -/* - * word delimiter string - * - * More advanced example: L" `'\"()[]{}" - */ -wchar_t *worddelimiters = L" "; - -/* selection timeouts (in milliseconds) */ -static unsigned int doubleclicktimeout = 300; -static unsigned int tripleclicktimeout = 600; - -/* alt screens */ -int allowaltscreen = 1; - -/* allow certain non-interactive (insecure) window operations such as: - setting the clipboard text */ -int allowwindowops = 0; - -/* - * draw latency range in ms - from new content/keypress/etc until drawing. - * within this range, st draws when content stops arriving (idle). mostly it's - * near minlatency, but it waits longer for slow updates to avoid partial draw. - * low minlatency will tear/flicker more, as it can "detect" idle too early. - */ -static double minlatency = 2; -static double maxlatency = 33; - -/* - * blinking timeout (set to 0 to disable blinking) for the terminal blinking - * attribute. - */ -static unsigned int blinktimeout = 800; - -/* - * thickness of underline and bar cursors - */ -static unsigned int cursorthickness = 2; - -/* - * bell volume. It must be a value between -100 and 100. Use 0 for disabling - * it - */ -static int bellvolume = 0; - -/* default TERM value */ -char *termname = "st-256color"; - -/* - * spaces per tab - * - * When you are changing this value, don't forget to adapt the »it« value in - * the st.info and appropriately install the st.info in the environment where - * you use this st version. - * - * it#$tabspaces, - * - * Secondly make sure your kernel is not expanding tabs. When running `stty - * -a` »tab0« should appear. You can tell the terminal to not expand tabs by - * running following command: - * - * stty tabs - */ -unsigned int tabspaces = 8; - -/* bg opacity */ -float alpha = 0.8; - -/* Background opacity */ -float alpha_def; - -/* Terminal colors (16 first used in escape sequence) */ -static const char *colorname[] = { - - /* 8 normal colors */ - "#0a0a0a", /* black */ - "#44516d", /* red */ - "#c95d38", /* green */ - "#de9e68", /* yellow */ - "#8b7675", /* blue */ - "#7e5f8c", /* magenta */ - "#8c82c2", /* cyan */ - "#eff7d0", /* white */ - - /* 8 bright colors */ - "#181818", /* black */ - "#7d87a1", /* red */ - "#e9673c", /* green */ - "#e0b18b", /* yellow */ - "#b9a192", /* blue */ - "#9a7ebd", /* magenta */ - "#bccce2", /* cyan */ - "#ffffff", /* white */ - - [255] = 0, - - /* more colors can be added after 255 to use with DefaultXX */ - "gray90", /* default foreground colour */ - "black", /* default background colour */ -}; - - -/* - * Default colors (colorname index) - * foreground, background, cursor, reverse cursor - */ -unsigned int defaultfg = 256; -unsigned int defaultbg = 257; -unsigned int defaultcs = 256; -static unsigned int defaultrcs = 257; - -/* - * Default shape of cursor - * 2: Block ("█") - * 4: Underline ("_") - * 6: Bar ("|") - * 7: Snowman ("☃") - */ -static unsigned int cursorshape = 6; - -/* - * Default columns and rows numbers - */ - -static unsigned int cols = 80; -static unsigned int rows = 24; - -/* - * Default colour and shape of the mouse cursor - */ -static unsigned int mouseshape = XC_xterm; -static unsigned int mousefg = 7; -static unsigned int mousebg = 0; - -/* - * Color used to display font attributes when fontconfig selected a font which - * doesn't match the ones requested. - */ -static unsigned int defaultattr = 11; - -/* - * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). - * Note that if you want to use ShiftMask with selmasks, set this to an other - * modifier, set to 0 to not use it. - */ -static uint forcemousemod = ShiftMask; - -/* - * Internal mouse shortcuts. - * Beware that overloading Button1 will disable the selection. - */ -static MouseShortcut mshortcuts[] = { - /* mask button function argument release */ - { XK_NO_MOD, Button4, kscrollup, {.i = 1} }, - { XK_NO_MOD, Button5, kscrolldown, {.i = 1} }, - { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, - { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, - { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, - { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, - { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, -}; - -/* Internal keyboard shortcuts. */ -#define MODKEY Mod1Mask -#define TERMMOD (Mod1Mask|ShiftMask) - -static Shortcut shortcuts[] = { - /* mask keysym function argument */ - { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, - { ControlMask, XK_Print, toggleprinter, {.i = 0} }, - { ShiftMask, XK_Print, printscreen, {.i = 0} }, - { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, - { ControlMask, XK_equal, zoom, {.f = +1} }, - { ControlMask, XK_minus, zoom, {.f = -1} }, - { TERMMOD, XK_Home, zoomreset, {.f = 0} }, - { ControlMask|Shift, XK_c, clipcopy, {.i = 0} }, - { MODKEY, XK_v, clippaste, {.i = 0} }, - { TERMMOD, XK_Y, selpaste, {.i = 0} }, - { ShiftMask, XK_Insert, selpaste, {.i = 0} }, - { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { ControlMask, XK_k, kscrollup, {.i = 1} }, - { ControlMask, XK_j, kscrolldown, {.i = 1} }, - { MODKEY, XK_a, chgalpha, {.f = -1} }, - { MODKEY, XK_s, chgalpha, {.f = +1} }, - { MODKEY, XK_d, chgalpha, {.f = 0} }, -}; - -/* - * Special keys (change & recompile st.info accordingly) - * - * Mask value: - * * Use XK_ANY_MOD to match the key no matter modifiers state - * * Use XK_NO_MOD to match the key alone (no modifiers) - * appkey value: - * * 0: no value - * * > 0: keypad application mode enabled - * * = 2: term.numlock = 1 - * * < 0: keypad application mode disabled - * appcursor value: - * * 0: no value - * * > 0: cursor application mode enabled - * * < 0: cursor application mode disabled - * - * Be careful with the order of the definitions because st searches in - * this table sequentially, so any XK_ANY_MOD must be in the last - * position for a key. - */ - -/* - * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) - * to be mapped below, add them to this array. - */ -static KeySym mappedkeys[] = { -1 }; - -/* - * State bits to ignore when matching key or button events. By default, - * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. - */ -static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; - -/* - * This is the huge key array which defines all compatibility to the Linux - * world. Please decide about changes wisely. - */ -static Key key[] = { - /* keysym mask string appkey appcursor */ - { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, - { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, - { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, - { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, - { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, - { XK_KP_End, ControlMask, "\033[J", -1, 0}, - { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_KP_End, ShiftMask, "\033[K", -1, 0}, - { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, - { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, - { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, - { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, - { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, - { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, - { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, - { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, - { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, - { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, - { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, - { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, - { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, - { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, - { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, - { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, - { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, - { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, - { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, - { XK_Up, ControlMask, "\033[1;5A", 0, 0}, - { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, - { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, - { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, - { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, - { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, - { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, - { XK_Down, ControlMask, "\033[1;5B", 0, 0}, - { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, - { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, - { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, - { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, - { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, - { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, - { XK_Left, ControlMask, "\033[1;5D", 0, 0}, - { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, - { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, - { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, - { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, - { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, - { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, - { XK_Right, ControlMask, "\033[1;5C", 0, 0}, - { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, - { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, - { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, - { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, - { XK_Return, Mod1Mask, "\033\r", 0, 0}, - { XK_Return, XK_ANY_MOD, "\r", 0, 0}, - { XK_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_Insert, ControlMask, "\033[L", -1, 0}, - { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_Delete, ControlMask, "\033[M", -1, 0}, - { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, - { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, - { XK_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_End, ControlMask, "\033[J", -1, 0}, - { XK_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_End, ShiftMask, "\033[K", -1, 0}, - { XK_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, - { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_Next, ControlMask, "\033[6;5~", 0, 0}, - { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, - { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, - { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, - { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, - { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, - { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, - { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, - { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, - { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, - { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, - { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, - { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, - { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, - { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, - { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, - { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, - { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, - { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, - { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, - { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, - { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, - { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, - { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, - { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, - { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, - { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, - { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, - { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, - { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, - { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, - { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, - { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, - { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, - { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, - { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, - { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, - { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, - { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, - { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, - { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, - { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, - { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, - { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, - { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, - { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, - { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, - { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, - { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, - { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, - { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, - { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, - { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, - { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, - { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, - { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, - { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, - { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, - { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, - { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, - { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, - { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, - { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, - { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, - { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, - { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, - { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, - { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, - { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, - { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, - { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, - { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, - { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, - { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, - { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, - { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, - { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, - { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, - { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, - { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, - { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, - { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, - { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, - { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, - { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, - { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, - { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, -}; - -/* - * Selection types' masks. - * Use the same masks as usual. - * Button1Mask is always unset, to make masks match between ButtonPress. - * ButtonRelease and MotionNotify. - * If no match is found, regular selection is used. - */ -static uint selmasks[] = { - [SEL_RECTANGULAR] = Mod1Mask, -}; - -/* - * Printable characters in ASCII, used to estimate the advance width - * of single wide characters. - */ -static char ascii_printable[] = - " !\"#$%&'()*+,-./0123456789:;<=>?" - "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" - "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/.suckless/st/config.h.save.3 b/.suckless/st/config.h.save.3 deleted file mode 100644 index e2169a7..0000000 --- a/.suckless/st/config.h.save.3 +++ /dev/null @@ -1,486 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -/* - * appearance - * - * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html - */ -static char *font = "Terminus-9:antialias=true:autohint=true"; -static int borderpx = 2; - -/* - * What program is execed by st depends of these precedence rules: - * 1: program passed with -e - * 2: scroll and/or utmp - * 3: SHELL environment variable - * 4: value of shell in /etc/passwd - * 5: value of shell in config.h - */ -static char *shell = "/bin/sh"; -char *utmp = NULL; -/* scroll program: to enable use a string like "scroll" */ -char *scroll = NULL; -char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; - -/* identification sequence returned in DA and DECID */ -char *vtiden = "\033[?6c"; - -/* Kerning / character bounding-box multipliers */ -static float cwscale = 1.0; -static float chscale = 1.0; - -/* - * word delimiter string - * - * More advanced example: L" `'\"()[]{}" - */ -wchar_t *worddelimiters = L" "; - -/* selection timeouts (in milliseconds) */ -static unsigned int doubleclicktimeout = 300; -static unsigned int tripleclicktimeout = 600; - -/* alt screens */ -int allowaltscreen = 1; - -/* allow certain non-interactive (insecure) window operations such as: - setting the clipboard text */ -int allowwindowops = 0; - -/* - * draw latency range in ms - from new content/keypress/etc until drawing. - * within this range, st draws when content stops arriving (idle). mostly it's - * near minlatency, but it waits longer for slow updates to avoid partial draw. - * low minlatency will tear/flicker more, as it can "detect" idle too early. - */ -static double minlatency = 2; -static double maxlatency = 33; - -/* - * blinking timeout (set to 0 to disable blinking) for the terminal blinking - * attribute. - */ -static unsigned int blinktimeout = 800; - -/* - * thickness of underline and bar cursors - */ -static unsigned int cursorthickness = 2; - -/* - * bell volume. It must be a value between -100 and 100. Use 0 for disabling - * it - */ -static int bellvolume = 0; - -/* default TERM value */ -char *termname = "st-256color"; - -/* - * spaces per tab - * - * When you are changing this value, don't forget to adapt the »it« value in - * the st.info and appropriately install the st.info in the environment where - * you use this st version. - * - * it#$tabspaces, - * - * Secondly make sure your kernel is not expanding tabs. When running `stty - * -a` »tab0« should appear. You can tell the terminal to not expand tabs by - * running following command: - * - * stty tabs - */ -unsigned int tabspaces = 8; - -/* bg opacity */ -float alpha = 0.8; - -/* Background opacity */ -float alpha_def; - -/* Terminal colors (16 first used in escape sequence) */ -static const char *colorname[] = { - - /* 8 normal colors */ - "#333e21", /* black */ - "#757849", /* red */ - "#FF432A", /* green */ - "#c83e72", /* yellow */ - "#448C2C", /* blue */ - "#7d5f5f", /* magenta */ - "#bd8c77", /* cyan */ - "#efdceb", /* white */ - - /* 8 bright colors */ - "#686e50", /* black */ - "#A6AA6A", /* red */ - "#fa6d5a", /* green */ - "#d3658e", /* yellow */ - "#80BD6C", /* blue */ - "#B38887", /* magenta */ - "#f0bfaa", /* cyan */ - "#ffffff", /* white */ - - [255] = 0, - - /* more colors can be added after 255 to use with DefaultXX */ - "gray90", /* default foreground colour */ - "black", /* default background colour */ -}; - - -/* - * Default colors (colorname index) - * foreground, background, cursor, reverse cursor - */ -unsigned int defaultfg = 256; -unsigned int defaultbg = 257; -unsigned int defaultcs = 256; -static unsigned int defaultrcs = 257; - -/* - * Default shape of cursor - * 2: Block ("█") - * 4: Underline ("_") - * 6: Bar ("|") - * 7: Snowman ("☃") - */ -static unsigned int cursorshape = 6; - -/* - * Default columns and rows numbers - */ - -static unsigned int cols = 80; -static unsigned int rows = 24; - -/* - * Default colour and shape of the mouse cursor - */ -static unsigned int mouseshape = XC_xterm; -static unsigned int mousefg = 7; -static unsigned int mousebg = 0; - -/* - * Color used to display font attributes when fontconfig selected a font which - * doesn't match the ones requested. - */ -static unsigned int defaultattr = 11; - -/* - * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). - * Note that if you want to use ShiftMask with selmasks, set this to an other - * modifier, set to 0 to not use it. - */ -static uint forcemousemod = ShiftMask; - -/* - * Internal mouse shortcuts. - * Beware that overloading Button1 will disable the selection. - */ -static MouseShortcut mshortcuts[] = { - /* mask button function argument release */ - { XK_NO_MOD, Button4, kscrollup, {.i = 1} }, - { XK_NO_MOD, Button5, kscrolldown, {.i = 1} }, - { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, - { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, - { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, - { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, - { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, -}; - -/* Internal keyboard shortcuts. */ -#define MODKEY Mod1Mask -#define TERMMOD (Mod1Mask|ShiftMask) - -static Shortcut shortcuts[] = { - /* mask keysym function argument */ - { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, - { ControlMask, XK_Print, toggleprinter, {.i = 0} }, - { ShiftMask, XK_Print, printscreen, {.i = 0} }, - { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, - { ControlMask, XK_equal, zoom, {.f = +1} }, - { ControlMask, XK_minus, zoom, {.f = -1} }, - { TERMMOD, XK_Home, zoomreset, {.f = 0} }, - { MODKEY, XK_c, clipcopy, {.i = 0} }, - { MODKEY, XK_v, clippaste, {.i = 0} }, - { TERMMOD, XK_Y, selpaste, {.i = 0} }, - { ShiftMask, XK_Insert, selpaste, {.i = 0} }, - { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, - { ShiftMask, XK_k, kscrollup, {.i = 1} }, - { ShiftMask, XK_j, kscrolldown, {.i = 1} }, - { MODKEY, XK_a, chgalpha, {.f = -1} }, - { MODKEY, XK_s, chgalpha, {.f = +1} }, - { MODKEY, XK_d, chgalpha, {.f = 0} }, -}; - -/* - * Special keys (change & recompile st.info accordingly) - * - * Mask value: - * * Use XK_ANY_MOD to match the key no matter modifiers state - * * Use XK_NO_MOD to match the key alone (no modifiers) - * appkey value: - * * 0: no value - * * > 0: keypad application mode enabled - * * = 2: term.numlock = 1 - * * < 0: keypad application mode disabled - * appcursor value: - * * 0: no value - * * > 0: cursor application mode enabled - * * < 0: cursor application mode disabled - * - * Be careful with the order of the definitions because st searches in - * this table sequentially, so any XK_ANY_MOD must be in the last - * position for a key. - */ - -/* - * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) - * to be mapped below, add them to this array. - */ -static KeySym mappedkeys[] = { -1 }; - -/* - * State bits to ignore when matching key or button events. By default, - * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. - */ -static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; - -/* - * This is the huge key array which defines all compatibility to the Linux - * world. Please decide about changes wisely. - */ -static Key key[] = { - /* keysym mask string appkey appcursor */ - { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, - { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, - { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, - { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, - { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, - { XK_KP_End, ControlMask, "\033[J", -1, 0}, - { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_KP_End, ShiftMask, "\033[K", -1, 0}, - { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, - { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, - { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, - { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, - { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, - { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, - { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, - { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, - { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, - { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, - { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, - { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, - { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, - { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, - { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, - { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, - { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, - { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, - { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, - { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, - { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, - { XK_Up, ControlMask, "\033[1;5A", 0, 0}, - { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, - { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, - { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, - { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, - { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, - { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, - { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, - { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, - { XK_Down, ControlMask, "\033[1;5B", 0, 0}, - { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, - { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, - { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, - { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, - { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, - { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, - { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, - { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, - { XK_Left, ControlMask, "\033[1;5D", 0, 0}, - { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, - { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, - { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, - { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, - { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, - { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, - { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, - { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, - { XK_Right, ControlMask, "\033[1;5C", 0, 0}, - { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, - { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, - { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, - { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, - { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, - { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, - { XK_Return, Mod1Mask, "\033\r", 0, 0}, - { XK_Return, XK_ANY_MOD, "\r", 0, 0}, - { XK_Insert, ShiftMask, "\033[4l", -1, 0}, - { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, - { XK_Insert, ControlMask, "\033[L", -1, 0}, - { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, - { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, - { XK_Delete, ControlMask, "\033[M", -1, 0}, - { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, - { XK_Delete, ShiftMask, "\033[2K", -1, 0}, - { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, - { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, - { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, - { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, - { XK_Home, ShiftMask, "\033[2J", 0, -1}, - { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, - { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, - { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, - { XK_End, ControlMask, "\033[J", -1, 0}, - { XK_End, ControlMask, "\033[1;5F", +1, 0}, - { XK_End, ShiftMask, "\033[K", -1, 0}, - { XK_End, ShiftMask, "\033[1;2F", +1, 0}, - { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, - { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, - { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, - { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, - { XK_Next, ControlMask, "\033[6;5~", 0, 0}, - { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, - { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, - { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, - { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, - { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, - { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, - { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, - { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, - { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, - { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, - { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, - { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, - { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, - { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, - { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, - { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, - { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, - { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, - { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, - { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, - { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, - { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, - { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, - { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, - { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, - { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, - { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, - { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, - { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, - { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, - { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, - { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, - { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, - { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, - { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, - { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, - { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, - { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, - { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, - { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, - { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, - { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, - { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, - { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, - { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, - { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, - { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, - { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, - { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, - { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, - { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, - { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, - { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, - { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, - { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, - { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, - { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, - { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, - { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, - { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, - { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, - { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, - { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, - { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, - { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, - { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, - { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, - { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, - { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, - { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, - { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, - { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, - { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, - { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, - { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, - { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, - { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, - { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, - { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, - { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, - { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, - { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, - { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, - { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, - { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, - { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, - { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, - { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, -}; - -/* - * Selection types' masks. - * Use the same masks as usual. - * Button1Mask is always unset, to make masks match between ButtonPress. - * ButtonRelease and MotionNotify. - * If no match is found, regular selection is used. - */ -static uint selmasks[] = { - [SEL_RECTANGULAR] = Mod1Mask, -}; - -/* - * Printable characters in ASCII, used to estimate the advance width - * of single wide characters. - */ -static char ascii_printable[] = - " !\"#$%&'()*+,-./0123456789:;<=>?" - "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" - "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/.suckless/st/dmenu/LICENSE b/.suckless/st/dmenu/LICENSE deleted file mode 100644 index 2a64b28..0000000 --- a/.suckless/st/dmenu/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -MIT/X Consortium License - -© 2006-2019 Anselm R Garbe -© 2006-2008 Sander van Dijk -© 2006-2007 Michał Janeczek -© 2007 Kris Maglione -© 2009 Gottox -© 2009 Markus Schnalke -© 2009 Evan Gates -© 2010-2012 Connor Lane Smith -© 2014-2022 Hiltjo Posthuma -© 2015-2019 Quentin Rameau - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -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 OR COPYRIGHT HOLDERS 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. diff --git a/.suckless/st/dmenu/Makefile b/.suckless/st/dmenu/Makefile deleted file mode 100644 index 458c524..0000000 --- a/.suckless/st/dmenu/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# dmenu - dynamic menu -# See LICENSE file for copyright and license details. - -include config.mk - -SRC = drw.c dmenu.c stest.c util.c -OBJ = $(SRC:.c=.o) - -all: dmenu stest - -.c.o: - $(CC) -c $(CFLAGS) $< - -config.h: - cp config.def.h $@ - -$(OBJ): arg.h config.h config.mk drw.h - -dmenu: dmenu.o drw.o util.o - $(CC) -o $@ dmenu.o drw.o util.o $(LDFLAGS) - -stest: stest.o - $(CC) -o $@ stest.o $(LDFLAGS) - -clean: - rm -f dmenu stest $(OBJ) dmenu-$(VERSION).tar.gz - -dist: clean - mkdir -p dmenu-$(VERSION) - cp LICENSE Makefile README arg.h config.def.h config.mk dmenu.1\ - drw.h util.h dmenu_path dmenu_run stest.1 $(SRC)\ - dmenu-$(VERSION) - tar -cf dmenu-$(VERSION).tar dmenu-$(VERSION) - gzip dmenu-$(VERSION).tar - rm -rf dmenu-$(VERSION) - -install: all - mkdir -p $(DESTDIR)$(PREFIX)/bin - cp -f dmenu dmenu_path dmenu_run stest $(DESTDIR)$(PREFIX)/bin - chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu - chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_path - chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_run - chmod 755 $(DESTDIR)$(PREFIX)/bin/stest - mkdir -p $(DESTDIR)$(MANPREFIX)/man1 - sed "s/VERSION/$(VERSION)/g" < dmenu.1 > $(DESTDIR)$(MANPREFIX)/man1/dmenu.1 - sed "s/VERSION/$(VERSION)/g" < stest.1 > $(DESTDIR)$(MANPREFIX)/man1/stest.1 - chmod 644 $(DESTDIR)$(MANPREFIX)/man1/dmenu.1 - chmod 644 $(DESTDIR)$(MANPREFIX)/man1/stest.1 - -uninstall: - rm -f $(DESTDIR)$(PREFIX)/bin/dmenu\ - $(DESTDIR)$(PREFIX)/bin/dmenu_path\ - $(DESTDIR)$(PREFIX)/bin/dmenu_run\ - $(DESTDIR)$(PREFIX)/bin/stest\ - $(DESTDIR)$(MANPREFIX)/man1/dmenu.1\ - $(DESTDIR)$(MANPREFIX)/man1/stest.1 - -.PHONY: all clean dist install uninstall diff --git a/.suckless/st/dmenu/README b/.suckless/st/dmenu/README deleted file mode 100644 index a8fcdfe..0000000 --- a/.suckless/st/dmenu/README +++ /dev/null @@ -1,24 +0,0 @@ -dmenu - dynamic menu -==================== -dmenu is an efficient dynamic menu for X. - - -Requirements ------------- -In order to build dmenu you need the Xlib header files. - - -Installation ------------- -Edit config.mk to match your local setup (dmenu is installed into -the /usr/local namespace by default). - -Afterwards enter the following command to build and install dmenu -(if necessary as root): - - make clean install - - -Running dmenu -------------- -See the man page for details. diff --git a/.suckless/st/dmenu/arg.h b/.suckless/st/dmenu/arg.h deleted file mode 100644 index e94e02b..0000000 --- a/.suckless/st/dmenu/arg.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copy me if you can. - * by 20h - */ - -#ifndef ARG_H__ -#define ARG_H__ - -extern char *argv0; - -/* use main(int argc, char *argv[]) */ -#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ - argv[0] && argv[0][0] == '-'\ - && argv[0][1];\ - argc--, argv++) {\ - char argc_;\ - char **argv_;\ - int brk_;\ - if (argv[0][1] == '-' && argv[0][2] == '\0') {\ - argv++;\ - argc--;\ - break;\ - }\ - for (brk_ = 0, argv[0]++, argv_ = argv;\ - argv[0][0] && !brk_;\ - argv[0]++) {\ - if (argv_ != argv)\ - break;\ - argc_ = argv[0][0];\ - switch (argc_) - -#define ARGEND }\ - } - -#define ARGC() argc_ - -#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\ - ((x), abort(), (char *)0) :\ - (brk_ = 1, (argv[0][1] != '\0')?\ - (&argv[0][1]) :\ - (argc--, argv++, argv[0]))) - -#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\ - (char *)0 :\ - (brk_ = 1, (argv[0][1] != '\0')?\ - (&argv[0][1]) :\ - (argc--, argv++, argv[0]))) - -#endif diff --git a/.suckless/st/dmenu/config.def.h b/.suckless/st/dmenu/config.def.h deleted file mode 100644 index 1edb647..0000000 --- a/.suckless/st/dmenu/config.def.h +++ /dev/null @@ -1,23 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -/* Default settings; can be overriden by command line. */ - -static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ -/* -fn option overrides fonts[0]; default X11 font or font set */ -static const char *fonts[] = { - "monospace:size=10" -}; -static const char *prompt = NULL; /* -p option; prompt to the left of input field */ -static const char *colors[SchemeLast][2] = { - /* fg bg */ - [SchemeNorm] = { "#bbbbbb", "#222222" }, - [SchemeSel] = { "#eeeeee", "#005577" }, - [SchemeOut] = { "#000000", "#00ffff" }, -}; -/* -l option; if nonzero, dmenu uses vertical list with given number of lines */ -static unsigned int lines = 0; - -/* - * Characters not considered part of a word while deleting words - * for example: " /?\"&[]" - */ -static const char worddelimiters[] = " "; diff --git a/.suckless/st/dmenu/config.h b/.suckless/st/dmenu/config.h deleted file mode 100644 index 1edb647..0000000 --- a/.suckless/st/dmenu/config.h +++ /dev/null @@ -1,23 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -/* Default settings; can be overriden by command line. */ - -static int topbar = 1; /* -b option; if 0, dmenu appears at bottom */ -/* -fn option overrides fonts[0]; default X11 font or font set */ -static const char *fonts[] = { - "monospace:size=10" -}; -static const char *prompt = NULL; /* -p option; prompt to the left of input field */ -static const char *colors[SchemeLast][2] = { - /* fg bg */ - [SchemeNorm] = { "#bbbbbb", "#222222" }, - [SchemeSel] = { "#eeeeee", "#005577" }, - [SchemeOut] = { "#000000", "#00ffff" }, -}; -/* -l option; if nonzero, dmenu uses vertical list with given number of lines */ -static unsigned int lines = 0; - -/* - * Characters not considered part of a word while deleting words - * for example: " /?\"&[]" - */ -static const char worddelimiters[] = " "; diff --git a/.suckless/st/dmenu/config.mk b/.suckless/st/dmenu/config.mk deleted file mode 100644 index 137f7c8..0000000 --- a/.suckless/st/dmenu/config.mk +++ /dev/null @@ -1,32 +0,0 @@ -# dmenu version -VERSION = 5.3 - -# paths -PREFIX = /usr/local -MANPREFIX = $(PREFIX)/share/man - -X11INC = /usr/X11R6/include -X11LIB = /usr/X11R6/lib - -# Xinerama, comment if you don't want it -XINERAMALIBS = -lXinerama -XINERAMAFLAGS = -DXINERAMA - -# freetype -FREETYPELIBS = -lfontconfig -lXft -FREETYPEINC = /usr/include/freetype2 -# OpenBSD (uncomment) -#FREETYPEINC = $(X11INC)/freetype2 -#MANPREFIX = ${PREFIX}/man - -# includes and libs -INCS = -I$(X11INC) -I$(FREETYPEINC) -LIBS = -L$(X11LIB) -lX11 $(XINERAMALIBS) $(FREETYPELIBS) - -# flags -CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" $(XINERAMAFLAGS) -CFLAGS = -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS) -LDFLAGS = $(LIBS) - -# compiler and linker -CC = cc diff --git a/.suckless/st/dmenu/dmenu b/.suckless/st/dmenu/dmenu deleted file mode 100755 index 656bab89d05ef91e4c08f9e592538f3236578d6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42928 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 diff --git a/.suckless/st/dmenu/dmenu.1 b/.suckless/st/dmenu/dmenu.1 deleted file mode 100644 index 323f93c..0000000 --- a/.suckless/st/dmenu/dmenu.1 +++ /dev/null @@ -1,194 +0,0 @@ -.TH DMENU 1 dmenu\-VERSION -.SH NAME -dmenu \- dynamic menu -.SH SYNOPSIS -.B dmenu -.RB [ \-bfiv ] -.RB [ \-l -.IR lines ] -.RB [ \-m -.IR monitor ] -.RB [ \-p -.IR prompt ] -.RB [ \-fn -.IR font ] -.RB [ \-nb -.IR color ] -.RB [ \-nf -.IR color ] -.RB [ \-sb -.IR color ] -.RB [ \-sf -.IR color ] -.RB [ \-w -.IR windowid ] -.P -.BR dmenu_run " ..." -.SH DESCRIPTION -.B dmenu -is a dynamic menu for X, which reads a list of newline\-separated items from -stdin. When the user selects an item and presses Return, their choice is printed -to stdout and dmenu terminates. Entering text will narrow the items to those -matching the tokens in the input. -.P -.B dmenu_run -is a script used by -.IR dwm (1) -which lists programs in the user's $PATH and runs the result in their $SHELL. -.SH OPTIONS -.TP -.B \-b -dmenu appears at the bottom of the screen. -.TP -.B \-f -dmenu grabs the keyboard before reading stdin if not reading from a tty. This -is faster, but will lock up X until stdin reaches end\-of\-file. -.TP -.B \-i -dmenu matches menu items case insensitively. -.TP -.BI \-l " lines" -dmenu lists items vertically, with the given number of lines. -.TP -.BI \-m " monitor" -dmenu is displayed on the monitor number supplied. Monitor numbers are starting -from 0. -.TP -.BI \-p " prompt" -defines the prompt to be displayed to the left of the input field. -.TP -.BI \-fn " font" -defines the font or font set used. -.TP -.BI \-nb " color" -defines the normal background color. -.IR #RGB , -.IR #RRGGBB , -and X color names are supported. -.TP -.BI \-nf " color" -defines the normal foreground color. -.TP -.BI \-sb " color" -defines the selected background color. -.TP -.BI \-sf " color" -defines the selected foreground color. -.TP -.B \-v -prints version information to stdout, then exits. -.TP -.BI \-w " windowid" -embed into windowid. -.SH USAGE -dmenu is completely controlled by the keyboard. Items are selected using the -arrow keys, page up, page down, home, and end. -.TP -.B Tab -Copy the selected item to the input field. -.TP -.B Return -Confirm selection. Prints the selected item to stdout and exits, returning -success. -.TP -.B Ctrl-Return -Confirm selection. Prints the selected item to stdout and continues. -.TP -.B Shift\-Return -Confirm input. Prints the input text to stdout and exits, returning success. -.TP -.B Escape -Exit without selecting an item, returning failure. -.TP -.B Ctrl-Left -Move cursor to the start of the current word -.TP -.B Ctrl-Right -Move cursor to the end of the current word -.TP -.B C\-a -Home -.TP -.B C\-b -Left -.TP -.B C\-c -Escape -.TP -.B C\-d -Delete -.TP -.B C\-e -End -.TP -.B C\-f -Right -.TP -.B C\-g -Escape -.TP -.B C\-h -Backspace -.TP -.B C\-i -Tab -.TP -.B C\-j -Return -.TP -.B C\-J -Shift-Return -.TP -.B C\-k -Delete line right -.TP -.B C\-m -Return -.TP -.B C\-M -Shift-Return -.TP -.B C\-n -Down -.TP -.B C\-p -Up -.TP -.B C\-u -Delete line left -.TP -.B C\-w -Delete word left -.TP -.B C\-y -Paste from primary X selection -.TP -.B C\-Y -Paste from X clipboard -.TP -.B M\-b -Move cursor to the start of the current word -.TP -.B M\-f -Move cursor to the end of the current word -.TP -.B M\-g -Home -.TP -.B M\-G -End -.TP -.B M\-h -Up -.TP -.B M\-j -Page down -.TP -.B M\-k -Page up -.TP -.B M\-l -Down -.SH SEE ALSO -.IR dwm (1), -.IR stest (1) diff --git a/.suckless/st/dmenu/dmenu.c b/.suckless/st/dmenu/dmenu.c deleted file mode 100644 index fd49549..0000000 --- a/.suckless/st/dmenu/dmenu.c +++ /dev/null @@ -1,795 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#ifdef XINERAMA -#include -#endif -#include - -#include "drw.h" -#include "util.h" - -/* macros */ -#define INTERSECT(x,y,w,h,r) (MAX(0, MIN((x)+(w),(r).x_org+(r).width) - MAX((x),(r).x_org)) \ - * MAX(0, MIN((y)+(h),(r).y_org+(r).height) - MAX((y),(r).y_org))) -#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) - -/* enums */ -enum { SchemeNorm, SchemeSel, SchemeOut, SchemeLast }; /* color schemes */ - -struct item { - char *text; - struct item *left, *right; - int out; -}; - -static char text[BUFSIZ] = ""; -static char *embed; -static int bh, mw, mh; -static int inputw = 0, promptw; -static int lrpad; /* sum of left and right padding */ -static size_t cursor; -static struct item *items = NULL; -static struct item *matches, *matchend; -static struct item *prev, *curr, *next, *sel; -static int mon = -1, screen; - -static Atom clip, utf8; -static Display *dpy; -static Window root, parentwin, win; -static XIC xic; - -static Drw *drw; -static Clr *scheme[SchemeLast]; - -#include "config.h" - -static int (*fstrncmp)(const char *, const char *, size_t) = strncmp; -static char *(*fstrstr)(const char *, const char *) = strstr; - -static unsigned int -textw_clamp(const char *str, unsigned int n) -{ - unsigned int w = drw_fontset_getwidth_clamp(drw, str, n) + lrpad; - return MIN(w, n); -} - -static void -appenditem(struct item *item, struct item **list, struct item **last) -{ - if (*last) - (*last)->right = item; - else - *list = item; - - item->left = *last; - item->right = NULL; - *last = item; -} - -static void -calcoffsets(void) -{ - int i, n; - - if (lines > 0) - n = lines * bh; - else - n = mw - (promptw + inputw + TEXTW("<") + TEXTW(">")); - /* calculate which items will begin the next page and previous page */ - for (i = 0, next = curr; next; next = next->right) - if ((i += (lines > 0) ? bh : textw_clamp(next->text, n)) > n) - break; - for (i = 0, prev = curr; prev && prev->left; prev = prev->left) - if ((i += (lines > 0) ? bh : textw_clamp(prev->left->text, n)) > n) - break; -} - -static void -cleanup(void) -{ - size_t i; - - XUngrabKeyboard(dpy, CurrentTime); - for (i = 0; i < SchemeLast; i++) - free(scheme[i]); - for (i = 0; items && items[i].text; ++i) - free(items[i].text); - free(items); - drw_free(drw); - XSync(dpy, False); - XCloseDisplay(dpy); -} - -static char * -cistrstr(const char *h, const char *n) -{ - size_t i; - - if (!n[0]) - return (char *)h; - - for (; *h; ++h) { - for (i = 0; n[i] && tolower((unsigned char)n[i]) == - tolower((unsigned char)h[i]); ++i) - ; - if (n[i] == '\0') - return (char *)h; - } - return NULL; -} - -static int -drawitem(struct item *item, int x, int y, int w) -{ - if (item == sel) - drw_setscheme(drw, scheme[SchemeSel]); - else if (item->out) - drw_setscheme(drw, scheme[SchemeOut]); - else - drw_setscheme(drw, scheme[SchemeNorm]); - - return drw_text(drw, x, y, w, bh, lrpad / 2, item->text, 0); -} - -static void -drawmenu(void) -{ - unsigned int curpos; - struct item *item; - int x = 0, y = 0, w; - - drw_setscheme(drw, scheme[SchemeNorm]); - drw_rect(drw, 0, 0, mw, mh, 1, 1); - - if (prompt && *prompt) { - drw_setscheme(drw, scheme[SchemeSel]); - x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0); - } - /* draw input field */ - w = (lines > 0 || !matches) ? mw - x : inputw; - drw_setscheme(drw, scheme[SchemeNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0); - - curpos = TEXTW(text) - TEXTW(&text[cursor]); - if ((curpos += lrpad / 2 - 1) < w) { - drw_setscheme(drw, scheme[SchemeNorm]); - drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0); - } - - if (lines > 0) { - /* draw vertical list */ - for (item = curr; item != next; item = item->right) - drawitem(item, x, y += bh, mw - x); - } else if (matches) { - /* draw horizontal list */ - x += inputw; - w = TEXTW("<"); - if (curr->left) { - drw_setscheme(drw, scheme[SchemeNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, "<", 0); - } - x += w; - for (item = curr; item != next; item = item->right) - x = drawitem(item, x, 0, textw_clamp(item->text, mw - x - TEXTW(">"))); - if (next) { - w = TEXTW(">"); - drw_setscheme(drw, scheme[SchemeNorm]); - drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0); - } - } - drw_map(drw, win, 0, 0, mw, mh); -} - -static void -grabfocus(void) -{ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 10000000 }; - Window focuswin; - int i, revertwin; - - for (i = 0; i < 100; ++i) { - XGetInputFocus(dpy, &focuswin, &revertwin); - if (focuswin == win) - return; - XSetInputFocus(dpy, win, RevertToParent, CurrentTime); - nanosleep(&ts, NULL); - } - die("cannot grab focus"); -} - -static void -grabkeyboard(void) -{ - struct timespec ts = { .tv_sec = 0, .tv_nsec = 1000000 }; - int i; - - if (embed) - return; - /* try to grab keyboard, we may have to wait for another process to ungrab */ - for (i = 0; i < 1000; i++) { - if (XGrabKeyboard(dpy, DefaultRootWindow(dpy), True, GrabModeAsync, - GrabModeAsync, CurrentTime) == GrabSuccess) - return; - nanosleep(&ts, NULL); - } - die("cannot grab keyboard"); -} - -static void -match(void) -{ - static char **tokv = NULL; - static int tokn = 0; - - char buf[sizeof text], *s; - int i, tokc = 0; - size_t len, textsize; - struct item *item, *lprefix, *lsubstr, *prefixend, *substrend; - - strcpy(buf, text); - /* separate input text into tokens to be matched individually */ - for (s = strtok(buf, " "); s; tokv[tokc - 1] = s, s = strtok(NULL, " ")) - if (++tokc > tokn && !(tokv = realloc(tokv, ++tokn * sizeof *tokv))) - die("cannot realloc %zu bytes:", tokn * sizeof *tokv); - len = tokc ? strlen(tokv[0]) : 0; - - matches = lprefix = lsubstr = matchend = prefixend = substrend = NULL; - textsize = strlen(text) + 1; - for (item = items; item && item->text; item++) { - for (i = 0; i < tokc; i++) - if (!fstrstr(item->text, tokv[i])) - break; - if (i != tokc) /* not all tokens match */ - continue; - /* exact matches go first, then prefixes, then substrings */ - if (!tokc || !fstrncmp(text, item->text, textsize)) - appenditem(item, &matches, &matchend); - else if (!fstrncmp(tokv[0], item->text, len)) - appenditem(item, &lprefix, &prefixend); - else - appenditem(item, &lsubstr, &substrend); - } - if (lprefix) { - if (matches) { - matchend->right = lprefix; - lprefix->left = matchend; - } else - matches = lprefix; - matchend = prefixend; - } - if (lsubstr) { - if (matches) { - matchend->right = lsubstr; - lsubstr->left = matchend; - } else - matches = lsubstr; - matchend = substrend; - } - curr = sel = matches; - calcoffsets(); -} - -static void -insert(const char *str, ssize_t n) -{ - if (strlen(text) + n > sizeof text - 1) - return; - /* move existing text out of the way, insert new text, and update cursor */ - memmove(&text[cursor + n], &text[cursor], sizeof text - cursor - MAX(n, 0)); - if (n > 0) - memcpy(&text[cursor], str, n); - cursor += n; - match(); -} - -static size_t -nextrune(int inc) -{ - ssize_t n; - - /* return location of next utf8 rune in the given direction (+1 or -1) */ - for (n = cursor + inc; n + inc >= 0 && (text[n] & 0xc0) == 0x80; n += inc) - ; - return n; -} - -static void -movewordedge(int dir) -{ - if (dir < 0) { /* move cursor to the start of the word*/ - while (cursor > 0 && strchr(worddelimiters, text[nextrune(-1)])) - cursor = nextrune(-1); - while (cursor > 0 && !strchr(worddelimiters, text[nextrune(-1)])) - cursor = nextrune(-1); - } else { /* move cursor to the end of the word */ - while (text[cursor] && strchr(worddelimiters, text[cursor])) - cursor = nextrune(+1); - while (text[cursor] && !strchr(worddelimiters, text[cursor])) - cursor = nextrune(+1); - } -} - -static void -keypress(XKeyEvent *ev) -{ - char buf[64]; - int len; - KeySym ksym = NoSymbol; - Status status; - - len = XmbLookupString(xic, ev, buf, sizeof buf, &ksym, &status); - switch (status) { - default: /* XLookupNone, XBufferOverflow */ - return; - case XLookupChars: /* composed string from input method */ - goto insert; - case XLookupKeySym: - case XLookupBoth: /* a KeySym and a string are returned: use keysym */ - break; - } - - if (ev->state & ControlMask) { - switch(ksym) { - case XK_a: ksym = XK_Home; break; - case XK_b: ksym = XK_Left; break; - case XK_c: ksym = XK_Escape; break; - case XK_d: ksym = XK_Delete; break; - case XK_e: ksym = XK_End; break; - case XK_f: ksym = XK_Right; break; - case XK_g: ksym = XK_Escape; break; - case XK_h: ksym = XK_BackSpace; break; - case XK_i: ksym = XK_Tab; break; - case XK_j: /* fallthrough */ - case XK_J: /* fallthrough */ - case XK_m: /* fallthrough */ - case XK_M: ksym = XK_Return; ev->state &= ~ControlMask; break; - case XK_n: ksym = XK_Down; break; - case XK_p: ksym = XK_Up; break; - - case XK_k: /* delete right */ - text[cursor] = '\0'; - match(); - break; - case XK_u: /* delete left */ - insert(NULL, 0 - cursor); - break; - case XK_w: /* delete word */ - while (cursor > 0 && strchr(worddelimiters, text[nextrune(-1)])) - insert(NULL, nextrune(-1) - cursor); - while (cursor > 0 && !strchr(worddelimiters, text[nextrune(-1)])) - insert(NULL, nextrune(-1) - cursor); - break; - case XK_y: /* paste selection */ - case XK_Y: - XConvertSelection(dpy, (ev->state & ShiftMask) ? clip : XA_PRIMARY, - utf8, utf8, win, CurrentTime); - return; - case XK_Left: - case XK_KP_Left: - movewordedge(-1); - goto draw; - case XK_Right: - case XK_KP_Right: - movewordedge(+1); - goto draw; - case XK_Return: - case XK_KP_Enter: - break; - case XK_bracketleft: - cleanup(); - exit(1); - default: - return; - } - } else if (ev->state & Mod1Mask) { - switch(ksym) { - case XK_b: - movewordedge(-1); - goto draw; - case XK_f: - movewordedge(+1); - goto draw; - case XK_g: ksym = XK_Home; break; - case XK_G: ksym = XK_End; break; - case XK_h: ksym = XK_Up; break; - case XK_j: ksym = XK_Next; break; - case XK_k: ksym = XK_Prior; break; - case XK_l: ksym = XK_Down; break; - default: - return; - } - } - - switch(ksym) { - default: -insert: - if (!iscntrl((unsigned char)*buf)) - insert(buf, len); - break; - case XK_Delete: - case XK_KP_Delete: - if (text[cursor] == '\0') - return; - cursor = nextrune(+1); - /* fallthrough */ - case XK_BackSpace: - if (cursor == 0) - return; - insert(NULL, nextrune(-1) - cursor); - break; - case XK_End: - case XK_KP_End: - if (text[cursor] != '\0') { - cursor = strlen(text); - break; - } - if (next) { - /* jump to end of list and position items in reverse */ - curr = matchend; - calcoffsets(); - curr = prev; - calcoffsets(); - while (next && (curr = curr->right)) - calcoffsets(); - } - sel = matchend; - break; - case XK_Escape: - cleanup(); - exit(1); - case XK_Home: - case XK_KP_Home: - if (sel == matches) { - cursor = 0; - break; - } - sel = curr = matches; - calcoffsets(); - break; - case XK_Left: - case XK_KP_Left: - if (cursor > 0 && (!sel || !sel->left || lines > 0)) { - cursor = nextrune(-1); - break; - } - if (lines > 0) - return; - /* fallthrough */ - case XK_Up: - case XK_KP_Up: - if (sel && sel->left && (sel = sel->left)->right == curr) { - curr = prev; - calcoffsets(); - } - break; - case XK_Next: - case XK_KP_Next: - if (!next) - return; - sel = curr = next; - calcoffsets(); - break; - case XK_Prior: - case XK_KP_Prior: - if (!prev) - return; - sel = curr = prev; - calcoffsets(); - break; - case XK_Return: - case XK_KP_Enter: - puts((sel && !(ev->state & ShiftMask)) ? sel->text : text); - if (!(ev->state & ControlMask)) { - cleanup(); - exit(0); - } - if (sel) - sel->out = 1; - break; - case XK_Right: - case XK_KP_Right: - if (text[cursor] != '\0') { - cursor = nextrune(+1); - break; - } - if (lines > 0) - return; - /* fallthrough */ - case XK_Down: - case XK_KP_Down: - if (sel && sel->right && (sel = sel->right) == next) { - curr = next; - calcoffsets(); - } - break; - case XK_Tab: - if (!sel) - return; - cursor = strnlen(sel->text, sizeof text - 1); - memcpy(text, sel->text, cursor); - text[cursor] = '\0'; - match(); - break; - } - -draw: - drawmenu(); -} - -static void -paste(void) -{ - char *p, *q; - int di; - unsigned long dl; - Atom da; - - /* we have been given the current selection, now insert it into input */ - if (XGetWindowProperty(dpy, win, utf8, 0, (sizeof text / 4) + 1, False, - utf8, &da, &di, &dl, &dl, (unsigned char **)&p) - == Success && p) { - insert(p, (q = strchr(p, '\n')) ? q - p : (ssize_t)strlen(p)); - XFree(p); - } - drawmenu(); -} - -static void -readstdin(void) -{ - char *line = NULL; - size_t i, itemsiz = 0, linesiz = 0; - ssize_t len; - - /* read each line from stdin and add it to the item list */ - for (i = 0; (len = getline(&line, &linesiz, stdin)) != -1; i++) { - if (i + 1 >= itemsiz) { - itemsiz += 256; - if (!(items = realloc(items, itemsiz * sizeof(*items)))) - die("cannot realloc %zu bytes:", itemsiz * sizeof(*items)); - } - if (line[len - 1] == '\n') - line[len - 1] = '\0'; - if (!(items[i].text = strdup(line))) - die("strdup:"); - - items[i].out = 0; - } - free(line); - if (items) - items[i].text = NULL; - lines = MIN(lines, i); -} - -static void -run(void) -{ - XEvent ev; - - while (!XNextEvent(dpy, &ev)) { - if (XFilterEvent(&ev, win)) - continue; - switch(ev.type) { - case DestroyNotify: - if (ev.xdestroywindow.window != win) - break; - cleanup(); - exit(1); - case Expose: - if (ev.xexpose.count == 0) - drw_map(drw, win, 0, 0, mw, mh); - break; - case FocusIn: - /* regrab focus from parent window */ - if (ev.xfocus.window != win) - grabfocus(); - break; - case KeyPress: - keypress(&ev.xkey); - break; - case SelectionNotify: - if (ev.xselection.property == utf8) - paste(); - break; - case VisibilityNotify: - if (ev.xvisibility.state != VisibilityUnobscured) - XRaiseWindow(dpy, win); - break; - } - } -} - -static void -setup(void) -{ - int x, y, i, j; - unsigned int du; - XSetWindowAttributes swa; - XIM xim; - Window w, dw, *dws; - XWindowAttributes wa; - XClassHint ch = {"dmenu", "dmenu"}; -#ifdef XINERAMA - XineramaScreenInfo *info; - Window pw; - int a, di, n, area = 0; -#endif - /* init appearance */ - for (j = 0; j < SchemeLast; j++) - scheme[j] = drw_scm_create(drw, colors[j], 2); - - clip = XInternAtom(dpy, "CLIPBOARD", False); - utf8 = XInternAtom(dpy, "UTF8_STRING", False); - - /* calculate menu geometry */ - bh = drw->fonts->h + 2; - lines = MAX(lines, 0); - mh = (lines + 1) * bh; -#ifdef XINERAMA - i = 0; - if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) { - XGetInputFocus(dpy, &w, &di); - if (mon >= 0 && mon < n) - i = mon; - else if (w != root && w != PointerRoot && w != None) { - /* find top-level window containing current input focus */ - do { - if (XQueryTree(dpy, (pw = w), &dw, &w, &dws, &du) && dws) - XFree(dws); - } while (w != root && w != pw); - /* find xinerama screen with which the window intersects most */ - if (XGetWindowAttributes(dpy, pw, &wa)) - for (j = 0; j < n; j++) - if ((a = INTERSECT(wa.x, wa.y, wa.width, wa.height, info[j])) > area) { - area = a; - i = j; - } - } - /* no focused window is on screen, so use pointer location instead */ - if (mon < 0 && !area && XQueryPointer(dpy, root, &dw, &dw, &x, &y, &di, &di, &du)) - for (i = 0; i < n; i++) - if (INTERSECT(x, y, 1, 1, info[i]) != 0) - break; - - x = info[i].x_org; - y = info[i].y_org + (topbar ? 0 : info[i].height - mh); - mw = info[i].width; - XFree(info); - } else -#endif - { - if (!XGetWindowAttributes(dpy, parentwin, &wa)) - die("could not get embedding window attributes: 0x%lx", - parentwin); - x = 0; - y = topbar ? 0 : wa.height - mh; - mw = wa.width; - } - promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0; - inputw = mw / 3; /* input width: ~33% of monitor width */ - match(); - - /* create menu window */ - swa.override_redirect = True; - swa.background_pixel = scheme[SchemeNorm][ColBg].pixel; - swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask; - win = XCreateWindow(dpy, root, x, y, mw, mh, 0, - CopyFromParent, CopyFromParent, CopyFromParent, - CWOverrideRedirect | CWBackPixel | CWEventMask, &swa); - XSetClassHint(dpy, win, &ch); - - /* input methods */ - if ((xim = XOpenIM(dpy, NULL, NULL, NULL)) == NULL) - die("XOpenIM failed: could not open input device"); - - xic = XCreateIC(xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, - XNClientWindow, win, XNFocusWindow, win, NULL); - - XMapRaised(dpy, win); - if (embed) { - XReparentWindow(dpy, win, parentwin, x, y); - XSelectInput(dpy, parentwin, FocusChangeMask | SubstructureNotifyMask); - if (XQueryTree(dpy, parentwin, &dw, &w, &dws, &du) && dws) { - for (i = 0; i < du && dws[i] != win; ++i) - XSelectInput(dpy, dws[i], FocusChangeMask); - XFree(dws); - } - grabfocus(); - } - drw_resize(drw, mw, mh); - drawmenu(); -} - -static void -usage(void) -{ - die("usage: dmenu [-bfiv] [-l lines] [-p prompt] [-fn font] [-m monitor]\n" - " [-nb color] [-nf color] [-sb color] [-sf color] [-w windowid]"); -} - -int -main(int argc, char *argv[]) -{ - XWindowAttributes wa; - int i, fast = 0; - - for (i = 1; i < argc; i++) - /* these options take no arguments */ - if (!strcmp(argv[i], "-v")) { /* prints version information */ - puts("dmenu-"VERSION); - exit(0); - } else if (!strcmp(argv[i], "-b")) /* appears at the bottom of the screen */ - topbar = 0; - else if (!strcmp(argv[i], "-f")) /* grabs keyboard before reading stdin */ - fast = 1; - else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */ - fstrncmp = strncasecmp; - fstrstr = cistrstr; - } else if (i + 1 == argc) - usage(); - /* these options take one argument */ - else if (!strcmp(argv[i], "-l")) /* number of lines in vertical list */ - lines = atoi(argv[++i]); - else if (!strcmp(argv[i], "-m")) - mon = atoi(argv[++i]); - else if (!strcmp(argv[i], "-p")) /* adds prompt to left of input field */ - prompt = argv[++i]; - else if (!strcmp(argv[i], "-fn")) /* font or font set */ - fonts[0] = argv[++i]; - else if (!strcmp(argv[i], "-nb")) /* normal background color */ - colors[SchemeNorm][ColBg] = argv[++i]; - else if (!strcmp(argv[i], "-nf")) /* normal foreground color */ - colors[SchemeNorm][ColFg] = argv[++i]; - else if (!strcmp(argv[i], "-sb")) /* selected background color */ - colors[SchemeSel][ColBg] = argv[++i]; - else if (!strcmp(argv[i], "-sf")) /* selected foreground color */ - colors[SchemeSel][ColFg] = argv[++i]; - else if (!strcmp(argv[i], "-w")) /* embedding window id */ - embed = argv[++i]; - else - usage(); - - if (!setlocale(LC_CTYPE, "") || !XSupportsLocale()) - fputs("warning: no locale support\n", stderr); - if (!(dpy = XOpenDisplay(NULL))) - die("cannot open display"); - screen = DefaultScreen(dpy); - root = RootWindow(dpy, screen); - if (!embed || !(parentwin = strtol(embed, NULL, 0))) - parentwin = root; - if (!XGetWindowAttributes(dpy, parentwin, &wa)) - die("could not get embedding window attributes: 0x%lx", - parentwin); - drw = drw_create(dpy, screen, root, wa.width, wa.height); - if (!drw_fontset_create(drw, fonts, LENGTH(fonts))) - die("no fonts could be loaded."); - lrpad = drw->fonts->h; - -#ifdef __OpenBSD__ - if (pledge("stdio rpath", NULL) == -1) - die("pledge"); -#endif - - if (fast && !isatty(0)) { - grabkeyboard(); - readstdin(); - } else { - readstdin(); - grabkeyboard(); - } - setup(); - run(); - - return 1; /* unreachable */ -} diff --git a/.suckless/st/dmenu/dmenu.o b/.suckless/st/dmenu/dmenu.o deleted file mode 100644 index e4915920c257b8588ba36d0e1a7d63156f322041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31968 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 diff --git a/.suckless/st/dmenu/dmenu_path b/.suckless/st/dmenu/dmenu_path deleted file mode 100755 index 3a7cda7..0000000 --- a/.suckless/st/dmenu/dmenu_path +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}" -cache="$cachedir/dmenu_run" - -[ ! -e "$cachedir" ] && mkdir -p "$cachedir" - -IFS=: -if stest -dqr -n "$cache" $PATH; then - stest -flx $PATH | sort -u | tee "$cache" -else - cat "$cache" -fi diff --git a/.suckless/st/dmenu/dmenu_run b/.suckless/st/dmenu/dmenu_run deleted file mode 100755 index 834ede5..0000000 --- a/.suckless/st/dmenu/dmenu_run +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -dmenu_path | dmenu "$@" | ${SHELL:-"/bin/sh"} & diff --git a/.suckless/st/dmenu/drw.c b/.suckless/st/dmenu/drw.c deleted file mode 100644 index c41e6af..0000000 --- a/.suckless/st/dmenu/drw.c +++ /dev/null @@ -1,448 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include -#include -#include -#include -#include - -#include "drw.h" -#include "util.h" - -#define UTF_INVALID 0xFFFD - -static int -utf8decode(const char *s_in, long *u, int *err) -{ - static const unsigned char lens[] = { - /* 0XXXX */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - /* 10XXX */ 0, 0, 0, 0, 0, 0, 0, 0, /* invalid */ - /* 110XX */ 2, 2, 2, 2, - /* 1110X */ 3, 3, - /* 11110 */ 4, - /* 11111 */ 0, /* invalid */ - }; - static const unsigned char leading_mask[] = { 0x7F, 0x1F, 0x0F, 0x07 }; - static const unsigned int overlong[] = { 0x0, 0x80, 0x0800, 0x10000 }; - - const unsigned char *s = (const unsigned char *)s_in; - int len = lens[*s >> 3]; - *u = UTF_INVALID; - *err = 1; - if (len == 0) - return 1; - - long cp = s[0] & leading_mask[len - 1]; - for (int i = 1; i < len; ++i) { - if (s[i] == '\0' || (s[i] & 0xC0) != 0x80) - return i; - cp = (cp << 6) | (s[i] & 0x3F); - } - /* out of range, surrogate, overlong encoding */ - if (cp > 0x10FFFF || (cp >> 11) == 0x1B || cp < overlong[len - 1]) - return len; - - *err = 0; - *u = cp; - return len; -} - -Drw * -drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h) -{ - Drw *drw = ecalloc(1, sizeof(Drw)); - - drw->dpy = dpy; - drw->screen = screen; - drw->root = root; - drw->w = w; - drw->h = h; - drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen)); - drw->gc = XCreateGC(dpy, root, 0, NULL); - XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter); - - return drw; -} - -void -drw_resize(Drw *drw, unsigned int w, unsigned int h) -{ - if (!drw) - return; - - drw->w = w; - drw->h = h; - if (drw->drawable) - XFreePixmap(drw->dpy, drw->drawable); - drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen)); -} - -void -drw_free(Drw *drw) -{ - XFreePixmap(drw->dpy, drw->drawable); - XFreeGC(drw->dpy, drw->gc); - drw_fontset_free(drw->fonts); - free(drw); -} - -/* This function is an implementation detail. Library users should use - * drw_fontset_create instead. - */ -static Fnt * -xfont_create(Drw *drw, const char *fontname, FcPattern *fontpattern) -{ - Fnt *font; - XftFont *xfont = NULL; - FcPattern *pattern = NULL; - - if (fontname) { - /* Using the pattern found at font->xfont->pattern does not yield the - * same substitution results as using the pattern returned by - * FcNameParse; using the latter results in the desired fallback - * behaviour whereas the former just results in missing-character - * rectangles being drawn, at least with some fonts. */ - if (!(xfont = XftFontOpenName(drw->dpy, drw->screen, fontname))) { - fprintf(stderr, "error, cannot load font from name: '%s'\n", fontname); - return NULL; - } - if (!(pattern = FcNameParse((FcChar8 *) fontname))) { - fprintf(stderr, "error, cannot parse font name to pattern: '%s'\n", fontname); - XftFontClose(drw->dpy, xfont); - return NULL; - } - } else if (fontpattern) { - if (!(xfont = XftFontOpenPattern(drw->dpy, fontpattern))) { - fprintf(stderr, "error, cannot load font from pattern.\n"); - return NULL; - } - } else { - die("no font specified."); - } - - font = ecalloc(1, sizeof(Fnt)); - font->xfont = xfont; - font->pattern = pattern; - font->h = xfont->ascent + xfont->descent; - font->dpy = drw->dpy; - - return font; -} - -static void -xfont_free(Fnt *font) -{ - if (!font) - return; - if (font->pattern) - FcPatternDestroy(font->pattern); - XftFontClose(font->dpy, font->xfont); - free(font); -} - -Fnt* -drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount) -{ - Fnt *cur, *ret = NULL; - size_t i; - - if (!drw || !fonts) - return NULL; - - for (i = 1; i <= fontcount; i++) { - if ((cur = xfont_create(drw, fonts[fontcount - i], NULL))) { - cur->next = ret; - ret = cur; - } - } - return (drw->fonts = ret); -} - -void -drw_fontset_free(Fnt *font) -{ - if (font) { - drw_fontset_free(font->next); - xfont_free(font); - } -} - -void -drw_clr_create(Drw *drw, Clr *dest, const char *clrname) -{ - if (!drw || !dest || !clrname) - return; - - if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen), - DefaultColormap(drw->dpy, drw->screen), - clrname, dest)) - die("error, cannot allocate color '%s'", clrname); -} - -/* Wrapper to create color schemes. The caller has to call free(3) on the - * returned color scheme when done using it. */ -Clr * -drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount) -{ - size_t i; - Clr *ret; - - /* need at least two colors for a scheme */ - if (!drw || !clrnames || clrcount < 2 || !(ret = ecalloc(clrcount, sizeof(XftColor)))) - return NULL; - - for (i = 0; i < clrcount; i++) - drw_clr_create(drw, &ret[i], clrnames[i]); - return ret; -} - -void -drw_setfontset(Drw *drw, Fnt *set) -{ - if (drw) - drw->fonts = set; -} - -void -drw_setscheme(Drw *drw, Clr *scm) -{ - if (drw) - drw->scheme = scm; -} - -void -drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert) -{ - if (!drw || !drw->scheme) - return; - XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme[ColBg].pixel : drw->scheme[ColFg].pixel); - if (filled) - XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); - else - XDrawRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w - 1, h - 1); -} - -int -drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert) -{ - int ty, ellipsis_x = 0; - unsigned int tmpw, ew, ellipsis_w = 0, ellipsis_len, hash, h0, h1; - XftDraw *d = NULL; - Fnt *usedfont, *curfont, *nextfont; - int utf8strlen, utf8charlen, utf8err, render = x || y || w || h; - long utf8codepoint = 0; - const char *utf8str; - FcCharSet *fccharset; - FcPattern *fcpattern; - FcPattern *match; - XftResult result; - int charexists = 0, overflow = 0; - /* keep track of a couple codepoints for which we have no match. */ - static unsigned int nomatches[128], ellipsis_width, invalid_width; - static const char invalid[] = "�"; - - if (!drw || (render && (!drw->scheme || !w)) || !text || !drw->fonts) - return 0; - - if (!render) { - w = invert ? invert : ~invert; - } else { - XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel); - XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); - if (w < lpad) - return x + w; - d = XftDrawCreate(drw->dpy, drw->drawable, - DefaultVisual(drw->dpy, drw->screen), - DefaultColormap(drw->dpy, drw->screen)); - x += lpad; - w -= lpad; - } - - usedfont = drw->fonts; - if (!ellipsis_width && render) - ellipsis_width = drw_fontset_getwidth(drw, "..."); - if (!invalid_width && render) - invalid_width = drw_fontset_getwidth(drw, invalid); - while (1) { - ew = ellipsis_len = utf8err = utf8charlen = utf8strlen = 0; - utf8str = text; - nextfont = NULL; - while (*text) { - utf8charlen = utf8decode(text, &utf8codepoint, &utf8err); - for (curfont = drw->fonts; curfont; curfont = curfont->next) { - charexists = charexists || XftCharExists(drw->dpy, curfont->xfont, utf8codepoint); - if (charexists) { - drw_font_getexts(curfont, text, utf8charlen, &tmpw, NULL); - if (ew + ellipsis_width <= w) { - /* keep track where the ellipsis still fits */ - ellipsis_x = x + ew; - ellipsis_w = w - ew; - ellipsis_len = utf8strlen; - } - - if (ew + tmpw > w) { - overflow = 1; - /* called from drw_fontset_getwidth_clamp(): - * it wants the width AFTER the overflow - */ - if (!render) - x += tmpw; - else - utf8strlen = ellipsis_len; - } else if (curfont == usedfont) { - text += utf8charlen; - utf8strlen += utf8err ? 0 : utf8charlen; - ew += utf8err ? 0 : tmpw; - } else { - nextfont = curfont; - } - break; - } - } - - if (overflow || !charexists || nextfont || utf8err) - break; - else - charexists = 0; - } - - if (utf8strlen) { - if (render) { - ty = y + (h - usedfont->h) / 2 + usedfont->xfont->ascent; - XftDrawStringUtf8(d, &drw->scheme[invert ? ColBg : ColFg], - usedfont->xfont, x, ty, (XftChar8 *)utf8str, utf8strlen); - } - x += ew; - w -= ew; - } - if (utf8err && (!render || invalid_width < w)) { - if (render) - drw_text(drw, x, y, w, h, 0, invalid, invert); - x += invalid_width; - w -= invalid_width; - } - if (render && overflow) - drw_text(drw, ellipsis_x, y, ellipsis_w, h, 0, "...", invert); - - if (!*text || overflow) { - break; - } else if (nextfont) { - charexists = 0; - usedfont = nextfont; - } else { - /* Regardless of whether or not a fallback font is found, the - * character must be drawn. */ - charexists = 1; - - hash = (unsigned int)utf8codepoint; - hash = ((hash >> 16) ^ hash) * 0x21F0AAAD; - hash = ((hash >> 15) ^ hash) * 0xD35A2D97; - h0 = ((hash >> 15) ^ hash) % LENGTH(nomatches); - h1 = (hash >> 17) % LENGTH(nomatches); - /* avoid expensive XftFontMatch call when we know we won't find a match */ - if (nomatches[h0] == utf8codepoint || nomatches[h1] == utf8codepoint) - goto no_match; - - fccharset = FcCharSetCreate(); - FcCharSetAddChar(fccharset, utf8codepoint); - - if (!drw->fonts->pattern) { - /* Refer to the comment in xfont_create for more information. */ - die("the first font in the cache must be loaded from a font string."); - } - - fcpattern = FcPatternDuplicate(drw->fonts->pattern); - FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset); - FcPatternAddBool(fcpattern, FC_SCALABLE, FcTrue); - - FcConfigSubstitute(NULL, fcpattern, FcMatchPattern); - FcDefaultSubstitute(fcpattern); - match = XftFontMatch(drw->dpy, drw->screen, fcpattern, &result); - - FcCharSetDestroy(fccharset); - FcPatternDestroy(fcpattern); - - if (match) { - usedfont = xfont_create(drw, NULL, match); - if (usedfont && XftCharExists(drw->dpy, usedfont->xfont, utf8codepoint)) { - for (curfont = drw->fonts; curfont->next; curfont = curfont->next) - ; /* NOP */ - curfont->next = usedfont; - } else { - xfont_free(usedfont); - nomatches[nomatches[h0] ? h1 : h0] = utf8codepoint; -no_match: - usedfont = drw->fonts; - } - } - } - } - if (d) - XftDrawDestroy(d); - - return x + (render ? w : 0); -} - -void -drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h) -{ - if (!drw) - return; - - XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, x, y); - XSync(drw->dpy, False); -} - -unsigned int -drw_fontset_getwidth(Drw *drw, const char *text) -{ - if (!drw || !drw->fonts || !text) - return 0; - return drw_text(drw, 0, 0, 0, 0, 0, text, 0); -} - -unsigned int -drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n) -{ - unsigned int tmp = 0; - if (drw && drw->fonts && text && n) - tmp = drw_text(drw, 0, 0, 0, 0, 0, text, n); - return MIN(n, tmp); -} - -void -drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h) -{ - XGlyphInfo ext; - - if (!font || !text) - return; - - XftTextExtentsUtf8(font->dpy, font->xfont, (XftChar8 *)text, len, &ext); - if (w) - *w = ext.xOff; - if (h) - *h = font->h; -} - -Cur * -drw_cur_create(Drw *drw, int shape) -{ - Cur *cur; - - if (!drw || !(cur = ecalloc(1, sizeof(Cur)))) - return NULL; - - cur->cursor = XCreateFontCursor(drw->dpy, shape); - - return cur; -} - -void -drw_cur_free(Drw *drw, Cur *cursor) -{ - if (!cursor) - return; - - XFreeCursor(drw->dpy, cursor->cursor); - free(cursor); -} diff --git a/.suckless/st/dmenu/drw.h b/.suckless/st/dmenu/drw.h deleted file mode 100644 index fd7631b..0000000 --- a/.suckless/st/dmenu/drw.h +++ /dev/null @@ -1,58 +0,0 @@ -/* See LICENSE file for copyright and license details. */ - -typedef struct { - Cursor cursor; -} Cur; - -typedef struct Fnt { - Display *dpy; - unsigned int h; - XftFont *xfont; - FcPattern *pattern; - struct Fnt *next; -} Fnt; - -enum { ColFg, ColBg }; /* Clr scheme index */ -typedef XftColor Clr; - -typedef struct { - unsigned int w, h; - Display *dpy; - int screen; - Window root; - Drawable drawable; - GC gc; - Clr *scheme; - Fnt *fonts; -} Drw; - -/* Drawable abstraction */ -Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h); -void drw_resize(Drw *drw, unsigned int w, unsigned int h); -void drw_free(Drw *drw); - -/* Fnt abstraction */ -Fnt *drw_fontset_create(Drw* drw, const char *fonts[], size_t fontcount); -void drw_fontset_free(Fnt* set); -unsigned int drw_fontset_getwidth(Drw *drw, const char *text); -unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n); -void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h); - -/* Colorscheme abstraction */ -void drw_clr_create(Drw *drw, Clr *dest, const char *clrname); -Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount); - -/* Cursor abstraction */ -Cur *drw_cur_create(Drw *drw, int shape); -void drw_cur_free(Drw *drw, Cur *cursor); - -/* Drawing context manipulation */ -void drw_setfontset(Drw *drw, Fnt *set); -void drw_setscheme(Drw *drw, Clr *scm); - -/* Drawing functions */ -void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int invert); -int drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert); - -/* Map functions */ -void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h); diff --git a/.suckless/st/dmenu/drw.o b/.suckless/st/dmenu/drw.o deleted file mode 100644 index dbafb1662bf561b45180fe2335afc7ce9362489f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11296 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 diff --git a/.suckless/st/dmenu/stest b/.suckless/st/dmenu/stest deleted file mode 100755 index 45f7c0494f9cebae7c41eb0b7ba1f7069124d605..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16408 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