<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Mikhail Karmishin</title>
    <subtitle>I tinker with computers and take pictures.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://karmishin.com/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://karmishin.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-10-02T00:00:00+00:00</updated>
    <id>https://karmishin.com/atom.xml</id>
    <entry xml:lang="en">
        <title>Bypass firewalls using Shadowsocks + Cloak</title>
        <published>2022-06-06T00:00:00+00:00</published>
        <updated>2025-10-02T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://karmishin.com/notes/shadowsocks-cloak/"/>
        <id>https://karmishin.com/notes/shadowsocks-cloak/</id>
        
        <content type="html" xml:base="https://karmishin.com/notes/shadowsocks-cloak/">&lt;p&gt;In this guide we&#39;ll use Shadowsocks + Cloak to create undetectable tunnels through restrictive networks.&lt;/p&gt;
&lt;p&gt;I wrote a script called &lt;a rel=&quot;external&quot; href=&quot;https://github.com/karmishin/shadowsocks.sh&quot;&gt;shadowsocks.sh&lt;/a&gt; that handles all the hard stuff for you.&lt;/p&gt;
&lt;h2 id=&quot;what-is-shadowsocks&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-is-shadowsocks&quot; aria-label=&quot;Anchor link for: what-is-shadowsocks&quot;&gt;What is Shadowsocks?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://github.com/shadowsocks/shadowsocks-rust&quot;&gt;shadowsocks-rust&lt;/a&gt; is a fast proxy server written in Rust. While it can be used in standalone mode, in this article we&#39;ll be using it together with &lt;a rel=&quot;external&quot; href=&quot;https://github.com/cbeuw/Cloak&quot;&gt;Cloak&lt;/a&gt;. Cloak can be used to obfuscate your traffic by making it look like some innocent internet protocol (HTTPS).&lt;/p&gt;
&lt;h2 id=&quot;before-you-start&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#before-you-start&quot; aria-label=&quot;Anchor link for: before-you-start&quot;&gt;Before you start&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You&#39;ll need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a VPS server (some popular provider options are DigitalOcean, Vultr, and Linode)&lt;/li&gt;
&lt;li&gt;basic Linux command line skills&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;installation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#installation&quot; aria-label=&quot;Anchor link for: installation&quot;&gt;Installation&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;SSH into your server and run the installer (as root):&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-l-i z-d-4 z-d-i&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-l-i z-d-4 z-d-i&quot;&gt; download&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;wget&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; https://raw.githubusercontent.com/karmishin/shadowsocks.sh/master/shadowsocks.sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-l-i z-d-4 z-d-i&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-l-i z-d-4 z-d-i&quot;&gt; mark as executable&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;chmod&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; +x&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; shadowsocks.sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-8 z-l-i z-d-4 z-d-i&quot;&gt;#&lt;/span&gt;&lt;span class=&quot;z-l-8 z-l-i z-d-4 z-d-i&quot;&gt; execute the actual script (use &amp;#39;sudo&amp;#39; if you&amp;#39;re not root)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;./shadowsocks.sh&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;c&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the script runs successfully, the following message will be displayed:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;############################&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# Installation successful! #&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;############################&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;SHADOWSOCKS configuration:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Password: QZRiJHnxQ7d6gfj7DWn0TI6xnqj8bmvM&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Encryption method: aes-256-gcm&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CLOAK configuration:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Address: 198.51.123.45&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Port: 443&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;EncryptionMethod: plain&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Browser: chrome&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Transport: direct&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Proxy method: shadowsocks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Server name: yandex.ru&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;UID: 680onRmkblyCMJSujMVUkw==&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Public key: p52laG1orgNYya/XIGAS7pR2nsQqP2yAG8pPmUhu720=&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Stream timeout: 300&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can use these parameters to configure our clients.&lt;/p&gt;
&lt;h2 id=&quot;client-configuration&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#client-configuration&quot; aria-label=&quot;Anchor link for: client-configuration&quot;&gt;Client configuration&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;android&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#android&quot; aria-label=&quot;Anchor link for: android&quot;&gt;Android&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Download shadowsocks-android from &lt;a rel=&quot;external&quot; href=&quot;https://play.google.com/store/apps/details?id=com.github.shadowsocks&quot;&gt;Google Play&lt;/a&gt; or &lt;a rel=&quot;external&quot; href=&quot;https://f-droid.org/en/packages/com.github.shadowsocks/&quot;&gt;F-Droid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Download cloak-android from the project&#39;s &lt;a rel=&quot;external&quot; href=&quot;https://github.com/cbeuw/Cloak-android/releases/latest&quot;&gt;GitHub releases page&lt;/a&gt; and install the .apk file.&lt;/p&gt;
&lt;p&gt;In the Shadowsocks app on your phone, press &quot;Add profile&quot; - &quot;Manual settings&quot;. In the server settings section set the following parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server: enter the public IP address of your server (&lt;code&gt;198.51.123.45&lt;/code&gt; in the example above)&lt;/li&gt;
&lt;li&gt;Port: &lt;code&gt;443&lt;/code&gt; (the port on which Cloak listens on)&lt;/li&gt;
&lt;li&gt;Password: enter the password from the script&#39;s output&lt;/li&gt;
&lt;li&gt;Encrypt method: &lt;code&gt;AES-256-GCM&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scroll down and press &quot;Plugin&quot;, select Cloak. In plugin settings you have to set:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transport: &lt;code&gt;direct&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Proxy method: &lt;code&gt;shadowsocks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Encryption method: &lt;code&gt;plain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;UID and Public key: copy them from the Cloak section of script&#39;s output&lt;/li&gt;
&lt;li&gt;Server name: enter any domain that is accessible from your restricted network (in my case it&#39;s &lt;code&gt;ya.ru&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Browser signature: &lt;code&gt;chrome&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Stream timeout: &lt;code&gt;300&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Save all settings and go back to the app&#39;s main screen. Select the newly added profile in the list so that it becomes active, and click on the airplane icon at the bottom of the screen.&lt;/p&gt;
&lt;p&gt;By default, shadowsocks-android runs as a VPN and will proxy all traffic on your device. You can change it in the profile settings if you want (&quot;Feature settings&quot; - &quot;Route&quot;).&lt;/p&gt;
&lt;h3 id=&quot;ios&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ios&quot; aria-label=&quot;Anchor link for: ios&quot;&gt;iOS&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Install &lt;a rel=&quot;external&quot; href=&quot;https://apps.apple.com/us/app/shadowrocket/id932747118&quot;&gt;Shadowrocket&lt;/a&gt; from the App Store.&lt;/p&gt;
&lt;p&gt;Launch it and click the &quot;Add server&quot; button at the top right of the screen.&lt;/p&gt;
&lt;p&gt;There you&#39;ll need to specify the following settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type: &lt;code&gt;Shadowsocks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Address: public IP of your server&lt;/li&gt;
&lt;li&gt;Port: &lt;code&gt;443&lt;/code&gt; (although this probably doesn&#39;t matter as we&#39;ll config Cloak later)&lt;/li&gt;
&lt;li&gt;Password: your password from the Shadowsocks section of the script&#39;s output&lt;/li&gt;
&lt;li&gt;Method: &lt;code&gt;aes-256-gcm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Leave everything else as is.&lt;/p&gt;
&lt;p&gt;Before you leave this screen, click on the &quot;Plugin&quot; button. Here we need to select our plugin (Cloak, obviously) and then configure it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugin: &lt;code&gt;cloak&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Address: public IP of your server&lt;/li&gt;
&lt;li&gt;Port: &lt;code&gt;443&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Encryption method: &lt;code&gt;plain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Browser: &lt;code&gt;chrome&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Transport: &lt;code&gt;direct&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Proxy method: &lt;code&gt;shadowsocks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Server name: &lt;code&gt;yandex.ru&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;UID and Public key: copy them from the Cloak section of script&#39;s output&lt;/li&gt;
&lt;li&gt;Stream timeout: &lt;code&gt;300&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hit &quot;Back&quot; to exit the plugin configuration screen, and then tap on &quot;Save&quot; to save your config. Your server should now appear in the main screen of the app. Tap on it and switch the toggle that says &quot;Not connected&quot;.&lt;/p&gt;
&lt;h2 id=&quot;troubleshooting&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#troubleshooting&quot; aria-label=&quot;Anchor link for: troubleshooting&quot;&gt;Troubleshooting&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If for some reason you can&#39;t access your Shadowsocks instance, try the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check if you can establish a TCP connection to your server on port 443. Open the terminal on your client machine and run (replace 198.51.123.45 with the IP address of your server):&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;telnet&lt;/span&gt;&lt;span class=&quot;z-l-16 z-d-16&quot;&gt; 198.51.123.45&lt;/span&gt;&lt;span class=&quot;z-l-16 z-d-16&quot;&gt; 443&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Check the firewall settings on your VPS. Most providers install ufw that blocks everything by default. This should do the trick (run as root or with &lt;code&gt;sudo&lt;/code&gt;):&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;ufw&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; allow&lt;/span&gt;&lt;span class=&quot;z-l-16 z-d-16&quot;&gt; 443&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Check the status of the shadowsocks/cloak services on your server:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;systemctl&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; status&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; shadowsocks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;systemctl&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; status&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; cloak-server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Check the server logs:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;journalctl&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; shadowsocks&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;e&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;journalctl&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; cloak-server&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;e&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Arch post-install notes</title>
        <published>2021-12-05T00:00:00+00:00</published>
        <updated>2021-12-05T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://karmishin.com/notes/archlinux/"/>
        <id>https://karmishin.com/notes/archlinux/</id>
        
        <content type="html" xml:base="https://karmishin.com/notes/archlinux/">&lt;p&gt;Some of my notes on Arch Linux.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://karmishin.com/notes/archlinux/images/desktop.webp&quot; alt=&quot;waves&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;installing-kde&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#installing-kde&quot; aria-label=&quot;Anchor link for: installing-kde&quot;&gt;Installing KDE&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The conventional way to install it is to use either the &lt;code&gt;kde-applications&lt;/code&gt; package group or the &lt;code&gt;kde-applications-meta&lt;/code&gt; meta-package. My problem with this approach is that they include a lot of apps most people won&#39;t need (PIM, Kontact, games, etc.). So I usually install the &lt;code&gt;plasma&lt;/code&gt; package group first:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;pacman&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; plasma&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I install only a small subset of KDE applications:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;pacman&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; ark&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; filelight&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; kate&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; kcalc&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; kdialog&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; konsole&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;          print-manager&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; dolphin&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; gwenview&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; spectacle&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;          okular&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I also recommend installing these optional dependencies:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;pacman&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; unrar&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; p7zip&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; kde-cli-tools&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; ffmpegthumbs&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;          kdegraphics-thumbnailers&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;-asdeps&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;subpixel-rendering-and-the-lcd-filter&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#subpixel-rendering-and-the-lcd-filter&quot; aria-label=&quot;Anchor link for: subpixel-rendering-and-the-lcd-filter&quot;&gt;Subpixel rendering and the LCD filter&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Subpixel rendering is enabled by default since FreeType 2.10.3.&lt;/p&gt;
&lt;p&gt;If letters appear to have a rainbow tint around them (especially in GTK applications), it makes sense to enable the LCD filter. Edit the file &lt;code&gt;/etc/fonts/local.conf&lt;/code&gt; (or create it if it doesn&#39;t exist):&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;xml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-2&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;z-l-13 z-d-15&quot;&gt; target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;font&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;  &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-2&quot;&gt;edit&lt;/span&gt;&lt;span class=&quot;z-l-13 z-d-15&quot;&gt; name&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;lcdfilter&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-l-13 z-d-15&quot;&gt; mode&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;assign&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;    &amp;lt;&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-2&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;lcddefault&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-2&quot;&gt;const&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;  &amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-2&quot;&gt;edit&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;z-l-3 z-d-2&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;z-l-2 z-d-5&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Read more on the ArchWiki: &lt;a rel=&quot;external&quot; href=&quot;https://wiki.archlinux.org/title/Font_configuration#Subpixel_rendering&quot;&gt;Subpixel rendering&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;installing-wine&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#installing-wine&quot; aria-label=&quot;Anchor link for: installing-wine&quot;&gt;Installing Wine&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This section is only relevant if you want to run Windows programs or games.&lt;/p&gt;
&lt;p&gt;First, enable the multilib repository, as described in &lt;a rel=&quot;external&quot; href=&quot;https://wiki.archlinux.org/title/Official_repositories#multilib&quot;&gt;this article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Install Wine:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;pacman&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; wine-staging&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then install all of its optional dependencies:&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;pacman&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; giflib&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-giflib&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libpng&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-libpng&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libldap&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  lib32-libldap&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; gnutls&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-gnutls&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; mpg123&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-mpg123&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; openal&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  lib32-openal&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; v4l-utils&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-v4l-utils&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libpulse&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-libpulse&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  alsa-plugins&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-alsa-plugins&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; alsa-lib&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-alsa-lib&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libjpeg-turbo&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  lib32-libjpeg-turbo&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libxcomposite&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-libxcomposite&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libxinerama&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  lib32-libxinerama&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; ncurses&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-ncurses&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; opencl-icd-loader&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  lib32-opencl-icd-loader&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libxslt&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-libxslt&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; libva&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-libva&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  gtk3&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-gtk3&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; gst-plugins-base-libs&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-gst-plugins-base-libs&lt;/span&gt;&lt;span class=&quot;z-l-15 z-d-13&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;  vulkan-icd-loader&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; lib32-vulkan-icd-loader&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you&#39;re using DXVK, VKD3D, or anything else Vulkan-related, make sure you have the latest GPU drivers &lt;em&gt;and&lt;/em&gt; Vulkan drivers installed. See &lt;a rel=&quot;external&quot; href=&quot;https://wiki.archlinux.org/title/Vulkan#Installation&quot;&gt;this page&lt;/a&gt; for more information on which packages you need for your GPU vendor.&lt;/p&gt;
&lt;p&gt;See also: &lt;a rel=&quot;external&quot; href=&quot;https://www.gloriouseggroll.tv/how-to-get-out-of-wine-dependency-hell/&quot;&gt;How to get out of Wine Dependency Hell&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;wallpapers&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#wallpapers&quot; aria-label=&quot;Anchor link for: wallpapers&quot;&gt;Wallpapers&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Arch actually has some nice wallpapers in its official repositories!&lt;/p&gt;
&lt;pre class=&quot;giallo z-l-code z-d-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-l-3 z-l-i z-d-2 z-d-i&quot;&gt;pacman&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; -&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt;S&lt;/span&gt;&lt;span class=&quot;z-l-5 z-d-7&quot;&gt; archlinux-wallpaper&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
        
    </entry>
</feed>
