我的天氣指示器可能是 Ubuntu 桌面上最好的天氣小工具。
然而,需要手動重新定位桌面小工具(例如右上角對齊)每次連接外部顯示器時到筆記型電腦。
一個啟動腳本會自動重新定位我的天氣指示器(例如 2 個“超級時鐘”)桌面小部件以供外部顯示器使用,怎麼樣?或任何其他(也許更好)的解決方案?
答案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