Có một lệnh linux đơn giản sẽ cho tôi biết trình quản lý hiển thị của tôi là gì không?


59

Có một lệnh linux đơn giản sẽ cho tôi biết trình quản lý hiển thị của tôi là gì không?

Tôi đang sử dụng Xfce. Các môi trường máy tính để bàn khác nhau thường được liên kết với các trình quản lý hiển thị khác nhau?


1
Wikipedia có một bài viết khá hay về điều này: en.wikipedia.org/wiki/X_display_manager_%28program_type%29
Let_Me_Be

Câu trả lời:


46

Thật không may, cấu hình khác nhau cho mỗi phân phối:

Debian / Ubuntu

/etc/X11/default-display-manager

RedHat (cũng nên áp dụng cho Fedora)

/etc/sysconfig/desktop

OpenSuSe

/etc/sysconfig/displaymanager

1
Huh, tại sao bạn nói với tôi về cấu hình ...?
ptrcao

2
@ptrcao Bởi vì nó chỉ định trình quản lý hiển thị bạn đang sử dụng.
Let_Me_Be

1
Giả sử tôi không biết trình quản lý hiển thị của mình là gì và tôi muốn tìm hiểu bằng cách sử dụng thiết bị đầu cuối. Làm thế nào tôi có thể làm điều đó?
ptrcao

3
@ptrcao Bạn sẽ xem xét các tập tin đó. Hoặc mở chúng trong trình soạn thảo yêu thích của bạn, hoặc chỉ cần làm cat.
Let_Me_Be

1
Nó chỉ có một dòng trong đó: /usr/bin/xdm- điều đó có nghĩa là xdm là trình quản lý hiển thị của tôi?
ptrcao

23

Không có. Trình quản lý hiển thị không nhất thiết liên quan đến bất kỳ thứ gì khác đang chạy trên cùng một máy chủ X. Trình quản lý hiển thị chạy trước khi bạn đăng nhập; nó được chọn bởi quản trị viên hệ thống. Mọi thứ khác (trình quản lý cửa sổ, trình quản lý phiên, môi trường máy tính để bàn, tập) được người dùng chọn. Thậm chí không cần phải có trình quản lý hiển thị: nếu bạn đăng nhập ở chế độ văn bản và khởi động GUI bằng startx, không có trình quản lý hiển thị nào được tham gia.

Bạn có thể kiểm tra trình quản lý hiển thị nào là trình quản lý mặc định trên hệ thống của bạn . Điều này sẽ chỉ đưa ra câu trả lời đúng theo một số giả định phổ biến nhưng không phổ biến. Nếu bạn tự chạy một trình quản lý khác vì bất kỳ lý do gì, phương pháp này sẽ không cho bạn biết.

