<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Quill</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Quill"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Quill"/>
	<updated>2026-05-01T17:51:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Proton_VPN&amp;diff=26713</id>
		<title>Proton VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Proton_VPN&amp;diff=26713"/>
		<updated>2024-05-13T02:43:44Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a troubleshooting with solution for error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proton VPN is an open-source VPN service by the non-profit Swiss company Proton AG. It utilizes the OpenVPN protocol. Because Alpine Linux does not currently have a release for Proton VPN, using it requires connecting via either OpenVPN or Wireguard. Using Wireguard is recommended due to Proton AG&#039;s own stated preference for the service as well as Wireguard&#039;s lighter and more modern build. Setting up for Wireguard is relatively simpler because NetworkManager has native support for it, requiring fewer installations and setups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|wireguard-tools}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
Login to Proton VPN and download the Wireguard config file. More information on this can be found at [https://protonvpn.com/support/wireguard-configurations/ Proton VPN&#039;s support page]. Note that the private key will only be available from the site if you download immediately after making the config file, after which the private key is replaced with asterisks. Rename the file &amp;quot;wg0.conf&amp;quot; and move it somewhere safe in your file system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
&lt;br /&gt;
To connect, run the following command. Substitute path_to_file with the full path to wherever you moved the config file.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# wg-quick up /path_to_file/wg0.conf}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable Wireguard connecting to Proton VPN on boot, open your /etc/network/interfaces using a text editor like nano. Add this information after your other interface sections:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto wg0&lt;br /&gt;
iface wg0 inet static&lt;br /&gt;
pre-up wg-quick up /path_to_file/wg0.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, substitute path_to_file with your own relevant information.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If trying to turn the VPN on fails and you see the following error:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/wg-quick: line 32: iptables-restore: command not found&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You need to manually install iptables (apk add iptables) so wg-quick can use the command &#039;iptables-restore&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:VPN]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Steam&amp;diff=26535</id>
		<title>Steam</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Steam&amp;diff=26535"/>
		<updated>2024-02-29T21:41:56Z</updated>

		<summary type="html">&lt;p&gt;Quill: /* Steam hangs on start with a steamwebhelper popup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://store.steampowered.com/about/ Steam] is a popular game distribution platform by Valve.&lt;br /&gt;
&lt;br /&gt;
{{Note|Steam for Linux only supports Ubuntu LTS. Thus, do not turn to Valve for support for issues with Steam on Alpine Linux.}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Steam requires glibc to run, and thus doesn&#039;t straight up run on Alpine Linux.&lt;br /&gt;
To work around this problem, we&#039;ll use [https://wiki.alpinelinux.org/wiki/Flatpak Flatpak].&lt;br /&gt;
Make sure you have the Flathub repository installed.&lt;br /&gt;
&lt;br /&gt;
{{Note| commands prefixed with # are run as root, commands prefixed with $ are run as a regular user}}&lt;br /&gt;
&lt;br /&gt;
  # apk add {{pkg|flatpak|arch=x86_64}}&lt;br /&gt;
  $ flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo&lt;br /&gt;
  $ flatpak --user install com.valvesoftware.Steam&lt;br /&gt;
&lt;br /&gt;
After installation Steam can be started using it&#039;s .desktop file or on the command line:&lt;br /&gt;
&lt;br /&gt;
  $ flatpak run com.valvesoftware.Steam&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== My controllers aren&#039;t detected ===&lt;br /&gt;
&lt;br /&gt;
By default Steam doesn&#039;t have permission to read your controllers.&lt;br /&gt;
This can be fixed by installing an [[udev]] rule from the official Steam package, but the udev rules are also available as an Alpine package.&lt;br /&gt;
&lt;br /&gt;
  # apk add {{pkg|steam-devices|arch=x86_64}}&lt;br /&gt;
&lt;br /&gt;
=== SteamVR won&#039;t launch ===&lt;br /&gt;
&lt;br /&gt;
Out of the box SteamVR might not be able to launch and give you various errors. Steam tries to fix this itself by setting the right capabilities on the SteamVR binary, but this doesn&#039;t work in the Flatpak. Instead we&#039;ll have do it manually.&lt;br /&gt;
&lt;br /&gt;
  # setcap CAP_SYS_NICE+ep ~/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher&lt;br /&gt;
&lt;br /&gt;
Then restart Steam.&lt;br /&gt;
&lt;br /&gt;
There is an issue for this [https://github.com/flathub/com.valvesoftware.Steam/issues/636#issuecomment-779763326 on the Flathub repository].&lt;br /&gt;
&lt;br /&gt;
=== Steam - Error: OpenGL GLX extension not supported by display ===&lt;br /&gt;
&lt;br /&gt;
Add the Mesa gallium driver and reboot your system.&lt;br /&gt;
&lt;br /&gt;
 # apk add {{pkg|mesa-dri-gallium|arch=x86_64}}&lt;br /&gt;
&lt;br /&gt;
=== eventfd: Too many open files ===&lt;br /&gt;
&lt;br /&gt;
Due to a low amount of allowed open file descriptors, Proton games may crash shortly after launching. This can be worked around by disabling esync but many games will perform measurably worse without it. Instead, user limits should be increased. In order to do this, you will need [[PAM]] and a PAM enabled login.&lt;br /&gt;
&lt;br /&gt;
Add the following to &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
 @users hard nofile 524288&lt;br /&gt;
&lt;br /&gt;
{{Note|Although you should already belong to the users group, you can run &amp;lt;code&amp;gt;groups&amp;lt;/code&amp;gt; to check.}}&lt;br /&gt;
&lt;br /&gt;
Reboot and run &amp;lt;code&amp;gt;ulimit -Hn&amp;lt;/code&amp;gt; to verify the new limits are applied.&lt;br /&gt;
&lt;br /&gt;
=== dbus-launch: no such file or directory ===&lt;br /&gt;
&lt;br /&gt;
Set up [[D-Bus|dbus]] for your session.&lt;br /&gt;
&lt;br /&gt;
=== Steam games launched via Proton crash before creating a window ===&lt;br /&gt;
&lt;br /&gt;
Instead of just using the in-Steam menu to install and select a Proton version, try installing the flatpak community build for Proton onto your system. There are several versions, depending on your desired stability, and the experimental version available in Flathub is called &amp;quot;com.valvesoftware.Steam.CompatibilityTool.Proton-Exp&amp;quot;. After you install your chosen version, go into Steam to specify compatibility tool for a game as usual. The installed community build will now be an option. Select that and try launching the game again.&lt;br /&gt;
&lt;br /&gt;
As your last resort, you can try installing [https://github.com/GloriousEggroll/proton-ge-custom proton-ge-custom], but please note that in order for this to be even detected by Steam, you will need to install Steam via Nix due to high level of isolation that Flatpaks utilize. This can however come at the expense of your [https://tosdr.org/en/service/180 privacy].&lt;br /&gt;
&lt;br /&gt;
=== Steam spams dmesg with x86/split lock detection entries ===&lt;br /&gt;
&lt;br /&gt;
Add the below line to {{path|/etc/sysctl.conf}}:&lt;br /&gt;
  kernel.split_lock_mitigate = 0&lt;br /&gt;
&lt;br /&gt;
=== Steam hangs on start with a steamwebhelper popup ===&lt;br /&gt;
&lt;br /&gt;
If this happens and your &amp;lt;pre&amp;gt;cat ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/logs/steamwebhelper.log&amp;lt;/pre&amp;gt; says that you are missing X server or $Display, it means your DISPLAY is not present in the activation environment. For more information please see https://github.com/ValveSoftware/steam-for-linux/issues/10554 &lt;br /&gt;
&lt;br /&gt;
Sway: go into your sway config file and add DISPLAY to the following line, then restart:&lt;br /&gt;
&amp;lt;pre&amp;gt;exec dbus-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway&amp;lt;/pre&amp;gt;&lt;br /&gt;
For more information about this line, please see the Alpine Wiki&#039;s entry on Sway&lt;br /&gt;
&lt;br /&gt;
Hyprland: add an exec-once to the configuration file at ~/.config/hypr/hyprland to set DISPLAY. Similarly to Sway you may already have a line that sets other variables. If so, add DISPLAY to the line. The line should look similar to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exec-once = dbus-update-activation-environment DISPLAY&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Steam&amp;diff=26534</id>
		<title>Steam</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Steam&amp;diff=26534"/>
		<updated>2024-02-29T21:41:44Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a troubleshoot for Steam to address the steamwebhelper hang&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://store.steampowered.com/about/ Steam] is a popular game distribution platform by Valve.&lt;br /&gt;
&lt;br /&gt;
{{Note|Steam for Linux only supports Ubuntu LTS. Thus, do not turn to Valve for support for issues with Steam on Alpine Linux.}}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Steam requires glibc to run, and thus doesn&#039;t straight up run on Alpine Linux.&lt;br /&gt;
To work around this problem, we&#039;ll use [https://wiki.alpinelinux.org/wiki/Flatpak Flatpak].&lt;br /&gt;
Make sure you have the Flathub repository installed.&lt;br /&gt;
&lt;br /&gt;
{{Note| commands prefixed with # are run as root, commands prefixed with $ are run as a regular user}}&lt;br /&gt;
&lt;br /&gt;
  # apk add {{pkg|flatpak|arch=x86_64}}&lt;br /&gt;
  $ flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo&lt;br /&gt;
  $ flatpak --user install com.valvesoftware.Steam&lt;br /&gt;
&lt;br /&gt;
After installation Steam can be started using it&#039;s .desktop file or on the command line:&lt;br /&gt;
&lt;br /&gt;
  $ flatpak run com.valvesoftware.Steam&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== My controllers aren&#039;t detected ===&lt;br /&gt;
&lt;br /&gt;
By default Steam doesn&#039;t have permission to read your controllers.&lt;br /&gt;
This can be fixed by installing an [[udev]] rule from the official Steam package, but the udev rules are also available as an Alpine package.&lt;br /&gt;
&lt;br /&gt;
  # apk add {{pkg|steam-devices|arch=x86_64}}&lt;br /&gt;
&lt;br /&gt;
=== SteamVR won&#039;t launch ===&lt;br /&gt;
&lt;br /&gt;
Out of the box SteamVR might not be able to launch and give you various errors. Steam tries to fix this itself by setting the right capabilities on the SteamVR binary, but this doesn&#039;t work in the Flatpak. Instead we&#039;ll have do it manually.&lt;br /&gt;
&lt;br /&gt;
  # setcap CAP_SYS_NICE+ep ~/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher&lt;br /&gt;
&lt;br /&gt;
Then restart Steam.&lt;br /&gt;
&lt;br /&gt;
There is an issue for this [https://github.com/flathub/com.valvesoftware.Steam/issues/636#issuecomment-779763326 on the Flathub repository].&lt;br /&gt;
&lt;br /&gt;
=== Steam - Error: OpenGL GLX extension not supported by display ===&lt;br /&gt;
&lt;br /&gt;
Add the Mesa gallium driver and reboot your system.&lt;br /&gt;
&lt;br /&gt;
 # apk add {{pkg|mesa-dri-gallium|arch=x86_64}}&lt;br /&gt;
&lt;br /&gt;
=== eventfd: Too many open files ===&lt;br /&gt;
&lt;br /&gt;
Due to a low amount of allowed open file descriptors, Proton games may crash shortly after launching. This can be worked around by disabling esync but many games will perform measurably worse without it. Instead, user limits should be increased. In order to do this, you will need [[PAM]] and a PAM enabled login.&lt;br /&gt;
&lt;br /&gt;
Add the following to &amp;lt;code&amp;gt;/etc/security/limits.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
 @users hard nofile 524288&lt;br /&gt;
&lt;br /&gt;
{{Note|Although you should already belong to the users group, you can run &amp;lt;code&amp;gt;groups&amp;lt;/code&amp;gt; to check.}}&lt;br /&gt;
&lt;br /&gt;
Reboot and run &amp;lt;code&amp;gt;ulimit -Hn&amp;lt;/code&amp;gt; to verify the new limits are applied.&lt;br /&gt;
&lt;br /&gt;
=== dbus-launch: no such file or directory ===&lt;br /&gt;
&lt;br /&gt;
Set up [[D-Bus|dbus]] for your session.&lt;br /&gt;
&lt;br /&gt;
=== Steam games launched via Proton crash before creating a window ===&lt;br /&gt;
&lt;br /&gt;
Instead of just using the in-Steam menu to install and select a Proton version, try installing the flatpak community build for Proton onto your system. There are several versions, depending on your desired stability, and the experimental version available in Flathub is called &amp;quot;com.valvesoftware.Steam.CompatibilityTool.Proton-Exp&amp;quot;. After you install your chosen version, go into Steam to specify compatibility tool for a game as usual. The installed community build will now be an option. Select that and try launching the game again.&lt;br /&gt;
&lt;br /&gt;
As your last resort, you can try installing [https://github.com/GloriousEggroll/proton-ge-custom proton-ge-custom], but please note that in order for this to be even detected by Steam, you will need to install Steam via Nix due to high level of isolation that Flatpaks utilize. This can however come at the expense of your [https://tosdr.org/en/service/180 privacy].&lt;br /&gt;
&lt;br /&gt;
=== Steam spams dmesg with x86/split lock detection entries ===&lt;br /&gt;
&lt;br /&gt;
Add the below line to {{path|/etc/sysctl.conf}}:&lt;br /&gt;
  kernel.split_lock_mitigate = 0&lt;br /&gt;
&lt;br /&gt;
=== Steam hangs on start with a steamwebhelper popup ===&lt;br /&gt;
&lt;br /&gt;
If this happens and your &amp;lt;pre&amp;gt;cat ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/logs/steamwebhelper.lo&amp;lt;/pre&amp;gt; says that you are missing X server or $Display, it means your DISPLAY is not present in the activation environment. For more information please see https://github.com/ValveSoftware/steam-for-linux/issues/10554 &lt;br /&gt;
&lt;br /&gt;
Sway: go into your sway config file and add DISPLAY to the following line, then restart:&lt;br /&gt;
&amp;lt;pre&amp;gt;exec dbus-activation-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway&amp;lt;/pre&amp;gt;&lt;br /&gt;
For more information about this line, please see the Alpine Wiki&#039;s entry on Sway&lt;br /&gt;
&lt;br /&gt;
Hyprland: add an exec-once to the configuration file at ~/.config/hypr/hyprland to set DISPLAY. Similarly to Sway you may already have a line that sets other variables. If so, add DISPLAY to the line. The line should look similar to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;exec-once = dbus-update-activation-environment DISPLAY&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=26506</id>
		<title>Flatpak</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Flatpak&amp;diff=26506"/>
		<updated>2024-02-26T22:19:21Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a flatpak troubleshooting for an error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributions, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap], &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup / Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Runtime dependencies ===&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|dbus}}&lt;br /&gt;
* {{Pkg|polkit}}&lt;br /&gt;
* {{Pkg|xdg-desktop-portal}}&lt;br /&gt;
* an implementation of &amp;lt;code&amp;gt;xdg-desktop-portal&amp;lt;/code&amp;gt;, e.g. {{Pkg|xdg-desktop-portal-gtk}}&lt;br /&gt;
&lt;br /&gt;
{{Note|If you are running a window manager from {{Path|.xinitrc}}, make sure you are running a &amp;lt;code&amp;gt;dbus&amp;lt;/code&amp;gt; session explicitly, i.e.:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# exec dbus-launch --exit-with-session your_favourite_wm}}}}&lt;br /&gt;
&lt;br /&gt;
=== Installing Flatpak Itself ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;From: https://flatpak.org/setup/Alpine/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|To install Flatpak you will need to enable the  Community repository, See: [[Repositories#Managing_repositories|Repositories - Managing repositories]]}}&lt;br /&gt;
&lt;br /&gt;
To install Flatpak run:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{Pkg|flatpak}}}}&lt;br /&gt;
&lt;br /&gt;
Next you need to add a repository, for this guide we will use the recommended repository, [https://flathub.org Flathub].&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}&lt;br /&gt;
&lt;br /&gt;
Flatpak is now ready to use immediately, however flatpak desktop entries will not appear until you restart your desktop session (i.e. by logging out and then logging back in)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
To get all of the available options to use with the &#039;&#039;&#039;flatpak&#039;&#039;&#039; command run: &#039;&#039;&#039;flatpak --help&#039;&#039;&#039; or &#039;&#039;&#039;flatpak -h&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Search ===&lt;br /&gt;
&lt;br /&gt;
To search for applications run &#039;&#039;&#039;flatpak --user search &amp;lt;appplicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak --user search chromium&lt;br /&gt;
&lt;br /&gt;
Name                   Description                                                        Application ID                        Version       Branch  Remotes&lt;br /&gt;
Chromium Web Browser   The web browser from Chromium project                              org.chromium.Chromium                 96.0.4664.93  stable  flathub&lt;br /&gt;
Chromium B.S.U.        Fast paced, arcade-style, top-scrolling space shooter              net.sourceforge.chromium-bsu          0.9.16.1      stable  flathub&lt;br /&gt;
ungoogled-chromium     A lightweight approach to removing Google web service dependency   com.github.Eloston.UngoogledChromium  96.0.4664.45  stable  flathub&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install ===&lt;br /&gt;
&lt;br /&gt;
To install a package run &#039;&#039;&#039;flatpak --user install &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak --user install com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
&lt;br /&gt;
com.github.Eloston.UngoogledChromium permissions:&lt;br /&gt;
    ipc             network                 cups                   pulseaudio               wayland                       x11&lt;br /&gt;
    devices         file access [1]         dbus access [2]        bus ownership [3]        system dbus access [4]&lt;br /&gt;
&lt;br /&gt;
    [1] /run/.heim_org.h5l.kcm-socket, home, xdg-run/pipewire-0&lt;br /&gt;
    [2] org.freedesktop.FileManager1, org.freedesktop.Notifications, org.freedesktop.secrets, org.gnome.SessionManager&lt;br /&gt;
    [3] org.mpris.MediaPlayer2.chromium.*&lt;br /&gt;
    [4] org.freedesktop.Avahi, org.freedesktop.UPower&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ID                                                      Branch             Op            Remote             Download&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium.Codecs             stable             i             flathub              &amp;lt; 1.1 MB&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Locale             stable             i             flathub            &amp;lt; 112.8 kB&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium                    stable             i             flathub            &amp;lt; 119.0 MB&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or if you don&#039;t know or don&#039;t want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak --user install chromium&lt;br /&gt;
&lt;br /&gt;
Looking for matches…&lt;br /&gt;
Similar refs found for ‘chromium’ in remote ‘flathub’ (system):&lt;br /&gt;
&lt;br /&gt;
   1) app/net.sourceforge.chromium-bsu/x86_64/stable&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable&lt;br /&gt;
   3) runtime/org.chromium.Chromium.Codecs/x86_64/stable&lt;br /&gt;
   4) app/org.chromium.Chromium/x86_64/stable&lt;br /&gt;
   5) app/com.github.Eloston.UngoogledChromium/x86_64/stable&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-5]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remove ===&lt;br /&gt;
&lt;br /&gt;
To remove a package run: &#039;&#039;&#039;flatpak --user remove &amp;lt;applicationname&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak --user remove com.github.Eloston.UngoogledChromium&lt;br /&gt;
&lt;br /&gt;
        ID                                                     Branch           Op&lt;br /&gt;
 1.     com.github.Eloston.UngoogledChromium                   stable           r&lt;br /&gt;
 2.     com.github.Eloston.UngoogledChromium.Codecs            stable           r&lt;br /&gt;
 3.     com.github.Eloston.UngoogledChromium.Locale            stable           r&lt;br /&gt;
&lt;br /&gt;
Proceed with these changes to the system installation? [Y/n]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
or if you don&#039;t know or don&#039;t want to type the exact package name:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;~&amp;lt;/span&amp;gt;&#039;&#039;&#039;$&#039;&#039;&#039; flatpak --user remove chromium&lt;br /&gt;
&lt;br /&gt;
Similar installed refs found for ‘chromium’:&lt;br /&gt;
&lt;br /&gt;
   1) app/com.github.Eloston.UngoogledChromium/x86_64/stable (system)&lt;br /&gt;
   2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable (system)&lt;br /&gt;
   3) All of the above&lt;br /&gt;
&lt;br /&gt;
Which do you want to use (0 to abort)? [0-3]:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
&lt;br /&gt;
* [https://docs.flatpak.org/en/latest/available-runtimes.html Flatpak - available runtimes]&lt;br /&gt;
&lt;br /&gt;
These are all hosted on [https://flathub.org/ Flathub.org].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}&lt;br /&gt;
&lt;br /&gt;
=== Permission errors ===&lt;br /&gt;
&lt;br /&gt;
If you receive errors about permissions then you may need to add your user to the &#039;&#039;&#039;flatpak&#039;&#039;&#039; group.&lt;br /&gt;
&lt;br /&gt;
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing audio issues ===&lt;br /&gt;
&lt;br /&gt;
If you have a minimal setup and don&#039;t have access to audio devices you will need to set the XDG_RUNTIME_DIR variable. Save the following script in {{Path|/etc/profile.d/xdg_runtime_dir.sh}} and re-login to have it set up properly.&lt;br /&gt;
&lt;br /&gt;
 if test -z &amp;quot;${XDG_RUNTIME_DIR}&amp;quot;; then&lt;br /&gt;
   export XDG_RUNTIME_DIR=/tmp/$(id -u)&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
When you launch a Flatpak you will need to start pulseaudio as well:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ pulseaudio --start &amp;amp;&amp;amp; flatpak run com.example.Example}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Unable to upload files ===&lt;br /&gt;
&lt;br /&gt;
If you are unable to upload files from the host, this maybe due to [https://docs.flatpak.org/en/latest/sandbox-permissions.html Flatpak sandbox] and you may have to manually add the authorization.&lt;br /&gt;
&lt;br /&gt;
This can be done with the following commands:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;$ flatpak override ApplicationID --filesystem=/home/user/Downloads&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Where &#039;&#039;ApplicationID&#039;&#039; is given by:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|$ flatpak list}}&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;$ flatpak override org.signal.Signal --filesystem=/home/user/Downloads&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Error while opening repository ===&lt;br /&gt;
&lt;br /&gt;
There is a current issue where sometimes flatpak will try to read the system-wide repository even if your install is with --user. This will result in failure to launch a flatpak application with the terminal reading &amp;quot;&amp;quot;error: While opening repository /var/lib/flatpak/repo: opening repo: opendir(/var/lib/flatpak/repo): No such file or directory&amp;quot;. An alpine user has posted more information, as well as a workaround, at https://github.com/flatpak/flatpak/issues/5488&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [https://flatpak.org/ Flatpak]&lt;br /&gt;
* [https://flathub.org/ Flathub]&lt;br /&gt;
* [https://winepak.github.io/ Winepak]&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]]&lt;br /&gt;
[[Category: Desktop]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Tmux&amp;diff=23108</id>
		<title>Tmux</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Tmux&amp;diff=23108"/>
		<updated>2023-04-08T15:20:39Z</updated>

		<summary type="html">&lt;p&gt;Quill: removed the troubleshooting section I added as I have found gpm introduces more issues regarding compatibility with tmux within tty and do not want to lead users astray&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{pkg|tmux}} is a terminal multiplexer. It&#039;s a good tool for e.g. remote support. It can also be used to start a command you want to keep running after you close your console session (you can later on attach to your running session).&lt;br /&gt;
&lt;br /&gt;
= Install =&lt;br /&gt;
In order to use {{pkg|tmux}} you will have to install it:&lt;br /&gt;
{{cmd|apk add tmux}}&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Start a new session ==&lt;br /&gt;
To create a {{pkg|tmux}} session you just enter:&lt;br /&gt;
{{cmd|tmux}}&lt;br /&gt;
&lt;br /&gt;
== List existing sessions ==&lt;br /&gt;
When you have started some session(s) you can list them:&lt;br /&gt;
{{cmd|tmux ls}}&lt;br /&gt;
{{tip|Above command can also be run as &amp;lt;code&amp;gt;tmux list-sessions&amp;lt;/code&amp;gt;}}&lt;br /&gt;
You might get a list that looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0: 1 windows (created Wed Oct 24 15:12:12 2012) [126x35]&lt;br /&gt;
1: 1 windows (created Wed Oct 24 15:14:44 2012) [126x35]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attach to a existing session ==&lt;br /&gt;
Lets say you want to attach to a existing session (e.g. the above &amp;lt;code&amp;gt;1: 1 windows&amp;lt;/code&amp;gt; session).&lt;br /&gt;
{{cmd|tmux attach -t 1}}&lt;br /&gt;
{{tip|If you only have one session you don&#039;t need to specify session. Just run &amp;lt;code&amp;gt;tmux attach&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Controlling a session ==&lt;br /&gt;
While inside a {{pkg|tmux}} session, you can control it using keyboard shortcuts. We will only describe some of those alternatives.&lt;br /&gt;
&lt;br /&gt;
{{tip|To enter a keyboard shortcut that controls the current {{pkg|tmux}} session, you should click {{key|B}} while holding down {{key|CTRL}}&amp;lt;br&amp;gt;In the below examples this procedure is described as &amp;lt;code&amp;gt;C-b&amp;lt;/code&amp;gt;}}&lt;br /&gt;
=== Get help ===&lt;br /&gt;
One of the most useful commands is the one that gives you &#039;help&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
While in your {{pkg|tmux}} session, click:&lt;br /&gt;
{{cmd|C-b ?}}&lt;br /&gt;
&#039;&#039;(Do not press/hold {{key|CTRL}} when clicking {{key|?}})&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Detach from a session ===&lt;br /&gt;
Sometimes it&#039;s useful to just detach from a session without killing it.&amp;lt;br&amp;gt;&lt;br /&gt;
{{cmd|C-b d}}&lt;br /&gt;
{{tip|Try starting &amp;lt;code&amp;gt;ping 127.0.0.1&amp;lt;/code&amp;gt; while inside a session and then detach from the session.&amp;lt;br&amp;gt;After some while re-connect to the session using &amp;lt;code&amp;gt;tmux attach&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;Note that the &amp;quot;seq&amp;quot; value indicates that ping had continued running while you where detached from the session.}}&lt;br /&gt;
&lt;br /&gt;
=== Close or kill a session ===&lt;br /&gt;
To &#039;kill&#039; a session:&lt;br /&gt;
{{cmd|C-b &amp;amp;}}&lt;br /&gt;
Confirm by clicking {{key|y}} when prompted.&lt;br /&gt;
&lt;br /&gt;
You can also &#039;kill&#039; your session by entering:&lt;br /&gt;
{{cmd|exit}}&lt;br /&gt;
&lt;br /&gt;
= Other terminal multiplexers =&lt;br /&gt;
A similar tool is {{pkg|screen}} which is documented [[Screen_on_console|here]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Shell]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Tmux&amp;diff=23107</id>
		<title>Tmux</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Tmux&amp;diff=23107"/>
		<updated>2023-04-08T14:27:13Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a troubleshooting section that included information on extra steps I had to take for mouse support in a TTY -Quillith&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{pkg|tmux}} is a terminal multiplexer. It&#039;s a good tool for e.g. remote support. It can also be used to start a command you want to keep running after you close your console session (you can later on attach to your running session).&lt;br /&gt;
&lt;br /&gt;
= Install =&lt;br /&gt;
In order to use {{pkg|tmux}} you will have to install it:&lt;br /&gt;
{{cmd|apk add tmux}}&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Start a new session ==&lt;br /&gt;
To create a {{pkg|tmux}} session you just enter:&lt;br /&gt;
{{cmd|tmux}}&lt;br /&gt;
&lt;br /&gt;
== List existing sessions ==&lt;br /&gt;
When you have started some session(s) you can list them:&lt;br /&gt;
{{cmd|tmux ls}}&lt;br /&gt;
{{tip|Above command can also be run as &amp;lt;code&amp;gt;tmux list-sessions&amp;lt;/code&amp;gt;}}&lt;br /&gt;
You might get a list that looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0: 1 windows (created Wed Oct 24 15:12:12 2012) [126x35]&lt;br /&gt;
1: 1 windows (created Wed Oct 24 15:14:44 2012) [126x35]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attach to a existing session ==&lt;br /&gt;
Lets say you want to attach to a existing session (e.g. the above &amp;lt;code&amp;gt;1: 1 windows&amp;lt;/code&amp;gt; session).&lt;br /&gt;
{{cmd|tmux attach -t 1}}&lt;br /&gt;
{{tip|If you only have one session you don&#039;t need to specify session. Just run &amp;lt;code&amp;gt;tmux attach&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Controlling a session ==&lt;br /&gt;
While inside a {{pkg|tmux}} session, you can control it using keyboard shortcuts. We will only describe some of those alternatives.&lt;br /&gt;
&lt;br /&gt;
{{tip|To enter a keyboard shortcut that controls the current {{pkg|tmux}} session, you should click {{key|B}} while holding down {{key|CTRL}}&amp;lt;br&amp;gt;In the below examples this procedure is described as &amp;lt;code&amp;gt;C-b&amp;lt;/code&amp;gt;}}&lt;br /&gt;
=== Get help ===&lt;br /&gt;
One of the most useful commands is the one that gives you &#039;help&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
While in your {{pkg|tmux}} session, click:&lt;br /&gt;
{{cmd|C-b ?}}&lt;br /&gt;
&#039;&#039;(Do not press/hold {{key|CTRL}} when clicking {{key|?}})&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Detach from a session ===&lt;br /&gt;
Sometimes it&#039;s useful to just detach from a session without killing it.&amp;lt;br&amp;gt;&lt;br /&gt;
{{cmd|C-b d}}&lt;br /&gt;
{{tip|Try starting &amp;lt;code&amp;gt;ping 127.0.0.1&amp;lt;/code&amp;gt; while inside a session and then detach from the session.&amp;lt;br&amp;gt;After some while re-connect to the session using &amp;lt;code&amp;gt;tmux attach&amp;lt;/code&amp;gt;.&amp;lt;br&amp;gt;Note that the &amp;quot;seq&amp;quot; value indicates that ping had continued running while you where detached from the session.}}&lt;br /&gt;
&lt;br /&gt;
=== Close or kill a session ===&lt;br /&gt;
To &#039;kill&#039; a session:&lt;br /&gt;
{{cmd|C-b &amp;amp;}}&lt;br /&gt;
Confirm by clicking {{key|y}} when prompted.&lt;br /&gt;
&lt;br /&gt;
You can also &#039;kill&#039; your session by entering:&lt;br /&gt;
{{cmd|exit}}&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
If you are aiming to use tmux on your TTY and want to enable mouse service, you may need to take an extra step. First, ensure that your tmux config file has mouse support enabled by adding this to the ~/.tmux.conf file. Make this file if it does not already exist.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
set -g mouse on&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Refresh your tmux session to see if that step was enough.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tmux source-file ~/.tmux.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your mouse does not appear, install the following package:&lt;br /&gt;
{{pkg|gpm}}&lt;br /&gt;
&lt;br /&gt;
Enable and start gpm&#039;s service&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rc-update add gpm&lt;br /&gt;
rc-service gpm start&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other terminal multiplexers =&lt;br /&gt;
A similar tool is {{pkg|screen}} which is documented [[Screen_on_console|here]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Shell]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sway&amp;diff=23003</id>
		<title>Sway</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sway&amp;diff=23003"/>
		<updated>2023-02-24T23:44:00Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a section to troubleshooting about a possible fix for Proton games crashing on Sway. This solution was only necessary for my Alpine system after switching to Sway&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://swaywm.org Sway] is a tiling [[Wayland]] compositor. It&#039;s a drop-in replacement for the i3 window manager.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
eudev:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add eudev&lt;br /&gt;
# setup-devd udev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Graphics drivers:&lt;br /&gt;
&lt;br /&gt;
* [[Intel Video]]&lt;br /&gt;
* [[Radeon Video]]&lt;br /&gt;
* [[Nvidia Video]]&lt;br /&gt;
Add user to the input and video groups:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# adduser $USER input&lt;br /&gt;
# adduser $USER video&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install some TTF fonts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add ttf-dejavu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
seatd daemon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add seatd&lt;br /&gt;
# rc-update add seatd&lt;br /&gt;
# rc-service seatd start&lt;br /&gt;
# adduser $USER seat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install sway:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add sway sway-doc&lt;br /&gt;
# apk add                \ # Install optional dependencies:&lt;br /&gt;
    xwayland             \ # recommended for compatibility reasons&lt;br /&gt;
    foot                 \ # default terminal emulator. Modify $term in config for a different one.&lt;br /&gt;
    bemenu               \ # wayland menu&lt;br /&gt;
    swaylock swaylockd   \ # lockscreen tool&lt;br /&gt;
    swaybg               \ # wallpaper daemon&lt;br /&gt;
    swayidle               # idle management (DPMS) daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure [[Wayland#XDG_RUNTIME_DIR|XDG_RUNTIME_DIR]].&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
For inter-program communication and functionality such as screensharing, install and enable dbus and PipeWire, see [[PipeWire]] and set &amp;lt;code&amp;gt;SWAYSOCK&amp;lt;/code&amp;gt; environmental variable to the value exported by &amp;lt;code&amp;gt;sway&amp;lt;/code&amp;gt;. In order to ensure that Pipewire and related services inherit the right environment variables, it is recommended to start these services via a process that is a direct descendant of sway itself.&lt;br /&gt;
&lt;br /&gt;
Launch Sway with a D-Bus server available, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dbus-run-session -- sway #prepend with exec in your login shell init script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
An example config is provided at &amp;lt;code&amp;gt;/etc/sway/config&amp;lt;/code&amp;gt;. Copy it to &amp;lt;code&amp;gt;~/.config/sway/config&amp;lt;/code&amp;gt; and read through it to learn the default keybindings.&lt;br /&gt;
Sway configuration is mostly backwards-compatible with that of [[I3wm|i3]] and if you are looking for a solution for a specific issue, you may also try checking if it hasn&#039;t been provided for i3WM.&lt;br /&gt;
&lt;br /&gt;
For additional information, start at &amp;lt;code&amp;gt;man 5 sway&amp;lt;/code&amp;gt; and read the [https://github.com/swaywm/sway/wiki upstream wiki].&lt;br /&gt;
&lt;br /&gt;
=== Firefox screensharing ===&lt;br /&gt;
&lt;br /&gt;
For some programs, additional configuration is needed to launch them natively under Wayland and to support special features such as screen sharing.&lt;br /&gt;
&lt;br /&gt;
To launch Firefox natively under Wayland and to enable support for screensharing, you need:&lt;br /&gt;
&lt;br /&gt;
* Install and configure [[PipeWire]]&lt;br /&gt;
* Install xdg-desktop-portal and xdg-desktop-portal-wlr package&lt;br /&gt;
* Install wofi for screen selection&lt;br /&gt;
* Launch support programs on sway startup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec /usr/libexec/pipewire-launcher #pipewire must be launched first&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-wlr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Export the following variables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MOZ_ENABLE_WAYLAND=&amp;quot;1&amp;quot;&lt;br /&gt;
export XDG_CURRENT_DESKTOP=sway&lt;br /&gt;
export QT_QPA_PLATFORM=&amp;quot;wayland-egl&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flatpaks ===&lt;br /&gt;
&lt;br /&gt;
Due to their sandboxing, flatpaks require the use of a portal frontend (xdg-desktop-portal) and backends (such as xdg-desktop-portal-wlr, xdg-desktop-gtk, xdg-desktop-portal-gnome) that implement the methods. When in doubt, install multiple backends. For more information on backends, see [https://github.com/flatpak/xdg-desktop-portal/#using-portals flatpak&#039;s page on the subject]. In addition to the steps under the &amp;quot;Firefox Screensharing&amp;quot; section, it may also be necessary to launch additional backends in your Sway config file. Otherwise, you may run into GDBus errors as your flatpak fails to interface with the portal. This can cause issues such as with opening your file directories from a flatpak application.&lt;br /&gt;
&lt;br /&gt;
After installing different backends, you might need to add the relevant backends to your sway config file similarly to in the &amp;quot;Firefox Screensharing&amp;quot; section above. For example, an autostart section of your sway config file may include:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-gtk&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-wlr&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-gnome&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is only needed if they are not started automatically via other means.&lt;br /&gt;
&lt;br /&gt;
=== Scaling for high resolution screens ===&lt;br /&gt;
&lt;br /&gt;
Without further configuration, program interfaces might be too small to use on high resolution screens.&lt;br /&gt;
&lt;br /&gt;
==== Via sway ====&lt;br /&gt;
&lt;br /&gt;
Sway supports the per-display configuration of&lt;br /&gt;
&lt;br /&gt;
* fractional (e.g., 1.5x), and&lt;br /&gt;
* integer scaling (e.g., 2x) &lt;br /&gt;
&lt;br /&gt;
However, fractional scaling is discouraged due to both the performance impact and the blurry output it produces. In this case, where 1x scaling is too small and 2x scaling is too large, program-specific GTK/QT based scaling is recommended.  See below.&lt;br /&gt;
&lt;br /&gt;
To enable Sway scaling, the user can first preview different scaling factors with &amp;lt;code&amp;gt;wdisplays&amp;lt;/code&amp;gt; package.  Note the output name (eDP-1, LVDS-1) and try apply scaling factors such as 1 and 2.  To make changes permanent, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output &amp;lt;name&amp;gt; scale &amp;lt;factor&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to ~/.config/sway/config.&lt;br /&gt;
&lt;br /&gt;
==== Via GTK/Qt ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# for GTK-based programs such as firefox and emacs:&lt;br /&gt;
export GDK_DPI_SCALE=2&lt;br /&gt;
&lt;br /&gt;
# for QT-based programs&lt;br /&gt;
export QT_WAYLAND_FORCE_DPI=&amp;quot;physical&amp;quot;&lt;br /&gt;
# or if still too small, use a custom DPI&lt;br /&gt;
export QT_WAYLAND_FORCE_DPI=192 # 2x scaling&lt;br /&gt;
export QT_QPA_PLATFORM=&amp;quot;wayland-egl&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Make clipboard content persistent ===&lt;br /&gt;
By default the clipboard content does not persist after terminating the program: you copy some text from Firefox and then exit Firefox, the copied text is also lost.&lt;br /&gt;
&lt;br /&gt;
Install clipman from test repo and add the following to sway config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec wl-paste --type text/plain --watch clipman store --histpath=&amp;quot;~/.local/state/clipman-primary.json&amp;quot;&lt;br /&gt;
bindsym $mod+h exec clipman pick --tool wofi --histpath=&amp;quot;~/.local/state/clipman-primary.json&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Firefox picture-in-picture mode/floating windows ===&lt;br /&gt;
Add this to your sway config file (modify the numeric values to suit your needs and your display):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for_window [app_id=&amp;quot;firefox&amp;quot; title=&amp;quot;^Picture-in-Picture$&amp;quot;] floating enable, move position 877 450, sticky enable, border none&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screenshots ===&lt;br /&gt;
A simple tool that works well under Wayland is Grimshot. Example keybindings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bindsym Print exec grimshot copy area&lt;br /&gt;
bindsym Shift+Print exec grimshot copy screen&lt;br /&gt;
bindsym Control+Print exec grimshot save area ~/Pictures/$(date +%d-%m-%Y-%H-%M-%S).png&lt;br /&gt;
bindsym Control+Shift+Print exec grimshot save screen ~/Pictures/$(date +%d-%m-%Y-%H-%M-%S).png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/swaywm/sway/wiki/Useful-add-ons-for-sway the sway wiki&#039;s article] for a list of screenshot tools.&lt;br /&gt;
&lt;br /&gt;
=== Start with NumLock enabled ===&lt;br /&gt;
Add this to your sway config file:&lt;br /&gt;
&amp;lt;code&amp;gt;input type:keyboard xkb_numlock enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change cursor theme and size ===&lt;br /&gt;
Add to your sway config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
seat seat0 xcursor_theme my_cursor_theme my_cursor_size&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can inspect their values with &amp;lt;code&amp;gt;echo $XCURSOR_SIZE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;echo $XCURSOR_THEME&amp;lt;/code&amp;gt;. If reloading your config does not result in change, try logging out and in.&lt;br /&gt;
{{Note|Wayland uses client-side cursors. It is possible that applications do not evaluate the values of &amp;lt;code&amp;gt;$XCURSOR_SIZE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$XCURSOR_THEME&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
=== Start as a service ===&lt;br /&gt;
Although this is not necessary, you may write an init script like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{/etc/init.d/sway|&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
description=&amp;quot;Sway Compositor&amp;quot;&lt;br /&gt;
&lt;br /&gt;
command=&amp;quot;/usr/bin/sway&amp;quot;&lt;br /&gt;
command_args=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pidfile=&amp;quot;/run/sway.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
start_stop_daemon_args=&amp;quot;--background --pidfile ${pidfile}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
  need localmount&lt;br /&gt;
  after elogind&lt;br /&gt;
  use seatd dbus&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then as a root run &amp;lt;code&amp;gt;chmod +x /etc/init.d/seat&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rc-update add sway default&amp;lt;/code&amp;gt;. Make sure you have elogind installed or specify another service, like your display/login manager after which the sway service will run.&lt;br /&gt;
&lt;br /&gt;
=== Custom keyboard layout ===&lt;br /&gt;
&lt;br /&gt;
Since wayland does not support setxkbmap, you will also need to add similar content to your &#039;&#039;/usr/share/X11/xkb/rules/evdev.xml&#039;&#039;, after &amp;lt;code&amp;gt;&amp;lt;/modelList&amp;gt;&amp;lt;/code&amp;gt; and after &amp;lt;code&amp;gt;&amp;lt;layoutList&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;layout&amp;gt;&lt;br /&gt;
      &amp;lt;configItem&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;[the name of your layout, same as the name of the file in /usr/share/X11/xkb/symbols]&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;shortDescription&amp;gt;[usually just two letters]&amp;lt;/shortDescription&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;[description of your layout]&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;countryList&amp;gt;&lt;br /&gt;
          &amp;lt;iso3166Id&amp;gt;US&amp;lt;/iso3166Id&amp;gt;&lt;br /&gt;
          &amp;lt;iso3166Id&amp;gt;NO&amp;lt;/iso3166Id&amp;gt;&lt;br /&gt;
        &amp;lt;/countryList&amp;gt;&lt;br /&gt;
        &amp;lt;languageList&amp;gt;&lt;br /&gt;
          &amp;lt;iso639Id&amp;gt;eng&amp;lt;/iso639Id&amp;gt;&lt;br /&gt;
        &amp;lt;/languageList&amp;gt;&lt;br /&gt;
      &amp;lt;/configItem&amp;gt;&lt;br /&gt;
    &amp;lt;/layout&amp;gt;&lt;br /&gt;
&amp;lt;!--[other layouts]--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then, to enable for all keyboards, navigate to the input section of &#039;&#039;~/.config/sway/config&#039;&#039; and modify it to &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
input * {&lt;br /&gt;
  xkb_layout &amp;quot;my_layout&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you have enabled &amp;lt;code&amp;gt;xkb_numlock&amp;lt;/code&amp;gt;, include this setting inside those braces as well.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you encounter any issues, try running &amp;lt;code&amp;gt;sway -Vc /etc/sway/config&amp;lt;/code&amp;gt;. It will run sway with the default config file and set the output to be more verbose. It is generally a good idea to track your config files with git (when and if at all you use a remote repository for them, keep it private for security reasons). &lt;br /&gt;
&lt;br /&gt;
=== Firefox (Flatpak) and/or GTK apps ===&lt;br /&gt;
==== Disappearing cursor ====&lt;br /&gt;
You may need to get an icon pack and possibly a theme from [https://www.pling.com/browse?cat=107&amp;amp;ord=latest Pling store] and set &amp;lt;code&amp;gt;GTK_THEME&amp;lt;/code&amp;gt; environmental variable. Alternatively you can install a theme      for all users (search [https://pkgs.alpinelinux.org/ Alpine Linux Packages] for &#039;&#039;*-icon-theme&#039;&#039;) using &amp;lt;code&amp;gt;apk add&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Missing file picker/cannot download ====&lt;br /&gt;
&lt;br /&gt;
Go to &#039;&#039;about:config&#039;&#039; and set &amp;lt;code&amp;gt;widget.use-xdg-desktop-portal.file-picker&amp;lt;/code&amp;gt; to 0.&lt;br /&gt;
&lt;br /&gt;
=== Failing to start under certain graphics cards/multiple wlroots stacked windows spawning upon start ===&lt;br /&gt;
As of Dec 31 2022, [https://developer.nvidia.com/docs/drive/drive-os/latest/linux/sdk/common/topics/window_system_stub/Gnome-WaylandDesktopShellSupport136.html Nvidia still doesn&#039;t fully support Wayland]. Therefore, the possible solutions are as outlined in the link, or setting your WLR_BACKENDS environmental variables to &amp;lt;code&amp;gt;drm,libinput&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x11&amp;lt;/code&amp;gt; (add libinput here as well if you cannot use your mouse and keyboard after starting Sway). The latter also works for AMD/ATI cards (&#039;&#039;&#039;make sure to install libinput first&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Sway socket not detected ===&lt;br /&gt;
&lt;br /&gt;
See [[Sway#Installation|Installation]] for instructions on how to set this environmental variable. This issue may occur with terminal multiplexers, such as [[Tmux terminal multiplexer|tmux]]&lt;br /&gt;
&lt;br /&gt;
=== Steam games launched via Proton crash before creating a window ===&lt;br /&gt;
&lt;br /&gt;
Instead of just using the in-Steam menu to install and select a Proton version, try installing the flatpak community build for Proton onto your system. There are several versions, depending on your desired stability, and the experimental version available in Flathub is called &amp;quot;com.valvesoftware.Steam.CompatibilityTool.Proton-Exp&amp;quot;. After you install your chosen version, go into Steam to specify compatibility tool for a game as usual. The installed community build will now be an option. Select that and try launching the game again.&lt;br /&gt;
[[Category:Desktop]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sway&amp;diff=22922</id>
		<title>Sway</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sway&amp;diff=22922"/>
		<updated>2023-01-19T15:21:23Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a section to &amp;quot;Flatpak&amp;quot; that instructed users how to incorporate flatpaks to their bemenu/dmenu results with $PATH&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://swaywm.org Sway] is a tiling [[Wayland]] compositor. It&#039;s a drop-in replacement for the i3 window manager.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
eudev:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add eudev&lt;br /&gt;
# setup-devd udev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Graphics drivers:&lt;br /&gt;
&lt;br /&gt;
* [[Intel Video]]&lt;br /&gt;
* [[Radeon Video]]&lt;br /&gt;
* [[Nvidia Video]]&lt;br /&gt;
Add user to the input and video groups:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# adduser $USER input&lt;br /&gt;
# adduser $USER video&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install some TTF fonts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add ttf-dejavu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
seatd daemon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add seatd&lt;br /&gt;
# rc-update add seatd&lt;br /&gt;
# rc-service seatd start&lt;br /&gt;
# adduser $USER seat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[elogind]], optional for suspending with a key (otherwise you can run &amp;lt;code&amp;gt;echo mem &amp;gt; /sys/power/state as a root&amp;lt;/code&amp;gt;), or lid close support {{Note|Even though elogind may be installed and the service running, you may still need to configure some values. Otherwise you may for example be able to suspend with a key, but encounter a freeze upon waking. It is always vital to verify it is set up correctly with &amp;lt;code&amp;gt;loginctl list-sessions&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Install sway:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add sway sway-doc&lt;br /&gt;
# apk add                \ # Install optional dependencies:&lt;br /&gt;
    xwayland             \ # recommended for compatibility reasons&lt;br /&gt;
    foot                 \ # default terminal emulator. Modify $term in config for a different one.&lt;br /&gt;
    bemenu               \ # wayland menu&lt;br /&gt;
    swaylock swaylockd   \ # lockscreen tool&lt;br /&gt;
    swaybg               \ # wallpaper daemon&lt;br /&gt;
    swayidle               # idle management (DPMS) daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure [[Wayland#XDG_RUNTIME_DIR|XDG_RUNTIME_DIR]]. If you have also installed elogind, which depends on the package linux-pam, you will also need to prepend the &amp;lt;code&amp;gt;XDG_RUNTIME_DIR&amp;lt;/code&amp;gt; code with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export XDG_SEAT=seat0&lt;br /&gt;
export XDG_SESSION_CLASS=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For inter-program communication and functionality such as screensharing, install and enable dbus and PipeWire, see [[PipeWire]] and set &amp;lt;code&amp;gt;SWAYSOCK&amp;lt;/code&amp;gt; environmental variable to&lt;br /&gt;
&amp;lt;code&amp;gt;/tmp/$(id -u)-runtime-dir/sway-ipc.1000.$(pgrep -x sway).sock&amp;lt;/code&amp;gt; in your login shell&#039;s init script.&lt;br /&gt;
Note that it has to be set after the line responsible for launching Sway.&lt;br /&gt;
&lt;br /&gt;
Re-login or reboot to allow above modifications to take effect. &lt;br /&gt;
&lt;br /&gt;
Launch Sway with dbus support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dbus-run-session -- sway #prepend with exec in your login shell init script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
An example config is provided at &amp;lt;code&amp;gt;/etc/sway/config&amp;lt;/code&amp;gt;. Copy it to &amp;lt;code&amp;gt;~/.config/sway/config&amp;lt;/code&amp;gt; and read through it to learn the default keybindings.&lt;br /&gt;
Sway configuration is mostly backwards-compatible with that of [[I3wm|i3]] and if you are looking for a solution for a specific issue, you may also try checking if it hasn&#039;t been provided for i3WM.&lt;br /&gt;
&lt;br /&gt;
For additional information, start at &amp;lt;code&amp;gt;man 5 sway&amp;lt;/code&amp;gt; and read the [https://github.com/swaywm/sway/wiki upstream wiki].&lt;br /&gt;
&lt;br /&gt;
=== Firefox screensharing ===&lt;br /&gt;
&lt;br /&gt;
For some programs, additional configuration is needed to launch them natively under Wayland and to support special features such as screen sharing.&lt;br /&gt;
&lt;br /&gt;
To launch Firefox natively under Wayland and to enable support for screensharing, you need:&lt;br /&gt;
&lt;br /&gt;
* Install and configure [[PipeWire]]&lt;br /&gt;
* Install xdg-desktop-portal and xdg-desktop-portal-wlr package&lt;br /&gt;
* Install wofi for screen selection&lt;br /&gt;
* Launch support programs on sway startup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec /usr/libexec/pipewire-launcher #pipewire must be launched first&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-wlr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Export the following variables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MOZ_ENABLE_WAYLAND=&amp;quot;1&amp;quot;&lt;br /&gt;
export XDG_CURRENT_DESKTOP=sway&lt;br /&gt;
export XDG_SESSION_TYPE=wayland&lt;br /&gt;
export QT_QPA_PLATFORM=&amp;quot;wayland-egl&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flatpaks ===&lt;br /&gt;
&lt;br /&gt;
Due to their sandboxing, flatpaks require the use of a portal frontend (xdg-desktop-portal) and backends (such as xdg-desktop-portal-wlr, xdg-desktop-gtk, xdg-desktop-portal-gnome) that implement the methods. When in doubt, install multiple backends. For more information on backends, see [https://github.com/flatpak/xdg-desktop-portal/#using-portals flatpak&#039;s page on the subject]. In addition to the steps under the &amp;quot;Firefox Screensharing&amp;quot; section, it may also be necessary to launch additional backends in your Sway config file. Otherwise, you may run into GDBus errors as your flatpak fails to interface with the portal. This can cause issues such as with opening your file directories from a flatpak application.&lt;br /&gt;
&lt;br /&gt;
After installing different backends, you might need to add the relevant backends to your sway config file similarly to in the &amp;quot;Firefox Screensharing&amp;quot; section above. For example, an autostart section of your sway config file may include:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-gtk&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-wlr&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-gnome&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is only needed if they are not started automatically via other means.&lt;br /&gt;
&lt;br /&gt;
If you are using bemenu or dmenu and want flatpaks to be included in their search, you need to add the executables for the flatpaks to your $PATH for these launchers to find. To do so in Alpine Linux, open /etc/profile and add a new line to the list of append_path to include the flatpaks. For example, but with your username instead of USERNAME:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
append_path &amp;quot;/usr/local/sbin&amp;quot;&lt;br /&gt;
append_path &amp;quot;/usr/local/bin&amp;quot;&lt;br /&gt;
append_path &amp;quot;/usr/sbin&amp;quot;&lt;br /&gt;
append_path &amp;quot;/usr/bin&amp;quot;&lt;br /&gt;
append_path &amp;quot;/sbin&amp;quot;&lt;br /&gt;
append_path &amp;quot;/bin&amp;quot;&lt;br /&gt;
append_path &amp;quot;/home/USERNAME/.local/share/flatpak/exports/bin&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scaling for high resolution screens ===&lt;br /&gt;
&lt;br /&gt;
Without further configuration, program interfaces might be too small to use on high resolution screens.&lt;br /&gt;
&lt;br /&gt;
==== Via sway ====&lt;br /&gt;
&lt;br /&gt;
Sway supports the per-display configuration of&lt;br /&gt;
&lt;br /&gt;
* fractional (e.g., 1.5x), and&lt;br /&gt;
* integer scaling (e.g., 2x) &lt;br /&gt;
&lt;br /&gt;
However, fractional scaling is discouraged due to both the performance impact and the blurry output it produces. In this case, where 1x scaling is too small and 2x scaling is too large, program-specific GTK/QT based scaling is recommended.  See below.&lt;br /&gt;
&lt;br /&gt;
To enable Sway scaling, the user can first preview different scaling factors with &amp;lt;code&amp;gt;wdisplays&amp;lt;/code&amp;gt; package.  Note the output name (eDP-1, LVDS-1) and try apply scaling factors such as 1 and 2.  To make changes permanent, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output &amp;lt;name&amp;gt; scale &amp;lt;factor&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to ~/.config/sway/config.&lt;br /&gt;
&lt;br /&gt;
==== Via GTK/Qt ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# for GTK-based programs such as firefox and emacs:&lt;br /&gt;
export GDK_DPI_SCALE=2&lt;br /&gt;
&lt;br /&gt;
# for QT-based programs&lt;br /&gt;
export QT_WAYLAND_FORCE_DPI=&amp;quot;physical&amp;quot;&lt;br /&gt;
# or if still too small, use a custom DPI&lt;br /&gt;
export QT_WAYLAND_FORCE_DPI=192 # 2x scaling&lt;br /&gt;
export QT_QPA_PLATFORM=&amp;quot;wayland-egl&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Make clipboard content persistent ===&lt;br /&gt;
By default the clipboard content does not persist after terminating the program: you copy some text from Firefox and then exit Firefox, the copied text is also lost.&lt;br /&gt;
&lt;br /&gt;
Install clipman from test repo and add the following to sway config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec wl-paste --type text/plain --watch clipman store --histpath=&amp;quot;~/.local/state/clipman-primary.json&amp;quot;&lt;br /&gt;
bindsym $mod+h exec clipman pick --tool wofi --histpath=&amp;quot;~/.local/state/clipman-primary.json&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Firefox picture-in-picture mode/floating windows ===&lt;br /&gt;
Add this to your sway config file (modify the numeric values to suit your needs and your display):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for_window [app_id=&amp;quot;firefox&amp;quot; title=&amp;quot;^Picture-in-Picture$&amp;quot;] floating enable, move position 877 450, sticky enable, border none&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screenshots ===&lt;br /&gt;
A simple tool that works well under Wayland is Grimshot. Example keybindings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bindsym Print exec grimshot copy area&lt;br /&gt;
bindsym Shift+Print exec grimshot copy screen&lt;br /&gt;
bindsym Control+Print exec grimshot save area ~/Pictures/$(date +%d-%m-%Y-%H-%M-%S).png&lt;br /&gt;
bindsym Control+Shift+Print exec grimshot save screen ~/Pictures/$(date +%d-%m-%Y-%H-%M-%S).png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start with NumLock enabled ===&lt;br /&gt;
Add this to your sway config file:&lt;br /&gt;
&amp;lt;code&amp;gt;input type:keyboard xkb_numlock enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change cursor theme and size ===&lt;br /&gt;
Add to your sway config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
seat seat0 xcursor_theme my_cursor_theme my_cursor_size&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can inspect their values with &amp;lt;code&amp;gt;echo $XCURSOR_SIZE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;echo $XCURSOR_THEME&amp;lt;/code&amp;gt;. If reloading your config does not result in change, try logging out and in.&lt;br /&gt;
{{Note|Wayland uses client-side cursors. It is possible that applications do not evaluate the values of &amp;lt;code&amp;gt;$XCURSOR_SIZE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$XCURSOR_THEME&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
=== Start as a service ===&lt;br /&gt;
Although this is not necessary, you may write an init script like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{/etc/init.d/sway|&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
description=&amp;quot;Sway Compositor&amp;quot;&lt;br /&gt;
&lt;br /&gt;
command=&amp;quot;/usr/bin/sway&amp;quot;&lt;br /&gt;
command_args=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pidfile=&amp;quot;/run/sway.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
start_stop_daemon_args=&amp;quot;--background --pidfile ${pidfile}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
  need localmount&lt;br /&gt;
  after elogind&lt;br /&gt;
  use seatd dbus&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then as a root run &amp;lt;code&amp;gt;chmod +x /etc/init.d/seat&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rc-update add sway default&amp;lt;/code&amp;gt;. Make sure you have elogind installed or specify another service, like your display/login manager after which the sway service will run.&lt;br /&gt;
&lt;br /&gt;
=== Custom keyboard layout ===&lt;br /&gt;
&lt;br /&gt;
Since wayland does not support setxkbmap, you will also need to add similar content to your &#039;&#039;/usr/share/X11/xkb/rules/evdev.xml&#039;&#039;, after &amp;lt;code&amp;gt;&amp;lt;/modelList&amp;gt;&amp;lt;/code&amp;gt; and after &amp;lt;code&amp;gt;&amp;lt;layoutList&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;layout&amp;gt;&lt;br /&gt;
      &amp;lt;configItem&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;[the name of your layout, same as the name of the file in /usr/share/X11/xkb/symbols]&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;shortDescription&amp;gt;[usually just two letters]&amp;lt;/shortDescription&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;[description of your layout]&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;countryList&amp;gt;&lt;br /&gt;
          &amp;lt;iso3166Id&amp;gt;US&amp;lt;/iso3166Id&amp;gt;&lt;br /&gt;
          &amp;lt;iso3166Id&amp;gt;NO&amp;lt;/iso3166Id&amp;gt;&lt;br /&gt;
        &amp;lt;/countryList&amp;gt;&lt;br /&gt;
        &amp;lt;languageList&amp;gt;&lt;br /&gt;
          &amp;lt;iso639Id&amp;gt;eng&amp;lt;/iso639Id&amp;gt;&lt;br /&gt;
        &amp;lt;/languageList&amp;gt;&lt;br /&gt;
      &amp;lt;/configItem&amp;gt;&lt;br /&gt;
    &amp;lt;/layout&amp;gt;&lt;br /&gt;
&amp;lt;!--[other layouts]--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then, to enable for all keyboards, navigate to the input section of &#039;&#039;~/.config/sway/config&#039;&#039; and modify it to &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
input * {&lt;br /&gt;
  xkb_layout &amp;quot;my_layout&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you have enabled &amp;lt;code&amp;gt;xkb_numlock&amp;lt;/code&amp;gt;, include this setting inside those braces as well.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you encounter any issues, try running &amp;lt;code&amp;gt;sway -Vc /etc/sway/config&amp;lt;/code&amp;gt;. It will run sway with the default config file and set the output to be more verbose. It is generally a good idea to track your config files with git (when and if at all you use a remote repository for them, keep it private for security reasons). &lt;br /&gt;
&lt;br /&gt;
=== Firefox (Flatpak) and/or GTK apps ===&lt;br /&gt;
==== Disappearing cursor ====&lt;br /&gt;
You may need to get an icon pack and possibly a theme from [https://www.pling.com/browse?cat=107&amp;amp;ord=latest Pling store] and set &amp;lt;code&amp;gt;GTK_THEME&amp;lt;/code&amp;gt; environmental variable. Alternatively you can install a theme      for all users (search [https://pkgs.alpinelinux.org/ Alpine Linux Packages] for &#039;&#039;*-icon-theme&#039;&#039;) using &amp;lt;code&amp;gt;apk add&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Missing file picker/cannot download ====&lt;br /&gt;
&lt;br /&gt;
Go to &#039;&#039;about:config&#039;&#039; and set &amp;lt;code&amp;gt;widget.use-xdg-desktop-portal.file-picker&amp;lt;/code&amp;gt; to 0.&lt;br /&gt;
&lt;br /&gt;
=== Failing to start under certain graphics cards/multiple wlroots stacked windows spawning upon start ===&lt;br /&gt;
As of Dec 31 2022, [https://developer.nvidia.com/docs/drive/drive-os/latest/linux/sdk/common/topics/window_system_stub/Gnome-WaylandDesktopShellSupport136.html Nvidia still doesn&#039;t fully support Wayland]. Therefore, the possible solutions are as outlined in the link, or setting your WLR_BACKENDS environmental variables to &amp;lt;code&amp;gt;drm,libinput&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x11&amp;lt;/code&amp;gt; (add libinput here as well if you cannot use your mouse and keyboard after starting Sway). The latter also works for AMD/ATI cards (&#039;&#039;&#039;make sure to install libinput first&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Sway socket not detected ===&lt;br /&gt;
&lt;br /&gt;
See [[Sway#Installation|Installation]] for instructions on how to set this environmental variable. This issue may occur with terminal multiplexers, such as [[Tmux terminal multiplexer|tmux]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sway&amp;diff=22882</id>
		<title>Sway</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sway&amp;diff=22882"/>
		<updated>2023-01-10T01:39:29Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a &amp;quot;Flatpak&amp;quot; section to address an issue I&amp;#039;ve encountered when switching from Gnome-&amp;gt;Sway. Flatpaks were unable to interface with the portals until I started them in my sway config file.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://swaywm.org Sway] is a tiling [[Wayland]] compositor. It&#039;s a drop-in replacement for the i3 window manager.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
eudev:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add eudev&lt;br /&gt;
# setup-devd udev&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Graphics drivers:&lt;br /&gt;
&lt;br /&gt;
* [[Intel Video]]&lt;br /&gt;
* [[Radeon Video]]&lt;br /&gt;
* [[Nvidia Video]]&lt;br /&gt;
Add user to the input and video groups:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# adduser $USER input&lt;br /&gt;
# adduser $USER video&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install some TTF fonts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add ttf-dejavu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
seatd daemon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add seatd&lt;br /&gt;
# rc-update add seatd&lt;br /&gt;
# rc-service seatd start&lt;br /&gt;
# adduser $USER seat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[elogind]], optional for suspending with a key (otherwise you can run &amp;lt;code&amp;gt;echo mem &amp;gt; /sys/power/state as a root&amp;lt;/code&amp;gt;), or lid close support {{Note|Even though elogind may be installed and the service running, you may still need to configure some values. Otherwise you may for example be able to suspend with a key, but encounter a freeze upon waking. It is always vital to verify it is set up correctly with &amp;lt;code&amp;gt;loginctl list-sessions&amp;lt;/code&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Install sway:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# apk add sway sway-doc&lt;br /&gt;
# apk add                \ # Install optional dependencies:&lt;br /&gt;
    xwayland             \ # recommended for compatibility reasons&lt;br /&gt;
    foot                 \ # default terminal emulator. Modify $term in config for a different one.&lt;br /&gt;
    bemenu               \ # wayland menu&lt;br /&gt;
    swaylock swaylockd   \ # lockscreen tool&lt;br /&gt;
    swaybg               \ # wallpaper daemon&lt;br /&gt;
    swayidle               # idle management (DPMS) daemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure [[Wayland#XDG_RUNTIME_DIR|XDG_RUNTIME_DIR]]. If you have also installed elogind, which depends on the package linux-pam, you will also need to prepend the &amp;lt;code&amp;gt;XDG_RUNTIME_DIR&amp;lt;/code&amp;gt; code with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export XDG_SEAT=seat0&lt;br /&gt;
export XDG_SESSION_CLASS=user&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For inter-program communication and functionality such as screensharing, install and enable dbus and PipeWire, see [[PipeWire]] and set &amp;lt;code&amp;gt;SWAYSOCK&amp;lt;/code&amp;gt; environmental variable to&lt;br /&gt;
&amp;lt;code&amp;gt;/tmp/$(id -u)-runtime-dir/sway-ipc.1000.$(pgrep -x sway).sock&amp;lt;/code&amp;gt; in your login shell&#039;s init script.&lt;br /&gt;
Note that it has to be set after the line responsible for launching Sway.&lt;br /&gt;
&lt;br /&gt;
Re-login or reboot to allow above modifications to take effect. &lt;br /&gt;
&lt;br /&gt;
Launch Sway with dbus support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dbus-run-session -- sway #prepend with exec in your login shell init script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
An example config is provided at &amp;lt;code&amp;gt;/etc/sway/config&amp;lt;/code&amp;gt;. Copy it to &amp;lt;code&amp;gt;~/.config/sway/config&amp;lt;/code&amp;gt; and read through it to learn the default keybindings.&lt;br /&gt;
Sway configuration is mostly backwards-compatible with that of [[I3wm|i3]] and if you are looking for a solution for a specific issue, you may also try checking if it hasn&#039;t been provided for i3WM.&lt;br /&gt;
&lt;br /&gt;
For additional information, start at &amp;lt;code&amp;gt;man 5 sway&amp;lt;/code&amp;gt; and read the [https://github.com/swaywm/sway/wiki upstream wiki].&lt;br /&gt;
&lt;br /&gt;
=== Firefox screensharing ===&lt;br /&gt;
&lt;br /&gt;
For some programs, additional configuration is needed to launch them natively under Wayland and to support special features such as screen sharing.&lt;br /&gt;
&lt;br /&gt;
To launch Firefox natively under Wayland and to enable support for screensharing, you need:&lt;br /&gt;
&lt;br /&gt;
* Install and configure [[PipeWire]]&lt;br /&gt;
* Install xdg-desktop-portal and xdg-desktop-portal-wlr package&lt;br /&gt;
* Install wofi for screen selection&lt;br /&gt;
* Launch support programs on sway startup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec /usr/libexec/pipewire-launcher #pipewire must be launched first&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-wlr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Export the following variables:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MOZ_ENABLE_WAYLAND=&amp;quot;1&amp;quot;&lt;br /&gt;
export XDG_CURRENT_DESKTOP=sway&lt;br /&gt;
export XDG_SESSION_TYPE=wayland&lt;br /&gt;
export QT_QPA_PLATFORM=&amp;quot;wayland-egl&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flatpaks ===&lt;br /&gt;
&lt;br /&gt;
Due to their sandboxing, flatpaks require the use of portals (xdg-desktop-portal) and frontends (such as xdg-desktop-portal-wlr or xdg-desktop-portal-gnome). Different frontends are used by different applications depending on their needs; when in doubt, install multiple frontends. For more information on frontends, see [https://github.com/flatpak/xdg-desktop-portal/#using-portals flatpak&#039;s page on the subject]. In addition to the steps under the &amp;quot;Firefox Screensharing&amp;quot; section, it may also be necessary to launch additional frontends in your Sway config file. Otherwise, you may run into GDBus errors as your flatpak fails to interface with the portal. This can cause issues such as with opening your file directories from a flatpak application.&lt;br /&gt;
&lt;br /&gt;
After installing different frontends, add the relevant frontends to your sway config file similarly to in the &amp;quot;Firefox Screensharing&amp;quot; section above. For example, an autostart section of your sway config file may include:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec /usr/libexec/pipewire-launcher #pipewire must be launched first&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-gtk&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-wlr&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-gnome&lt;br /&gt;
exec /usr/libexec/xdg-desktop-portal-kde&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scaling for high resolution screens ===&lt;br /&gt;
&lt;br /&gt;
Without further configuration, program interfaces might be too small to use on high resolution screens.&lt;br /&gt;
&lt;br /&gt;
==== Via sway ====&lt;br /&gt;
&lt;br /&gt;
Sway supports the per-display configuration of&lt;br /&gt;
&lt;br /&gt;
* fractional (e.g., 1.5x), and&lt;br /&gt;
* integer scaling (e.g., 2x) &lt;br /&gt;
&lt;br /&gt;
However, fractional scaling is discouraged due to both the performance impact and the blurry output it produces. In this case, where 1x scaling is too small and 2x scaling is too large, program-specific GTK/QT based scaling is recommended.  See below.&lt;br /&gt;
&lt;br /&gt;
To enable Sway scaling, the user can first preview different scaling factors with &amp;lt;code&amp;gt;wdisplays&amp;lt;/code&amp;gt; package.  Note the output name (eDP-1, LVDS-1) and try apply scaling factors such as 1 and 2.  To make changes permanent, add&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
output &amp;lt;name&amp;gt; scale &amp;lt;factor&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to ~/.config/sway/config.&lt;br /&gt;
&lt;br /&gt;
==== Via GTK/Qt ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# for GTK-based programs such as firefox and emacs:&lt;br /&gt;
export GDK_DPI_SCALE=2&lt;br /&gt;
&lt;br /&gt;
# for QT-based programs&lt;br /&gt;
export QT_WAYLAND_FORCE_DPI=&amp;quot;physical&amp;quot;&lt;br /&gt;
# or if still too small, use a custom DPI&lt;br /&gt;
export QT_WAYLAND_FORCE_DPI=192 # 2x scaling&lt;br /&gt;
export QT_QPA_PLATFORM=&amp;quot;wayland-egl&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Make clipboard content persistent ===&lt;br /&gt;
By default the clipboard content does not persist after terminating the program: you copy some text from Firefox and then exit Firefox, the copied text is also lost.&lt;br /&gt;
&lt;br /&gt;
Install clipman from test repo and add the following to sway config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
exec wl-paste --type text/plain --watch clipman store --histpath=&amp;quot;~/.local/state/clipman-primary.json&amp;quot;&lt;br /&gt;
bindsym $mod+h exec clipman pick --tool wofi --histpath=&amp;quot;~/.local/state/clipman-primary.json&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Firefox picture-in-picture mode/floating windows ===&lt;br /&gt;
Add this to your sway config file (modify the numeric values to suit your needs and your display):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
for_window [app_id=&amp;quot;firefox&amp;quot; title=&amp;quot;^Picture-in-Picture$&amp;quot;] floating enable, move position 877 450, sticky enable, border none&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Screenshots ===&lt;br /&gt;
A simple tool that works well under Wayland is Grimshot. Example keybindings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bindsym Print exec grimshot copy area&lt;br /&gt;
bindsym Shift+Print exec grimshot copy screen&lt;br /&gt;
bindsym Control+Print exec grimshot save area ~/Pictures/$(date +%d-%m-%Y-%H-%M-%S).png&lt;br /&gt;
bindsym Control+Shift+Print exec grimshot save screen ~/Pictures/$(date +%d-%m-%Y-%H-%M-%S).png&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Start with NumLock enabled ===&lt;br /&gt;
Add this to your sway config file:&lt;br /&gt;
&amp;lt;code&amp;gt;input type:keyboard xkb_numlock enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Change cursor theme and size ===&lt;br /&gt;
Add to your sway config:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
seat seat0 xcursor_theme my_cursor_theme my_cursor_size&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can inspect their values with &amp;lt;code&amp;gt;echo $XCURSOR_SIZE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;echo $XCURSOR_THEME&amp;lt;/code&amp;gt;. If reloading your config does not result in change, try logging out and in.&lt;br /&gt;
{{Note|Wayland uses client-side cursors. It is possible that applications do not evaluate the values of &amp;lt;code&amp;gt;$XCURSOR_SIZE&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$XCURSOR_THEME&amp;lt;/code&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
=== Start as a service ===&lt;br /&gt;
Although this is not necessary, you may write an init script like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{/etc/init.d/sway|&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
description=&amp;quot;Sway Compositor&amp;quot;&lt;br /&gt;
&lt;br /&gt;
command=&amp;quot;/usr/bin/sway&amp;quot;&lt;br /&gt;
command_args=&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pidfile=&amp;quot;/run/sway.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
start_stop_daemon_args=&amp;quot;--background --pidfile ${pidfile}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
  need localmount&lt;br /&gt;
  after elogind&lt;br /&gt;
  use seatd dbus&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then as a root run &amp;lt;code&amp;gt;chmod +x /etc/init.d/seat&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;rc-update add sway default&amp;lt;/code&amp;gt;. Make sure you have elogind installed or specify another service, like your display/login manager after which the sway service will run.&lt;br /&gt;
&lt;br /&gt;
=== Custom keyboard layout ===&lt;br /&gt;
&lt;br /&gt;
Since wayland does not support setxkbmap, you will also need to add similar content to your &#039;&#039;/usr/share/X11/xkb/rules/evdev.xml&#039;&#039;, after &amp;lt;code&amp;gt;&amp;lt;/modelList&amp;gt;&amp;lt;/code&amp;gt; and after &amp;lt;code&amp;gt;&amp;lt;layoutList&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;layout&amp;gt;&lt;br /&gt;
      &amp;lt;configItem&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;[the name of your layout, same as the name of the file in /usr/share/X11/xkb/symbols]&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;shortDescription&amp;gt;[usually just two letters]&amp;lt;/shortDescription&amp;gt;&lt;br /&gt;
        &amp;lt;description&amp;gt;[description of your layout]&amp;lt;/description&amp;gt;&lt;br /&gt;
        &amp;lt;countryList&amp;gt;&lt;br /&gt;
          &amp;lt;iso3166Id&amp;gt;US&amp;lt;/iso3166Id&amp;gt;&lt;br /&gt;
          &amp;lt;iso3166Id&amp;gt;NO&amp;lt;/iso3166Id&amp;gt;&lt;br /&gt;
        &amp;lt;/countryList&amp;gt;&lt;br /&gt;
        &amp;lt;languageList&amp;gt;&lt;br /&gt;
          &amp;lt;iso639Id&amp;gt;eng&amp;lt;/iso639Id&amp;gt;&lt;br /&gt;
        &amp;lt;/languageList&amp;gt;&lt;br /&gt;
      &amp;lt;/configItem&amp;gt;&lt;br /&gt;
    &amp;lt;/layout&amp;gt;&lt;br /&gt;
&amp;lt;!--[other layouts]--&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Then, to enable for all keyboards, navigate to the input section of &#039;&#039;~/.config/sway/config&#039;&#039; and modify it to &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
input * {&lt;br /&gt;
  xkb_layout &amp;quot;my_layout&amp;quot; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you have enabled &amp;lt;code&amp;gt;xkb_numlock&amp;lt;/code&amp;gt;, include this setting inside those braces as well.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you encounter any issues, try running &amp;lt;code&amp;gt;sway -Vc /etc/sway/config&amp;lt;/code&amp;gt;. It will run sway with the default config file and set the output to be more verbose. It is generally a good idea to track your config files with git (when and if at all you use a remote repository for them, keep it private for security reasons). &lt;br /&gt;
&lt;br /&gt;
=== Firefox (Flatpak) and/or GTK apps ===&lt;br /&gt;
==== Disappearing cursor ====&lt;br /&gt;
You may need to get an icon pack and possibly a theme from [https://www.pling.com/browse?cat=107&amp;amp;ord=latest Pling store] and set &amp;lt;code&amp;gt;GTK_THEME&amp;lt;/code&amp;gt; environmental variable. Alternatively you can install a theme      for all users (search [https://pkgs.alpinelinux.org/ Alpine Linux Packages] for &#039;&#039;*-icon-theme&#039;&#039;) using &amp;lt;code&amp;gt;apk add&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Missing file picker/cannot download ====&lt;br /&gt;
&lt;br /&gt;
Go to &#039;&#039;about:config&#039;&#039; and set &amp;lt;code&amp;gt;widget.use-xdg-desktop-portal.file-picker&amp;lt;/code&amp;gt; to 0.&lt;br /&gt;
&lt;br /&gt;
=== Failing to start under certain graphics cards/multiple wlroots stacked windows spawning upon start ===&lt;br /&gt;
As of Dec 31 2022, [https://developer.nvidia.com/docs/drive/drive-os/latest/linux/sdk/common/topics/window_system_stub/Gnome-WaylandDesktopShellSupport136.html Nvidia still doesn&#039;t fully support Wayland]. Therefore, the possible solutions are as outlined in the link, or setting your WLR_BACKENDS environmental variables to &amp;lt;code&amp;gt;drm,libinput&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;x11&amp;lt;/code&amp;gt; (add libinput here as well if you cannot use your mouse and keyboard after starting Sway). The latter also works for AMD/ATI cards (&#039;&#039;&#039;make sure to install libinput first&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Sway socket not detected ===&lt;br /&gt;
&lt;br /&gt;
See [[Sway#Installation|Installation]] for instructions on how to set this environmental variable. This issue may occur with terminal multiplexers, such as [[Tmux terminal multiplexer|tmux]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=22632</id>
		<title>AppArmor</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=22632"/>
		<updated>2022-10-19T14:49:54Z</updated>

		<summary type="html">&lt;p&gt;Quill: Added a Troubleshooting section with an issue and solution I&amp;#039;ve run into. Also made the rc-update add apparmor command include boot for the sake of clarity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AppArmor is a kernel security module that restricts individual programs&#039; capabilities. This can allow administrators to prevent programs accessing system resources in malicious ways according to per-applications specifications. AppArmor works by following profiles, which dictate what each application is and is not allowed to do. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also install apparmor-utils if you want to use the aa command to interact with AppArmor.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor-utils}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
&lt;br /&gt;
Run the command {{Cmd|# cat /sys/kernel/security/lsm}} to see what linux security modules are currently setup. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Use a text editor like nano to edit &amp;lt;pre&amp;gt;/boot/extlinux.conf&amp;lt;/pre&amp;gt; such that the APPEND line ends with the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsm=landlock,yama,apparmor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that because you&#039;re including lsm in this .conf file you are overriding the default lsm. Thus, you should include any lsm that you saw previously running in the above cat command. Additionally, lsm initializes these modules in order, so their position is important in regards to major/minor modules. Ensure that apparmor is placed first among major modules. Note for convenience that yama, capability, and landlock, which come with Alpine Linux, are not major modules, and apparmor can be placed after them. The module called capability is automatically included and does not need to be written in. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, start AppArmor and tell openrc to start it on boot.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service apparmor start}}&lt;br /&gt;
{{Cmd|# rc-update add apparmor boot}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check if AppArmor is running with the command aa-enabled&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-enabled}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
AppArmor works using rules established in profiles. A set of pre-made profiles is available for ease of use:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor-profiles}}}}&lt;br /&gt;
&lt;br /&gt;
Reboot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
&lt;br /&gt;
View AppArmor&#039;s report with the command aa-status&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-status}}&lt;br /&gt;
&lt;br /&gt;
This details how many and what profiles are in use as well as relevant findings, such as how many profiles are in complain mode or in kill mode.&lt;br /&gt;
&lt;br /&gt;
==Troubleshoot==&lt;br /&gt;
&lt;br /&gt;
If you notice a bunch of AppArmor errors on boot, try running aa-status and aa-enabled in the terminal. If the output mentions AppArmor being disabled at boot, re-open your /boot/extlinux.conf file and make sure the APPEND line still ends with lsm=landlock,yama,apparmor&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=22623</id>
		<title>AppArmor</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=22623"/>
		<updated>2022-10-09T00:20:20Z</updated>

		<summary type="html">&lt;p&gt;Quill: consolidated information where it was more relevant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AppArmor is a kernel security module that restricts individual programs&#039; capabilities. This can allow administrators to prevent programs accessing system resources in malicious ways according to per-applications specifications. AppArmor works by following profiles, which dictate what each application is and is not allowed to do. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also install apparmor-utils if you want to use the aa command to interact with AppArmor.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor-utils}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
&lt;br /&gt;
Run the command {{Cmd|# cat /sys/kernel/security/lsm}} to see what linux security modules are currently setup. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Use a text editor like nano to edit &amp;lt;pre&amp;gt;/boot/extlinux.conf&amp;lt;/pre&amp;gt; such that the APPEND line ends with the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsm=landlock,yama,apparmor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that because you&#039;re including lsm in this .conf file you are overriding the default lsm. Thus, you should include any lsm that you saw previously running in the above cat command. Additionally, lsm initializes these modules in order, so their position is important in regards to major/minor modules. Ensure that apparmor is placed first among major modules. Note for convenience that yama, capability, and landlock, which come with Alpine Linux, are not major modules, and apparmor can be placed after them. The module called capability is automatically included and does not need to be written in. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, start AppArmor and tell openrc to start it on boot.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service apparmor start}}&lt;br /&gt;
{{Cmd|# rc-update add apparmor}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check if AppArmor is running with the command aa-enabled&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-enabled}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
AppArmor works using rules established in profiles. A set of pre-made profiles is available for ease of use:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor-profiles}}}}&lt;br /&gt;
&lt;br /&gt;
Reboot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
&lt;br /&gt;
View AppArmor&#039;s report with the command aa-status&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-status}}&lt;br /&gt;
&lt;br /&gt;
This details how many and what profiles are in use as well as relevant findings, such as how many profiles are in complain mode or in kill mode.&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=22622</id>
		<title>AppArmor</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=22622"/>
		<updated>2022-10-09T00:16:25Z</updated>

		<summary type="html">&lt;p&gt;Quill: Information and instruction on how to install, setup, and use AppArmor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AppArmor is a kernel security module that restricts individual programs&#039; capabilities. This can allow administrators to prevent programs accessing system resources in malicious ways according to per-applications specifications. AppArmor works by following profiles, which dictate what each application is and is not allowed to do. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also install apparmor-utils if you want to use the aa command to interact with AppArmor.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor-utils}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
&lt;br /&gt;
Run the command {{Cmd|# cat /sys/kernel/security/lsm}} to see what linux security modules are currently setup. Note that lsm initializes these modules in order, so their position is important in regards to major/minor modules. Ensure that apparmor is placed first among major modules. Note for convenience that yama, capability, and landlock, which come with Alpine Linux, are not major modules, and apparmor can be placed after them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Use a text editor like nano to edit &amp;lt;pre&amp;gt;/boot/extlinux.conf&amp;lt;/pre&amp;gt; such that the APPEND line ends with the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lsm=landlock,yama,apparmor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that because you&#039;re including lsm in this .conf file you are overriding the default lsm. Thus, you should include any lsm that you saw previously running in the above cat command. The module called capability is automatically included and does not need to be written in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, start AppArmor and tell openrc to start it on boot.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service apparmor start}}&lt;br /&gt;
{{Cmd|# rc-update add apparmor}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check if AppArmor is running with the command aa-enabled&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-enabled}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
AppArmor works using rules established in profiles. A set of pre-made profiles is available for ease of use:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor-profiles}}}}&lt;br /&gt;
&lt;br /&gt;
Reboot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Use==&lt;br /&gt;
&lt;br /&gt;
View AppArmor&#039;s report with the command aa-status&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-status}}&lt;br /&gt;
&lt;br /&gt;
This details how many and what profiles are in use as well as relevant findings, such as how many profiles are in complain mode or in kill mode.&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Proton_VPN&amp;diff=22354</id>
		<title>Proton VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Proton_VPN&amp;diff=22354"/>
		<updated>2022-10-05T23:38:57Z</updated>

		<summary type="html">&lt;p&gt;Quill: removed doas from the cmd under &amp;quot;running&amp;quot; section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proton VPN is an open-source VPN service by the non-profit Swiss company Proton AG. It utilizes the OpenVPN protocol. Because Alpine Linux does not currently have a release for Proton VPN, using it requires connecting via either OpenVPN or Wireguard. Using Wireguard is recommended due to Proton AG&#039;s own stated preference for the service as well as Wireguard&#039;s lighter and more modern build. Setting up for Wireguard is relatively simpler because NetworkManager has native support for it, requiring fewer installations and setups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|wireguard-tools}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
Login to Proton VPN and download the Wireguard config file. More information on this can be found at [https://protonvpn.com/support/wireguard-configurations/ Proton VPN&#039;s support page]. Note that the private key will only be available from the site if you download immediately after making the config file, after which the private key is replaced with asterisks. Rename the file &amp;quot;wg0.conf&amp;quot; and move it somewhere safe in your file system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
&lt;br /&gt;
To connect, run the following command. Substitute path_to_file with the full path to wherever you moved the config file.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# wg-quick up /path_to_file/wg0.conf}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable Wireguard connecting to Proton VPN on boot, open your /etc/network/interfaces using a text editor like nano. Add this information after your auto wlan0 section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto wg0&lt;br /&gt;
iface wg0 inet static&lt;br /&gt;
pre-up wg-quick up /path_to_file/wg0.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, substitute path_to_file with your own relevant information.&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Proton_VPN&amp;diff=22353</id>
		<title>Proton VPN</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Proton_VPN&amp;diff=22353"/>
		<updated>2022-10-05T03:15:53Z</updated>

		<summary type="html">&lt;p&gt;Quill: How to setup Proton VPN using Wireguard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proton VPN is an open-source VPN service by the non-profit Swiss company Proton AG. It utilizes the OpenVPN protocol. Because Alpine Linux does not currently have a release for Proton VPN, using it requires connecting via either OpenVPN or Wireguard. Using Wireguard is recommended due to Proton AG&#039;s own stated preference for the service as well as Wireguard&#039;s lighter and more modern build. Setting up for Wireguard is relatively simpler because NetworkManager has native support for it, requiring fewer installations and setups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|wireguard-tools}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
Login to Proton VPN and download the Wireguard config file. More information on this can be found at [https://protonvpn.com/support/wireguard-configurations/ Proton VPN&#039;s support page]. Note that the private key will only be available from the site if you download immediately after making the config file, after which the private key is replaced with asterisks. Rename the file &amp;quot;wg0.conf&amp;quot; and move it somewhere safe in your file system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
&lt;br /&gt;
To connect, run the following command. Substitute path_to_file with the full path to wherever you moved the config file.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# doas wg-quick up /path_to_file/wg0.conf}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To enable Wireguard connecting to Proton VPN on boot, open your /etc/network/interfaces using a text editor like nano. Add this information after your auto wlan0 section:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto wg0&lt;br /&gt;
iface wg0 inet static&lt;br /&gt;
pre-up wg-quick up /path_to_file/wg0.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, substitute path_to_file with your own relevant information.&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=NetworkManager&amp;diff=22351</id>
		<title>NetworkManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=NetworkManager&amp;diff=22351"/>
		<updated>2022-10-04T02:36:30Z</updated>

		<summary type="html">&lt;p&gt;Quill: added 2 lines under &amp;quot;Installation&amp;quot; to indicate the need for networkmanager-wifi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://networkmanager.dev/ NetworkManager] is a program  that provides automatic detection and configuration for systems to connect to networks.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|networkmanager}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NetworkManager comes with a command line interface and a curses-based interface, &amp;lt;code&amp;gt;nmcli&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nmtui&amp;lt;/code&amp;gt; respectively or you can use a additional gui interface:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|plasma-nm}} for Plasma integration and applet&lt;br /&gt;
* {{Pkg|network-manager-applet}} for a GTK system tray applet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will need to install an additional package if you want NetworkManager to connect to wifi:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|networkmanager-wifi}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installation start NetworkManager:&lt;br /&gt;
{{Cmd|# rc-service networkmanager start}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also your user needs to be in the &amp;lt;code&amp;gt;plugdev&amp;lt;/code&amp;gt; group:&lt;br /&gt;
{{Cmd|# adduser &amp;lt;YourUsername&amp;gt; plugdev}}&lt;br /&gt;
&lt;br /&gt;
{{Note|you will need to log out for the new group to take effect}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wireless networks ==&lt;br /&gt;
&lt;br /&gt;
==== wpa_supplicant backend ====&lt;br /&gt;
&lt;br /&gt;
{{Todo|([[KDE|KDE Plasma]] Desktop) find out if it is possible to prevent requesting the password for &#039;&#039;&#039;KDE Wallet&#039;&#039;&#039; on login}}&lt;br /&gt;
&lt;br /&gt;
* Follow: [[Wi-Fi#wpa_supplicant]] and [[Wi-Fi#Automatic_Configuration_on_System_Boot]]&lt;br /&gt;
{{Note|{{Pkg|wpa_supplicant}} configuration might not be required, if it isnt it may be a good idea to have it setup just as a fallback}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now open &amp;lt;code&amp;gt;/etc/NetworkManager/NetworkManager.conf&amp;lt;/code&amp;gt; in a text editor and change it to something like this:&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/NetworkManager/NetworkManager.conf|&amp;lt;nowiki&amp;gt;[main] &lt;br /&gt;
dhcp=internal&lt;br /&gt;
plugins=ifupdown,keyfile&lt;br /&gt;
&lt;br /&gt;
[ifupdown]&lt;br /&gt;
managed=true&lt;br /&gt;
&lt;br /&gt;
[device]&lt;br /&gt;
wifi.scan-rand-mac-address=yes&lt;br /&gt;
wifi.backend=wpa_supplicant&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|if these options dont work on your system you can change them as necessary}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you need to stop conflicting services:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service networking stop}}&lt;br /&gt;
{{Cmd|# rc-service wpa_supplicant stop}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now restart NetworkManager:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service networkmanager restart}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now connect to a network using one of the interfaces mentioned in [[NetworkManager#Installation|Installation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that connects and stays connected with no issues enable the &amp;lt;code&amp;gt;networkmanager&amp;lt;/code&amp;gt; service and disable the &amp;lt;code&amp;gt;networking&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;wpa_supplicant&amp;lt;/code&amp;gt; boot services:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add networkmanager}}&lt;br /&gt;
{{Cmd|# rc-update del networking boot}}&lt;br /&gt;
{{Cmd|# rc-update del wpa_supplicant boot}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== iwd backend ====&lt;br /&gt;
&lt;br /&gt;
NetworkManager supports wireless networks through {{Pkg|iwd}}, however, consider [https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues?scope=all&amp;amp;utf8=%E2%9C%93&amp;amp;state=opened&amp;amp;search=iwd existing issues] before using it. After installation, enable the server and restart NetworkManager:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rc-service iwd start&lt;br /&gt;
rc-service networkmanager restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use {{Pkg|iwd}} though, you&#039;ve have to edit NetworkManager&#039;s configuration because it still defaults to {{Pkg|wpa_supplicant}} instead. Add the following to {{Path|/etc/NetworkManager/NetworkManager.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[device]&lt;br /&gt;
wifi.backend=iwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VPN support ==&lt;br /&gt;
Since version 1.16, NetworkManager has support for Wireguard[https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/NEWS?id=1.16.0].&lt;br /&gt;
&lt;br /&gt;
Support for other VPN types is provided by plugins. They are provided in the following packages:&lt;br /&gt;
* {{Pkg|networkmanager-openvpn}} for OpenVPN&lt;br /&gt;
&lt;br /&gt;
== nm-applet ==&lt;br /&gt;
=== not authorized to control networking ===&lt;br /&gt;
&lt;br /&gt;
You can enable all users to edit connections without adding polkit.&lt;br /&gt;
First, make the &amp;lt;code&amp;gt;conf.d&amp;lt;/code&amp;gt; directory for networkmanager:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# mkdir -p /etc/NetworkManager/conf.d}}&lt;br /&gt;
&lt;br /&gt;
Then, add following content to &amp;lt;code&amp;gt;/etc/NetworkManager/conf.d/any-user.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
auth-polkit=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, restart networkmanager:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# /etc/init.d/networkmanager restart}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Quill</name></author>
	</entry>
</feed>