O número de segundos necessários para aguardar o carregamento de sua área de trabalho é arbitrário e pode mudar dependendo da situação. Em vez de sleep
, tente usar o seguinte para executar aplicativos de inicialização assim que o carregamento do sistema for recusado:
(Editar: Adicionada a sugestão de koushik.)
#!/bin/bash
#
# Delays running an application until the system load has declined.
#
# Usage:
# run-when-load-low 'your command here'
echo "export DISPLAY=$DISPLAY; $1 &" | batch
exit 0
Salve-o como ~/bin/run-when-load-low
e adicione run-when-load-low 'COMMAND'
nas preferências de aplicativos de inicialização.
Notas sobre este método:
- O script acima é o que funcionou para mim. Ele passa apenas a variável de ambiente
DISPLAY
para o aplicativo. Para os aplicativos mais da área de trabalho, isso será tudo o que você precisa. Com isso dito, lembre-se de considerar casos especiais e tenha isso em mente ao solucionar problemas que não estão se comportando corretamente. Um bom lugar para começar, se você acha que um aplicativo pode precisar de outras variáveis de ambiente passadas, éprintenv
e a documentação do aplicativo, embora eu ainda não tenha encontrado esse problema. - Meu entendimento do valor "load" do sistema é que ele leva em consideração as esperas de IO, portanto, os aplicativos atrasados não devem iniciar acidentalmente muito cedo durante as pausas de uso da CPU causadas por processos de desktop aguardando o IO. Esta não é uma área que eu conheço muito, então por favor me corrija se eu estiver errado aqui.
-
batch
afeta apenas os aplicativos quando são executados; não altera a sua prioridade / nicencia. - Isso não deveria ser dito, mas se o seu sistema sempre tiver uma carga alta, os aplicativos programados usando esse método talvez nunca sejam executados.
- Se você precisar executar um aplicativo com um parâmetro que contenha espaços, será possível evitá-los usando a barra invertida:
run-when-load-low 'gedit My\ Notes.txt'
. Se você realmente precisa passar parâmetros com aspas simples para o seu aplicativo, você terá que usar aspas duplas no comando de inicialização:run-when-load-low "gedit 'My Notes.txt'"
. Para qualquer coisa mais complicada do que isso, você provavelmente é melhor apenas modificar uma cópia do script com seu comando codificado.