Вопрос или проблема
Как установить обои рабочего стола KDE (файл jpg) из командной строки (например, с помощью скрипта, запущенного пользователем)?
К сожалению, не кажется, что существует простой способ.
Видимо, вам нужно сделать что-то вроде этого (из https://www.kubuntuforums.net/showthread.php/66762-Right-click-wallpaper-changer?p=387392&viewfull=1#post387392):
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///media/sda2/Background/SpaceWall/Escape_Function.jpg")}'
или, другой пример, оформленный более аккуратно (адаптировано из https://github.com/bharadwaj-raju/libdesktop/issues/1:
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript '
var allDesktops = desktops();
print (allDesktops);
for (i=0;i<allDesktops.length;i++) {{
d = allDesktops[i];
d.wallpaperPlugin = "org.kde.image";
d.currentConfigGroup = Array("Wallpaper",
"org.kde.image",
"General");
d.writeConfig("Image", "file:///path/to/imagefile")
}}
'
Я также нашел решение на Python.
Как сообщает этот комментарий на Reddit:
#!/usr/bin/env -S bash path_to_wallpaper="/path/to/file.png" # Путь к файлу обоев. kwriteconfig5 \ # Инструмент конфигурации. --file "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" \ # Путь к файлу конфигурации. --group 'Containments' \ --group '1' \ --group 'Wallpaper' \ # Это может быть цветом. --group 'org.kde.image' \ --group 'General' \ --key 'Image' "$path_to_wallpaper" # Ключ, содержащий путь к файлу обоев.
Однако, обратите внимание, что в текущем виде этот ответ применим только к cpe:/a:kde:plasma:5
– cpe:/a:kde:plasma:6
требует использования kwriteconfig6
, синтаксис которого может отличаться.
Просто запустите это в скрипте для решения всех ваших проблем:
С использованием решения Криса:
Это детальный ответ, однако я решил свои проблемы, основываясь на решении Криса, и нахожу его намного лучше встроенной функциональности обоев KDE – который работает только на одном мониторе.
Работает на всех мониторах – просто измените переменные sleeptime
И location
вверху – скопируйте и вставьте в файл .sh и запустите его.
while true
do
# //// НАСТРАИВАЕМЫЕ ПЕРЕМЕННЫЕ ////////////
# время паузы между итерациями
sleeptime=900
# расположение папки с обоями
location="/home/myusername/Pictures"
# ////////////////////////////////////////
array=($(ls $location*)) # заполняем массив содержимым директории
( IFS=$'\n'; echo "${array[*]}" ) # отображаем содержимое массива для отладки
size=${#array[@]}
index=$(($RANDOM % $size))
wallpaper=${array[$index]} # случайный выбор
echo
echo " || ВЫБРАНЫЕ ОБОИ = "$wallpaper
dbus-send --session --dest=org.kde.plasmashell --type=method_call /PlasmaShell org.kde.PlasmaShell.evaluateScript 'string:
var Desktops = desktops();
for (i=0;i<Desktops.length;i++) {
d = Desktops[i];
d.wallpaperPlugin = "org.kde.image";
d.currentConfigGroup = Array("Wallpaper",
"org.kde.image",
"General");
d.writeConfig("Image", "file://'''$location''"https://superuser.com/"${wallpaper}'");
}'
sleep $sleeptime
done
Я запускаю это как стартовый скрипт и больше не беспокоюсь об этом. Приятная особенность в том, что переменная array
, содержащая все имена файлов обоев, обновляется при каждом цикле, что позволяет изменить набор обоев и отразить это в работе скрипта.
По состоянию на Plasma 5.27.11 (по крайней мере) рекомендуемый в ответах скрипт недостаточен; вам также нужно будет вызвать метод reloadConfig()
для объекта рабочего стола, чтобы обои применялись сразу; я также воспользовался возможностью слегка улучшить и сократить скрипт:
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "
desktops().forEach((d) => {
d.currentConfigGroup = [
'Wallpaper',
'org.kde.image',
'General',
]
d.writeConfig('Image', 'file:///path/to/wallpaper')
d.reloadConfig()
})
"
Коллегам-пользователям OpenSuse Leap: для нас qdbus
это qdbus-qt5
(по крайней мере в OpenSuse Leap 15.6).
Это терминальное приложение может помочь вам wu
.
Ответ или решение
Установить обои рабочего стола KDE через командную строку может показаться сложной задачей, особенно для пользователей, привыкших к графическим интерфейсам. Однако это достижимая цель, если знать, как использовать утилиты KDE и командную строку для этой задачи. В данном ответе мы рассмотрим несколько методов выполнения этой задачи, сосредоточившись на удобстве и эффективности.
Теория
Рабочая среда KDE Plasma обеспечивает богатый функционал для настройки внешнего вида рабочего стола, включая установку обоев. На уровне системы KDE использует D-Bus для связи между приложениями. Используя qdbus
, мы можем отправлять команды Plasma для изменения настроек, таких как обои. QDBus
— это интерфейс для работы с D-Bus в среде Qt, который позволяет нам программно управлять элементами KDE Plasma.
Также возможно изменение настроек конфигурации напрямую через файл конфигурации plasma-org.kde.plasma.desktop-appletsrc
с помощью инструмента kwriteconfig5
. Это требует немного другой подход, но также обеспечивает контроль над настройками рабочего стола.
Пример
Для начала, рассмотрим пример использования команды qdbus
для установки обоев:
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript "
desktops().forEach((d) => {
d.currentConfigGroup = [
'Wallpaper',
'org.kde.image',
'General',
];
d.writeConfig('Image', 'file:///путь/к/вашему/изображению.jpg');
d.reloadConfig();
})
"
Это решение позволяет отправить скрипт на D-Bus сервер KDE, который выполняет его для изменения обоев на каждом подключенном рабочем столе.
В качестве альтернативы можно изменить файл конфигурации напрямую, используя kwriteconfig5
:
#!/usr/bin/env bash
path_to_wallpaper="/путь/к/вашему/изображению.png"
kwriteconfig5 \
--file "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" \
--group 'Containments' \
--group '1' \
--group 'Wallpaper' \
--group 'org.kde.image' \
--group 'General' \
--key 'Image' "$path_to_wallpaper"
После этого может потребоваться перезапуск плазмы для применения изменений, который можно выполнить также через команду:
kquitapp5 plasmashell && kstart5 plasmashell
Применение
-
Универсальное применение через скрипт: Напишите скрипт, чтобы автоматизировать этот процесс и сделать его более удобным. Это позволит изменять обои быстро и эффективно, даже через программы-скрипты, работающие по расписанию.
-
Автоматическая смена обоев: Используйте циклы для автоматической смены обоев с периодом, установленным пользователем. Это поможет придать свежесть и разнообразие рабочему окружению.
-
Тестирование сценариев расположения изображений: Если у вас несколько рабочих столов или монитор, протестируйте сценарии для различных разрешений и расположений, чтобы добиться наилучшего визуального эффекта.
Работа через командную строку может требовать некоторого уровня технических знаний, но это дает гибкость и контроль над вашим рабочим столом. Эти решения помогут вам установить и автоматизировать смену обоев в KDE на профессиональном уровне, обеспечивая удивительный внешний вид вашего рабочего пространства.