Fórum Ubuntu Linux - PT

Suporte Técnico => Programação e Scripts => Tópico iniciado por: rodneitc em 12 de Julho de 2012, 13:51

Título: Script para diminuir gamma do monitor
Enviado por: rodneitc em 12 de Julho de 2012, 13:51
Olá. Sou iniciante e uso o Ubuntu 12.04 em um notebook. Gostaria de diminuir o gamma do meu monitor e consegui fazer isso com comandos via terminal.

Mas como faço para criar um Shell Script para executar esses comandos automaticamente cada vez que inicio o sistema?

Acho que o script é simples, mas não sei programar. Já criei um arquivo .sh para iniciar com o sistema, mas não sei o que escrever dentro dele além dos códigos abaixo. Alguém pode me ajudar?

#!/bin/bash
xgamma -rgamma 0.65
xgamma -ggamma 0.65
xgamma -bgamma 0.65
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 12 de Julho de 2012, 14:40
Se são esses os comandos necessários, então está bom.
Você coloca condicionais e etc, só quando necessário.
Quanto mais simples e claro, mais fácil fica a manutenção.
Título: Re: Script para diminuir gamma do monitor
Enviado por: rodneitc em 12 de Julho de 2012, 14:50
Obrigado pela resposta, mas como o script não está executando imaginei que faltassem comandos.

No terminal, as linhas abaixo fazem efeito perfeitamente:
xgamma -rgamma 0.65
xgamma -ggamma 0.65
xgamma -bgamma 0.65


Mas, no script, como fazer? Coloquei o script pra iniciar indo em "Aplicativos de Sessão" e indicando o caminho do arquivo .sh que criei. Há alguma alternativa?
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 12 de Julho de 2012, 15:01
Deu permissão de execução ao arquivo? Você executa com o seu usuário ou usando sudo?
Título: Re: Script para diminuir gamma do monitor
Enviado por: rodneitc em 12 de Julho de 2012, 15:15
Hmm, não sei como dar permissão para scripts (pesquisei agora, não encontrei isso).

Quando adicionei o arquivo .sh que eu criei para ser executado automaticamente, fiz via ambiente gráfico (menu "Aplicativos de sessão").

Fiz tudo com meu usuário.
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 12 de Julho de 2012, 16:39
Código: [Selecionar]
chmod +x /caminho/ate/o/script.shIsso vai dar permissão de execução. Pra ter certeza que ele funciona, pode executá-lo (no terminal):
Código: [Selecionar]
./caminho/ate/o/script.sh

Título: Re: Script para diminuir gamma do monitor
Enviado por: rodneitc em 12 de Julho de 2012, 18:24
Os códigos executam o script, obrigado! Entretanto, o script não é executado automaticamente quando reinicio o sistema.

No ambiente gráfico, cliquei com o botão direito no arquivo do script e, em "Propriedades", marquei a opção que permite executar o arquivo como um programa. Agora, posso executá-lo tanto via terminal quanto no ambiente gráfico que ele cumpre a função de reduzir o gamma.

Incluir o script .sh em "Aplicativos de sessão" não deveria bastar para executá-lo automaticamente a cada início de sessão?
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 12 de Julho de 2012, 19:40
Sim, onde o script está? Faça assim

Código: [Selecionar]
[Desktop Entry]
Name=gamma
Exec=bash /caminho/ate/o/script.sh
Terminal=false
Icon=gtk-execute

Salve com a extensão ".desktop", no diretório "~/.config/autostart", e veja se funciona.

Obs: use o caminho absoluto.
Título: Re: Script para diminuir gamma do monitor
Enviado por: rodneitc em 16 de Julho de 2012, 14:40
Não funcionou...

Na verdade, eu nem consegui localizar a pasta citada.
O arquivo .sh está na raiz da minha página pessoal.

As únicas pastas "autostart" que encontrei são essas três:

