Skip to content

Instantly share code, notes, and snippets.

@mmodrow
Last active January 22, 2019 15:16
Show Gist options
  • Save mmodrow/d7412a51c71dc6378c55d379ab507bdd to your computer and use it in GitHub Desktop.
Save mmodrow/d7412a51c71dc6378c55d379ab507bdd to your computer and use it in GitHub Desktop.
Allocate Workspaces to Applications in Ubuntu
#!/bin/bash
function allocateByName() {
ID=$(getWindowIdByTitle "$1")
if [ "$ID" = "" ]; then
echo "Window $1 not found."
echo ""
else
allocateByIds "$ID" $2 "$1" "$3"
fi
}
function allocateByIds() {
WINDOWIDS="$1"
WORKSPACEID="$2"
NAME="$3"
HINT="$4"
while read -r line; do
allocateById "$line" $WORKSPACEID "$NAME" "$HINT"
done <<< "$WINDOWIDS"
}
function allocateById() {
WINDOWID="$1"
WORKSPACEID="$2"
NAME="$3"
HINT="$4"
if [ "$HINT" != "" ]; then
NAME="$NAME ($HINT)"
fi
CALLOUT=""
if [ "$NAME" = "" ]; then
CALLOUT="$WINDOWID"
else
CALLOUT="$NAME (#$WINDOWID)"
fi
wmctrl -i -r $WINDOWID -t $WORKSPACEID
echo "Moved window $CALLOUT to workspace $2."
echo ""
}
function getWindowIdByTitle() {
wmctrl -l | grep "$1" | awk '{print $1}'
}
function listWindows {
echo "-------------------------------------"
wmctrl -l
echo "-------------------------------------"
echo ""
}
listWindows
# main workspace
allocate "Some Workspace 0 Application" 0
allocate "Another Workspace 0 Application" 0
# workspace 1
allocate "Some Workspace 1 Application" 1 "Display name, because the title isn't obvious"
# workspace 2
allocate "Some Workspace 2 Application" 2
# workspace 3
allocate "Some Workspace 3 Application" 3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment