<?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=Zcrayfish</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=Zcrayfish"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Zcrayfish"/>
	<updated>2026-04-30T10:11:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Gopherbot&amp;diff=29302</id>
		<title>User:Gopherbot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Gopherbot&amp;diff=29302"/>
		<updated>2025-03-16T14:39:57Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: added retired template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{retired}}&lt;br /&gt;
&lt;br /&gt;
Gopherbot is a retired MediWiki maintenance bot formerly used on the Alpine Linux wiki by [[User:zcrayfish|zcrayfish]].&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Former bot tasks=&lt;br /&gt;
* Checks for dead hyperlinks, and certain dead wikilinks as well.&lt;br /&gt;
** After seeing a link fail to work for a minimum of a week, a comment will be added on the associated talk page.&lt;br /&gt;
* On a semi-automated basis: Removes unwanted categories.&lt;br /&gt;
&lt;br /&gt;
= Dead link blacklist =&lt;br /&gt;
Links from the following domains were NOT checked, usually because the servers either do dumb things (every response is a 200?) or block the bot:&lt;br /&gt;
&lt;br /&gt;
* [https://datatracker.ietf.org/doc/html/rfc2606#page-2 RFC2606 test domains] &amp;lt;small&amp;gt;(e.g. example.com, example.net, example.org, etc)&amp;lt;/small&amp;gt;&lt;br /&gt;
* berlinonline.de* &amp;lt;small&amp;gt;(incompatible)&amp;lt;/small&amp;gt;&lt;br /&gt;
* web.archive.org* &amp;lt;small&amp;gt;(rejects bots)&amp;lt;/small&amp;gt;&lt;br /&gt;
* archive.is* &amp;lt;small&amp;gt;(rejects bots, and is an EXTREMELY slow site in general)&amp;lt;/small&amp;gt;&lt;br /&gt;
* cloudflare.com* &amp;lt;small&amp;gt;(intermittently rejects bots... and humans too...)&amp;lt;/small&amp;gt;&lt;br /&gt;
* cyberciti.biz* &amp;lt;small&amp;gt;(rejects bots)&amp;lt;/small&amp;gt;&lt;br /&gt;
* linuxconfig.org* &amp;lt;small&amp;gt;(rejects bots)&amp;lt;/small&amp;gt;&lt;br /&gt;
* openvpn.net* &amp;lt;small&amp;gt;(rejects bots)&amp;lt;/small&amp;gt;&lt;br /&gt;
* gitlab.com/lramage94* &amp;lt;small&amp;gt;(requires login)&amp;lt;/small&amp;gt;&lt;br /&gt;
* www.voip-info.org* &amp;lt;small&amp;gt;(rejects bots)&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User_talk:Zcrayfish&amp;diff=29301</id>
		<title>User talk:Zcrayfish</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User_talk:Zcrayfish&amp;diff=29301"/>
		<updated>2025-03-16T14:36:57Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: retired template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{retired}}&lt;br /&gt;
