
=  Slint Handbook (14.2.1)
:toc: left
:toclevels: 2
:toc-title: Contents
:pdf-themesdir: themes
:pdf-theme: default
:sectnums:

==  Introduction to Slint

=== About Slint

Slint is a https://en.wikipedia.org/wiki/Linux_distribution[Linux distribution], based on http://www.slackware.com/[Slackware], polyglot, easy to install, versatile, beginner friendly and accessible to the visually impaired.

A Slint system is functional out of the box and can be tailored to fit most computing requirements.

==== Features

The installer can prepare the drive where Slint will be installed or let users do so if they wants more customization. It includes a documentation.

Slint is accessible to visually impaired users, with speech and braille, from installation to usage in a console as in graphical environments.

A wide assortment of software for servers, desktops, and laptops is installed in all Slint systems, which include several graphical desktop environments: MATE and optionally KDE, LXQt and MATE. All graphical environments provide easy access to all applications and system operations, with auto-mounting of removable devices, plus notifications of available updates of installed software, immediate Internet access, halting, rebooting, switching users and DE.and hibernating the system. Slint is also fully fonctional on the console.

The language chosen will be used for internationalized applications.

The Slint Dashboard centralizes access to hardware and system settings, packages, system tools, documentation and utilities.

Slint ships with many applications out of the box to create, edit, view and convert documents in various formats, communicate by email, text and audio chat, play audio and video, send and receive documents peer to peer, edit audio, video and graphical documents, develop applications. It is fully usable as a server on a console and using one of the several included desktops.

Many applications are accessible to visually impaired users, a wide choice of TTS and associated voices is included, if you still need others they are easily installable, usable both in a textual environment (console) as well as on the desktop.

Several in-house tools ease administration and configuration of your Slint system.

Many more applications are easily built installed as software packages through a simple command or a few clicks. Thousands of software packages are at your fingertips!

Slint users are notified about upgrades of installed packages as soon as available, easily installed upon request. This keeps your system safe.

Default preferred applications settings are provided and can be easily customized.

==== Content, versions and release model.

The Slint installer provides a complete installation including the MATE desktop. It allow to also install other desktops: KDE and/or LXQt and/or XFCE.

Slint being based on Slackware, we tend to provide a new Slint version shortly after the release of a Slackware version.

However Slint follows a "semi-rolling" release models, meaning that during the life cycle of a given version, in addition to updates as security fixes and major bug fixes, some software are selectively updated to bring enhancements, and added to bring new features. This is the case for software contributing to make Slint accessible to the blind, like screen readers.

We recommend that users switch to a new version as soon as possible after its release. So far we have been able to provide instructions and helper scripts allowing to upgrade instead of installing from scratch a new release. We will do our best for that to stay possible with future versions, even though a full backup of users' files, followed by a an installation a new and a restoration of users' files can be easier, especially for a desktop or laptop usage.

=== About this book, other sources of information

This book is intended for the Slint newcomer whom it guides through its installation process and usage. The concepts and conventions specific to Slint and common in Linux distributions are presented and a glossary is annexed.

We try to accommodate folks coming from Windows or MacOS as users of another distribution like Ubuntu.

Documentation about installed software is generally available in a Slint system. We will state in this book how to access it.

Other sources of information are available:

* The information often provided in their website by the authors of software included in Slint.
* http://docs.slackware.com/[The Slackware documentation project] and particularly its http://docs.slackware.com/howtos:start[HOWTO articles] Many are applicable directly to Slint, some adaptations and updates can be necessary.
* Beyond the Arch distribution, the ArchWiki provides often helpful article on software also shipped in Slint. For instance searching "arch wiki mate" leads to https://wiki.archlinux.org/index.php/MATE[this page about MATE]. Caveat: the information provided can need to be adapted as Slint and Arch differ on some regards. For instance Arch uses systemd as init system and a given software can be configured differently by default in Slint and Arch.
* And of course an Internet search engine can often help find answers to questions and solutions to issues.

=== Support

You can get help through these channels:

* The Slint mailing list is the primary support channel. To register, email slint-request@freelists.org with as subject: 'subscribe' then answer the confirmation email that you will receive. Then, to  know more email slint-request@freelists.org with as subject 'commands' or 'help'. After registration, email slint@freelists.org.
* The archives of the mailing list are available https://www.freelists.org/archive/slint[here].
* On IRC: chat on the #slint channel, server irc.libera.chat, no registration needed.
* Mumble: server slint.fr (on appointment taken through another channel).
* The https://forum.salixos.org/viewforum.php?f=44[Slint forum] kindly hosted by our friends at Salix (another Slackware derivative). Registration needed.


To find out more, see the links under Information in the Slint Dashboard, visit our https://slint.fr/wiki/doku.php?id=en/start[wiki] or just type: slint-doc in a terminal after installation.

=== Translation and other contributions to the Slint project

Slint need translators! If you want to participate to the translation effort, read the instructions in https://slint.fr/doc/translate_slint.html[Translate Slint].

The translation files are hosted on https://crowdin.com/project/slint[Crowdin].

If you want to contribute to Slint for other tasks, just post in the mailing list or drop a line to: didieratslintdotfr. Of course translators are welcome on the mailing list too!

===  Acknowledgments

The Slint project exists mainly through to the hard work of the Slint translators and other contributors, thanks to all of you!

Thanks to George Vlahavas for his advice and tools, to the contributors to the SlackBuilds.org project, who help building so many additional software.

Slint is based on Slackware, brought by Patrick J. Volkerding and contributors. Thanks! I encourage all Slint users to contribute to Slackware funding, and also to donate to the Salix project.

The Slint repositories are kindly hosted for free by Darren 'Tadgy' Austin. I encourage all Slint users to contribute to funding the host https://slackware.uk/

Links for financial contributions: +
https://www.patreon.com/slackwarelinux[Become a Slackware patron] or https://paypal.me/volkerdi[Support Slackware] +
Follow the links on top of http://slackware.uk/slint/x86_64/slint-14.2.1/[this page] to support Slackware UK +
https://salixos.org/donations.html[Donations to Salix]

==  Install Slint

This part of the HandBook walks through the process of downloading Slint, verifying the ISO image with a check-sum, writing the ISO to an installation medium, partitioning your hard disk, and briefly describes the installation process.

=== Requirements

The current Slint version can be installed on computers meeting these requirements:

* Architecture: x86_64 (64-bit CPU), also known as AMD64
* Free or free-able space on disk (hard drives, SSD, NVME, eMMC): at least 40G in Auto mode. A full Slint installation needs around 27G, without user files or add-ons.
* RAM: at least 2G, more is better.
* a DVD drive or an USB slot available, with ability of the firmware to boot a DVD or USB stick. A blank DVD or a 4G or more USB stick can be used as installation media

NOTE: Secure boot should be disabled to install Slint.

=== Features of the installer

* The installer is a "live system", running in memory: it will not modify an installed system, unless and until you tell it to.
* For blind users the installer is fully usable with Braille, and speech using the Speakup screen reader.
* For expert users it includes all needed utilities to prepare the <<drive,drive>> on which Slint will be installed.
* The Auto mode of installation instead just needs user to answer questions and provide a contextual help.
* The installer can free some space for Slint on a drive where you want to install it alongside another Linux under some conditions.
* If installed alone on a removable device connected through USB, Slint can be made portable, i.e. usable on any computer able to boot off an USB drive.
* The installer can encrypt the drive  where Slint is installed alone. This prevents the steal of data it contains in case of loss or theft of the machine, or of a removable drive.
* Slint can be installed in its own drive, or alongside another system.

=== Preparation

<<download_and_verify,Download and verify a Slint ISO image>> +
<<write_the_iso,Write the ISO image on an Installation Medium>> +
<<make_room_for_Slint,Make Room for Slint>> +
<<Create_partitions_for_Slint,Create partitions for Slint>>

[[download_and_verify]]
====  Download and verify a Slint ISO image

The latest version of the Slint distribution is 15.0

The latest installation ISO image is always available in https://slackware.uk/slint/x86_64/slint-15.0/iso[this directory]

[TIP]
====
As long as you are running Slint version 15.0 there is no need to re-install when a new ISO is provided, as it only brings new features of the installer and new or and upgraded packages that you can also get keeping your system up to date.
====

The file name of the ISO indicated below is just an example, that you will adapt to the current name when downloading.

If you are running Windows, an Internet search with as argument "check sha256sum windows" will tell you how to proceed.

If you are running Linux you can download the ISO image and its sha256 checksum typing:
----
wget https://slackware.uk/slint/x86_64/slint-14.2.1/iso/slint64-15.0.iso
wget https://slackware.uk/slint/x86_64/slint-14.2.1/iso/slint64-15.0.iso.sha256
----

To check the integrity of the downloaded files type this command:

----
sha256sum -c slint64-15.0.iso.sha256
----
The result should be : OK +
Else, redo the downloads.

[[write_the_iso]]
====  Write the ISO image on an Installation Medium

You can use either a DVD or an USB stick as installation media.

[[make_a_bootable_usb_stick]]
===== Make a Bootable USB Stick

On a ++Linux++ system, plug in the USB stick, and check it's name with the following command:

----
lsblk -o model,name,size,fstype,mountpoint
----

[WARNING]
====
Carefully review the output of the command to make sure that you will not type the name of a hard disk partition instead of the name of your USB stick.  All previous content of the USB stick or a mistaken hard disk partition will be **LOST** and **IRRECOVERABLE**.
====

Let's assume that the name of the USB stick be /dev/sdb. It could be named otherwise, so don't copy blindly the following command.  The command syntax to write the Slint ISO to a USB stick that resides at /dev/sdb is as follows:

----
dd if=slint64-15.0.iso of=/dev/sdb bs=1M status=progress && sync
----

[NOTE]
====
The above command assumes **if=** points to the path of the Slint ISO and **of=** points to the name of the USB stick.  These values may differ on your system.
====

On ++Windows++ use an application like http://rufus.akeo.ie/[Rufus].  It is free and open source.

1. Open the Rufus program from where you downloaded it to run it.
2. Select Create a bootable disk using and choose ISO Image from the drop-down menu.
   Click the disk icon and browse to your Slint .iso file and select it.
3. To insure the flash drive is compatible with UEFI, select FAT32 for <<file_system,file system>>.
4. To create the flash drive with the "Press any key to boot from USB" prompt, select the Create extended label and icon files option.
5. When you are done selecting options, click Start When prompted, confirm that you want to erase the flash disk.
6. The .iso file will start copying to the flash drive (the process can take several minutes). When Rufus is done, close the program, eject and remove the flash drive.

[[make_a_bootable_DVD_disc]]
=====  Make a Bootable DVD Disc

On a ++Linux++ system insert the DVD and type the following command:

----
growisofs -speed=2 -dvd-compat -Z /dev/sr0=slint64-15.0.iso
----

Be sure to enter the full path to the Slint ISO on your filesystem.

On ++Microsoft Windows 2000/XP/Vista/7++ you can write to a DVD using the application http://infrarecorder.org/[InfraRecorder].  It is free and open source.

On ++Microsoft Windows 7/8/10++ you can use the http://windows.microsoft.com/en-US/windows7/Burn-a-CD-or-DVD-from-an-ISO-file[Windows Disk Image Burner] utility that is shipped with Microsoft Windows.

[[make_room_for_Slint]]
====  Make Room for Slint

Dedicate a computer or at least a drive to Slint makes installation easier and is thus recommended. Then, skip this step and proceed directly to run the installer.

But you can also share a drive with an already installed operating system like Windows, Mac OS, *BSD, or another Linux distribution.

Then you will need a free space for Slint at the end of the partition table of this drive (after the last partition). At least 20G is needed for the system itself, but you will need also some space for user files and install other software. Shrinking the last partition of the drive can be done after having started the installer typing Linux commands if you are a Linux power user. This can also be done by the installer in Auto mode if following conditions are fulfilled:

* The drive is equipped with a GUID Partition Table (GPT)
* Its last partition has an ext <<file_system,file system>>.
* At least 40G can be freed in it.
* The machine has booted in EFI mode (not Legacy)

Else, you will need to make room for Slint before installation  using `gparted` or from Windows (recommended if Windows if installed). However, under some conditions Slint can do it for you.

===== How-to free space in a Windows volume

The steps indicated in
https://docs.microsoft.com/en-us/windows-server/storage/disk-management/shrink-a-basic-volume[this document]
are summarized below.

1. From Windows, open a command prompt and type:
+
`diskpart`

2. At the diskpart prompt, type:
+
`list volume`
+
Note the number of the simple volume you want to shrink.

3. Select the volume you want to shrink, which should have a ntfs file system, by typing
+
`select volume <number>`

4. to know the maximum size of which the volume can be shrunk type:
+
`shrink querymax`

5. Define the <size> in megabytes of the free space you want to create. It should not be greater than the maximum size found with the previous command. You may want to leave some space available on the Windows volume to be able to store more data in it.

6. Type this command:
+
`shrink desired=<size>`
+
size is a number in MB, for instance for 30 GB, knowing that G=1024M type:
+
`shrink desired=30720`
+
Keep enough unused space on the System volume to allow installing a Windows update.

Alternatively you can use the Disk Manager: select the volume you want to shrink, right click on it, select "shrink the volume", wait until the maximum space of which the volume can be shrunk be displayed, adapt the value to leave
some space to allow storing more data there as you see fit, then click the shrink button.

