diff options
Diffstat (limited to 'dotfiles/hyprland/.local/bin')
| -rwxr-xr-x | dotfiles/hyprland/.local/bin/focus-restore | 9 | ||||
| -rwxr-xr-x | dotfiles/hyprland/.local/bin/hyprland-plugins-setup | 47 | ||||
| -rwxr-xr-x | dotfiles/hyprland/.local/bin/layout-cycle | 35 |
3 files changed, 35 insertions, 56 deletions
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 |