Any additional comments on this talk page will be ignored.&lt;br /&gt;
&lt;br /&gt;
=== thanks for the help ===&lt;br /&gt;
thanks for the formatting help [https://wiki.alpinelinux.org/w/index.php?title=Setting_up_disks_manually&amp;amp;diff=prev&amp;amp;oldid=26562]&lt;br /&gt;
[[User:Alpinetony|&amp;lt;small style=&amp;quot;border:2px solid;border-radius:4px;padding:0 4px&amp;quot;&amp;gt;Alpinetony&amp;lt;/small&amp;gt;]] [[User talk:Alpinetony|💬]]  22:24, 4 March 2024 (UTC)&lt;br /&gt;
:any time! \o/ &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 08:43, 7 March 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
== About &amp;quot;undo revision 26759&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
:Revision comment does not match what was done with the page. Most content removed. Accident?&lt;br /&gt;
&lt;br /&gt;
Yes, thanks for fixing that. Damn... I pressed the &amp;quot;edit section&amp;quot; button instead of &amp;quot;edit page&amp;quot;. I thought I was editing just the section, and that the rest of the page would be untouched.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding [[Help:Signature|unsigned]] comment added by [[User:Harpia|Harpia]] ([[User talk:Harpia|{{int:talkpagelinktext}}]] • [[Special:Contributions/Harpia|{{int:contribslink}}]]) 22:25, 28 May 2024‎&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt; &lt;br /&gt;
&lt;br /&gt;
:No problem!! :) &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 02:34, 3 June 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Zcrayfish&amp;diff=29300</id>
		<title>User:Zcrayfish</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Zcrayfish&amp;diff=29300"/>
		<updated>2025-03-16T14:36:12Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: added retired template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:User:zcrayfish}}&lt;br /&gt;
{{retired}}&lt;br /&gt;
=Stuff to watch=&lt;br /&gt;
[[Special:Patroller|Unpatrolled edits]]&lt;br /&gt;
Most recent unpatrolled new pages (ideally there should be none): {{Special:NewPages/limit=50,hidepatrolled}}&lt;br /&gt;
&lt;br /&gt;
[[Special:BrokenRedirects|List of broken redirects]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:DoubleRedirects|List of double redirects]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:ListDuplicatedFiles|List of duplicate files]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=irc%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All irc:// hyperlinks]. (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:TrackingCategories|Pages that mediawiki has marked as broken in some way]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:RecentChanges|250 most recent wiki edits]]&lt;br /&gt;
&lt;br /&gt;
=To-do=&lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Dead_link|Pages which contain dead links]] &lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Obsolete|Obsolete pages]] (Need to go through and RfD some of these)&lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Insecure_url|Pages which contain links to unencrypted content]] (Some sites stubbornly refuse to join the current century)&lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Delete|RfDs]] (I don&#039;t have access to deal with these)&lt;br /&gt;
&lt;br /&gt;
[[Special:WantedPages|List of non-existing pages that are linked to]]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=http%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All http:// hyperlinks]. All of these need to be checked to see if they can be rewritten to https://&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=ftp%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All ftp:// hyperlinks]. All of these need to be check to see if an sftp:// or https:// version is available.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=svn%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All svn:// hyperlinks]. Old Alpine SVN links have gotta go!&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
&lt;br /&gt;
[[Special:LinkSearch|External link seach]]&lt;br /&gt;
&lt;br /&gt;
[[Special:AllPages/Template:|List of all templates]]&lt;br /&gt;
&lt;br /&gt;
[[Special:ExpandTemplates|Template wikimarkup expansion tool]]&lt;br /&gt;
&lt;br /&gt;
[[Special:Redirect|Redirect by file, user, page, revision, or log ID]]&lt;br /&gt;
&lt;br /&gt;
[[Special:AbuseFilter|Description of automatic abuse filtering]] (because I always forget, and it would be nice to be able to explain to new wiki users why exactly their posts are getting denied)&lt;br /&gt;
&lt;br /&gt;
[[Special:Random|Go to a completely random page.]] This is both fun and useful!&lt;br /&gt;
&lt;br /&gt;
=Logs/Stats=&lt;br /&gt;
&lt;br /&gt;
[[Special:BlockList]]&lt;br /&gt;
&lt;br /&gt;
[[Special:AbuseLog]]&lt;br /&gt;
&lt;br /&gt;
[[Special:Statistics]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=29213</id>
		<title>Setting up encrypted volumes with LUKS</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_encrypted_volumes_with_LUKS&amp;diff=29213"/>
		<updated>2025-03-09T20:56:16Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* mkinitfs and LUKS */ use path template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://en.wikipedia.org/wiki/Linux%20Unified%20Key%20Setup LUKS] allows encrypting a partition and mapping it as a virtual block device, which can then be used as a normal partition. Guides for other Linux distributions should serve as a general references for installing Alpine onto a LUKS encrypted disk.&lt;br /&gt;
&lt;br /&gt;
The installer has built-in support for encryption. The default installer will not encrypt the swap partition and the boot partition. To setup Alpine Linux with an encrypted swap partition, refer to [[LVM on LUKS]]. The GRUB bootloader supports BIOS and EFI boot with an encrypted boot partition.&lt;br /&gt;
&lt;br /&gt;
== mkinitfs and LUKS ==&lt;br /&gt;
&lt;br /&gt;
For those familiar with setting up FDE on other Linux distributions, this section contains only Alpine-specific knowledge required is understanding [[mkinitfs]].&lt;br /&gt;
&lt;br /&gt;
First of all, the &amp;lt;code&amp;gt;cryptsetup&amp;lt;/code&amp;gt; feature needs to be added to {{path|/etc/mkinitfs/mkinitfs.conf}}. Additionally, the following kernel parameters are required:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;cryptroot&amp;lt;/code&amp;gt; kernel parameter should point to the encrypted block device. &lt;br /&gt;
* &amp;lt;code&amp;gt;cryptdm&amp;lt;/code&amp;gt;: the name that will be given to the device.&lt;br /&gt;
* &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; kernel parameter should point to the mapped block device: &amp;lt;code&amp;gt;/dev/mapper/&amp;lt;name used in cryptdm&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;rootfstype&amp;lt;/code&amp;gt;: the filesystem type of the root partition (e.g.: &amp;lt;code&amp;gt;btrfs&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For example if you use grub with GPT partition table, no LVM and ext4 you will have in {{path|/etc/default/grub}}:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GRUB_TIMEOUT=2&lt;br /&gt;
GRUB_DISABLE_SUBMENU=y&lt;br /&gt;
GRUB_DISABLE_RECOVERY=true&lt;br /&gt;
GRUB_CMDLINE_LINUX_DEFAULT=&amp;quot;modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4 cryptroot=UUID=a7dc90c4-6746-417e-b25b-cb8769ee6334 cryptdm=alpine-rootfs  root=/dev/mapper/alpine-rootfs&amp;quot;&lt;br /&gt;
GRUB_PRELOAD_MODULES=&amp;quot;luks cryptodisk part_gpt&amp;quot;&lt;br /&gt;
GRUB_ENABLE_CRYPTODISK=y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[LVM on LUKS]]&lt;br /&gt;
* [[mkinitfs|Initramfs init]]&lt;br /&gt;
* [[Full disk encryption secure boot]]&lt;br /&gt;
* [https://wiki.archlinux.org/index.php/Dm-crypt dm-crypt on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Storage]]&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Support&amp;diff=29198</id>
		<title>Talk:Support</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Support&amp;diff=29198"/>
		<updated>2025-03-05T03:06:53Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: reply&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi Zcrayfish, when a user types support, wiki will land in this page. The actual support page [[Alpine Linux:Support]] page will not be displayed since that page is in &amp;quot;Alpine Linux&amp;quot; namespace and not in the Main namespace. Reverting back the old redirect will help wiki users to reach [[Alpine Linux:Support|Support]] page, on searching support in the search box. [[User:Prabuanand|Prabuanand]] ([[User talk:Prabuanand|talk]]) 03:49, 21 February 2025 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good catch, thanks for fixing that.&lt;br /&gt;
:&amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 03:06, 5 March 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Installing_Oracle_Java&amp;diff=29197</id>
		<title>Installing Oracle Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Installing_Oracle_Java&amp;diff=29197"/>
		<updated>2025-03-05T02:59:32Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Reverting: Completely blanking pages is not acceptable.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Obsolete|Alpine has not used grsec for a while now...}}&lt;br /&gt;
&lt;br /&gt;
Using java requires having grsec play nice with the binaries. You may also want to install the JDK instead of the JRE depending on your needs.&lt;br /&gt;
&lt;br /&gt;
This guide assumes you&#039;re running as root.&lt;br /&gt;
&lt;br /&gt;
Download XXX-XXX-linux-x64.tar.gz from either the JRE or JDK section here:&lt;br /&gt;
https://www.oracle.com/technetwork/java/javase/downloads/index.html&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /opt/java&lt;br /&gt;
 cd /opt/java&lt;br /&gt;
 sudo tar -zxvf XXX-XXX-linux-x64.tar.gz &lt;br /&gt;
&lt;br /&gt;
Take note of the directory, e.g. /opt/java/jdk1.8.0_121, create a symbolic link as the current version:&lt;br /&gt;
&lt;br /&gt;
 ln -s /opt/java/jdk1.8.0_121 /opt/java/current&lt;br /&gt;
&lt;br /&gt;
Create a file in &#039;&#039;&#039;/etc/profile.d/java.sh&#039;&#039;&#039;:&lt;br /&gt;
 export JAVA_HOME=/opt/java/current&lt;br /&gt;
 export PATH=$PATH:$JAVA_HOME/bin&lt;br /&gt;
&lt;br /&gt;
Execute this script or restart your shell:&lt;br /&gt;
 sh /etc/profile.d/java.sh&lt;br /&gt;
&lt;br /&gt;
Now we need manage grsec with paxctl. Use this command to check if its installed:&lt;br /&gt;
 which paxctl&lt;br /&gt;
&lt;br /&gt;
If nothing comes up install it:&lt;br /&gt;
&lt;br /&gt;
 apk add paxctl&lt;br /&gt;
&lt;br /&gt;
Now in your /opt/java/XXX/bin folder, execute:&lt;br /&gt;
 paxctl -c java&lt;br /&gt;
 paxctl -m java&lt;br /&gt;
&lt;br /&gt;
If you have the JDK, you need to do the same to javac:&lt;br /&gt;
 paxctl -c javac&lt;br /&gt;
 paxctl -m javac&lt;br /&gt;
&lt;br /&gt;
You can do this for any other binary you need to use.&lt;br /&gt;
&lt;br /&gt;
NOTE: some users have reported they had to use this command to get it working:&lt;br /&gt;
&lt;br /&gt;
 setfattr -n user.pax.flags -v &amp;quot;mr&amp;quot; java&lt;br /&gt;
 setfattr -n user.pax.flags -v &amp;quot;mr&amp;quot; javac&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alternative installation of Oracle Java on Linux Alpine&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 1. Run apk update &amp;amp;&amp;amp; apk upgrade&lt;br /&gt;
 2. Edit vim /etc/profile, add the value before the string: append_path &amp;quot;/user/local/sbin&amp;quot;, value: append_path &amp;quot;/opt/java/current/bin&amp;quot;&lt;br /&gt;
 3. Download XXX-XXX-linux-x64.tar.gz and jce_policy-8.zip from official oracle suite.&lt;br /&gt;
 4. Сreate a directory in the root: mkdir -p /opt/java&lt;br /&gt;
 5. Copy XXX-XXX-linux-x64.tar.gz in the java directory: scp /home/username/XXX-XXX-linux-x64.tar.gz /opt/java/&lt;br /&gt;
 6. Let&#039;s go to the catalog java: cd /opt/java and unpack the file: XXX-XXX-linux-x64.tar.gz, tar -zxvf XXX-XXX-linux-x64.tar.gz&lt;br /&gt;
 7. Create simlink: ln -s /opt/java/jdkX.X.X_XXX /opt/java/current&lt;br /&gt;
 8. Download and install the certificate: wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub&lt;br /&gt;
 9. Download glibc: wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.34-r0/glibc-2.34-r0.apk&lt;br /&gt;
 10. Install glibc: apk add glibc-2.34-r0.apk&lt;br /&gt;
 11. Download glibc-bin: wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.34-r0/glibc-bin-2.34-r0.apk&lt;br /&gt;
 12. Install glibc-bin: apk add glibc-bin-2.34-r0.apk&lt;br /&gt;
 13. Install the license jce_policy-8.zip, сopy the file: scp /home/username/jce_policy-8.zip /opt/java/current/jre/lib/security/&lt;br /&gt;
 14. Let&#039;s go to the folder /opt/java/current/jre/lib/security/: cd /opt/java/current/jre/lib/security/ and unpack it: unzip -o -j jce_policy-8.zip UnlimitedJCEPolicyJDK8/*.jar&lt;br /&gt;
 15. Delete the archive file: rm -f jce_policy-8.zip&lt;br /&gt;
 16. Restart the computer or virtual machine: reboot&lt;br /&gt;
 17. Let&#039;s check the version of Java installed: java -version&lt;br /&gt;
 18. If it displays: java version &amp;quot;X.X.X_XXX&amp;quot;, then we did everything correctly.&lt;br /&gt;
= =&lt;br /&gt;
* [https://blog.overops.com/author/shahar_valiano/ Native Java Debugging on Alpine Linux: GDB, OpenJDK and the Mysterious Unknown Signal] Shahar Valiano 2019 &lt;br /&gt;
&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Local_APK_cache&amp;diff=28965</id>
		<title>Talk:Local APK cache</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Local_APK_cache&amp;diff=28965"/>
		<updated>2025-02-09T22:34:10Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Article improvement idea.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Instructions on how to share the APK cache on the local network are needed==&lt;br /&gt;
With the infrastructure crisis that Alpine Linux is currently experiencing, it might be prudent for us to add directions here on the wiki on how to share the APK cache on the local network; if many users do this, it could help achieve a modest reduction in usage on the Alpine mirrors. (not to mention it is MUCH faster under most circumstances to download files locally rather than through the internet)...&lt;br /&gt;
&amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 22:34, 9 February 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Zcrayfish&amp;diff=28918</id>
		<title>User:Zcrayfish</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Zcrayfish&amp;diff=28918"/>
		<updated>2025-02-04T20:18:26Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: I am away.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:User:zcrayfish}}&lt;br /&gt;
{{note|This user is on hiatus until the MR backlog and [https://www.phoronix.com/forums/forum/phoronix/latest-phoronix-articles/1523664-alpine-linux-in-an-infrastructure-crisis-with-equinix-metal-sunsetting infrastructure crisis] is dealt with.}}&lt;br /&gt;
=Stuff to watch=&lt;br /&gt;
[[Special:Patroller|Unpatrolled edits]]&lt;br /&gt;
Most recent unpatrolled new pages (ideally there should be none): {{Special:NewPages/limit=50,hidepatrolled}}&lt;br /&gt;
&lt;br /&gt;
[[Special:BrokenRedirects|List of broken redirects]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:DoubleRedirects|List of double redirects]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:ListDuplicatedFiles|List of duplicate files]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=irc%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All irc:// hyperlinks]. (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:TrackingCategories|Pages that mediawiki has marked as broken in some way]] (there should be none)&lt;br /&gt;
&lt;br /&gt;
[[Special:RecentChanges|250 most recent wiki edits]]&lt;br /&gt;
&lt;br /&gt;
=To-do=&lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Dead_link|Pages which contain dead links]] &lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Obsolete|Obsolete pages]] (Need to go through and RfD some of these)&lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Insecure_url|Pages which contain links to unencrypted content]] (Some sites stubbornly refuse to join the current century)&lt;br /&gt;
&lt;br /&gt;
[[Special:WhatLinksHere/Template:Delete|RfDs]] (I don&#039;t have access to deal with these)&lt;br /&gt;
&lt;br /&gt;
[[Special:WantedPages|List of non-existing pages that are linked to]]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=http%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All http:// hyperlinks]. All of these need to be checked to see if they can be rewritten to https://&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=ftp%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All ftp:// hyperlinks]. All of these need to be check to see if an sftp:// or https:// version is available.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.alpinelinux.org/w/index.php?target=svn%3A%2F%2F*&amp;amp;title=Special%3ALinkSearch All svn:// hyperlinks]. Old Alpine SVN links have gotta go!&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
&lt;br /&gt;
[[Special:LinkSearch|External link seach]]&lt;br /&gt;
&lt;br /&gt;
[[Special:AllPages/Template:|List of all templates]]&lt;br /&gt;
&lt;br /&gt;
[[Special:ExpandTemplates|Template wikimarkup expansion tool]]&lt;br /&gt;
&lt;br /&gt;
[[Special:Redirect|Redirect by file, user, page, revision, or log ID]]&lt;br /&gt;
&lt;br /&gt;
[[Special:AbuseFilter|Description of automatic abuse filtering]] (because I always forget, and it would be nice to be able to explain to new wiki users why exactly their posts are getting denied)&lt;br /&gt;
&lt;br /&gt;
[[Special:Random|Go to a completely random page.]] This is both fun and useful!&lt;br /&gt;
&lt;br /&gt;
=Logs/Stats=&lt;br /&gt;
&lt;br /&gt;
[[Special:BlockList]]&lt;br /&gt;
&lt;br /&gt;
[[Special:AbuseLog]]&lt;br /&gt;
&lt;br /&gt;
[[Special:Statistics]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Hardened_malloc&amp;diff=28861</id>
		<title>Hardened malloc</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Hardened_malloc&amp;diff=28861"/>
		<updated>2025-01-22T01:05:26Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* How to use */ Use pkg template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What is it? ===&lt;br /&gt;
An excerpt on [https://github.com/GrapheneOS/hardened_malloc github] [1]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is a security-focused general purpose memory allocator providing the malloc API along with various extensions. It provides substantial hardening against heap corruption vulnerabilities.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== How to use ===&lt;br /&gt;
{{note| Need Alpine Linux Edge with testing repo in {{path|/etc/apk/repositories}}}}&lt;br /&gt;
{{cmd| $ doas apk add {{pkg|hardened-malloc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then you can set &amp;lt;code&amp;gt;LD_PRELOAD=&amp;quot;/usr/lib/libhardened_malloc.so&amp;quot;&amp;lt;/code&amp;gt; while launching individual applications or before your window manager starts if you prefer.  For a more global setting placing the LD_PRELOAD reference into {{path|/etc/profile}} or {{path|/etc/profile.d/}} might help, as well as {{path|/etc/environment}} for PAM-based systems.&lt;br /&gt;
&lt;br /&gt;
=== External sources ===&lt;br /&gt;
Hardened malloc github&lt;br /&gt;
* [https://github.com/GrapheneOS/hardened_malloc https://github.com/GrapheneOS/hardened_malloc] [1]&lt;br /&gt;
&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Hardened_malloc&amp;diff=28860</id>
		<title>Hardened malloc</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Hardened_malloc&amp;diff=28860"/>
		<updated>2025-01-22T01:04:40Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* How to use */ Use path template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== What is it? ===&lt;br /&gt;
An excerpt on [https://github.com/GrapheneOS/hardened_malloc github] [1]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This is a security-focused general purpose memory allocator providing the malloc API along with various extensions. It provides substantial hardening against heap corruption vulnerabilities.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== How to use ===&lt;br /&gt;
{{note| Need Alpine Linux Edge with testing repo in {{path|/etc/apk/repositories}}}}&lt;br /&gt;
{{cmd| $ doas apk add hardened-malloc}}&lt;br /&gt;
&lt;br /&gt;
Then you can set &amp;lt;code&amp;gt;LD_PRELOAD=&amp;quot;/usr/lib/libhardened_malloc.so&amp;quot;&amp;lt;/code&amp;gt; while launching individual applications or before your window manager starts if you prefer.  For a more global setting placing the LD_PRELOAD reference into {{path|/etc/profile}} or {{path|/etc/profile.d/}} might help, as well as {{path|/etc/environment}} for PAM-based systems.&lt;br /&gt;
&lt;br /&gt;
=== External sources ===&lt;br /&gt;
Hardened malloc github&lt;br /&gt;
* [https://github.com/GrapheneOS/hardened_malloc https://github.com/GrapheneOS/hardened_malloc] [1]&lt;br /&gt;
&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28774</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28774"/>
		<updated>2025-01-12T18:58:28Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Basic Configuration */ more wayland additions.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|obconf-qt}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options see: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
If using wayland, the following packages are suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{cmd|# apk add {{Pkg|lxqt-wayland-session}} {{Pkg|swayidle}} {{Pkg|swaybg}} {{Pkg|wlopm}} {{Pkg|labwc}}}} &lt;br /&gt;
{{Note|labwc is used for the initial configuration (e.g. picking compositor and screen locker) on wayland, but can safely be uninstalled afterwards if a different compositor is installed and selected. For additional compositor options see: [https://github.com/lxqt/lxqt/wiki/ConfigWaylandSettings LXQt Wayland Session on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|$ startlxqt}}&lt;br /&gt;
&lt;br /&gt;
LXQt for Wayland may be started with:&lt;br /&gt;
{{cmd|$ startlxqtwayland}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
* {{Pkg|lxqt-wayland-session-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|libdbusmenu-lxqt-dev}} &lt;br /&gt;
* {{Pkg|liblxqt-dev}} &lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environment needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28773</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28773"/>
		<updated>2025-01-12T18:54:38Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Basic Configuration */ wayland&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|obconf-qt}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
If using wayland, the following packages are suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{cmd|# apk add {{Pkg|lxqt-wayland-session}} {{Pkg|swayidle}} {{Pkg|swaybg}} {{Pkg|wlopm}} {{Pkg|labwc}}}} &lt;br /&gt;
{{Note|labwc is used for the initial configuration (e.g. picking compositor and screen locker) on wayland, but can safely be uninstalled afterwards if a different compositor is installed and selected.}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|$ startlxqt}}&lt;br /&gt;
&lt;br /&gt;
LXQt for Wayland may be started with:&lt;br /&gt;
{{cmd|$ startlxqtwayland}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
* {{Pkg|lxqt-wayland-session-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|libdbusmenu-lxqt-dev}} &lt;br /&gt;
* {{Pkg|liblxqt-dev}} &lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environment needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28772</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28772"/>
		<updated>2025-01-12T18:50:33Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Basic Configuration */ wayland&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
If using wayland, the following packages are suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{cmd|# apk add {{Pkg|lxqt-wayland-session}} {{Pkg|swayidle}} {{Pkg|swaybg}} {{Pkg|wlopm}} {{Pkg|labwc}}}} &lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|$ startlxqt}}&lt;br /&gt;
&lt;br /&gt;
LXQt for Wayland may be started with:&lt;br /&gt;
{{cmd|$ startlxqtwayland}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
* {{Pkg|lxqt-wayland-session-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|libdbusmenu-lxqt-dev}} &lt;br /&gt;
* {{Pkg|liblxqt-dev}} &lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environment needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Intel_Video&amp;diff=28771</id>
		<title>Intel Video</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Intel_Video&amp;diff=28771"/>
		<updated>2025-01-12T18:47:30Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Added blurb about PowerVR-based GMA... which use a different set of drivers.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents the graphics driver for Intel GMA on-board graphics cards and Intel iGPU and dedicated graphics cards (excluding [https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units#PowerVR_based PowerVR-based models]). Install the following packages as needed:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|mesa-dri-gallium}}: &#039;&#039;&#039;necessary&#039;&#039;&#039; Mesa drivers for all Intel Graphics.&lt;br /&gt;
* {{Pkg|mesa-va-gallium}}: Mesa vaapi drivers for all Intel video decoding acceleration. You want one of the below too.&lt;br /&gt;
* {{Pkg|intel-media-driver}}: VAAPI driver, for hardware accelerated video encoding and decoding. What you want since Intel Broadwell.&lt;br /&gt;
* {{Pkg|libva-intel-driver}}: VAAPI driver, for processors older than Broadwell.&lt;br /&gt;
* {{Pkg|linux-firmware-i915}}: Needed if the i915 driver complains about firmware being missing in dmesg&lt;br /&gt;
&lt;br /&gt;
== Use environment variables ==&lt;br /&gt;
&lt;br /&gt;
For all Intel Graphics up to Haswell, the user must manually select &#039;&#039;&#039;crocus&#039;&#039;&#039; Mesa driver in order to let the graphics work properly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MESA_LOADER_DRIVER_OVERRIDE=crocus&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For newer Intel Graphics, if automatic driver selection does not work and bugs such as missing mouse cursor under [[Sway]] occur (no hardware graphics acceleration), the user can manually select &#039;&#039;&#039;iris&#039;&#039;&#039; driver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export MESA_LOADER_DRIVER_OVERRIDE=iris&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Legacy drivers ==&lt;br /&gt;
{{Main|Xorg}}&lt;br /&gt;
Legacy drivers like {{Pkg|xf86-video-intel}} which have [https://wiki.archlinux.org/title/Intel_graphics#Installation known Issues]. Use these, only if nothing else works. &lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Drivers]]&lt;br /&gt;
[[Category:Graphics]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28770</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28770"/>
		<updated>2025-01-12T18:34:34Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* From the command line */ +startlxqtwayland&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|$ startlxqt}}&lt;br /&gt;
&lt;br /&gt;
LXQt for Wayland may be started with:&lt;br /&gt;
{{cmd|$ startlxqtwayland}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
* {{Pkg|lxqt-wayland-session-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|libdbusmenu-lxqt-dev}} &lt;br /&gt;
* {{Pkg|liblxqt-dev}} &lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environment needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28769</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28769"/>
		<updated>2025-01-12T18:32:31Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Development files */ +libdbusmenu-lxqt-dev, +liblxqt-dev&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
* {{Pkg|lxqt-wayland-session-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|libdbusmenu-lxqt-dev}} &lt;br /&gt;
* {{Pkg|liblxqt-dev}} &lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environment needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28768</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28768"/>
		<updated>2025-01-12T18:31:24Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Documentation packages */ +lxqt-wayland-session-doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
* {{Pkg|lxqt-wayland-session-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environment needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28767</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28767"/>
		<updated>2025-01-12T18:30:00Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Missing Icons and Fonts */ grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environment needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28766</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=28766"/>
		<updated>2025-01-12T18:29:40Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Help wanted */ lxqt-wayland-session is now part of the testing repo on edge.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup-desktop}}&lt;br /&gt;
&lt;br /&gt;
When lxqt is chosen, the {{ic|Setup-desktop}} script installs [[SDDM]] as display manager and completes all the steps listed below in the [[#Manual installation|Manual installation]] and [[#Basic Configuration|Basic Configuration]] sections.&lt;br /&gt;
&lt;br /&gt;
== Manual installation ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]]&lt;br /&gt;
* [[D-Bus#Installation|Install and configure D-Bus]] (without D-Bus icons and keyboard shortcuts may be missing)&lt;br /&gt;
* Install a [[Fonts|font]] by issuing the command {{ic|# apk add font-dejavu}}&lt;br /&gt;
&lt;br /&gt;
== Basic Configuration == &lt;br /&gt;
&lt;br /&gt;
Begin the LXQt installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
=== Set up eudev ===&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
=== Allowing shut down and reboot ===&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
=== Auto-mounting USB drives ===&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
=== Enabling privilege escalation GUI ===&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
===  With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
=== Network browsing ===&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Panel Widgets ===&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation packages ==&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environments needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
=== External Resources ===&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User_talk:Pursuable1652&amp;diff=28642</id>
		<title>User talk:Pursuable1652</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User_talk:Pursuable1652&amp;diff=28642"/>
		<updated>2025-01-05T20:46:09Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Talk page comments&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Talk page comment signature=&lt;br /&gt;
Hi there, you can sign your talk page comments with &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Best regards &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 20:46, 5 January 2025 (UTC)&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=28523</id>
		<title>AppArmor</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=AppArmor&amp;diff=28523"/>
		<updated>2024-12-21T02:28:04Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Use path template. Remove HTML fluff.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&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;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should also install &amp;lt;code&amp;gt;apparmor-utils&amp;lt;/code&amp;gt; if you want to use the &amp;lt;code&amp;gt;aa&amp;lt;/code&amp;gt; command to interact with AppArmor.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|apparmor-utils}}}}&lt;br /&gt;
&lt;br /&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;
&lt;br /&gt;
&lt;br /&gt;
=== With SYSLINUX ===&lt;br /&gt;
&lt;br /&gt;
Use a text editor of your choice (preferably a TUI based one since some GUI setups don&#039;t work with privilege escalation, unless you use sudo -e) to edit {{path|/boot/extlinux.conf}} such that the &amp;lt;code&amp;gt;&#039;&#039;&#039;APPEND&#039;&#039;&#039;&amp;lt;/code&amp;gt; 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;
To persist your changes between kernel updates (which overwrite {{path|/boot/extlinux.conf}}), edit {{path|/etc/update-extlinux.conf}}, and append your &amp;lt;code&amp;gt;lsm=landlock,yama,apparmor&amp;lt;/code&amp;gt; parameter to &amp;lt;code&amp;gt;default_kernel_opts&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== With GRUB ===&lt;br /&gt;
&lt;br /&gt;
Add the following at the end of the value for key &amp;lt;code&amp;gt;&#039;&#039;&#039;GRUB_CMDLINE_LINUX_DEFAULT&#039;&#039;&#039;&amp;lt;/code&amp;gt; to {{path|/etc/default/grub}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apparmor=1 security=apparmor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then apply with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# grub-mkconfig -o /boot/grub/grub.cfg}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
&lt;br /&gt;
Next, start AppArmor and tell [[OpenRC]] to start it on boot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service apparmor start}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add apparmor boot}}&lt;br /&gt;
&lt;br /&gt;
You can check if AppArmor is running with the command &amp;lt;code&amp;gt;aa-enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-enabled}}&lt;br /&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 following installation&lt;br /&gt;
&lt;br /&gt;
=== Enabling Extra Profiles ===&lt;br /&gt;
&lt;br /&gt;
Extra profiles reside in {{Path|/usr/share/apparmor/extra-profiles/}}. In order to enable to profile, it needs to be copied to {{Path|/etc/apparmor.d/}}:&lt;br /&gt;
&lt;br /&gt;
If you want to enable the profile for &amp;lt;code&amp;gt;usr.bin.chromium-browser&amp;lt;/code&amp;gt;, for example:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# cp /usr/share/apparmor/extra-profiles/usr.bin.chromium-browser /etc/apparmor.d/}}&lt;br /&gt;
&lt;br /&gt;
This will &#039;&#039;install&#039;&#039; the profile, it then needs to be set to &#039;&#039;&#039;complain&#039;&#039;&#039; or &#039;&#039;&#039;enforce&#039;&#039;&#039; mode:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-complain /etc/apparmor.d/usr.bin.chromium-browser}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Use &amp;lt;code&amp;gt;aa-enforce&amp;lt;/code&amp;gt; to set it to enforce mode, &#039;&#039;&#039;but beware that this could break functionality&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
=== Creating additional profiles ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The profiles provided by the apparmor-profiles package are just a starter. You can create your own profiles, but first you must install and start &amp;lt;code&amp;gt;audit&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|audit}}}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service auditd start}}&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add auditd}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can generate your own profiles with&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-easyprof /path/to/binary}}&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# aa-genprof /path/to/binary}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that for this to work you&#039;ll probably need to set a more verbose [https://linuxconfig.org/introduction-to-the-linux-kernel-log-levels kernel log level]. For improved security, set it back to a higher level afterwards.&lt;br /&gt;
&lt;br /&gt;
== Use ==&lt;br /&gt;
&lt;br /&gt;
View AppArmor&#039;s report:&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
If you notice a bunch of AppArmor errors on boot, try running &amp;lt;code&amp;gt;aa-status&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;aa-enabled&amp;lt;/code&amp;gt; in the terminal. If the output mentions AppArmor being disabled at boot, re-open your {{path|/boot/extlinux.conf}} file and make sure the &#039;&#039;&#039;APPEND&#039;&#039;&#039; line still ends with &amp;lt;code&amp;gt;lsm=landlock,yama,apparmor&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.apparmor.net/ AppArmor Wiki]&lt;br /&gt;
* [https://wiki.debian.org/AppArmor/HowToUse Debian Wiki: How to use AppArmor]&lt;br /&gt;
* [https://wiki.archlinux.org/title/AppArmor AppArmor entry on ArchWiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Security]]&lt;br /&gt;
[[Category:Kernel]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.22.0&amp;diff=28444</id>
		<title>Release Notes for Alpine 3.22.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.22.0&amp;diff=28444"/>
		<updated>2024-12-17T02:41:50Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Use appropriate templates, correct typos, and nitpicky grammar improvements that nobody cares about. :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As always, make sure to read [[Upgrading Alpine to a new major release]] when upgrading to a new release.&lt;br /&gt;
&lt;br /&gt;
If you experience any issues with the upgrade, please let us know and file an issue in our repositories.&lt;br /&gt;
&lt;br /&gt;
== Important changes ==&lt;br /&gt;
&lt;br /&gt;
== Significant changes ==&lt;br /&gt;
&lt;br /&gt;
The X11 session for KDE Plasma has been removed. If you had {{pkg|plasma-workspace-x11|branch=v3.21|arch=}} installed make sure to remove it from {{path|/etc/apk/world}}. Wayland is the only available option now.&lt;br /&gt;
&lt;br /&gt;
== Note-worthy updates ==&lt;br /&gt;
&lt;br /&gt;
As always, many packages were upgraded. Make sure to read the individual release notes of the projects you use.&lt;br /&gt;
&lt;br /&gt;
* Linux TODO&lt;br /&gt;
* busybox TODO&lt;br /&gt;
* GCC TODO&lt;br /&gt;
* LLVM TODO&lt;br /&gt;
* Go TODO&lt;br /&gt;
* Rust TODO&lt;br /&gt;
* PHP TODO&lt;br /&gt;
* GNOME TODO&lt;br /&gt;
* KDE Plasma TODO&lt;br /&gt;
* LXQt TODO&lt;br /&gt;
* Qt TODO&lt;br /&gt;
* wlroots TODO&lt;br /&gt;
&lt;br /&gt;
== Significant removals ==&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Custom_Kernel&amp;diff=28010</id>
		<title>Talk:Custom Kernel</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Custom_Kernel&amp;diff=28010"/>
		<updated>2024-12-03T02:06:10Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Unsigned comment attribution.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Needs to be adjusted for other archs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding [[Help:Signature|unsigned]] comment added by [[User:Orson Teodoro|Orson Teodoro]] ([[User talk:Orson Teodoro|{{int:talkpagelinktext}}]] • [[Special:Contributions/Orson Teodoro|{{int:contribslink}}]]) 03:36, 4 March 2018&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt;‎&lt;br /&gt;
&lt;br /&gt;
== Locations/paths of build config files ==&lt;br /&gt;
&lt;br /&gt;
My goal is to build the Virt (not Standard/LTS) kernel using the defaults for Virt, and I don&#039;t understand which files are needed in exactly which paths.&lt;br /&gt;
&lt;br /&gt;
I had difficulty understanding the excerpt below. Is anyone willing to assist me in understanding it? For example, where/what is the &amp;quot;linux-4.15&amp;quot; folder?&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;When you are done with your edits either by editing directly the APKBUILD and copying the lts.ARCH.config as .config in the linux-4.15 folder. You will then move the .config back overriding the lts.ARCH.config generated by make menuconfig.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding [[Help:Signature|unsigned]] comment added by [[User:-anthumchris-|-anthumchris-]] ([[User talk:-anthumchris-|{{int:talkpagelinktext}}]] • [[Special:Contributions/-anthumchris-|{{int:contribslink}}]]) 17:34, 23 November 2024‎&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.21.0&amp;diff=27837</id>
		<title>Release Notes for Alpine 3.21.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.21.0&amp;diff=27837"/>
		<updated>2024-11-17T22:28:54Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* LXQt 2.1 */ updated LXQt information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As always, make sure to read [[Upgrading Alpine to a new major release]] when upgrading to a new release.&lt;br /&gt;
&lt;br /&gt;
If you experience any issues with the upgrade, please let us know and file an issue in our repositories.&lt;br /&gt;
&lt;br /&gt;
== Important changes ==&lt;br /&gt;
&lt;br /&gt;
=== OpenSSH requires restart ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: Remove this section if https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/68589 gets merged before 3.21 is released }}&lt;br /&gt;
&lt;br /&gt;
You need to restart your sshd service!&lt;br /&gt;
&lt;br /&gt;
Since the &amp;lt;code&amp;gt;9.8_p1&amp;lt;/code&amp;gt; release, openssh-server is now split into two binaries, sshd and sshd-session. With this change sshd needs to be restarted to be able to accept new connections.&lt;br /&gt;
&lt;br /&gt;
Since managing services has always been out-of-scope for apk, we will NOT do the following for you:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rc-service --ifstarted sshd restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== New loongarch64 architecture ===&lt;br /&gt;
&lt;br /&gt;
Alpine 3.21 is the first release which is available for &amp;lt;code&amp;gt;loongarch64&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Thanks to the support of the team of Loongson dedicated to supporting Alpine Linux and many other contributors.&lt;br /&gt;
&lt;br /&gt;
=== Preparations for /usr-merge ===&lt;br /&gt;
&lt;br /&gt;
We plan for the next Alpine Linux, version 3.22, to contain the /usr-merge.&lt;br /&gt;
&lt;br /&gt;
A lot of preperations went into this release to ensure that the merge happens as smoothly as possible.&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: replace with actual blog post}}&lt;br /&gt;
&lt;br /&gt;
For more information, the timeline and the effects, read the blog post: https://gitlab.alpinelinux.org/alpine/infra/alpine-mksite/-/merge_requests/88/diffs&lt;br /&gt;
&lt;br /&gt;
== Significant changes ==&lt;br /&gt;
&lt;br /&gt;
=== Jellyfin ===&lt;br /&gt;
&lt;br /&gt;
Jellyfin now uses the recommended fork of ffmpeg called {{pkg|jellyfin-ffmpeg}} by default. If you want to change that, take a look at the &amp;lt;code&amp;gt;ffmpegpath&amp;lt;/code&amp;gt; variable in &amp;lt;code&amp;gt;/etc/conf.d/jellyfin&amp;lt;/code&amp;gt;. ([https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/69924 !69924])&lt;br /&gt;
&lt;br /&gt;
Jellyfin was disabled for ARM architectures (&amp;lt;code&amp;gt;aarch64&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;armv7&amp;lt;/code&amp;gt;) and is only available for &amp;lt;code&amp;gt;x86_64&amp;lt;/code&amp;gt;. The relevant issue is: https://gitlab.alpinelinux.org/alpine/aports/-/issues/16613&lt;br /&gt;
&lt;br /&gt;
=== Bats ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;main/bats&amp;quot; was renamed to &amp;quot;main/bats-core&amp;quot;. Now there is a meta package &amp;quot;community/bats&amp;quot; which contains:&lt;br /&gt;
&lt;br /&gt;
* bats-core&lt;br /&gt;
* bats-file&lt;br /&gt;
* bats-support&lt;br /&gt;
* bats-assert&lt;br /&gt;
&lt;br /&gt;
== Note-worthy updates ==&lt;br /&gt;
&lt;br /&gt;
As always, a lot of packages were upgraded. Make sure to read the indivdual release notes of the projects you use.&lt;br /&gt;
&lt;br /&gt;
* GCC 14.2.0&lt;br /&gt;
* LLVM 19&lt;br /&gt;
* Go 1.23.3&lt;br /&gt;
* Rust 1.82&lt;br /&gt;
* GNOME 47.1&lt;br /&gt;
* KDE Plasma 6.2.3&lt;br /&gt;
* LXQt 2.1.0&lt;br /&gt;
&lt;br /&gt;
=== GCC 14 ===&lt;br /&gt;
&lt;br /&gt;
GCC was upgraded to 14.2.0 and as a result all packages in Alpine 3.21 are compiled with GCC 14.2.0.&lt;br /&gt;
&lt;br /&gt;
Make sure to read all changes: https://gcc.gnu.org/gcc-14/changes.html&lt;br /&gt;
&lt;br /&gt;
=== LXQt 2.1 ===&lt;br /&gt;
&lt;br /&gt;
LXQt has been updated to release 2.1.0 &lt;br /&gt;
* It now uses Qt6&lt;br /&gt;
* Many parts of LXQt are now wayland ready¹, but wayland ports of the following are pending: {{pkg|screengrab}}, {{pkg|lxqt-globalkeys}}, and keyboard indicator, some input settings, and settings of monitor, power button, and screen locker.&lt;br /&gt;
* LXQt Panel has a new default application menu called Fancy Menu.&lt;br /&gt;
¹ [https://github.com/lxqt/lxqt-wayland-session lxqt-wayland-session] has not been packaged yet, but most folks wanting to test on wayland will want to use it.&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL 17 ===&lt;br /&gt;
&lt;br /&gt;
This release features {{pkg|postgresql17}}. We dropped support for {{pkg|postgresql14}}, and moved {{pkg|postgreSQL15}} from main to community.&lt;br /&gt;
&lt;br /&gt;
=== LLVM 19 ===&lt;br /&gt;
&lt;br /&gt;
We packaged LLVM 19 in our repositories. Coming to total of 5 supported LLVM versions: {{pkg|llvm19}}, {{pkg|llvm18}}, {{pkg|llvm17}}, {{pkg|llvm16}}, {{pkg|llvm15}}.&lt;br /&gt;
&lt;br /&gt;
== Significant removals ==&lt;br /&gt;
&lt;br /&gt;
=== ISC DHCP ===&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: Write something cool if https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/70974 (or alternative) is merged }}&lt;br /&gt;
&lt;br /&gt;
=== Gogs ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;gogs&amp;lt;/code&amp;gt; was removed due to multiple high-severity vulnerabilities which are open within a year. The developers of Gogs were contacted multiple times by the Forgejo team, but got no response. Therefore we removed Gogs from our repositories. ([https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/75304 !75304])&lt;br /&gt;
&lt;br /&gt;
Please consider migrating to {{pkg|forgejo|branch=edge|arch=}} or {{pkg|gitea|branch=edge|arch=}}. Both forks are available in our community repo, like gogs was.&lt;br /&gt;
&lt;br /&gt;
The Gitea fork of Gogs was created in 2016 by contributors who were annoyed by the single-maintainer management model of Gogs. Forgejo is a fork of Gitea, which was created because the for-profit company Gitea Ltd took over the maintainership, see also https://forgejo.org/compare-to-gitea/.&lt;br /&gt;
&lt;br /&gt;
=== neofetch ===&lt;br /&gt;
&lt;br /&gt;
The upstream repository was archived in April, therefore is unmaintained and we removed it from our repositories. {{pkg|fastfetch}} provides similar functionality.&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=27788</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=27788"/>
		<updated>2024-11-10T07:01:59Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Help wanted */ obconf-qt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation|Install]] Alpine Linux&lt;br /&gt;
* [[Setting_up_a_new_user#Creating_a_new_user|Create a user account]] (optional but recommended)&lt;br /&gt;
* [[Repositories#Enabling_the_community_repository|Enable the Community repository]]&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]] (running {{ic|setup-xorg-base}} is still a requirement even if using wayland) &lt;br /&gt;
&lt;br /&gt;
== Basic LXQt Desktop Installation ==&lt;br /&gt;
Begin the installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
Starting dbus (desktop bus) service:&lt;br /&gt;
{{Cmd|# rc-service dbus start}}&lt;br /&gt;
&lt;br /&gt;
Enabling dbus to start on boot:&lt;br /&gt;
{{Cmd|# rc-update add dbus}}&lt;br /&gt;
&lt;br /&gt;
If dbus is not running it leads to issues like missing icons and keyboard shortcuts.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
=== With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Allowing shut down and reboot ==&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
== Auto-mounting USB drives ==&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
== Network browsing ==&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
== Enabling privilege escalation GUI ==&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Panel Widgets ==&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environments needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
* lxqt-wayland-session (will be added to testing repo after LXQt 2.1 is packaged)&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are out-of-date:&lt;br /&gt;
* obconf-qt (need an X11+openbox user to build the latest version and test it)&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
&lt;br /&gt;
= External Resources =&lt;br /&gt;
&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=27755</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=27755"/>
		<updated>2024-11-07T01:54:27Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Help wanted */ Adjusted subtext for lxqt-wayland-session&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation|Install]] Alpine Linux&lt;br /&gt;
* [[Setting_up_a_new_user#Creating_a_new_user|Create a user account]] (optional but recommended)&lt;br /&gt;
* [[Repositories#Enabling_the_community_repository|Enable the Community repository]]&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]] (running {{ic|setup-xorg-base}} is still a requirement even if using wayland) &lt;br /&gt;
&lt;br /&gt;
== Basic LXQt Desktop Installation ==&lt;br /&gt;
Begin the installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
Starting dbus (desktop bus) service:&lt;br /&gt;
{{Cmd|# rc-service dbus start}}&lt;br /&gt;
&lt;br /&gt;
Enabling dbus to start on boot:&lt;br /&gt;
{{Cmd|# rc-update add dbus}}&lt;br /&gt;
&lt;br /&gt;
If dbus is not running it leads to issues like missing icons and keyboard shortcuts.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
=== With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Allowing shut down and reboot ==&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
== Auto-mounting USB drives ==&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
== Network browsing ==&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
== Enabling privilege escalation GUI ==&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Panel Widgets ==&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environments needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
* lxqt-wayland-session (will be added to testing repo after LXQt 2.1 is packaged)&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
&lt;br /&gt;
= External Resources =&lt;br /&gt;
&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=27675</id>
		<title>LXQt</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=LXQt&amp;diff=27675"/>
		<updated>2024-11-01T22:29:36Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Added note about help wanted for some LXQt packages that are not part of Alpine Linux, yet...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[[File:LXQt Minimal Installation.png | thumb | LXQt 1.3.0 Basic Install with Papirus icons]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://lxqt-project.org/ LXQt]&#039;&#039;&#039; is a lightweight QT based desktop environment. LXQt was originally a port of LXDE to QT (called LXDE-Qt), it was created due to LXDE maintainer Hong Jen Yee being dissatisfied with GTK 3. On 21 July 2013 the LXDE(-Qt) and [https://en.wikipedia.org/wiki/Razor-qt Razor-qt] projects merged creating LXQt.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation|Install]] Alpine Linux&lt;br /&gt;
* [[Setting_up_a_new_user#Creating_a_new_user|Create a user account]] (optional but recommended)&lt;br /&gt;
* [[Repositories#Enabling_the_community_repository|Enable the Community repository]]&lt;br /&gt;
* [[Alpine_setup_scripts#setup-xorg-base|Install Xorg]] (running {{ic|setup-xorg-base}} is still a requirement even if using wayland) &lt;br /&gt;
&lt;br /&gt;
== Basic LXQt Desktop Installation ==&lt;br /&gt;
Begin the installation by adding basic packages:&lt;br /&gt;
{{Cmd|# apk add {{Pkg|lxqt-desktop}} {{Pkg|lximage-qt}} {{Pkg|obconf-qt}} {{Pkg|pavucontrol-qt}}}}&lt;br /&gt;
If using Xorg, the following packages are also suggested:&amp;lt;br&amp;gt;&lt;br /&gt;
{{Cmd|# apk add {{Pkg|arandr}} {{Pkg|screengrab}} {{Pkg|sddm}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|By default LXQt on Xorg uses [[Openbox]] as its window manager (it is a dependency of the {{Pkg|lxqt-desktop}} package).  LXQt supports many different window managers and wayland compositors. Openbox has not been maintained for 9 years. Similar window managers are JWM and PeKWM. For additional Window Manager options See: [https://github.com/lxqt/lxqt/wiki/ConfigWindowManagers Window Managers Configuration on the LXQt GitHub wiki]}}&lt;br /&gt;
&lt;br /&gt;
Starting dbus (desktop bus) service:&lt;br /&gt;
{{Cmd|# rc-service dbus start}}&lt;br /&gt;
&lt;br /&gt;
Enabling dbus to start on boot:&lt;br /&gt;
{{Cmd|# rc-update add dbus}}&lt;br /&gt;
&lt;br /&gt;
If dbus is not running it leads to issues like missing icons and keyboard shortcuts.&lt;br /&gt;
&lt;br /&gt;
{{:Include:Setup_Device_Manager}}&lt;br /&gt;
&lt;br /&gt;
== Starting LXQt ==&lt;br /&gt;
&lt;br /&gt;
=== With a display manager (DM) ===&lt;br /&gt;
&lt;br /&gt;
If the package {{Pkg|sddm}} has been installed, SDDM may be started to log in graphically with your new user.&lt;br /&gt;
{{Cmd|# rc-service sddm start}}&lt;br /&gt;
&lt;br /&gt;
After correct operation is verified, sddm can be enabled to start up during boot:&lt;br /&gt;
{{Cmd|# rc-update add sddm}}&lt;br /&gt;
&lt;br /&gt;
=== From the command line ===&lt;br /&gt;
&lt;br /&gt;
LXQt for X11 may be started with:&lt;br /&gt;
{{cmd|# startlxqt}}&lt;br /&gt;
&lt;br /&gt;
== Localized keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
Preferences → LXQt Settings → Keyboard and Mouse → Keyboard Layout&lt;br /&gt;
&lt;br /&gt;
== Allowing shut down and reboot ==&lt;br /&gt;
&lt;br /&gt;
To enable users to shut down the machine or reboot, the packages {{Pkg|elogind}} and {{Pkg|polkit-elogind}} need to be installed.&lt;br /&gt;
{{Cmd|# apk add elogind polkit-elogind}}&lt;br /&gt;
&lt;br /&gt;
A reboot is required to let it take effect.&lt;br /&gt;
&lt;br /&gt;
== Auto-mounting USB drives ==&lt;br /&gt;
&lt;br /&gt;
To enable automatic mounting of USB drives, install these packages:&lt;br /&gt;
{{Cmd|# apk add {{pkg|gvfs|arch=}} {{pkg|udisks2|arch=}}}}&lt;br /&gt;
 &lt;br /&gt;
Depending on what devices you intend to mount, some additional packages may be needed:&lt;br /&gt;
{{Cmd|{{pkg|ntfs-3g|arch=}}        Stable, full-featured, read-write NTFS (driver)&lt;br /&gt;
{{pkg|gvfs-cdda|arch=}}      CDDA support for gvfs&lt;br /&gt;
{{pkg|gvfs-afp|arch=}}       AFP support for gvfs&lt;br /&gt;
{{pkg|gvfs-goa|arch=}}       GNOME Online Accounts support for gvfs&lt;br /&gt;
{{pkg|gvfs-mtp|arch=}}       MTP support for gvfs&lt;br /&gt;
{{pkg|gvfs-smb|arch=}}       Windows fileshare support for gvfs&lt;br /&gt;
{{pkg|gvfs-lang|arch=}}      Languages for package gvfs&lt;br /&gt;
{{pkg|gvfs-afc|arch=}}       Apple mobile devices support for gvfs&lt;br /&gt;
{{pkg|gvfs-nfs|arch=}}       NFS support for gvfs&lt;br /&gt;
{{pkg|gvfs-dev|arch=}}       Backends for the gio framework in GLib (development files)&lt;br /&gt;
{{pkg|gvfs-archive|arch=}}   Archiving support for gvfs&lt;br /&gt;
{{pkg|gvfs-dav|arch=}}       WebDAV support for gvfs&lt;br /&gt;
{{pkg|gvfs-fuse|arch=}}      FUSE support for gvfs&lt;br /&gt;
{{pkg|gvfs-gphoto2|arch=}}   gphoto2 support for gvfs&lt;br /&gt;
{{pkg|gvfs-avahi|arch=}}     DNS-SD support for gvfs}}&lt;br /&gt;
&lt;br /&gt;
To list descriptions of all gvfs- packages:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk info -d {{pkg|gvfs-*|arch=x86_64}}}}&lt;br /&gt;
&lt;br /&gt;
== Network browsing ==&lt;br /&gt;
&lt;br /&gt;
For browsing of network shares within LXQt that works with file associations, you can install the gvfs packages for the network protocols you use.&lt;br /&gt;
&lt;br /&gt;
For example, to browse in a SMB/cifs windows network:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-smb}}&lt;br /&gt;
&lt;br /&gt;
(Check: If the above may already be sufficient for gvfs to initiate the fuse kernel module. Else, try to identify if there are necessary steps in:)&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add gvfs-fuse}}&lt;br /&gt;
&lt;br /&gt;
The OpenRC script for fuse is in a separate package.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{pkg|fuse-openrc|arch=}}}}&lt;br /&gt;
&lt;br /&gt;
Then the fuse service can be started manually.&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service fuse start}}&lt;br /&gt;
&lt;br /&gt;
If it works, the fuse service can be added to start up automatically at boot time:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add fuse}}&lt;br /&gt;
&lt;br /&gt;
== Enabling privilege escalation GUI ==&lt;br /&gt;
&lt;br /&gt;
To enable the privilege escalation GUI for a doas/sudo user, you need to install {{Pkg|elogind}}, {{Pkg|polkit-elogind}}, and {{Pkg|sddm}}.&lt;br /&gt;
&lt;br /&gt;
To have elogind run, either make them start automatically at system start:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add elogind}}&lt;br /&gt;
&lt;br /&gt;
or start them manually for this time only:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service elogind start }}&lt;br /&gt;
&lt;br /&gt;
== Panel Widgets ==&lt;br /&gt;
&lt;br /&gt;
If you cannot add the CPU and System Statistics widgets to the panel, make sure {{Pkg|libstatgrab}} and {{Pkg|libsysstat}} are installed.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== Missing Icons and Fonts ===&lt;br /&gt;
&lt;br /&gt;
By default a Desktop Environments needs icons. {{Pkg|adwaita-icon-theme}} is a good start.&lt;br /&gt;
{{Cmd|# apk add adwaita-icon-theme}}&lt;br /&gt;
&lt;br /&gt;
See [[Fonts]] for more information on fonts.&lt;br /&gt;
&lt;br /&gt;
== Optional Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Screen Compositor ===&lt;br /&gt;
&lt;br /&gt;
To enable different effects (transparency, for example) {{Pkg|picom}} can be used.&lt;br /&gt;
&lt;br /&gt;
After installation, add it to the &#039;&#039;Autostart&#039;&#039; section of the &#039;&#039;&#039;LXQt Session Settings&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The default configuration is available in {{Path|/etc/xdg/picom.conf.example}}. For modifications, it can be copied to {{Path|~/.config/picom/picom.conf}} or {{Path|~/.config/picom.conf}}.&lt;br /&gt;
&lt;br /&gt;
Either modify the config file to your taste, or change the Autostart command line options. For example, &amp;lt;code&amp;gt;picom --vsync -r 12 --no-fading-openclose -b&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Appearance Tweaking ===&lt;br /&gt;
&lt;br /&gt;
==== Location of appearance-related configuration files ====&lt;br /&gt;
&lt;br /&gt;
User-specific configuration is stored in {{Path|~/.config/lxqt/}}.&lt;br /&gt;
&lt;br /&gt;
LXQt themes are [https://doc.qt.io/qt-6/stylesheet.html qss stylesheets]. They are located in {{Path|/usr/share/lxqt/themes/}} or {{Path|~/.local/share/lxqt/themes}}.&lt;br /&gt;
&lt;br /&gt;
Qt Palette colors can be modified in lxqt-config-appearence &amp;gt; Widget Style &amp;gt; Qt Palette. Custom palettes are saved in {{Path|~/.local/share/lxqt/palettes/}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional QT Styles ====&lt;br /&gt;
&lt;br /&gt;
Several packages provide additional QT Styles:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# apk add {{Pkg|adwaita-qt}} {{Pkg|breeze}} {{Pkg|oxygen}}}}&lt;br /&gt;
&lt;br /&gt;
They also provide additional cursors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Consistant Theming ====&lt;br /&gt;
&lt;br /&gt;
Adding the KEY=VAL &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=lxqt&amp;lt;/code&amp;gt; to the Environment section of the Session Settings [https://github.com/lxqt/lxqt-qtplugin#configuration-usage is suggested by the LXQt developers]. Then every Qt5 program can load the theme plugin.&lt;br /&gt;
&lt;br /&gt;
Another option, however, is to to install the package {{Pkg|qt5ct}} (from [[Repositories | Testing]]) and appending the line &amp;lt;code&amp;gt;QT_QPA_PLATFORMTHEME=qt5ct&amp;lt;/code&amp;gt; to the environmental settings in the Environment section of the Session Settings will allow you to achieve a unified appearance between apps. Then, in the LXQt Appearance Configuration, under Widget Style, set Qt Style to &amp;lt;code&amp;gt;qt5ct-style&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Packages ====&lt;br /&gt;
&lt;br /&gt;
When using themes found around the web, it is possible that they are dependant on different packages. Consider using {{Pkg|qt5-qtgraphicaleffects}}, {{Pkg|qt5-qtquickcontrols}}, and {{Pkg|qt5-qtquickcontrols2}}.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-config-doc}} &lt;br /&gt;
* {{Pkg|lxqt-openssh-askpass-doc}}&lt;br /&gt;
* {{Pkg|lxqt-panel-doc}} &lt;br /&gt;
* {{Pkg|lxqt-policykit-doc}} &lt;br /&gt;
* {{Pkg|lxqt-runner-doc}} &lt;br /&gt;
* {{Pkg|lxqt-session-doc}}&lt;br /&gt;
* {{Pkg|lxqt-sudo-doc}}&lt;br /&gt;
&lt;br /&gt;
== Development files ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-globalkeys-dev}} &lt;br /&gt;
* {{Pkg|lxqt-panel-dev}}&lt;br /&gt;
&lt;br /&gt;
== Misc ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lxqt-build-tools}}&lt;br /&gt;
&lt;br /&gt;
== Help wanted ==&lt;br /&gt;
&lt;br /&gt;
The following LXQt components are not yet packaged in Alpine Linux:&lt;br /&gt;
* lxqt_wallet&lt;br /&gt;
* lxqt-wayland-session (awaiting release)&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Installation#Post-Installation|Post Install]]&lt;br /&gt;
* [[Desktop environments and Window managers]]&lt;br /&gt;
&lt;br /&gt;
= External Resources =&lt;br /&gt;
&lt;br /&gt;
* [https://lxqt.github.io/ LXQt Homepage]&lt;br /&gt;
* [https://github.com/lxqt/lxqt LXQt on GitHub]&lt;br /&gt;
* [https://wiki.archlinux.org/title/LXQt LXQt entry on ArchWiki]&lt;br /&gt;
* [https://github.com/sddm/sddm SDDM Project on GitHub]&lt;br /&gt;
&lt;br /&gt;
[[Category:Desktop]]&lt;br /&gt;
[[Category:Desktop Environments]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Software_management&amp;diff=27656</id>
		<title>Software management</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Software_management&amp;diff=27656"/>
		<updated>2024-10-30T14:11:48Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Undo revision 27139 by Manoel (talk) remove self-promotion because people are complaining.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you want to run [https://www.gnu.org/software/libc/ glibc] programs in Alpine Linux, there are a few ways of doing so. You can install the [https://git.adelielinux.org/adelie/gcompat gcompat] compatibility layer, you can install glibc alongside [https://musl.libc.org/ musl] (manually, as it isn&#039;t packaged), or you could do it the easy way and use either Flatpak (the easiest), containers or a chroot.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because there are different use cases, this is just a slight overview about what&#039;s possible and what&#039;s sensible.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Your options =&lt;br /&gt;
&lt;br /&gt;
== gcompat ==&lt;br /&gt;
&lt;br /&gt;
gcompat is the go-to compatibility layer for Alpine users.&lt;br /&gt;
&lt;br /&gt;
 {{cmd|apk add {{pkg|gcompat}}}}&lt;br /&gt;
&lt;br /&gt;
After that you run your binaries as normal.&lt;br /&gt;
&lt;br /&gt;
== Flatpak ==&lt;br /&gt;
&lt;br /&gt;
Flatpak is by far the easiest method of running any graphical glibc program on Alpine.&lt;br /&gt;
Firstly install it.&lt;br /&gt;
&lt;br /&gt;
 {{cmd|apk add {{pkg|flatpak}}}}&lt;br /&gt;
&lt;br /&gt;
Then you can run any Flatpak application:&lt;br /&gt;
&lt;br /&gt;
 {{cmd|flatpak run &amp;lt;flatpak name&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
It is recommended to enable [https://flathub.org Flathub] using its instructions [https://flatpak.org/setup/Alpine/ here], as most glibc programs you might need will be packaged there.&lt;br /&gt;
&lt;br /&gt;
You can then install applications from it, for example:&lt;br /&gt;
&lt;br /&gt;
 {{cmd|flatpak install com.valvesoftware.Steam}}&lt;br /&gt;
&lt;br /&gt;
== Chroot ==&lt;br /&gt;
&lt;br /&gt;
An option that&#039;s easier to generalize to other glibc applications is installing a glibc-based distribution into a chroot. You can then either chroot into it, or use a symlink and some configuration to make its glibc (and associated libraries) usable from Alpine.&lt;br /&gt;
&lt;br /&gt;
After setting up a chroot using any of the methods described below, the loader can be set up in Alpine like so (these instructions are for a Debian chroot in /var/chroots/debian, on x86_64, but can be adapted to other systems by using the appropriate paths):&lt;br /&gt;
&lt;br /&gt;
{{cmd|mkdir -p /lib64&lt;br /&gt;
ln -s /var/chroots/debian/lib/x86_64-linux-gnu/ld-2.33.so /lib64&lt;br /&gt;
printf &#039;/var/chroots/debian/lib/x86_64-linux-gnu\n/var/chroots/debian/usr/lib/x86_64-linux-gnu\n&#039; &amp;gt; /etc/ld.so.conf&lt;br /&gt;
/var/chroots/debian/sbin/ldconfig}}&lt;br /&gt;
&lt;br /&gt;
=== Gentoo Linux ===&lt;br /&gt;
&lt;br /&gt;
Select a stage3 from [https://www.gentoo.org/downloads/ here] and portage latest from [https://www.gentoo.org/downloads/mirrors/ here] at gentoo/snapshots/portage-latest.tar.xz.&lt;br /&gt;
&lt;br /&gt;
First,&lt;br /&gt;
&lt;br /&gt;
{{cmd|doas apk add {{pkg|xz}}}}&lt;br /&gt;
&lt;br /&gt;
Enter the chroot:&lt;br /&gt;
{{cmd|mkdir ~/chroot&lt;br /&gt;
cd ~/chroot&lt;br /&gt;
tar -xvf stage3-*.tar.xz&lt;br /&gt;
tar -xvf portage-latest.tar.xz&lt;br /&gt;
mv portage usr&lt;br /&gt;
doas mount --bind /dev dev&lt;br /&gt;
doas mount --bind /sys sys&lt;br /&gt;
doas mount -t proc proc proc&lt;br /&gt;
cp /etc/resolv.conf etc&lt;br /&gt;
doas chroot . /bin/bash}}&lt;br /&gt;
&lt;br /&gt;
And voilà, you have your working Gentoo chroot!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can now take a look at [https://wiki.gentoo.org/wiki/Handbook:Main_Page Gentoo&#039;s Handbook] to find out how you can configure and install your system, or simply extract/copy the program you need to run in your chroot enviroment and execute it.&lt;br /&gt;
&lt;br /&gt;
Here is a wrapper script that is similar to &amp;lt;code&amp;gt;arch-chroot&amp;lt;/code&amp;gt; when you frequently reuse this chroot:&lt;br /&gt;
&lt;br /&gt;
Also, create an account with the same user name as host current user to the chroot or make changes to the userspec option to chroot line.&lt;br /&gt;
&lt;br /&gt;
{{Cat|gentoo-chroot.sh|&amp;lt;nowiki&amp;gt;!/bin/bash&lt;br /&gt;
CHROOT_PATH=&amp;quot;/home/$USER/chroot&amp;quot;&lt;br /&gt;
cd $CHROOT_PATH&lt;br /&gt;
mount | grep $CHROOT_PATH/dev || doas mount --bind /dev dev&lt;br /&gt;
mount | grep $CHROOT_PATH/sys || doas mount --bind /sys sys&lt;br /&gt;
mount | grep $CHROOT_PATH/proc || doas mount -t proc proc proc&lt;br /&gt;
cp /etc/resolv.conf etc&lt;br /&gt;
doas chroot --userspec=$USER:users . /bin/bash&lt;br /&gt;
echo &amp;quot;You must manually unmount $CHROOT_PATH/dev, $CHROOT_PATH/sys, $CHROOT_PATH/proc.&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Do at &amp;lt;code&amp;gt;chmod +x gentoo-chroot.sh&amp;lt;/code&amp;gt; to get it to work.&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux ===&lt;br /&gt;
&lt;br /&gt;
Either use &#039;&#039;&#039;pacstrap&#039;&#039;&#039; (included with the arch-install-scripts package) or an Arch bootstrap image:&lt;br /&gt;
&lt;br /&gt;
{{cmd|doas apk add {{pkg|arch-install-scripts}}&lt;br /&gt;
mkdir ~/chroot &amp;amp;&amp;amp; cd ~/chroot&lt;br /&gt;
curl -O https://mirrors.edge.kernel.org/archlinux/iso/latest/archlinux-bootstrap-x86_64.tar.gz&lt;br /&gt;
doas tar xzf archlinux-bootstrap-x86_64.tar.gz &amp;amp;&amp;amp; rm archlinux-bootstrap-x86_64.tar.gz&lt;br /&gt;
doas sed -i &#039;/evowise/s/^#//&#039; root.x86_64/etc/pacman.d/mirrorlist&lt;br /&gt;
doas sed -i &#039;/CheckSpace/s/^/#/&#039; root.x86_64/etc/pacman.conf&lt;br /&gt;
doas arch-chroot root.x86_64&lt;br /&gt;
[chroot]# pacman-key --init&lt;br /&gt;
[chroot]# pacman-key --populate archlinux}}&lt;br /&gt;
&lt;br /&gt;
Once that is done, update the system and install the desired package(s) (denoted by &#039;&#039;&amp;quot;foo&amp;quot;&#039;&#039; in this example):&lt;br /&gt;
  &lt;br /&gt;
{{cmd|[chroot]# pacman -Syu &#039;&#039;foo&#039;&#039;}}&lt;br /&gt;
&lt;br /&gt;
=== Debian ===&lt;br /&gt;
{{todo|gresec referencs need to be cleanly removed from this section.}}&lt;br /&gt;
Use the provided debootstrap package to create the Debian chroot. &amp;lt;code&amp;gt;--arch&amp;lt;/code&amp;gt; is optional, depending of your needs.&lt;br /&gt;
&lt;br /&gt;
On the &#039;&#039;&#039;linux-grsec&#039;&#039;&#039; kernel, you will need to relax chroot limitations:&lt;br /&gt;
&lt;br /&gt;
  sudo apk add debootstrap&lt;br /&gt;
  for i in /proc/sys/kernel/grsecurity/chroot_*; do echo 0 | sudo tee $i; done&lt;br /&gt;
  mkdir ~/chroot&lt;br /&gt;
  sudo debootstrap --arch=i386 wheezy ~/chroot https://deb.debian.org/debian/&lt;br /&gt;
  for i in /proc/sys/kernel/grsecurity/chroot_*; do echo 1 | sudo tee $i; done&lt;br /&gt;
  sudo chroot ~/chroot /bin/bash&lt;br /&gt;
&lt;br /&gt;
You can now use &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt; to install needed packages.&lt;br /&gt;
&lt;br /&gt;
== Containers ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s also possible to use Docker or Podman containers with a helper like Distrobox. This allows using graphical programs easily and doesn&#039;t require root privileges once set up.&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{pkg|distrobox}}}}&lt;br /&gt;
&lt;br /&gt;
=== Distrobox + Podman ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{pkg|podman}}}}&lt;br /&gt;
&lt;br /&gt;
Then set up rootless Podman, following [[Podman|these steps]].&lt;br /&gt;
You&#039;ll need to mount your root as shared for Distrobox to function.&lt;br /&gt;
&lt;br /&gt;
Fill in {{path|/etc/local.d/mount-rshared.start}} like so:&lt;br /&gt;
&lt;br /&gt;
{{cmd|#!/bin/sh&lt;br /&gt;
mount --make-rshared /}}&lt;br /&gt;
&lt;br /&gt;
Mark it as executable.&lt;br /&gt;
&lt;br /&gt;
{{cmd|# chmod +x /etc/local.d/mount-rshared.start}}&lt;br /&gt;
&lt;br /&gt;
Then autostart its service.&lt;br /&gt;
&lt;br /&gt;
{{cmd|# rc-update add local default&lt;br /&gt;
&amp;amp;#35; rc-service local start}}&lt;br /&gt;
&lt;br /&gt;
Finally you can create a container using your chosen image.&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ distrobox create --image debian --name debian&lt;br /&gt;
$ distrobox enter debian}}&lt;br /&gt;
&lt;br /&gt;
It may also be necessary to allow X authorization for GUI programs to work.&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ xhost +si:localuser:$USER}}&lt;br /&gt;
&lt;br /&gt;
== Chroot + Bubblewrap ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s also possible to use a Debian system chroot with Bubblewrap. This allows running programs without root.&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add bubblewrap debootstrap&lt;br /&gt;
&amp;amp;#35; mkdir -p /var/chroots/debian&lt;br /&gt;
&amp;amp;#35; debootstrap --arch amd64 stable /var/chroots/debian/ https://deb.debian.org/debian}}&lt;br /&gt;
&lt;br /&gt;
Finally we can make an alias for bwrap.&lt;br /&gt;
&lt;br /&gt;
{{cmd|$ alias glibc{{=}}&amp;quot;LANG{{=}}en_US.UTF-8 bwrap --bind /var/chroots/debian / --dev-bind /dev /dev --proc /proc --bind /sys /sys --bind /run /run --bind /home /home --ro-bind /etc/resolv.conf /etc/resolv.conf --ro-bind /etc/passwd /etc/passwd --ro-bind /etc/group /etc/group&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
To run programs that use X11/Xorg you can use: &lt;br /&gt;
{{cmd|$ alias glibcX11{{=}}&amp;quot;LANG{{=}}en_US.UTF-8 bwrap --bind /var/chroots/debian / --dev-bind /dev /dev --proc /proc --bind /sys /sys --bind /run /run --bind /home /home --ro-bind /etc/resolv.conf /etc/resolv.conf --ro-bind /etc/passwd /etc/passwd --ro-bind /etc/group /etc/group --bind /tmp/.X11-unix/X0 /tmp/.X11-unix/X0 --setenv DISPLAY :0&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
In this case you might need to use xhost to allow local connections, e.g.:&lt;br /&gt;
{{cmd|# xhost + local:}}&lt;br /&gt;
&lt;br /&gt;
Now we can invoke glibc-built binaries like so:&lt;br /&gt;
{{cmd|$ glibc ./binary}} or {{cmd|$ glibcX11 ./binary}} &lt;br /&gt;
&lt;br /&gt;
For updating the Chroot or installing dependencies we can mount it and then login as root:&lt;br /&gt;
{{cmd|# mount --bind /dev /var/chroots/debian/dev&lt;br /&gt;
&amp;amp;#35; mount --bind /proc /var/chroots/debian/proc&lt;br /&gt;
&amp;amp;#35; chroot /var/chroots/debian /bin/bash&lt;br /&gt;
&amp;amp;#35; apt update &amp;amp;&amp;amp; apt upgrade}}&lt;br /&gt;
&lt;br /&gt;
After installing what you might want to umount the binds for dev and proc to avoid issues. &lt;br /&gt;
{{cmd|# umount /var/chroots/debian/dev}}&lt;br /&gt;
{{cmd|# umount /var/chroots/debian/proc}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Apk_spec&amp;diff=27562</id>
		<title>Apk spec</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Apk_spec&amp;diff=27562"/>
		<updated>2024-10-14T22:34:37Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Fix a wikilink... Use path template in a few places, as appropriate.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Draft}}&lt;br /&gt;
&lt;br /&gt;
For end-user facing documentation about apk, check out the [[Alpine Package Keeper]] page.&lt;br /&gt;
&lt;br /&gt;
This page is an attempt to document the internal data structures of the apk package manager. The canonical implementation of the apk format is [https://gitlab.alpinelinux.org/alpine/apk-tools apk-tools] and much of this information is gleaned from reading the source code.&lt;br /&gt;
&lt;br /&gt;
There are three generations of the APK data formats. Version 1 is deprecated and no longer used, version 2 is currently the main version in use by apk-tools, and version 3 is under development. This page mostly describes the data formats used in version 2.&lt;br /&gt;
&lt;br /&gt;
= Background =&lt;br /&gt;
== Tar Segments ==&lt;br /&gt;
Tar segments are a set of tar records. Normal tar files contain two null records at the end of the tar file to signal the end of the tarball. Tar segments are lacking these two records and can thus be concatenated before other tar files and will behave as one continuous tar file. The APK v2 package format makes use of both tar segments and tarballs.&lt;br /&gt;
&lt;br /&gt;
Tar segments can be compressed using gzip compression. Gzip is a stream-based file format and multiple streams can be concatenated together. Most tooling will treat multiple gzip streams within a file as if it were a single stream. APK v2 files are aware of gzip streams and use them for file segmentation.&lt;br /&gt;
&lt;br /&gt;
= Package Format V2 =&lt;br /&gt;
== Binary Format ==&lt;br /&gt;
APK v2 packages contain two tar segments followed by a tarball each in their own gzip stream (3 streams total). These streams contain the package signature, control data, and package data. The package data is a tarball of the files contained in a package laid out in a way that allows it to be unpacked at the filesystem root such that all files are placed in the correct location on the system. The control tar segment contains the package metadata along with any install scripts. The signature tar segment contains a single file that is a binary signature over the control segment.&lt;br /&gt;
&lt;br /&gt;
The signature file is a DER encoded PKCS1v15 RSA signature of the SHA1 hash of the control tar segment gzip stream. The filename has the format &amp;lt;tt&amp;gt;.SIGN.RSA.&amp;lt;key_name&amp;gt;.rsa.pub&amp;lt;/tt&amp;gt; (for example &amp;lt;tt&amp;gt;.SIGN.RSA.alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub&amp;lt;/tt&amp;gt;). This file is placed inside of a tar record with permissions 0644, uid 0, and gid 0. This tar record (lacking end-of-tar records) is gzip compressed, forming a signature tar segment, and is concatenated onto the front of the combined control and data segments. [https://gitlab.alpinelinux.org/alpine/abuild/-/blob/master/abuild-sign.in abuild-sign] is responsible for generating these signature segments.&lt;br /&gt;
&lt;br /&gt;
Apk will verify a signature by looking in {{path|/etc/apk/keys}} for a file called &#039;&#039;exactly&#039;&#039; {{path|&amp;lt;key_name&amp;gt;.rsa.pub}} in {{path|/etc/apk/keys}}. If no such file is found, verification fails.&lt;br /&gt;
&lt;br /&gt;
The control segment contains the package metadata in a {{path|.PKGINFO}} file as well as all of the scripts (if any) that are used by apk during installation and removal of the package. For historical reasons all files in the control tar segment are prefixed with a dot (&amp;lt;tt&amp;gt;.&amp;lt;/tt&amp;gt;). The control segment is constructed by placing each file for the package into a tar record, concatenating those tar records, gzipping the tar records, and concatenating them onto the front of the data tarball. The SHA1 hash of this gzip stream is used as the checksum &amp;lt;tt&amp;gt;C:&amp;lt;/tt&amp;gt; field in the APKINDEX file.&lt;br /&gt;
&lt;br /&gt;
The data tarball is a standard gzipped tarball with extra PAX headers that contain the SHA1 hash of each file in the tar header for that file. The hash is contained in a header called {{path|APK-TOOLS.checksum.SHA1}}. Unlike the other tar streams this tarball does contain the two end-of-tar null records. It is always the final segment of an APK package. Hashes are added with the [https://gitlab.alpinelinux.org/alpine/abuild/-/blob/master/abuild-tar.c abuild-tar] tool.&lt;br /&gt;
&lt;br /&gt;
== PKGINFO Format ==&lt;br /&gt;
The PKGINFO file contains the package metadata. This is a plain-text file similar to INI files. Lines that begin with &amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt; are comments and ignored. Unlike INI files the parsing format of this file is very strict. Each key-value pair must be separated by exactly one space, one equal sign, and one more space (&amp;lt;tt&amp;gt; = &amp;lt;/tt&amp;gt;). Keys may be repeated in this file and should be treated as a list of values if repetitions are found.&lt;br /&gt;
&lt;br /&gt;
The specification for what fields are valid in PKGINFO is largely defined by [https://gitlab.alpinelinux.org/alpine/abuild/-/blob/master/abuild.in abuild]. As of July 2022 the following fields are supported:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;pkgname&amp;lt;/tt&amp;gt; - package name&lt;br /&gt;
* &amp;lt;tt&amp;gt;pkgver&amp;lt;/tt&amp;gt; - package version&lt;br /&gt;
* &amp;lt;tt&amp;gt;pkgdesc&amp;lt;/tt&amp;gt; - package description&lt;br /&gt;
* &amp;lt;tt&amp;gt;url&amp;lt;/tt&amp;gt; - package url&lt;br /&gt;
* &amp;lt;tt&amp;gt;builddate&amp;lt;/tt&amp;gt; - unix timestamp of the package build date/time&lt;br /&gt;
* &amp;lt;tt&amp;gt;packager&amp;lt;/tt&amp;gt; - name (and typically email) of person who built the package&lt;br /&gt;
* &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; - the installed-size of the package&lt;br /&gt;
* &amp;lt;tt&amp;gt;arch&amp;lt;/tt&amp;gt; - the architecture of the package (ex: x86_64)&lt;br /&gt;
* &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; - the origin name of the package&lt;br /&gt;
* &amp;lt;tt&amp;gt;commit&amp;lt;/tt&amp;gt; - the commit hash from which the package was built&lt;br /&gt;
* &amp;lt;tt&amp;gt;maintainer&amp;lt;/tt&amp;gt; - name (and typically email) of the package maintainer&lt;br /&gt;
* &amp;lt;tt&amp;gt;replaces_priority&amp;lt;/tt&amp;gt; - replaces priority field for package (integer)&lt;br /&gt;
* &amp;lt;tt&amp;gt;provider_priority&amp;lt;/tt&amp;gt; - provider priority for the package (integer)&lt;br /&gt;
* &amp;lt;tt&amp;gt;license&amp;lt;/tt&amp;gt; - license string for the package&lt;br /&gt;
* &amp;lt;tt&amp;gt;depend&amp;lt;/tt&amp;gt; - dependencies for the package (repeated)&lt;br /&gt;
* &amp;lt;tt&amp;gt;replaces&amp;lt;/tt&amp;gt; - packages this package replaces (repeated)&lt;br /&gt;
* &amp;lt;tt&amp;gt;provides&amp;lt;/tt&amp;gt; - what this package provides (repeated)&lt;br /&gt;
* &amp;lt;tt&amp;gt;triggers&amp;lt;/tt&amp;gt; - what packages this package triggers on (repeated)&lt;br /&gt;
* &amp;lt;tt&amp;gt;install_if&amp;lt;/tt&amp;gt; - install this package if these packages are present (repeated)&lt;br /&gt;
* &amp;lt;tt&amp;gt;datahash&amp;lt;/tt&amp;gt; - hex-encoded sha256 checksum of the data tarball&lt;br /&gt;
&lt;br /&gt;
== Example of PKGINFO ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Generated by abuild 3.9.0-r2&lt;br /&gt;
# using fakeroot version 1.25.3&lt;br /&gt;
# Wed Jul  6 19:09:49 UTC 2022&lt;br /&gt;
pkgname = busybox&lt;br /&gt;
pkgver = 1.35.0-r18&lt;br /&gt;
pkgdesc = Size optimized toolbox of many common UNIX utilities&lt;br /&gt;
url = https://busybox.net/&lt;br /&gt;
builddate = 1657134589&lt;br /&gt;
packager = Buildozer &amp;lt;alpine-devel@lists.alpinelinux.org&amp;gt;&lt;br /&gt;
size = 958464&lt;br /&gt;
arch = x86_64&lt;br /&gt;
origin = busybox&lt;br /&gt;
commit = 332d2fff53cd4537d415e15e55e8ceb6fe6eaedb&lt;br /&gt;
maintainer = Sören Tempel &amp;lt;soeren+alpine@soeren-tempel.net&amp;gt;&lt;br /&gt;
provider_priority = 100&lt;br /&gt;
license = GPL-2.0-only&lt;br /&gt;
replaces = busybox-initscripts&lt;br /&gt;
provides = /bin/sh&lt;br /&gt;
triggers = /bin /usr/bin /sbin /usr/sbin /lib/modules/*&lt;br /&gt;
# automatically detected:&lt;br /&gt;
provides = cmd:busybox=1.35.0-r18&lt;br /&gt;
provides = cmd:sh=1.35.0-r18&lt;br /&gt;
depend = so:libc.musl-x86_64.so.1&lt;br /&gt;
datahash = 7d3351ac6c3ebaf18182efb5390061f50d077ce5ade60a15909d91278f70ada7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Package Building Example ==&lt;br /&gt;
This is a set of commands to partially build a package. &#039;&#039;&#039;DO NOT DO THIS&#039;&#039;&#039;, it&#039;s mainly an example to see how this all fits together. Use the official build tools to build packages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
tar -c .PKGNIFO .pre-install | abuild-tar --cut | gzip -9 &amp;gt; $controldir/control.tar.gz&lt;br /&gt;
cd $pkgdir; tar -c * | abuild-tar --hash | gzip -9 &amp;gt; $controldir/data.tar.gz&lt;br /&gt;
cat $controldir/control.tar.gz $controldir/data.tar.gz &amp;gt; mypackage-1.0-r0.apk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Index Format V2 =&lt;br /&gt;
== Binary Format ==&lt;br /&gt;
The index is served as [https://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz APKINDEX.tar.gz] and is downloaded by apk to power the package database. The index is signed similarly to packages. The main difference between the index and packages is that the index file contains only two segments.&lt;br /&gt;
&lt;br /&gt;
The signature segment is identical to a package segment and is concatenated, in its own gzip stream, to the beginning of the APKINDEX tarball.&lt;br /&gt;
&lt;br /&gt;
The APKINDEX tarball contains two files: a DESCRIPTION file and an APKINDEX file. Each of these files is in their own tar record and the final record is followed by the standard end-of-tar null records. The DESCRIPTION file is a simple text file containing a description of the index (ex: &amp;lt;tt&amp;gt;community v20210212-7170-g5c9853dc69&amp;lt;/tt&amp;gt;). The APKINDEX file is a text file containing records for each package in the repository in a text-based format. Each record is separated by a newline.&lt;br /&gt;
&lt;br /&gt;
== APKINDEX Format ==&lt;br /&gt;
The APKINDEX file contains a set of records extracted from the PKGINFO file of each package in the repository. Each line is prefixed with a letter, colon, and is followed by the value of the field. Lines are newline (&amp;lt;tt&amp;gt;\n&amp;lt;/tt&amp;gt;) terminated and there is one blank line between records for a package.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;apk_pkg_write_index_entry&amp;lt;/tt&amp;gt; function of [https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/ff7c8f6ee9dfa2add57b88dc271f6711030e72a0/src/package.c#L905 package.c] defines the currently accepted fields. As of July 2022, these are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;C:&amp;lt;/tt&amp;gt; - file checksum, see below&lt;br /&gt;
* &amp;lt;tt&amp;gt;P:&amp;lt;/tt&amp;gt; - package name (corresponds to &amp;lt;tt&amp;gt;pkgname&amp;lt;/tt&amp;gt; in PKGINFO)&lt;br /&gt;
* &amp;lt;tt&amp;gt;V:&amp;lt;/tt&amp;gt; - package version (corresponds to &amp;lt;tt&amp;gt;pkgver&amp;lt;/tt&amp;gt; in PKGINFO)&lt;br /&gt;
* &amp;lt;tt&amp;gt;A:&amp;lt;/tt&amp;gt; - architecture (corresponds to &amp;lt;tt&amp;gt;arch&amp;lt;/tt&amp;gt; in PKGINFO), optional&lt;br /&gt;
* &amp;lt;tt&amp;gt;S:&amp;lt;/tt&amp;gt; - size of entire package, integer&lt;br /&gt;
* &amp;lt;tt&amp;gt;I:&amp;lt;/tt&amp;gt; - installed size, integer (corresponds to &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; in PKGINFO)&lt;br /&gt;
* &amp;lt;tt&amp;gt;T:&amp;lt;/tt&amp;gt; - description (corresponds to &amp;lt;tt&amp;gt;pkgdesc&amp;lt;/tt&amp;gt; in PKGINFO)&lt;br /&gt;
* &amp;lt;tt&amp;gt;U:&amp;lt;/tt&amp;gt; - url (corresponds to &amp;lt;tt&amp;gt;url&amp;lt;/tt&amp;gt; in PKGINFO)&lt;br /&gt;
* &amp;lt;tt&amp;gt;L:&amp;lt;/tt&amp;gt; - license (corresponds to &amp;lt;tt&amp;gt;license&amp;lt;/tt&amp;gt; in PKGINFO)&lt;br /&gt;
* &amp;lt;tt&amp;gt;o:&amp;lt;/tt&amp;gt; - origin (corresponds to &amp;lt;tt&amp;gt;origin&amp;lt;/tt&amp;gt; in PKGINFO), optional&lt;br /&gt;
* &amp;lt;tt&amp;gt;m:&amp;lt;/tt&amp;gt; - maintainer (corresponds to &amp;lt;tt&amp;gt;maintainer&amp;lt;/tt&amp;gt; in PKGINFO), optional&lt;br /&gt;
* &amp;lt;tt&amp;gt;t:&amp;lt;/tt&amp;gt; - build time (corresponds to &amp;lt;tt&amp;gt;builddate&amp;lt;/tt&amp;gt; in PKGINFO), optional&lt;br /&gt;
* &amp;lt;tt&amp;gt;c:&amp;lt;/tt&amp;gt; - commit (corresponds to &amp;lt;tt&amp;gt;commit&amp;lt;/tt&amp;gt; in PKGINFO), optional&lt;br /&gt;
* &amp;lt;tt&amp;gt;k:&amp;lt;/tt&amp;gt; - provider priority, integer (corresponds to &amp;lt;tt&amp;gt;provider_priority&amp;lt;/tt&amp;gt; in PKGINFO), optional&lt;br /&gt;
* &amp;lt;tt&amp;gt;D:&amp;lt;/tt&amp;gt; - dependencies (corresponds to &amp;lt;tt&amp;gt;depend&amp;lt;/tt&amp;gt; in PKGINFO, concatenated by spaces into a single line)&lt;br /&gt;
* &amp;lt;tt&amp;gt;p:&amp;lt;/tt&amp;gt; - provides (corresponds to &amp;lt;tt&amp;gt;provides&amp;lt;/tt&amp;gt; in PKGINFO, concatenated by spaces into a single line)&lt;br /&gt;
* &amp;lt;tt&amp;gt;i:&amp;lt;/tt&amp;gt; - install if (corresponds to &amp;lt;tt&amp;gt;install_if&amp;lt;/tt&amp;gt; in PKGINFO, concatenated by spaces into a single line)&lt;br /&gt;
&lt;br /&gt;
== Package Checksum Field ==&lt;br /&gt;
The package checksum field is the SHA1 hash of the second gzip stream (control stream) in the package. The binary hash digest is base64 encoded. This is prefixed with &amp;lt;tt&amp;gt;Q1&amp;lt;/tt&amp;gt; to differentiate it from the MD5 hashes used in older index formats. It is not possible to compute this checksum with standard command line tools but the apk-tools can compute it in their &amp;lt;tt&amp;gt;index&amp;lt;/tt&amp;gt; operation.&lt;br /&gt;
&lt;br /&gt;
== Example APKINDEX Record ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:Q1P4IRU/u5yB4CSnUEBRD1WWwajrY=&lt;br /&gt;
P:jool-tools&lt;br /&gt;
V:4.1.5-r0&lt;br /&gt;
A:x86_64&lt;br /&gt;
S:140605&lt;br /&gt;
I:434176&lt;br /&gt;
T:Userspace control tools for SIIT / NAT64 Jool&lt;br /&gt;
U:https://www.jool.mx&lt;br /&gt;
L:GPL-2.0-only&lt;br /&gt;
o:jool-tools&lt;br /&gt;
m:Jakub Jirutka &amp;lt;jakub@jirutka.cz&amp;gt;&lt;br /&gt;
t:1620480809&lt;br /&gt;
c:771b3b0910ea9c7736db6ca4ff5c37ca9cf9af0d&lt;br /&gt;
D:so:libc.musl-x86_64.so.1 so:libnl-3.so.200 so:libnl-genl-3.so.200&lt;br /&gt;
p:cmd:jool=4.1.5-r0 cmd:jool_siit=4.1.5-r0 cmd:joold=4.1.5-r0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Installed Database V2 =&lt;br /&gt;
The installed database is used by apk to track which packages are installed and what modifications those packages have made to the system. This file is located at {{path|/lib/apk/db/installed}}. The installed file is a plaintext file of the same format as APKINDEX (contained in APKINDEX.tar.gz). It is neither compressed nor signed. Each record in the installed file starts with a package index record with the same fields as the APKINDEX file. The installed file adds some additional fields that are defined in [https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/ff7c8f6ee9dfa2add57b88dc271f6711030e72a0/src/database.c#L937 database.c]. As of July 2022 these additional fields are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;r:&amp;lt;/tt&amp;gt; - packages which this package replaces, space separated list&lt;br /&gt;
* &amp;lt;tt&amp;gt;q:&amp;lt;/tt&amp;gt; - replaces priority, integer, optional&lt;br /&gt;
* &amp;lt;tt&amp;gt;s:&amp;lt;/tt&amp;gt; - repository tag, optional, this will be set if the package is tagged to a repository in the world file (ex: linux@testing)&lt;br /&gt;
* &amp;lt;tt&amp;gt;f:&amp;lt;/tt&amp;gt; - indicates broken items, space separated (f=files, s=scripts, x=xattrs, S=file hashes)&lt;br /&gt;
&lt;br /&gt;
The following fields are repeated and in groups consist of a set of mutations made to the system to install the package.&lt;br /&gt;
&lt;br /&gt;
ACL lines are specified as uid, colon, gid, colon, and mode.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;F:&amp;lt;/tt&amp;gt; - directory name that was created by package, repeated&lt;br /&gt;
* &amp;lt;tt&amp;gt;M:&amp;lt;/tt&amp;gt; - directory ACL, only if different than the default of 0:0:0755&lt;br /&gt;
* &amp;lt;tt&amp;gt;R:&amp;lt;/tt&amp;gt; - file name, relative to preceding directory name&lt;br /&gt;
* &amp;lt;tt&amp;gt;a:&amp;lt;/tt&amp;gt; - file ACL&lt;br /&gt;
* &amp;lt;tt&amp;gt;Z:&amp;lt;/tt&amp;gt; - file checksum, if the checksum in the package is not none, a &amp;lt;tt&amp;gt;Q1&amp;lt;/tt&amp;gt; prefix indicates this will be a SHA1 hash in base64 format&lt;br /&gt;
&lt;br /&gt;
[[Category:Package Manager]] [[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Apcupsd&amp;diff=27561</id>
		<title>Apcupsd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Apcupsd&amp;diff=27561"/>
		<updated>2024-10-14T22:29:28Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Configuring and Testing Email Alerts */ Use path and cmd templates as appropriate.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using apcupsd to Monitor a USB-Attached APC UPS ==&lt;br /&gt;
&lt;br /&gt;
This wiki page shows how to install and configure the apcupsd package to monitor and report the statistics for an APC branded USB attached Uninterruptible Power Supply (UPS). The UPS model used in the examples is an APC SmartUPS 1000, but any APC or compatible model should work.&lt;br /&gt;
&lt;br /&gt;
The end goal is to make the UPS status available over the network so it can be monitored and used to trigger actions in a home automation system like [https://www.home-assistant.io/ Home Assistant].&lt;br /&gt;
&lt;br /&gt;
=== Installing and Configuring apcupsd ===&lt;br /&gt;
&lt;br /&gt;
The first step is to add the alpine package for apcupsd. After that, we&#039;ll rename the default configuration file and replace them with the parameters needed for our example USB attached APC Smart-UPS.&lt;br /&gt;
&lt;br /&gt;
Installation is by an APK package:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{pkg|apcupsd}}}}&lt;br /&gt;
&lt;br /&gt;
There is one main configuration file called &#039;&#039;/etc/apcupsd/apcupsd.conf&#039;&#039; that has all the tunable parameters along with many comments. We&#039;ll keep the original as a reference and then edit the parameters to suit.&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;# mv /etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd.conf~&lt;br /&gt;
&amp;amp;#35; grep -v &#039;^\s*$\|^\s*\#&#039; /etc/apcupsd/apcupsd.conf~ &amp;gt;/etc/apcupsd/apcupsd.conf&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now, edit the parameters in {{path|/etc/apcupsd/apcupsd.conf}} using the backup copy of the original file as a reference for comments. Some of the important parameters are listed below in order of appearance.&lt;br /&gt;
&lt;br /&gt;
* UPSNAME - This is to identify your UPS. Exact format is not important, but keep it short and don&#039;t use spaces.&lt;br /&gt;
* UPSCABLE - For a USB attached UPS, use the value &#039;&#039;usb&#039;&#039;&lt;br /&gt;
* USBTYPE - Similar to USBCABLE, use &#039;&#039;usb&#039;&#039;&lt;br /&gt;
* DEVICE - For a USB attached UPS, the parameter is not needed. Comment this line by using a # at the beginning.&lt;br /&gt;
&lt;br /&gt;
These four changes are enough to get started. Everything else can be left as default. Read the comments in the original {{path|apcupsd.conf~}} file to find out what the other parameters do and if you want to use them.&lt;br /&gt;
&lt;br /&gt;
{{Note|The comments in the config file say UPSNAME should be eight characters or less. This appears to be a limitation of using the parameter for storing the name in the UPS&#039;s EPROM. If you&#039;re not planning to update EPROM, longer names do not appear to cause problems. See the config section after &#039;&#039;Configuration statements used in updating the UPS EPROM&#039;&#039; for more detail. }}&lt;br /&gt;
&lt;br /&gt;
== Starting apcupsd ==&lt;br /&gt;
&lt;br /&gt;
The apcupsd package installs a service that allows you to control apcupsd using the standard tools. The following example shows how to start it and ensure it starts each time the system boots.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 alpine:/# rc-service apcupsd start&lt;br /&gt;
 * Starting APC UPS daemon ...&lt;br /&gt;
&lt;br /&gt;
 alpine:/# rc-update add apcupsd&lt;br /&gt;
 * service apcupsd added to runlevel default&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checking the Configuration ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;apcaccess&#039;&#039;&#039; command will communicate with the UPS via the apcupsd daemon&#039;s network port and report back what it finds. This is a good way to test your connection and configuration.&lt;br /&gt;
&lt;br /&gt;
A successful test will look similar to what&#039;s shown below. &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 alpine:/# apcaccess&lt;br /&gt;
 APC      : 001,043,1022&lt;br /&gt;
 DATE     : 2024-10-12 15:31:10 +0000&lt;br /&gt;
 HOSTNAME : alpine.home&lt;br /&gt;
 VERSION  : 3.14.14 (31 May 2016) unknown&lt;br /&gt;
 UPSNAME  : SmartUPS_1000&lt;br /&gt;
 CABLE    : USB Cable&lt;br /&gt;
 DRIVER   : USB UPS Driver&lt;br /&gt;
 UPSMODE  : Stand Alone&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The actual list of reported parameters is much longer, but the first few lines show the ones that have been customized in the configuration thus far. If you see the message &#039;&#039;Error contacting apcupsd @ localhost:3551: Connection refused&#039;&#039;, check to ensure the apcupsd service is running.&lt;br /&gt;
&lt;br /&gt;
== Configuring and Testing Email Alerts ==&lt;br /&gt;
&lt;br /&gt;
{{Note|In order to receive notifications, you must have mail delivery setup and working on your Alpine host. In addition, you should have an alias that sends email intended for root to a regular user. See the Alpine HOWTO [[Small-Time_Email_with_Exim_and_Dovecot]] for help with that.}}&lt;br /&gt;
&lt;br /&gt;
apcupsd will send alerts for important events using shell scripts in the {{path|/etc/apcupsd}} directory. These scripts and their alert functions are listed below.&lt;br /&gt;
&lt;br /&gt;
* changeme - sends an alert when batteries have reached the end of their useful life&lt;br /&gt;
* commfailure - apcupsd cannot communicate with the UPS&lt;br /&gt;
* commok - communication with the UPS has been restored after a failure&lt;br /&gt;
* offbattery - the UPS is back to running on mains power after running on battery&lt;br /&gt;
* onbattery - the ups has switched to battery power&lt;br /&gt;
&lt;br /&gt;
All of the scripts have a similar setup and rely on two environment variables, SYSADMIN and APCUPSD_MAIL, to deliver email alerts. To test the alerts, temporarily export these two variables and run one of the scripts from the command-line. The example below shows how to send a test alert for battery change.&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;# export SYSADMIN=root&lt;br /&gt;
# export APCUPSD_MAIL=mail&lt;br /&gt;
# sh /etc/apcupsd/changeme&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
If all goes well, you should receive an email telling you the UPS battery needs changing NOW. If you find you need to use different values for SYSADMIN or APCUPSD_MAIL, be sure to make those changes in {{path|/etc/apcupsd/apccontrol}}. The exported variables used in the test are temporary and will lost after you log out.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
Further configuration can be done to initiate automatic shutdown using the parameters in apcupsd.conf (see the original commented file apcupsd.conf~ for details.) You may also monitor the UPS via home automation using Home Assistant and the [https://www.home-assistant.io/integrations/apcupsd/ APC UPS Daemon integration].&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Apcupsd&amp;diff=27560</id>
		<title>Apcupsd</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Apcupsd&amp;diff=27560"/>
		<updated>2024-10-14T22:26:40Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Installing and Configuring apcupsd */ Use cmd, path, and pkg templates, ass appropriate.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Using apcupsd to Monitor a USB-Attached APC UPS ==&lt;br /&gt;
&lt;br /&gt;
This wiki page shows how to install and configure the apcupsd package to monitor and report the statistics for an APC branded USB attached Uninterruptible Power Supply (UPS). The UPS model used in the examples is an APC SmartUPS 1000, but any APC or compatible model should work.&lt;br /&gt;
&lt;br /&gt;
The end goal is to make the UPS status available over the network so it can be monitored and used to trigger actions in a home automation system like [https://www.home-assistant.io/ Home Assistant].&lt;br /&gt;
&lt;br /&gt;
=== Installing and Configuring apcupsd ===&lt;br /&gt;
&lt;br /&gt;
The first step is to add the alpine package for apcupsd. After that, we&#039;ll rename the default configuration file and replace them with the parameters needed for our example USB attached APC Smart-UPS.&lt;br /&gt;
&lt;br /&gt;
Installation is by an APK package:&lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add {{pkg|apcupsd}}}}&lt;br /&gt;
&lt;br /&gt;
There is one main configuration file called &#039;&#039;/etc/apcupsd/apcupsd.conf&#039;&#039; that has all the tunable parameters along with many comments. We&#039;ll keep the original as a reference and then edit the parameters to suit.&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;# mv /etc/apcupsd/apcupsd.conf /etc/apcupsd/apcupsd.conf~&lt;br /&gt;
&amp;amp;#35; grep -v &#039;^\s*$\|^\s*\#&#039; /etc/apcupsd/apcupsd.conf~ &amp;gt;/etc/apcupsd/apcupsd.conf&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Now, edit the parameters in {{path|/etc/apcupsd/apcupsd.conf}} using the backup copy of the original file as a reference for comments. Some of the important parameters are listed below in order of appearance.&lt;br /&gt;
&lt;br /&gt;
* UPSNAME - This is to identify your UPS. Exact format is not important, but keep it short and don&#039;t use spaces.&lt;br /&gt;
* UPSCABLE - For a USB attached UPS, use the value &#039;&#039;usb&#039;&#039;&lt;br /&gt;
* USBTYPE - Similar to USBCABLE, use &#039;&#039;usb&#039;&#039;&lt;br /&gt;
* DEVICE - For a USB attached UPS, the parameter is not needed. Comment this line by using a # at the beginning.&lt;br /&gt;
&lt;br /&gt;
These four changes are enough to get started. Everything else can be left as default. Read the comments in the original {{path|apcupsd.conf~}} file to find out what the other parameters do and if you want to use them.&lt;br /&gt;
&lt;br /&gt;
{{Note|The comments in the config file say UPSNAME should be eight characters or less. This appears to be a limitation of using the parameter for storing the name in the UPS&#039;s EPROM. If you&#039;re not planning to update EPROM, longer names do not appear to cause problems. See the config section after &#039;&#039;Configuration statements used in updating the UPS EPROM&#039;&#039; for more detail. }}&lt;br /&gt;
&lt;br /&gt;
== Starting apcupsd ==&lt;br /&gt;
&lt;br /&gt;
The apcupsd package installs a service that allows you to control apcupsd using the standard tools. The following example shows how to start it and ensure it starts each time the system boots.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 alpine:/# rc-service apcupsd start&lt;br /&gt;
 * Starting APC UPS daemon ...&lt;br /&gt;
&lt;br /&gt;
 alpine:/# rc-update add apcupsd&lt;br /&gt;
 * service apcupsd added to runlevel default&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checking the Configuration ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;apcaccess&#039;&#039;&#039; command will communicate with the UPS via the apcupsd daemon&#039;s network port and report back what it finds. This is a good way to test your connection and configuration.&lt;br /&gt;
&lt;br /&gt;
A successful test will look similar to what&#039;s shown below. &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 alpine:/# apcaccess&lt;br /&gt;
 APC      : 001,043,1022&lt;br /&gt;
 DATE     : 2024-10-12 15:31:10 +0000&lt;br /&gt;
 HOSTNAME : alpine.home&lt;br /&gt;
 VERSION  : 3.14.14 (31 May 2016) unknown&lt;br /&gt;
 UPSNAME  : SmartUPS_1000&lt;br /&gt;
 CABLE    : USB Cable&lt;br /&gt;
 DRIVER   : USB UPS Driver&lt;br /&gt;
 UPSMODE  : Stand Alone&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
The actual list of reported parameters is much longer, but the first few lines show the ones that have been customized in the configuration thus far. If you see the message &#039;&#039;Error contacting apcupsd @ localhost:3551: Connection refused&#039;&#039;, check to ensure the apcupsd service is running.&lt;br /&gt;
&lt;br /&gt;
== Configuring and Testing Email Alerts ==&lt;br /&gt;
&lt;br /&gt;
{{Note|In order to receive notifications, you must have mail delivery setup and working on your Alpine host. In addition, you should have an alias that sends email intended for root to a regular user. See the Alpine HOWTO [[Small-Time_Email_with_Exim_and_Dovecot]] for help with that.}}&lt;br /&gt;
&lt;br /&gt;
apcupsd will send alerts for important events using shell scripts in the /etc/apcupsd directory. These scripts and their alert functions are listed below.&lt;br /&gt;
&lt;br /&gt;
* changeme - sends an alert when batteries have reached the end of their useful life&lt;br /&gt;
* commfailure - apcupsd cannot communicate with the UPS&lt;br /&gt;
* commok - communication with the UPS has been restored after a failure&lt;br /&gt;
* offbattery - the UPS is back to running on mains power after running on battery&lt;br /&gt;
* onbattery - the ups has switched to battery power&lt;br /&gt;
&lt;br /&gt;
All of the scripts have a similar setup and rely on two environment variables, SYSADMIN and APCUPSD_MAIL, to deliver email alerts. To test the alerts, temporarily export these two variables and run one of the scripts from the command-line. The example below shows how to send a test alert for battery change.&lt;br /&gt;
&lt;br /&gt;
 alpine:/# export SYSADMIN=root&lt;br /&gt;
 alpine:/# export APCUPSD_MAIL=mail&lt;br /&gt;
 alpine:/# sh /etc/apcupsd/changeme&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all goes well, you should receive an email telling you the UPS battery needs changing NOW. If you find you need to use different values for SYSADMIN or APCUPSD_MAIL, be sure to make those changes in &#039;&#039;/etc/apcupsd/apccontrol&#039;&#039;. The exported variables used in the test are temporary and will lost after you log out.&lt;br /&gt;
&lt;br /&gt;
== Next Steps ==&lt;br /&gt;
&lt;br /&gt;
Further configuration can be done to initiate automatic shutdown using the parameters in apcupsd.conf (see the original commented file apcupsd.conf~ for details.) You may also monitor the UPS via home automation using Home Assistant and the [https://www.home-assistant.io/integrations/apcupsd/ APC UPS Daemon integration].&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Setting_up_a_LLDAP_server&amp;diff=27459</id>
		<title>Setting up a LLDAP server</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Setting_up_a_LLDAP_server&amp;diff=27459"/>
		<updated>2024-10-04T02:08:14Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Configure */ Use path template; typo fix.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General =&lt;br /&gt;
LLDAP is a small LDAP server designed for directory services without the overhead of a full blown OpenLDAP server. LLDAP server is designed for easy management using a simple web gui. It lacks some of the features found in other directory servers, because its specificly designed for easy use.&lt;br /&gt;
&lt;br /&gt;
= Install =&lt;br /&gt;
Installing LLDAP is fairly simple and can be done in less then 5 minutes. start by logging in as root:&lt;br /&gt;
{{Cmd|doas su -}}&lt;br /&gt;
Then we make sure the system is up to date and install wget:&lt;br /&gt;
{{Cmd|apk update &amp;amp;&amp;amp; apk upgrade &amp;amp;&amp;amp; apk add wget}}&lt;br /&gt;
Then we make the directory for LLDAP to live in and install the software:&lt;br /&gt;
{{Cmd|mkdir /opt/lldap &amp;amp;&amp;amp; cd /opt/lldap}}&lt;br /&gt;
{{Cmd|wget https://github.com/lldap/lldap/releases/download/v0.5.0/amd64-lldap.tar.gz &amp;amp;&amp;amp; tar xzf amd64-lldap.tar.gz &amp;amp;&amp;amp; mv amd64-lldap/* . &amp;amp;&amp;amp; rm -rf amd64-lldap}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configure =&lt;br /&gt;
To configure LLDAP we have to create a config file, and an rc file to start it automaticly upon boot. First we generate 2 random strings to use in the configuration as jwt_secret and key_seed:&lt;br /&gt;
{{Cmd| openssl rand -base64 15 &amp;amp;&amp;amp; openssl rand -base64 15}}&lt;br /&gt;
&lt;br /&gt;
Then we paste the following configuration into {{path|/opt/lldap/lldap_config.toml}} and replace the jwt_secret and key_seed with the random generated value&#039;s:&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ldap_port = 3890&lt;br /&gt;
http_port = 17170&lt;br /&gt;
http_url = &amp;quot;https://domain.tld&amp;quot;&lt;br /&gt;
jwt_secret = &amp;quot;very-long-string&amp;quot;&lt;br /&gt;
ldap_base_dn = &amp;quot;dc=domain,dc=tld&amp;quot;&lt;br /&gt;
ldap_user_dn = &amp;quot;admin&amp;quot;&lt;br /&gt;
ldap_user_email = &amp;quot;admin@domain.tld&amp;quot;&lt;br /&gt;
ldap_user_pass = &amp;quot;very-strong-password&amp;quot;&lt;br /&gt;
database_url = &amp;quot;sqlite:///opt/lldap/users.db?mode=rwc&amp;quot;&lt;br /&gt;
key_seed = &amp;quot;random-string-again&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[smtp_options]&lt;br /&gt;
#enable_password_reset=true&lt;br /&gt;
#server=&amp;quot;smtp.gmail.com&amp;quot;&lt;br /&gt;
#port=587&lt;br /&gt;
#smtp_encryption = &amp;quot;TLS&amp;quot;&lt;br /&gt;
#user=&amp;quot;sender@gmail.com&amp;quot;&lt;br /&gt;
#password=&amp;quot;password&amp;quot;&lt;br /&gt;
#from=&amp;quot;LLDAP Admin &amp;lt;sender@gmail.com&amp;gt;&amp;quot;&lt;br /&gt;
#reply_to=&amp;quot;Do not reply &amp;lt;noreply@localhost&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[ldaps_options]&lt;br /&gt;
#enabled=true&lt;br /&gt;
#port=6360&lt;br /&gt;
## Certificate file.&lt;br /&gt;
#cert_file=&amp;quot;/data/cert.pem&amp;quot;&lt;br /&gt;
## Certificate key file.&lt;br /&gt;
#key_file=&amp;quot;/data/key.pem&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Replace domain.tld with your chose domain name.&lt;br /&gt;
Next we need to create an openrc file so we can automatically start lldap:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|&amp;lt;nowiki&amp;gt;cat &amp;lt;&amp;lt;EOF &amp;gt; /etc/init.d/lldap&lt;br /&gt;
#!/sbin/openrc-run&lt;br /&gt;
&lt;br /&gt;
name=lldap&lt;br /&gt;
command=&amp;quot;/opt/lldap/lldap&amp;quot;&lt;br /&gt;
command_args=&amp;quot;run&amp;quot;&lt;br /&gt;
command_background=&amp;quot;yes&amp;quot;&lt;br /&gt;
pidfile=&amp;quot;/run/lldap.pid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
depend() {&lt;br /&gt;
        need net&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
start_pre()&lt;br /&gt;
{&lt;br /&gt;
        cd /opt/lldap&lt;br /&gt;
}&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
This is not an extensive file, but it gets you running and ensures lldap starts and works correctly.&lt;br /&gt;
Now we need to add it to the default runlevel and start the service&lt;br /&gt;
{{Cmd|chmod +x /etc/init.d/lldap &amp;amp;&amp;amp; rc-update add lldap}}&lt;br /&gt;
&lt;br /&gt;
= Use =&lt;br /&gt;
To use LLDAP we can browse to http://&amp;lt;ip&amp;gt;:17170 and login with the credentials we specified in the config file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is a basic configuration. You can now connect other services that support ldap logins to LLDAP.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
* Some troubleshooting information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Resources =&lt;br /&gt;
* https://github.com/lldap/lldap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.21.0&amp;diff=27430</id>
		<title>Release Notes for Alpine 3.21.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Release_Notes_for_Alpine_3.21.0&amp;diff=27430"/>
		<updated>2024-09-30T18:47:54Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: LXQt 2.0.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Highlights ==&lt;br /&gt;
&lt;br /&gt;
* Go 1.23.1&lt;br /&gt;
* Rust 1.81&lt;br /&gt;
* GNOME 47&lt;br /&gt;
* KDE Plasma 6.1.5&lt;br /&gt;
* LXQt 2.0.0&lt;br /&gt;
&lt;br /&gt;
== OpenSSH ==&lt;br /&gt;
&lt;br /&gt;
{{Note|TODO: Remove this section if https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/68589 gets merged before 3.21 is released }}&lt;br /&gt;
&lt;br /&gt;
You need to restart your sshd service!&lt;br /&gt;
&lt;br /&gt;
Since the &amp;lt;code&amp;gt;9.8_p1&amp;lt;/code&amp;gt; release, openssh-server is now split into two binaries, sshd and sshd-session. With this change sshd needs to be restarted to be able to accept new connections.&lt;br /&gt;
&lt;br /&gt;
Since managing services has always been out-of-scope for apk, we will NOT do the following for you:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
rc-service --ifstarted sshd restart&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GNOME 47 ==&lt;br /&gt;
&lt;br /&gt;
GNOME 47 made it into Alpine 3.21. Everything should work as expected. Make sure you read the GNOME 47 release notes: https://release.gnome.org/47/&lt;br /&gt;
&lt;br /&gt;
== LXQt 2.0.0 ==&lt;br /&gt;
&lt;br /&gt;
LXQt has been updated to release 2.0. &lt;br /&gt;
* It now uses Qt6&lt;br /&gt;
* Many parts of LXQt are now wayland ready¹, but wayland ports of the following are pending: {{pkg|screengrab}}, {{pkg|lxqt-globalkeys}}, LXQt Panel&#039;s task-bar² and keyboard indicator, some input settings, and settings of monitor, power button, and screen locker.&lt;br /&gt;
* LXQt Panel has a new default application menu called Fancy Menu.&lt;br /&gt;
¹ [https://github.com/lxqt/lxqt-wayland-session lxqt-wayland-session] has not been released or packaged yet, but most folks wanting to test on wayland will want to use it.&amp;lt;br&amp;gt;&lt;br /&gt;
² Most folks testing LXQt on wayland are using {{pkg|waybar}} temporarily until the task-bar is ported.&lt;br /&gt;
&lt;br /&gt;
== Jellyfin ==&lt;br /&gt;
&lt;br /&gt;
Jellyfin now uses the recommended fork of ffmpeg called &amp;lt;code&amp;gt;jellyfin-ffmpeg&amp;lt;/code&amp;gt; by default. If you want to change that, take a look at the &amp;lt;code&amp;gt;ffmpegpath&amp;lt;/code&amp;gt; variable in &amp;lt;code&amp;gt;/etc/conf.d/jellyfin&amp;lt;/code&amp;gt;. ([https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/69924 !69924])&lt;br /&gt;
&lt;br /&gt;
== Bats ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;main/bats&amp;quot; was renamed to &amp;quot;main/bats-core&amp;quot;. Now there is a meta package &amp;quot;community/bats&amp;quot; which contains:&lt;br /&gt;
&lt;br /&gt;
* bats-core&lt;br /&gt;
* bats-file&lt;br /&gt;
* bats-support&lt;br /&gt;
* bats-assert&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27355</id>
		<title>HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27355"/>
		<updated>2024-09-19T23:58:32Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: SSL support in HAProxy is deprecated, as it should be, replaced those references with TLS. Linked to packages.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.haproxy.org/ HAProxy] is a free, very fast, and reliable reverse-proxy offering high availability, load balancing, and proxying for TCP and HTTP-based applications.&lt;br /&gt;
&lt;br /&gt;
A unique feature is that HAProxy can be configured for TLS termination to occur locally on the HAProxy server or it can be configured to pass through TLS termination at the backend via SNI.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
HAProxy package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add {{pkg|haproxy}}}}&lt;br /&gt;
&lt;br /&gt;
=== System scripts ===&lt;br /&gt;
If you are running OpenRC, then you can install with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add {{pkg|haproxy-openrc}}}}&lt;br /&gt;
&lt;br /&gt;
If you are running runit, s6, or dinit, (or other), then there are no scripts packaged for your init systems yet. Please feel free to contribute a package with them.&lt;br /&gt;
&lt;br /&gt;
=== Local Documentation ===&lt;br /&gt;
If you want local documenation, then you can install that with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add {{pkg|haproxy-doc}}}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.haproxy.org/ HAProxy Homepage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Server]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=APKBUILD_examples:Neovim&amp;diff=27328</id>
		<title>APKBUILD examples:Neovim</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=APKBUILD_examples:Neovim&amp;diff=27328"/>
		<updated>2024-09-16T20:15:47Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* [Draft] Neovim plugin packaging policy */ Use issue template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [Draft] Neovim plugin packaging policy ==&lt;br /&gt;
&lt;br /&gt;
See {{issue|16021}}.&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
* Must be prefixed with &#039;&#039;&#039;nvim-&#039;&#039;&#039;&lt;br /&gt;
* Only have a single &#039;&#039;&#039;nvim-&#039;&#039;&#039; prefix:&lt;br /&gt;
** Use &#039;&#039;&#039;nvim-treesitter&#039;&#039;&#039;, instead of &#039;&#039;&#039;nvim-nvim-treesitter&#039;&#039;&#039;&lt;br /&gt;
* Omit &#039;&#039;&#039;.nvim&#039;&#039;&#039; suffix:&lt;br /&gt;
** Use &#039;&#039;&#039;nvim-telescope&#039;&#039;&#039;, instead of &#039;&#039;&#039;nvim-telescope.nvim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Version ===&lt;br /&gt;
&lt;br /&gt;
If there are no tags, upstream should be requested to release.&lt;br /&gt;
&lt;br /&gt;
=== Site ===&lt;br /&gt;
&lt;br /&gt;
Plugins must be installed in &#039;&#039;&#039;&amp;quot;$pkgdir&amp;quot;/usr/share/nvim/site/pack/dist/opt/$pkgname/&#039;&#039;&#039;. This allows users to lazy load apk managed neovim packages using: &#039;&#039;&#039;:packadd $pkgname&#039;&#039;&#039;, or &#039;&#039;&#039;vim.cmd.packadd(&#039;$pkgname&#039;)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Doc ===&lt;br /&gt;
&lt;br /&gt;
If upstream doesn&#039;t contain generated [https://neovim.io/doc/user/helphelp.html#%3Ahelptags helptags], do so in &#039;&#039;&#039;build&#039;&#039;&#039;:&lt;br /&gt;
 build() {&lt;br /&gt;
     nvim -u NONE -i NONE -e --headless -c &amp;quot;helptags doc&amp;quot; -c quit&lt;br /&gt;
 }&lt;br /&gt;
&#039;&#039;&#039;amove&#039;&#039;&#039; neovim help files and tags in &#039;&#039;&#039;doc&#039;&#039;&#039;:&lt;br /&gt;
 doc() {&lt;br /&gt;
     default_doc&lt;br /&gt;
     amove usr/share/nvim/site/pack/dist/opt/$pkgname/doc&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
&lt;br /&gt;
Skipping &#039;&#039;&#039;check&#039;&#039;&#039; is fine if testing a plugin requires vusted (which is not yet packaged):&lt;br /&gt;
 options=&amp;quot;!check&amp;quot;  # requires vusted&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
See [https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/community/nvim-lspconfig/APKBUILD?ref_type=heads community/nvim-lspconfig] for a complete example.&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template_talk:AlpineLatest&amp;diff=27250</id>
		<title>Template talk:AlpineLatest</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template_talk:AlpineLatest&amp;diff=27250"/>
		<updated>2024-09-08T01:02:58Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Indent replies; reply to Prabuanand.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This needs to be updated to the latest version (currently 3.18), but I can&#039;t do so as it is protected. [[User:Arrogance|Arrogance]] ([[User talk:Arrogance|talk]]) 11:24, 7 June 2023 (UTC)&lt;br /&gt;
:&amp;lt;s&amp;gt;Needs to be bumped again as we&#039;re now at 3.18.2&amp;lt;/s&amp;gt; [[User:Zcrayfish|zcrayfish]] ([[User talk:Zcrayfish|talk]]) 19:48, 26 July 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== There is a need for fixing AlpineLatest Template ==&lt;br /&gt;
&lt;br /&gt;
There is a need for fixing &#039;&#039;&#039;AlpineLatest&#039;&#039;&#039; Template. This template currently makes the truncation for 3.20.2 to appear as 3.2.  The correct truncation should be 3.20 and not 3.2.&lt;br /&gt;
&lt;br /&gt;
When the following is used &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt;, it evaluates to 3.2 and when used like &amp;lt;nowiki&amp;gt;{{AlpineLatest}}&amp;lt;/nowiki&amp;gt; it evaluates to 3.20.2.&lt;br /&gt;
 &lt;br /&gt;
This affects wiki documentation pages . For example, https://wiki.alpinelinux.org/wiki/Upgrading_Alpine#Upgrading_to_latest_release, appears as follows:&lt;br /&gt;
&lt;br /&gt;
To upgrade, in this example, from version 3.3 to 3.2, simply change:&lt;br /&gt;
http://dl-3.alpinelinux.org/alpine/v3.3/main&lt;br /&gt;
to&lt;br /&gt;
http://dl-3.alpinelinux.org/alpine/v3.2/main&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please fix this asap, as this issue affects [[Special:WhatLinksHere/Template:AlpineLatest|multiple pages]]&lt;br /&gt;
&lt;br /&gt;
[[User:Prabuanand|Prabuanand]] ([[User talk:Prabuanand|talk]]) 17:45, 5 September 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
:It&#039;s not an issue with the template, but it is my fault because I was the one who inserted &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt; all over the place in a lame effort to automatically update pages upon version changes... I gotta think about how best to fix this... Might be best to make the template smarter though. &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 16:06, 6 September 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
:My proposal is to change Template:AlpineLatest to what I currently have at [[Special:PermanentLink/27221|Template:Sandbox]], and then change all instances of &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt; to &amp;lt;nowiki&amp;gt; {{AlpineLatest|v}} &amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt; {{AlpineLatest|short}} &amp;lt;/nowiki&amp;gt; as appropriate. &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 18:32, 6 September 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Has the work been completed? The output in the sandbox still shows the same for both {{AlpineLatest|v}} and {{AlpineLatest|short}}. Refer [[Media:Template AlpineLatest.png|screenshot]] of what i see. Am i missing something?&lt;br /&gt;
::[[User:Prabuanand|Prabuanand]] ([[User talk:Prabuanand|talk]]) 08:54, 7 September 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Not yet &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 01:02, 8 September 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template_talk:AlpineLatest&amp;diff=27222</id>
		<title>Template talk:AlpineLatest</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template_talk:AlpineLatest&amp;diff=27222"/>
		<updated>2024-09-06T18:32:38Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Additional commentary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This needs to be updated to the latest version (currently 3.18), but I can&#039;t do so as it is protected. [[User:Arrogance|Arrogance]] ([[User talk:Arrogance|talk]]) 11:24, 7 June 2023 (UTC)&lt;br /&gt;
:&amp;lt;s&amp;gt;Needs to be bumped again as we&#039;re now at 3.18.2&amp;lt;/s&amp;gt; [[User:Zcrayfish|zcrayfish]] ([[User talk:Zcrayfish|talk]]) 19:48, 26 July 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== There is a need for fixing AlpineLatest Template ==&lt;br /&gt;
&lt;br /&gt;
There is a need for fixing &#039;&#039;&#039;AlpineLatest&#039;&#039;&#039; Template. This template currently makes the truncation for 3.20.2 to appear as 3.2.  The correct truncation should be 3.20 and not 3.2.&lt;br /&gt;
&lt;br /&gt;
When the following is used &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt;, it evaluates to 3.2 and when used like &amp;lt;nowiki&amp;gt;{{AlpineLatest}}&amp;lt;/nowiki&amp;gt; it evaluates to 3.20.2.&lt;br /&gt;
 &lt;br /&gt;
This affects wiki documentation pages . For example, https://wiki.alpinelinux.org/wiki/Upgrading_Alpine#Upgrading_to_latest_release, appears as follows:&lt;br /&gt;
&lt;br /&gt;
To upgrade, in this example, from version 3.3 to 3.2, simply change:&lt;br /&gt;
http://dl-3.alpinelinux.org/alpine/v3.3/main&lt;br /&gt;
to&lt;br /&gt;
http://dl-3.alpinelinux.org/alpine/v3.2/main&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please fix this asap, as this issue affects [[Special:WhatLinksHere/Template:AlpineLatest|multiple pages]]&lt;br /&gt;
&lt;br /&gt;
[[User:Prabuanand|Prabuanand]] ([[User talk:Prabuanand|talk]]) 17:45, 5 September 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
:It&#039;s not an issue with the template, but it is my fault because I was the one who inserted &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt; all over the place in a lame effort to automatically update pages upon version changes... I gotta think about how best to fix this... Might be best to make the template smarter though. &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 16:06, 6 September 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
:My proposal is to change Template:AlpineLatest to what I currently have at [[Special:PermanentLink/27221|Template:Sandbox]], and then change all instances of &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt; to &amp;lt;nowiki&amp;gt; {{AlpineLatest|v}} &amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt; {{AlpineLatest|short}} &amp;lt;/nowiki&amp;gt; as appropriate. &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 18:32, 6 September 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27221</id>
		<title>Template:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27221"/>
		<updated>2024-09-06T17:44:27Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Add documentation...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#switch: {{{1}}} | short = 3.20 | v = v3.20 | 3.20.3 }}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;!--                           ^^^^       ^^^^^   ^^^^^^&lt;br /&gt;
When updating this template, the latest version string must be changed three times, two lines above this comment&lt;br /&gt;
The first is the short version (major.minor)&lt;br /&gt;
The second is the short version prefixed with a lowercase v (vmajor.minor)&lt;br /&gt;
The final is the full version string (major.minor.patchlevel)--&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Template}}&lt;br /&gt;
This template produces a string containing the latest version of Alpine Linux&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;{{AlpineLatest|short|v}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{define|short|The string produced will only contain the minor and major version}}&lt;br /&gt;
{{define|v|The string produced will only contain the minor and major version prefixed with a v}}&lt;br /&gt;
&lt;br /&gt;
This template will only accept one parameter at a time, all parameters are optional.&amp;lt;br&amp;gt;&lt;br /&gt;
If no parameters are supplied, or the parameters which are supplied are invalid, the full version string (minor.major.patchlevel) will be produced.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Display the full version string of the latest Alpine Linux stable:&lt;br /&gt;
&amp;lt;pre&amp;gt;{{AlpineLatest}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
will produce:&lt;br /&gt;
{{AlpineLatest}}&lt;br /&gt;
&lt;br /&gt;
Display the short version string of the latest Alpine Linux stable:&lt;br /&gt;
&amp;lt;pre&amp;gt;{{AlpineLatest|short}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
will produce:&lt;br /&gt;
{{AlpineLatest|short}}&lt;br /&gt;
&lt;br /&gt;
Display the short version string of the latest Alpine Linux stable, prefixed with v:&lt;br /&gt;
&amp;lt;pre&amp;gt;{{AlpineLatest|v}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
will produce:&lt;br /&gt;
{{AlpineLatest|v}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!--If you&#039;re updating the string containing the latest version of Alpine, go to the top!--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27220</id>
		<title>Template:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27220"/>
		<updated>2024-09-06T17:15:00Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a test&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#switch: {{{1}}} | v = v3.20 | short = 3.20 | 3.20.3 }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27219</id>
		<title>Template:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27219"/>
		<updated>2024-09-06T17:04:55Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a test&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#if: {{{v}}} | Yes | No}}&lt;br /&gt;
{{#if: {{{v|}}} | Yes | No}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27218</id>
		<title>Template:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27218"/>
		<updated>2024-09-06T17:01:42Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a test&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#if: {{{v}}}|v|}}3.20.1&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27217</id>
		<title>Template:Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template:Sandbox&amp;diff=27217"/>
		<updated>2024-09-06T17:00:03Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Testing AlpineLatest template...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a test&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#if: {{{v}}}|v}}3.20.1&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Sandbox&amp;diff=27216</id>
		<title>Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Sandbox&amp;diff=27216"/>
		<updated>2024-09-06T16:58:47Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: working on AlpineLatest template...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a test&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
{{#if: {{{v}}}|v}}3.20.1&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Template_talk:AlpineLatest&amp;diff=27212</id>
		<title>Template talk:AlpineLatest</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Template_talk:AlpineLatest&amp;diff=27212"/>
		<updated>2024-09-06T16:06:38Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* There is a need for fixing AlpineLatest Template */ Commentary added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This needs to be updated to the latest version (currently 3.18), but I can&#039;t do so as it is protected. [[User:Arrogance|Arrogance]] ([[User talk:Arrogance|talk]]) 11:24, 7 June 2023 (UTC)&lt;br /&gt;
:&amp;lt;s&amp;gt;Needs to be bumped again as we&#039;re now at 3.18.2&amp;lt;/s&amp;gt; [[User:Zcrayfish|zcrayfish]] ([[User talk:Zcrayfish|talk]]) 19:48, 26 July 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== There is a need for fixing AlpineLatest Template ==&lt;br /&gt;
&lt;br /&gt;
There is a need for fixing &#039;&#039;&#039;AlpineLatest&#039;&#039;&#039; Template. This template currently makes the truncation for 3.20.2 to appear as 3.2.  The correct truncation should be 3.20 and not 3.2.&lt;br /&gt;
&lt;br /&gt;
When the following is used &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt;, it evaluates to 3.2 and when used like &amp;lt;nowiki&amp;gt;{{AlpineLatest}}&amp;lt;/nowiki&amp;gt; it evaluates to 3.20.2.&lt;br /&gt;
 &lt;br /&gt;
This affects wiki documentation pages . For example, https://wiki.alpinelinux.org/wiki/Upgrading_Alpine#Upgrading_to_latest_release, appears as follows:&lt;br /&gt;
&lt;br /&gt;
To upgrade, in this example, from version 3.3 to 3.2, simply change:&lt;br /&gt;
http://dl-3.alpinelinux.org/alpine/v3.3/main&lt;br /&gt;
to&lt;br /&gt;
http://dl-3.alpinelinux.org/alpine/v3.2/main&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please fix this asap, as this issue affects [[Special:WhatLinksHere/Template:AlpineLatest|multiple pages]]&lt;br /&gt;
&lt;br /&gt;
[[User:Prabuanand|Prabuanand]] ([[User talk:Prabuanand|talk]]) 17:45, 5 September 2024 (UTC)&lt;br /&gt;
&lt;br /&gt;
:It&#039;s not an issue with the template, but it is my fault because I was the one who inserted &amp;lt;nowiki&amp;gt; {{#expr:{{AlpineLatest}}}} &amp;lt;/nowiki&amp;gt; all over the place in a lame effort to automatically update pages upon version changes... I gotta think about how best to fix this... Might be best to make the template smarter though. &amp;amp;ndash;[[User:zcrayfish|zcrayfish]] &amp;lt;small&amp;gt;([[User talk:zcrayfish|talk]]•[[Special:Contributions/zcrayfish|contribs]]•[[Special:EmailUser/zcrayfish|send email]])&amp;lt;/small&amp;gt; 16:06, 6 September 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Alpine_configuration_management_scripts&amp;diff=27094</id>
		<title>Talk:Alpine configuration management scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Alpine_configuration_management_scripts&amp;diff=27094"/>
		<updated>2024-08-18T04:42:00Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Unsigned comment attribution. Separate topics with HR&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Automate Alpine Linux installation ==&lt;br /&gt;
&lt;br /&gt;
I am trying to achieve unattended Alpine Linux installation. I went through the Alpine automatic installation guide via setup-alpine script, but when I follow this guide there are many manual interventions are needed during the installation!&lt;br /&gt;
one during writing the root user name, another time when creating the answer file (setup-alpine -c answerfileName), editing the answer file, calling the actual installation command (setup-alpine -f answerfileName) and reset the root password. Is there any way to include the answer file inside the ISO image and select the root user by default before starting the installation and set its password as well after the installation is done (something similar to the kickstart file in the debian distros) ?&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!-- Template:Unsigned --&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot; style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding unsigned comments added by [[User:Khaled.elgohary|Khaled.elgohary ]] ([[User talk:Khaled.elgohary #top|talk]] • [[Special:Contributions/Khaled.elgohary |contribs]]) 12:20, 7 February 2022‎&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The [[https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts#setup-alpine| setup-alpine]] section currently gives instructions that may appear to be contradictory: &lt;br /&gt;
&lt;br /&gt;
&amp;quot;17. if installation mode selected during setup-disk was &amp;quot;data&amp;quot; instead of &amp;quot;sys&amp;quot;, then: setup-lbu [/media/sdb1]&lt;br /&gt;
&lt;br /&gt;
18. if installation mode selected during setup-disk was &amp;quot;data&amp;quot; instead of &amp;quot;sys&amp;quot;, then: setup-apkcache [/media/sdb1/cache | none]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
One of these presumably refers to the case for &amp;quot;sys&amp;quot;, but which?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding [[Help:Signature|unsigned]] comment added by [[User:John3-16|John3-16]] ([[User talk:John3-16|{{int:talkpagelinktext}}]] • [[Special:Contributions/John3-16|{{int:contribslink}}]]) 09:56, 15 August 2024‎&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_a_btrfs_filesystem_with_refind_as_boot_manager&amp;diff=26967</id>
		<title>Install Alpine on a btrfs filesystem with refind as boot manager</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Install_Alpine_on_a_btrfs_filesystem_with_refind_as_boot_manager&amp;diff=26967"/>
		<updated>2024-08-03T20:52:02Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Use pkg template instead of external link to the package oracle.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; It is assumed that your other OS is already installed and working with &amp;lt;code&amp;gt;[[#rEFInd|rEFInd]]&amp;lt;/code&amp;gt; as boot manager and your filesystem is [[btrfs]]. Currently &amp;lt;code&amp;gt;[[#rEFInd|rEFInd]]&amp;lt;/code&amp;gt; is available as the package {{pkg|refind|branch=edge|repo=testing}} in the testing repository.&lt;br /&gt;
&lt;br /&gt;
Boot your PC from the Alpine Linux USB. Once booted, log in as root (no password required).&lt;br /&gt;
Identify your partitions by using the command.&lt;br /&gt;
&lt;br /&gt;
{{cmd|# blkid}}&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/dev/nvme0n1p1: UUID=&amp;quot;55C3-8AB4&amp;quot; TYPE=&amp;quot;vfat&amp;quot;&lt;br /&gt;
/dev/nvme0n1p2: UUID=&amp;quot;dab64e31-fb89-4364-b90f-b79400f73304&amp;quot; TYPE=&amp;quot;swap&amp;quot;&lt;br /&gt;
/dev/nvme0n1p3: LABEL=&amp;quot;BTRFSVOL&amp;quot; UUID=&amp;quot;823a3283-30a7-4fef-b50b-8a2230c71b5b&amp;quot; TYPE=&amp;quot;btrfs&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mount the btrfs partition to /mnt. &lt;br /&gt;
&lt;br /&gt;
{{cmd|# mount /dev/nvme0n1p3 /mnt -t btrfs}}&lt;br /&gt;
&lt;br /&gt;
Run the setup script: &lt;br /&gt;
&lt;br /&gt;
{{cmd|# setup-alpine }}&lt;br /&gt;
&lt;br /&gt;
This will guide you through basic system configuration. Follow the prompts to:&lt;br /&gt;
&lt;br /&gt;
* Select keyboard layout&lt;br /&gt;
* Set hostname&lt;br /&gt;
* Configure network (choose your WiFi interface and enter your WiFi credentials)&lt;br /&gt;
* Set root password&lt;br /&gt;
* Choose timezone&lt;br /&gt;
* Choose NTP client (chronyd)&lt;br /&gt;
* Choose a mirror for packages&lt;br /&gt;
* Create a new user (optional but recommended)&lt;br /&gt;
* After this accept the remaining choices, if any.&lt;br /&gt;
&lt;br /&gt;
Once basic setup is complete, prepare your disk for installation of Alpine as a subvolume in the [[btrfs]] filesystem:&lt;br /&gt;
&lt;br /&gt;
Create a new [[Btrfs]] subvolume for Alpine and you need {{Pkg|btrfs-progs}} package &lt;br /&gt;
&lt;br /&gt;
{{cmd|# apk add btrfs-progs }} &lt;br /&gt;
Create a new Btrfs subvolume for Alpine:&lt;br /&gt;
{{cmd|# btrfs subvolume create /mnt/@alpine}}&lt;br /&gt;
&lt;br /&gt;
Create a new mountpoint and mount the newly created subvolume:&lt;br /&gt;
{{cmd|# mkdir /mnt/os}}&lt;br /&gt;
&amp;lt;pre&amp;gt;# mount -o subvol=@alpine /dev/nvme0n1p3 /mnt/os&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install the base system using the below command:&lt;br /&gt;
{{cmd|# setup-disk -m sys /mnt/os}}&lt;br /&gt;
&lt;br /&gt;
This will install the base system to the mounted subvolume. Once the base system is installed, chroot into the new system:&lt;br /&gt;
{{cmd|# chroot /mnt/os}}&lt;br /&gt;
&lt;br /&gt;
Edit /etc/fstab to use the correct subvolume. Ensure that root entry looks like below. Mounting the efi partition is optional. If you want to share your @home subvolume between both the operating systems, you can also add an entry for it now.&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/fstab |&amp;lt;nowiki&amp;gt;&lt;br /&gt;
UUID=823a3283-30a7-4fef-b50b-8a2230c71b5b	/	btrfs	rw,relatime,compress=zlib:3,ssd,discard=async,space_cache=v2,subvol=/@alpine 0 1&lt;br /&gt;
UUID=55C3-8AB4	/boot/efi	vfat	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=utf8,shortname=mixed,errors=remount-ro 0 2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Verify linux kernel is installed successfully.&lt;br /&gt;
{{cmd|# apk list --installed |grep linux}}&lt;br /&gt;
&lt;br /&gt;
If your other OS is already installed and working with refind as boot manager, then there is no need to install refind here. &lt;br /&gt;
You may want to remove the grub and grub-efi packages&lt;br /&gt;
{{cmd|# apk del grub grub-efi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Exit the chroot:&lt;br /&gt;
{{cmd|# exit}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mount the EFI partition to edit the refind.conf file&lt;br /&gt;
{{cmd|# mkdir /mnt/os/boot/efi}}&lt;br /&gt;
&lt;br /&gt;
{{cmd|# mount dev/nvme0n1p1 /mnt/os/boot/efi}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit /mnt/os/boot/efi/EFI/refind/refind.conf to boot alpine by adding an entry for Alpine Linux as shown below:&lt;br /&gt;
&lt;br /&gt;
{{Cat|/boot/efi/EFI/refind/refind.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
menuentry &amp;quot;Alpine Linux&amp;quot; {&lt;br /&gt;
    volume   &amp;quot;BTRFSVOL&amp;quot;&lt;br /&gt;
    loader   @alpine/boot/vmlinuz-lts&lt;br /&gt;
    initrd   @alpine/boot/initramfs-lts&lt;br /&gt;
    options  &amp;quot;root=UUID=823a3283-30a7-4fef-b50b-8a2230c71b5b rw rootflags=subvol=@alpine rootfstype=btrfs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Do not use PARTUUID in refind.conf as it does not work for booting alpine.&lt;br /&gt;
&lt;br /&gt;
Unmount everything:&lt;br /&gt;
{{cmd|# umount -R /mnt}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reboot your system.&lt;br /&gt;
{{cmd|# reboot}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, you should now see an option to boot into Alpine Linux in the rEFInd boot menu.&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.org/title/REFInd#For_manual_boot_stanzas Refind in Arch Wiki]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26949</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26949"/>
		<updated>2024-07-26T17:24:40Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Convert weblinks to wikilinks. Remove fluff.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. You are free to choose your reverse proxy of choice, as the Matrix Synapse documentation has examples for each one. I recommend [[nginx]].&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [[Postgresql|PostgreSQL article]]. It is recommended that you install the latest PostgreSQL release available, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql_16&amp;diff=26948</id>
		<title>Postgresql 16</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql_16&amp;diff=26948"/>
		<updated>2024-07-26T17:19:41Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: /* Install */ Use pkg template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General = &lt;br /&gt;
PostgreSQL is a well known opensource database that scales well and is easy to use. In Alpine v3.20 we can install the latest version using the package postgresql16&lt;br /&gt;
&lt;br /&gt;
= Install =&lt;br /&gt;
{{Cmd|apk add {{pkg|postgresql16|arch=}} {{pkg|postgresql16-contrib|arch=}} {{pkg|postgresql16-openrc|arch=}}}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 16 server and perform some initial configuration.&lt;br /&gt;
&lt;br /&gt;
= Configure =&lt;br /&gt;
Login as the postgres user and start psql to create a new user and database:&lt;br /&gt;
{{Cmd|su postgres}}&lt;br /&gt;
{{Cmd|psql}}&lt;br /&gt;
{{Cmd|create user user with encrypted password &#039;password&#039;;}}&lt;br /&gt;
{{Cmd|create database database;}}&lt;br /&gt;
{{Cmd|grant all privileges on database database to user;}}&lt;br /&gt;
&lt;br /&gt;
= Use =&lt;br /&gt;
By default only local access is allowed to PostgreSQL. To allow other networked services to access the database we need to configure PostgreSQL to allow external connections.&lt;br /&gt;
&lt;br /&gt;
== modify the postgresql.conf file ==&lt;br /&gt;
{{Cmd|nano /etc/postgresql16/postgresql.conf}}&lt;br /&gt;
Find the line that starts with &amp;lt;pre&amp;gt;#listen_addresses = &#039;localhost&#039;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Uncomment it and change it to the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = &#039;*&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you want it to listen on a specific ip you can change * to 192.168.1.2/24.&lt;br /&gt;
Save the file and change the next config file.&lt;br /&gt;
&lt;br /&gt;
== modify the pg_hba.conf file ==&lt;br /&gt;
{{Cmd|nano /etc/postgresql16/pg_hba.conf}}&lt;br /&gt;
Look for the line: &amp;lt;pre&amp;gt;host    all             all             127.0.0.1/32            md5&amp;lt;/pre&amp;gt;&lt;br /&gt;
And change it to: &amp;lt;pre&amp;gt;host all all 0.0.0.0/0 md5&amp;lt;/pre&amp;gt;&lt;br /&gt;
This line allows connections from any IP address and requires a password for authentication (md5).&lt;br /&gt;
Restart the server to allow incoming connections from other hosts.&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
Besure to allow the port through the firewall. For UFW type:&lt;br /&gt;
{{Cmd|ufw allow 5432}}&lt;br /&gt;
&lt;br /&gt;
This is a basic configuration. You can configure the PostgreSQL server to only allow certain networks or IP&#039;s to connect but thats beyond the scope of this documentation.&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
* Some troubleshooting information &lt;br /&gt;
&lt;br /&gt;
= Upgrading PostgreSQL =&lt;br /&gt;
* Notes on upgrading PostgreSQL 16 to 17&lt;br /&gt;
&lt;br /&gt;
= Resources =&lt;br /&gt;
* https://blog.devart.com/configure-postgresql-to-allow-remote-connection.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Securing_Alpine_Linux&amp;diff=26887</id>
		<title>Securing Alpine Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Securing_Alpine_Linux&amp;diff=26887"/>
		<updated>2024-07-04T00:07:03Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Begin to use some of the styling templates (path, cmd)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Securing Alpine Linux using Security Technical Implementation Guides (STIGs) involves several steps. STIGs are a series of security requirements and configurations that help to secure systems. While there might not be a specific STIG for Alpine Linux, you can follow general Linux hardening guidelines and apply the principles from other Linux STIGs. Here’s a step-by-step process:&lt;br /&gt;
&lt;br /&gt;
Step 1: Update and Upgrade System&lt;br /&gt;
&lt;br /&gt;
1. Update package lists:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas apk update}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Upgrade installed packages:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas apk upgrade}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2: Install Necessary Security Tools&lt;br /&gt;
&lt;br /&gt;
1. Install {{pkg|audit|arch=}} package:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas apk add audit}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Install other necessary security packages:&lt;br /&gt;
&lt;br /&gt;
       {{cmd|doas apk add doas logrotate bash-completion openssh-server}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3: User and Access Management&lt;br /&gt;
&lt;br /&gt;
1. Disable root login over SSH:&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/ssh/sshd_config}}:&lt;br /&gt;
&lt;br /&gt;
       {{cmd|doas vi /etc/ssh/sshd_config}}&lt;br /&gt;
&lt;br /&gt;
Set the following parameter:&lt;br /&gt;
&lt;br /&gt;
       PermitRootLogin no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Ensure password complexity:&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/security/pwquality.conf}}:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas vi /etc/security/pwquality.conf}}&lt;br /&gt;
&lt;br /&gt;
Add or update the following lines:&lt;br /&gt;
&lt;br /&gt;
   minlen = 14&lt;br /&gt;
   dcredit = -1&lt;br /&gt;
   ucredit = -1&lt;br /&gt;
   ocredit = -1&lt;br /&gt;
   lcredit = -1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Lock unused system accounts:&lt;br /&gt;
&lt;br /&gt;
   for user in `awk -F: &#039;($3 &amp;lt; 1000) {print $1}&#039; /etc/passwd`; do&lt;br /&gt;
       if [ $user !{{=}} &amp;quot;root&amp;quot; ]; then&lt;br /&gt;
           doas passwd -l $user&lt;br /&gt;
           doas chage -E 0 $user&lt;br /&gt;
       fi&lt;br /&gt;
   done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4: File System and Directory Permissions&lt;br /&gt;
&lt;br /&gt;
1. Set appropriate permissions on important directories:&lt;br /&gt;
&lt;br /&gt;
   doas chmod 700 /root&lt;br /&gt;
   doas chmod 600 /boot/grub/grub.cfg&lt;br /&gt;
   doas chmod 600 /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure mount options:&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/fstab}}:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas vi /etc/fstab}}&lt;br /&gt;
&lt;br /&gt;
Add `nosuid`, `nodev`, and `noexec` options to non-root partitions:&lt;br /&gt;
&lt;br /&gt;
   /dev/sda1 /home ext4 defaults,nosuid,nodev,noexec 0 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 5: Network Security&lt;br /&gt;
&lt;br /&gt;
1. Disable unnecessary services:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas rc-update del &amp;lt;service_name&amp;gt;&lt;br /&gt;
   doas rc-service &amp;lt;service_name&amp;gt; stop}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure firewall (iptables):&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas apk add iptables&lt;br /&gt;
   doas rc-service iptables start&lt;br /&gt;
   doas rc-update add iptables}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a basic firewall ruleset:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas vi /etc/iptables/rules.v4}}&lt;br /&gt;
&lt;br /&gt;
Example rules:&lt;br /&gt;
&lt;br /&gt;
   *filter&lt;br /&gt;
   :INPUT DROP [0:0]&lt;br /&gt;
   :FORWARD DROP [0:0]&lt;br /&gt;
   :OUTPUT ACCEPT [0:0]&lt;br /&gt;
   -A INPUT -i lo -j ACCEPT&lt;br /&gt;
   -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
   -A INPUT -p tcp --dport 22 -j ACCEPT&lt;br /&gt;
   COMMIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 6: Logging and Auditing&lt;br /&gt;
&lt;br /&gt;
1. Configure system logging:&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/rsyslog.conf}} to ensure all log files are being captured:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas vi /etc/rsyslog.conf}}&lt;br /&gt;
&lt;br /&gt;
Example configuration:&lt;br /&gt;
&lt;br /&gt;
   *.info;mail.none;authpriv.none;cron.none /var/log/messages&lt;br /&gt;
   authpriv.* /var/log/secure&lt;br /&gt;
   mail.* -/var/log/maillog&lt;br /&gt;
   cron.* /var/log/cron&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Set up audit rules:&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/audit/rules.d/audit.rules}}:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas vi /etc/audit/rules.d/audit.rules}}&lt;br /&gt;
&lt;br /&gt;
Example rules:&lt;br /&gt;
&lt;br /&gt;
   -w /etc/passwd -p wa -k passwd_changes&lt;br /&gt;
   -w /etc/shadow -p wa -k shadow_changes&lt;br /&gt;
   -w /etc/group -p wa -k group_changes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 7: Apply Kernel and Service Hardening&lt;br /&gt;
&lt;br /&gt;
1. Disable unused filesystems:&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/modprobe.d/disable-filesystems.conf}}:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas vi /etc/modprobe.d/disable-filesystems.conf}}&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
   install cramfs /bin/true&lt;br /&gt;
   install freevxfs /bin/true&lt;br /&gt;
   install jffs2 /bin/true&lt;br /&gt;
   install hfs /bin/true&lt;br /&gt;
   install hfsplus /bin/true&lt;br /&gt;
   install squashfs /bin/true&lt;br /&gt;
   install udf /bin/true&lt;br /&gt;
   install vfat /bin/true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure kernel parameters:&lt;br /&gt;
&lt;br /&gt;
Edit {{path|/etc/sysctl.conf}}:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas vi /etc/sysctl.conf}}&lt;br /&gt;
&lt;br /&gt;
Add or update the following parameters:&lt;br /&gt;
&lt;br /&gt;
   net.ipv4.ip_forward = 0&lt;br /&gt;
   net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
   net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
   net.ipv4.conf.all.secure_redirects = 0&lt;br /&gt;
   net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
   net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
   net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
   net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
   net.ipv4.tcp_syncookies = 1&lt;br /&gt;
   net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
   net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 8: Regular Maintenance&lt;br /&gt;
&lt;br /&gt;
1. Set up regular updates:&lt;br /&gt;
&lt;br /&gt;
Create a cron job for regular updates:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas crontab -e}}&lt;br /&gt;
&lt;br /&gt;
Add the following line to update daily at 2 AM:&lt;br /&gt;
&lt;br /&gt;
   0 2 * * * apk update &amp;amp;&amp;amp; apk upgrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Review and monitor logs regularly:&lt;br /&gt;
&lt;br /&gt;
Ensure logs are rotated and reviewed frequently:&lt;br /&gt;
&lt;br /&gt;
   {{cmd|doas logrotate /etc/logrotate.conf}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Conclusion&lt;br /&gt;
&lt;br /&gt;
This process provides a foundation for securing an Alpine Linux system. Regular reviews and updates, along with compliance with the latest security guidelines, are essential to maintaining a secure environment.&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Securing_Alpine_Linux&amp;diff=26886</id>
		<title>Securing Alpine Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Securing_Alpine_Linux&amp;diff=26886"/>
		<updated>2024-07-03T23:53:50Z</updated>

		<summary type="html">&lt;p&gt;Zcrayfish: Bulk replace sudo with doas.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Securing Alpine Linux using Security Technical Implementation Guides (STIGs) involves several steps. STIGs are a series of security requirements and configurations that help to secure systems. While there might not be a specific STIG for Alpine Linux, you can follow general Linux hardening guidelines and apply the principles from other Linux STIGs. Here’s a step-by-step process:&lt;br /&gt;
&lt;br /&gt;
Step 1: Update and Upgrade System&lt;br /&gt;
&lt;br /&gt;
1. Update package lists:&lt;br /&gt;
&lt;br /&gt;
   doas apk update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Upgrade installed packages:&lt;br /&gt;
&lt;br /&gt;
   doas apk upgrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 2: Install Necessary Security Tools&lt;br /&gt;
&lt;br /&gt;
1. Install `audit` package:&lt;br /&gt;
&lt;br /&gt;
   doas apk add audit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Install other necessary security packages:&lt;br /&gt;
&lt;br /&gt;
   doas apk add doas logrotate bash-completion openssh-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 3: User and Access Management&lt;br /&gt;
&lt;br /&gt;
1. Disable root login over SSH:&lt;br /&gt;
&lt;br /&gt;
Edit `/etc/ssh/sshd_config`:&lt;br /&gt;
&lt;br /&gt;
       doas vi /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
Set the following parameter:&lt;br /&gt;
&lt;br /&gt;
       PermitRootLogin no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Ensure password complexity:&lt;br /&gt;
&lt;br /&gt;
Edit `/etc/security/pwquality.conf`:&lt;br /&gt;
&lt;br /&gt;
   doas vi /etc/security/pwquality.conf&lt;br /&gt;
&lt;br /&gt;
Add or update the following lines:&lt;br /&gt;
&lt;br /&gt;
   minlen = 14&lt;br /&gt;
   dcredit = -1&lt;br /&gt;
   ucredit = -1&lt;br /&gt;
   ocredit = -1&lt;br /&gt;
   lcredit = -1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Lock unused system accounts:&lt;br /&gt;
&lt;br /&gt;
   for user in `awk -F: &#039;($3 &amp;lt; 1000) {print $1}&#039; /etc/passwd`; do&lt;br /&gt;
       if [ $user != &amp;quot;root&amp;quot; ]; then&lt;br /&gt;
           doas passwd -l $user&lt;br /&gt;
           doas chage -E 0 $user&lt;br /&gt;
       fi&lt;br /&gt;
   done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4: File System and Directory Permissions&lt;br /&gt;
&lt;br /&gt;
1. Set appropriate permissions on important directories:&lt;br /&gt;
&lt;br /&gt;
   doas chmod 700 /root&lt;br /&gt;
   doas chmod 600 /boot/grub/grub.cfg&lt;br /&gt;
   doas chmod 600 /etc/ssh/sshd_config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure mount options:&lt;br /&gt;
&lt;br /&gt;
Edit `/etc/fstab`:&lt;br /&gt;
&lt;br /&gt;
   doas vi /etc/fstab&lt;br /&gt;
&lt;br /&gt;
Add `nosuid`, `nodev`, and `noexec` options to non-root partitions:&lt;br /&gt;
&lt;br /&gt;
   /dev/sda1 /home ext4 defaults,nosuid,nodev,noexec 0 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 5: Network Security&lt;br /&gt;
&lt;br /&gt;
1. Disable unnecessary services:&lt;br /&gt;
&lt;br /&gt;
   doas rc-update del &amp;lt;service_name&amp;gt;&lt;br /&gt;
   doas rc-service &amp;lt;service_name&amp;gt; stop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure firewall (iptables):&lt;br /&gt;
&lt;br /&gt;
   doas apk add iptables&lt;br /&gt;
   doas rc-service iptables start&lt;br /&gt;
   doas rc-update add iptables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a basic firewall ruleset:&lt;br /&gt;
&lt;br /&gt;
   doas vi /etc/iptables/rules.v4&lt;br /&gt;
&lt;br /&gt;
Example rules:&lt;br /&gt;
&lt;br /&gt;
   *filter&lt;br /&gt;
   :INPUT DROP [0:0]&lt;br /&gt;
   :FORWARD DROP [0:0]&lt;br /&gt;
   :OUTPUT ACCEPT [0:0]&lt;br /&gt;
   -A INPUT -i lo -j ACCEPT&lt;br /&gt;
   -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
   -A INPUT -p tcp --dport 22 -j ACCEPT&lt;br /&gt;
   COMMIT&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 6: Logging and Auditing&lt;br /&gt;
&lt;br /&gt;
1. Configure system logging:&lt;br /&gt;
&lt;br /&gt;
Edit `/etc/rsyslog.conf` to ensure all log files are being captured:&lt;br /&gt;
&lt;br /&gt;
   doas vi /etc/rsyslog.conf&lt;br /&gt;
&lt;br /&gt;
Example configuration:&lt;br /&gt;
&lt;br /&gt;
   *.info;mail.none;authpriv.none;cron.none /var/log/messages&lt;br /&gt;
   authpriv.* /var/log/secure&lt;br /&gt;
   mail.* -/var/log/maillog&lt;br /&gt;
   cron.* /var/log/cron&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Set up audit rules:&lt;br /&gt;
&lt;br /&gt;
Edit `/etc/audit/rules.d/audit.rules`:&lt;br /&gt;
&lt;br /&gt;
   doas vi /etc/audit/rules.d/audit.rules&lt;br /&gt;
&lt;br /&gt;
Example rules:&lt;br /&gt;
&lt;br /&gt;
   -w /etc/passwd -p wa -k passwd_changes&lt;br /&gt;
   -w /etc/shadow -p wa -k shadow_changes&lt;br /&gt;
   -w /etc/group -p wa -k group_changes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 7: Apply Kernel and Service Hardening&lt;br /&gt;
&lt;br /&gt;
1. Disable unused filesystems:&lt;br /&gt;
&lt;br /&gt;
Edit `/etc/modprobe.d/disable-filesystems.conf`:&lt;br /&gt;
&lt;br /&gt;
   doas vi /etc/modprobe.d/disable-filesystems.conf&lt;br /&gt;
&lt;br /&gt;
Add the following lines:&lt;br /&gt;
&lt;br /&gt;
   install cramfs /bin/true&lt;br /&gt;
   install freevxfs /bin/true&lt;br /&gt;
   install jffs2 /bin/true&lt;br /&gt;
   install hfs /bin/true&lt;br /&gt;
   install hfsplus /bin/true&lt;br /&gt;
   install squashfs /bin/true&lt;br /&gt;
   install udf /bin/true&lt;br /&gt;
   install vfat /bin/true&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure kernel parameters:&lt;br /&gt;
&lt;br /&gt;
Edit `/etc/sysctl.conf`:&lt;br /&gt;
&lt;br /&gt;
   doas vi /etc/sysctl.conf&lt;br /&gt;
&lt;br /&gt;
Add or update the following parameters:&lt;br /&gt;
&lt;br /&gt;
   net.ipv4.ip_forward = 0&lt;br /&gt;
   net.ipv4.conf.all.accept_source_route = 0&lt;br /&gt;
   net.ipv4.conf.all.accept_redirects = 0&lt;br /&gt;
   net.ipv4.conf.all.secure_redirects = 0&lt;br /&gt;
   net.ipv4.conf.all.log_martians = 1&lt;br /&gt;
   net.ipv4.conf.default.log_martians = 1&lt;br /&gt;
   net.ipv4.icmp_echo_ignore_broadcasts = 1&lt;br /&gt;
   net.ipv4.icmp_ignore_bogus_error_responses = 1&lt;br /&gt;
   net.ipv4.tcp_syncookies = 1&lt;br /&gt;
   net.ipv4.conf.all.send_redirects = 0&lt;br /&gt;
   net.ipv4.conf.default.send_redirects = 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 8: Regular Maintenance&lt;br /&gt;
&lt;br /&gt;
1. Set up regular updates:&lt;br /&gt;
&lt;br /&gt;
Create a cron job for regular updates:&lt;br /&gt;
&lt;br /&gt;
   doas crontab -e&lt;br /&gt;
&lt;br /&gt;
Add the following line to update daily at 2 AM:&lt;br /&gt;
&lt;br /&gt;
   0 2 * * * apk update &amp;amp;&amp;amp; apk upgrade&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Review and monitor logs regularly:&lt;br /&gt;
&lt;br /&gt;
Ensure logs are rotated and reviewed frequently:&lt;br /&gt;
&lt;br /&gt;
   doas logrotate /etc/logrotate.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Conclusion&lt;br /&gt;
&lt;br /&gt;
This process provides a foundation for securing an Alpine Linux system. Regular reviews and updates, along with compliance with the latest security guidelines, are essential to maintaining a secure environment.&lt;/div&gt;</summary>
		<author><name>Zcrayfish</name></author>
	</entry>
</feed>