===== How-to free space on Linux

You can use http://gparted.org/index.php[gparted], or a graphical tool for partitions management provided by your distribution.

TIP: If 40G can be freed in the last partition of a drive with a GPT equipped with an ext4 file system the installer can shrink it for you.

[[Create_partitions_for_Slint]]
==== Create partitions for Slint

You can let the installer partition the target drive for you, easier for Linux newcomers and if you are not acquainted with the command line: then
skip directly to <<Start_of_the_installation,Start of the installation>>. Else, read on.

If possible install Slint in its own drive.

You may also install it in a drive shared by another system, but then preferably
if booting in EFI mode, so that each system, having its own OS loader, will be
independent from others and their updates. Then you need to free some space on
the drive to install Slint. You can use the 'freespace' command of the Slint
installer to do that if the last partition of the drive is has an ext2, ext3 or
ext4 file system, else do it from the already installed system.

If possible, allow the machine to boot in EFI mode and set up a GPT (GUID
partition table) for the target drive, for maximum flexibility.

The installer uses the GRUB software for both EFI and Legacy booting.

Installing Slint needs:

* A partition of type Linux, size at least 28G, more is better (at least 40 G recommended).
This partition should be formatted, meaning that you will need to create a file system to manage files in it.  For Linux partitions the Slint installer can handle these file
system types: btrfs, ext4, f2fs, xfs.
* To boot in Legacy mode with a GPT, a partition of type BIOS Boot (ef02) needed by
GRUB in this context. A size of 1M for this partition is enough. It is
reserved for GRUB and should not be formatted.
* To boot in EFI mode a partition of type ESP (EFI System Partition) of size
100M to store the EFI OS loader. This partition should have a vfat file system. This can be a partition already used by another system.

In case of a GPT, we recommend setting both a BIOS Boot partition and an ESP for
more flexibility, allowing to boot Slint in EFI as well as in Legacy mode.

You can also dedicate other partitions for specific use cases.

Creating other partitions is optional. If you want a swap partition it should
have the type Linux swap.

You can create partitions for Slint either before or after having started the installer.

If you are not accustomed to Linux you will probably find easier to do it before starting the installer. We suggest to use http://gparted.org/index.php[gparted] to do that. Gparted can shrink existing partitions to make room, as well as create new partitions in the freed space.  If you do not have a system that supports Gparted (Microsoft Windows) you can use http://gparted.org/livecd.php[Gparted Live].

To create and format partitions after having started the installer, you can use the partitioning utilities it includes: cfdisk, fdisk, sfdisk,
cgdisk, gdisk, sgdisk, parted. The utilities with "g" in their name can
handle only GPT, parted can handle DOS partition tables as well as GPT. fdisk,
cfdisk and sfdisk can handle DOS partition tables. In addition, wipefs
(to erase previous partition table and file system signatures) and partprobe
(to inform the kernel of a partition table changes) are available.
The lsblk utility displays information about block devices and partitions.

To format the partitions the installer includes all mkfs utilities. You need
to format them yourself if not yet done so that the installer detects which are available at the beginning of installation.

=== Slint Installation

<<Start_of_the_installation,Start of the installation>> +
<<Accessibility_of_the_installer,Accessibility of the installer>> +
<<Usage_of_the_installer,Usage of the installer>> +
<<Installation_process,The installation process>> +
<<Slint_in_an_encrypted_drive,Slint in an encrypted drive>> +
<<first_steps_after_installation,First steps after installation>>

[[Start_of_the_installation]]
==== Start of the installation

If need be, setup the firmware of the machine to boot off the DVD or USB stick that you have prepared.

Insert the installation media (DVD or USB stick) and reboot your machine. Blind users will hear a 'beep' when the boot menu is displayed.

Start the installer just pressing Enter.

The installer will first probe you sounds cards.

This can help setting a working one as default, and also is used for speech during installation used by some blind users.

If the installer finds more than one sound card it will say for each: +
press Enter to choose this sound board <sound card id> +
Press enter as soon as hear that, to confirm that the proposed sound card is working. This setting will be saved in the new system in /etc/asound.conf.

At the next step, when asked you will confirm (typing s) or deny (just pressing Enter) that you want speech during installation. Braille is always available during installation.

You will then choose, confirm or change the language used during installation. Then all screens will be in the chosen language if the translation into this language is complete.

If you need to append additional kernel parameters to the boot command line, before pressing Enter do what follows :
[NOTE]
====
Be aware that the US keyboard map will be in use when typing. +
Ctrl+x mean "Press and hold the Ctrl or Control key like if it was a Shift key then press the X key"
====
----
Press the e key
Press the down arrow three times
Press the End key
Press the space bar
Type the kernel parameters (examples below)
Press Ctrl+X to boot (do not press Enter!)
Press Enter to boot.
----

For instance to configure the speakup driver for your hardware synthesizer you could type a kernel parameter like:
----
speakup.synth=apollo
----
You can also include in the boot command line the settings for your Braille device, in this form:
-----
brltty=<driver code>,<device>,<text table>
-----
For instance to install with a Papenmeier device connected through USB with a French text table type:
-----
brltty=pm,usb:,fr_FR
-----
NOTE: a braille device connected through USB should always be recognized, maybe just the text table won't be the good one if you didn't enter the settings at first.

In any case, as there is no timeout, booting will only begin when you press [Enter].

Speech and Braille will be available at the beginning of installation.

[[Usage_of_the_installer]]
==== Usage of the installer

If you are acquainted with the command line, you may skip this topic.

The main installation menu is displayed below:
....
Welcome to the Slint installer! (version 15.0)

You may now type (without the quotes):

'doc' to know the features and usage of the installer.
'start' to start the installation.

The installer can prepare the drive where Slint will be installed,
creating then formatting the needed partitions. If you prefer you can
do it yourself to customize the installation using command line
utilities available in the installer, then type 'start' when done. You 
can also leave the installer and use a tool like gparted for that
then start the installer again.

We recommend that you type 'doc' first in this case, or if you want to
encrypt the drive where Slint will be installed, or if you need to
shrink a partition to make room for Slint alongside another system.
When you finish reading this menu will be displayed again.
....

As soon as this menu is displayed, you have the hand on the installation process.

You read the screen and type commands in a <<virtual_terminal,virtual terminal>>. The installer
includes several virtual terminals sharing the same physical keyboard and
screen, that can be used in parallel.

The installer starts in the virtual terminal 1 named *tty1* but you can switch
to another one. For instance you can switch to *tty2* by pressing
*Alt-F2* then Enter to activate it and later go back to *tty1* by pressing
*Alt-F1*, without erasing information displayed in both terminals.
*Alt-F1* means: press and hold the *Alt* key then press the *F1* key.

This can be useful to continue reading the documentation during installation:
for instance you can switch to *tty2* to begin installation, switch to *tty1* to
continue reading the documentation, then switch to *tty1* again to proceed to
the next installation step.

This can also be used to consult the glossary while reading other documents.

The fourth virtual terminal or *tty4* displays messages that provide information
useful for debugging, otherwise it is not used.

The installer has several modes of interaction with you, the user:

. You type commands at the prompt and read their output.
. The installer asks a question, you type the answer and confirm it by pressing Enter.
. The installer displays a menu of choices or options: you select one of them using the up and down arrow keys or typing its number, then confirm your choice by pressing Enter, or cancel by pressing Escape.
. The installer displays information in a pager. Then use arrow keys to read the next or previous line, press space to display the next page, Q to stop reading the document.

[[Installation_process]]
==== The installation process

The installation process begins when you type 'start' (without the quotes).

The installer first probes the drives, their sizes and partitions and the free space on them. 

It then first asks you if you have prepared the drive where you want to install Slint as described above in <<Create_partitions_for_Slint,Create partitions for Slint>>.

* If you answer yes, it asks which partitions to use for installation and for each of them the name of the mount point to which associate it. 
* If you answer no, it let you choose then installation drive and if possible let you choose between use the whole drive or only the free space in it.
** Installation on a whole drive.
+
In this installation mode all the previous content of the drive will be erased. If it contains files you want to keep, save them elsewhere first!
+
** Installation in a drive shared by another system, using the free space on it. This makes possible to install Slint while keeping the other system using only one drive.
+
This is allowed if the drive has at least 40G of space free or that can be freed, has a GPT (GUID partition table), and the installer boots in EFI mode: in this configuration both system will boot without interfering with each other.
**You choose the size of the main Slint partition, optionally leaving some free space on the drive for future use.
+
In both cases the partition hosting Slint will have a btrfs file system and include two subvolumes: / and /home

The installer can prpose you set up mount points for partitions shared with or used by
Windows to allow access them from Slint and also for Linux partitions outside of the Slint system you are installing. 
these partitions, if of type Linux should have one of the file systems btrfs, ext4, f2fs or xfs, else exfat, vfat or ntfs.


If the drive is removable and connected through USB, the installer can make Slint portable, allowing you to use it on any computer able to boot off an external USB drive.

The drive can optionally be encrypted, to protect your data from theft if the drive or computer is lost or stolen. As there are important associated caveats, carefully read the document Encryption first.

You will review your choices before installation actually begins and be offered to either confirm them or go back to the beginning of the process. 

After confirmation the  partitions are created if not yet done, then the base packages are installed, which takes a few seconds.

. If you opted for an encrypted disk you type the passphrase that will be used to unlock the drive at each boot up.
. You choose a password for the user "root." This is the system administrator, who has all privileges. You also create a regular user account, indicate if you will need accessible Braille output, and whether you want to log in to Slint in text or graphical mode.
+
[NOTE]
====
If you used the language English (USA) during installation you choose which language to use for the installed system, else the installer sets the same as during installation.
====
. The installer attempts to establish an Internet connection, allowing to propose a time zone corresponding to your geographical location and later install packages remotely as need be. You set it up or confirm the proposed one.
. The installer then creates a swap file in the system partition, which you can easily resize after installation. By default, an additional swap space 1.8 times the size of the physical RAM will be set up in zram every time Slint is booted up.
. The packages are installed on the drive (the KDE series of packages is optional). The installer will attempt to establish an Internet connection so it can download and install the most recent version of each package, including those provided since the release of the ISO image. Thus you won't have to download and install these new or upgraded packages after installation.
+
Installation of all packages takes about 10 to 40 minutes depending on the hardware.

. Next, the system is configured and the GRUB boot manager installed. If Slint has been installed on a dedicated drive, it can boot in both Legacy and EFI modes. Otherwise, it will boot only in EFI mode. In either case, the boot menu will have an additional "rescue" boot entry to detect and boot installed OS.
. You will be prompted to create a rescue boot stick on a USB flash drive. You can use this to boot Slint if it fails to boot otherwise.

Last, remove the installation media and reboot to start your new Slint system.
You can display a preview of the boot menu before rebooting.	


** Make a rescue USB boot stick.
** Install and configure the GRUB boot manager and associated OS loader(s).
** Choose wether or not to use the mouse on the console.
** Configure the network.
** Decide which services should be started at startup.
** Select if the hardware clock uses UTC or local time, set the time zone.
** Choose the login manager: console mode or graphical.
** Choose the default graphical session.
** Set the default language and regional variant in the installed system. Some packages specific to the language chosen are then installed.

All done, remove the installation media and reboot to start Slint.

[[Slint_in_an_encrypted_drive]]
==== Slint in an encrypted drive.

In Auto mode the installer proposes to encrypt the drive where it installs
Slint, if you dedicate it to Slint. If you agree, at each boot the GRUB boot loader will ask you the passphrase
that you will have typed during installation to unlock the drive, before
displaying the boot menu. Be aware that unlocking the drive will take a few
seconds (about ten seconds).

Having an encrypted drive prevents the steal of data it contains in case of
loss or theft of the machine, or of a removable drive. But this won't protect you if the computer stays running and unattended, only
if the machine has been switched off completely!

During installation the Slint system partition will be encrypted, and also the
additional partition that you may request.

A Slint system (or root) partition will the be named: /dev/mapper/cryproot once
opened, if it has been encrypted.

This is shown by this command:

----
lsblk -lpo name,fstype,mountpoint | grep /$
----

Which gives an output like:
----
/dev/mapper/cryptroot ext4    /
----

This command instead:

----
lsblk -lpo name,fstype,mountpoint | grep /dev/sda3
----

gives:

----
/dev/sda3             cryptoLUKS
----

/dev/sda3 is now a "raw" partition that includes the so called "LUKS header"
that you will never need nor ever should access directly.  It hosts all that is
needed to encrypt or decrypt the partition /dev/mapper/cryptroot, which
actually hosts your data (in this example the Slint system).

[WARNING]
====
If you forget the passphrase all data in the drive will be irrecoverably lost!
So write down or record this passphrase and put the record on a safe place as
soon as done.

Drives die. If that happens and it is encrypted your data will be lost.
So, regularly back up your important data is not optional.

Also, make a backup copy of the luks header which you can restore in case the luks partition is damaged for any reason. The command could be in our
example:
----
luksHeaderBackup /dev/sda3 --header-backup-file <file>
----
where <file> is the name of the backup file, that you will store in a safe place.

Then would you need to restore the backup, type:
----
luksHeaderRestore /dev/sda3 --header-backup-file <file>
----

Don't resize a partition of an encrypted drive as after that it would be
definitively locked and all the data it contains will be lost! If you really need more space, you will need to backup all the files that you
want to keep, then install anew and restore the backed up files.

