Мой-Погодный-Индикаторвероятно, лучший погодный виджет для рабочего стола Ubuntu.
Однако, необходимо вручнуюпереместить виджеты рабочего стола(например, выровнен по правому верхнему краю)каждый раз при подключении внешнего мониторана ноутбук.
Как насчет скрипта запуска, который автоматически переместит виджеты рабочего стола my-weather-indicator (например, 2 "superclock") для внешнего монитора? Или любого другого (возможно, лучшего) решения?
решение1
Вот пример сценария запуска
который можно ввести в Exec=
строку ~/.config/autostart/my-weather-indicator.desktop
файла вместо команды /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
ОСТОРОЖНОСТЬ:Этот скрипт был протестирован только на ноутбуке DELL Latitude с2 виджета рабочего стола с использованиемсупертактовая частотатемаи может потребовать некоторой дальнейшей тонкой настройки, и было бы неплохо проверить, будут ли переменные, используемые здесь, работать в других системах, проверив вывод команды на терминалеxrandr