Потерянный экран блокировки после удаления корицы от 13.04, как мне его вернуть?

Проблема в том, что скрипт не предназначен для работы с Cron. Он использует несколько переменных среды, которые недоступны из Cron, и они различаются в зависимости от среды рабочего стола текущего пользователя. По этой причине на его странице описывается другой способ запуска при запуске . Но можно установить значения этих переменных во время работы CronJob.

Например, когда это среда рабочего стола Ubuntu по умолчанию, ключевые слова для поиска должны выглядеть так: «gsettings» и «cron», тогда наш поиск приведет нас к проводным темам, таким как: Фон не меняется с помощью gsettings из cron , где мы могли бы найти дополнительные объяснения как:

Если вы запустите сценарий из вашей собственной среды (например, из окна терминала или из Startup Applications), ряд переменных среды будет задавать. cron Однако ваш скрипт запускается с ограниченным набором переменных среды.

Чтобы успешно отредактировать gsettings из cron, вам необходимо установить переменную среды DBUS_SESSION_BUS_ADDRESS. Вы можете сделать это, добавив две строки в ваш скрипт, как описано здесь ...

blockquote>

Выполнить: Daily-Reddit-Wallpaper через Cron через скрипт запуска

Здесь мы создадим скрипт запуска, который установит необходимые переменные среды в зависимости от выбранного ( аргумент) окружение рабочего стола.

[+1159] 1. Сначала клонировали Daily-Reddit-Wallpaper , а также установили зависимости:

cd ~
git clone https://github.com/ssimunic/Daily-Reddit-Wallpaper.git
cd ~/Daily-Reddit-Wallpaper
sudo apt-get install python-pip
pip install -r requirements.txt

2. Создайте файл сценария - change_wallpaper_reddit.sh :

cd ~/Daily-Reddit-Wallpaper
touch change_wallpaper_reddit.sh
chmod +x change_wallpaper_reddit.sh
nano change_wallpaper_reddit.sh

Содержимое сценария:

#!/bin/sh

# Reference: https://askubuntu.com/a/911958/566421

# Set the script home directory:
SHOME=Daily-Reddit-Wallpaper

# Set the output folder in the home directory to save the Wallpapers to:
DIR=Pictures/Wallpapers

# Set the --time parameter value
TIME=now

# Check if the Desktop Environment is changed:
LAST=$(cat "$HOME/$SHOME/last-desktop-environment.log")
if [ "$1" != "$LAST" ]
then
    # Get the name of the last saved wallpaper image:
    IMG=$(ls -Art $HOME/$DIR | tail -n 1)
    rm $HOME/$DIR/$IMG
fi

# Desktop Environment cases:
if [ -z ${1+x} ] || [ "$1" = "gnome" ] || [ "$1" = "unity" ]
then
    # Set the necessary environment variables - PID=$(pgrep gnome-session -u $USER) - UBUNTU/UNITY/GNOME:
    export GNOME_DESKTOP_SESSION_ID=true
    export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep gnome-session -n)/environ | cut -d= -f2-)

    # Run the script:
    $HOME/$SHOME/change_wallpaper_reddit.py --time $TIME --output $DIR

elif [ "$1" = "kde" ]
then
    # Set the necessary environment variables - KUBUNTU/PLASMA/KDE:
    export KDE_FULL_SESSION=true
    export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep startkde -n)/environ | cut -d= -f2-)

    # Run the script:
    $HOME/$SHOME/change_wallpaper_reddit.py --time $TIME --output $DIR

elif [ "$1" = "mate" ]
then
    # Set the necessary environment variables - Ubuntu MATE/MATE:
    export DESKTOP_SESSION=mate
    export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep mate-session -n)/environ | cut -d= -f2-)

    # Run the script:
    $HOME/$SHOME/change_wallpaper_reddit.py --time $TIME --output $DIR

