Is there a simple linux command that will tell me what my display manager is?
I'm using Xfce. Are different desktop environments usually affiliated with different display managers?
Is there a simple linux command that will tell me what my display manager is?
I'm using Xfce. Are different desktop environments usually affiliated with different display managers?
Unfortunately the configuration differs for each distribution:
/etc/X11/default-display-manager
/etc/sysconfig/desktop
see Fedora docs: Switching desktop environments
/etc/sysconfig/displaymanager
cat
.
Commented
Sep 9, 2011 at 15:56
/usr/bin/xdm
- does that mean xdm is my display manager?
If you are using a systemd based distribution, this command will give the name of the display manger currently configured because you may have more than one display manager installed.
grep 'ExecStart=' /etc/systemd/system/display-manager.service
Output will be something like
ExecStart=/usr/bin/mdm
Looks like I am using mint display manager.
If you're using systemd, then
systemctl status display-manager
Will display the name and status of the active display manager service on your machine.
There isn't. The display manager is not necessarily related to anything else that's running on the same X server. The display manager runs before you log in; it's chosen by the system administrator. Everything else (window manager, session manager, desktop environment, …) is chosen by the user. There doesn't even have to be a display manager: if you log in in text mode and start the GUI with startx
, no display manager is involved.
You can check which display manager is the default one on your system. This will only give the right answer under some common but not universal assumptions. If you manually ran a different manager for whatever reason, this method won't tell you.
A good bet is to find out the process ID of the X server: its parent process is probably a display manager, if there is one. This requires that your clients are running on the same machine as the X server. lsof /tmp/.X11-unix/X${DISPLAY#:}
will show the X server process (assuming the X sockets live in /tmp/.X11-unix
).
x=$(lsof -F '' /tmp/.X11-unix/X0); x=${x#p}
ps -p $(ps -o ppid -p $x)
(Explanation: lsof -F ''
prints output like p1234
. The -F
option means a machine-parseable output format, and ''
means to only print the PID, with the letter p
before it. x=${x#p}
strips off the initial letter p
. The last line obtains the PID of the parent of the X server (ps -o ppid -p $x
), and calls ps
to show information about that parent process.)
Some distributions allow installing multiple display managers. There'll only be a single one running unless you have a multiseat system though. To list all installed display manager packages under Debian and derivatives:
aptitude -F %p search '~i ~P^x-display-manager$'
or
</var/lib/dpkg/status awk '
/^Package: / {package = $2}
/^Provides: .*x-display-manager/ {print package}'
The display manager name should be in DESKTOP_SESSION
echo $DESKTOP_SESSION
returns "gnome" for me.
EDIT
You're right. They're going back and forth on that on XFCEs bugzilla so it probably isn't very reliable.
$DESKTOP_SESSION
is unknown
.
Commented
Sep 9, 2011 at 23:56
gnome
is not a display manager (gdm
is the GNOME Display Manager). The DESKTOP_SESSION
environment variable does not provide any information about the display manager – only the desktop session (which is likely to be the same as the desktop environment).
Commented
Sep 5, 2019 at 11:09
Like @Gilles said, the display manager will start your desktop environment.
According to the Debian Wiki, mostly these end with dm
, only exceptions are gdm3
and slim
.
So this should suffice for most of people's needs:
ps auxf | awk '{print $11}' | \grep -E '(dm|slim|gdm3)$'
Or to be sure, it exists as a parent process, and is not forked (except from the init system):
ps auxf | awk '{print $11}' | \grep -E "^/.*(dm|slim|gdm3)$"
lightdm
. The RedHat/Fedora solution from the top answer didn't work, the configuration seems to have moved.
Commented
Feb 7, 2016 at 14:29
Try using this command
systemctl |grep "Display Manager"
This will provide below output.
[anil@localhost Desktop]$ systemctl |grep "Display Manager" xdm.service loaded active running X11 Display Manager
Now you can see xdm.service listed just above loaded active running and that is your Display Manager
You can do this via a third-party script called screenfetch
Screenfetch is a bash script available for Linux that displays system information alongside the ASCII version of the Linux distribution Logo of the system
Install via package manager
sudo apt-get install screenfetch
(assuming you're on Debian variants)
and just run
screenfetch
In your terminal
Project link https://github.com/KittyKatt/screenFetch
After you enable the display-manager.service
, a symlinked file to the specified or default display manager in use -- as you might have multiple one on the same desktop environment -- should be at /etc/systemd/system/display-manager.service
file /etc/systemd/system/display-manager.service
This method reliably worked out for me on ubuntu-20 LTS.
Another systemd approach.
This one uses the show
command to filter out a property of the display-manager
service:
➜ systemctl --property=Id,Description show display-manager.service
Id=sddm.service
Description=Simple Desktop Display Manager
As already mentioned, there is a lot of confusion in this thread. The original question is what display manager, not desktop manager or window manager. I'm currently running Xfwm4 which is Xfce window manager, and lxdm which is lightweight X11 display manager (from LXDE, not Xfce). You should be able to see what display manager you are using via htop. You've probably long since discovered the answer over the past 4 years :)
In some case, wmctrl could help. This utility is compatible with a lot of windows managers.
wmcrt -m
should display the name of the currently used window manager.