Как сделать команды dbus персистентными. GNOME

при изучении / Понимания GNOME, я столкнулся ниже двух команд по сети.

dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.panel.actor.hide();'

dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview._dash.actor.hide();'

1-я команда скрывает Верхнюю панель
2-я команда скрывает Тире.

Но во время сессии я использую Alt+F2 r для перезапуска оболочки. Во время этого перезапуска оболочки оба команды становятся к исходному состоянию.

Изображение, Показывающее, нет никакой Верхней панели enter image description here

Изображение, Показывающее, нет никакого Тире enter image description here

Существует ли способ сделать эти две команды персистентными даже после перезапуска оболочки гнома?

Примечание: Высоко Ценил бы, Если Эксперты могут записать расширения оболочки гнома для этих двух поведений.

Под управлением Ubuntu 18.04, 19.04 и 19.10

0
задан 5 November 2019 в 14:01

1 ответ

Я отправлю это как временный ответ для запущения Вас. Мои единственные dbus мониторы сценариев, для когда гном или сброс единицы xrandr яркость экрана и затем переопределяет его с пользовательской яркостью и гаммой. Вам было бы нужно что-то подобное для того, когда тире или панель сбрасываются:

#!/bin/bash

# NAME: eyesome-dbus.sh
# PATH: /usr/local/bin
# DESC: Watch dbus for monitor color events
# CALL: Automatically started as deamon by eyesome.sh
# DATE: October 8, 2018. Modified October 22, 2018.

source eyesome-src.sh # Common code for eyesome___.sh bash scripts

Type="method_call"
Interface="org.freedesktop.ColorManager"
DirPath="/org/freedesktop/ColorManager"
Member="FindDeviceByProperty"
Watch="type=${Type}, interface=${Interface}, path=${DirPath}, member=${Member}"

# When NewTimeSTamp - OldTimeStamp > 5 seconds a new group of events occurs
# Wake up eyesome.sh to spam monitors
OldTimeStamp=$(printf '%(%s)T')

# Wait for user to sign on then get Xserver access for xrandr calls
UserName=""
iEventCnt=0

OneTimeWakeup () {

    # Wakeup eyesome.sh once for every group of commands
    # If the elapsed time between groups is > 5 seconds we assume a new group
    # of events has begun. Unplugging a monitor can create 5 DBUS events in
    # less than a second and we don't want to wakeup eyesome.sh 5 times.

    NewTimeStamp=$(printf '%(%s)T')
    secElapsed=$(( NewTimeStamp - OldTimeStamp ))
    # log "OneTimeWakeup Elapsed: $secElapsed New Stamp: $NewTimeStamp"
    OldTimeStamp="$NewTimeStamp"
    (( iEventCnt++ ))

    [[ "$secElapsed" -lt 6 ]] && return # If less than 5 seconds get more events

    log "Event Count: $iEventCnt over: $secElapsed seconds"
    iEventCnt=0

    # Has user signed on?
    if [[ "$UserName" == "" ]] ; then
        # Check if user has signed in
        UserName="$(who -u | grep -F '(:0)' | head -n 1 | awk '{print $1}')"

        if  [[ "$UserName" == "" ]] ; then
            LastLoginWait="$NewTimeStamp"
            log "Waiting for user to log in, not waking up eyesome"
            return
        else
            # There may not be events after user first logs in with external
            # monitor(s) disconnected. If monitor connected after logging in
            # then we want to wakeup eyesome daemon below.
            LastModificationSeconds=$(date +%s -r "$EyesomeUser")
            sec=$(( NewTimeStamp - LastModificationSeconds ))
            if [[ "$sec" -lt 15 ]] ; then
                log "$UserName logged in $sec seconds, not waking eyesome"
                return
            else
                log "$UserName logged in for $sec seconds, waking eyesome"
            fi
        fi
    fi

    # Wakeup eyesome.sh after dbus searched Xrandr monitor properties
    echo YES > "$EyesomeDbus"
    sync -d "$EyesomeDbus"      # Flush buffer immediately
    $WakeEyesome post eyesome-dbus.sh spam &

} # OneTimeWakeup

log "Starting DBUS-Monitor using $Watch"

dbus-monitor --system "${Watch}" | \
(
    while read line; do
       OneTimeWakeup
    done
)

log "Ending DBUS-Monitor" # This should never happen

exit 0
0
ответ дан 22 December 2019 в 00:06

Другие вопросы по тегам:

Похожие вопросы: