summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xarchsetup22
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprland.conf83
-rwxr-xr-xdotfiles/system/.local/bin/lkg4
-rwxr-xr-xdotfiles/system/.local/bin/lkg_rollback12
-rwxr-xr-xscripts/testing/run-test-baremetal.sh13
-rwxr-xr-xscripts/testing/run-test.sh21
6 files changed, 56 insertions, 99 deletions
diff --git a/archsetup b/archsetup
index c5acb36..afaf00c 100755
--- a/archsetup
+++ b/archsetup
@@ -1176,27 +1176,9 @@ EOF
display "task" "zfs-replicate timer created (enable after SSH key setup to TrueNAS)"
elif is_btrfs_root; then
- # Btrfs: Install timeshift-autosnap and grub-btrfs
- display "task" "btrfs detected - installing snapshot tools"
- aur_install timeshift-autosnap
- pacman_install grub-btrfs
- action="enabling snapshot boot menu updates" && display "task" "$action"
- systemctl enable grub-btrfsd >> "$logfile" 2>&1 || error_warn "$action" "$?"
-
- action="starting snapshot boot menu updates" && display "task" "$action"
- # starting and stopping service to generate the grub-btrfs config
- systemctl start grub-btrfsd >> "$logfile" 2>&1 || error_warn "$action" "$?"
- systemctl stop grub-btrfsd >> "$logfile" 2>&1 || error_warn "$action" "$?"
- # edit grub-btrfs config for timeshift auto snapshot support
- sed -i \
- 's|ExecStart=/usr/bin/grub-btrfsd --syslog /.snapshots|ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto|' \
- /etc/systemd/system/grub-btrfsd.service
-
- action="regenerating boot menu" && display "task" "$action"
- grub-mkconfig -o /boot/grub/grub.cfg >> "$logfile" 2>&1 || error_warn "$action" "$?"
+ display "task" "btrfs filesystem detected"
else
- # ext4 or other filesystem - no automatic snapshots
- display "task" "ext4/other filesystem detected - skipping snapshot tools"
+ display "task" "ext4/other filesystem detected"
fi
}
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf
index ce45088..166b44b 100644
--- a/dotfiles/hyprland/.config/hypr/hyprland.conf
+++ b/dotfiles/hyprland/.config/hypr/hyprland.conf
@@ -111,12 +111,12 @@ xwayland {
# Window Rules
# ============================================================================
# Floating windows (from DWM rules)
-windowrulev2 = float, class:^(Gimp)$
-windowrulev2 = float, class:^(caffeine)$
-windowrulev2 = float, class:^(blueman-services)$
-windowrulev2 = float, class:^(Blueman-manager)$
-windowrulev2 = float, class:^(qalculate-gtk)$
-windowrulev2 = float, title:^(Event Tester)$
+windowrule = float on, match:class ^(Gimp)$
+windowrule = float on, match:class ^(caffeine)$
+windowrule = float on, match:class ^(blueman-services)$
+windowrule = float on, match:class ^(Blueman-manager)$
+windowrule = float on, match:class ^(qalculate-gtk)$
+windowrule = float on, match:title ^(Event Tester)$
# ============================================================================
# Key Bindings
@@ -144,18 +144,31 @@ bind = $mod, J, layoutmsg, cyclenext
bind = $mod, K, layoutmsg, cycleprev
bind = $mod SHIFT, J, layoutmsg, swapnext
bind = $mod SHIFT, K, layoutmsg, swapprev
-bind = $mod, H, resizeactive, -50 0
-bind = $mod, L, resizeactive, 50 0
+bind = $mod, H, splitratio, -0.05
+bind = $mod, L, splitratio, +0.05
bind = $mod, RETURN, layoutmsg, swapwithmaster
bind = $mod, G, centerwindow
bind = $mod, TAB, workspace, previous
bind = $mod SHIFT, C, killactive
# Layouts (from DWM)
-bind = $mod SHIFT, M, exec, hyprctl keyword general:layout master
-bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master
+# monocle [M] - maximize window
+bind = $mod SHIFT, M, fullscreen, 1
+# tile []= - master on left (default master orientation)
+bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation left
+# floating ><> - toggle floating for current window
bind = $mod SHIFT, F, togglefloating
bind = $mod SHIFT, SPACE, togglefloating
+# bstack TTT - master on top
+bind = $mod SHIFT, U, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation top
+# bstackhoriz === - same as bstack in Hyprland
+bind = $mod, U, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation top
+# deck [D] - use dwindle layout as approximation
+bind = $mod SHIFT, D, exec, hyprctl keyword general:layout dwindle
+# centeredmaster |M| - master in center
+bind = $mod SHIFT, I, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation center
+# centeredfloatingmaster >M> - no direct equivalent, use centered master
+bind = $mod SHIFT, O, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation center
# Master layout adjustments
bind = $mod, I, layoutmsg, addmaster
@@ -205,39 +218,39 @@ bind = $mod SHIFT, PERIOD, movewindow, mon:+1
# Scratchpads (from DWM togglescratch)
# Audio mixer (was MODKEY+a -> spaudio/pulsemixer)
bind = $mod, A, togglespecialworkspace, audio
-bind = $mod, A, exec, [workspace special:audio] pgrep -x pulsemixer || st -n spaudio -e pulsemixer
-windowrulev2 = float, class:^(st)$, title:^(spaudio)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spaudio)$
-windowrulev2 = center, class:^(st)$, title:^(spaudio)$
-windowrulev2 = workspace special:audio, class:^(st)$, title:^(spaudio)$
+bind = $mod, A, exec, [workspace special:audio] pgrep -x pulsemixer || st -t spaudio -e pulsemixer
+windowrule = float on, match:class ^(st-256color)$, match:title ^(spaudio)$
+windowrule = size 60% 60%, match:class ^(st-256color)$, match:title ^(spaudio)$
+windowrule = center on, match:class ^(st-256color)$, match:title ^(spaudio)$
+windowrule = workspace special:audio, match:class ^(st-256color)$, match:title ^(spaudio)$
# System monitor (was MODKEY+m -> spmon/gotop)
bind = $mod, M, togglespecialworkspace, monitor
-bind = $mod, M, exec, [workspace special:monitor] pgrep -x gotop || st -n spmon -e gotop
-windowrulev2 = float, class:^(st)$, title:^(spmon)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmon)$
-windowrulev2 = workspace special:monitor, class:^(st)$, title:^(spmon)$
+bind = $mod, M, exec, [workspace special:monitor] pgrep -x gotop || st -t spmon -e gotop
+windowrule = float on, match:class ^(st-256color)$, match:title ^(spmon)$
+windowrule = size 60% 60%, match:class ^(st-256color)$, match:title ^(spmon)$
+windowrule = workspace special:monitor, match:class ^(st-256color)$, match:title ^(spmon)$
# Music player (was MODKEY+slash -> spmp/ncmpcpp)
bind = $mod, SLASH, togglespecialworkspace, music
-bind = $mod, SLASH, exec, [workspace special:music] pgrep -x ncmpcpp || st -n spmp -e ncmpcpp
-windowrulev2 = float, class:^(st)$, title:^(spmp)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmp)$
-windowrulev2 = workspace special:music, class:^(st)$, title:^(spmp)$
+bind = $mod, SLASH, exec, [workspace special:music] pgrep -x ncmpcpp || st -t spmp -e ncmpcpp
+windowrule = float on, match:class ^(st-256color)$, match:title ^(spmp)$
+windowrule = size 60% 60%, match:class ^(st-256color)$, match:title ^(spmp)$
+windowrule = workspace special:music, match:class ^(st-256color)$, match:title ^(spmp)$
# Terminal scratchpad (was MODKEY+Shift+Return -> spterm/tmux)
bind = $mod SHIFT, RETURN, togglespecialworkspace, term
-bind = $mod SHIFT, RETURN, exec, [workspace special:term] pgrep -f "st.*spterm" || st -n spterm -e tmux
-windowrulev2 = float, class:^(st)$, title:^(spterm)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spterm)$
-windowrulev2 = workspace special:term, class:^(st)$, title:^(spterm)$
+bind = $mod SHIFT, RETURN, exec, [workspace special:term] pgrep -f "st.*spterm" || st -t spterm -e tmux
+windowrule = float on, match:class ^(st-256color)$, match:title ^(spterm)$
+windowrule = size 60% 60%, match:class ^(st-256color)$, match:title ^(spterm)$
+windowrule = workspace special:term, match:class ^(st-256color)$, match:title ^(spterm)$
# File manager (was MODKEY+f -> spfm/ranger)
bind = $mod, F, togglespecialworkspace, files
-bind = $mod, F, exec, [workspace special:files] pgrep -x ranger || st -n spfm -e ranger
-windowrulev2 = float, class:^(st)$, title:^(spfm)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(spfm)$
-windowrulev2 = workspace special:files, class:^(st)$, title:^(spfm)$
+bind = $mod, F, exec, [workspace special:files] pgrep -x ranger || st -t spfm -e ranger
+windowrule = float on, match:class ^(st-256color)$, match:title ^(spfm)$
+windowrule = size 60% 60%, match:class ^(st-256color)$, match:title ^(spfm)$
+windowrule = workspace special:files, match:class ^(st-256color)$, match:title ^(spfm)$
# Calculator (was MODKEY+x or MODKEY+c -> qalculate)
bind = $mod, X, exec, qalculate-gtk
@@ -245,10 +258,10 @@ bind = $mod, C, exec, qalculate-gtk
# Htop (was MODKEY+Shift+h -> sptop/htop)
bind = $mod SHIFT, H, togglespecialworkspace, htop
-bind = $mod SHIFT, H, exec, [workspace special:htop] pgrep -x htop || st -n sptop -e htop
-windowrulev2 = float, class:^(st)$, title:^(sptop)$
-windowrulev2 = size 60% 60%, class:^(st)$, title:^(sptop)$
-windowrulev2 = workspace special:htop, class:^(st)$, title:^(sptop)$
+bind = $mod SHIFT, H, exec, [workspace special:htop] pgrep -x htop || st -t sptop -e htop
+windowrule = float on, match:class ^(st-256color)$, match:title ^(sptop)$
+windowrule = size 60% 60%, match:class ^(st-256color)$, match:title ^(sptop)$
+windowrule = workspace special:htop, match:class ^(st-256color)$, match:title ^(sptop)$
# Media/hardware keys
bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
diff --git a/dotfiles/system/.local/bin/lkg b/dotfiles/system/.local/bin/lkg
deleted file mode 100755
index aa9b3f1..0000000
--- a/dotfiles/system/.local/bin/lkg
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-# Craig Jennings <c@cjennings.net>
-
-sudo zfs destroy -rR zroot@lkg && sudo zfs snapshot -r zroot@lkg && echo "lkg snapshot reset" || echo "lkg snapshot failed!"
diff --git a/dotfiles/system/.local/bin/lkg_rollback b/dotfiles/system/.local/bin/lkg_rollback
deleted file mode 100755
index 3cf4c59..0000000
--- a/dotfiles/system/.local/bin/lkg_rollback
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-sudo zfs rollback -rR zroot/var@lkg
-sudo zfs rollback -rR zroot/var/log@lkg
-sudo zfs rollback -rR zroot/usr@lkg
-sudo zfs rollback -rR zroot/usr/home@lkg
-sudo zfs rollback -rR zroot/ROOT/default@lkg
-sudo zfs rollback -rR zroot/ROOT@lkg
-sudo zfs rollback -rR zroot@lkg
-
-echo ""; echo "rollback complete. rebooting..."
-sudo shutdown -r now
diff --git a/scripts/testing/run-test-baremetal.sh b/scripts/testing/run-test-baremetal.sh
index 709f030..c108e6f 100755
--- a/scripts/testing/run-test-baremetal.sh
+++ b/scripts/testing/run-test-baremetal.sh
@@ -24,7 +24,6 @@ source "$SCRIPT_DIR/lib/validation.sh"
# Parse arguments
ROLLBACK_FIRST=false
ROLLBACK_AFTER=false
-SKIP_SLOW_PACKAGES=false
TARGET_HOST=""
ROOT_PASSWORD=""
@@ -38,7 +37,6 @@ usage() {
echo "Options:"
echo " --rollback-first Roll back to genesis snapshots before running"
echo " --rollback-after Roll back to genesis snapshots after test (cleanup)"
- echo " --skip-slow-packages Skip slow packages for faster testing"
echo " --validate-only Skip archsetup, only run validation checks"
echo " --help Show this help"
exit 1
@@ -64,10 +62,6 @@ while [[ $# -gt 0 ]]; do
ROLLBACK_AFTER=true
shift
;;
- --skip-slow-packages)
- SKIP_SLOW_PACKAGES=true
- shift
- ;;
--validate-only)
VALIDATE_ONLY=true
shift
@@ -173,14 +167,9 @@ if ! $VALIDATE_ONLY; then
info "This will take 30-60 minutes"
REMOTE_LOG="/tmp/archsetup-test/archsetup-output.log"
- ARCHSETUP_ARGS=""
- if $SKIP_SLOW_PACKAGES; then
- ARCHSETUP_ARGS="--skip-slow-packages"
- info "Running with --skip-slow-packages"
- fi
# Start archsetup in background
- ssh_cmd "cd /tmp/archsetup-test && nohup bash archsetup $ARCHSETUP_ARGS > $REMOTE_LOG 2>&1 &"
+ ssh_cmd "cd /tmp/archsetup-test && nohup bash archsetup > $REMOTE_LOG 2>&1 &"
success "ArchSetup started in background"
# Poll for completion
diff --git a/scripts/testing/run-test.sh b/scripts/testing/run-test.sh
index e06d177..4c41cc3 100755
--- a/scripts/testing/run-test.sh
+++ b/scripts/testing/run-test.sh
@@ -28,7 +28,6 @@ source "$SCRIPT_DIR/lib/validation.sh"
KEEP_VM=false
ARCHSETUP_SCRIPT="$PROJECT_ROOT/archsetup"
SNAPSHOT_NAME="clean-install"
-SKIP_SLOW_PACKAGES=false
while [[ $# -gt 0 ]]; do
case $1 in
@@ -44,16 +43,11 @@ while [[ $# -gt 0 ]]; do
SNAPSHOT_NAME="$2"
shift 2
;;
- --skip-slow-packages)
- SKIP_SLOW_PACKAGES=true
- shift
- ;;
*)
- echo "Usage: $0 [--keep] [--script /path/to/archsetup] [--snapshot name] [--skip-slow-packages]"
- echo " --keep Keep VM in post-test state (for debugging)"
- echo " --script Specify custom archsetup script to test"
- echo " --snapshot Snapshot name to revert to (default: clean-install)"
- echo " --skip-slow-packages Skip slow packages (texlive-meta, topgrade) for faster testing"
+ echo "Usage: $0 [--keep] [--script /path/to/archsetup] [--snapshot name]"
+ echo " --keep Keep VM in post-test state (for debugging)"
+ echo " --script Specify custom archsetup script to test"
+ echo " --snapshot Snapshot name to revert to (default: clean-install)"
exit 1
;;
esac
@@ -194,13 +188,8 @@ info "Log file: $LOGFILE"
# Start archsetup in a detached session on the VM (resilient to SSH disconnections)
REMOTE_LOG="/tmp/archsetup-test/archsetup-output.log"
-ARCHSETUP_ARGS=""
-if $SKIP_SLOW_PACKAGES; then
- ARCHSETUP_ARGS="--skip-slow-packages"
- info "Running archsetup with --skip-slow-packages flag"
-fi
sshpass -p "$ROOT_PASSWORD" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
- "root@$VM_IP" "cd /tmp/archsetup-test && nohup bash archsetup $ARCHSETUP_ARGS > $REMOTE_LOG 2>&1 & echo \$!" \
+ "root@$VM_IP" "cd /tmp/archsetup-test && nohup bash archsetup > $REMOTE_LOG 2>&1 & echo \$!" \
>> "$LOGFILE" 2>&1
if [ $? -ne 0 ]; then