summaryrefslogtreecommitdiff
path: root/dotfiles
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles')
-rw-r--r--dotfiles/hyprland/.config/hypr/hyprland.conf8
-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
4 files changed, 39 insertions, 60 deletions
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf
index 0550a76..9a895fc 100644
--- a/dotfiles/hyprland/.config/hypr/hyprland.conf
+++ b/dotfiles/hyprland/.config/hypr/hyprland.conf
@@ -21,7 +21,6 @@ exec-once = systemctl --user restart xdg-desktop-portal-hyprland xdg-desktop-por
exec-once = /usr/lib/polkit-kde-authentication-agent-1
exec-once = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh
exec-once = dunst > ~/.local/var/log/dunst-$(date +%Y-%m-%d-%H%M%S).log 2>&1
-exec-once = hyprland-plugins-setup && sleep 1 && hyprctl dismissnotify -1
# Desktop appearance
exec-once = swww-daemon && sleep 1 && swww img ~/pictures/wallpaper/trondheim-norway.jpg
@@ -200,12 +199,13 @@ bind = $mod, G, centerwindow
bind = $mod, TAB, workspace, previous
bind = $mod SHIFT, C, killactive
-# Layouts: master -> scrolling -> monocle -> floating
-# Click waybar layout icon to cycle, or use direct keybindings:
+# Layouts: master -> scrolling -> monocle
+# Cycle with Shift+arrows, or jump directly with Shift+T/S/M
+bind = $mod SHIFT, RIGHT, exec, layout-cycle next
+bind = $mod SHIFT, LEFT, exec, layout-cycle prev
bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master && hyprctl keyword master:orientation left
bind = $mod SHIFT, S, exec, hyprctl keyword general:layout scrolling
bind = $mod SHIFT, M, exec, hyprctl keyword general:layout monocle
-bind = $mod SHIFT, F, exec, hyprctl dispatch workspaceopt allfloat
bind = $mod SHIFT, SPACE, togglefloating
# Master layout adjustments
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