summaryrefslogtreecommitdiff
path: root/dotfiles/hyprland/.local/bin
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/hyprland/.local/bin')
-rwxr-xr-xdotfiles/hyprland/.local/bin/focus-restore9
-rwxr-xr-xdotfiles/hyprland/.local/bin/hyprland-plugins-setup47
-rwxr-xr-xdotfiles/hyprland/.local/bin/layout-cycle35
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