SLiM

From Gentoo Wiki
Jump to: navigation, search
External resources

SLiM (Simple Login Manager) is a desktop-independent graphical display manager. Being fast and having only a few dependencies, it is a popular choice amongst users of lightweight window managers.

Installation

Install x11-misc/slim:

→ Information about USE flags
USE flag Default Recommended Description
branding Yes Enable Gentoo specific branding
consolekit Yes Enable native consolekit support
pam Yes Adds support for PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip
root # emerge --ask x11-misc/slim
Note
You have to enable the pam USE flag for x11-misc/slim if you need the slimlock command for locking the screen.

Configuration

Boot service

OpenRC

Set SLiM as your default display manager:

File/etc/conf.d/xdm

DISPLAYMANAGER="slim"

To start SLiM on boot, add xdm to your default runlevel:

root # rc-update add xdm default

To start SLiM now:

root # /etc/init.d/xdm start

systemd

To start SLiM on boot:

root # systemctl enable slim

To start SLiM now:

root # systemctl start slim

Upstream-Style configuration

Make this section look like this:

File/etc/slim.conf

# login_cmd           exec /bin/sh - ~/.xinitrc %session
login_cmd           exec /bin/bash -login ~/.xinitrc %session
# login_cmd           exec /bin/bash -login /usr/share/slim/Xsession %session

Then follow wiki pages to setup window manager of your choice that starts.

Default configuration - no default session

Most global configuration is done in /etc/slim.conf.

Note
In the following paragraphs Awesome WM is used as an example window manager.

By default, SLiM is configured to make all sessions in /etc/X11/Sessions/ accessible — you can cycle through them by pressing the F1 key. This behavior is acquired by setting the options below:

File/etc/slim.conf

login_cmd            exec /bin/bash -login /usr/share/slim/Xsession %session
...
sessiondir           /etc/X11/Sessions

When no other changes are made, users will need to press F1 while logging-in to select the desired session. In following sections there are described several methods of setting one session as the default one.

Warning
Some window managers do not provide session file, and though cannot be seen in /etc/X11/Sessions/ by SLiM. In that case you should use second method of setting a default session for one user (using custom ~/.xsession file), because neither global nor 'per user using bundled session files' methods will work. You may also file a bug, asking a developer to add a session file to the ebuild.

Setting a global default session

You can set a default session for all users of the computer, by setting the XSESSION variable. To do this, create and edit file /etc/env.d/90xsession.

File/etc/env.d/90xsession

XSESSION="awesome"

After saving the file run:

root # env-update

Setting a default session for one user

Besides (or instead of) setting a global default session, you can let every user choose his default session.

There are three approaches. You can either:

  • use the SLiM session script (/usr/share/slim/Xsession) to trigger session script from /etc/X11/Sessions/
  • use the SLiM session script to trigger user-created session script
  • force users to take care of setting everything by themselves

The first and second possibilities are generally preferred. However, if for any reason you do not want to set any defaults, you may choose the third approach.

Per-user default session using bundled session files

The simplest way to set a default session for one user is to make a symbolic link from the session file to ~/.xsession

user $ ln -s /etc/X11/Sessions/awesome ~/.xsession

An alternative is to put session command in the ~/.xsession file:

File~/.xsession

/etc/X11/Sessions/awesome

You will only need to make sure the file is executable:

user $ chmod u+x ~/.xsession

Per-user default session using the customized ~/.xsession file

Sometimes you need to customize the launcher script, e.g. to run other programs before starting the window manager or to start WM with a customized command. The method above does not allow such modifications, but it can be achieved by using default session script (instead of the one provided by window manager) and launching WM through the ~/.xsession file.

To run your sessions this way, make sure you have no global default session set (or set it to XSESSION="custom" in /etc/env.d/90xsession like described above). Then edit your ~/.xsession file, putting your WM launcher at the end.

The file may look like this:

File~/.xsession

#!/bin/sh

# Run urxvt daemon
urxvtd -q -o -f
# Set xserver parameters
xset s 0
xset dpms 0 0 1800
# Launch awesome
exec /usr/bin/awesome

You may also look at the WM session files in /etc/X11/Sessions/ to find "how things are done".

