glfs/x/dm/sddm.xml
2023-08-27 13:33:30 -05:00

608 lines
19 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY sddm-download-http "https://github.com/sddm/sddm/archive/v&sddm-version;/sddm-&sddm-version;.tar.gz">
<!ENTITY sddm-download-ftp " ">
<!ENTITY sddm-md5sum "7af67d5fb767639861d35c80eb4e1191">
<!ENTITY sddm-size "3.4 MB">
<!ENTITY sddm-buildsize "22 MB">
<!ENTITY sddm-time "0.3 SBU (Using parallelism=4">
]>
<sect1 id="sddm" xreflabel="sddm-&sddm-version;">
<?dbhtml filename="sddm.html"?>
<title>sddm-&sddm-version;</title>
<indexterm zone="sddm">
<primary sortas="a-sddm">sddm</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to sddm</title>
<para>
The <application>sddm</application> package contains a lightweight
display manager based upon <application>Qt</application> and QML.
</para>
&lfs120_checked;
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Download (HTTP): <ulink url="&sddm-download-http;"/>
</para>
</listitem>
<listitem>
<para>
Download (FTP): <ulink url="&sddm-download-ftp;"/>
</para>
</listitem>
<listitem>
<para>
Download MD5 sum: &sddm-md5sum;
</para>
</listitem>
<listitem>
<para>
Download size: &sddm-size;
</para>
</listitem>
<listitem>
<para>
Estimated disk space required: &sddm-buildsize;
</para>
</listitem>
<listitem>
<para>
Estimated build time: &sddm-time;
</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">SDDM Dependencies</bridgehead>
<bridgehead renderas="sect4">Required</bridgehead>
<para role="required">
<xref linkend="cmake"/>,
<xref linkend="extra-cmake-modules"/>, and
&qt5-deps;
</para>
<bridgehead renderas="sect4">Recommended</bridgehead>
<para role="recommended">
<xref linkend="docutils"/> (for the man pages),
<xref linkend="linux-pam"/>, and
<xref linkend="upower"/>
</para>
<!--
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/sddm"/>
</para>
-->
</sect2>
<sect2 role="installation">
<title>Installation of SDDM</title>
<para>
First, create a dedicated user and group to take
control of the <command>sddm</command> daemon after it is
started. Issue the following commands as the
&root; user:
</para>
<screen role="root"><userinput>groupadd -g 64 sddm &amp;&amp;
useradd -c "sddm Daemon" \
-d /var/lib/sddm \
-u 64 -g sddm \
-s /bin/false sddm</userinput></screen>
<!--
<para revision="sysv">
Next, fix the application to start <command>upowerd</command>,
if necessary, and after login, start the session with
<command>ck-launch-session</command>:
</para>
<screen revision="sysv"><userinput>sed -e '/UPOWER_SERVICE)/ s:^://:' \
-i src/daemon/PowerManager.cpp &amp;&amp;
sed -e '/\$@$/s/exec/&amp; ck-launch-session/' \
-i data/scripts/Xsession</userinput></screen>
<para revision="sysv">
For sddm-0.16.0, ConsoleKit support has been added, but is broken. Remove
it with:
</para>
-->
<!-- This removes also logind support. Hopefully should be fixed for next
version
<screen revision="sysv"><userinput>sed -e '/available.*true/s/true/false/' \
-i src/daemon/LogindDBusTypes.cpp</userinput></screen>
-->
<para>
Install <application>sddm</application> by running the following
commands:
</para>
<screen revision="sysv"><userinput>mkdir build &amp;&amp;
cd build &amp;&amp;
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DENABLE_JOURNALD=OFF \
-DNO_SYSTEMD=ON \
-DRUNTIME_DIR=/run/sddm \
-DUSE_ELOGIND=ON \
-DBUILD_MAN_PAGES=ON \
-DDATA_INSTALL_DIR=/usr/share/sddm \
-DDBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf \
.. &amp;&amp;
make</userinput></screen>
<screen revision="systemd"><userinput>mkdir build &amp;&amp;
cd build &amp;&amp;
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DRUNTIME_DIR=/run/sddm \
-DBUILD_MAN_PAGES=ON \
-DDATA_INSTALL_DIR=/usr/share/sddm \
-DDBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf \
.. &amp;&amp;
make</userinput></screen>
<para>
This package does not come with a test suite.
</para>
<para>
Now, as the <systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>make install &amp;&amp;
install -v -dm755 -o sddm -g sddm /var/lib/sddm
/usr/bin/sddm --example-config > /etc/sddm.conf</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para>
<parameter>-DCMAKE_BUILD_TYPE=Release</parameter>: This switch is used to
apply additional compiler optimizations.
</para>
<para revision="sysv">
<parameter>-DENABLE_JOURNALD=OFF</parameter> and
<parameter>-DNO_SYSTEMD=ON</parameter>: These switchs are used because
this version of BLFS does not support <application>systemd</application>.
</para>
<para>
<parameter>-DDBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf</parameter>:
This switch prevents the file <filename>
/etc/dbus-1/system.d/org.freedesktop.DisplayManager.conf</filename> from
being overwritten, as it may be used by other DM's.
</para>
<para>
<option>-DBUILD_MAN_PAGES=ON</option>: This switch is used to build
and install man pages.
</para>
</sect2>
<sect2 role="configuration">
<title>Configuring SDDM</title>
<sect3 id="sddm-config">
<title>Config Files</title>
<para>
/etc/sddm.config
</para>
<indexterm zone="sddm sddm-config">
<primary sortas="e-sddm.conf">/etc/sddm.conf</primary>
</indexterm>
<para>
Normally, you want to edit this file. For example, if Xorg is installed
in /opt, use your preferred editor as the &root; user to replace the
default <emphasis>XauthPath</emphasis> value by
<emphasis>/opt/xorg/bin/xauth</emphasis>. Or, as the &root; user,
issue:
</para>
<screen role="root"><userinput>sed -i.orig '/ServerPath/ s|usr|opt/xorg|' /etc/sddm.conf</userinput></screen>
<para>
This command will do the substitution and create a copy of the original
file with name <filename>/etc/sddm.conf.orig</filename>.
</para>
<para>
From now on, we will describe how to modify configurations using sed.
Of course, you may instead use your preferred editor as the &root;
user.
</para>
<para>
For security reasons, you normally want the default
<emphasis>ServerArguments=-nolisten tcp</emphasis>, unless a remote
machine needs access to the local X server. In that case, as the
&root; user, issue:
</para>
<screen role="root"><userinput>sed -i 's/-nolisten tcp//' /etc/sddm.conf</userinput></screen>
<para>
Desktop (Notebook) users, normally want the Num Lock key on (off). For
that, as &root;, issue:
</para>
<screen role="root"><userinput>sed -i 's/none/on/' /etc/sddm.conf</userinput></screen>
<para>
for Desktop users. For Notebook users, replace /on/ by /off/
in the command above.
</para>
<para>
By default, a virtual keyboard is presented for the user. If this is
not desired, run as &root;:
</para>
<screen role="root"><userinput>sed -i 's/qtvirtualkeyboard//' /etc/sddm.conf</userinput></screen>
</sect3>
<sect3 id="sddm-bootscript">
<title>Boot Script</title>
<para revision="sysv">
Install the <filename revision="sysv">/etc/rc.d/init.d/xdm</filename>
init script from the <xref linkend="bootscripts" revision="sysv"/>
package, as the &root; user:
</para>
<para revision="systemd">
Enable the pre-installed systemd unit by running the following command
as the &root; user:
</para>
<indexterm zone="sddm sddm-bootscript">
<primary sortas="f-sddm">sddm</primary>
</indexterm>
<screen role="root" revision="sysv"><userinput>make install-sddm</userinput></screen>
<screen role="root" revision="systemd"><userinput>systemctl enable sddm</userinput></screen>
</sect3>
<sect3>
<title>Linux PAM Configuration</title>
<note>
<para>
The install procedure above installed a set of PAM configuration
files. These procedures overwrite them and use versions compatible
with a BLFS environment.
</para>
</note>
<para>
If you have built <application>sddm</application>
with <application>Linux PAM</application> support,
create the necessary configuration files by running
the following commands as the &root; user:
</para>
<screen role="root" revision="sysv"><userinput>cat &gt; /etc/pam.d/sddm &lt;&lt; "EOF"
<literal># Begin /etc/pam.d/sddm
auth requisite pam_nologin.so
auth required pam_env.so
auth required pam_succeed_if.so uid &gt;= 1000 quiet
auth include system-auth
account include system-account
password include system-password
session required pam_limits.so
session include system-session
# End /etc/pam.d/sddm</literal>
EOF
cat &gt; /etc/pam.d/sddm-autologin &lt;&lt; "EOF"
<literal># Begin /etc/pam.d/sddm-autologin
auth requisite pam_nologin.so
auth required pam_env.so
auth required pam_succeed_if.so uid &gt;= 1000 quiet
auth required pam_permit.so
account include system-account
password required pam_deny.so
session required pam_limits.so
session include system-session
# End /etc/pam.d/sddm-autologin</literal>
EOF
cat &gt; /etc/pam.d/sddm-greeter &lt;&lt; "EOF"
<literal># Begin /etc/pam.d/sddm-greeter
auth required pam_env.so
auth required pam_permit.so
account required pam_permit.so
password required pam_deny.so
session required pam_unix.so
-session optional pam_systemd.so
# End /etc/pam.d/sddm-greeter</literal>
EOF</userinput></screen>
<screen role="root" revision="systemd"><userinput>cat &gt; /etc/pam.d/sddm &lt;&lt; "EOF" &amp;&amp;
<literal># Begin /etc/pam.d/sddm
auth requisite pam_nologin.so
auth required pam_env.so
auth required pam_succeed_if.so uid &gt;= 1000 quiet
auth include system-auth
account include system-account
password include system-password
session required pam_limits.so
session include system-session
# End /etc/pam.d/sddm</literal>
EOF
cat &gt; /etc/pam.d/sddm-autologin &lt;&lt; "EOF" &amp;&amp;
<literal># Begin /etc/pam.d/sddm-autologin
auth requisite pam_nologin.so
auth required pam_env.so
auth required pam_succeed_if.so uid &gt;= 1000 quiet
auth required pam_permit.so
account include system-account
password required pam_deny.so
session required pam_limits.so
session include system-session
# End /etc/pam.d/sddm-autologin</literal>
EOF
cat &gt; /etc/pam.d/sddm-greeter &lt;&lt; "EOF"
<literal># Begin /etc/pam.d/sddm-greeter
auth required pam_env.so
auth required pam_permit.so
account required pam_permit.so
password required pam_deny.so
session required pam_unix.so
-session optional pam_systemd.so
# End /etc/pam.d/sddm-greeter</literal>
EOF</userinput></screen>
</sect3>
<sect3 id="sddm-init" revision="sysv">
<title>Starting sddm</title>
<para>
If the sddm bootscript has been installed, start sddm by running, as the
&root; user:
</para>
<screen role="root"><userinput>/etc/rc.d/init.d/xdm start</userinput></screen>
<para>
By convention, X should be executed at runlevel 5, consequently, the
same is true for <application>sddm</application>. However, the default
runlevel is 3. Changing to runlevel 5, from a console terminal, as
<systemitem class="username">root</systemitem> user, starts the
<command>sddm</command> bootscript, bringing up the greeter screen:
</para>
<screen role="root"><userinput>init 5</userinput></screen>
<para>
In order to permanently set the default to 5, starting the
<command>sddm</command> greeter screen automatically, modify
<filename>/etc/inittab</filename> as the <systemitem
class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>cp -v /etc/inittab{,-orig} &amp;&amp;
sed -i '/initdefault/ s/3/5/' /etc/inittab</userinput></screen>
</sect3>
<sect3 id="sddm-sessions">
<title>Available Sessions</title>
<para>
The greeter offers a list of available sessions, depending on the
Window Managers and Desktop Environments installed. The list includes
sessions which have a corresponding <filename>.desktop</filename> file
installed under
<filename class="directory">/usr/share/xsessions</filename> or
<filename class="directory">/usr/share/wayland-sessions</filename>.
Most of the Window Managers and Desktop Environments automatically
provide those files, but if necessary, you may include a custom one.
</para>
</sect3>
<sect3 id="sddm-themes">
<title>Themes</title>
<para>
Three themes are installed at <filename class="directory">
/usr/share/sddm/themes</filename>:
elarun,
maldives, and
maya.
There is also a default theme, which is not present in that directory.
You can install other themes in that directory. In order to change the
theme, you need to edit <filename>/etc/sddm.conf</filename>,
to change the default (empty) theme, replacing <quote>Current=</quote>
with <quote>Current=&lt;new theme&gt;</quote>, e.g.
<quote>Current=maldives</quote>.
</para>
<para>
In order to see the theme without leaving the session, issue:
</para>
<screen role="nodump"><userinput>sddm-greeter --test-mode --theme <replaceable>&lt;theme path&gt;</replaceable></userinput></screen>
</sect3>
<!--
<sect3 id="sddm-Issues">
<title>Known Issues</title>
<para>
This application works well, but there are issues. You find the
mainstream known issues at
<ulink url="https://github.com/sddm/sddm/issues">Issues</ulink>.
The BLFS development team have found some issues.
</para>
<note>
<para>
In the next couple of paragraphs, due to a problem with sddm-greeter,
we mention how to define the keyboard used there. Notice that this is
also the keyboard that will be used in the X session, unless there is
a configuration in the Desktop Environment or in the Window Manager
overriding it, afterwards.
</para>
</note>
<para>
Keyboard selection: the greeter shows a double question mark or the
wrong keyboard. When you start to type the password or user name
(depending on the theme, only password), the right keyboard selection
magically appears. Optionally, a workaround is to include the keyboard
list in <command>/usr/share/sddm/scripts/Xsetup</command> script, as the
<systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>echo 'setxkbmap <replaceable>"&lt;your keyboard comma separated list&gt;"</replaceable>' &gt;&gt; \
/usr/share/sddm/scripts/Xsetup</userinput></screen>
<para>
E.g. <command>echo 'setxkbmap "fr,gb,br,us"' &gt;&gt;
/usr/share/sddm/scripts/Xsetup</command>. A very accurate definition
of the keyboard(s) is possible, for example: <command>echo 'setxkbmap
-model pc105 -layout br,us -variant abnt2,dvorak -keycodes evdev'
&gt;&gt; /usr/share/sddm/scripts/Xsetup</command>. See man setxkbmap.
</para>
<para>
Dircolors: the <filename>/etc/dircolors</filename> file is not
honoured. Particularly, the compressed files are not displayed in red
colour. If this happens, a workaround is to issue, as the
<systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>echo "source /etc/profile.d/dircolors.sh" &gt;&gt; /etc/bashrc</userinput></screen>
<para>
It has been reported that problems may happen with this package, if
Xorg is installed with a prefix other than <filename
class="directory">/usr</filename>. So far, BLFS development team has
not hit any problem, in this case.
</para>
</sect3>
-->
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>
sddm and
sddm-greeter
</seg>
<seg>
None
</seg>
<seg>
$QT5DIR/qml/SddmComponents,
/usr/share/sddm, and
/var/lib/sddm
</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="sddm-prog">
<term><command>sddm</command></term>
<listitem>
<para>
is a display and login manager based on
<application>Qt</application> libraries.
</para>
<indexterm zone="sddm sddm-prog">
<primary sortas="b-sddm">sddm</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="sddm-greeter">
<term><command>sddm-greeter</command></term>
<listitem>
<para>
is an auxiliary process that displays the greeter,
a graphical user interface that performs user
authentication and initiates the selected window manager
or display environment.
</para>
<indexterm zone="sddm sddm-greeter">
<primary sortas="b-sddm-greeter">sddm-greeter</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>