/etc/xdg/autostart
/usr/share/gdm/autostart
/usr/share/gnome/autostart
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 16 de Julho de 2012, 17:10
"/etc/xdg/autostart" também serve, é o diretório global.
Título: Re: Script para diminuir gamma do monitor
Enviado por: rodneitc em 16 de Julho de 2012, 17:47
Obrigado pela ajuda paciente, mas não funcionou novamente...
Creio que fiz tudo certo (tive que logar como root pra salvar o arquivo .desktop em "/etc/xdg/autostart").
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 16 de Julho de 2012, 18:16
Qual é o caminho completo e o nome do script (se não for script.sh)?
Título: Re: Script para diminuir gamma do monitor
Enviado por: raidicar em 16 de Julho de 2012, 18:23
Dentro de sua pasta home, existe um arquivo oculto chamado .profile.

Já que enrolou o autostart, vou lhe apresentar outras duas formas:

Forma 1: Aplicando as alterações assim que logar no sistema.
no terminal (Não como root, com seu usuário normal), de o comando gedit ~/.profile
Vai abrir o editor de texto com o conteúdo do arquivo .profile.
No final do arquivo, adicione (não apague nada do arquivo, apenas adicione) as linhas:

Código: [Selecionar]
# Configuração do Gama
xgamma -rgamma 0.65
xgamma -ggamma 0.65
xgamma -bgamma 0.65
Salve e feche o arquivo.
Quando iniciar o sistema, as alterações serão aplicadas logo que colocar o usuário e senha.


Forma 2: Aplicando as alterações durante o boot.
Da mesma forma que editou o .profile, você deve editar o arquivo rc.local localizado no diretório /etc.
Porém, é preciso ser superusuário, então, no terminal, de o comando: sudo gedit /etc/rc.local
Repare que a ultima na ultima linha do arquivo esta escrito exit 0
Da mesma forma que o .profile, não remova nenhuma linha, apenas adicione.
Entretanto, ao contrário do .profile, onde adicionou na ultima linha, no rc.local, as linhas devem ser adicionadas acima de exit 0
O final do arquivo ficaria assim:

Código: [Selecionar]
# Configuração do Gama
xgamma -rgamma 0.65
xgamma -ggamma 0.65
xgamma -bgamma 0.65

exit 0
Agora os comandos são executados durante o boot.

Teste de um jeito, depois do outro. Assim aprenderá uma das funcionalidades desses arquivos.

Lembre-se, caso tenha medo de estragar algum arquivo importante (e esses arquivos são importantes), faça um backup antes.
como root: sudo cp -p /etc/rc.local /etc/rc.local.bkp
e
com seu usuário: cp ~/.profile ~/.profile.bkp

Assim você faz cópias dos arquivos e caso cometa algum erro, basta voltar a cópia:
como root: sudo cp -p /etc/rc.local.bkp /etc/rc.local
e
com seu usuário: cp ~/.profile.bkp ~/.profile

Sempre faça isso quando for alterar algum arquivo importante do sistema.
Mesmo nesse caso, onde a alteração é bem simples.

Att,
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 16 de Julho de 2012, 18:30
O que "enrolou", deve ser algum detalhe, como uso de "~" ou espaço no caminho.
Título: Re: Script para diminuir gamma do monitor
Enviado por: rodneitc em 16 de Julho de 2012, 19:49
irtigor: Esse é o caminho do script que criei: /home/rodnei/Scripts/gamma.sh

raidicar: Testei as duas soluções, não funcionaram.

...

Desativei todas as soluções (inclusive aquela que havia tentado via ambiente gráfico, que incluía o script .sh como um aplicativo inicial de sessão).

O curioso é que quando as soluções estavam ativas, no momento em que aparecia a tela de boot (?) do sistema (aquela tela com fundo roxo, escrito "ubuntu") o gamma reduzia por uns 2 segundos. Mas, ainda nessa tela, já voltava pros padrões antes de carregar o ambiente gráfico.
Título: Re: Script para diminuir gamma do monitor
Enviado por: irtigor em 17 de Julho de 2012, 13:50
Coloque um atraso:

Código: [Selecionar]
#!/bin/bash
sleep 60
xgamma -rgamma 0.65
xgamma -ggamma 0.65
xgamma -bgamma 0.65
Título: Re: Script para diminuir gamma do monitor
Enviado por: raidicar em 17 de Julho de 2012, 15:41
O curioso é que quando as soluções estavam ativas, no momento em que aparecia a tela de boot (?) do sistema (aquela tela com fundo roxo, escrito "ubuntu") o gamma reduzia por uns 2 segundos. Mas, ainda nessa tela, já voltava pros padrões antes de carregar o ambiente gráfico.

