161c6337a4
useful for going from special workspace to normal workspace
42 lines
1.2 KiB
Nix
42 lines
1.2 KiB
Nix
{pkgs, ...}: let
|
|
hakase-workspace-switch-force = pkgs.writeShellScriptBin "hakase-workspace-switch-force" ''
|
|
# Define binary paths to ensure they work regardless of environment PATH
|
|
HYPRCTL="${pkgs.hyprland}/bin/hyprctl"
|
|
JQ="${pkgs.jq}/bin/jq"
|
|
|
|
# Get the special workspace name
|
|
special_workspace=$($HYPRCTL monitors -j | $JQ -r '.[] | select(.focused) | .specialWorkspace.name')
|
|
|
|
# Strip the "special:" prefix (Nix escape: ''${var#*:})
|
|
workspace_name=''${special_workspace#*:}
|
|
|
|
# Get the target workspace number from argument
|
|
chosen_workspace_num=$1
|
|
|
|
if [[ -z ''${chosen_workspace_num} ]]; then
|
|
echo "Usage: $(basename "$0") [number]"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if we are actually in a special workspace
|
|
if [[ "''${special_workspace}" == *"special"* ]]; then
|
|
echo "[LOG] workspace is ''${special_workspace}"
|
|
|
|
# Toggle the special workspace OFF
|
|
$HYPRCTL dispatch togglespecialworkspace "''${workspace_name}"
|
|
|
|
# Switch to the requested normal workspace
|
|
$HYPRCTL dispatch workspace "''${chosen_workspace_num}"
|
|
else
|
|
echo "[ERR] workspace is not special"
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|
|
'';
|
|
in {
|
|
home.packages = [
|
|
hakase-workspace-switch-force
|
|
];
|
|
}
|