Important
By default SLiM evaluates /usr/share/slim/Xsession first, then /etc/X11/Sessions/Xsession, and ~/.xsession is called last, so there is no need to duplicate entries from that two previous files.

Finally, remember to make sure the file is executable:

user $ chmod u+x ~/.xsession

Per-user default session without using any default session files

If you do not like any defaults from /usr/share/slim/Xsession and /etc/X11/Sessions/Xsession, you can let your users set everything by themselves. It is generally not a good idea, but sometimes you may need it.

Warning
You must be sure that every user will know what he is expected to do and that he/she will have enough knowledge to create ~/.xinitrc by himself. For example, when configuring SLiM in this way, neither .Xresources nor .Xkbmap files are read by default and no errorfiles are created.

Start by editing /etc/slim.conf in the following way:

File/etc/slim.conf

#login_cmd            exec /bin/bash -login /usr/share/slim/Xsession %session
login_cmd           exec /bin/bash -login ~/.xinitrc %session
...
#sessiondir           /etc/X11/Sessions
sessions            awesome,i3

In the sessions line you may put the names of window managers you are planning to use.

Then create and edit ~/.xinitrc file, which may look as below:

File~/.xinitrc

#!/bin/sh
#
# Custom xinitrc file for Gentoo

DEFAULT_SESSION="awesome"

# Redirect errors to a file in user's home directory if we can
for errfile in "$HOME/.wm-errors" "${TMPDIR-/tmp}/wm-$USER" "/tmp/wm-$USER"
do
    if ( cp /dev/null "$errfile" 2> /dev/null )
    then
        chmod 600 "$errfile"
        exec > "$errfile" 2>&1
        break
    fi
done

# Define Xresources
userresources=$HOME/.Xresources

# Merge what is available
if [ -f "$userresources" ]; then
    xrdb -merge "$userresources"
fi

# Run urxvt daemon
urxvtd -q -o -f
# Set xserver parameters
xset s 0
xset dpms 0 0 1800

# Start WM
case $1 in 
awesome|i3)
        exec $1
        ;;
*)
        exec $DEFAULT_SESSION
        ;;
esac

Finally make sure the file is executable:

user $ chmod u+x ~/.xinitrc

More tweaks

Theme selection

Note
You can install the package x11-themes/slim-themes for having various nice-looking themes you can choose from.

Theme selection is done by changing the following line:

File/etc/slim.conf

current_theme    slim-gentoo-simple

You can easily find what themes are available on your system:

user $ ls /usr/share/slim/themes/

You can preview a theme by running the following command while Xorg is running:

user $ slim -p /usr/share/slim/themes/<theme name>

NumLock state on login

The NumLock key can be turned on or off by default:

File/etc/slim.conf

numlock    on

Autologin

Change $USER to the user name you want to log in as.

File/etc/slim.conf

default_user        $USER
auto_login          yes

for me i would insert default_user 666threesixes666

If you have sudo this is easiest quickest automated way to insert this.

user $ sudo echo "default_user $USER" >> /etc/slim.conf
user $
sudo echo "auto_login yes" >> /etc/slim.conf

Unlock keyrings

The following section will describe how to make SLiM automatically unlock different keychains automatically when you log in.

GNOME Keyring

First make sure you have gnome-base/gnome-keyring (include app-crypt/seahorse if you want a GUI). To configure SLiM to unlock your GNOME Keyring automatically you have to edit its PAM configuration file. To do so open /etc/pam.d/slim and modify it to look similar to the text below. Lines ending with comment "#keyring" should be added.

File/etc/pam.d/slim

auth	include		system-local-login
auth  optional	pam_gnome_keyring.so #keyring
account	include		system-local-login
session	include		system-local-login
session optional	pam_gnome_keyring.so auto_start #keyring

Once this change has been made your keyring should be automatically unlocked next time you log in.

Troubleshooting

Failed to connect to socket /var/run/dbus/system_bus_socket:

This error is caused when dbus hasn't been started. It is possible that it wasn't added to the default run level. To fix this type the following:

root # rc-update add dbus default

This will ensure that dbus is running when you boot up your computer. It may be that this has already been added by other WM, but I had to do this when using awesome WM.