From: Tucker Johnson Date: Sun, 1 Jun 2025 18:17:51 +0000 (-0400) Subject: large scale stage X-Git-Url: https://git.newer.systems/?a=commitdiff_plain;h=a26ffeee6c15c77e92d0edd2a70559184940dc7a;p=dwm.git large scale stage --- diff --git a/Makefile b/Makefile index d2abfd1..4bacdd1 100644 --- a/Makefile +++ b/Makefile @@ -35,13 +35,16 @@ dist: clean install: all mkdir -p ${DESTDIR}${PREFIX}/bin - cp -f dwm ${DESTDIR}${PREFIX}/bin + cp -f dwm extras/scripts/* ${DESTDIR}${PREFIX}/bin chmod 755 ${DESTDIR}${PREFIX}/bin/dwm + chmod 755 ${DESTDIR}${PREFIX}/bin/remapd + chmod 755 ${DESTDIR}${PREFIX}/bin/remaps + chmod 755 ${DESTDIR}${PREFIX}/bin/setbg mkdir -p ${DESTDIR}${MANPREFIX}/man1 sed "s/VERSION/${VERSION}/g" < dwm.1 > ${DESTDIR}${MANPREFIX}/man1/dwm.1 chmod 644 ${DESTDIR}${MANPREFIX}/man1/dwm.1 mkdir -p ${DESTDIR}${MANPREFIX}/man7 - cp -f TuCLS.7 ${DESTDIR}${MANPREFIX}/man7 + cp -f extras/TuCLS.7 ${DESTDIR}${MANPREFIX}/man7 chmod 644 ${DESTDIR}${MANPREFIX}/man7/TuCLS.7 uninstall: diff --git a/PKGBUILD b/PKGBUILD deleted file mode 100644 index 1903c72..0000000 --- a/PKGBUILD +++ /dev/null @@ -1,44 +0,0 @@ -_pkgname=dwm -pkgname=$_pkgname-larbs-git -pkgver=6.2.r1888.0ac09e0 -pkgrel=1 -pkgdesc="Luke's build of dwm" -url=https://github.com/LukeSmithxyz/dwm -arch=(i686 x86_64) -license=(MIT) -makedepends=(git) -depends=(freetype2 libx11 libxft) -optdepends=( - 'dmenu: program launcher' - 'st: terminal emulator') -provides=($_pkgname) -conflicts=($_pkgname) -source=(git+https://github.com/LukeSmithxyz/dwm) -sha256sums=('SKIP') - -pkgver() { - cd "$_pkgname" - echo "$(awk '/^VERSION =/ {print $3}' config.mk)".r"$(git rev-list --count HEAD)"."$(git rev-parse --short HEAD)" -} - -prepare() { - cd "$_pkgname" - echo "CPPFLAGS+=${CPPFLAGS}" >> config.mk - echo "CFLAGS+=${CFLAGS}" >> config.mk - echo "LDFLAGS+=${LDFLAGS}" >> config.mk - # to use a custom config.h, place it in the package directory - if [[ -f ${SRCDEST}/config.h ]]; then - cp "${SRCDEST}/config.h" . - fi -} - -build() { - cd "$_pkgname" - make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11 -} - -package() { - cd "$_pkgname" - make PREFIX=/usr DESTDIR="$pkgdir" install - install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" -} diff --git a/README.md b/README.md deleted file mode 100644 index cf67303..0000000 --- a/README.md +++ /dev/null @@ -1,13 +0,0 @@ -### included patches - -- [Clickable statusbar](https://dwm.suckless.org/patches/statuscmd/) -- Reads [xresources](https://dwm.suckless.org/patches/xresources/) colors/variables (i.e. works with `pywal`, etc.). -- scratchpad: Accessible with mod+shift+enter. -- New layouts: bstack, fibonacci, deck, centered master and more. All bound to keys super+(shift+)t/y/u/i. -- True fullscreen (super+f) and prevents focus shifting. -- Windows can be made sticky (super+s). -- [hide vacant tags](https://dwm.suckless.org/patches/hide_vacant_tags/) hides tags with no windows. -- [stacker](https://dwm.suckless.org/patches/stacker/): Move windows up the stack manually (super-K/J). -- [shiftview](https://dwm.suckless.org/patches/nextprev/): Cycle through tags (super+g/;). -- [vanitygaps](https://dwm.suckless.org/patches/vanitygaps/): Gaps allowed across all layouts. -- [swallow patch](https://dwm.suckless.org/patches/swallow/): if a program run from a terminal would make it inoperable, it temporarily takes its place to save space. diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..b492f11 --- /dev/null +++ b/README.txt @@ -0,0 +1,67 @@ +> N.B. This copy of dmenu is modified as part of TuCLS (Tucker's configured +> Linux System) +> +> Additional non-source features can be found in the 'extras' directory. +> +> included source code patches +> +> - Clickable statusbar (https://dwm.suckless.org/patches/statuscmd/) +> - Reads xresources (https://dwm.suckless.org/patches/xresources/) +> - scratchpad/drop-down terminal +> - New layouts: bstack, fibonacci, deck, centered master and more +> - True fullscreen and prevents focus shifting +> - Windows can be made sticky +> - hide vacant tags (https://dwm.suckless.org/patches/hide_vacant_tags/) +> - Stacker (https://dwm.suckless.org/patches/stacker/) +> - Shiftview (https://dwm.suckless.org/patches/nextprev/) +> - Vanitygaps (https://dwm.suckless.org/patches/vanitygaps/) +> - Swallow patch (https://dwm.suckless.org/patches/swallow/) + +dwm - dynamic window manager +============================ +dwm is an extremely fast, small, and dynamic window manager for X. + + +Requirements +------------ +In order to build dwm you need the Xlib header files. + + +Installation +------------ +Edit config.mk to match your local setup (dwm is installed into +the /usr/local namespace by default). + +Afterwards enter the following command to build and install dwm (if +necessary as root): + + make clean install + + +Running dwm +----------- +Add the following line to your .xinitrc to start dwm using startx: + + exec dwm + +In order to connect dwm to a specific display, make sure that +the DISPLAY environment variable is set correctly, e.g.: + + DISPLAY=foo.bar:1 exec dwm + +(This will start dwm on display :1 of the host foo.bar.) + +In order to display status info in the bar, you can do something +like this in your .xinitrc: + + while xsetroot -name "`date` `uptime | sed 's/.*,//'`" + do + sleep 1 + done & + exec dwm + + +Configuration +------------- +The configuration of dwm is done by creating a custom config.h +and (re)compiling the source code. diff --git a/TuCLS.7 b/TuCLS.7 deleted file mode 100644 index 1560a00..0000000 --- a/TuCLS.7 +++ /dev/null @@ -1,171 +0,0 @@ -.TH "TuCLS" 7 -.SH Name -TuCLS \- Tucker's Configured Linux System -.IP -\(bu view this document with -.B "MOD + ?" -\~\~ -.RB "("MOD -is the Super Key or Windows Key) -.SH Prolepsis -.P -.B TuCLS -is my personal, configured linux system built on -.I Artix Linux. -It is built around a set of light-weight, modifiable, and replaceable programs that are easy to customize. -At the center of this web of programs are the suckless programs -.MR dwm 1 -(window manager), -.MR dwmblocks 1 -(status bar), -.MR st 1 -(terminal emulator), and -.MR dmenu 1 -(menu), which are incredibly customizable. -Most other programs are terminal or ncurses programs that are significantly extensible. -.MR Nvim 1 -is included with a custom configuration including many plugins, lua scripts, and key-bound shell scripts. -A more complete list of programs is listed at the bottom of this document. -.P -I am a musician, composer, music technologist, and educator. -Thus, the priorities and configurations of the system are built around my work. -The big tasks here are music engraving \(en handled with -.MR Lilypond 1 , -audio work \(en involving -.IR "SuperCollider", -.MR pd 1 , -.MR SoX 1 , -and more, in addition to compositionally related computation using any number of tools. -.SH Key Mappings and Bindings -Any connected keyboard is remapped using the script -.I remaps -in -.BR "~/.local/bin/". -Two keys are remapped in the process: -the key between Alt and Ctrl (either windows or command) becomes a Mod key -and the Capslock key becomes escape when tapped and another Mod key when held. -Capslock becomes disabled. -.SS dwm Bindings -.P -Windows in dwm are ordered in a 'stack' that can be cycled through and rearranged. -They are also placed in different tags which can be navigated like alternate desktops. -(N.B. the key bindings here overwrite those in the -.MR dwm 1 -man page) -.TP -.B Nav -NB move/resize windows with 'Mod + left/right click' -.TS -tab(|) nospaces; -l l. -Mod + j/k|move down/up through windows in the stack -Mod + Space|move selected window to top (or switch second window to top) -Mod + h/l|diminish/augment width of main window -Mod + z/x|diminish/augment gaps between windows -Mod + a|toggle gaps on/off -Mod + A|reset gaps to default scale -Mod + Shift + Space|make a window float -Mod + s|toggle a 'sticky' window that follows you through tags -Mod + b|toggle status bar -Mod + v|jump to top window -.TE -. -.TP -.B Layouts -.TS -tab(|) nospaces; -l l. -Mod + t|tiling \(en default|[tlng] -Mod + T|horizontal tiling|[htlng] -Mod + f|fullscreen selected window| -Mod + F|floating|[fltg] -Mod + y|spiral|[sprl] -Mod + Y|dwindle|[dwdl] -Mod + u|main on left, others in deck|[ldck] -Mod + U|deck|[sdck] -Mod + i|center main|[cntr] -Mod + I|center, floating main|[fcntr] -Mod + o/O|decrease/increase main window count| -Mod + b|show/hide status bar -.TE -. -.TP -.B Tags -Tags function like workspaces or alternate desktops. -.TS -tab(|) nospaces; -l l. -Mod + 1-9|switch tags -Mod + Shift + 1-9|send current window to a tag -Mod + Tab|switch to previous tag -Mod + Left/Right|switch displays -Mod + Shift + Left/Right|send current window to another display -.TE -. -.TP -.B Multiple Displays -.TS -tab(|) nospaces; -l l. -Mod + left/right|navigate to another display -Mod + Shift + left/right|send current window to another display -.TE -. -.SS System and Program Bindings -.TP -.B System -NB media keys are not mapped, but could be adjusted in source. -.TS -tab(|) nospaces; -l l. -Mod + backspace|dmenu system functions -Mod + Q|dmenu system functions -Mod + -/+|default audio volume -Mod + M|mute audio -Mod + F1|dmenu display selection -Mod + F2|pulsemixer -Mod + F3|qpwgraph -Mod + F4|htop -Mod + F5|dmenu drive mounter -Mod + F6|dmenu cifs mounter -Mod + F7|dmenu unmounter -Mod + F9|dmenu screen select (maim) -Mod + F10|dmenu screen recording (ffmpeg) -Mod + F11|open webcam -Mod + F12|remap keyboard -Mod + W|Network Manager -.TE -. -.TP -.B Programs -.TS -tab(|) nospaces; -l l. -Mod + enter|terminal window -Mod + shift + enter|drop-down terminal -Mod + d|dmenu program launcher -Mod + D|dmenu pass (password manager) -Mod + S|dmenu stream select (see dmenu scripts) -Mod + e|neomutt -Mod + E|abook -Mod + w|web browser -Mod + n|notes (see notes) -Mod + N|newsboat -Mod + M|ncmpcpp (see music and media) -.TE -. -.TP -.B Media -using the programs mpd and mpv -.TS -tab(|) nospaces; -l l. -Mod + P|pause mpd and end any mpv instance -Mod + ,|mpd previous track -Mod + .|mpd next track -Mod + <|mpd restart track -Mod + >|mpd repeat -.TE -. -.SH Author -Tucker Johnson (tucker@newer.systems, https://newer.systems) diff --git a/config.h b/config.h index 9835519..5856bd7 100644 --- a/config.h +++ b/config.h @@ -180,7 +180,7 @@ static const Key keys[] = { { MODKEY, XK_o, incnmaster, {.i = +1 } }, { MODKEY|ShiftMask, XK_o, incnmaster, {.i = -1 } }, { MODKEY, XK_p, spawn, {.v = (const char*[]){ "mpc", "toggle", NULL } } }, - { MODKEY|ShiftMask, XK_p, spawn, SHCMD("mpc pause; dm-kampv") }, + { MODKEY|ShiftMask, XK_p, spawn, SHCMD("mpc pause; killall mpv") }, { MODKEY, XK_bracketleft, spawn, {.v = (const char*[]){ "mpc", "seek", "-10", NULL } } }, { MODKEY|ShiftMask, XK_bracketleft, spawn, {.v = (const char*[]){ "mpc", "seek", "-60", NULL } } }, { MODKEY, XK_bracketright,spawn, {.v = (const char*[]){ "mpc", "seek", "+10", NULL } } }, diff --git a/extras/TuCLS.7 b/extras/TuCLS.7 new file mode 100644 index 0000000..1560a00 --- /dev/null +++ b/extras/TuCLS.7 @@ -0,0 +1,171 @@ +.TH "TuCLS" 7 +.SH Name +TuCLS \- Tucker's Configured Linux System +.IP +\(bu view this document with +.B "MOD + ?" +\~\~ +.RB "("MOD +is the Super Key or Windows Key) +.SH Prolepsis +.P +.B TuCLS +is my personal, configured linux system built on +.I Artix Linux. +It is built around a set of light-weight, modifiable, and replaceable programs that are easy to customize. +At the center of this web of programs are the suckless programs +.MR dwm 1 +(window manager), +.MR dwmblocks 1 +(status bar), +.MR st 1 +(terminal emulator), and +.MR dmenu 1 +(menu), which are incredibly customizable. +Most other programs are terminal or ncurses programs that are significantly extensible. +.MR Nvim 1 +is included with a custom configuration including many plugins, lua scripts, and key-bound shell scripts. +A more complete list of programs is listed at the bottom of this document. +.P +I am a musician, composer, music technologist, and educator. +Thus, the priorities and configurations of the system are built around my work. +The big tasks here are music engraving \(en handled with +.MR Lilypond 1 , +audio work \(en involving +.IR "SuperCollider", +.MR pd 1 , +.MR SoX 1 , +and more, in addition to compositionally related computation using any number of tools. +.SH Key Mappings and Bindings +Any connected keyboard is remapped using the script +.I remaps +in +.BR "~/.local/bin/". +Two keys are remapped in the process: +the key between Alt and Ctrl (either windows or command) becomes a Mod key +and the Capslock key becomes escape when tapped and another Mod key when held. +Capslock becomes disabled. +.SS dwm Bindings +.P +Windows in dwm are ordered in a 'stack' that can be cycled through and rearranged. +They are also placed in different tags which can be navigated like alternate desktops. +(N.B. the key bindings here overwrite those in the +.MR dwm 1 +man page) +.TP +.B Nav +NB move/resize windows with 'Mod + left/right click' +.TS +tab(|) nospaces; +l l. +Mod + j/k|move down/up through windows in the stack +Mod + Space|move selected window to top (or switch second window to top) +Mod + h/l|diminish/augment width of main window +Mod + z/x|diminish/augment gaps between windows +Mod + a|toggle gaps on/off +Mod + A|reset gaps to default scale +Mod + Shift + Space|make a window float +Mod + s|toggle a 'sticky' window that follows you through tags +Mod + b|toggle status bar +Mod + v|jump to top window +.TE +. +.TP +.B Layouts +.TS +tab(|) nospaces; +l l. +Mod + t|tiling \(en default|[tlng] +Mod + T|horizontal tiling|[htlng] +Mod + f|fullscreen selected window| +Mod + F|floating|[fltg] +Mod + y|spiral|[sprl] +Mod + Y|dwindle|[dwdl] +Mod + u|main on left, others in deck|[ldck] +Mod + U|deck|[sdck] +Mod + i|center main|[cntr] +Mod + I|center, floating main|[fcntr] +Mod + o/O|decrease/increase main window count| +Mod + b|show/hide status bar +.TE +. +.TP +.B Tags +Tags function like workspaces or alternate desktops. +.TS +tab(|) nospaces; +l l. +Mod + 1-9|switch tags +Mod + Shift + 1-9|send current window to a tag +Mod + Tab|switch to previous tag +Mod + Left/Right|switch displays +Mod + Shift + Left/Right|send current window to another display +.TE +. +.TP +.B Multiple Displays +.TS +tab(|) nospaces; +l l. +Mod + left/right|navigate to another display +Mod + Shift + left/right|send current window to another display +.TE +. +.SS System and Program Bindings +.TP +.B System +NB media keys are not mapped, but could be adjusted in source. +.TS +tab(|) nospaces; +l l. +Mod + backspace|dmenu system functions +Mod + Q|dmenu system functions +Mod + -/+|default audio volume +Mod + M|mute audio +Mod + F1|dmenu display selection +Mod + F2|pulsemixer +Mod + F3|qpwgraph +Mod + F4|htop +Mod + F5|dmenu drive mounter +Mod + F6|dmenu cifs mounter +Mod + F7|dmenu unmounter +Mod + F9|dmenu screen select (maim) +Mod + F10|dmenu screen recording (ffmpeg) +Mod + F11|open webcam +Mod + F12|remap keyboard +Mod + W|Network Manager +.TE +. +.TP +.B Programs +.TS +tab(|) nospaces; +l l. +Mod + enter|terminal window +Mod + shift + enter|drop-down terminal +Mod + d|dmenu program launcher +Mod + D|dmenu pass (password manager) +Mod + S|dmenu stream select (see dmenu scripts) +Mod + e|neomutt +Mod + E|abook +Mod + w|web browser +Mod + n|notes (see notes) +Mod + N|newsboat +Mod + M|ncmpcpp (see music and media) +.TE +. +.TP +.B Media +using the programs mpd and mpv +.TS +tab(|) nospaces; +l l. +Mod + P|pause mpd and end any mpv instance +Mod + ,|mpd previous track +Mod + .|mpd next track +Mod + <|mpd restart track +Mod + >|mpd repeat +.TE +. +.SH Author +Tucker Johnson (tucker@newer.systems, https://newer.systems) diff --git a/extras/scripts/remapd b/extras/scripts/remapd new file mode 100755 index 0000000..9d48e60 --- /dev/null +++ b/extras/scripts/remapd @@ -0,0 +1,13 @@ +#!/bin/bash + +# Rerun the remaps script whenever a new input device is added. + +# Tucker Johnson (git.newer.systems) (tucker@newer.systems) + +# This script is to add out-of the box features to my dmenu build. If you want +# to make changes, make them in the source directory and reinstall. + +while :; do + remaps + grep -qP -m1 '[^un]bind.+\/[^:]+\(usb\)' <(udevadm monitor -u -t seat -s input -s usb) +done diff --git a/extras/scripts/remaps b/extras/scripts/remaps new file mode 100755 index 0000000..5dc98df --- /dev/null +++ b/extras/scripts/remaps @@ -0,0 +1,16 @@ +#!/bin/sh + +# This script is called on startup to remap keys. + +# Tucker Johnson (git.newer.systems) (tucker@newer.systems) + +# This script is to add out-of the box features to my dmenu build. If you want +# to make changes, make them in the source directory and reinstall. + +xset r rate 300 50 + +setxkbmap -option caps:super,altwin:menu_win + +killall xcape 2>/dev/null ; xcape -e 'Super_L=Escape' + +xset -q | grep -q "Caps Lock:\s*on" && xdotool key Caps_Lock diff --git a/extras/scripts/setbg b/extras/scripts/setbg new file mode 100755 index 0000000..db8a908 --- /dev/null +++ b/extras/scripts/setbg @@ -0,0 +1,19 @@ +#!/bin/sh + + +# Location of link to wallpaper link. +background="${XDG_DATA_HOME:-$HOME/.local/share}/bg" + +while getopts "s" o; do case "${o}" in + s) silent='1' ;; +esac done + +shift $((OPTIND - 1)) + +newimage="$(readlink -f "$1")" && +case "$(file --mime-type -b "$newimage")" in + image/* ) cp -f "$newimage" "$background" && [ -z "$silent" ] && notify-send -i "$background" "Changing wallpaper..." ;; + *) [ -z "$silent" ] && notify-send "Error" "Not a valid image" ; exit 1;; +esac + +xwallpaper --zoom "$background" diff --git a/extras/ttymaps.kmap b/extras/ttymaps.kmap new file mode 100644 index 0000000..51a7042 --- /dev/null +++ b/extras/ttymaps.kmap @@ -0,0 +1,2 @@ +keycode 1 = Caps_Lock +keycode 58 = Escape