Como posso reduzir o tempo de login ao adiar / atrasar alguns aplicativos de inicialização?

11

Eu configurei alguns aplicativos para inicialização em cada login (por exemplo, redshift-gtk, gtg) automaticamente, mas depois de adicioná-los a aplicativos de inicialização ( System -> Preferences -> Startup Applications ), obviamente, o tempo gasto para login aumentou. Devido a tudo isso, o tempo que leva para os meus painéis, área de trabalho, etc. aparecerem é muito longo - até que eu sou forçado a esperar.

Eu não preciso que esses aplicativos estejam disponíveis imediatamente, mas seria bom se eles fossem iniciantes, enquanto o menu / painel do ubuntu está disponível para rodar outros aplicativos que eu possa precisar.

Eu tentei usar no comando, com a intenção de editar todos os aplicativos de inicialização para colocar os comandos na fila at, mas isso não funcionou, já que os aplicativos não obtêm as variáveis de ambiente necessárias (como DISPLAY).

É para isso que o comando nice é usado? Alguma outra ideia de como posso conseguir isso? Se possível, gostaria de evitar a edição dos comandos de aplicativos de inicialização, pois isso significaria muito esforço para replicar em outras máquinas que eu uso.

    
por koushik 07.09.2010 / 16:11

3 respostas

11

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.
por ændrük 07.09.2010 / 22:10
5

Descobri que apenas usando sleep 10 && COMMAND como o nome do comando não funcionou. Eu tive problemas com carregamento conky e xchat muito cedo e ficar corrompido de alguma forma. Eu tive que escrever um pequeno script chamado ~/bin/startup e colocar isso nele:

#!/bin/bash
sleep 10
xchat &
conky &

Você precisa alterar suas permissões para poder ser executado com chmod +x ~/bin/startup e, em seguida, basta substituir a entrada de aplicativos de inicialização pelo comando startup e disparar tudo no script.

Você poderia ter um arquivo para cada aplicativo se estivesse assim.

    
por Oli 07.09.2010 / 21:34
2

Use o comando 'sleep'.

No sistema - > Preferências - > Startup Applications, edite o comando para os programas que você deseja atrasar:

sleep 10 && COMMAND

Substitua 10 pelo número de segundos que você deseja aguardar e COMMAND com o que estava originalmente na caixa de comando.

    
por dv3500ea 07.09.2010 / 16:27

Tags