Đặt cược tốt là tìm ra ID tiến trình của máy chủ X: quy trình mẹ của nó có thể là trình quản lý hiển thị, nếu có. Điều này yêu cầu khách hàng của bạn đang chạy trên cùng một máy với máy chủ X. lsof /tmp/.X11-unix/X${DISPLAY#:}sẽ hiển thị quá trình máy chủ X (giả sử các ổ cắm X sống /tmp/.X11-unix).

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

(Giải thích: lsof -F ''in ra như p1234Người. -FTùy chọn có nghĩa là một định dạng đầu ra máy parseable, và ''có nghĩa là chỉ in PID, bằng chữ ptrước khi nó. x=${x#p}Dải tắt bức thư ban đầu pDòng cuối cùng có được PID của phụ huynh của máy chủ X. ( ps -o ppid -p $x) và các cuộc gọi psđể hiển thị thông tin về quy trình cha mẹ đó.)

Một số bản phân phối cho phép cài đặt nhiều trình quản lý hiển thị. Sẽ chỉ có một hoạt động duy nhất trừ khi bạn có một hệ thống nhiều màn hình. Để liệt kê tất cả các gói trình quản lý hiển thị được cài đặt trong Debian và các dẫn xuất:

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

hoặc là

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

18

Nếu bạn đang sử dụng phân phối dựa trên systemd . Lệnh này sẽ cho biết tên của trình quản lý hiển thị hiện được cấu hình vì bạn có thể đã cài đặt nhiều trình quản lý hiển thị.

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

OUTPUT sẽ giống như

ExecStart=/usr/bin/mdm

Có vẻ như tôi đang sử dụng trình quản lý hiển thị bạc hà.


3
Bạn đã trình bày một ví dụ kinh điển về việc sử dụng mèo vô dụng - nó hoàn toàn chấp nhận được, và thậm chí tốt hơn, để nói grep '/usr/bin' /etc/systemd/system/display-manager.service. (Và, nói đúng, vì /usr/binkhông chứa bất kỳ ký tự được đặc biệt để vỏ, bạn không cần phải trích dẫn nó - nhưng nó không bị tổn thương.)
G-Man Says 'Khôi phục Monica'

6
"Sử dụng mèo vô dụng" luôn có phần tương đối. Tôi thay vì chỉnh sửa chuỗi cuối cùng cat <file> | grep <searchterm>thay vì chuỗi thứ hai grep <searchterm> <file>khi grepping.
sjas

1
Câu trả lời này phải là câu hỏi đầu tiên bạn thấy, vì hầu hết người dùng có loại câu hỏi này ngày nay đều đang chạy các bản phân phối dựa trên systemd. Cảm ơn. Nó đã giúp đỡ tôi.
Adergaard

3
@allsyed tập tin của tôi không có / usr / bin nó có / usr / sbin. Linux-Mint 18
Prvt_Yadav

2
Trong trường hợp của tôi (Centos 7) Tôi sẽ viết | grep '/ usr / sbin'
Davide

16

Nếu bạn đang sử dụng systemd, thì

systemctl status display-manager

Sẽ hiển thị tên và trạng thái của dịch vụ quản lý hiển thị đang hoạt động trên máy của bạn.


Với Debian 9, đây là cái duy nhất hoạt động với tôi. Các phương thức systemd khác không trả về gì cả.
mickeyf

10

Tên trình quản lý hiển thị phải ở dạng DESKTOP_SESSION

echo $DESKTOP_SESSION

trả lại "gnome" cho tôi.

EDIT
Bạn đúng. Họ đang đi và về điều đó trên bugzilla của XFCEs nên có lẽ nó không đáng tin cậy lắm.


@frabjous: Thế còn gdm và kdm? Họ cũng hiển thị người quản lý hay chỉ là người quản lý đăng nhập?
ptrcao

Tôi đã vô tình xóa bình luận của frabjous ngay phía trên vì tôi nhớ rằng anh ấy nhận xét rằng Gnome là môi trường máy tính để bàn, không phải là trình quản lý hiển thị. Chủ đề này rất nhiều với sự nhầm lẫn ...
ptrcao

Điều này cung cấp thông tin về chương trình máy tính để bàn, có khả năng giống với môi trường máy tính để bàn của bạn, nhưng có thể là một thứ khác hoàn toàn nếu bạn không sử dụng môi trường máy tính để bàn hoặc bạn có cấu hình đặc biệt. Trên máy mà tôi đang viết những dòng này, $DESKTOP_SESSIONunknown.
Gilles 'SO- ngừng trở nên xấu xa'

+1, echo $ DESKTOP_SESSION cũng trả lại gnome cho tôi ... nhưng có lẽ điều này chỉ hoạt động cho gnome?
Trevor Boyd Smith

Nếu nó chỉ hoạt động cho gnome, lệnh này sẽ chỉ giúp bạn suy ra "có bạn có Gnome hoặc không bạn không có gnome". Khi câu hỏi muốn tìm hiểu nhiều hơn thế.
Trevor Boyd Smith

2

Giống như @Gilles đã nói, trình quản lý hiển thị sẽ bắt đầu môi trường máy tính để bàn của bạn.

Theo Debian Wiki , hầu hết các kết thúc này dmchỉ có ngoại lệ slim.

Vì vậy, điều này đủ cho hầu hết các nhu cầu của mọi người:

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

Hoặc để chắc chắn, nó tồn tại dưới dạng một tiến trình cha và không bị rẽ nhánh (ngoại trừ từ hệ thống init):

ps auxf | awk '{print $11}' | \grep -e "^/.*dm$" -e "/.*slim$" 

1
Đây là giải pháp duy nhất ở đây làm việc cho tôi. Chỉ ra rằng Fedora 23 tối thiểu của tôi với tiện ích bổ sung LXDE (không phải LXDE Spin) đang chạy lightdm. Giải pháp RedHat / Fedora từ câu trả lời hàng đầu không hoạt động, cấu hình dường như đã di chuyển.
Daniel Saner


0

Như đã đề cập, có rất nhiều nhầm lẫn trong chủ đề này. Câu hỏi ban đầu là trình quản lý hiển thị nào, không phải trình quản lý màn hình hoặc trình quản lý cửa sổ. Tôi hiện đang chạy Xfwm4, trình quản lý cửa sổ Xfce và lxdm, trình quản lý hiển thị X11 nhẹ (từ LXDE, không phải Xfce). Bạn sẽ có thể xem trình quản lý hiển thị nào bạn đang sử dụng thông qua htop. Có lẽ bạn đã phát hiện ra câu trả lời trong 4 năm qua :)


Trên thực tế chưa bao giờ ... Trên thực tế đã từ bỏ Linux hoàn toàn và chuyển sang mặt tối: D
ptrcao

0

Bạn có thể thực hiện việc này thông qua tập lệnh của bên thứ ba có tên là screenfetch

Screenfetch là tập lệnh bash có sẵn cho Linux, hiển thị thông tin hệ thống cùng với phiên bản ASCII của Logo phân phối Linux của hệ thống

Cài đặt qua trình quản lý gói sudo apt-get install screenfetch(giả sử bạn đang sử dụng các biến thể Debian)

và chỉ chạy screenfetch trong thiết bị đầu cuối của bạn

Liên kết dự án https://github.com/KittyKatt/screenFetch


-1

X có tính mô-đun cao vì vậy nếu bạn thực sự muốn nó, vâng, bạn có thể kết hợp môi trường máy tính để bàn và trình quản lý cửa sổ. Xét cho cùng, trình quản lý cửa sổ chỉ là một cách để vẽ các cửa sổ (đó là chế độ xem đơn giản).

Vì vậy, nếu bạn dùng gnome, metacity từng là trình quản lý windows nhưng giờ nó đã được thay thế bởi Mutter.

Vấn đề với việc trộn là trong môi trường máy tính để bàn hiện đại, máy tính để bàn và trình quản lý cửa sổ được liên kết chặt chẽ với nhau. Quá nhiều pha trộn có thể kết thúc trong chức năng ít hơn.

Như đã đề cập $ DESKTOP_SESSION nhưng nếu bạn muốn hỏi máy chủ X11 của mình, bạn có thể làm điều này:

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

Mà phân hủy thành

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

Mà lấy id của cửa sổ được tạo bởi trình quản lý cửa sổ. Thông số kỹ thuật cho biết (http: // st Chuẩns.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.

Và sau đó bạn yêu cầu thuộc tính WM_NAME của cửa sổ nói.

WM_NAME là:

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). 

@frabjous: Xfwm4 là trình quản lý cửa sổ Xfce. Có phải giống như một trình quản lý hiển thị?
ptrcao

@Mathieu Bạn đang nói về người quản lý cửa sổ, không phải người quản lý hiển thị.
Let_Me_Be

@Let_Me_Be Đúng nhưng hầu hết thời gian, trình quản lý cửa sổ của bạn được gắn với trình quản lý hiển thị của bạn ... Bạn có thường xuyên sử dụng trình quản lý cửa sổ gnome với kde và ngược lại không? Và nó thực sự hoạt động vì gdm / kdm / bất cứ điều gì cho phép bạn chọn trình quản lý hiển thị của mình, nghĩa là đọc tệp cấu hình như bạn đã đề cập không hoạt động nếu bạn không sử dụng mặc định được cung cấp ...
Mathieu

_NET_SUPPORTING_WM_CHECKcung cấp thông tin về trình quản lý cửa sổ, không phải về trình quản lý hiển thị. Nó thậm chí không luôn luôn hoạt động; trên hệ thống của tôi, thuộc tính đó được đặt thành ID cửa sổ nhưng cửa sổ được đề cập không có tên.
Gilles 'SO- ngừng trở nên xấu xa'

@Mathieu Điều đó phụ thuộc vào các bản phân phối. Thông thường khi bạn cài đặt phiên bản KDE của bản phân phối, bạn nhận được KDM và khi có phiên bản gnome, bạn sẽ nhận được GDM. Nhưng thứ mà bạn sẽ thấy ngày càng nhiều là hỗ trợ chính thức cho chỉ một trình quản lý hiển thị (thường là biến thể trọng lượng nhẹ hơn GDM / KDM).
Let_Me_Be

-2
lshw -c video | grep 'configuration'

3
Một chút giải thích sẽ tốt đẹp.
phk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.