Существует ли простая команда Linux, которая скажет мне, каков мой менеджер по оформлению?

Еще 2 инструмента:
- Откровенный обмен мнениями является портом JavaScript или Скидкой с цены: https://github.com/coreyti/showdown. Можно использовать его только от браузера
- txt2tags может считать формат Скидки с цены, но он добавляет много новых опций и функций: http://txt2tags.org/online.php

61
09.09.2011, 13:44
14 ответов

К сожалению, конфигурация отличается для каждого распределения:

Debian/Ubuntu

/etc/X11/default-display-manager

Redhat (должен также относиться к Fedora),

/etc/sysconfig/desktop

OpenSuSe

/etc/sysconfig/displaymanager
49
27.01.2020, 19:32
  • 1
    Ха, почему Вы говорите мне о конфигурации...? –  ptrcao 09.09.2011, 18:49
  • 2
    @ptrcao, поскольку это указывает, какого менеджера по оформлению Вы используете. –  Let_Me_Be 09.09.2011, 18:51
  • 3
    Предположим, что я не знаю то, что мой менеджер по оформлению, и я хочу узнать при помощи терминала. Как я сделал бы это? –  ptrcao 09.09.2011, 18:55
  • 4
    @ptrcao Вы изучили бы те файлы. Или открытие их в Вашем любимом редакторе или просто выполнения cat. –  Let_Me_Be 09.09.2011, 18:56
  • 5
    Это имеет только одну строку в нем: /usr/bin/xdm - это означает, что xdm является моим менеджером по оформлению? –  ptrcao 09.09.2011, 18:59

Нет. Менеджер дисплея не обязательно связан с чем-либо еще, что это работает на том же X-сервере. Менеджер по оформлению работает перед входом в систему; это выбрано системным администратором. Все остальное (менеджер окон, менеджер сеансов, настольная среда, …) выбрано пользователем. Не должно даже быть менеджера по оформлению: если Вы входите в систему в текстовом режиме и запускаете GUI с startx, никакой менеджер по оформлению не вовлечен.

Можно проверить, какой менеджер по оформлению является по умолчанию в системе. Это только даст правильный ответ под некоторыми распространенными, но не универсальные предположения. При ручном выполнении другого менеджера по любой причине этот метод не скажет Вам.

Хорошая ставка должна узнать идентификатор процесса X-сервера: его родительский процесс является, вероятно, менеджером по оформлению, если существует тот. Это требует, чтобы Ваши клиенты работали на той же машине как X-сервер. lsof /tmp/.X11-unix/X${DISPLAY#:} покажет процесс X-сервера (принимающий X сокетов, живых в /tmp/.X11-unix).

x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)