Choose a strong passphrase, so that it would take too much time for a robber to
discover for it to be worthwhile.

Never ever fiddle with the so-called "LUKS header" located on the raw partition
(the third one, like e.g. /dev/sda3 for the raw partition on top of the Slint
system partition).  Practically: don't create a file system in this partition,
don't make it part of a RAID array and generally don't write to it: all data
would be irrecoverably lost!
====

To avoid weak passphrases the installer requires that the passphrase include:

. At least 8 characters.
. Only non accented lower case and capital letters, digits from 0 to 9, space and following punctuation characters:
+
----
 ' ! " # $ %  & ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
----
+
This guarantees that even a new keyboard will have all characters needed to
type the passphrase.

. At least one digit, one lower case letter, one capital letter and one punctuation character.

GRUB assumes that "us" keyboard is in use when you type the passphrase.
For this reason, if during installation you use an other keyboard map, before
asking the passphrase the installer will set the keyboard map to "us", and
after having recorded it restore the previously used one. In this case the
installer will also spell each typed character of the passphrase, as it may
differ from the one written on the key.


The application cryptsetup is used to encrypt the drive. To know more type
after installation: +
-----
man cryptsetup
-----
and to know even more read: https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions[this FAQ].

[[first_steps_after_installation]]
==== First steps after installation

Here are the first tasks to perform after installation

In this document, all text after a # character are comments of the suggested
commands, not to be typed.

===== Initial Software update

After installation, the system should be updated to get the most recently
provided version of each software, as well as new software provided since the
release of the ISO. This is especially necessary if no network connection was
available during installation, as then only the packages included in the
distribution media were installed, and they could be outdated.

Most commands typed below request administrative right associated to a
specific account named 'root', for which you have recorded a a password
during installation.

To issue a command as 'root', first type
----
su -
----
then issue the password for root and press Enter before type the command.

This replaces 'sudo' used in other distributions.

When you are done issuing commands as 'root', press Ctrl+d or type 'exit' to get
back your "regular user" status.

To update, type as root in a console or a graphical terminal:
----
slapt-get --add-keys # retrieve the keys to authenticate the packages
slapt-get -u # update the list of packages in the mirrors
slapt-get --install-set slint # get the new packages
slapt-get --upgrade # Get the new versions of installed packages
dotnew # lists the changes in configuration files
----
When running dotnew, accept to replace all old configuration files by new ones.
This is safe as you didn't make any customization yet.

Alternatively, you can use these graphical front-ends: gslapt instead of
slapt-get, and dotnew-gtk instead of dotnew.

To learn more about slapt-get, type:
----
man slapt-get
----
or as root:
----
slapt-get --help
----
and read /usr/doc/slapt-get*/README.slaptgetrc.Slint

===== Configuration

Here are the utilities that you can use to (re)configure your Slint system after
installation. They are presented in further details in chapter <<Manage_your_system,Manage your system>>.

Unless otherwise noted these utilities should be used as root. To become root,
i.e. get the 'admin' status and privileges type "su -" then  root's password.
To get back the regular user status pres Ctrl+d or type exit.

Most utilities have a command line and a graphical version. The command line
version is listed first below. Unless otherwise stated all commands should be
typed as root.

*General settings*

* To manage users: usersetup or gtkusersetup
* To change the language and region: localesetup or gtklocalesetup
* To change the keyboard setup and the input method: keyboardsetup or gtkkeyboardsetup
* To configure the date, the time or the timezone: clocksetup and gtkclocksetup.
* To choose which services start at boot: servicesetup and gtkservicesetup.
* To (re)configure the network: netsetup.
* To choose to start in text or graphical mode and in the later case the graphical login manager: login-chooser
* To choose a desktop, or graphical session: session-chooser (as regular user)
* If KDE is installed to show or hide its applications in other desktop's menus: show-kde-apps or hide-kde-apps.

*Accessibility settings*

To choose and enable a console screen reader or disable all of them type as root:
----
speak-with
----

From Slint version 14.2.1 onward the first regular user created during installation will have speech and braille already enabled in the installed system, if speech was used and braille requested during installation. Other users will need to check or make additional settings, as indicated below.

To enable braille:

. Make /etc/rc.d/rc.brltty executable typing as root:
+
----
chmod 755 /etc/rc.d/rc.brltty
----
. Make yourself member of the braille group, typing as root:
+
----
usermod -G braille -a username
----
+
In the command above, replace username with your login name.
. Then edit as root the file /etc/brltty.conf to include your settings.

To enable speech at the system level type as root:
----
login-chooser
----
and choose one of the login modes that speak: text, lightdm or gdm

To enable speech in graphical environments as regular user type as this user:
----
orca-on
----
Then the Orca screen reader will start speaking next time you start a graphical
environment

To disable speech in graphical environments type instead:
----
orca-off
----

==  Slint usage

This chapter presents the ways you can interact with your Slint system to have
it do what you want.

=== What is a Slint system?

Slint is a set of software that roughly fall into these categories:

* The operating system, made of the Linux <<kernel,kernel>> and <<utilities,utilities>>. It acts as an interface between the user, the applications and the hardware.
* The <<Applications,applications>> that carry out the tasks that users want to accomplish.

Slint can be used in two modes distinguished by the appearance of the screen
and the way to interact with the system:

* In text mode you type commands interpreted by a <<shell,shell>>. These commands can start an utility or an application. The text mode is also called <<console,console>> mode. In this mode the screen only displays the commands and their output in a (usually black) background.
* In graphical mode graphical elements like windows, panels or icons are displayed on the screen, generally associated to applications or utilities. The user interacts with these elements using a mouse or a keyboard.

Commands can be also be typed in graphical mode inside a window associated with
a <<terminal,terminal>> in which runs a shell.

=== How Slint starts

Upon installation, the software shipped in the installation ISO or downloaded
from remote repositories is installed in a <<drive,drive>>.

When you boot Slint, the <<firmware,firmware>> first checks the hardware then
looks for a program called an OS loader (commonly named a boot loader) which it
starts.

There can be several OS loaders in the machine. In this case the
firmware allows the user to choose which one to start in a menu.

In Slint the
software that makes and install a boot loader is GRUB.Actually the boot loader
built by GRUB is also a boot manager, as it allows to choose which OS to start if
several are installed.

The OS loader built by GRUB can be installed in a boot
sector (in case of Legacy booting) or in an EFI System Partition or ESP (in
case of EFI booting).

The aim of the Slint loader is to start the Slint system. To do that it first loads in
RAM the <<kernel,kernel>>, then the <<initrd,initrd>>, which in turn
initializes the Slint system.

In the last step of this initialization the user is invited to "log in", in
other words to connect oneself to the system and take the hand on it. To do
that the user first type one's user (or login) name then password, of which
validity is checked. Slint as other Linux distributions being multi-users this
allows this user to access one's files but not those of other users.

At time of installation you chose to start Slint in either text or graphical mode.

* If you chose C for <<console,console>> after initialization of the system you type your user (or login) name then your the password, each input being confirmed pressing the Enter key, then you can type commands.
* If you chose G (graphical) you type the same information in a <<display_manager,display manager>> or login manager, which then starts the <<graphical_environment,graphical environment>>.

After installation, you can change the mode typing as root `login-chooser`,
in console mode as well as in graphical mode (in a <<terminal,terminal>>). This
command allows you to choose `text` (synonym of  console mode), or, for
graphical mode, among several display managers. Your choice will be effective
at next boot of the computer.

We will now present the graphical environments, then how to use a shell.

=== The Graphical Environments

<<the_windows, The windows>> +
<<the_work_spaces,The work spaces>> +
<<the_desktop,The desktop>> +
<<the_top_panel,The top panel>> +
<<the_bottom_panel, The bottom panel>> +
<<the_slint_control_center,The Slint Control Center>> +
<<graphical_terminals,Graphical terminals>> +
<<key_bindings,Key bindings>>

A full featured graphical environment includes several components, among which a window manager which draws windows on the screen associated with applications, move, re-size and close these windows.

Slint allows includes several graphical environments: BlackBox, Fluxbox, KDE, LXDE and  MATE, TWM, XFCE and WindowMaker. It is a matter of preference which one you choose.

KDE, LXDE MATE and XFCE are are full featured desktops, the other ones mainly
window managers but they include a panel with an application menu. All allow you to
access your documents and applications, generally opened in a window, include a panel and a menu.

The default graphical environment can be changed typing as regular user `session-chooser`. In Graphical mode you also can choose when logging in.

We will now briefly describe the components of the Mate desktop, which is the default and is also the most accessible with speech and braille. Other full featured desktops have similar features.

Using the mouse you can discover the features of each component doing or simulating a right, middle or left click. Move or delete most of the components, modify them and add new ones can be done the same way.

These components can be reached moving the mouse and also through keyboard shortcuts. We indicate below inside parenthesis the keyboard shortcuts allowing to reach, in other words put the focus on each element. We will also summarize the <<key_bindings,key bindings>> for the Mate desktop (using the default Marco windows manager) and those for the Compiz windows manager.

[TIP]
====
You can discover most of the features of applications and other components of Slint with a right, middle, or left click of the mouse.  For instance by clicking on the panel, the title bar, the left and right buttons of any window, an icon in the panel, or on an empty space of the screen.
====
[[the_windows]]
==== The windows

A window is a rectangular area associated with an application. Windows can be moved, re-sized, maximized, restored reduced, closed (terminating the application it handles) using the mouse or keyboard shortcuts.

[[the_work_spaces]]
==== The work spaces

To allow having a lot of windows opened in an orderly fashion, the graphical environment provide several work spaces and allow to switch between them. Each work space will display the same desktop and panels, but windows can be placed in specific work space or in all of them. This setting is available with a right click on the top edge of the window. Switching to another workspace can be done clicking on its position on the bottom panel of the screen, in the work space changer, as indicated below.

[[the_desktop]]
==== The desktop

The desktop encompasses the whole screen, on which other components can be be put, in case of Mate and as shipped in Slint a top and a bottom panels, and four icons which from top to bottom allow to open in windows:

* the root directory in the file manager
* your home directory in the file manager
* the Slint Control Center
* the trash can, where are placed files that you intend to delete but didn't yet.

Windows of application you start as also put on the desktop.

Mate includes two panels, which presents themselves as slim rectangular horizontal areas, one at the top and one at the bottom of the screen.

Pressing Ctrl+Alt+Tab allow to cycle between the desktop, the top and the bottom panels

Pressing Alt+Tab allows to cycle between the windows on the desktop.

[[the_top_panel]]
==== The top panel

It presents, from left to right:

* Three menus:
** An Applications menu which can be opened pressing Alt+F1. From there you can open the other menus using the right arrow key. You can use the arrow keys to reach the others menu.
** A Places menu.
** A System menu which gives access to a preferences sub-menu, the Mate Control Center and buttons to get help about the desktop, lock the screen, close the session and shut down the computer.
* Applications launchers for mate-terminal, the file manager Caja, the email client Thunderbird, the web browser Firefox, the text editor Geany.
* A notification area which can gather applets like a Bluetooth manager, a sound mixer, a network manager, and an "update available" notifier.
* A clock and calendar.
* A screen locker.
* A close session dialog.
* A shutdown dialog.

[TIP]
====
* To customize the panel to your liking: right click on an empty space on the panel.
* If you wish to move an item on the panel:  Middle-click the element, drag your mouse, and it will follow the mouse until the middle button be released.
* For a contextual help press F1
====

[[the_bottom_panel]]
==== The bottom panel

It presents, from left to right:

* A  windows list that can be configured with a right click on the line of three vertical dots at its beginning and choosing preferences. This also allows to start the System monitor in a window.
* A *show desktop* button. A left click on it will minimize or hide all windows, clicking once again will restore the windows in their previous state.
* A work space switcher, or pager. It allows to switch from a work space to another one and also to move windows from a work space to another one by drag and drop.

The window managers are configured in Slint to be usable without changes. However you can reconfigure them to your liking. The way to do so varies from window manager to window manager. For more information, do an internet search.

[[the_slint_control_center]]
====  The Slint Control Center

We will end this introduction to Slint's usage by presenting the Slint Control Center. You can display it from the application menu on the top panel or clicking on its icon in the desktop or typing qcontrolcenter in a "Run..." dialog raised with Alt+F2

The goal of the control panel is to gather applications that are useful for system administration, documentation, and settings in a consistent fashion in all window managers.  By clicking on a category in the left menu, you can display the corresponding applications in the right pane.  We will present them in table format.  This will give us the opportunity to present the administration tools that have a graphical user interface as well.

Most administrative tools should be used with administrative privileges.  You will be asked for the root account password in order to launch a tool.

