diff options
| -rwxr-xr-x | archsetup | 22 | ||||
| -rw-r--r-- | dotfiles/hyprland/.config/hypr/hyprland.conf | 83 | ||||
| -rwxr-xr-x | dotfiles/system/.local/bin/lkg | 4 | ||||
| -rwxr-xr-x | dotfiles/system/.local/bin/lkg_rollback | 12 | ||||
| -rwxr-xr-x | scripts/testing/run-test-baremetal.sh | 13 | ||||
| -rwxr-xr-x | scripts/testing/run-test.sh | 21 |
6 files changed, 56 insertions, 99 deletions
@@ -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 |
