Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

### 2026-03-28

cycle-layout: added a flag to set previous layout

### 2026-03-27

cycle-layout: added cycle-layout script
Expand Down
3 changes: 3 additions & 0 deletions cycle-layout/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ Tiny script to cycle layouts (dwindle, scrolling, monocle, master) for current w
Run Makefile or simply copy this script where you'd want to, then add this to your hyprland config:

```ini
# Set next layout
bind = SUPER CTRL, tab, exec, cycle-layout
# Set previous layout
bind = SUPER SHIFT CTRL, tab, exec, cycle-layout --prev
```

14 changes: 10 additions & 4 deletions cycle-layout/cycle-layout
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,24 @@ LAYOUT=$(printf '%s' "$INFO" | jq -r '.tiledLayout')
WORKSPACE_ID=$(printf '%s' "$INFO" | jq -r '.id')
WORKSPACE_NAME=$(printf '%s' "$INFO" | jq -r '.name')

NEXT=-1
CURRENT=0

for i in "${!LAYOUTS[@]}"; do
if [ "${LAYOUTS[i]}" = "$LAYOUT" ]; then
NEXT=$(( (i + 1) % ${#LAYOUTS[@]} ))
CURRENT=i
break
fi
done

hyprctl keyword workspace "$WORKSPACE_ID", layout:"${LAYOUTS[$NEXT]}" > /dev/null
if [[ "$1" == "--prev" ]]; then
TARGET=$(( (i - 1) % ${#LAYOUTS[@]} ))
else
TARGET=$(( (i + 1) % ${#LAYOUTS[@]} ))
fi

hyprctl keyword workspace "$WORKSPACE_ID", layout:"${LAYOUTS[$TARGET]}" > /dev/null

notify-send --icon state-information \
--app-name $0 \
-h "string:x-canonical-private-synchronous:$0" \
"Workspace layout was changed" "Layout for workspace $WORKSPACE_NAME: - ${LAYOUTS[$NEXT]}"
"Workspace layout was changed" "Layout for workspace $WORKSPACE_NAME: - ${LAYOUTS[$TARGET]}"
Loading