What is the "thinnest" display manager available?

Polytropon freebsd at edvax.de
Tue Nov 26 02:57:29 UTC 2013

On Mon, 25 Nov 2013 13:32:04 -0800, Yuri wrote:
> I want to have as few packages installed as possible, and I want to use 
> small window manager (dwm). But what is the thinnest display manager 
> available? I know kdm and gdm both work, but both pull a ton of 
> dependencies which I don't want.

I'd say the classic xdm won't be a bad choice: it's common,
secure, easy to use, and fast. If you're using WindowMaker
for one or more accounts on your system, maybe wdm isn't
a bad choice.

However, xdm and wdm are started by an entry in /etc/ttys.

> Features required:
> * automatic start (through /etc/rc.conf)
> * automatically run xorg and window manager of choice
> * automatically login a particular user
> * not many or no dependencies
> What is the smallest display manager that qualifies?

If I understand your requirements correct, "no display manager"
would be a possible answer. You want to automatically login a
particular user? You don't even need a display manager then.
A display manager works similarly to login: ask for a user name
and a password, then run the appropriate startup shell and
scripts. For auto-login, this is not required.

> Or maybe there is an easy way to run xorg + WM with some simple shell 
> script? Anything like this ready to use?

Everything for this task is present in the base system, it just
requires a few steps. I'll provide a little howto in case this
is what you need (refactored from an earlier post I wrote to
that list).

Step 1:

In /etc/gettytab,


is to be placed _after_ the "default:" entry. This step defines
the "getty profile" for an automated login with the username
"olivares" as associated to the "al=" parameter. Also note
the "tc=" parameter which incorporates the default "Pc"
settings (that you can encounter in the next step's working
file). Here, <USERNAME> is the user you want to be logged in

Step 2:

In /etc/ttys, the line for ttyv0 is to be changed like this:

	ttyv0  "/usr/libexec/getty autologin"  cons25l1  on  secure

This instructs the "getty" program to use the "autologin
profile" at system startup and automatically log in the
user <USERNAME> (see step 1).

Attention: Maybe you need a different console configuration;
"cons25" is the system's default. In Germany, I have to use
cons25l1 for the local magic. :-)

Make sure you _don't_ have a line calling xdm here - maybe this
causes conflicts.

Step 3:

In /home/<USERNAME> (or where $HOME is located for that user),
make ~/.login end in

	[ ! -f /tmp/.X0-lock ] && startx

For bash, this would go to ~/.bash_login. Other shells may
have different startup files; see "man sh", "man csh",
"man bash" and "man <yourshell>" for details.

To become independent from the actual login shell, you can
write this command into a script that is executable by the
user, e. g. "chmod +x /opt/bin/autostartx"; if you have
/opt/bin in $PATH, you just need to call "autostartx" in
the correct startup file. Then _any_ shell startup script
could contain the call that script, like this:

	[ ! -f /tmp/.X0-lock ] && startx
	exec $0

You can also make this script local to your user in ~/bin,
maybe you already have that in $PATH.

Attention: This _might_ get you into an "infinite loop" if
something is _really_ wrong. :-)

You can even modify the script to _restart_ X if it should
have crashed, so you don't fall back to the console in
case of a severe error (and enter "startx" again).

Step 4 (optional):

In order to combine the use of xdm (or other DMs) and the
different system shells, for your user account there can be
some additional settings.

In ~/.xsession, put

	source ~/.cshrc
	exec ~/.xinitrc

This file will be executed in case xdm is used. I am using the
C shell as a dialog shell here, so this makes sure my shell
settings get incorporated. Then control will be given to the
.xinitrc file, usually executed when you run "startx", but
xdm _may_ have a different opinion.

In ~/.xinitrc, put all your X startup stuff.

	[ -f ~/.xmodmaprc ] && xmodmap ~/.xmodmaprc
	#xrandr --fb 1400x1050
	#xrandr --size 1400x1050
	intclock -geometry 186x65+151-0 &
	xload -geometry 150x70+0+826 -bg white -fg black -hl gray \
		-scale 5 -label "System load" -update 1 &
	xmbmon -g 150x100+0+897 -tmin 20.0 -tmax 70.0 -cmtmb CPU \
		-cltmb blue -cmtcpu CS -cltcpu cyan -cmtcs SYS \
		-cltcs green -vmin 2.0 -vmax 3.0 -cmvc V -clvc red &
	xclock -geometry 50x50+50+998 &
	xbiff -geometry 50x50+0+998 &
	xlogo -geometry 50x50+100+998 -render &
	xcpufreq -geometry 183x167+151+826 -cpuscalecolor grey \
		-freqscalecolor grey -scales 6 -update 1 -jumpscroll 1 &
	xterm -geometry 80x25+0+465 -class NOCLOSE_TERMINAL -fg black \
		-bg beige -title Terminal &
	xsetroot -solid rgb:3b/4c/7a
	xset b 100 1000 15 &
	xset r rate 250 30 &
	xset s off &
	xset -dpms &
	exec wmaker

The first line (#!) is optional. I'm not fully sure if those
files have to be +x attributes (I _have_ those settings, no idea
where they came from and why they are still here). But it works,
so I don't question it. :-)

The last line, "exec", contains the call to the desired window
manager. Maybe the file just needs to be as short as maybe

	exec startxfce4

to do everything you need.

Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...

More information about the freebsd-questions mailing list