diff --git a/CHANGELOG.md b/CHANGELOG.md index ccf4b43..a891756 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/cycle-layout/README.md b/cycle-layout/README.md index e1f9fda..f99b659 100644 --- a/cycle-layout/README.md +++ b/cycle-layout/README.md @@ -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 ``` diff --git a/cycle-layout/cycle-layout b/cycle-layout/cycle-layout index 22bb3da..0a8107a 100755 --- a/cycle-layout/cycle-layout +++ b/cycle-layout/cycle-layout @@ -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]}"