如何自動重新定位外部顯示器的我的天氣指示器桌面小部件

如何自動重新定位外部顯示器的我的天氣指示器桌面小部件

我的天氣指示器可能是 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

在此輸入影像描述

相關內容