A postagem original dizia respeito ao uso de um script para fazer um aplicativo aparecer em um espaço de trabalho específico, de modo que outro script possa ser usado no script de Inicialização para permitir que o usuário continue trabalhando enquanto um aplicativo inicial muito lento é carregado em outro espaço de trabalho. Meu script funciona muito bem como front-end para a sintaxe bastante complicada do wmctrl, para iniciar qualquer aplicativo em qualquer espaço de trabalho, em qualquer prompt de comando. Portanto, um outro script que simplesmente lista algo como lh 1 thunderbird; lh 2 firefox; lh 3 calculator
... ou qualquer outra coisa agora é fácil. No entanto, existem algumas dificuldades com o tempo, portanto, o sono no meu script. A seguir, a versão atualizada, que não vou manter ou publicar novamente. Use COMO ESTÁ, nenhuma garantia de adequação a qualquer uso específico. Modifique como quiser. Sugiro salvar como /usr/local/bin/lh
, simplesmente porquelh
não existe outro nome de programa conhecido, pelo menos não na Casa da Moeda 18. Quanto às variáveis - citei variáveis que julguei necessárias.
#!/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