Оригінальна публікація стосувалася використання сценарію для того, щоб програма з’явилася на певній робочій області, таким чином, щоб інший сценарій міг бути використаний у сценарії запуску, щоб користувач міг продовжувати працювати, поки дуже повільний запуск програми завантажується на іншу робочу область. Мій сценарій чудово працює як передній для досить громіздкого синтаксису wmctrl, щоб запустити будь-яку одну програму на будь-якій робочій області з будь-якого командного рядка. Таким чином, подальший сценарій, який просто перераховує щось на кшталт, lh 1 thunderbird; lh 2 firefox; lh 3 calculator
...., або будь-що інше, зараз простий. Однак є певні труднощі з тимчасовим часом, тому сон у моєму сценарії. Нижче наведена оновлена версія, яку я більше не буду підтримувати або публікувати. Використовуйте ЯК Є Є, не гарантуйте придатність для будь-якого конкретного використання. Модифікуйте як завгодно. Я пропоную заощадити так /usr/local/bin/lh
, просто томуlh
це не будь-яке інше відоме ім'я програми, принаймні, не на Монетному дворі 18. Щодо змінних - я наводив змінні, які я вважав за необхідне цитувати.
#!/bin/sh
## Author: B.A. Computer Services www.ba-computer.com
## Purpose: Frontend to launch anything on a specific desktop/workspace.
## lh is short for LaunchHere
USAGE="USAGE: $(basename $0) [-r] workspace(1,2,..) command\
LaunchHere launches COMMAND on specific workspace.\
-r option returns to current workspace"
[ -z "$1" ] && echo $USAGE && exit 0
ISRETURN=$(false); [ "$1" = "-r" ] && ISRETURN=true && shift;
WRKSPC=$1;[ -z "$WRKSPC" ] && echo $USAGE && exit 0
WSN=$(expr $WRKSPC - 1) ## wmctrl starts with 0 as first wrkspc
shift; CMD="$*"; [ -z "$CMD" ] && echo $USAGE && exit 0
WM=$(which wmctrl);[ -z "$WM" ] && echo MISSING wmctrl && exit 1
CURRENT=$(wmctrl -d | grep '*' | cut -c1)
# Switch to desired workspace
$WM -s $WSN
$CMD &
PID=$!
echo Executed $CMD on workspace $WRKSPC, PID=$PID
sleep 3
# Return to CURRENT workspace ?
# [ $ISRETURN ] && echo TRUE || echo FALSE
[ $ISRETURN ] && $WM -s $CURRENT