Na verdade, funcionou, mas após funcionar, o sistema voltou a carregar os valores padrões.
Em suma, o script deve ser executado depois que os valores padrões são carregados pelo S.O.

Como disse o companheiro irtigor, vai precisar de um delay.
Como esse delay não pode ser colocado no rc.local, esqueça a solução que lhe foi passada anteriormente.

Solução1:
Inserir o delay dentro do script e tentar novamente utilizar o /etc/xdg/autostar.
Não devia estar funcionando por que o S.O devia retornar os bvalores padrões.

Solução 2:
Dentro do SEU .profile, acrescente na ultima linha a linha abaixo:
nohup /home/rodnei/Scripts/gamma.sh &
O final do .profile ficaria mais ou menos assim:
Código: [Selecionar]
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
nohup /home/rodnei/Scripts/gamma.sh &
obs: Lembre-se, o linux diferencia maiuscula e minuscula, Se esse é o caminho do script, certifique-se que a pasta Script comece mesmo com Maiuscula. /home/rodnei/Scripts/gamma.sh, ou o caminho não será encontrado.

Deixe o arquivo /home/rodnei/Scripts/gamma.sh assim:

#!/bin/bash
#atraso de 30 segundos,
sleep 30
xgamma -rgamma 0.65
xgamma -ggamma 0.65
xgamma -bgamma 0.65
xgamma 2> /tmp/gamma.log

Isso fará com que uma pausa de 30 segundos será dada antes da execução dos comandos.
Como o S.O "configura" o gamma automaticamente, os comandos serão processados após essa ação do S.O.

Também será gerado um arquivo com o resultado do comando no tmp.
Após colocar usuário e senha e aguardar o login por uns 30 segundos, no terminal, de o comando:
cat /tmp/gamma.log e veja o conteúdo do arquivo.

Se o arquivo não existir, é por que o script não foi executado e algo deve estar errado. O arquivo deve ser gerado, independente se adotou a solução 1 ou 2.
Faça de um jeito, não dando certo, faça de outro e veja qual das duas situações gera o arquivo com o resultado do gamma.


Para o caso da solução 2:
1 - verifique se o arquivo editado com o caminho do script é realmente o seu .profile.
Se quando editou o .profile, o arquivo estava em branco, então era o arquivo errado por que o .profile tem conteúdo.
2 - Verifique se o caminho do Script está correto, digitando no terminal ls /home/rodnei/Scripts/gamma.sh.

Se executou o comando gedit ~/.profile como root, estará editando o .profile do root (/root/.profile) e, nesse caso, não funcionará.
Tem de editar o seu .profile (/home/rodnei/.profile).
para isso, com seu usuário no terminal, digite gedit ~/.profile ou, para não ter erro, gedit /home/rodnei/.profile
Título: Re: Script para diminuir gamma do monitor
Enviado por: rodneitc em 17 de Julho de 2012, 16:43
Funcionou, obrigado!

Não precisei colocar o arquivo .sh na pasta autostar, nem editar o .profile.

Depois de incluir o atraso no meu script, bastou voltar a adicionar o caminho do arquivo .sh em Aplicativos de Sessão, via ambiente gráfico.
Também testei diferentes tempos de atraso e bastou colocar "sleep 2".

Valeu!
Título: Re: Script para diminuir gamma do monitor
Enviado por: raidicar em 17 de Julho de 2012, 16:59
Ok, o sleep 2 pode não dar certo vez ou outra, por algum atraso do S.O, se com 2 segundos de atraso deu certo, com 10 segundos nunca dará erro.
Todos os meios funcionam, mas precisavam de um atraso (de 30 a 60 segundos, utilizando o autostart) ou de apenas alguns segundos utilizando o .profile ou da forma que fez.
Só faltou informar que o problema foi resolvido no titulo do tópico.

Boa sorte,

Att,