[options="autowidth"]
|====
<|**Category** <|**Tool** <|**Purpose and comments**
<|Applications <|Dotnew <|This tool allows you to manage the new (named __something.new__ hence the name of the tool) vs old configuration files after having upgraded some packages.  It's a good habit to run if after an upgrade.  It will tell you if there is something to take care of and then present you a choice of actions.
<|Applications <|Gslapt Package Manager <|Gslapt is a graphical front-end to slapt-get.  It is a handy tool to perform <<software_management,software management in Slint>>.  It allows you to search for, install, remove, upgrade, and configure software packages.
<|Applications <|Sourcery SlackBuild Manager <|Sourcery is a graphical front-end to slapt-src.  It allows you to search for SlackBuilds scripts that it can then use to automate the build process and installation of software packages.  It can also remove and reinstall packages on your system.
<|Applications <|Application Finder <|Find and launch the applications installed on your system.  The search field is very handy to find applications in comparison to manually searching the application menu.
<|Hardware <|Printer Setup <|Used to set up any connected printer.  It is a front-end to the CUPS print server, which is running by default in Slint.
<|Hardware <|Cups Print Control <|This application allows you to configure the CUPS service, manage printers, and control print jobs through a web browser.
<|Hardware <|Keyboard <|This tools allows you to set the keyboard type, key map, and enable the SCIM service.  SCIM helps by allowing you to type characters for which there is no key on the keyboard (like in many Asian languages).
<|Information <|SlackDocs Website <|The documents in this wiki are primarily intended for a Slackware user, but many of them are useful for a Slint user.  **Caution:**  Some of the listed tools, like slackpkg, should **not** be used in Slint.
<|Information <|Slackware Documentation <|This documentation can be also useful for Slint users.  Slint is based on Slackware.
<|Information <|Slint Documentation <|This gives local access to documents also available on Slint's website.
<|Information <|Slint Forum <|People whose native language is not English may also post in the localized Salix forums.
<|Information <|Slint Website <|The Slint website provides documentation, links, and a way to find the ISOs and packages.
<|Information <|System Information <|This tool collects information about your computer, such as its connected devices (internal and external), and displays it all in one place.  It can also do system bench marking.
<|Settings <|System clock <|This tool allows you to set system clock.
<|Settings <|Hostnames <|This tool allows you to associate IP addresses with domain names and host names
<|Settings <|System Language <|This tool allows you to set the system locale (language and geographic peculiarities), so that the applications you use will display information in this locale (if available).
<|System <|System Clock <|This tools allows you to set the time zone, choose if the clock should be synchronized with Internet servers (this is recommended but of course needs an Internet connection), and if not, set the date and time.
<|System <|Hostnames <|This tool allows you to configure the system hostname. It is useful if you use your Slint installation as a server, on a local area network, or on the Internet.  The hostname helps networked computers identify each other by a common name if a domain name system service is not in use.
<|System <|Rebuild Icon Cache <|This utility rebuilds the icon cache, which is a file registering all icons in the system, allowing them faster access. Run it when new icons are installed on your system.
<|System <|System Services <|This tool allows you to choose which services will be enabled at startup.  For instance, Bluetooth, the CUPS print server, or a web server.  Only use it to change the defaults settings if you know what you are doing.
<|System <|Users and Groups <|This tool allows you to add, remove, and set up user accounts and groups. It is mostly useful on multi-user systems.
<|System <|GUEFI Boot Manager <|This tool is a graphical front end to the efibootmanager command.  It allows editing of the EFI firmware's boot menu.  Actions such as adding, removing, or changing menu item order.
<|System <|MATE system monitor<|This tool displays information about the system, like the process, resources usage (RAM, CPU, network traffic) and file systems usage.
|====

[[graphical_terminals]]
==== Terminals

You can type commands in graphical mode as in console mode, if you open a
window with a terminal in it. In Mate you can just press Ctrl+Alt+t, or click
on the mate-terminal icon on the top panel, or open a "Run... " dialog pressing
Alt+F2 then typing `mate-terminal` in the small window that opens.

Most of the information below about the command line and the shell in Console
mode also apply to typing commands in a terminal. You can close mate-terminal
pressing Alt+F4 as with any other window.

[[key_bindings]]
==== Key bindings

We present here the default key bindings for the Compiz window manager and the Mate desktop, and how to customize them.

[NOTE]
====
When a key binding includes one or more **+** sign, press then hold from left to right the keys before the last one like a `Shift` key, then press the last key.
====
===== Key bindings for the Mate desktop

When using Mate in Slint, some key bindings are the same using either
the Marco or Compiz window managers. They are listed below:
----
Alt+Tab               Cycle between windows
Shift+Alt+Tab         Cycle backward between windows
Control+Alt+Tab       Cycle between panels and the desktop
Shift+Control+Alt+Tab Cycle backwards between panels and the desktop
----
Once in a graphical environment, you can toggle between it and a
console. Let's say you want to use tty2 (tty1 being busy):
Press `Ctrl+Alt+F2`, then login. +
Press `Ctrl+Alt+F7` to go back to the graphical environment.

The same general key bindings are used in all graphical environments,
with a few exceptions, Mod1 being generally the left Alt key: +
----
Mod1+F1 raises the panel's application menu.
Mod1+F2 raises a 'run..." dialog, but in Fluxbox (starts lxterminal instead).
----
Also in Fluxbox:
----
Mod1+F3 restarts Fluxbox.
Mod1+F4 closes the focused window.
----
The panel's application menu has the same layout in all accessible
graphical environments shipped but MATE. From top to bottom:

Terminal emulator: `mate-terminal` in MATE, elsewhere `lxterminal` by default +
File manager: `Caja` in MATE elsewhere `PCManfm` by default +
Web browser: `Firefox` by default +
Mail client: `Thunderbird` by default +
Preferences +
Slint Dashboard (non accessible yet as it's a Qt4 app) +
Applications sorted by category +
Run dialog +
Logout dialog (also allows shut down and reboot)

You can use the arrow keys to navigate in the menu.

In MATE, the top panel includes on its left from left to right:

the menus (Applications, then Places, then System) +
launchers for mate-terminal, Caja (file manager), Firefox, Thunderbird and the Geany
text editor. +
On its right still from left to right:
a notification area +
a screen locker button +
a logout button +
a halt or reboot buttons.

The bottom panel has from left to right:

a windows list +
a "show destktop" plugin +
a workspace switcher.

Still in Mate, partially sighted users can use the Compiz window manager instead
or Marco which is the default.

As a regular user, type:
----
gsettings set org.mate.session.required-components windowmanager compiz
----
To go back to Marco:
----
gsettings set org.mate.session.required-components windowmanager marco
----
This setting will take effect at next start of a Mate session.

Or to make the change just for the current session type:
----
compiz --replace &
----
and to go back to Marco:
----
marco --replace &
----
The replacement will be effective immediately.

This setting is also available graphically from mate-tweak, in the
Windows category.

You can access specific Compiz settings just typing:
----
ccsm &
----
===== Key bindings for the Compiz window manager

In the default settings indicated below the key or mouse buttons are
named like this:

Super: Windows key on most keyboards +
Button1: Left Mouse Button (if used with the right hand) +
Button2: Centre Mouse Button, or click with the scroll wheel) +
Button3: Right Mouse Button (if used with the right hand) +
Button4: Scroll Wheel Up +
Button5: Scroll Wheel Down
Button6: (I don't know, I thought that was on mouses for gamers) +

The default settings listed below by category can be changed from the
CCSM. We indicate the short name of the plugin between square brackets.

. Category General
+
[core] General options, tab "key bindings": +
close_window_key = Alt+F4 +
raise_window_button = Control+Button6 +
lower_window_button = Alt+Button6 +
minimize_window_key = Alt+F9 +
maximize_window_key = Alt+F10 +
unmaximize_window_key = Alt+F5 +
window_menu_key = Alt+space +
window_menu_button = Alt+Button3 +
show_desktop_key = Control+Alt+d +
toggle_window_shaded_key = Control+Alt+s +
+
[matecompat] Mate Compatibility +
main_menu_key = Alt+F1 +
run_key = Alt+F2 +

. Category Accessibility
+
[addhelper] Dim inactive (less light on non focused windows) +
toggle_key = Super+p +
+
[colorfilter] (Filter color for accessibility purposes) +
toggle_window_key = Super+Alt+f +
toggle_screen_key = Super+Alt+d +
switch_filter_key = Super+Alt+s +
+
[ezoom] Enhanced Zoom Desktop +
zoom_in_button = Super+Button4 +
zoom_out_button = Super+Button5 +
zoom_box_button = Super+Button2 (zoom out to go back to normal) +
+
[neg] Negative (toggle inverse colors of the window or screen) +
window_toggle_key = Super+n +
screen_toggle_key = Super+m +
+
[obs] Opacity, Brightness and Saturation adjustments +
opacity_increase_button = Alt+Button4 +
opacity_decrease_button = Alt+Button5 +
+
[showmouse] (Increase visibility of the mouse pointer) +
initiate = Super+k +

. Category Window Management
+
[move] Move window +
initiate_button = Alt+Button1 (hold Button1 while moving the mouse) +
initiate_key = Alt+F7 (Esc to stop moving) +
+
[resize] Resize window +
initiate_button = Alt+Button 2 (hold Button2 while moving the mouse) +
initiate_key = Alt+F8 (Esc to stop moving) +
+
[switcher] Application switcher (switch between windows or panels and
                                 the desktop) +
next_window_key = Alt+Tab (cycle between windows) +
prev_window_key = Shift+Alt+Tab +
next_panel_key = Control+Alt+Tab (cycle between panels and desktop) +
prev_panel_key = Shift+Control+Alt+Tab +


===== How to add a custom keybinding for Mate.

Let's take an example: we want that Alt+F3 starts firefox.
type in a terminal or in Run command (brought up pressing Alt+F2):
----
mate-keybinding-properties
----
In the new window you can use the down and up arrow keys press to
navigate in the list of existing key bindings.

To set a new key binding, press Tab twice to put the cursor on Add, then
press Enter. In the small dialog box brought up  type the name of the
custom key binding, like firefox, press Tab, type the name to the
associated command, in this case firefox, then press Tab twice to
put the cursor on Apply and press Enter.

To activate the new key binding, navigate until you find it on the
bottom of the list, pres Enter the press Alt+F3.

Next time you pres Alt+F3 that should start firefox

=== The shell

NOTE: This chapter is a short introduction. More in depth information is provided in the document https://slint.fr/doc/shell_and_bash_scripts.html[Shell and bash scripts], mostly borrowed from SUSE.

When the computer starts in console mode, after having logged in typing your user name and password, the <<shell,shell>> displays a "prompt" like the one below: +
`didier@darkstar:~$` +
In this example:

* `didier` is the user name
* `darkstar` the machine name
* the tilde `~` represents the home directory of the user, in this example `/home/didier`
* the dollar sign `$` indicates that the user is a "regular one" not a "super user" (see below).

The cursor is then positioned after the prompt.

The user can now type a command on the line (hence the name "command line") and confirm it pressing Enter. The shell then analyzes the command and execute it if valid, else output a message like for instance "command not found". You can edit the command before pressing Enter using the left and right arrows and the keys Backspace, Home, End and Del.

During its execution the commands can display an output on the screen or not. In all cases after execution the prompt will be displayed again in a new line, meaning that the shell is waiting for the next command to be typed.

For this to work, the user needs to know which commands are available and their syntax. Some commands are executed by the shell itself, others start external programs. Will will give below several examples of commands, more are listed in https://slint.fr/doc/shell_and_bash_scripts.html[Shell and bash scripts]

Several shells are available for Linux to choose from; in Slint the shell used by default is named *bash*.

To allow running several programs at the same time Linux provides several "virtual consoles" sharing then same keyboard and screen, numbered from one. Initially the system starts in the console (or virtual terminal) number one also called *tty1* (the name tty is an abbreviation of "teletype"). From there the user can switch to another console or tty; for instance switch to the tty number two pressing Alt+F2, where another shell will ask again the user's user name and password. To switch back to tty1, just press Alt+F1. By default in Slint six tty are available but this can be changed editing the file /etc/inittab.

When the shell is used in a graphical environment (in a graphical terminal), its behaves the same way but the prompt is slightly different, as illustrated below: +
`didier[~]$` +

You can switch back and forth between the console and a graphical environment:

* From the graphical environment pressing for instance Ctrl+Alt+F3 to go to tty3. The first time you go to a tty you will have to type your login and password.
* From a console or tty pressing Alt+F7 if the graphical environment is already running, else typing `startx` to start it.

==== Typing commands as root

*root* is the conventional name of the "super user" which have all rights to do administrative tasks, including those that could harm or even destroy the system.

You can (but this is not recommended for beginners) log in directly as root. To do this type *root* as user, then root's password.
To inform you (and warn you about the associated risks and responsibilities), the prompt will look like this: +
*root@darkstar:s~#* +
the character # (number sign, also commonly named hash) indicates that the commands will be typed as root (not as regular user), with the associated rights, but also risks and responsibilities.

If you are already logged as regular user, you can "become root"  typing: +
*su -* +
then pressing Enter. In this command, `su` (which stands for "Super User") is the name of the command, and the character *-* (hyphen-minus, also named minus) tells that you are opening a "login shell": you will first be asked root's password, then be directed to its home directory /home/root as if you had logged in as root at startup. This will avoid that you inadvertently write files in your home directory as regular user (/home/didier in the example) which cause issues later.

=== How-to solve blocking issues

By "blocking issue" we mean "an issue that prevents to use Slint" like:

* The system fails to boot.
* The system boots, but the start-up sequence is interrupted before completion. This can happen for instance if the root system partition can't be mounted because of an error in /etc/fstab, a corrupted root file system or a missing kernel module to mount the root partition, or the system boots successfully but you don't remember the password for root.

If the system completely fails to boot, try each of the solutions below in sequence, until one works.

. If this occurs after a kernel upgrade, try the second boot entry instead of the first one.
. Use the last boot entry of the GRUB menu. It could find Slint and allow to start it.
. Try to boot off the rescue boot stick that you have requested at end of installation.
. Jump into Slint to repair it, as explained below.
. Ask for help emailing slint@freelists.org providing all information that could help investigate the issue. If not already done, first subscribe to the list emailing slint-request@freelists.org with the subject  'subscribe', then answer the email you will receive. Only if you have an issue using email, request help in the IRC channel #slint, server irc.libera.chat and stay in the channel until someones answer.

If the start-up up sequence is interrupted, jump into Slint from its installer to try to solve the issue. Insert or plug-in the installation media (USB stick or DVD where you have written the installation ISO)  then follow the instructions below.

. Start the installer.
. As soon as logged in as root, to list the drives and partitions, type:
+
----
lsblk -lpo name,size,fstype
----
. Find in the output the name of the Slint root partition, checking its size and file system type, labeled FSTYPE.
. Mount this partition, and check that it be the good one. For instance if it is /dev/sda3, type:
+
----
mount /dev/sda3 /mnt
cat /mnt/etc/slint-version
----
+
[NOTE]
====
If the file system of the Slint root partition seems corrupted, don't mount it yet but try to repair it running this command:
----
fsck <name of the root partition>
----
And if this succeeds just reboot.
====
+
Assuming that you installed Slint64-14.21 the output should be:
+
*Slint 14.2.1*
+
If the output is "file not found" the partition is not the one you looked for. In this case only, type:
+
----
umount /mnt
----
+
then try another one, going back to the list of drives and partitions.
+
Else, bind mount the pseudo file systems /dev, /proc and /sys in the Slint system, typing:
+
----
mount -B /dev /mnt/dev
mount -B /proc /mnt/proc
mount -B /dev /mnt/sys
----
+
Issue the next command to "jump into" your Slint:
+
----
chroot /mnt
----
+
chroot means "change root (of the system)": we are no more in the installer, but now in Slint itself. From there you can modify the system to solve the issue. Here are some examples:

* Run "update-grub".

* Run "grub-emu".

* Re-install GRUB using the command "grub-install drivename", drivename being the drive where to install Slint. Before doing that, if you will boot in EFI mode type first "mount /boot/efi".

* Type "passwd" to change the password for root.

* Remove, install or upgrade packages.

. When done, remove the installation media then type:
+
----
exit
reboot
----

[[Accessibility]]
== Accessibility

If you chose to keep speech when asked at the beginning installation, it will be
enabled from start up in a console as in graphical environments.

=== Use Slint with braille

Slint includes the brltty software to handle braille displays.

Your settings, made before booting on the command line or later, are recorded in the installed system in
/etc/brltty.conf.

A comprehensive manual for brltty is available in English, French and
Portuguese in several formats including plain text (txt) at this URL:
https://mielke.cc/brltty/doc/Manual-BRLTTY/

If braille was not enabled during installation or has been disabled, to enable it do this:

. Make /etc/rc.d/rc.brltty executable typing as root:
+
----
chmod 755 /etc/rc.d/rc.brltty
----
. Make yourself member of the braille group, typing as root:
+
----
usermod -G braille -a username
----
+
In the command above, replace username with your login name.

To disable braille type as root:
----
chmod 64 /etc/rc.d/rc.brltty
----

=== Speech in graphical environments

As a reminder speech in graphical environments using the Orca screen reader is enabled typing:
----
orca-on
----

To know how to use Orca, including its specific key bindings, type:
----
man orca
----

In short, once in a graphical environment, in graphical mode:
----
Insert+Space: launch the orca Preferences dialog.
Insert+S: activate or deactivate the vocal synthesis.
Insert+H: activate the learning mode. In this mode:
   Press a key to hear its function
   F1: to hear the documentation of the screen reader
   F2: list the keyboard shortcuts for Orca
   F3: list the keyboard for the current application
   Esc: end of the learning mode
----

=== Voices and TTS in Slint.

Following TTS (Text to Speech synthesizers) are shipped in
Slint64-14.2.1.2, each with a set of voices, namely: +
espeak-ng +
flite +
pico +
mbrola +
RHVoice +

Most of the time these TTS and the associated voices and languages are
managed by speech-dispatcher through its so-called "modules" (roughly,
a module is associated to a TTS).

The custom utility spd-list can answer several questions about the
synthesizers, voices and languages. Typing spd-list displays this:
----
This script lists languages and synthesizers available for applications
relying on Speech Dispatcher, like Orca or speech-up. Each command below answers the question following it.
Don't type the quotes surrounding the command.
"/usr/bin/spd-list" usage?
"/usr/bin/spd-list -s" available synthesizers?
"/usr/bin/spd-list -l" available languages codes?
"/usr/bin/spd-list -ls <synthesizer>" languages available for this synthesizer?
"/usr/bin/spd-list -sl <language code>" synthesizers providing voices in this language?
The language code has most often two characters, like 'en' 'es' or 'fr'
----
All voices listed are available in Orca and speechd-up, and also fenrir if configured to use speech-dispatcher.

You can get additional voices for flite and mbrola, associated with the
modules flite-generic and espeak-ng-mbrola-generic.

You can always know which are installed or not typing as root one of these commands:
----
slapt-get --search mbrola-voice
slapt-get --search flite-voice
----
then install one of the not-yet installed one, like e.g.
----
slapt-get -i mbrola-voice-it2
----
In addition to the free (as in free beer) voices shipped in Slint,
you can buy voices for: +
voxin, https://oralux.org/voice.php +
voxygen, sending an email to contact@hypra.fr

More voices  and synthesizers could be made available later, this will be announced on the
Slint mailing list and this http://slackware.uk/slint/x86_64/slint-14.2.1/ChangeLog.txt[ChangeLog]

The keyboard shortcuts for graphical environments are listed in <<key_bindings,Key bindings>>.

=== Use the login managers with speech

Two graphical login managers are accessible with speech using Orca: lightdm or gdm, the latter being recommended as fully accessible.

In gdm, the focus is initially in the User field. Type your user. or
login name then press Enter and type your password.

You can access other features of gdm through keyboard shortcuts. In
English: +
Alt+A: Actions (shutdown or reboot) +
Alt+E: Session menu +
Alt+L: change the language, for the next session and possibly further
session, possibly also for gdm itself. +
Alt+T: Theme. +
You can use the Tab key to navigate among input fields, and the up and
down keys to menus.

In lightdm, pressing F4 toggle the sound on or off. Initially the cursor
is in the password field. Press Tab leads to the "login push button",
then to the user's list or "combo box". In this list pressing space
shows the currently selected user. Use the arrow keys to choose another
one then type the corresponding password. Instead, choosing "Other..."
adds a field where you can type the login name of a non listed user.
Still in lightdm, F10 brings up a menu allowing to reboot or shutdown,
and Alt+F4 brings up directly an UI with shutdown or cancel buttons.

=== Choose a console screen reader

Slint provides these console screen readers: +
espeakup +
speehchd-up +
fenrir

Additionally, several hardware speech synthesizers can be used in
console mode, using speakup.

To choose a screen reader run as root this command:
----
speak-with
----
Here is its output with no argument:
----
root[~]# speak-with
Usage: /usr/sbin/speak-with <screen reader> or <hard synthesizer> or none
Choose a console screen reader to talk with among:
  espeakup (Console screen reader connecting espeak-ng and speakup)
  fenrir (Modular, flexible and fast console screen reader)
  speechd-up (Console screen reader connecting Speech Dispatcher and speakup)
or use one of the supported hard synthesizers:
  acntsa apollo audptr bns dectlk decext ltlk soft spkout txprt
or type  "/usr/sbin/speak-with none" to mute all screen readers.
root[~]#
----
The hardware speech synthesizers listed are those available in the
running kernel or shipped as modules.

Example of commands and associated output:

----
root[~]# speak-with speechd-up
Starting speechd-up
Should speechd-up be also started at next boot? [Y/n]
OK
root[~]# Done.
----
As soon as you type the command, previously used screen readers will be
stopped and speechd-up will begin talking.

If you answer Y (the default) to the question: +
Should speechd-up be also started at next boot? +
spechd-up will be continue to be used at next boot. +
If instead you answer n the screen reader used before typing speak-with
speechd-up will be used after next boot.

Other examples:

----
root[~]# speak-with apollo
Stopping speechd-up...
Should apollo be also used at next boot? [Y/n]
OK
root[~]# Done.

root[~]# speak-with none
Do you also want a mute console at next boot? [Y/n]
OK
root[~]#
----

=== Configure a console screen reader.

Slint handle speech hardware synthesizers using speakup and provides the espeakup
and speechd-up screen readers.

You can save the settings you make, for instance to increase
or decrease the rate of seech or the sound volume. Just type as root:
speakup-save. This saves all current settings, including those specific to the
hardware synthesizer in use, case occurring.

All these settings will be restored at next boot: the startup scripts
rc.espeakup and rc.speechd-up run the command speakup-restore for you.

If you don't to want to restore the saved settings, type as root: +
chmod -x /usr/sbin/speakup-restore

If you the have them restored again type as root: +
chmod +x /usr/sbin/speakup-restore

Here are some key bindings for settings speakup as well as speechd-up:
----
spk key_f9   punctuation_level_decrease
spk key_f10  punctuation_level_increase
spk key_f11  reading_punctuation_decrease
spk key_f12  reading_punctuation_increase
spk key_1    volume_decrease (doesn't work with speechd-up)
spk key_2    volume_increase (doesn't work with speechd-up)
spk key_3    pitch_decrease (doesn't work with speechd-up)
spk key_4    pitch_increase (doesn't work with speechd-up)
spk key_5    rate_decrease
spk key_6    rate_increase
----
In the table above spk is the speakup key CapLock, or Ins/0 on a numeric
keypad. For instance to increase the rate you could press and hold the
CapsLock key then press the 6 key.

Some settings available only on specific hardware synthesizers do not
have associated key bindings. Then to set a new value you echo it in
/sys/accessibility/speakup/<synth>/<parameter>

For instance to change the voice in use by an apollo 2 you could write: +
echo 2 > /sys/accessibility/speakup/apollo/voice

speakup-save will also save this setting.

Caveat: I never used a hardware speech synthesizer, so the explanation below is
only an assumption based in the speakup_apollo driver, consistent with
is manual, found in: +
https://archive.org/stream/DolphinApollo2Manual/Dolphin_Apollo_2_Manual_djvu.txt

[[desktop_keys]]
==== Speakup desktop keys

Almost all keys listed below are located on the numeric keypad.
The Insert or 0 key on the keypad acts like a shift key. For instance,
Ins 2 means "hold down the Insert key like a shift key and press 2".
Keep numlock off to use Speakup.

Scope: these key bindings can be used with hard synthesizers and with
espeakup, and also with speechd-up. However setting the pitch or the
speech volume using key bindings is not available when using speechd-up.

First keys to remember:
----
PrintScreen    Toggle speakup on/off
Ins F1         Speakup Help (press Space to exit the help)
----

Keys used for screen review:
----
1/2/3          Say Previous/Current/Next character
Shift PageUp   Say first character
Shift PageDown Say last character
4/5/6          Say Previous/Current/Next word
5 twice        Spell current word
Ins 5          Spell Current Word phonetically
7/8/9          Say Previous/Current/Next line
Ins 4          Say from left edge of line to reading cursor.
Ins 6          Say from reading cursor to right edge of line.
Ins 8          Say from top of screen to reading cursor.
Ins plus       Say from reading cursor line to bottom of screen.
plus           Say entire screen.
Ins r          Say all doument
dot            Say position
Ins dot        Say attributes
Ins minus      Say character hex and decimal value.
minus          Park reading cursor (toggle)
Ins 9          Move reading cursor to top of screen (insert pgup)
Ins 3          Move reading cursor to bottom of screen (insert pgdn)
Ins 7          Move reading cursor to left edge of screen (insert home)
Ins 1          Move reading cursor to right edge of screen (insert end)
Control 1      Move reading cursor to last character on current line.
asterisk       Toggle cursoring
Ins asterisk   n<x|y  go to line (y) or column (x). Where 'n' is any
               allowed value for the row or column for your current screen.
Ins f2         Set window
Ins f3         Clear window
Ins f4         Enable window
----

Other keys:
----
Ins f5         Edit some
Ins f6         Edit most
Ins f7         Edit delim
Ins f8         Edit repeat
Ins f9         Edit exnum

Enter          Shut up (until another key is hit) and sync reading cursor.
Ins Enter      Shut up (until toggled back on)

slash          Mark and Cut screen region.
Ins slash      Paste screen region into any console.
----
==== Speakup laptop keys

These key bindings (for US keyboard layout) don't need a numeric keypad.
If you have one, use the <<desktop_keys,speakup desktop keys>> easier to use,
especially if you use another keyboard layout than US.

The CapsLock key acts like a Shift key. +
For instance, CapsLock 2 means "hold down the CapsLock key like a shift key and press 2". +
Keep numlock off to use Speakup.

Scope: these key bindings can be used with hard synthesizers and with
espeakup, and also with speechd-up. However setting the pitch or the
speech volume using key bindings is not available when using speechd-up.

First keys to remember:
----
PrintScreen          Toggle speakup on/off
CapsLock F1          Speakup Help (press Space to exit)
----

Key used for screen review:
----
CapsLock m/comma/dot Say Previous/Current/Next character
CapsLock PageUp      Say First character
CpasLock PageDown    Say Last character
CapsLock j/k/l       Say Previous/Current/Next word
CpasLock k twice     Spell current word
CapsLock u/i/o       Say Previous/Current/Next line
CapsLock h           Say from left edge of line to reading cursor.
CapsLock semicolon   Say from reading cursor to right edge of line
CapsLock y           Say from top of screen to reading cursor.
CapsLock p           Say from reading cursor line to bottom of screen.
CapsLock apostrophe  Say entire screen.
Capslock r           Read all document.
CapsLock n           Say position
CapsLock slash       Say attributes
CapsLock minus       park reading cursor (toggle)
CapsLock f2          Set window
CapsLock f3          Clear window
CapsLock f4          Enable window
----
Other keys:
----
CapsLock f5          Edit some
CapsLock f6          Edit most
CapsLock f7          Edit delimiter
CapsLock f8          Repeat edit
shift CapsLock f9    Edit exnum
----

=== Make emacs speak

You can use either emacspeak or speechd-el. To enable or disable one of
them type as regular either one of these commands:

switch-on emacspeak +
switch-on speechd-el +
switch-off emacspeak +
switch-off speechd-el +

Then just type: +
emacs

Enabling one of these software disables the other one.

[[Manage_your_system]]
== Manage your system

[[software_management]]
=== Software management in Slint.

<<The_basics,The basics>> +
<<Keep_your_system_up_to_date,Keep your system up to date>> +
<<Kernel_upgrades,Kernel upgrades>> +
<<Get_additional_applications,Get additional applications>> +
 <<slapt_src,Usage of slapt-src>> +
 <<sbopkg,Usage of sbopkg>> +

[[The_basics]]
==== The basics

In Slint software is provided in the form of packages. A package is a bundle of files provided in a compressed archive file, put together to provide all that is needed to run the software. Packages are included in the installation ISO and stored in remote servers from which they can be downloaded and installed. Installing a package means extract the files from the archive file and copy them to some directory of the system.

Installation and removal of software are recorded in a database made of text files in these directories:
----
/var/log/packages
/var/log/removed_packages
/var/log/scripts
/var/log/removed_scripts
----
The files in the directory record information about the packages, mainly its content: the list of files it includes and where they are installed.

The main commands to manage the packages are listed below. All of them have associated man pages.

These commands require administrative rights, associated to a specific account named 'root', for which you have specified a password during Slint installation.

To issue a command as 'root', first type
su -
then enter the password for root and type the command.

Commands below can be run from a graphical terminal or in a console, but gslapt that only works in a graphical environment.
----
installpkg # to install a package stored locally.
removepkg # to remove an installed package.
upgradepkg # to replace an installed package with another one (generally with the same name but at another version).
slapt-get # to install, remove, upgrade packages stored on repositories listed in /etc/slapt-get/slap-getrc
----
The packages shipped in the installation ISO come from the repositories listed in /etc/slapt-get/slapt-getrc

Do yourself a favor: read the comments in /etc/slapt-get/slapt-getrc and /usr/doc/slapt-get-0.10.2t/README.slapgetrc.Slint in the installed system.

After having installed Slint, you'll be notified of updates of installed packages coming from repositories listed in /etc/slapt-get/slapt-getrc

You can install additional packages using the command slapt-get or the graphical application gslapt, if stored in a repository listed in /etc/slapt-get/slapt-getrc

slapt-get and gslapt provide a search feature that helps you finding packages.

WARNING: you can use slapt-get, gslapt and removepkg to remove installed packages but do not remove packages shipped in the Slint ISO, even if you do not use them at all. Removing an included package will result in no increase in performance and could prevent other applications to run. Also, if you have added a package not included in Slint you may remove it but be careful that the removed package be not a dependency of other ones that you also installed and intend to continue using.

[[Keep_your_system_up_to_date]]
==== Keep your system up to date

Keep your system safe installing the software updates provided by Slint as soon as they're available.

All updates are listed in the ChangeLog: http://slackware.uk/slint/x86_64/slint-14.2.1/ChangeLog.txt

After Slint installation or any change in the file /etc/slapt-get/slapt-getr run this command once:
----
slapt-get --add-keys
----

To synchronize the local list of available package with that of the repository, this command is automatically run every two hours:
----
slapt-get -u
----
You can also run it manually

This of course requires that the machine be connected to the internet.

To download and install the upgraded or rebuilt packages run as root
the following command:
----
slapt-get --upgrade
----
Alternatively you could also use gslapt, a graphical front-end for slapt-get.

To get new packages listed in the ChangeLog as "Added", type:
----
slapt-get -i <package name>
----
or to make sure you have installed all packages shipped in Slint, including those added to the repository after you installed Slint, type:
----
slapt-get --install-set slint
----

On the desktops, a small icon is displayed in the notification area of a panel (the top panel in MATE) to notify of available software updates. Just make a left click on it and follow the instructions mentioned there.

Be aware that some packages are blacklisted in
/etc/slapt-get/slapt-getrc, i.e. can not be automatically upgraded or
installed.

[[Kernel_upgrades]]
==== Kernel upgrades

New kernels are provided whenever necessary, either to bring security fixes or enhancements.

Usually no manual intervention from the user is necessary when this happens, but it can be useful to know how the kernel upgrade is done and what to do if something unexpected occurs.

Several packages include files associated with each kernel, namely: kernel-generic, kernel-modules, kernel-source, kernel headers. kernel-source and kernel-headers include files used to build software, only kernel-generic and kernel-modules are needed to run a Slint system.

The package kernel-modules ships files called modules, which are pieces of code that are "plugged in" the kernel to provide a specific feature or handle a specific hardware.

As soon as both a kernel package and the associated kernel-modules package are installed, the script
/sbin/wrapupgradepkg builds an <<initrd,initrd>> associated with this kernel (with modules taken from
the package kernel-modules) and installs it alongside the kernel in the /boot directory.

Then previous kernels (not in use at time of upgrade) are removed.

Then the script updates the GRUB configuration file /boot/grub/grub.cfg, read by the OS loader to build the boot when booting.

This boot menu will then include at least two boot entries each indicating, to indicating a kernel and its associated initrd to use. From the top:

* A boot entry to start Slint using the new kernel that has just been installed.
* A boot entry to start Slint using the kernel in use at time of upgrade.

This provide kind of a "safety net" in case Slint wouldn't boot with the new kernel:
in this case just arrow down once when the boot menu is displayed to start Slint with the previous kernel

You can preview the new boot menu before rebooting, typing as root:
----
grub-emu
----
Then an emulated or "fake" boot menu is displayed, with the same layout as the real one which will
displayed at boot.

You can navigate in it with the down and up arrow keys to highlight (put the focus on)  a boot entry of which you can display the details pressing 'e'. You can go back to the menu pressing Escape.

To exit from grub-emu press c then type *exit* and press Enter.

[[Get_additional_applications]]
==== Get additional applications

If the application you want is not installed and also not available in one of the repositories enabled in /etc/slapt-get/slapt-getrc you could make a package for it, using build material provided by volunteers @ https://slackbuilds.org. To know how-to proceed, read https://slackbuilds.org/howto/ and https://slackbuilds.org/faq/

The packages built this way should be compatible with Slint.

Two applications allow you build and install packages using the build material provided at https://slackbuilds.org: *slapt-src* and *sbopkg*. Unless you be accustomed to sbopkg, we recommend that you use slapt-src, faster to be acquainted with. However, both should work and provide the same results and should be used as root.

We will describe slapt-src in more details.

[[slapt_src]]
===== Usage of slapt-srcrc

The default configuration script for slapt-src is /etc/slapt-get/slap-getrc and has this content:
----
BUILDDIR=/tmp/slapt-src
PKGEXT=txz
SOURCE=https://slackbuilds.org/slackbuilds/14.2/
----
So:

* All build material and packages will go in /tmp/slapt-src
* The names of packages built end in .txz
* The build material is fetched from the repository https://slackbuilds.org/slackbuilds/14.2/

Here is the output of the command *slapt-src --help*:
----
Usage: slapt-src [option(s)] [action] [slackbuild(s)]
  -u, --update           update local cache of remote slackbuilds
  -U, --upgrade-all      upgrade all installed slackbuilds
  -l, --list             list available slackbuilds
  -e, --clean            clean build directory
  -s, --search           search available slackbuilds
  -w, --show             show specified slackbuilds
  -i, --install          fetch, build, and install the specified slackbuild(s)
  -b, --build            only fetch and build the specified slackbuild(s)
  -f, --fetch            only fetch the specified slackbuild(s)
  -v, --version
  -h, --help
 Options:
  -y, --yes              do not prompt
  -t, --simulate         show what will be done
  -c, --config=FILE      use the specified configuration file
  -n, --no-dep           do not look for dependencies
  -p, --postprocess=CMD  run specified command on generated package
  -B, --build-only       applicable only to --upgrade-all
  -F, --fetch-only       applicable only to --upgrade-all
----

Let's comment some of these options:

* Use -u or --update every time to update the list of packages that can be built and installed. This commands writes the file /tmp/slapt-src/slackbuilds_data, replacing the previous one case occurring.
* Use -e to save space on disk, removing most files in /usr/src/slapt-src/
* do *not* use -U but to list the possible upgrades or downgrades, without confirming: confirming would lead to replace all Slint packages by one at another version if available in the remote repository, possibly breaking software not compatible with this other version.
* -i can also upgrade a package already installed from https://slackbuilds.org, if a the maintainer of the SlackBuild script has upgraded it, changing the VERSION variable.
* Use -f to only download the files in https://slackbuilds.org for the target software. This can be useful if you want to check build material, or customize the build. For instance let's assume you want to fetch the build material for the software *mxml*. The command below gives some information about the software and which files are stored in https://slackbuilds.org for it:
+
----
slapt-src --show mxml
SlackBuild Name: mxml
SlackBuild Version: 3.1
SlackBuild Category: libraries/mxml/
SlackBuild Description: mxml (Lightweight xml parsing library)
SlackBuild Files:
 README
 mxml.SlackBuild
 mxml.info
 slack-desc
----
+
Now fetch theses files and also the source archive from upstream repository with the next command:
+
----
slapt-get -f mxml
----
+
Knowing from the output of the previous command that the files are stored in the subdirectory libraries/mxml, you can check which files have been downloaded with this command:
+
----
ls -1 /tmp/slapt-src/libraries/mxml
mxml-3.1.tar.gz
mxml.SlackBuild
mxml.info
slack-desc
----
* Use -b if you want to build a package but not install it yet. In the example above it will be stored in  /tmp/slapt-src/libraries/mxml, so you will be able to install it afterwards just typing:
+
----
upgradepkg --install-new /tmp/slapt-src/libraries/mxml/xml*txz
----
+
* Use -c if you want to use a custom configuration file instead of the default one /etc/slapt-get/slap-getrc

[[sbopkg]]
===== Usage of sbopkg

WARNING: in some cases a software is shipped in Slint and is also available in https://slackbuilds.org but with a different name which can lead to problems. These discrepancies are solved when using slapt-src, but not yet when using sbopkg.

Before using sbopkg, read its help file and its man page typing as root: *sbopkg --help* and *man sbopkg*

In brief, if using only the command line, as root:

* synchronize the local repository with the remote one to update it:
+
----
sbopkg -r
----
* write a "queue file" listing the dependencies in the right order to build and install them before the software you want:
+
----
sqg -p <package name>
----
A queue file named /var/lib/sbopkg/queues/<package name>.sqf will be written

If there is no dependency no queue file will be written

* build and install the dependencies then,the wanted software:
+
----
sbopkg -i <package name>
----
If a queue file exists for this package choose to use it when asked.

If a package mentioned in the queue file is already installed it will be skipped.

As a consequence, if you want to upgrade a package already installed using sbopkg, you will have to remove it
before building and installing the new one.

Be aware that building and installing packages this way can occasionally lead to issues like missing dependencies or conflicts with installed packages: the components used to build the packages are provided by volunteers who can not check the results in every possible configuration.

WARNING: If you neither can find a package for a software you want nor stuff to build one @ https://slackbuilds.org, you could be tempted to build and install this software manually by issuing the commands "./configure && make && make install". Avoid to do that, as software built and installed this way will not be manageable by the Slint packages management system and associated tools.

Rather, just post a question or request on the Slint mailing list and we will try to help, possibly adding this package to the repository. When done (this will be announced in the mailing list), to install it type as root one of these comands:
----
slapt-get -i <package name>
slapt-get --install-set Slint
----

=== Manage users and groups.

Two commands are provided to manage users and groups:

* The _usersetup_ command (TUI)
* The _gtkusersetup_ command (GUI), with an icon in the Slint Control Center, System category)

These commands allow you to add or delete users and groups of users, and add users to groups.

Bear in mind that each user account is associated by default to its on space in the /home directory. For instance if you add a user *leonie*, a /home/leonie folder will be created, to which only this user (and root) will be allowed to access.

=== Change the default language of the system

Two commands are provided for that:

* The _localesetup_ command (TUI).
* The _gtklocalesetup_ command (GUI), with an icon in the Slint Control Center, Settings category.

Bear in mind that this settings changes the language used by the applications' interfaces if they are internationalized, not the keyboard map (see below).

Also, localized packages (if available) matching the language chosen have been already installed at end of Slint installation. If you change the default language afterwards, you will need to install the corresponding localized packages if you want.

Localized means "provided in a given locale", the locale being a language plus peculiarities associated to a geographic area. For instance Portuguese spoken in Portugal and Brazil differ. In the localized packages names, l10n is an abbreviation of "localization" meaning "letter l, 10 other letters, letter n".

Localized packages are included for many languages. Their name include the base package name, a hyphen, then the language code. We list below the base names of the localized packages:
[options="autowidth"]
|====
| Base package name | Description
| aspell | word lists for spell check
| calligra-l0n | localized of the Calligra office suite
| kde-l10n | localized KDE desktop
| libreoffice-l0n | localized LibreOffice office suite
| libreoffice-help | localized help for LibreOffice
|====

To find a localized package, type in a terminal emulator as root (example for kde-l10n): +
`spi libreoffice`

This will display the list of all localized LibreOffice package. Find the one you want and install it. For instance for Persian the language code is `fa` (short for Farsi), so to install it type: +
`spi -i libreoffice-l0n-fa`

If you prefer you can use `gslapt`. Then, type the package name in the search field to display all localized libreoffice packages.

=== Change the keyboard map

You can change the default keymap used in graphical mode using:

* The _keyboardsetup_ command (TUI)
* The _gtkkeyboardsetup_ command (GUI), with an icon in the Slint Control Center, Hardware category.

These commands also allow you to choose if numlock should be enabled when the system is started, and if the SCIM (input method) should be enabled at system startup.

If you use a window manager with a panel, you can also make this setting through a right click on the keyboard applet (displayed by default as the two letters language code of the keyboard map in use). KDE and Xfce have specific tools for that.

On the command line but still for the graphical mode use instead the setxbmap

For instance to set the keyboard layout to Ukrainian in graphical mode, just type as regular user: +
`setxkbmap -layout ua`

To know more, read the man page for setxkbmap.

=== Install a printer

In Slint the CUPS print server manages printers and printing tasks. In its default configuration, recorded in the file /etc/cups/cupsd.conf, only users belonging to the `sys` (short for _system_) group are allowed to perform administrative tasks, like adding or removing a printer.

For a simple setup (printer attached to a desktop or laptop and not shared between machines), you just need to add one user (who will manage the printers) to the `sys` group. For instance adding the user _didier_ to the group `sys` can be done two ways:

* In console mode or using a terminal emulator, become root with `su` then type:
+
`gpasswd --add didier sys`
+
* In graphical mode from the Slint Control Center click on Users and Groups (System category), select the user and click Properties, then in the Groups tab check `sys`. Or the other way round (select the group then add the user to it).

There are several ways to add and configure a printer (this has to be done by an user member of the group `sys`):

* From the Slint Control Center, category Hardware, click on Printer Setup to display a GUI allowing a simple setup...
* ... Or click on Cups Print Control the display a web interface to the CUPS server. You can also display the web interface to the CUPS server typing `localhost:631` in the address field of a web browser.
* If you have a Hewlett Packard device, make a right click on the *hp* logo in the notification area of the panel.

NOTE: To make any print setting the CUPS server should be running. It is started when you start Slint if the service `cups` in checked among the System Services (it is checked by default in Slint).

=== Sound set up


In Slint applications either send their sound output either to ALSA or to PulseAudio.

In the latter case PulseAudio in turn sends the output stream to an ALSA mixer which direct it to the sound cards.

As a result, a setting like an output sound volume can always be done by an ALSA mixer, and also by a PulseAudio mixer but only in case the application sends its sound output to PulseAudio.

We will present now the application that can be used to modify the sound settings

==== pavucontrol (for PulseAudio)

`pavucontrol` stands for PulseAudio Volume Control and is a graphical application. You can start it from a terminal or application menu, or doing a right click on the sound mixer icon on the top panel of Mate. Actually it allows more settings than just the volume control, take the time to explore all its features.

You can also use volume control applet in the notification area of the panel: a left click allows to adjust the volume, a right click gives access to other settings and allows to start the pavucontrol mixer.

[[Sound_on_the_command_line]]

==== alsamixer  (for ALSA)

alsamixer is a ncurses application, providing a semi-graphical user interface.

To use it type: in a console or in a graphical terminal:
----
alsamixer
----
then:

* Use the page up key to increase the volume by 5%
* Use the page down key to decrease the volume by 5%
* press Esc to leave the application.

==== amixer (for ALSA)
The command is of the form:
----
amixer <arguments>`
----
For instance to set the main volume to 70% type:
----
amixer sset Master 70%
----
To know more, type one of these commands:
----
man amixer
amixer -h
----
==== sam (the Speech-Friendly Alsa Mixer)
sam allows selection of the sound card to work on when there are more than one
such device in your machine. +
When there is only one, it directly presents the different mixers
for configuration.

All selections, be it sound cards, mixers or a given feature of a
 specific mixer are selected by scrolling through the available options using the up and down arrows, then entering on the desired one: +
`q` leave the selection list and/or quits. +
`Shift-q` exits the program from anywhere. +
`F1` Displays any extra information if available.

When the name of the desired option is known, one can instead press its
first letter. First-letter navigation is case-insensitive.
That will then take you to the first selection starting with the pressed
letter.  Pressing the same letter again, will move you to the next option
starting with that letter ifmore than one option like that exists.
Repeating the letter will cycle among all those options starting with that
letter.

The settable features of a mixer can be  listed by pressing f1. +
They are presented as a selection list, showing briefly all relevant information, e.g.
"playback volume down from 84 percent" is the option to lower the playback volume
setting of the playback volume.  As you can see, it also tells you what the
current setting is.

NOTE: sam does not work correctly in a graphical terminal. Use it in a console.

==== pamixer and ponymix (for PulseAudio)
These itility are similar, with comands in this form:
----
pamixer <arguments>
ponymix <arguments>
----
For instance to set the volume to 70% for the default sink type one of these commands:
----
pamixer --set-volume 7
ponymix set-volume 8O
----
To know more, type:
----
pamixer -h
ponymix --help
----

==== pacmd and pactl (for PulseAudio)

Both of these command line applications control a running PulseAdio daemon.

WARNING: pacmd typed alone brings up an interactive dialog. Press Ctrl+d to exit from it but do not type exit, as that would kill PulseAudio!

To know more:
----
man pactl
man pacmd
pactl --help
pacmd --help
----

==== Save and restore the sound level

Just make the file /etc/rc.d/rc.alsa executable. As root:
----
chmod /etc/rc.d/rc.alsa
----
At startup, this script will restore the previous sound settings if
they were previously stored, else will set default volumes and store
them, so that they will be restored at next reboot.

If you don't want that this script to set the default volume type as root:
----
touch /var/lib/alsa/no.asound.state
----

You can change these default sound levels with alsamixer or amixer
then typing as root:
----
alsactl store
----
Then at next startup the script will restore them.

To know more:
----
man alsactl
----
=== Network configuration

If you didn't set up your network settings during Slint installation, first
become root by typing `su -` either in a console or in graphical
terminal like mate-terminal, then type the root password.

Setup of the network is done by the `netsetup` script.
So you would just type the command `netsetup` in that
same terminal, where you've just aquired root privileges.
You will be first asked for the hostname of your machine. you can choose any
name, but mind that it has to be a single word.
Then you are  asked the domain name. If the machine is not a server
you can choose anyone.
After that you will be asked how your machine connects to the network. Unless
you have a good reason not to (and you know what you are doing), keep
the default `NetworkManager` to automatically configure the network.

For wired connections, that should be enough to be connected on next boot
automatically.

To configure a wireless connection, two commands are available using
the command line.

Again, you can type the commands directly on the console or in a
graphical terminal like mate-terminal. Type them as regular user not as
root.
If you followed these instructions and became root already, you would just
type `exit` to get back the regular user status.

The two mentioned commands are `nmtui` (dialog boxes) or `nmcli` (pure command line),
both are accessible.

If you prefer working on the command line, make sure to read the nmcli
documentation first. Just type `nmcli --help` and `man nmcli`
to find out all the details.
While `nmcli` offers more possibilities, in most use-cases the functionality
of `nmtui` will be sufficient for setting up your wireless network, so we will
describe it here:

Using `nmtui`, you can navigate with the Tab and arrow keys.
You will be proposed three options: +
`Edit a connection` +
`Activate a connection` +
`Set system hostname` +

If no wireless connection has been set yet choose `Activate a connection`.
Starting from top to bottom, first the wired connections (if any) will
be proposed, after that all accessible wireless networks will be listed.
Navigate with the down and up arrow keys to select the network you want,
then just press Enter: you will probably be asked for the password or encryption
key. Type it, use the Tab key to confirm, then exit and you are done.

In graphical mode only, instead of `nmcli` or `nmtui` you can use the application
`nm-connection-editor`.

=== Services configuration

If you used using the Manual mode you were asked which system services activate by default at startup. +
If you used the Auto mode default settings were applied

In both cases you can change these settings several ways:

* Running as root the `servicesetup` command (TUI)
* In graphical mode only, using `gtkervicesetup`, accessible from the Slint Control Center, category System or typing Alt+F2 to raise a "Run..." dialog then typing *gtksetrvicesetup*.
* As root making the relevant script executable (chmod 755 <path to the script> or non executable (chmod 644 <path to the script>). For instance to make fail2ban executable you would type: `chmod 755 /etc/rc.d/rc.fail2ban`

[IMPORTANT]
====
Only change the default settings if you know what you are doing.
====

The services are managed by scripts whose name begin with `rc.` in the directory /etc/rc.d/. For instance the service acpi is managed by the shell script /etc/rc.d/rc.acpi. Most of the services are activated at startup if the corresponding script is executable. In the table below we indicate if it is activated at startup (`on` in the column A) or not (`off` in the column A). If the column is blank the activation of the services depends on a choice made during installation. An `A` in the column indicates that the service is activated in Auto installation mode, else is activated if chosen by the user during installation. The Package column indicate which software package provides the script corresponding to the service, case occurring

[options="autowidth"]
|====
| *Service* | *A* | *Package* | *Purpose and comments*
| acpi | on | acpid | Advanced Configuration and Power Interface, allows for instance to manage power or reboot pressing a button
| alsa | on | alsa-utils | Provide default sound settings or restore those saved
| alsa-oss | off | alsa-utils | ALSA OSS kernel modules. Not useful in mot cases, not enabled by default in Slint.
| atalk | off | netatalk | Allows Unix-like operating systems to serve as file, print and time servers for Macintosh computers.
| autofs | off | autofs | Kernel-based auto mounter for Linux
| bind | off | bind | Name server. Most users will rely on a remote one. Enable it if you want to run a name server in this system.
| bitlbee | on | bitlbee | BitlBee is an IRC daemon that can talk to  instant  messaging  networks
       and  acts as a gateway. Users can connect to the server with any normal
       IRC client and see their 'buddy list' in &bitlbee.
| bluetooth | on | bluez | Allows to communicate with bluetooth devices
| brltty|  | brltty | Allows to communicate with Braille terminal or screen reader. Activated if requested during installation
| cgconfig | on | libcgroups | Runs the cgconfigparser utility that parses /etc/cgconfig.conf to setup the control group hierarchy, including setting the permissions (UID and GID) of the groups and possibly tunable parameters of the controllers. This alleviates doing that ourselves at every startup, for instance running a separate shell script. This script is executable by default but anyway won't do anything until /etc/cgconfig.conf be edited (all lines are commented out as shipped)
| cgmanager | off | cgmanager | Starts the cgmanager daemon that provides an alternate way to manage the control group hierarchy through D-Bus requests possibly through the cgm front-end utility.
| cgproxy | off | cgmanager | Starts the cgproxy daemon, that allows programs and users in a container to make cgroup administration requests using DBus calls, sending the user-ids or group-ids as SCM credentials to the cgmanager.
| cgred | on | libcgroups | Starts the cgroups rules engine daemon that automatically distributes to appropriate control groups the processes that changes their effective UID or GID, applying the rules found in /etc/cgrules.conf. This allows to continue apply resources control resources on such processes that could otherwise escape it. This script executable by default but anyway won't do anything until /etc/cgrules.conf be edited (all lines are commented out as shipped)
| consolekit | on | ConsoleKit2 | This daemon is used by polkit's console auth agent, to check privileges of user wanting to reboot or shutdown the system, for instance.
| cpufreq | on | sysvinit-scripts | Settings for CPU frequency and voltage scaling in the kernel.
| cups | on | cups | Startup/shutdown script for the CUPS print server.
| cups-browsed | off | cups-filters | Makes remote printers available locally.
| dnsmask | off | dnsmask | Start/stop/restart dnsmasq (a small DNS/DHCP server)
| espeakup | | espeakup | starts/stop/restart the espeakup console screen reader. On if user requested speech during installation or later typed speak-with espeakup
| fail2ban | off | fail2ban | start/stops fail2ban which scans log files like /var/log/pwdfail and bans IP that makes too many password failures, and also updates firewall ules to reject the IP address.
| font | off | kbd | Sets the console font (used in Console mode, not in Graphical mode)
| fuse | on | fuse | Load the fuse module and mount the fuse control filesystem. FUSE is a simple interface for userspace programs to export a virtual filesystem to the Linux kernel.  FUSE also aims to provide a secure method for non privileged users to create and mount their own filesystem implementations.
| fenrir | off | fenrir | starts/stop/restart the fenrir screen reader, which can be started after installation typing speak-with fenrir.
| font | off | kbd | set up a custom console font
| gpm | on | gpm | The General Purpose Mouse server allows to cut and paste text from the screen on a Linux console.
| httpd | off | https | Starts or stop the Apache web server
| inet1 | on | network-scripts | This script is used to bring up the various network interfaces.
| inet2 | on | network-scripts | This shell script boots up the entire network system.
| inetd | on | inetd | BSD "super-server" daemon. The user needs to edit /etc/inetd.conf for the services to be actually used.
| ip_forward | off | network-scripts | Start/stop IP packet forwarding, needed for your computer to act as a router.
| keymap | on | installer | Loads the keybord map used in Console mode.
| local | off | sysvinit-scripts | starts daemons not started by /etc/rc.d/rc.M at boot time.
| loop | on | sysvinit-scripts | Loads the loop device kernel module.
| lxc | off | lxc | This scripts starts (if configured to be auto-started) and stops lxc containers.
| mcelog | off | mcelog | Starts the mcelog hardware error logging. This logs and handles CPU hardware errors on x86 systems
| messagebus | on | dbus | The D-BUS systemwide message bus. This is a daemon which broadcasts notifications of system events and other messages, providing inter-processes communication.
| modules | on | sysvinit-scripts | Compute the kernel modules dependencies and start other scripts that load modules not automatically loaded by eudev, possibly for specific kernel versions
| modules.local | on | sysvinit-scripts | Load modules not automatically loaded by eudev
| murmur | off | murmur | Starts/stop the murmur voice chat server for mumble
| mysqld | off | mariadb | Starts/stop the MariaDB server. MariaDB is a fork of MySQL fully compatible with it
| networkmanager|  | NetworkManager | This is a daemon for automatically switching network connections to the best available connection. Activated if NetworkManager is chosen to configure the network, during or after installation
| nfsd | off | nfs-utils | Starts/stop an nfs (Network File Server.qq
| ntpd | on | ntp | Starts stop an ntp ( Net'work Time Protocol) daemon.
| numlock|  | salixtools | Activate numlock on the console
| pcmcia | off | pcmciautils | Script to initialize PCMCIA subsystem.
| php-fpm | off | php | Starts the PHP FastCGI Process Manager daemon.
| pulseaudio | off | pulseaudio | Starts pulseaudio system-wide. This is not recommended in Slint.
| rpc | off | rpcbind | Start/stop/restart RPC (remote process communications) daemons needed to use NFS. To run an NFS server, starting these is mandatory.
| samba | off | samba | Start/stop/restart the Samba SMB CIFS file and print server for CIFS clients.  It allows you to make file space or printers on a Samba host available to CIFS clients (such as PCs running Windows).
| saslauthd | off | cyrus-sasl | saslauthd is a daemon process that handles plaintext authentication requests on behalf of the SASL library.  The CMU Cyrus SASL library is mostly used to authenticate to mail servers.
| sendmail | off | sendmail | Start/stop/restart Sendmail MTA (mail transfer agent or mail delivery system).
| serial | off | util-linux | Initializes and sets the serial ports on your system
| setterm | on |util-linux |  Provides the command line for the setterm utility to set the terminal attributes (primarily used for screen blanking and power management).
| smartd | off | smartmontools | Start/stop/restart the smartd daemon, which monitors the status of S.M.A.R.T. compatible hard drives and reports any problems.
| sshd | on | openssh | Start/stop/restart the secure shell server
| snmpd | off | net-snmp |Start/stop the net-snmp SNMP (Simple Network Management Protocol) daemon
| syslog | on | sysklogd | Start/stop/restart the system logging daemons, that logd both kernel and system's messages.
| sysstat | on | systat | Reset the system activity logs, used to compute performance statistics
| speechd-up |  | speechd-up | starts/stop/restart the speechd-up screen reader, which can be started after installation typing speak-with speechd-up.
| sysvinit | on | sysvinit-scripts | This file provides basic compatibility with SystemV style startup scripts found in many binary packages
| swapinzram | on | swapinzram | Configure a swap block device in RAM using zram
| syslog | on | syslogd | Start/stop/restart the system logging daemons.
| sysstat | off | sysstat | Reset the system activity logs.
| timidity | off | TiMidity++ | Start/stop/restart the TiMidity++ ALSA sequencer client. TiMidity++ is a software synthesizer.  It can play MIDI files by converting them into PCM waveform data or other various audio file formats.
| udev | on | eudev | This script initializes udev, which populates the /dev directory with device nodes, scans for devices,
loads the appropriate kernel modules, and configures the devices.
| ulogd | on | ulogd | starts the userspace ulogd daemon for netfilter/iptables related logging.
| vde2 | on | vde2 | Start/stop/restart the VDE switch. VDE is an ethernet compliant virtual network which includes tools such as 'vde_switch' and 'vdeqemu'.
| wireless | on | wireless-tools|This script sets up PCI, USB, and 32-bit Cardbus wireless devices. Normally this script is called from rc.inet1 rather than run directly
| yp | on | yptools | Start NIS (Network Information Services). NIS provides network-wide distribution of hostname, username, and other information databases.
|====

You can start or stop a service using as root the command `service`. To know more type `man service`.

== Glossary

Several definitions in this glossary are taken or adapted from  https://en.wikipedia.org/wiki/Main_Page[Wikipedia] and https://pubs.opengroup.org/onlinepubs/9699919799/[POSIX]

[[application]]Application:: An application program (application for short) is
a computer program designed to carry out a specific task typically requested by
end-users.
+
Applications are not generally considered as part of the operating system, meaning that they can be added to the system after its installation. They
perform non-system-related functions, such as word processing, architectural
design, mechanical design, workstation publishing, or financial analysis.


[[boot]]Boot::
Boot means switch-on a computer to start an operating system. Several operating
systems can be installed in the same computer. Select which one to load into
RAM and run can be done either by the firmware or by a software named boot
manager (GRUB in Slint's case). The firmware of a computer can support one of following booting mode, or both:
+
* In the Legacy or BIOS mode the OS is loaded executing the instructions written in a boot sector.
* In the EFI mode the OS loader is a program stored in an executable file, located in a directory of an EFI System partition (ESP).

[[CPU]]CPU::
The CPU or Central Processing Unit executes the instructions of programs.

[[command]]Command:: Command is defined by https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_104[POSIX] as "a directive to a <<shell,shell>> to perform a specific task".
+
The task to perform can be an <<application,application>> or an <<utility,utility>>.
+
The basic structure of shell commands is defined in the chapter https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09[2.9 Shell Commands] of the POSIX specification.
+
Examples of commands are provided in <<bash shell>>.

[[console]]Console:: The word "console" refers to the beginning of computer
systems, when the system administrator typed commands on a device including a
keyboard and a printer, linked to the computer, the commands typed and the
output from the computer being printed on the console, providing a log of both.
+
In personal computers the user type the commands on keyboard and their output
is printed on a screen, that can be separated from or integrated to the
computer as in a laptop.

[[device]]Device::

A computer peripheral or an object that appears to the application as such.[POSIX]

[[directory]]Directory::
A directory is another name for a folder. File systems use directories to
organize files within partitions.
+
Directories can contain files and also other directories. The resulting
structure can be represented as an upside-down tree. The top-level directory of
a drive is named the root directory.  In Linux the character / separates the
levels of the tree. / alone represents the root directory, /home hosts the files
belonging to users, /home/didier hosts the files belonging to user didier.
/root hosts the files of the user named root (the system's administrator).
Note: 'root' can refer to the top-level directory or the system's administrator.

[[drive]]Drive::
A drive is a device that stores non volatile data, meaning that the data is not
erased when the power is turned off. Examples: hard disks, SSD, USB sticks, SD
cards readers, eMMC.
+
The media storing the data can be permanently attached to the drive or removable
like SD cards, USB sticks and drives connected through USB.
+
An operating system installed in a removable media or an external drive is said
portable: it can be moved from a computer to another one.

[[display_manager]]Display manager::
A display manager (or login manager) is a software that displays a window on the
screen in which it asks the login name and password of the user, then starts
the graphical environment chosen by said user.

[[encryption]]Encryption::
Encryption is the process of converting data to an unrecognizable ("encrypted")
form. It is commonly used to protect sensitive information so that only
authorized persons can view it. A single file or directory, a partition as well
as a whole drive can be encrypted, which make it accessible only after having
typed a small text called a passphrase, kept secret.

[[file]]File::
A computer file is a set of digital data gathered under the same name, recorded on a permanent storage medium, called mass storage, such as a hard disk, a SSD, a DVD, a SD card or an USB stick and handled as a unit.
+
Files can contain data like texts, images, sounds, videos or computers programs.

[[file_system]]File System::
A file system is a software that manages the files and directories in a
partition. It memorizes the location in the physical media of the data
contained in the files, allowing to read or writing them. Examples of commonly
used file systems are vfat, ntfs, ext4, f2fs. This command lists all file
systems allowing to read data contained in a partition from Linux:
+
----
cat /proc/filesystems|grep -v nodev
----

[[firmware]]Firmware::
A firmware is a software that initializes and checks the hardware, then either
selects and load in RAM the operating system, or starts a software called a
boot manager that will do that. The firmware is held in non-volatile memory
devices such as ROM, EPROM, or flash memory. It is the first software run when
booting a computer. It provides a menu allowing to configure the hardware and
select in which mode (Legacy or EFI) to boot, and in which order look for the
operating system or other application (like the GRUB boot manager) to run.

[[kernel]]Kernel::
A Linux kernel is the software at the core of a Slint system which handles the
interactions between the applications and the hardware.
+
It presents itself as a single file, installed in the directory /boot. For instance the file /boot/vmlinuz-generic-5.12.11 is a kernel, coming from kernel-generic package.
+
At startup the kernel is copied into RAM.

[[initrd]]Initrd::
An initrd (more accurately an initramfs or initial RAM file system for Slint) is
a Linux system provided as a compressed archive file. At boot, just after the
kernel has been loaded in RAM the inird is loaded in RAM too. Its file /init
runs: it loads needed kernel modules in RAM, register the devices, possibly
unlock the root device, mount the pseudo file systems then switch to the root
file system to actually start the system.
+
An initrd presents itself as a single file, installed in the directory boot.
For instance the file initrd-generic-5.12.11 is an initrd

[[live_system]]Live system::
A live system is an operating system that, instead of being installed in a device
like an hard disk or SSD, lies entirely in <<RAM>>.
+
An initrd is also a live system, and so is a Slint installer wich is basically an initrd.

[[partition]]Partition::
A partition is a section of a storage media, such as a hard disk or SSD. It is
treated by the operating system as a separate logical volume, which makes it
function similar to a separate media.

[[partition_table]]Partition table::
A partition table is the permanent structure recording how information is laid
out on a media, mainly recording the beginning and end of each partition on
the media.
+
The most common types of partition tables are the DOS partition table, initially
used by the MS-DOS operating system, and the GUID Partition Table or GPT, which
allows to handle more partitions and larger drives.

[[program]]Program::
A prepared sequence of instructions to the system to accomplish a defined task. The term "program" encompasses applications written in the Shell Command Language, complex utility input languages (for example, awk, lex, sed, and so on), and high-level languages. [POSIX]

[[RAM]]RAM::
RAM stands for Random Access Memory. This kind of device stores volatile data,
meaning that the data is erased when the power is turned off.

[[shell]]Shell:: A program that interprets sequences of text input as commands. It may operate on an input stream or it may interactively prompt and read commands from a terminal. The syntax of the commands
that can be interpretd by the shell can vary along the shell in use but are mainly defined in the the chapter
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html[2.
Shell Command Language] of the POSIX specification.
+
Slint ships several programs acting as shell, listed in the file /etc/shells. The *bash* shell is used by default.

[[swap]]Swap::
A swap space is used to tentatively store data previously in RAM on a device
like a hard disk or SSD, either because else the RAM would become full, or to
free space in RAM to store there most frequently used data. The swap space can
be a partition on a drive of type 'Linux swap' or a regular file stored in an
an existing partition. There is also the 'swap in zram': in this case the data
is stored in RAM but in compressed form, to its usable size of the RAM.

[[terminal]]Terminal::
Historically a terminal was a physical device composed of a keyboard and a screen
used to type commands and receives responses from a remote computer.
+
Nowadays the commands can be typed in console (or text) mode or in graphical
mode.

[[utility]]Utility::
An utility is a program that can be called by name from a shell (this is also the case of some <application,applications>>).
+
Utilities are a part of the operating system (but not of the kernel).
They perform system-related functions, such as listing directory contents,
checking file systems, repairing file systems, or
extracting system status information.
+
An utility may be invoked as a separate program that executes in a different
process than the command language interpreter, or it may be implemented as a
part of the command language interpreter.
+
For example, the echo command (the
directive to perform a specific task) may be implemented such that the echo
utility (the logic that performs the task of echoing) is in a separate program;
therefore, it is executed in a process that is different from the command
language interpreter. Practically this means this means that in this case the utility is a program distinct from the shell
+
Conversely, the logic that performs the echo utility
could be built into the command language interpreter; therefore, it could
execute in the same process as the command language interpreter. Such an utility is said "built-in" the shell.

[[virtual_terminal]]Virtual terminal::
A virtual terminal is a software that simulates a physical terminal, device
composed of a keyboard and a screen allowing to communicate remotely with a
computer.
