Перезапустить GNOME, не перезапуская Xorg?

Системный принтер конфигурации начал использоваться в более поздних версиях Mandriva. Назад в версии 2007 года Мандрагоры/Mandriva, необходимо было бы использовать PrinterDrake для установки принтера и/или Samba использования для деления принтера клиентам Windows.

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

12
19.04.2014, 04:18
4 ответа

Необходимо смочь перезапустить Gnome с

 gnome-shell --replace

Из руководства:

DESCRIPTION
   GNOME Shell provides core user interface functions for the GNOME 3 desktop,
   like switching to windows and launching  applications.  GNOME  Shell  takes
   advantage  of  the  capabilities of modern graphics hardware and introduces
   innovative user interface concepts to provide  a  visually  attractive  and
   easy to use experience.

OPTIONS
   --replace
          Replace the running window manager
12
27.01.2020, 19:55

Можно нажать Alt-F2 (IIRC) для получения окна, где можно ввести команду. В дополнение к регулярным командам GNOME Shell поддерживает несколько пользовательских команд для управления поведением настольной среды. В этом случае Вы хотите restart, который перезапускает Shell, не компьютер.

Если это отказало слишком много для этого для работы, используйте ответ terdon.

3
27.01.2020, 19:55

Можно перезапустить гнома, использующего в качестве корня:

services gdm restart
-1
27.01.2020, 19:55

TL; DR, если вы не можете сделать это из графического интерфейса, просто войдите в систему как тот же пользователь (текстовая консоль, ssh и т. д. )и введите:

eval "$(while read -d $'\0' line; do printf 'export %q\n' "$line"; done </proc/$(pgrep -fu$USER gnome-session-binary)/environ)"
gnome-shell --replace >.xsession-errors 2>&1 &

Я часто делаю это из текстовой консоли (CTRL+ALT+F n , где n — свободная консоль, обычно начиная с F3 как F1 — это экран входа в систему, а F2 — моя сессия ).

Это, очевидно, не будет работать с Wayland, так как перезапуск оболочки gnome -просто не поддерживается на нем.


Подробный ответ:

Хитрость заключается в том, чтобы воспроизвести среду, требуемую gnome -оболочкой-Я не проверял, что именно нужно, но по крайней мере вам нужны DISPLAYи XAUTHORITY, поэтому оболочка gnome -может подключаться к X-серверу, а затем, скорее всего, потребуется несколько дополнительных для оболочки gnome -и ее расширений.

Дерево процессов должно выглядеть примерно так:

      |            |-gdm-session-wor(6444)-+-gdm-x-session(6464)-+-Xorg(6466)-+-{InputThread}(6472)
      |            |                       |                     |            `-{radeon_cs:0}(6467)
      |            |                       |                     |-gnome-session-b(6475)-+-evolution-alarm(6712)-+-{dconf worker}(6789)
[...]
      |            |                       |                     `-{gmain}(6465)
      |            |                       |-{gdbus}(6446)
      |            |                       `-{gmain}(6445)

В этом примере gnome -session -binary(pid 6475 )является родителем всех процессов сеанса gnome, так что это то, что я использую для получения среды. Я использую pgrepдля возврата pid этого процесса только для текущего пользователя (всегда должен быть только один ).

Затем я прочитал файл этой задачи environиз/proc/<PID>/(null -разделенного списка переменных окружения )и добавил ко всем строкам export. Затем эти команды возвращаются в мою оболочку через eval.

В этот момент я могу запустить gnome-shell --replace, как если бы я делал это из сеанса графического интерфейса. Если вы планируете оставить эту оболочку открытой, вы, вероятно, захотите куда-нибудь перенаправить STDOUT и STDERR ; вы можете отправить его на /dev/null, но мне нравится держать его на всякий случай, если(.xsession-errorsявляется устаревшим файлом X, используемым для передачи всего вывода GUI;в современных системах я считаю, что systemd или journald фиксируют все выходные данные и вместо этого регистрируют их ).

3
15.04.2020, 18:31

Теги

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