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?
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?
Câu trả lời:
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
cat
.
/usr/bin/xdm
- điều đó có nghĩa là xdm là trình quản lý hiển thị của tôi?
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ư p1234
Người. -F
Tù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ữ p
trước khi nó. x=${x#p}
Dải tắt bức thư ban đầu p
Dò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}'
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à.
grep '/usr/bin' /etc/systemd/system/display-manager.service
. (Và, nói đúng, vì /usr/bin
khô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.)
cat <file> | grep <searchterm>
thay vì chuỗi thứ hai grep <searchterm> <file>
khi grepping.
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.
$DESKTOP_SESSION
là unknown
.
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 dm
chỉ 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$"
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.
Trong một số trường hợp, wmctrl có thể giúp đỡ. Tiện ích này tương thích với rất nhiều trình quản lý windows.
wmcrt -m
sẽ hiển thị tên của trình quản lý cửa sổ hiện đang sử dụng.
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 :)
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
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).
_NET_SUPPORTING_WM_CHECK
cung 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.