glfs/archive/sddm.xml
Pierre Labastie 3f2db3a638 Remove sect1info tags
They only contain a date tag that is nowhere used.
2022-11-29 08:58:07 +01:00

607 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/releases/download/v&sddm-version;/sddm-&sddm-version;.tar.xz">
<!ENTITY sddm-download-ftp " ">
<!ENTITY sddm-md5sum "b41182cc9d53d75485c112ab82dc95d0">
<!ENTITY sddm-size "3.2 MB">
<!ENTITY sddm-buildsize "20 MB">
<!ENTITY sddm-time "0.6 SBU ">
]>
<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>
&lfs81_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
<xref linkend="qt5"/>
</para>
<bridgehead renderas="sect4">Recommended</bridgehead>
<para role="recommended">
<xref linkend="linux-pam"/> and
<xref linkend="upower"/>
</para>
<bridgehead renderas="sect4">Optional</bridgehead>
<para role="optional">
<xref linkend="docutils"/> (for the man pages)
</para>
<bridgehead renderas="sect4" revision="sysv">Runtime Dependency</bridgehead>
<para role="required" revision="sysv">
<xref role="runtime" linkend="consolekit"/>
</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
<systemitem class="username">root</systemitem> 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 \
-DDBUS_CONFIG_FILENAME=sddm_org.freedesktop.DisplayManager.conf \
-Wno-dev .. &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 \
-Wno-dev .. &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</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>: This switch is used because
this version of BLFS does not support <application>systemd</application>.
</para>
<para revision="sysv">
<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 may be used if you want
the man pages to be installed. Notice that you need
<xref linkend="docutils"/> to build them.
</para>
</sect2>
<sect2 role="configuration">
<title>Configuring SDDM</title>
<sect3 id="sddm-config">
<title>Config Files</title>
<para>
/usr/lib/sddm/sddm.conf.d/*, /etc/sddm.conf.d/*, and /etc/sddm.conf
</para>
<indexterm zone="sddm sddm-config">
<primary sortas="e-usr-lib-sddm.conf.d">/usr/lib/sddm/sddm.conf.d</primary>
</indexterm>
<indexterm zone="sddm sddm-config">
<primary sortas="e-sddm.conf.d">/etc/sddm.conf.d</primary>
</indexterm>
<indexterm zone="sddm sddm-config">
<primary sortas="e-sddm.conf">/etc/sddm.conf</primary>
</indexterm>
<para>
Only <filename>/etc/sddm.conf</filename> is installed, but the
configuration files are read in the following order: all files in
<filename class="directory">/usr/lib/sddm/sddm.conf.d</filename> in
alphabetical order, then all files in <filename class="directory">
/etc/sddm.conf.d</filename> in alphabetical order, and finally
<filename>/etc/sddm.conf</filename>.
</para>
<para>
Normally, you want to edit this file. For example, if Xorg is installed
in /opt, use your preferred editor as the <systemitem
class="username">root</systemitem> user to replace the default
<emphasis>XauthPath</emphasis> value by
<emphasis>/opt/xorg/bin/xauth</emphasis>. Or, as the <systemitem
class="username">root</systemitem> user, issue:
</para>
<screen role="root"><userinput>sed -e '/ServerPath/ s|usr|opt/xorg|' \
-i.orig /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 <systemitem
class="username">root</systemitem> 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
<systemitem class="username">root</systemitem> user, issue:
</para>
<screen role="root"><userinput>sed -e 's/-nolisten tcp//'\
-i /etc/sddm.conf</userinput></screen>
<para>
Desktop (Notebook) users, normally wish the Num Lock key on (off). For
that, as the <systemitem
class="username">root</systemitem> user, issue:
</para>
<screen role="root"><userinput>sed -e 's/\"none\"/\"on\"/' \
-i /etc/sddm.conf</userinput></screen>
<para>
for Desktop users. For Notebook users, replace \"on\" by \"off\",
in the command above.
</para>
</sect3>
<sect3 id="sddm-bootscript">
<title>Boot Script</title>
<para>
Install the <filename revision="sysv">/etc/rc.d/init.d/sddm</filename>
init script from the <xref linkend="bootscripts" revision="sysv"/>
<xref linkend="systemd-units" revision="systemd"/> package.
</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>
<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 <systemitem
class="username">root</systemitem> 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
<systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>/etc/rc.d/init.d/sddm start</userinput></screen>
<para>
By convention, X should be executed at runlevel 5, consequently, the
same is true for <application>sddm</application>. However, LFS 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>. 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><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>