elif [ "$1" = "lxde" ]
then
    # Set the necessary environment variables - type 'echo $DISPLAY` to find your current display - LUBUNTU/LXDE:
    export DESKTOP_SESSION=Lubuntu
    export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep lxsession -n)/environ | cut -d= -f2-)
    export DISPLAY=$(w $(id -un) | awk 'NF > 7 && $2 ~ /tty[0-9]+/ {print $3; exit}')

    # Run the script:
    $HOME/$SHOME/change_wallpaper_reddit.py --time $TIME --output $DIR

elif [ "$1" = "xfce4" ]
then
    # Set the necessary environment variables - XUBUNTU/XFCE4:
    export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep xfce4-session -n)/environ|cut -d= -f2-)

    # Run the script:
    $HOME/$SHOME/change_wallpaper_reddit.py --time $TIME --output $DIR

    # Get the name of the last saved wallpaper image:
    IMG=$(ls -Art $HOME/$DIR | tail -n 1)

    # Since 'change_wallpaper_reddit.py' doesn't work properly with xfce4 we shall set the background manually:
    xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/workspace0/last-image --set $HOME/$DIR/$IMG

    # Property list:      xfconf-query --channel xfce4-desktop --list
    # Current settings:   xfconf-query -c xfce4-desktop -p /backdrop -lv
    # Set 'zoomed' style: xfconf-query --channel xfce4-desktop --property /backdrop/screen0/monitor0/workspace0/image-style --set 5
    # References:         https://askubuntu.com/q/380550/566421 and https://askubuntu.com/q/414422/566421

else
    echo "Wrong argument. It must be:"
    echo "  - empty (default) = gnome = unity"
    echo "  - kde"
    echo "  - lxde"
    echo "  - mate"
    echo "  - xfce4"
fi

# Save current value of the Desktop Environment variable:
echo "$1" > "$HOME/$SHOME/last-desktop-environment.log"

Этот сценарий имеет один аргумент ] $1, которые определяют его поведение в зависимости от выбранной (от вас) среды рабочего стола (DE). Возможные значения:

  • gnome или unity или empty (по умолчанию) - при использовании Ubuntu DE по умолчанию;
  • [ 1114] - при использовании KUbuntu DE;
  • lxde - при использовании LUbuntu DE;
  • mate - при использовании Ubuntu MATE DE;
  • [1117 ] - когда вы используете XUbuntu DE.

Также вы можете настроить эти начальные параметры:

  • SHOME= установить папку, в которой Daily-Reddit-Wallpaper находится в вашей системе.
  • DIR= установить выходную папку в домашнем каталоге, чтобы сохранить обои - значение по умолчанию (Pictures/Wallpapers) используется в приведенном выше сценарии.
  • TIME= установить значение параметра --time для change_wallpaper_reddit.py.

3. Создайте CronJob (crontab -e), который выполняет change_wallpaper_reddit.sh (например, каждый час):

  • Если вы используете Ubuntu DE по умолчанию, этот CronJob может быть:

    0 * * * * /home//Daily-Reddit-Wallpaper/change_wallpaper_reddit.sh > /home//Daily-Reddit-Wallpaper/cron.log 2>&1
    

    также этот синтаксис даст тот же результат:

    0 * * * * /home//Daily-Reddit-Wallpaper/change_wallpaper_reddit.sh gnome > /home//Daily-Reddit-Wallpaper/cron.log 2>&1
    
  • Если вы используете KUbuntu DE, например, этот CronJob может быть: [1167 ]

    0 * * * * /home//Daily-Reddit-Wallpaper/change_wallpaper_reddit.sh kde > /home//Daily-Reddit-Wallpaper/cron.log 2>&1
    
  • Для устранения неполадок проверьте файл журнала: cat /home/$USER/Daily-Reddit-Wallpaper/cron.log

Вуаля. Это работает!


Ссылки и дальнейшие ссылки:

0
задан 16.04.2020, 04:47

1 ответ

У меня была похожая проблема после обновления до 13.10. Мне удалось решить эту проблему путем повторного включения ppa-стабильной корицы и переустановки корицы. После этого все снова хорошо. Если вы не используете ppa с корицей, я рекомендую его:

https://launchpad.net/~gwendal-lebihan-dev/+archive/cinnamon-stable

0
ответ дан 16.04.2020, 04:48

Теги

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