답변:
불행히도 구성은 배포마다 다릅니다.
데비안 / 우분투
/etc/X11/default-display-manager
RedHat (Fedora에도 적용해야 함)
/etc/sysconfig/desktop
OpenSuSe
/etc/sysconfig/displaymanager
cat
.
/usr/bin/xdm
-xdm이 내 디스플레이 관리자라는 의미입니까?
없습니다. 디스플레이 관리자가 반드시 동일한 X 서버에서 실행되는 다른 것과 관련이있는 것은 아닙니다. 로그인하기 전에 디스플레이 관리자가 실행됩니다. 시스템 관리자가 선택합니다. 그 밖의 모든 것 (창 관리자, 세션 관리자, 데스크탑 환경 등)은 사용자가 선택합니다. 디스플레이 관리자가 필요하지 않습니다. 텍스트 모드로 로그인하고로 GUI를 시작하면 startx
디스플레이 관리자가 필요하지 않습니다.
시스템에서 어떤 디스플레이 관리자가 기본 디스플레이 관리자인지 확인할 수 있습니다 . 이것은 보편적이지만 가정이 아닌 일반적인 가정 하에서 만 정답을 줄 것입니다. 어떤 이유로 든 다른 관리자를 수동으로 실행 한 경우이 방법으로 알려주지 않습니다.
X 서버의 프로세스 ID를 찾는 것이 좋습니다. 부모 프로세스는 아마도 디스플레이 관리자 일 것입니다. 이를 위해서는 클라이언트가 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
옵션은 기계 구문 분석 가능 출력 형식을 ''
의미하며, 그 p
앞에 문자 를 사용하여 PID 만 인쇄하는 것을 의미 합니다. x=${x#p}
초기 문자를 제거합니다 p
. 마지막 행은 X 서버의 상위 PID를 얻습니다. ( ps -o ppid -p $x
)을 호출 ps
하고 해당 상위 프로세스에 대한 정보를 표시하도록 호출 합니다.)
일부 배포판에서는 여러 디스플레이 관리자를 설치할 수 있습니다. 멀티 시트 시스템이 없다면 단 하나만 실행됩니다. 설치된 모든 디스플레이 관리자 패키지를 데비안 및 파생 제품 아래에 나열하려면 :
aptitude -F %p search '~i ~P^x-display-manager$'
또는
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
당신이 사용하는 경우 systemd 기반 배포를. 이 명령은 둘 이상의 디스플레이 관리자가 설치되어 있기 때문에 현재 구성된 디스플레이 관리자의 이름을 제공합니다.
grep '/usr/s\?bin' /etc/systemd/system/display-manager.service
출력은 다음과 같습니다
ExecStart=/usr/bin/mdm
민트 디스플레이 관리자를 사용하는 것 같습니다.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (그리고 엄밀히 말하면, /usr/bin
쉘에 특별한 문자가 포함되어 있지 않으므로 인용 할 필요는 없지만 아프지 않습니다.)
cat <file> | grep <searchterm>
두 번째 문자열 대신 마지막 문자열을 편집합니다 grep <searchterm> <file>
.
디스플레이 관리자 이름은 DESKTOP_SESSION에 있어야합니다.
echo $DESKTOP_SESSION
나를 위해 "gnome"을 반환합니다.
편집
당신이 맞아요. 그들은 XFCEs bugzilla 에서 계속 진행하고 있기 때문에 아마도 신뢰할 수는 없습니다.
$DESKTOP_SESSION
입니다 unknown
.
@Gilles가 말했듯이 디스플레이 관리자는 데스크탑 환경을 시작합니다.
데비안 위키 에 따르면 , 이것은 대부분 dm
예외로만 끝납니다 slim
.
따라서 대부분의 사람들의 요구에 충분합니다.
ps auxf | awk '{print $11}' | \grep --color -e dm$ -e slim$
또는 부모 프로세스로 존재하며 분기되지 않습니다 (init 시스템 제외).
ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$"
lightdm
. 최상위 답변의 RedHat / Fedora 솔루션이 작동하지 않아 구성이 이동 한 것 같습니다.
어떤 경우에는 wmctrl이 도움이 될 수 있습니다. 이 유틸리티는 많은 Windows 관리자와 호환됩니다.
wmcrt -m
현재 사용 된 창 관리자의 이름을 표시해야합니다.
이미 언급 했듯이이 스레드에는 많은 혼란이 있습니다. 원래 질문은 데스크탑 관리자 나 창 관리자가 아닌 디스플레이 관리자입니다. 현재 Xfce 창 관리자 인 Xfwm4와 경량 X11 디스플레이 관리자 인 lxdm (Xfce가 아닌 LXDE에서)을 실행하고 있습니다. htop을 통해 사용중인 디스플레이 관리자를 볼 수 있어야합니다. 당신은 아마 지난 4 년 동안 그 답을 발견 한 지 오래되었습니다. :)
screenfetch 라는 타사 스크립트를 통해이 작업을 수행 할 수 있습니다.
Screenfetch는 Linux에서 사용할 수있는 bash 스크립트로, 시스템의 Linux 배포 로고의 ASCII 버전과 함께 시스템 정보를 표시합니다
패키지 관리자를 통해 설치하십시오
sudo apt-get install screenfetch
(데비안 변종이라고 가정)
그리고 그냥
screenfetch
터미널에서 실행
X는 고도로 모듈화되어 있으므로 실제로 원한다면 데스크톱 환경과 Windows 관리자를 혼합 할 수 있습니다. 결국 창 관리자는 창을 칠하는 방법 일뿐입니다 (간단한보기입니다).
따라서 그놈을 받아들이면 메타 시티는 창 관리자 였지만 이제는 Mutter로 대체되었습니다.
믹싱 문제는 최신 데스크톱 환경에서 발생하며 데스크톱과 창 관리자는 서로 밀접한 관련이 있습니다. 혼합이 너무 많으면 기능이 줄어들 수 있습니다.
언급했듯이 $ 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"
창 관리자가 만든 창의 ID를 가져옵니다. 사양에 따르면 (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).
_NET_SUPPORTING_WM_CHECK
디스플레이 관리자가 아닌 창 관리자에 대한 정보를 제공합니다. 항상 작동하지는 않습니다. 내 시스템에서 해당 속성은 창 ID로 설정되어 있지만 해당 창에 이름이 없습니다.