我的天气指示器可能是 Ubuntu 桌面上最好的天气小工具。
然而,需要手动重新定位桌面小部件(例如右上对齐)每次连接外接显示器时到笔记本电脑。
启动脚本可以自动重新定位 my-weather-indicator(例如 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