Вопрос или проблема
Можно ли перезапустить рабочий стол KDE Plasma без выхода из системы?
Я говорю о стандартном рабочем столе KDE. Через некоторое время (несколько дней) панель задач перестает работать должным образом. Это связано с какой-то невыявленной ошибкой, но меня это сейчас не беспокоит. Все исправляется, как только я выхожу и снова вхожу в систему.
Мне приходится все закрывать, а текущие процессы, такие как виртуальные машины, должны быть выключены. Это большая проблема. Это обычно означает, что мне приходится мириться с небольшими мерцаниями в течение многих дней.
Есть ли способ просто перезагрузить рабочий стол, не закрывая все запущенные приложения?
В KDE 4 вы можете сделать:
killall plasma-desktop #остановить
kstart plasma-desktop #перезапустить
В KDE 5 используйте:
killall plasmashell #остановить
kstart plasmashell #перезапустить
В KDE > 5.10 используйте:
kquitapp5 plasmashell
kstart5 plasmashell
Иногда plasmashell не отвечает, поэтому kquitapp5
не срабатывает по истечении времени ожидания, и вам приходится возвращаться к killall
. В общем, я бы сделал :
# Для KDE 4
killall plasma-desktop && kstart plasma-desktop
# Для KDE 5 < 5.10
killall plasmashell && kstart plasma-desktop
# Для KDE > 5.10
kquitapp5 plasmashell || killall plasmashell && kstart5 plasmashell
Замечания :
- Если вы не уверены, какая версия KDE у вас установлена, команда
kinfocenter --version
подскажет. - Вы можете пропустить часть
kquitapp5 plasmashell ||
, если не хотите зависать в таймауте, когдаplasmashell
не отвечает.
В KDE5 используйте “kstart plasmashell”, чтобы перезапустить plasmashell как службу, вместо plasmashell &. Если вы используете его таким образом, он будет запущен как независимая служба, не связанная с текущей сессией терминала (что означает, что вы можете закрыть терминал, не завершая процесс). Кратко:
KDE5 (в терминале):
killall plasmashell
kstart plasmashell
Ну, я не ожидал, что это сработает (и это не совсем то, что спрашивает вопрос), но нажав Alt+F2 и запустив:
kwin --replace
Я перезагружаю композитор KDE, и это, похоже, исправляет мерцание. Думаю, это связано с моей конкретной проблемой.
Менеджер окон kwin
отвечает за перемещение окон и т. д. Его можно перезапустить командой:
kstart kwin --replace
Префикс kstart
нужен для того, чтобы не запускать его как подпроцесс в текущем терминале, чтобы потом вы могли закрыть терминал.
plasmashell
отвечает за фон и другие вещи оболочки. Перезапускать его следует так:
killall plasmashell
kstart plasmashell
Обратите внимание, что это не восстановило меню для меня.
Также, что интересно, это снова ломает kwin для меня, то есть я больше не могу перемещать окна. В консоли я получаю что-то вроде QXcbConnection: XCB error: 3 (BadWindow), sequence: ..., resource id: ..., major code: 15 (QueryTree), minor code: 0
.
Когда я перезапускаю plasma с помощью
plasmashell --replace &
Все снова работает нормально. Моя текущая версия plasma 5.26.4
.
Я посмотрел это, потому что у меня была проблема, когда я не мог открыть никакие настройки KDE, но я не хотел перезагружаться или выходить. Я нашел, что лучший способ сделать это (по крайней мере в KDE 5) – использовать krunner (Alt+F2), чтобы выполнить killall plasmashell
, а затем сразу же plasmashell
. Я пробовал сделать это в окне Konsole, используя killall plasmashell
, а затем plasmashell &
, и это сработало, но как только я закрыл окно Konsole, plasma также закрывался. Даже несмотря на то, что вы, похоже, разрешили свою проблему, я подумал, что опубликую это для людей, которые будут искать в будущем, чтобы перезапустить plasma.
В KDE 4 просто замените plasmashell
на plasma-desktop
У меня всегда возникают проблемы с ksycoca5, и, похоже, это причина, по которой plasmashell начинает капризничать и также не может перезапуститься. Чтобы это исправить, я сделал:
$ mv ~/.cache/ksycoca5* /tmp
$ killall plasmashell buildksycoca5; kstart plasmashell
Окей .. Я использую OpenSuse Leap 15.1 с KDE5 Plasma. Периодически моя X-среда портится (после примерно 24 часов работы машины), и я получаю
“KLauncher не удалось достичь через D-Bus. Ошибка при вызове start_service_by_desktop_path: Не подключен к серверу D-Bus”
Результатом этого является то, что, хотя мой рабочий стол все еще функционирует, я не могу запускать любые приложения, использующие KLauncher – очень раздражает. (ЗАМЕТКА: также мой xwindows vncserver, похоже, запускает 99 экземпляров окон, к которым я мог бы подключиться – это неправильно – я еще не исправил это, но сделаю). Тем не менее, я НАШЕЛ ответ на вышеупомянутую проблему, чтобы перезапустить KDE 5 Plasma в своей среде без перезагрузки:
1) killall plasmashell
2) kstart5 plasmashell kwin
Это перезапускает все так, как будто система только что загрузилась. Надеюсь, это поможет
Спасибо
Я также пробовал что-то вроде:
killall plasmashell; kstart plasmashell
Или даже это:
killall plasmashell; kwin --replace && kstart plasmashell
Но, по неизвестным причинам, это не сработало.
Перезапуск рабочего стола Plasma начал работать после того, как я добавил задержки между командами:
killall plasmashell ; sleep 3 ; kwin --replace ; sleep 5 ; kstart plasmashell
Наконец, я заметил, что, когда я ввожу 'kwin|plasma'
в поле фильтра KSysGuard
, он сообщает, что после убийства plasmashell
такие файлы *.so
все еще присутствуют: desktop.so
, file.so
. Мы также должны их убить. В противном случае у нас будут копии этих файлов после каждой перезагрузки.
Таким образом, окончательные команды для перезапуска рабочего стола plasma следующие:
killall plasmashell desktop.so file.so ; sleep 5 ; kwin --replace ; sleep 5 ; kstart plasmashell
В KDE4 я обнаружил, что использование памяти быстро увеличивается до около гигабайта, потому что открытие программ постепенно использует больше оперативной памяти, но их закрытие не освобождает её. Это происходит в Mint 17.3 с KDE, но, похоже, затрагивает практически все системы KDE Plasma 4.
Мне надоело входить и выходить или использовать ALT + F2 для завершения и перезапуска plasma. Теперь у меня есть скрипт (установленный как исполняемый), который находится на панели..
#!/bin/bash
killall plasma-desktop
plasma-desktop &
Кликнув на иконку, plasma закрывается и перезапускается за 15 секунд. Я все еще могу использовать открытые программы на любом виртуальном рабочем столе, который я в данный момент использую, пока plasma перезапускается.
Согласно разработчикам KDE лучший способ перезапустить KDE Plasma, если у вас systemd, это
systemctl restart --user plasma-plasmashell.service
Это работает в KDE Plasma 6.
Ответ или решение
Да, вы можете перезапустить рабочий стол KDE Plasma, не выходя из системы, и это может помочь решить некоторые проблемы, такие как сбои панелей и некорректное поведение интерфейса. Для этого вы можете использовать серию команд в терминале. Вот как это сделать в зависимости от версии KDE Plasma, которую вы используете.
Для KDE 4:
killall plasma-desktop && kstart plasma-desktop
Для KDE 5 (версии < 5.10):
killall plasmashell && kstart plasmashell
Для KDE 5 (версии >= 5.10):
kquitapp5 plasmashell || killall plasmashell && kstart5 plasmashell
Дополнительные советы:
- Если
kquitapp5
не удался из-за тайм-аута, и вы использовалиkillall
, это может быть нормальным решением в случае зависанияplasmashell
. -
Если вы хотите убедиться, что
plasmashell
перезапускается как независимая служба, особенно если вы планируете закрыть терминал, используйте:kstart plasmashell
- Иногда также полезно перезапустить композиционер
kwin
, который отвечает за управление окнами. Вы можете сделать это, выполнив команду:kstart kwin --replace
Перезапуск Plasma с задержкой:
Некоторые пользователи сообщают, что добавление задержек между командами может помочь избежать проблем с перезапуском. Пример:
killall plasmashell; sleep 3; kwin --replace; sleep 5; kstart plasmashell
Использование systemd (KDE Plasma 6 и выше):
Если вы используете систему с поддержкой systemd, наиболее эффективным способом перезапуска будет:
systemctl restart --user plasma-plasmashell.service
Примечания:
- Чтобы узнать, какая версия KDE Plasma у вас установлена, вы можете выполнить команду:
kinfocenter --version
- Если у вас возникают проблемы с
ksycoca5
, вы можете попробовать удалить кэш:mv ~/.cache/ksycoca5* /tmp
Использование этих команд позволит вам перезапустить KDE Plasma без необходимости выхода из системы и сохранит ваши незавершённые процессы, такие как работающие виртуальные машины. Надеюсь, это поможет вам эффективно решать проблемы с рабочим столом!