Meu-indicador meteorológicoé provavelmente o melhor widget de clima para desktop Ubuntu.
No entanto, é necessário manualmentereposicionar widgets da área de trabalho(por exemplo, alinhado no canto superior direito)toda vez que um monitor externo é conectadopara um laptop.
Que tal um script de inicialização que reposicione automaticamente os widgets da área de trabalho do meu indicador meteorológico (por exemplo, 2 "superclock") para monitor externo? Ou alguma outra solução (talvez melhor)?
Responder1
Aqui está um exemplo de script de inicialização
que pode ser inserido na Exec=
linha do ~/.config/autostart/my-weather-indicator.desktop
arquivo em vez do comando /opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator
:
#!/bin/bash
while true
do
MONITORS="$(xrandr | grep -v "eDP1 " | grep -c " connected ")"
if [[ "$MONITORS" -eq 0 ]] # no external monitor, LCD panel only
then
MONINTX="$(xrandr | grep "eDP1 connected " | sed -e 's/^eDP1 connected primary //g' -e 's/x.*$//g')"
MONINTV="$(expr $MONINTX - 316)"
MONINT1="$(grep -c "\"wp1-x\": $MONINTV" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf")"
if [[ "$MONINT1" -eq 0 ]] # widget1 not configured for LCD panel
then
sed -i "s/\"wp1\-x\"\: [0-9]*/\"wp1\-x\"\: $MONINTV/" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf"
echo "REFRESH" > "/tmp/my-weather-indicator_mon-int"
fi
MONINT2="$(grep -c "\"wp2-x\": $MONINTV" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf")"
if [[ "$MONINT2" -eq 0 ]] # widget2 not configured for LCD panel
then
sed -i "s/\"wp2\-x\"\: [0-9]*/\"wp2\-x\"\: $MONINTV/" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf"
echo "REFRESH" > "/tmp/my-weather-indicator_mon-int"
fi
if [ -f "/tmp/my-weather-indicator_mon-int" ] # marker file
then
if [ -s "/tmp/my-weather-indicator_mon-int" ] # content
then
PID="$(ps -e -o pid,cmd | grep "/usr/bin/python3 /opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" | egrep -v grep | awk '{print$1}')"
if [[ "$PID" -eq 0 ]] # not running, start
then
rm "/tmp/my-weather-indicator_mon-int"
"/opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" &
else
kill -9 "$PID" # running, re-start
rm "/tmp/my-weather-indicator_mon-int"
"/opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" &
fi
fi
fi
else # external monitor connected
MONEXTX="$(xrandr | grep " connected " | grep -v "eDP1" | sed -e 's/^e*[A-Z]*[A-Z][A-Z][0-9] connected primary //g' -e 's/x.*$//g')"
MONEXTV="$(expr $MONEXTX - 316)"
MONEXT1="$(grep -c "\"wp1-x\": $MONEXTV" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf")"
if [[ "$MONEXT1" -eq 0 ]] # widget1 not configured for external monitor
then
sed -i "s/\"wp1\-x\"\: [0-9]*/\"wp1\-x\"\: $MONEXTV/" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf"
echo "REFRESH" > "/tmp/my-weather-indicator_mon-ext"
fi
MONEXT2="$(grep -c "\"wp2-x\": $MONEXTV" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf")"
if [[ "$MONEXT2" -eq 0 ]] # widget2 not configured for external monitor
then
sed -i "s/\"wp2\-x\"\: [0-9]*/\"wp2\-x\"\: $MONEXTV/" "/home/$USER/.config/my-weather-indicator/my-weather-indicator.conf"
echo "REFRESH" > "/tmp/my-weather-indicator_mon-ext"
fi
if [ -f "/tmp/my-weather-indicator_mon-ext" ] # marker file
then
if [ -s "/tmp/my-weather-indicator_mon-ext" ] # content
then
PID="$(ps -e -o pid,cmd | grep "/usr/bin/python3 /opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" | egrep -v grep | awk '{print$1}')"
if [[ "$PID" -eq 0 ]] # not running, start
then
rm "/tmp/my-weather-indicator_mon-ext"
"/opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" &
else
kill -9 "$PID" # running, re-start
rm "/tmp/my-weather-indicator_mon-ext"
"/opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" &
fi
fi
fi
fi
PID="$(ps -e -o pid,cmd | grep "/usr/bin/python3 /opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" | egrep -v grep | awk '{print$1}')"
if [[ "$PID" -eq 0 ]] # not running, start
then
"/opt/extras.ubuntu.com/my-weather-indicator/bin/my-weather-indicator" &
fi
sleep 12
done
CUIDADO:Este script só foi testado em um laptop DELL Latitude com2 widgets de desktop usando osuper relógiotema, e pode exigir alguns ajustes adicionais, e pode ser uma boa ideia verificar se as variáveis usadas aqui também funcionarão em outros sistemas, verificando a saída do terminal do comandoxrandr