(Объяснение: lsof -F '' вывод печати как p1234. -F опция означает выходной формат машины-parseable, и '' средства только распечатать PID, с буквой p перед ним. x=${x#p} снимает изоляцию с первой буквы p. Последняя строка получает PID родителя X-сервера (ps -o ppid -p $x), и вызовы ps показать информацию о том родительском процессе.)

Некоторые дистрибутивы позволяют устанавливать несколько менеджеров по оформлению. Только будет единственное выполнение, если у Вас не будет системы мультиместа все же. Перечислять все установленные пакеты менеджера по оформлению под Debian и производными:

aptitude -F %p search '~i ~P^x-display-manager$'

или

</var/lib/dpkg/status awk '
    /^Package: / {package = $2}
    /^Provides: .*x-display-manager/ {print package}'
24
27.01.2020, 19:32

Имя менеджера по оформлению должно быть в DESKTOP_SESSION

echo $DESKTOP_SESSION

возвраты "гном" для меня.

Править
Вы правы. Они идут назад и вперед на этом на Bugzilla XFCEs, таким образом, это, вероятно, не очень надежно.

10
27.01.2020, 19:32
  • 1
    @frabjous: Что относительно gdm и kdm? Они - менеджеры по оформлению также или просто входят в менеджеров? –  ptrcao 09.09.2011, 17:39
  • 2
    я, должно быть, случайно удалил комментарий frabjou чуть выше, потому что я помню, что он отметил, что Gnome является настольной средой, не менеджером по оформлению. Этот поток, изобилуют беспорядком... –  ptrcao 09.09.2011, 18:48
  • 3
    Это дает информацию о … настольная сессия, которая, вероятно, будет тем же самым как Вашей настольной средой, но может быть чем-то еще в целом, если Вы не будете использовать настольную среду, или у Вас есть специфическая конфигурация. На машине, где я пишу это, $DESKTOP_SESSION unknown. –  Gilles 'SO- stop being evil' 10.09.2011, 02:56
  • 4
    +1, $DESKTOP_SESSION эха также возвращает гнома мне..., но возможно это только работает на гнома? –  Trevor Boyd Smith 18.09.2011, 01:37
  • 5
    Если это только будет работать на гнома, то эта команда только поможет Вам вывести, "да у Вас есть Gnome, или не у Вас нет гнома". Когда вопрос хочет узнать больше, чем это. –  Trevor Boyd Smith 18.09.2011, 01:37

X является очень модульным поэтому, если бы Вы действительно хотели это, то да, Вы могли бы смешать настольные среды и диспетчеры Windows. После всего менеджер окон является просто способом нарисовать окна (это - простое представление).

Таким образом, при взятии гнома метагород раньше был диспетчером Windows, но теперь он был заменен Бормотанием.

Проблема со смешиванием находится в современных настольных средах, среда рабочего стола и менеджер окон высоко связываются друг с другом. Слишком много смешивания могло закончиться в меньшем количестве функциональности.

Поскольку упомянутый $DESKTOP_SESSION работает, но если Вы хотите спросить свой сервер X11, Вы могли бы сделать это:

xprop -id $(xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2) WM_NAME

Который разлагается на

xprop -root _NET_SUPPORTING_WM_CHECK | cut -d\# -f2
0x1000052
xprop -id 0x1000052 WM_NAME
WM_NAME(STRING) = "xfwm4"

Который получает идентификатор окна, созданного менеджером окон. Спецификации говорят (http://standards.freedesktop.org/wm-spec/1.3/ar01s03.html):

_NET_SUPPORTING_WM_CHECK, WINDOW/32
The Window Manager MUST set this property on the root window to be the ID
of a child window created by himself, to indicate that a compliant window
manager is active.

И затем Вы просите свойство WM_NAME упомянутого окна.

WM_NAME быть:

The WM_NAME property is an uninterpreted string that the client wants the
window manager to display in association with the window (for example, in
a window headline bar). 
-1
27.01.2020, 19:32
  • 1
    @frabjous: Xfwm4 является менеджером окон Xfce. Это - то же в качестве менеджера по оформлению? –  ptrcao 09.09.2011, 17:39
  • 2
    @Mathieu Вы говорите о менеджерах окон, не менеджерах по оформлению. –  Let_Me_Be 09.09.2011, 17:41
  • 3
    @Let_Me_Be, но затем большую часть времени, Ваш менеджер окон связывается с Вашим менеджером по оформлению... Как часто Вы используете окно гнома managerwith kde и наоборот? И это на самом деле работает, потому что gdm/kdm/whatever позволяют Вам выбирать своего менеджера по оформлению, означая, что чтение конфигурационного файла как Вы упомянутый не работает, если Вы не используете обеспеченное значение по умолчанию... –  Mathieu 09.09.2011, 20:23
  • 4
    _NET_SUPPORTING_WM_CHECK дает информацию о менеджере окон, не о менеджере по оформлению. Это даже всегда не работает; в моей системе то свойство установлено на окно ID, но рассматриваемое окно не имеет имени. –  Gilles 'SO- stop being evil' 10.09.2011, 02:54
  • 5
    @Mathieu, Который зависит от дистрибутивов. Обычно при установке версии KDE дистрибутива Вы получаете KDM и когда версия гнома, Вы получаете GDM. Но материал, который Вы будете видеть все больше, является официальной поддержкой только для одного менеджера по оформлению (обычно более легкий вариант затем GDM/KDM). –  Let_Me_Be 10.09.2011, 03:32

В каком-то случае WMCTRL может помочь. Эта утилита совместима с большим количеством руководителей Windows.

wmcrt -m 

Должен отображать имя используемого в настоящее время Window Manager.

0
27.01.2020, 19:32

Как сказал @Gilles, диспетчер дисплея начнет вашу настольную среду.

Согласно Debian Wiki , в основном этот конец с DM , только исключение Slim .

Так что это должно хватить для большинства потребностей людей:

ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$

или быть уверенным, он существует как родительский процесс, и не разведывается (кроме системы init):

ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$" 
2
27.01.2020, 19:32

Вот довольно типичный синтаксис. Это может привести к еще одной проверке ошибок, но в рамках того, что вы хотите сделать, я полагаю, это поможет вам в правильном треке:

#!/bin/bash

file=/etc/hosts

if [ -z "$1" ]; then
    echo Usage: $0 name 1>&2
    exit 2
fi

if grep -q "$1" $file ; then
    echo "$file" contains $1
else
    echo "$file" doesn\'t contain $1
fi

Примечания

  • Первый тест ( если [-z «$1»]; тогда... ) имеет значение true, если $1 (первый аргумент командной строки) является пустым рядом (или не был предоставлен).
  • Строка Использование: выводится на stderr с 1 > и 2
  • Сам по себе выход grep скрыт (за исключением выходных данных об ошибках, которые вы, вероятно, захотите увидеть), поскольку в этом
    • grep имеет параметр -q , который замалчивает все выходные данные, что является лучшим выбором здесь, но не все команды имеют «тихий» переключатель. В этих случаях вместо этого можно использовать >/dev/null , как в приведенном ниже примере.

Конкретный пример с $?

Вы специально попросили пример с $? . Вместо вышеуказанного , если grep... конструкция, мы действительно могли бы разделить это на отдельные утверждения:

# grep -q "$1" $file would work just as well, here (better, maybe!):
grep "$1" $file >/dev/null

if [ $? -eq 0 ]; then
    echo "$file" contains $1
else
    echo "$file" doesn\'t contain $1
fi

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

Что такое $?

$? - это просто код выхода последнего процесса (команды), выполненного оболочкой. По соглашению код выхода 0 является успешным (хотя, как и в случае большинства конвенций, существуют исключения). Более высокие коды выхода могут иметь различные значения, специфичные для приложения, но обычно ненулевые означает какой-то ненормальный выход. Для получения дополнительной информации см. документацию по команде.

Дальнейшее чтение

test (1)

-121--216551-

Откройте терминал и запустите

sudo apt-get update; sudo apt-get модернизации

Ответ Y на все вопросы. В моем случае проблема исчезла.

-121--228592-

Как уже упоминалось, в этом потоке много путаницы. Исходный вопрос заключается в том, какой диспетчер дисплея, а не диспетчер рабочего стола или диспетчер окон. В настоящее время я работаю Xfwm4 который является диспетчером окон Xfce, и lxdm, который является легким диспетчером отображения X11 (от LXDE, а не Xfce). Вы должны видеть, какой диспетчер дисплея вы используете через htop. Вероятно, вы уже давно нашли ответ за последние 4 года:)

0
27.01.2020, 19:32

Если вы используете дистрибутив на основе systemd . Эта команда даст имя текущего настроенного диспетчера дисплея, потому что у вас может быть установлено несколько диспетчеров дисплея.

grep '/usr/s\?bin' /etc/systemd/system/display-manager.service

ВЫХОД будет что-то вроде

ExecStart=/usr/bin/mdm

Похоже, я использую диспетчер отображения mint.

23
27.01.2020, 19:32

Если вы используете systemd, то

systemctl status display-manager

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

18
27.01.2020, 19:32

Puede hacer esto a través de un script de terceros -llamado screenfetch

Screenfetch es un script bash disponible para Linux que muestra información del sistema junto con la versión ASCII del logotipo de distribución de Linux del sistema

Instalar a través del administrador de paquetessudo apt-get install screenfetch(asumiendo que estás en variantes de Debian)

y simplemente ejecuta screenfetch En tu terminal

Enlace del proyectohttps://github.com/KittyKatt/screenFetch

1
27.01.2020, 19:32
lshw -c video | grep 'configuration'
-2
27.01.2020, 19:32

Попробуйте использовать эту команду

systemctl |grep «Диспетчер отображения»

Это обеспечит следующие выходные данные.

[anil@localhost Desktop]$ systemctl |grep "Диспетчер отображения" xdm.service загружен, активен, запущен X11 Display Manager

Теперь вы можете видеть xdm.service, указанный чуть выше загруженного активного, и это ваш диспетчер отображения

2
11.07.2020, 16:25

После того, как вы включите display-manager.service, файл с символической ссылкой на указанный или используемый по умолчанию диспетчер отображения --, поскольку у вас может быть несколько файлов в одной среде рабочего стола --, должен находиться в/etc/systemd/system/display-manager.service

file /etc/systemd/system/display-manager.service

Этот способ надежно отработал у меня на ubuntu -20 LTS.

1
03.04.2021, 23:25

Еще один системный подход.

Здесь используется команда showдля фильтрации свойства службы display-manager:

➜ systemctl --property=Id,Description show display-manager.service
Id=sddm.service
Description=Simple Desktop Display Manager
1
01.07.2021, 23:30

Теги

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