From dd543e3b2c42dc4706ee016bb4ae376d9e981272 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sat, 7 Mar 2026 14:03:02 -0600 Subject: feat(hyprland): remove plugins, add layout cycling Hyprland 0.54 brings scrolling and monocle layouts into core, making hyprpm plugins unnecessary. Remove hyprland-plugins-setup, focus-restore, hyprpm pacman hook, and allfloat keybinding. Add layout-cycle script and $mod+Shift+Arrow keybindings to cycle master/scrolling/monocle. Move cpio to System Utilities section. --- dotfiles/hyprland/.local/bin/focus-restore | 9 ----- .../hyprland/.local/bin/hyprland-plugins-setup | 47 ---------------------- dotfiles/hyprland/.local/bin/layout-cycle | 35 ++++++++++++++++ 3 files changed, 35 insertions(+), 56 deletions(-) delete mode 100755 dotfiles/hyprland/.local/bin/focus-restore delete mode 100755 dotfiles/hyprland/.local/bin/hyprland-plugins-setup create mode 100755 dotfiles/hyprland/.local/bin/layout-cycle (limited to 'dotfiles/hyprland/.local') diff --git a/dotfiles/hyprland/.local/bin/focus-restore b/dotfiles/hyprland/.local/bin/focus-restore deleted file mode 100755 index 7f87390..0000000 --- a/dotfiles/hyprland/.local/bin/focus-restore +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# Restore unfocused windows from workspace 10 without disrupting master position. -# Records the focused window, brings all back, then swaps it back to master. - -FOCUSED=$(hyprctl activewindow -j | jq -r '.address') -hyprctl dispatch plugin:xtd:bringallfrom 10 -sleep 0.1 -hyprctl dispatch focuswindow "address:$FOCUSED" -hyprctl dispatch layoutmsg swapwithmaster master diff --git a/dotfiles/hyprland/.local/bin/hyprland-plugins-setup b/dotfiles/hyprland/.local/bin/hyprland-plugins-setup deleted file mode 100755 index 29619c7..0000000 --- a/dotfiles/hyprland/.local/bin/hyprland-plugins-setup +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# hyprland-plugins-setup - Install Hyprland plugins on first login -# Called from hyprland.conf exec-once -# -# As of Hyprland 0.54, hyprscrolling is in core. Only xtra-dispatchers -# needs to be installed via hyprpm. - -LOGFILE="$HOME/.local/var/log/hyprland-plugins-setup.log" -mkdir -p "$(dirname "$LOGFILE")" - -log() { - echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOGFILE" -} - -# Check if xtra-dispatchers already installed and enabled -if hyprpm list 2>/dev/null | grep -q "xtra-dispatchers"; then - if hyprpm list | grep -q "enabled: .*true"; then - log "Plugins already installed, loading into session" - hyprpm reload 2>&1 | tee -a "$LOGFILE" - exit 0 - fi -fi - -log "Starting Hyprland plugin setup" - -# Add hyprland-plugins repository -log "Adding hyprland-plugins repository..." -if hyprpm add https://github.com/hyprwm/hyprland-plugins 2>&1 | tee -a "$LOGFILE"; then - log "hyprland-plugins repository added" -else - log "Failed to add hyprland-plugins repository" -fi - -# Enable xtra-dispatchers (provides plugin:xtd:bringallfrom used by focus-restore) -log "Enabling xtra-dispatchers..." -if hyprpm enable xtra-dispatchers 2>&1 | tee -a "$LOGFILE"; then - log "xtra-dispatchers enabled" -else - log "Failed to enable xtra-dispatchers" -fi - -# Reload plugins into Hyprland -log "Reloading plugins..." -hyprpm reload 2>&1 | tee -a "$LOGFILE" - -log "Plugin setup complete" -notify-send "Hyprland Plugins" "Plugin setup complete" -t 3000 diff --git a/dotfiles/hyprland/.local/bin/layout-cycle b/dotfiles/hyprland/.local/bin/layout-cycle new file mode 100755 index 0000000..dcc7b6b --- /dev/null +++ b/dotfiles/hyprland/.local/bin/layout-cycle @@ -0,0 +1,35 @@ +#!/bin/sh +# Cycle Hyprland layout forward (next) or backward (prev) +# Usage: layout-cycle next | layout-cycle prev + +LAYOUTS="master scrolling monocle" +CURRENT=$(hyprctl getoption general:layout -j | jq -r '.str') +DIR="${1:-next}" + +set -- $LAYOUTS +COUNT=$# +INDEX=0 + +i=0 +for layout in $LAYOUTS; do + if [ "$layout" = "$CURRENT" ]; then + INDEX=$i + break + fi + i=$((i + 1)) +done + +if [ "$DIR" = "next" ]; then + INDEX=$(( (INDEX + 1) % COUNT )) +else + INDEX=$(( (INDEX - 1 + COUNT) % COUNT )) +fi + +i=0 +for layout in $LAYOUTS; do + if [ $i -eq $INDEX ]; then + hyprctl keyword general:layout "$layout" + break + fi + i=$((i + 1)) +done -- cgit v1.2.3