A solução Fortran.
No diretório inicial do Linux, crie um subdiretório /mygamma/
O diretório mygamma contém seis arquivos:
2 scripts de programas fortran: contrastdown.f90
e contrastup.f90
,
seus executáveis gammadown
e gammaup
,
e um arquivo shebang xgammasave
que salva o valor atual do xgamma em um arquivo de texto xgammaval.txt
O arquivo xgammasave tem esta aparência:
#!/bin/bash
xgamma |& tee ~/mygamma/xgammaval.txt
O arquivo contrastup.f90
tem esta aparência:
program contrastup
character(len=20):: string,string2,string3 ! variable type declarations
real(kind(1.0)) :: x
call system('/home/my_name/mygamma/xgammasave') ! write the xgamma value to a file
open(unit=2,file='/home/my_name/mygamma/xgammaval.txt',action='read',status='old')
read(unit=2,fmt=*)string,string2,string3 ! read the file
read(string3,*)x ! make a real from a string
x=x/1.2 ! change the contrast
if (x .le. 0.1) goto 10 ! xgamma value can not be less than 0.1
write(string,*)x ! make a string from a real
string2='xgamma -gamma ' // trim(string) ! concatenate 2 strings
call system(string2) ! pass the string to the command line
10 close(unit=2)
end program contrastup
e contrastdown.f90
program contrastdown
character(len=20):: string,string2,string3 ! variable type declarations
real(kind(1.0)) :: x
call system('/home/my_name/mygamma/xgammasave') ! write xgamma value to a file
open(unit=2,file='/home/my_name/mygamma/xgammaval.txt',action='read',status='old')
read(unit=2,fmt=*)string,string2,string3 ! read the record
read(string3,*)x ! make a real from a string
x=x*1.2 ! change the contrast
if (x .ge. 10.0) goto 10 ! xgamma value can not be greater than 10.0
write(string,*)x ! make a string from a real
string2='xgamma -gamma ' // trim(string) ! concatenate two strings
call system(string2) ! pass the string to the command line
10 close(unit=2)
end program contrastdown
Crie os arquivos executáveis do Fortran gammaup
e gammadown
:
~/mygamma $ gfortran contrastup.f90 -o gammaup
~/mygamma $ gfortran contrastdown.f90 -o gammadown
Dependendo do sabor do Linux, no Centro de controle > Atalhos de teclado, em 'Atalhos personalizados', selecione 'adicionar', no campo de nome digite o nome da tecla de atalho 'aumentar gama' e na caixa de comando digite /home/my_name/mygamma/gammaup
e da mesma forma para a tecla 'menor contraste' com o comando /home/my_name/mygamma/gammadown
No meu laptop Fn F6 e Fn F5 são as teclas de brilho para cima / baixo padrão, agora acima deles os novos Shift F6 e Shift F5 são as teclas de subida / descida do contraste. Filmes vintage preto e branco agora ficam bem na tela brilhante:)
A solução Fortran pode ser Code Golf
para menos linhas.