commit b9fec83ae3d1a611e50b721f19698f53ef84db90
parent 108b4f4aed545baa86512a0d1d603a453868bec2
Author: Robert Russell <robert@rr3.xyz>
Date: Sun, 26 Jul 2026 23:00:56 -0700
Turn X config into graft package
Diffstat:
12 files changed, 63 insertions(+), 16 deletions(-)
diff --git a/.gitmodules b/.gitmodules
@@ -1,3 +1,15 @@
[submodule "z/z"]
path = z/z
url = https://github.com/rupa/z.git
+[submodule "x/dwm"]
+ path = x/dwm
+ url = gits://git.rr3.xyz/dwm
+[submodule "x/dmenu"]
+ path = x/dmenu
+ url = gits://git.rr3.xyz/dmenu
+[submodule "x/slock"]
+ path = x/slock
+ url = gits://git.rr3.xyz/slock
+[submodule "x/status"]
+ path = x/status
+ url = gits://git.rr3.xyz/status
diff --git a/.xinitrc b/.xinitrc
@@ -1,16 +0,0 @@
-error() {
- echo "$1" 1>&2
- exit 1
-}
-
-xkbcomp "$HOME"/dotfiles/keyboard/custom.xkb $DISPLAY || error "failed to set keymap"
-
-[ -f ~/.Xresources ] && xrdb -merge ~/.Xresources
-xhost +local:
-
-while true; do statusupd; sleep 5; done &
-
-pipewire &
-pipewire-pulse &
-dunst &
-exec dbus-run-session dwm
diff --git a/keyboard/custom.xkb b/keyboard/keymap.xkb
diff --git a/shell/.config/shinit.d/10-util.sh b/shell/.config/shinit.d/10-util.sh
@@ -7,6 +7,15 @@ have() {
command -v "$1" >/dev/null 2>&1
}
+echo_lines() {
+ [ $# -ge 1 ] && printf "%s\n" "$@"
+}
+
+fail() {
+ echo_lines "$@" >&2
+ exit 1
+}
+
is_interactive() {
if [ $# -ne 0 ]; then
echo "Usage: is_interactive" >&2
diff --git a/x/.graft.sh b/x/.graft.sh
@@ -0,0 +1,27 @@
+make_install_submodule() {
+ local err
+ if ! err="$(git submodule update --init "$1")"; then
+ msg_error "failed to fetch $1" "$err"
+ return 1
+ fi
+ if ! err="$(cd "$1" && make)"; then
+ msg_error "failed to build $1" "$err"
+ return 1
+ fi
+ if ! err="$(cd "$1" && make install DESTDIR="$ROOT" PREFIX=/.local)"; then
+ msg_error "failed to install $1" "$err"
+ return 1
+ fi
+ msg green "" "installed $1"
+}
+
+make_install_submodule dmenu
+make_install_submodule dwm
+make_install_submodule status
+make_install_submodule slock
+msg_note "you must adjust slock with root:" \
+ "chown root:root $ROOT/.local/bin/slock" \
+ "chmod u+s $ROOT/.local/bin/slock"
+
+link .local/share/keymap.xkb
+link .xinitrc
diff --git a/x/.local/share/keymap.xkb b/x/.local/share/keymap.xkb
@@ -0,0 +1 @@
+../../../keyboard/keymap.xkb
+\ No newline at end of file
diff --git a/x/.xinitrc b/x/.xinitrc
@@ -0,0 +1,8 @@
+xkbcomp "$HOME"/.local/share/keymap.xkb "$DISPLAY" || fail "failed to set keymap"
+[ -f "$HOME"/.Xresources ] && xrdb -merge "$HOME"/.Xresources
+xhost +local:
+
+have status_update && while true; do status_update; sleep 1; done &
+have pipewire && pipewire & pipewire-pulse &
+have dunst && dunst &
+exec dbus-run-session dwm
diff --git a/x/README b/x/README
@@ -0,0 +1 @@
+TODO: Move status into this repo?
diff --git a/x/dmenu b/x/dmenu
@@ -0,0 +1 @@
+Subproject commit a1f417186cb8a1315e4de7a7e3450aaab4608b84
diff --git a/x/dwm b/x/dwm
@@ -0,0 +1 @@
+Subproject commit 3c1a3e29b66f61451b6f357b23ea40986ec55579
diff --git a/x/slock b/x/slock
@@ -0,0 +1 @@
+Subproject commit dc0fa4dbf1d619403cb78013102704e6790e9761
diff --git a/x/status b/x/status
@@ -0,0 +1 @@
+Subproject commit 65203fb7b682742eed931360cd255070c5ef8845