Cómo reposicionar automáticamente los widgets de escritorio de mi indicador meteorológico para un monitor externo

Cómo reposicionar automáticamente los widgets de escritorio de mi indicador meteorológico para un monitor externo

Mi-indicador-meteorológicoes probablemente el mejor widget meteorológico para el escritorio de Ubuntu.

Sin embargo, es necesario manualmentereposicionar los widgets del escritorio(por ejemplo, alineado arriba a la derecha)cada vez que se conecta un monitor externoa una computadora portátil.

¿Qué tal un script de inicio que reposicionará automáticamente los widgets de escritorio de mi indicador meteorológico (por ejemplo, 2 "superreloj") para un monitor externo? ¿O alguna otra solución (quizás mejor)?

Respuesta1

Aquí hay un script de inicio de muestra.

que se puede ingresar en la Exec=línea del ~/.config/autostart/my-weather-indicator.desktoparchivo en lugar del 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

PRECAUCIÓN:Este script solo se ha probado en una computadora portátil DELL Latitude con2 widgets de escritorio usando elsuperrelojtema, y podría requerir algunos ajustes adicionales, y podría ser una buena idea verificar si las variables utilizadas aquí también funcionarán en otros sistemas verificando la salida del comando en la terminalxrandr

ingrese la descripción de la imagen aquí

información relacionada