#!/bin/bash # __ __ _ # | \/ | _____ _____ | |_ ___ # | |\/| |/ _ \ \ / / _ \ | __/ _ \ # | | | | (_) \ V / __/ | || (_) | # |_| |_|\___/ \_/ \___| \__\___/ # # Function to log messages (useful for debugging) log_message() { # echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> ~/moveto_log.txt echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" } # Get the target workspace from the argument target_workspace=$1 # Check if a target workspace was provided if [ -z "$target_workspace" ]; then log_message "Error: No target workspace provided" exit 1 fi # Get the current active workspace current_workspace=$(hyprctl activewindow -j | jq '.workspace.id') if [ -z "$current_workspace" ]; then log_message "Error: Couldn't determine current workspace" exit 1 fi log_message "Moving from workspace $current_workspace to $target_workspace" # Get all window addresses in the current workspace window_addresses=$(hyprctl clients -j | jq -r ".[] | select(.workspace.id == $current_workspace) | .address") # Move each window to the target workspace for address in $window_addresses; do log_message "Moving window $address to workspace $target_workspace" hyprctl dispatch movetoworkspacesilent "$target_workspace,address:$address" done log_message "Finished moving windows" # Switch to the target workspace hyprctl dispatch workspace "$target_workspace" log_message "Switched to workspace $target_workspace"