sway: add initial configuration guide
This commit is contained in:
parent
46c46d09af
commit
642fdebf8c
1 changed files with 159 additions and 0 deletions
159
doc/configuration.adoc
Normal file
159
doc/configuration.adoc
Normal file
|
|
@ -0,0 +1,159 @@
|
||||||
|
= Configuration guide
|
||||||
|
Fedora Sway SIG <sway@lists.fedoraproject.org>
|
||||||
|
:source-highlighter: rouge
|
||||||
|
:sway-package: https://packages.fedoraproject.org/pkgs/sway/
|
||||||
|
:config-package: https://packages.fedoraproject.org/pkgs/sway-config-fedora/
|
||||||
|
:toc:
|
||||||
|
|
||||||
|
An overview of the custom Sway configuration shipped in Fedora.
|
||||||
|
|
||||||
|
== Configuration profiles
|
||||||
|
|
||||||
|
The Sway package in Fedora defers most of the dependencies and the config file
|
||||||
|
ownership to the `+sway-config-*+` subpackages.
|
||||||
|
This allows us to ship different configuration profiles with different sets of
|
||||||
|
runtime dependencies.
|
||||||
|
This also allows anyone to create a package with their preferred system-wide
|
||||||
|
configuration defaults and use it instead of the default Fedora profiles.
|
||||||
|
|
||||||
|
The following profiles are currently defined in the {sway-package}[`sway`]
|
||||||
|
source package:
|
||||||
|
|
||||||
|
* **sway-config-minimal** - minimal configuration with any optional
|
||||||
|
dependencies omitted.
|
||||||
|
Suitable for headless servers, containers and buildroot usage.
|
||||||
|
Also suitable for building a very minimal installation from scratch.
|
||||||
|
|
||||||
|
* **sway-config-upstream** - the upstream configuration.
|
||||||
|
The only permitted modifications to the config file are adjustments for
|
||||||
|
dependencies currently unavailable in Fedora.
|
||||||
|
|
||||||
|
The profiles defined in the {config-package}[`sway-config-fedora`] source
|
||||||
|
package:
|
||||||
|
|
||||||
|
* **sway-config-fedora** - customized configuration for Fedora Sway Spin.
|
||||||
|
|
||||||
|
The config packages are mutually exclusive, and one of these will always be
|
||||||
|
installed.
|
||||||
|
The one selected by default is **sway-config-upstream** and the one that will
|
||||||
|
be installed with Sway Spin/Sway Desktop Environment group is
|
||||||
|
**sway-config-fedora**.
|
||||||
|
|
||||||
|
At any moment, you can switch the installed configuration with one of the
|
||||||
|
following commands:
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
dnf swap sway-config sway-config-upstream
|
||||||
|
dnf swap sway-config sway-config-minimal
|
||||||
|
dnf swap sway-config sway-config-fedora
|
||||||
|
----
|
||||||
|
|
||||||
|
The command will replace the default `+/etc/sway/config+` file and apply the new
|
||||||
|
set of dependencies.
|
||||||
|
Packages unused by the new profile will be autoremoved.
|
||||||
|
|
||||||
|
NOTE: The command will be different for OSTree-based installations, such as Sericea.
|
||||||
|
|
||||||
|
== Fedora configuration
|
||||||
|
|
||||||
|
**sway-config-fedora** contains the default configuration for Fedora Sway Spin.
|
||||||
|
It is built on top of the default Sway config with a few quality of life
|
||||||
|
improvements and opinionated changes.
|
||||||
|
|
||||||
|
Most of the additions are implemented as a standalone configuration snippets
|
||||||
|
stored at `+/usr/share/sway/config.d/+` and automatically loaded from the main
|
||||||
|
configuration file.
|
||||||
|
|
||||||
|
=== Sections
|
||||||
|
|
||||||
|
The configuration snippets we provide are grouped into the following sections:
|
||||||
|
|
||||||
|
50-59 (`+50-rules-*.conf+`)::
|
||||||
|
Window rules (`+for_window+`, `+assign+` and related configuration).
|
||||||
|
|
||||||
|
60-69 (`+60-bindings-*.conf+`, `+65-mode-*.conf+`)::
|
||||||
|
Key bindings and binding modes
|
||||||
|
|
||||||
|
90-94 (`+90-*.conf+`)::
|
||||||
|
System applications: bars, idle daemons and other components.
|
||||||
|
|
||||||
|
95-99 (`+95-*.conf+`)::
|
||||||
|
Autostart applications
|
||||||
|
|
||||||
|
=== Overrides and load precedence
|
||||||
|
|
||||||
|
Fedora configuration uses the implementation details of the Sway config loading
|
||||||
|
(https://man7.org/linux/man-pages/man3/wordexp.3p.html[`wordexp(3p)`]) to
|
||||||
|
implement a configuration overrides mechanism for the snippets.
|
||||||
|
|
||||||
|
The priority increases from the packaged configuration to a system-wide
|
||||||
|
configuration and an user configuration directories:
|
||||||
|
|
||||||
|
* `+/usr/share/sway/config.d/*.conf+`
|
||||||
|
* `+/etc/sway/config.d/*.conf+`
|
||||||
|
* `+${XDG_CONFIG_HOME:-$HOME/.config}/sway/config.d/*.conf+`
|
||||||
|
(defaults to `+~/.config/sway/config.d/*.conf+`)
|
||||||
|
|
||||||
|
The includes are also sorted by a file name across all the directories.
|
||||||
|
|
||||||
|
By creating a file with the same name in `+/etc/sway/config.d+` you'll force
|
||||||
|
Sway to ignore the corresponding snippet from `+/usr+` and load the one from
|
||||||
|
`+/etc+`.
|
||||||
|
Similarly, the configuration snippet from a home directory wins over the earlier
|
||||||
|
locations.
|
||||||
|
|
||||||
|
To put it even more simple: imagine the distribution configuration file
|
||||||
|
`+/usr/share/sway/config.d/90-bar.conf+` that sets waybar as a status bar.
|
||||||
|
If you want to prevent waybar from starting, you could create an empty file
|
||||||
|
in your home directory:
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
mkdir -p ~/.config/sway/config.d
|
||||||
|
touch ~/.config/sway/config.d/90-bar.conf
|
||||||
|
----
|
||||||
|
|
||||||
|
If you want to set another bar, you just need to add some contents to the file.
|
||||||
|
For example, copy the default bar section from the upstream Sway config:
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
mkdir -p ~/.config/sway/config.d
|
||||||
|
cat >~/.config/sway/config.d/90-bar.conf <<EOF
|
||||||
|
# Read `man 5 sway-bar` for more information about this section.
|
||||||
|
bar {
|
||||||
|
position top
|
||||||
|
|
||||||
|
# When the status_command prints a new line to stdout, swaybar updates.
|
||||||
|
# The default just shows the current date and time.
|
||||||
|
status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
|
||||||
|
|
||||||
|
colors {
|
||||||
|
statusline #ffffff
|
||||||
|
background #323232
|
||||||
|
inactive_workspace #32323200 #32323200 #5c5c5c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
----
|
||||||
|
|
||||||
|
=== Debugging the configuration
|
||||||
|
|
||||||
|
Sometimes it's useful to know how the configuration loaded by Sway actually looks.
|
||||||
|
There are two ways to debug that:
|
||||||
|
|
||||||
|
* Run sway config validation:
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
sway --debug --validate [--config /path/to/config]
|
||||||
|
----
|
||||||
|
|
||||||
|
* Check intermediate files generated by the layered include script
|
||||||
|
|
||||||
|
[source,shell]
|
||||||
|
----
|
||||||
|
less $XDG_RUNTIME_DIR/sway/layered-include-*.conf
|
||||||
|
----
|
||||||
|
|
||||||
|
TIP: The command referenced may display more than one file. Use `+:n+`/`+:p+` to switch between files in `+less+`
|
||||||
Loading…
Add table
Add a link
Reference in a new issue