Sou relativamente novo no Linux e novo no script do bash.
Estou tentando configurar uma chave Fn-F5 no meu antigo netbook Asus EEE para alternar entre monitores internos e externos.
Criando um script bash em ~/bin/toggle_displays.sh
:
#!/bin/bash
if (xrandr | grep "VGA1 disconnected"); then
# external monitor not connected: do nothing
xrandr --output LVDS1 --auto --output VGA1 --off
else
# external monitor connected: toggle monitors
if (xrandr | grep -E "LVDS1 connected (primary )?\("); then
xrandr --output LVDS1 --auto --output VGA1 --off
else
xrandr --output LVDS1 --off --output VGA1 --auto
fi
fi
Adicionando tecla de atalho à seção <keyboard>
de ~/.config/openbox/lubuntu-rc.xml
:
...
<keybind key="XF86Display">
<action name="Execute">
<command>~/bin/toggle_displays.sh</command>
</action>
</keybind>
...
O problema é muito estranho: quando a exibição interna está ativa, a mudança para externo sempre funciona. Mas quando o externo está ativo, a comutação apenas faz uma tela preta com o cursor do mouse na tela interna. Mais surpreendentemente, o último switch às vezes funciona se eu executar o script do terminal, não com hotkey.
Qual pode ser o problema? E como eu poderia depurar isso?
Como nota lateral, a execução do script do terminal para alternar do monitor externo para o interno imprime LVDS1 connected primary (normal left inverted right x axis y axis)
no terminal. Por que isso acontece se eu não echo
no meu script?
EDITAR:
Aqui está minha saída xrandr
(usando monitor externo):
Screen 0: minimum 8 x 8, current 1680 x 1050, maximum 32767 x 32767
LVDS1 connected primary (normal left inverted right x axis y axis)
1024x600 60.0 +
800x600 60.3 56.2
640x480 59.9
VGA1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
1680x1050 60.0*+
1600x1200 60.0
1280x1024 75.0 60.0
1440x900 75.0 59.9
1280x800 59.8
1152x864 75.0
1024x768 75.1 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 75.0 72.8 66.7 60.0
720x400 70.1
VIRTUAL1 disconnected (normal left inverted right x axis y axis)