Files
nixos/apps/hyprland/scripts/workspace-toggle.nix
T
kenji 9b85f9edd5 upd
2026-05-07 11:45:52 -05:00

25 lines
980 B
Nix

{pkgs, ...}: let
workspace-toggle = pkgs.writeShellScriptBin "workspace-toggle" ''
#!/usr/bin/env bash
target_workspace="$1"
# Get current workspace info
current_info=$(${pkgs.hyprland}/bin/hyprctl activeworkspace -j)
current=$(echo "$current_info" | ${pkgs.jq}/bin/jq -r '.id')
# Check if we're in a special workspace (negative ID)
if [[ $current -lt 0 ]]; then
# We're in a special workspace, force switch to target workspace
${pkgs.hyprland}/bin/hyprctl dispatch focusworkspaceoncurrentmonitor "$target_workspace"
elif [[ $current -eq $target_workspace ]]; then
# We're already on the target workspace, toggle back to previous
${pkgs.hyprland}/bin/hyprctl dispatch workspace previous
else
# We're on a different normal workspace, switch to target using split:workspace
${pkgs.hyprland}/bin/hyprctl dispatch split:workspace "$target_workspace"
fi
'';
in {
home.packages = [workspace-toggle];
}