<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: hopsayer</title>
    <description>The latest articles on Forem by hopsayer (@hopsayer).</description>
    <link>https://forem.com/hopsayer</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3313993%2Fa5c1c8e9-f502-4ef3-b228-5f6532c31b1e.png</url>
      <title>Forem: hopsayer</title>
      <link>https://forem.com/hopsayer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/hopsayer"/>
    <language>en</language>
    <item>
      <title>Fix Time Jumps Between Linux and Windows (Dual-Boot)</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Fri, 26 Dec 2025 20:34:03 +0000</pubDate>
      <link>https://forem.com/hopsayer/fix-time-jumps-between-linux-and-windows-dual-boot-3omc</link>
      <guid>https://forem.com/hopsayer/fix-time-jumps-between-linux-and-windows-dual-boot-3omc</guid>
      <description>&lt;h1&gt;
  
  
  Synchronizing Time Between Linux and Windows in Dual-Boot Setups
&lt;/h1&gt;

&lt;p&gt;If you run both Linux and Windows on the same machine, you might notice that after rebooting, your system clock jumps by a few hours. &lt;/p&gt;

&lt;p&gt;This happens because both systems read the same hardware clock but interpret it differently: Windows treats it as &lt;strong&gt;local time&lt;/strong&gt;, while Linux treats it as &lt;strong&gt;UTC&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To fix this, both systems need to use the same time reference. There are two main approaches:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use UTC for both systems&lt;/strong&gt; (recommended):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On Linux:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;timedatectl set-local-rtc 0 --adjust-system-clock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's not necessary because Linux uses UTC by default, but this explicitly ensures the setting.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On Windows: 
Use this command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t reg_dword /d 1 /f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will add a registry key to treat the hardware clock as UTC. &lt;br&gt;
You can save it in a &lt;code&gt;.txt&lt;/code&gt; file, rename it to &lt;code&gt;switch-to-utc-time.bat&lt;/code&gt; and run as administrator. Alternatively, open a &lt;code&gt;cmd&lt;/code&gt; or &lt;code&gt;PowerShell&lt;/code&gt; window as administrator, paste the line, and press Enter. &lt;br&gt;
Ater applying the registry setting, restart Windows. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use local time for both systems&lt;/strong&gt; (Windows default):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On Linux:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;timedatectl set-local-rtc 1 --adjust-system-clock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then reboot. &lt;/p&gt;

&lt;p&gt;After this change, both OS clocks will stay in sync, preventing issues with logs, Git commits, scheduled tasks, or databases caused by time jumps.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What is hardware clock and where is it stored?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The hardware clock, sometimes called RTC or CMOS clock, is built into the motherboard and keeps time even when the computer is powered off. &lt;/p&gt;

&lt;p&gt;You’ve probably remembered that small CMOS battery — the one that used to make your clock reset when it died, and maybe the one you’ve even replaced yourself. &lt;/p&gt;

&lt;p&gt;Both Linux and Windows read this clock at startup.&lt;/p&gt;

&lt;p&gt;See also: &lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Real-time_clock" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Real-time_clock&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why time jumps feel asymmetric in dual-boot setups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You may notice that switching from one OS to another breaks the clock, but switching back does not always fix it. This asymmetry happens because each OS not only &lt;em&gt;reads&lt;/em&gt; the hardware clock differently, but also &lt;em&gt;writes&lt;/em&gt; to it on shutdown.&lt;/p&gt;

&lt;p&gt;If one system writes UTC and the other later reads it as local time (or vice versa), the offset gets applied twice. Each reboot reinforces the mismatch until both systems agree on how the hardware clock should be interpreted.&lt;/p&gt;

&lt;p&gt;The only real fix is consistency: both systems must treat the hardware clock the same way — ideally as UTC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Windows uses local time by default&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This behavior is mostly historical. Early PCs, MS-DOS, and early Windows versions assumed single-user, single-location machines. Storing local time in the hardware clock made the system immediately show the “correct” time for the user after boot.&lt;/p&gt;

&lt;p&gt;Modern Windows inherited this design for backward compatibility. Linux, on the other hand, adopted UTC as a system default much earlier, especially for servers and networked environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UTC vs local time: standard vs convenient simplification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;UTC is an international time standard based on atomic clocks. In practice, it acts as the “base unit” for time in computing: it does not change with daylight saving time and does not depend on geography.&lt;/p&gt;

&lt;p&gt;Local time, as used by Windows by default, is not a different standard — it is simply UTC plus a timezone offset and daylight saving rules applied for user convenience. This makes it suitable for display, but fragile as a system-level reference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What about Windows Server? How does it stay synchronized?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Windows Server behaves the same way as desktop Windows: by default, it treats the hardware clock as &lt;strong&gt;local time&lt;/strong&gt;, not UTC. This can add friction in real-world environments, because most servers on the internet — Linux hosts, containers, cloud VMs, CI/CD systems — operate in UTC.&lt;/p&gt;

&lt;p&gt;When Windows Server uses local time while the rest of the infrastructure uses UTC, administrators may face:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Misaligned timestamps across systems
&lt;/li&gt;
&lt;li&gt;Confusing log correlation during incident analysis
&lt;/li&gt;
&lt;li&gt;Scheduled jobs running at unexpected times
&lt;/li&gt;
&lt;li&gt;Extra mental overhead when debugging time-related issues
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this reason, Windows Server is often explicitly configured to use UTC by setting the same &lt;code&gt;RealTimeIsUniversal&lt;/code&gt; registry key and syncing time via NTP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters for users&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your clocks aren’t in sync, you might notice:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files showing the wrong creation or modification time.
&lt;/li&gt;
&lt;li&gt;Scheduled tasks running too early or too late.
&lt;/li&gt;
&lt;li&gt;Confusing timestamps in logs.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why this matters for developers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For developers, having consistent system time is critical. When dual-boot clocks drift, you may encounter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git commits appearing with the wrong timestamp.
&lt;/li&gt;
&lt;li&gt;Build systems triggering unnecessary rebuilds due to “past” or “future” timestamps.
&lt;/li&gt;
&lt;li&gt;Scheduled tasks running at unexpected times.
&lt;/li&gt;
&lt;li&gt;Logs from different OSes or containers being misaligned.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using UTC is generally better because it avoids timezone-related issues and daylight saving changes. Linux servers, Docker containers, CI/CD pipelines, and cloud environments almost always operate in UTC, so aligning your local machine avoids subtle bugs in development workflows.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>linux</category>
    </item>
    <item>
      <title>Resolving Old AUR App Dependency Hell after Arch Update (ICU 76 78)</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Thu, 25 Dec 2025 00:01:31 +0000</pubDate>
      <link>https://forem.com/hopsayer/arch-linux-aur-dependency-hell-debugging-the-icu-76-78-migration-4c7a</link>
      <guid>https://forem.com/hopsayer/arch-linux-aur-dependency-hell-debugging-the-icu-76-78-migration-4c7a</guid>
      <description>&lt;h1&gt;
  
  
  Fixing ICU Library Dependency Hell on Arch Linux: A Deep Dive into Shared Library Mismatches
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;I recently encountered a frustrating issue when trying to launch Notepadqq on my Arch-based system (EndeavourOS):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;notepadqq 
/usr/bin/../lib/notepadqq/notepadqq-bin: error &lt;span class="k"&gt;while &lt;/span&gt;loading shared libraries: 
libicui18n.so.76: cannot open shared object file: No such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a classic shared library dependency problem that's particularly common on rolling-release distributions like Arch Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Root Cause
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is ICU?
&lt;/h3&gt;

&lt;p&gt;ICU (International Components for Unicode) is a mature, widely used set of C/C++ libraries providing Unicode and globalization support. Many applications depend on it, including Qt's WebEngine component.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rolling Release Challenge
&lt;/h3&gt;

&lt;p&gt;The issue stemmed from a critical version mismatch between official Arch repositories and AUR packages:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happened:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arch upstream&lt;/strong&gt; had moved forward to ICU 78 in official repositories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notepadqq&lt;/strong&gt; (an AUR package) was still compiled against ICU 76&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qt5WebEngine&lt;/strong&gt; had been removed from official repos but remained on my system, still linked to ICU 76&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The core problem:&lt;/strong&gt; Notepadqq hasn't been actively maintained since 2018. As an AUR package, it doesn't get automatically rebuilt when Arch updates system libraries like ICU. This created a desynchronization between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official repository packages (ICU 78)&lt;/li&gt;
&lt;li&gt;Outdated AUR binaries (expecting ICU 76)&lt;/li&gt;
&lt;li&gt;Orphaned repository packages (Qt5WebEngine with ICU 76 linkage)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This cascading dependency mismatch is a common pitfall when mixing official packages with unmaintained AUR software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diagnostic Steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Check Current ICU Version
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; /usr/lib/libicui18n.so&lt;span class="k"&gt;*&lt;/span&gt;
/usr/lib/libicui18n.so
/usr/lib/libicui18n.so.78
/usr/lib/libicui18n.so.78.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This confirmed I had ICU 78, while the application expected version 76.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Identify Package Origin
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;pacman &lt;span class="nt"&gt;-Ss&lt;/span&gt; notepadqq
&lt;span class="nv"&gt;$ &lt;/span&gt;                        &lt;span class="c"&gt;# Returns empty line&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;yay notepadqq
&lt;span class="nv"&gt;$ &lt;/span&gt;1 aur/notepadqq 2.0.0beta-3 &lt;span class="o"&gt;(&lt;/span&gt;+1 0.32&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;Installed&lt;span class="o"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This confirmed notepadqq was installed, but being an AUR package (not from official repos), it wouldn't automatically rebuild when system libraries like ICU were updated.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Attempt to Rebuild
&lt;/h3&gt;

&lt;p&gt;When I tried rebuilding Notepadqq from AUR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; notepadqq &lt;span class="nt"&gt;--rebuild&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I hit a deeper issue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/usr/bin/ld: /usr/lib/libQt5WebEngineCore.so: undefined reference to 
`icu_76::Normalizer::normalize(...)`
/usr/bin/ld: /usr/lib/libQt5WebEngineCore.so: undefined reference to 
`ucnv_open_76'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Discover the Real Culprit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;pacman &lt;span class="nt"&gt;-Qo&lt;/span&gt; /usr/lib/libQt5WebEngineCore.so
/usr/lib/libQt5WebEngineCore.so is owned by qt5-webengine 5.15.19-4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The problem wasn't just Notepadqq—Qt5WebEngine itself was compiled against the old ICU version.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Repository Discovery
&lt;/h3&gt;

&lt;p&gt;When trying to update qt5-webengine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Syu&lt;/span&gt; qt5-webengine
error: target not found: qt5-webengine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Critical finding&lt;/strong&gt;: qt5-webengine had been removed from official Arch repositories but remained installed on my system as an orphaned package.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Remove Conflicting Packages
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Rns&lt;/span&gt; qt5-webengine notepadqq
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This removed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;qt5-webengine (159.19 MiB)&lt;/li&gt;
&lt;li&gt;notepadqq (5.89 MiB)&lt;/li&gt;
&lt;li&gt;Related dependencies (qt5-location, qt5-webchannel, qt5-websockets)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Total freed&lt;/strong&gt;: 174.88 MiB&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Rebuild Qt5WebEngine from AUR
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; qt5-webengine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This compiled qt5-webengine from source, linking it against the current ICU 78.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Rebuild Notepadqq
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; notepadqq
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With qt5-webengine now properly linked to ICU 78, Notepadqq compiled successfully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Verification
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ldd /usr/bin/notepadqq | &lt;span class="nb"&gt;grep &lt;/span&gt;icu
        libicui18n.so.78 &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; /usr/lib/libicui18n.so.78
        libicuuc.so.78 &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; /usr/lib/libicuuc.so.78
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Success! The application now links against the correct ICU version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Lessons Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. AUR Packages Don't Auto-Update with System Libraries
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Critical insight:&lt;/strong&gt; When Arch updates a core library like ICU, official packages are rebuilt automatically. AUR packages are &lt;strong&gt;not&lt;/strong&gt;—they must be manually rebuilt by users or maintainers.&lt;/p&gt;

&lt;p&gt;Notepadqq was last updated in 2018, meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It never received rebuilds for ICU 76, 77, or 78&lt;/li&gt;
&lt;li&gt;Each ICU update broke the package until manually rebuilt&lt;/li&gt;
&lt;li&gt;This is a fundamental difference between official repos and AUR&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Partial Upgrades Are Dangerous
&lt;/h3&gt;

&lt;p&gt;Even though I was updating my system 2-5 times daily, I hadn't rebooted in 7 days. However, &lt;strong&gt;rebooting wasn't the issue&lt;/strong&gt; — the problem was binary incompatibility on disk.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Rolling Release Requires Package Consistency
&lt;/h3&gt;

&lt;p&gt;Arch's rolling release model means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Libraries like ICU update frequently&lt;/li&gt;
&lt;li&gt;All dependent packages must be rebuilt or updated in sync&lt;/li&gt;
&lt;li&gt;Orphaned packages from removed repositories can cause hidden issues&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. ABI Compatibility Matters
&lt;/h3&gt;

&lt;p&gt;The ICU version number in the shared library name (&lt;code&gt;libicui18n.so.76&lt;/code&gt; vs &lt;code&gt;libicui18n.so.78&lt;/code&gt;) indicates an ABI break. You cannot simply symlink one version to another without risking crashes or undefined behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recognizing an ABI Break&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How did I know this wasn't just a missing symlink issue?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1. Version in library filename:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;libicui18n.so.76&lt;/code&gt; vs &lt;code&gt;libicui18n.so.78&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;.76&lt;/code&gt; and &lt;code&gt;.78&lt;/code&gt; are SONAME major versions&lt;/li&gt;
&lt;li&gt;Different major versions = intentional ABI incompatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;2. Versioned symbols in linker errors:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;icu_76::Normalizer::normalize&lt;/code&gt; ← version baked into symbol name&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ucnv_open_76&lt;/code&gt; ← function name includes version&lt;/li&gt;
&lt;li&gt;The library exposes &lt;code&gt;icu_78::&lt;/code&gt; symbols, but the binary needs &lt;code&gt;icu_76::&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;No amount of symlinking can resolve this mismatch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;3. Why symlinking would fail:&lt;/em&gt;&lt;br&gt;
Even if we created &lt;code&gt;ln -s libicui18n.so.78 libicui18n.so.76&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The binary would load, but call &lt;code&gt;icu_76::&lt;/code&gt; functions&lt;/li&gt;
&lt;li&gt;The library only has &lt;code&gt;icu_78::&lt;/code&gt; functions&lt;/li&gt;
&lt;li&gt;Result: immediate crash or undefined behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  4. Dependency Chains Run Deep
&lt;/h3&gt;

&lt;p&gt;What appeared to be a simple Notepadqq issue actually required:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Diagnosing the ICU mismatch&lt;/li&gt;
&lt;li&gt;Discovering the Qt5WebEngine dependency&lt;/li&gt;
&lt;li&gt;Identifying the orphaned repository package&lt;/li&gt;
&lt;li&gt;Rebuilding the entire dependency chain&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  What NOT to Do
&lt;/h2&gt;
&lt;h3&gt;
  
  
  ❌ Creating Symlinks
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# DON'T DO THIS&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; /usr/lib/libicui18n.so.78 /usr/lib/libicui18n.so.76
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;While this might allow the program to start, it can cause:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runtime crashes&lt;/li&gt;
&lt;li&gt;Undefined behavior&lt;/li&gt;
&lt;li&gt;Data corruption&lt;/li&gt;
&lt;li&gt;Difficult-to-debug issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  ❌ Ignoring Update Errors
&lt;/h3&gt;

&lt;p&gt;Regularly running &lt;code&gt;pacman -Syu&lt;/code&gt; is good, but you must also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check for orphaned packages: &lt;code&gt;pacman -Qtdq&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Verify AUR packages after system library updates&lt;/li&gt;
&lt;li&gt;Review failed transaction logs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Prevention Strategies
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Regular Orphan Package Cleanup
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;pacman &lt;span class="nt"&gt;-Qtdq&lt;/span&gt; | pacman &lt;span class="nt"&gt;-Rns&lt;/span&gt; -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Monitor AUR Package Build Failures
&lt;/h3&gt;

&lt;p&gt;When a system library updates, rebuild affected AUR packages immediately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; &lt;span class="nt"&gt;--rebuild&lt;/span&gt; &amp;lt;package-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Unmaintained AUR packages (like Notepadqq, last updated 2018) will &lt;strong&gt;always&lt;/strong&gt; need manual rebuilds after system library updates. Consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finding actively maintained alternatives&lt;/li&gt;
&lt;li&gt;Adopting the AUR package yourself&lt;/li&gt;
&lt;li&gt;Using AppImage/Flatpak versions that bundle dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Use Binary Package Alternatives
&lt;/h3&gt;

&lt;p&gt;For stability-critical applications, consider &lt;code&gt;-bin&lt;/code&gt; packages from AUR that bundle their dependencies, though this increases disk usage.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Check Library Dependencies
&lt;/h3&gt;

&lt;p&gt;After major library updates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ldd /usr/bin/&amp;lt;application&amp;gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"not found"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This issue perfectly demonstrates why Arch Linux is considered an "advanced" distribution. The rolling release model provides cutting-edge packages but requires users to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared library versioning (ABI compatibility)&lt;/li&gt;
&lt;li&gt;Dependency chains&lt;/li&gt;
&lt;li&gt;The relationship between official repositories and AUR&lt;/li&gt;
&lt;li&gt;When to rebuild vs. reinstall packages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The solution wasn't a quick fix but rather a systematic diagnosis and rebuild of the dependency chain. While frustrating in the moment, issues like this deepen understanding of how Linux systems work at a fundamental level.&lt;/p&gt;

&lt;p&gt;Have you encountered similar dependency issues on Arch? What's your approach to handling library version mismatches? Share your experiences in the comments!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;System Info:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distribution: EndeavourOS (Arch-based)&lt;/li&gt;
&lt;li&gt;Package Manager: pacman + yay&lt;/li&gt;
&lt;li&gt;Affected Versions: ICU 76 → 78, Qt5WebEngine 5.15.19-4&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>archlinux</category>
      <category>help</category>
      <category>linux</category>
    </item>
    <item>
      <title>NVIDIA Drops GTX 900/1000 Support in 590 Driver - Getting a Fix on Arch Linux</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Tue, 23 Dec 2025 02:25:28 +0000</pubDate>
      <link>https://forem.com/hopsayer/nvidia-drops-gtx-9001000-support-in-590-driver-how-to-fix-on-arch-linux-1175</link>
      <guid>https://forem.com/hopsayer/nvidia-drops-gtx-9001000-support-in-590-driver-how-to-fix-on-arch-linux-1175</guid>
      <description>&lt;h1&gt;
  
  
  Fixing NVIDIA Driver Issues on Arch Linux After the 590 Update
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The Problem: How You'll Know Something's Wrong
&lt;/h2&gt;

&lt;p&gt;If you're running Arch Linux with an NVIDIA GTX 900 or 1000 series GPU (Maxwell/Pascal architecture), you might suddenly encounter this prompt when trying to update your system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo pacman -Syu
resolving dependencies...
:: Replace nvidia-dkms with extra/nvidia-open-dkms? [Y/n]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or when trying to install the nvidia driver:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo pacman -S nvidia-dkms
resolving dependencies...
warning: cannot resolve "nvidia-utils=590.48.01", a dependency of "nvidia-open-dkms"
:: The following package cannot be upgraded due to unresolvable dependencies:
      nvidia-open-dkms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You might have temporarily worked around this by ignoring NVIDIA packages in &lt;code&gt;/etc/pacman.conf&lt;/code&gt;, but this isn't a sustainable solution. Your system updates are now incomplete, and you're missing important driver updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happened: The Context
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;December 20, 2025&lt;/strong&gt;, Arch Linux officially announced that &lt;strong&gt;NVIDIA driver version 590 no longer supports Maxwell (GTX 900 series) and Pascal (GTX 1000 series) GPUs&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Here's the timeline of changes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Before&lt;/strong&gt;: Arch provided &lt;code&gt;nvidia-dkms&lt;/code&gt; and &lt;code&gt;nvidia-utils&lt;/code&gt; in official repositories that supported most GPUs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transition period&lt;/strong&gt;: Arch began moving to &lt;code&gt;nvidia-open-dkms&lt;/code&gt; (open-source kernel modules) for newer GPUs (Turing/Ampere and later)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;December 2025&lt;/strong&gt;: NVIDIA 590 dropped support for Maxwell/Pascal architectures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Current state&lt;/strong&gt;: Official repos only support newer GPUs; older cards must use legacy drivers from AUR&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Who Is Affected?
&lt;/h3&gt;

&lt;p&gt;This affects users with:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GTX 900 series&lt;/strong&gt;: GTX 950M, 960, 970, 980, 980 Ti, Titan X (Maxwell), GTX 750, 750 Ti, 745, GT 945a
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GTX 1000 series&lt;/strong&gt;: GTX 1050, 1060, 1070, 1080, 1080 Ti, Titan X (Pascal)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quadro M-series&lt;/strong&gt; and other Maxwell/Pascal professional cards
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mobile Maxwell GPUs&lt;/strong&gt;: GTX 980M, 970M, 965M, 960M, 950M, Geforce 945M, 940MX, 940M, 930MX, 930M, 920MX, 920M, 910M, GTX 860M, 850M, 845M&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Did This Happen?
&lt;/h3&gt;

&lt;p&gt;NVIDIA's proprietary driver development follows this pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Production branch&lt;/strong&gt; (currently 590+): Supports only recent architectures (Turing and newer)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy branches&lt;/strong&gt;: Frozen versions for older architectures (580.xx for Maxwell/Pascal, 470.xx for Kepler, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Arch's decision to remove Maxwell/Pascal from official repos aligns with NVIDIA's EOL (End of Life) for these architectures in the production branch.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Migrate to nvidia-580xx from AUR
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;580.xx driver series&lt;/strong&gt; is the last version that officially supports Maxwell and Pascal GPUs. While it's no longer in Arch's official repositories, it's maintained in the AUR (Arch User Repository).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Verify Your GPU Architecture
&lt;/h3&gt;

&lt;p&gt;First, confirm your GPU model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lspci | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; nvidia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;01:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 950M]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check if your card is Maxwell or Pascal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maxwell&lt;/strong&gt;: GTX 900 series, GTX 700 series (some), Quadro M-series&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pascal&lt;/strong&gt;: GTX 1000 series, Quadro P-series&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Back Up Your Settings (Optional but Recommended)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Back up your NVIDIA settings&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; ~/.nvidia-settings-rc ~/.nvidia-settings-rc.backup

&lt;span class="c"&gt;# Back up xorg.conf if it exists&lt;/span&gt;
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; /etc/X11/xorg.conf /etc/X11/xorg.conf.backup 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"No xorg.conf found"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your user settings in &lt;code&gt;~/.nvidia-settings-rc&lt;/code&gt; won't be deleted during the process, but it's good practice to have a backup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Remove Conflicting Official Packages
&lt;/h3&gt;

&lt;p&gt;The old packages conflict with the AUR versions we'll install. We need to remove them, including Steam if it's creating dependency issues:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Force removal (ignore dependency warnings)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Rdd&lt;/span&gt; nvidia-dkms nvidia-utils nvidia-settings lib32-nvidia-utils
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Using &lt;code&gt;-Rdd&lt;/code&gt; (remove with dependency override) is necessary here because Steam and other packages depend on these. We'll restore everything immediately after.&lt;/p&gt;

&lt;p&gt;You'll see errors about missing NVIDIA modules during initramfs rebuild—this is expected since we just removed the driver.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Install nvidia-580xx from AUR
&lt;/h3&gt;

&lt;p&gt;Now install the correct driver packages from AUR. If you're using &lt;code&gt;yay&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; nvidia-580xx-dkms nvidia-580xx-utils nvidia-580xx-settings lib32-nvidia-580xx-utils
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're using &lt;code&gt;paru&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;paru &lt;span class="nt"&gt;-S&lt;/span&gt; nvidia-580xx-dkms nvidia-580xx-utils nvidia-580xx-settings lib32-nvidia-580xx-utils
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What each package does:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;nvidia-580xx-dkms&lt;/code&gt;: Kernel module sources (compiles driver for your kernel)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nvidia-580xx-utils&lt;/code&gt;: OpenGL, Vulkan, CUDA libraries and utilities&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nvidia-580xx-settings&lt;/code&gt;: nvidia-settings GUI configuration tool&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;lib32-nvidia-580xx-utils&lt;/code&gt;: 32-bit support (required for Steam and many games)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During installation, you'll see:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download of NVIDIA driver archive (~380 MB)&lt;/li&gt;
&lt;li&gt;Package compilation (1-3 minutes)&lt;/li&gt;
&lt;li&gt;DKMS module compilation (~30-120 seconds)&lt;/li&gt;
&lt;li&gt;Successful initramfs generation (no more "module not found" errors!)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 5: Reinstall Steam (if needed)
&lt;/h3&gt;

&lt;p&gt;If you had to remove Steam during the process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; steam
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 6: Reboot and Verify
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After reboot, verify everything works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check driver version&lt;/span&gt;
nvidia-smi

&lt;span class="c"&gt;# Should show something like:&lt;/span&gt;
&lt;span class="c"&gt;# +-----------------------------------------------------------------------------------------+&lt;/span&gt;
&lt;span class="c"&gt;# | NVIDIA-SMI 580.119.02             Driver Version: 580.119.02   CUDA Version: 12.4     |&lt;/span&gt;
&lt;span class="c"&gt;# +-----------------------------------------------------------------------------------------+&lt;/span&gt;

&lt;span class="c"&gt;# Verify OpenGL&lt;/span&gt;
glxinfo | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"OpenGL renderer"&lt;/span&gt;

&lt;span class="c"&gt;# Should show your GPU name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What About Future Updates?
&lt;/h2&gt;

&lt;p&gt;Good news: &lt;strong&gt;AUR packages update just like official packages!&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Regular system updates will include nvidia-580xx&lt;/span&gt;
yay &lt;span class="nt"&gt;-Syu&lt;/span&gt;
&lt;span class="c"&gt;# or&lt;/span&gt;
paru &lt;span class="nt"&gt;-Syu&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The only difference from official packages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Initial install&lt;/strong&gt;: Takes 1-3 minutes to build the package&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates&lt;/strong&gt;: Take 1-3 minutes when NVIDIA releases new 580.xx versions (rare)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kernel updates&lt;/strong&gt;: DKMS automatically recompiles the module (30-120 seconds, happens automatically)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Issue: "conflicting packages" during installation
&lt;/h3&gt;

&lt;p&gt;If you see conflicts with &lt;code&gt;libxnvctrl&lt;/code&gt; or similar packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Remove the conflicting package when prompted&lt;/span&gt;
&lt;span class="c"&gt;# yay will ask: "Remove libxnvctrl? [y/N]"&lt;/span&gt;
&lt;span class="c"&gt;# Answer: y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Issue: Black screen after reboot
&lt;/h3&gt;

&lt;p&gt;This usually means the module didn't load. Check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check if module is loaded&lt;/span&gt;
lsmod | &lt;span class="nb"&gt;grep &lt;/span&gt;nvidia

&lt;span class="c"&gt;# Check kernel messages&lt;/span&gt;
dmesg | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; nvidia

&lt;span class="c"&gt;# Manually load module&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe nvidia
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Issue: "module not found" errors persist
&lt;/h3&gt;

&lt;p&gt;Rebuild initramfs manually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mkinitcpio &lt;span class="nt"&gt;-P&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Issue: Performance concerns
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Q: Will downgrading from 590 to 580 hurt performance?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A: No.&lt;/strong&gt; The 580.xx branch is the last version optimized for Maxwell/Pascal. Versions 590+ don't contain any optimizations for your GPU—they simply removed support for it. You might actually see &lt;em&gt;better&lt;/em&gt; stability since 580.xx was specifically designed for your architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Use nvidia-470xx Instead?
&lt;/h2&gt;

&lt;p&gt;You might see some guides mentioning &lt;code&gt;nvidia-470xx-dkms&lt;/code&gt;. Here's the difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;470.xx&lt;/strong&gt;: Legacy branch for &lt;strong&gt;Kepler&lt;/strong&gt; architecture (GTX 600/700 series)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;580.xx&lt;/strong&gt;: Legacy branch for &lt;strong&gt;Maxwell/Pascal&lt;/strong&gt; (GTX 900/1000 series)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a GTX 950M or GTX 1060, you want 580.xx, not 470.xx. The 470.xx branch is for even older cards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternative: Using nouveau (Open-Source Driver)
&lt;/h2&gt;

&lt;p&gt;If you don't need CUDA or maximum 3D performance, consider the open-source nouveau driver:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Remove NVIDIA proprietary driver&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Rdd&lt;/span&gt; nvidia-580xx-dkms nvidia-580xx-utils nvidia-580xx-settings lib32-nvidia-580xx-utils

&lt;span class="c"&gt;# Install nouveau (if not already installed)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; xf86-video-nouveau

&lt;span class="c"&gt;# Reboot&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;reboot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Nouveau pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully open-source&lt;/li&gt;
&lt;li&gt;In official repos (no AUR needed)&lt;/li&gt;
&lt;li&gt;Better Wayland support&lt;/li&gt;
&lt;li&gt;No driver compilation needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Nouveau cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lower 3D performance (30-50% slower in games)&lt;/li&gt;
&lt;li&gt;No CUDA support&lt;/li&gt;
&lt;li&gt;Some power management issues on laptops&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The migration to nvidia-580xx-dkms is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove old official packages: &lt;code&gt;sudo pacman -Rdd nvidia-dkms nvidia-utils nvidia-settings lib32-nvidia-utils&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Install AUR packages: &lt;code&gt;yay -S nvidia-580xx-dkms nvidia-580xx-utils nvidia-580xx-settings lib32-nvidia-580xx-utils&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Reboot and verify with &lt;code&gt;nvidia-smi&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Proper driver support for Maxwell/Pascal GPUs&lt;/li&gt;
&lt;li&gt;Automatic updates through pacman/yay&lt;/li&gt;
&lt;li&gt;DKMS handles kernel updates automatically&lt;/li&gt;
&lt;li&gt;Same performance as before&lt;/li&gt;
&lt;li&gt;No more dependency conflicts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 580.xx branch will continue to work until NVIDIA releases a version that drops your architecture entirely—which likely won't happen for several more years. Community patches in AUR will keep it building on new kernels.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://archlinux.org/news/nvidia-590-driver-drops-pascal-support-main-packages-switch-to-open-kernel-modules/" rel="noopener noreferrer"&gt;Arch Blog - NVIDIA Drops GTX 900/1000 Support in 590 Driver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.archlinux.org/title/NVIDIA" rel="noopener noreferrer"&gt;Arch Linux NVIDIA Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nvidia.com/en-us/drivers/unix/" rel="noopener noreferrer"&gt;NVIDIA Unix Driver Archive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aur.archlinux.org/packages/nvidia-580xx-dkms" rel="noopener noreferrer"&gt;nvidia-580xx-dkms AUR Package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This guide was created based on real successful migration experience with a GTX 950M on Arch Linux (December 2025).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>archlinux</category>
      <category>linux</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Linux Part 3: AI-Powered Learning, Post-Ubuntu Distros, Actually existing DE's, App Packaging&amp;Delivery Approaches</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Thu, 18 Dec 2025 14:49:41 +0000</pubDate>
      <link>https://forem.com/hopsayer/linux-part-3-ai-powered-learning-post-ubuntu-distros-actually-existing-des-app-4goc</link>
      <guid>https://forem.com/hopsayer/linux-part-3-ai-powered-learning-post-ubuntu-distros-actually-existing-des-app-4goc</guid>
      <description>&lt;h1&gt;
  
  
  Linux Part 3: AI-Powered Learning, Post-Ubuntu Distros, Which DE Actually Exist,  App Packaging&amp;amp;Delivery Approaches
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a continuation of the Linux intro series. If you haven't read Parts 1 and 2, start there - this assumes you understand basic Linux concepts like the FHS, package managers, and configuration management.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ubuntu Reality Check
&lt;/h2&gt;

&lt;p&gt;Ubuntu has a reputation as the "beginner-friendly" distro. And it was - back in 2010. But here's the uncomfortable truth: &lt;strong&gt;Ubuntu's "simplifications" now create more problems than they solve.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You've already experienced this firsthand with your GPG key nightmares and library version conflicts. These aren't random bugs - they're symptoms of Ubuntu's architectural decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problems With "User-Friendly" Ubuntu
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Snap and Flatpak bloat:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install 3 applications → They consume 50 GB of disk space&lt;/li&gt;
&lt;li&gt;Performance is measurably slower than native packages&lt;/li&gt;
&lt;li&gt;Updates happen separately from your system updates&lt;/li&gt;
&lt;li&gt;Flatpak's hype died in 2022-2023 - if you need portability, use AppImage instead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Repository fragmentation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Nearly every application requires manually adding a new repository&lt;/li&gt;
&lt;li&gt;Each repository needs its own GPG key (hence your pain)&lt;/li&gt;
&lt;li&gt;This creates a tangled web of trust relationships&lt;/li&gt;
&lt;li&gt;Updates can break when repos become incompatible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;"GUI for everything" isn't unique anymore:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In 2010, avoiding the terminal was Ubuntu's killer feature&lt;/li&gt;
&lt;li&gt;In 2025, virtually every major distro has excellent GUI tools&lt;/li&gt;
&lt;li&gt;You've already learned the terminal basics - you don't need Ubuntu to protect you from it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The library version hell:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ubuntu holds packages at specific versions for "stability"&lt;/li&gt;
&lt;li&gt;Newer software often needs newer libraries&lt;/li&gt;
&lt;li&gt;You end up manually managing dependencies (remember trying to remove Wine libraries?)&lt;/li&gt;
&lt;li&gt;This problem is &lt;strong&gt;architecturally impossible&lt;/strong&gt; on rolling-release distros&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What You Did Right
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Focusing on one distro&lt;/strong&gt; - Absolutely correct. Distro-hopping teaches you nothing. You learn the system by living with it through problems and solutions.&lt;/p&gt;

&lt;p&gt;But you picked Ubuntu because of outdated advice. Let's fix that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Linux Landscape
&lt;/h2&gt;

&lt;p&gt;Here's the truth: &lt;strong&gt;There are only 3 distros. Everything else is a derivative or niche project.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ubuntu&lt;/strong&gt; - Debian-based, corporate-backed, "stable" releases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fedora&lt;/strong&gt; - Red Hat-based, cutting-edge, 6-month release cycle&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arch&lt;/strong&gt; - Rolling release, bleeding edge, community-driven&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pick your base. Everything else (Mint, Pop!_OS, Manjaro, etc.) is just someone's pre-configured version of one of these three.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Arch (Via EndeavourOS)
&lt;/h2&gt;

&lt;p&gt;I'm recommending &lt;strong&gt;EndeavourOS&lt;/strong&gt; - which is Arch with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Graphical installer (no command-line installation dance)&lt;/li&gt;
&lt;li&gt;Automatic driver detection and installation&lt;/li&gt;
&lt;li&gt;Sensible defaults pre-configured&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;But it's still pure Arch under the hood&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Practical Benefits
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Single, unified repository:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No PPA hell&lt;/li&gt;
&lt;li&gt;No manual GPG key management&lt;/li&gt;
&lt;li&gt;Everything comes from one source (pacman) or the community (AUR)&lt;/li&gt;
&lt;li&gt;Your "which repo has this package?" question never comes up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Up-to-date packages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New software versions arrive within days&lt;/li&gt;
&lt;li&gt;Libraries update alongside programs&lt;/li&gt;
&lt;li&gt;That Windows program that needs Wine 8.x? You have it already&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Arch Wiki:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seriously, this alone justifies using Arch&lt;/li&gt;
&lt;li&gt;Updated &lt;strong&gt;daily&lt;/strong&gt; by the community&lt;/li&gt;
&lt;li&gt;Every problem you'll encounter has a wiki page&lt;/li&gt;
&lt;li&gt;Clear, technical, no-nonsense documentation&lt;/li&gt;
&lt;li&gt;Example: &lt;code&gt;wiki.archlinux.org&lt;/code&gt; - bookmark this&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Fast package manager:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pacman&lt;/code&gt; is significantly faster than &lt;code&gt;apt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;AUR helper (&lt;code&gt;yay&lt;/code&gt;) makes community packages feel native&lt;/li&gt;
&lt;li&gt;Update your entire system: &lt;code&gt;yay&lt;/code&gt; (just that, one command)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The "Arch Breaks on Updates" Myth
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Reality:&lt;/strong&gt; 90% myth, 10% minor inconveniences.&lt;/p&gt;

&lt;p&gt;Here's what actually happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Small issues occur every few months&lt;/li&gt;
&lt;li&gt;Fixes appear within 0-7 days&lt;/li&gt;
&lt;li&gt;You check the Arch homepage before major updates&lt;/li&gt;
&lt;li&gt;If there's a known issue, you wait a day or two&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Your Ubuntu experience was worse:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPG key failures&lt;/li&gt;
&lt;li&gt;Trying to manually manage library dependencies&lt;/li&gt;
&lt;li&gt;Repository version mismatches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On Arch, these problems &lt;strong&gt;structurally cannot happen&lt;/strong&gt; because of the rolling release model and unified repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Desktop Environment Question
&lt;/h2&gt;

&lt;p&gt;Forget the 15 different desktop environments. &lt;strong&gt;There are only 2 that matter:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;GNOME&lt;/strong&gt; - Opinionated, keyboard-workflow focused, "our way or the highway"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;KDE Plasma&lt;/strong&gt; - Flexible, traditional desktop, infinitely customizable&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything else (XFCE, Cinnamon, MATE, etc.) is either a fork of these two or a niche project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You're on KDE already&lt;/strong&gt; - good choice. It's the Windows-like experience done right. Keep it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Resources: Stop Googling
&lt;/h2&gt;

&lt;p&gt;You mentioned Google is inefficient for learning Linux. &lt;strong&gt;You're absolutely right.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Use AI, Not Search Engines
&lt;/h3&gt;

&lt;p&gt;Instead of Googling "how to install X on Linux":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ask ChatGPT/Claude/DeepSeek:
"I'm on Arch Linux with KDE. I want to install [program]. 
What's the best way, and what should I know about it?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step-by-step instructions&lt;/li&gt;
&lt;li&gt;Context about why you're doing each step&lt;/li&gt;
&lt;li&gt;Warnings about common pitfalls&lt;/li&gt;
&lt;li&gt;Alternative approaches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Google gives you:&lt;/strong&gt; 10 outdated forum posts from 2015, half for the wrong distro.&lt;/p&gt;

&lt;h3&gt;
  
  
  Essential Websites (Not Google)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AlternativeTo.net&lt;/strong&gt; - Finding Linux replacements for Windows programs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for your Windows app&lt;/li&gt;
&lt;li&gt;Filter by "Linux"&lt;/li&gt;
&lt;li&gt;See ratings, reviews, and actual user experiences&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;appdb.winehq.org&lt;/strong&gt; - Checking Windows software compatibility with Wine&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search the program&lt;/li&gt;
&lt;li&gt;See tested versions and what works/breaks&lt;/li&gt;
&lt;li&gt;Community workarounds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DistroWatch.com&lt;/strong&gt; - The distro leaderboard&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popularity rankings (with context)&lt;/li&gt;
&lt;li&gt;Distro family trees&lt;/li&gt;
&lt;li&gt;News about releases and changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;portablebspps.com&lt;/strong&gt; - Finding portable Windows apps&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Many installers break under Wine&lt;/li&gt;
&lt;li&gt;Portable versions often work flawlessly&lt;/li&gt;
&lt;li&gt;Skip the installer entirely&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Gaming and Graphics: Real Talk
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Forcing GPU Selection
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;For NVIDIA users&lt;/strong&gt; (if you have hybrid graphics):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Force NVIDIA for any program&lt;/span&gt;
&lt;span class="nv"&gt;__GLX_VENDOR_LIBRARY_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nvidia program_name

&lt;span class="c"&gt;# Force NVIDIA for Wine/Proton games&lt;/span&gt;
&lt;span class="nv"&gt;__GLX_VENDOR_LIBRARY_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nvidia wine game.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is &lt;strong&gt;way&lt;/strong&gt; simpler than Windows's clunky NVIDIA Control Panel per-application settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  PortProton Is Unnecessary
&lt;/h3&gt;

&lt;p&gt;You don't need PortProton. Here's why:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you actually need:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Steam (in the official repos)&lt;/li&gt;
&lt;li&gt;Steam Runtime (included with Steam)&lt;/li&gt;
&lt;li&gt;That's it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Steam's built-in Proton handles Windows games. PortProton adds a GUI wrapper that doesn't actually improve anything - it's training wheels for people afraid of Steam settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Complex Cases: Lutris
&lt;/h3&gt;

&lt;p&gt;If you need maximum control over Wine/Proton versions, use &lt;strong&gt;Lutris&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay &lt;span class="nt"&gt;-S&lt;/span&gt; lutris
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GUI for managing Wine versions&lt;/li&gt;
&lt;li&gt;Per-game Wine/Proton selection&lt;/li&gt;
&lt;li&gt;Built-in MangoHud support (FPS overlay)&lt;/li&gt;
&lt;li&gt;GPU selection dropdown&lt;/li&gt;
&lt;li&gt;Full manual control when you need it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But &lt;strong&gt;start with Steam&lt;/strong&gt;. Only reach for Lutris when Steam Proton doesn't work for a specific game.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration: The Portable Setup
&lt;/h2&gt;

&lt;p&gt;Remember from Part 2: your entire Linux personality lives in &lt;code&gt;~/.config/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On Arch, this becomes even more powerful:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backup your entire setup&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-czf&lt;/span&gt; my-arch-setup.tar.gz ~/.config ~/.local ~/Documents

&lt;span class="c"&gt;# New machine, new install&lt;/span&gt;
&lt;span class="c"&gt;# After creating the same username:&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-xzf&lt;/span&gt; my-arch-setup.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; ~/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Everything returns:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All application settings&lt;/li&gt;
&lt;li&gt;Custom keybindings&lt;/li&gt;
&lt;li&gt;Menu customizations&lt;/li&gt;
&lt;li&gt;Themes and appearances&lt;/li&gt;
&lt;li&gt;Even your application menu entries from &lt;code&gt;~/.local/share/applications/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On Ubuntu, this works &lt;em&gt;mostly&lt;/em&gt;. On Arch, it works &lt;strong&gt;perfectly&lt;/strong&gt; because package versions are current and consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Transition Plan
&lt;/h2&gt;

&lt;p&gt;If you're convinced, here's how to switch without losing your mind:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Preparation (While still on Ubuntu)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Document your installed programs: &lt;code&gt;dpkg --get-selections &amp;gt; my-programs.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Backup &lt;code&gt;/home/&lt;/code&gt; entirely&lt;/li&gt;
&lt;li&gt;Note any weird customizations you made&lt;/li&gt;
&lt;li&gt;Download EndeavourOS ISO&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Installation&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Boot from USB&lt;/li&gt;
&lt;li&gt;Choose "Online install" (gets latest packages)&lt;/li&gt;
&lt;li&gt;Select KDE Plasma as desktop&lt;/li&gt;
&lt;li&gt;Let it auto-detect drivers&lt;/li&gt;
&lt;li&gt;20 minutes later, you're done&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Setup&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy back your &lt;code&gt;~/.config/&lt;/code&gt; and &lt;code&gt;~/.local/&lt;/code&gt; folders&lt;/li&gt;
&lt;li&gt;Install your programs via &lt;code&gt;pacman&lt;/code&gt; and &lt;code&gt;yay&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Most of your settings are already restored&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Learning&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep the Arch Wiki open&lt;/li&gt;
&lt;li&gt;Ask AI when stuck&lt;/li&gt;
&lt;li&gt;Join the EndeavourOS forums (helpful community)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Objections Addressed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"But I already spent time learning Ubuntu!"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You learned Linux fundamentals - file system hierarchy, package management concepts, configuration patterns. That knowledge &lt;strong&gt;fully transfers&lt;/strong&gt;. You're just switching the implementation details (apt → pacman, PPAs → AUR).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Arch seems harder."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Arch seems harder because it doesn't hide things from you. Ubuntu creates the &lt;em&gt;illusion&lt;/em&gt; of simplicity by abstracting problems away - until they break, and then you're lost.&lt;/p&gt;

&lt;p&gt;With Arch, you understand what's happening. That feels harder initially, but it's &lt;strong&gt;honest difficulty&lt;/strong&gt; that makes you competent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What if I break something?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You already broke things on Ubuntu (the Wine library incident). The difference on Arch is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The wiki explains why it broke&lt;/li&gt;
&lt;li&gt;The fix is clearer&lt;/li&gt;
&lt;li&gt;The community has documented it&lt;/li&gt;
&lt;li&gt;You learn the actual system, not Ubuntu-specific workarounds&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;You're documenting your Linux learning journey in real-time, showing beginner struggles. &lt;strong&gt;This is valuable content&lt;/strong&gt; - the Russian Linux community needs more honest, unglamorified guides.&lt;/p&gt;

&lt;p&gt;Switching to Arch would:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eliminate entire categories of problems you're hitting&lt;/li&gt;
&lt;li&gt;Show viewers the difference between "beginner distro" and "actually functional distro"&lt;/li&gt;
&lt;li&gt;Give you material for better tutorial content (Arch wiki → translate to Russian)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But more importantly: &lt;strong&gt;You'll stop fighting the system and start understanding it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pluralism Zoo
&lt;/h2&gt;

&lt;p&gt;Linux is a zoo of technologies and philosophies. Different package formats (deb, rpm, pkg), different init systems (systemd, OpenRC), different display servers (X11, Wayland), different approaches to everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is not a bug. This is the feature.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No single point of failure (if Ubuntu dies, Debian continues)&lt;/li&gt;
&lt;li&gt;Innovation happens at all levels&lt;/li&gt;
&lt;li&gt;You can choose based on your actual needs&lt;/li&gt;
&lt;li&gt;The best ideas survive through competition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But as a beginner, this feels overwhelming. That's why you &lt;strong&gt;pick one path and master it&lt;/strong&gt;. You picked Ubuntu. I'm suggesting you pivot to Arch while your fundamentals are still fresh.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making the Choice
&lt;/h2&gt;

&lt;p&gt;Stay on Ubuntu if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're deeply invested in Snap-based workflows&lt;/li&gt;
&lt;li&gt;You need enterprise LTS support&lt;/li&gt;
&lt;li&gt;Change feels too risky right now&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Switch to Arch (EndeavourOS) if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're tired of repository and key management&lt;/li&gt;
&lt;li&gt;You want bleeding-edge packages&lt;/li&gt;
&lt;li&gt;You value learning over hand-holding&lt;/li&gt;
&lt;li&gt;The Arch Wiki appeals to your learning style&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;There's no wrong choice.&lt;/strong&gt; But there is an &lt;strong&gt;informed choice&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Your instinct to ask "why does this work this way?" is correct. Ubuntu's complexity isn't deep complexity - it's accumulated cruft from trying to be both Debian and its own thing.&lt;/p&gt;

&lt;p&gt;Arch's complexity is honest complexity. The system is what it appears to be. The wiki tells you the truth. The community expects you to think.&lt;/p&gt;

&lt;p&gt;You're already thinking. You're already learning. You're already past the point where Ubuntu's "protections" help you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The question isn't whether you can handle Arch. You already can.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The question is: do you want to keep fighting Ubuntu's architectural decisions, or do you want to use a system designed for people who actually care how things work?&lt;/p&gt;

&lt;p&gt;You're making video guides. You're documenting everything. You're not running away from the terminal. &lt;strong&gt;You're exactly the person Arch is designed for.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Welcome to the deep end. The water's fine.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Next up: Part 4 could cover customization, themes, and making Linux truly yours - or a Wine/Proton deep-dive for running Windows software. Let me know what's more interesting.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>learning</category>
      <category>architecture</category>
      <category>linux</category>
    </item>
    <item>
      <title>Linux Advanced: Under the Hood - Philosophy And Usage Tips</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Thu, 18 Dec 2025 12:01:42 +0000</pubDate>
      <link>https://forem.com/hopsayer/linux-advanced-under-the-hood-deep-dive-2d55</link>
      <guid>https://forem.com/hopsayer/linux-advanced-under-the-hood-deep-dive-2d55</guid>
      <description>&lt;h1&gt;
  
  
  Linux Advanced: Under the Hood - Deep Dive
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;This is a continuation of "Linux Quick Intro" - covering the technical details, philosophy, and advanced concepts that were glossed over in the beginner guide.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  In this article you will discover:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why Windows is deliberately different&lt;/strong&gt; - The historical truth behind drive letters and registry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Linux directories&lt;/strong&gt; - &lt;code&gt;/proc&lt;/code&gt;, &lt;code&gt;/dev&lt;/code&gt;, &lt;code&gt;/sys&lt;/code&gt; and the virtual filesystem concept&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The FHS philosophy&lt;/strong&gt; - Why standardization beats flexibility&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Package management internals&lt;/strong&gt; - How AUR transforms .deb into native packages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration portability&lt;/strong&gt; - Set up Linux once, keep it forever&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Symlinks vs Windows shortcuts&lt;/strong&gt; - Why .lnk is a toy and symlinks are serious tools&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wine demystified&lt;/strong&gt; - It's not emulation (and why that matters)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context menu sanity&lt;/strong&gt; - How Linux saved right-click from bloat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop Environment landscape&lt;/strong&gt; - KDE, GNOME, and the choice that matters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Driver architecture&lt;/strong&gt; - Why your Wacom "just works"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Part 1: Why Linux Works This Way (And Why Windows Doesn't)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Historical Truth
&lt;/h3&gt;

&lt;p&gt;Linux (and UNIX before it) came first. When Microsoft created DOS and later Windows, they deliberately made different design choices - not because they were better, but &lt;strong&gt;to avoid looking like UNIX&lt;/strong&gt;. This isn't conspiracy theory - it's documented history.&lt;/p&gt;

&lt;p&gt;The result? Drive letters (C:\, D:) instead of a unified root. Registry instead of plain-text configs. Arbitrary install locations instead of standardized paths. These aren't features - they're &lt;strong&gt;deliberately different implementations of solved problems&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The bitter pill:&lt;/strong&gt; Windows only seems "intuitive" because we're conditioned to its quirks. It's like learning a language with irregular grammar first - you think that's normal until you see a properly designed one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Matters
&lt;/h3&gt;

&lt;p&gt;Linux's standardized paths mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Programs know where to find each other's files&lt;/li&gt;
&lt;li&gt;Updates don't break things (if you follow the rules)&lt;/li&gt;
&lt;li&gt;You can backup your entire configuration in kilobytes&lt;/li&gt;
&lt;li&gt;The system doesn't accumulate cruft over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Windows's approach means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Program A can't reliably find Program B's data&lt;/li&gt;
&lt;li&gt;Every installer asks where to put things&lt;/li&gt;
&lt;li&gt;Uninstallers leave registry debris&lt;/li&gt;
&lt;li&gt;After 6 months, you "need" to reinstall for "performance"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Part 2: File System Deep Dive
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Directories You Skipped
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;/proc/&lt;/code&gt;&lt;/strong&gt; - Not real files. It's a virtual filesystem exposing kernel and process information. Want to see your CPU info? &lt;code&gt;cat /proc/cpuinfo&lt;/code&gt;. Current process list? It's all in &lt;code&gt;/proc/&lt;/code&gt;. You rarely touch this directly, but system monitoring tools read from here constantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;/dev/&lt;/code&gt;&lt;/strong&gt; - Device files. Your hard drive is &lt;code&gt;/dev/sda&lt;/code&gt;, partitions are &lt;code&gt;/dev/sda1&lt;/code&gt;, etc. Graphics card, USB devices - everything hardware appears here as a file. "Everything is a file" isn't a metaphor in Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;/sys/&lt;/code&gt;&lt;/strong&gt; - Another virtual filesystem for device management and kernel modules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Symbolic Links: The Right Way
&lt;/h3&gt;

&lt;p&gt;Remember my warning about recreating Windows structure? Here's why it fails:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad approach (what beginners try):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# DON'T DO THIS&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; /mnt/games  &lt;span class="c"&gt;# "My D: drive"&lt;/span&gt;
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; /mnt/games/&lt;span class="k"&gt;*&lt;/span&gt; ~/.local/share/Steam/steamapps/common/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it breaks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Steam updates can delete and recreate directories, breaking links&lt;/li&gt;
&lt;li&gt;File permissions get confusing (who owns what?)&lt;/li&gt;
&lt;li&gt;You now have TWO sources of truth (actual location vs standard location)&lt;/li&gt;
&lt;li&gt;Backup tools might follow links or ignore them unpredictably&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Proper approach (when actually needed):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Move ONE specific huge game, link it back&lt;/span&gt;
&lt;span class="nb"&gt;mv&lt;/span&gt; ~/.local/share/Steam/steamapps/common/MassiveGame /mnt/games/
&lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; /mnt/games/MassiveGame ~/.local/share/Steam/steamapps/common/MassiveGame
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only redirect specific items. Keep the standard structure intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3: Package Management - How It Really Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Anatomy of a &lt;code&gt;.deb&lt;/code&gt; Package
&lt;/h3&gt;

&lt;p&gt;When you download a &lt;code&gt;.deb&lt;/code&gt; for Ubuntu, it's just a &lt;code&gt;.tar&lt;/code&gt; archive with a specific structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package.deb
├── bin/
│   └── program_binary
├── lib/
│   └── libsomething.so
└── usr/
    └── share/
        ├── applications/
        │   └── program.desktop
        └── icons/
            └── program.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Manual installation (educational purposes only):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Extract&lt;/span&gt;
ar x package.deb
&lt;span class="nb"&gt;tar &lt;/span&gt;xf data.tar.xz

&lt;span class="c"&gt;# Copy files to matching system paths&lt;/span&gt;
&lt;span class="nb"&gt;sudo cp &lt;/span&gt;bin/&lt;span class="k"&gt;*&lt;/span&gt; /usr/bin/
&lt;span class="nb"&gt;sudo cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; usr/share/&lt;span class="k"&gt;*&lt;/span&gt; /usr/share/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This works, but it's terrible because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No dependency tracking&lt;/li&gt;
&lt;li&gt;No clean uninstall&lt;/li&gt;
&lt;li&gt;Updates won't work&lt;/li&gt;
&lt;li&gt;You're now maintaining this manually forever&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How AUR Actually Works
&lt;/h3&gt;

&lt;p&gt;When you run &lt;code&gt;yay -S onlyoffice-bin&lt;/code&gt;, here's the full process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Download PKGBUILD script&lt;/strong&gt; from AUR (stored in &lt;code&gt;~/.cache/yay/onlyoffice-bin/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Script executes&lt;/strong&gt;, which:

&lt;ul&gt;
&lt;li&gt;Downloads the &lt;code&gt;.deb&lt;/code&gt; from OnlyOffice's official site (URL in script)&lt;/li&gt;
&lt;li&gt;Verifies SHA256 checksum (security)&lt;/li&gt;
&lt;li&gt;Extracts the &lt;code&gt;.deb&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Repackages it as &lt;code&gt;.pkg.tar.zst&lt;/code&gt; (Arch format)&lt;/li&gt;
&lt;li&gt;Calls &lt;code&gt;sudo pacman -U package.pkg.tar.zst&lt;/code&gt; (install local package)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pacman tracks&lt;/strong&gt; this in its database - now you can update/remove it properly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;For source packages (no &lt;code&gt;-bin&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
The PKGBUILD instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downloads source code&lt;/li&gt;
&lt;li&gt;Installs build dependencies&lt;/li&gt;
&lt;li&gt;Compiles the program (this is why your CPU spikes for 20+ minutes)&lt;/li&gt;
&lt;li&gt;Packages the compiled binaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why &lt;code&gt;-bin&lt;/code&gt; versions are preferred when available - they skip compilation.&lt;/p&gt;
&lt;h3&gt;
  
  
  The &lt;code&gt;yay&lt;/code&gt; vs &lt;code&gt;yay -S&lt;/code&gt; distinction
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay package_name      &lt;span class="c"&gt;# Search ALL packages, let you choose&lt;/span&gt;
yay &lt;span class="nt"&gt;-S&lt;/span&gt; package_name   &lt;span class="c"&gt;# Install exactly this package name (must be exact)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay discord
&lt;span class="c"&gt;# Shows:&lt;/span&gt;
&lt;span class="c"&gt;# 1. discord (official repo)&lt;/span&gt;
&lt;span class="c"&gt;# 2. discord-bin (AUR)&lt;/span&gt;
&lt;span class="c"&gt;# 3. discord-canary (AUR)&lt;/span&gt;
&lt;span class="c"&gt;# 4. discord-ptb (AUR)&lt;/span&gt;
&lt;span class="c"&gt;# Choose: 1&lt;/span&gt;

yay &lt;span class="nt"&gt;-S&lt;/span&gt; discord
&lt;span class="c"&gt;# Immediately installs 'discord' from official repo, no questions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Part 4: Configuration Management - The .config Philosophy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why &lt;code&gt;/etc/&lt;/code&gt; Edits Get Overwritten
&lt;/h3&gt;

&lt;p&gt;When you install a program, it creates default configs in &lt;code&gt;/etc/&lt;/code&gt;. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/etc/
└── grafana/
    └── grafana.ini
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you edit &lt;code&gt;/etc/grafana/grafana.ini&lt;/code&gt; and later update Grafana, &lt;strong&gt;the package manager overwrites this file&lt;/strong&gt; with the new default.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Correct Workflow
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Copy to user config&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; /etc/grafana ~/.config/

&lt;span class="c"&gt;# 2. Edit YOUR copy&lt;/span&gt;
nano ~/.config/grafana/grafana.ini

&lt;span class="c"&gt;# 3. Done - this won't be touched by updates&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this is genius:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your changes persist across updates&lt;/li&gt;
&lt;li&gt;You can version-control &lt;code&gt;~/.config/&lt;/code&gt; (Git)&lt;/li&gt;
&lt;li&gt;Reinstalling the OS? Just copy &lt;code&gt;~/.config/&lt;/code&gt; and &lt;code&gt;~/&lt;/code&gt; - all your settings are back&lt;/li&gt;
&lt;li&gt;Multiple users on one machine? Each has their own configs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Priority system:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;~/.config/program/&lt;/code&gt; (user config) - &lt;strong&gt;HIGHEST&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/etc/program/&lt;/code&gt; (system config)&lt;/li&gt;
&lt;li&gt;Built-in defaults in the program itself&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Portability Dream
&lt;/h3&gt;

&lt;p&gt;Your entire personalized Linux setup in one folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;~/.config/        &lt;span class="c"&gt;# 500 KB - hours of customization&lt;/span&gt;
~/.local/share/   &lt;span class="c"&gt;# Personal data&lt;/span&gt;
~/Documents/      &lt;span class="c"&gt;# Your files&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reinstalling? Switching distros? New machine?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Old system&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-czf&lt;/span&gt; my-linux-life.tar.gz ~/.config ~/.local

&lt;span class="c"&gt;# New system (after creating same username)&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-xzf&lt;/span&gt; my-linux-life.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; ~/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Everything returns:&lt;/strong&gt; keybindings, themes, application settings, menu customizations. This is why Linux users rarely "need" to reinstall.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 5: Desktop Files and Icons - The Separation Mystery
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why Are They Separate?
&lt;/h3&gt;

&lt;p&gt;You asked why &lt;code&gt;.desktop&lt;/code&gt; files and icons aren't bundled like Windows &lt;code&gt;.exe&lt;/code&gt; + embedded icon. Two reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Historical:&lt;/strong&gt; Two competing standards (freedesktop.org vs older X11 conventions)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Practical:&lt;/strong&gt; Icon themes. Change your system theme, ALL icons update without touching each program&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The structure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/usr/share/applications/     # Menu entries
/usr/share/icons/            # Icon theme system
/usr/share/pixmaps/          # Legacy single icons
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your user overrides:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.local/share/applications/ # Custom menu entries
~/.local/share/icons/        # Personal icons
~/.icons/                    # Additional personal icons
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating Custom Launchers
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; You downloaded a portable AppImage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Move it somewhere permanent&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/Applications
&lt;span class="nb"&gt;mv&lt;/span&gt; ~/Downloads/MyApp.AppImage ~/Applications/
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x ~/Applications/MyApp.AppImage

&lt;span class="c"&gt;# 2. Create .desktop file&lt;/span&gt;
nano ~/.local/share/applications/myapp.desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Contents:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="nn"&gt;[Desktop Entry]&lt;/span&gt;
&lt;span class="py"&gt;Type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Application&lt;/span&gt;
&lt;span class="py"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;My Application&lt;/span&gt;
&lt;span class="py"&gt;Exec&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/home/yourname/Applications/MyApp.AppImage&lt;/span&gt;
&lt;span class="py"&gt;Icon&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;/home/yourname/Applications/myapp-icon.png&lt;/span&gt;
&lt;span class="py"&gt;Categories&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;Utility;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Wait 5 seconds.&lt;/strong&gt; Open your application menu - it's there. No installers, no registry, just a text file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 6: Gaming Deep Dive - Steam, Proton, Wine
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How Steam Actually Launches Games
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Native Linux game:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Steam → Steam Runtime → Game binary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows game:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Steam → Steam Runtime → Proton (Wine) → Game binary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Steam Runtime&lt;/strong&gt; is a containerized environment with specific library versions. This ensures games work regardless of your distro's library versions - it's like a mini-OS for games.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wine Is NOT Emulation
&lt;/h3&gt;

&lt;p&gt;Common misconception: "Wine emulates Windows."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reality:&lt;/strong&gt; Wine implements Windows API calls natively on Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analogy:&lt;/strong&gt; Imagine a program asking "give me file X from C:\Windows\System32\". Wine catches this request and responds: "Here's the equivalent Linux library." The program never knows it's not on Windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No CPU emulation&lt;/strong&gt; = Native performance (often better than Windows due to lower OS overhead)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why some games work better on Linux:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Example: GTA IV - 25-30 FPS on Windows, stable 60 FPS on Linux/Proton&lt;/li&gt;
&lt;li&gt;Reason: Better GPU detection, less background bloat, more efficient memory management&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Checking Compatibility
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;For games:&lt;/strong&gt; protondb.com&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Platinum:&lt;/strong&gt; Works flawlessly, zero issues&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gold:&lt;/strong&gt; Works with minor tweaks (usually just launch options)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Silver:&lt;/strong&gt; Runs but has bugs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bronze:&lt;/strong&gt; Barely playable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Garbage:&lt;/strong&gt; Doesn't work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For Windows programs:&lt;/strong&gt; appdb.winehq.org (older, less active)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Ask an AI with web search: "What's the best Photoshop version for Wine on Linux?" - users have collectively tested this stuff extensively.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Steam Filter "Issue"
&lt;/h3&gt;

&lt;p&gt;You noticed the penguin icon filter doesn't change game counts anymore. &lt;strong&gt;This is intentional.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Old behavior:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Penguin icon = show only native Linux games&lt;/li&gt;
&lt;li&gt;Game count changes based on filter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New behavior (since Steam Deck):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Enable Steam Play for all titles" is default ON&lt;/li&gt;
&lt;li&gt;Steam assumes EVERYTHING can run via Proton&lt;/li&gt;
&lt;li&gt;Penguin filter now meaningless (shows all games)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Valve's logic:&lt;/strong&gt; Proton compatibility is so good (~95%+ of games work) that distinguishing native vs. Windows games is pointless for users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For enthusiasts:&lt;/strong&gt; This is "dumbing down" - removes information. For normies: This is "just works" - they don't need to care.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 7: The Templates Feature - Right-Click Menu Control
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Windows Hell vs Linux Zen
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Adobe Reader → 5 new right-click menu entries&lt;/li&gt;
&lt;li&gt;Install WinRAR → 8 new entries&lt;/li&gt;
&lt;li&gt;Install 20 programs → Context menu takes 3 seconds to load&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No official way to clean this&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Programs don't automatically add menu entries&lt;/li&gt;
&lt;li&gt;You control what appears via the Templates folder&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Everything in &lt;code&gt;~/Templates/&lt;/code&gt; appears in "Create New..."&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/Templates/

&lt;span class="c"&gt;# Create a blank text file&lt;/span&gt;
&lt;span class="nb"&gt;touch&lt;/span&gt; &lt;span class="s2"&gt;"New Text Document.txt"&lt;/span&gt;

&lt;span class="c"&gt;# Create a blank PNG&lt;/span&gt;
pinta  &lt;span class="c"&gt;# (open Pinta, create 800x600 white canvas, save as "New Image.png")&lt;/span&gt;

&lt;span class="c"&gt;# Create a spreadsheet template&lt;/span&gt;
libreoffice &lt;span class="nt"&gt;--calc&lt;/span&gt;  &lt;span class="c"&gt;# (create, save as "Budget Template.ods")&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Now right-click anywhere:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"New Text Document.txt" appears&lt;/li&gt;
&lt;li&gt;"New Image.png" appears&lt;/li&gt;
&lt;li&gt;"Budget Template.ods" appears&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced:&lt;/strong&gt; Make templates actually useful. Put a pre-formatted resume, a blank D&amp;amp;D character sheet, your company's letterhead - whatever you create often.&lt;/p&gt;

&lt;h3&gt;
  
  
  Desktop Environment Differences
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;KDE (your system):&lt;/strong&gt; May have some defaults pre-created&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GNOME:&lt;/strong&gt; Completely empty by default - Dark Souls mode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;XFCE/MATE:&lt;/strong&gt; Usually has a basic text file&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Part 8: Hardware and Drivers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The &lt;code&gt;/lib/modules/&lt;/code&gt; Path
&lt;/h3&gt;

&lt;p&gt;Drivers live in &lt;code&gt;/lib/modules/$(uname -r)/&lt;/code&gt; where &lt;code&gt;$(uname -r)&lt;/code&gt; is your kernel version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You almost never touch this manually.&lt;/strong&gt; Drivers install/update via:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; linux-headers   &lt;span class="c"&gt;# Build environment for drivers&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; nvidia-dkms      &lt;span class="c"&gt;# NVIDIA drivers (example)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Wacom Tablets
&lt;/h3&gt;

&lt;p&gt;You mentioned having a Wacom - &lt;strong&gt;it likely works out of the box&lt;/strong&gt;. Linux has excellent Wacom support built into the kernel. No drivers needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xsetwacom &lt;span class="nt"&gt;--list&lt;/span&gt; devices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it appears, it works. Pressure sensitivity included.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;KDE: System Settings → Input Devices → Graphic Tablet&lt;/li&gt;
&lt;li&gt;GNOME: Settings → Wacom Tablet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Krita&lt;/strong&gt; (the painting app I mentioned) has native Wacom support and is genuinely used by professional digital artists.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 9: The Mindset - Discipline and Standards
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why Linux Developers Are More Disciplined
&lt;/h3&gt;

&lt;p&gt;You noted: "It's strange that Linux, being decentralized, has better standardization than Microsoft with its central control."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The reason:&lt;/strong&gt; Open source = public accountability.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft:&lt;/strong&gt; Internal teams don't see each other's mess. Politics protects bad code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linux:&lt;/strong&gt; Everything is public. Bad design gets called out. Meritocracy (mostly) wins.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; The Filesystem Hierarchy Standard (FHS) is a document anyone can read. Everyone follows it because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It makes sense&lt;/li&gt;
&lt;li&gt;Breaking it makes your software incompatible&lt;/li&gt;
&lt;li&gt;The community will roast you&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Learning Curve Investment
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Timeframe for comfort:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Smart user, focused learning:&lt;/strong&gt; 2 months&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Casual use, learning as needed:&lt;/strong&gt; 4-6 months&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Just following guides blindly:&lt;/strong&gt; May never truly understand&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What changes when you "get it":&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You stop thinking "I wish this was more like Windows"&lt;/li&gt;
&lt;li&gt;You start thinking "Why isn't Windows more like this?"&lt;/li&gt;
&lt;li&gt;You see the elegance in standardization&lt;/li&gt;
&lt;li&gt;You trust the system instead of fighting it&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When Manual Compilation Is Actually Hard
&lt;/h3&gt;

&lt;p&gt;I've spent &lt;strong&gt;3-6 hours&lt;/strong&gt; on a single package compilation, sometimes &lt;strong&gt;days&lt;/strong&gt; when dependencies were tangled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Early attempts:&lt;/strong&gt; ~20% success rate&lt;br&gt;
&lt;strong&gt;After learning:&lt;/strong&gt; ~90% success rate&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But why bother?&lt;/strong&gt; AUR already has 60,000+ packages. Someone else has already done this work. Use their PKGBUILD.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only compile manually when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cutting-edge development version not in AUR yet&lt;/li&gt;
&lt;li&gt;Specific patch you need&lt;/li&gt;
&lt;li&gt;Learning/curiosity&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Part 10: Practical Troubleshooting Patterns
&lt;/h2&gt;
&lt;h3&gt;
  
  
  "I Need Program X, But There's No Arch Package"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Search official repos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pacman &lt;span class="nt"&gt;-Ss&lt;/span&gt; program_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Search AUR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yay program_name  &lt;span class="c"&gt;# Will show all AUR results&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Google "program_name arch linux"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You'll find either:

&lt;ul&gt;
&lt;li&gt;AUR package you missed&lt;/li&gt;
&lt;li&gt;Wiki page explaining alternative&lt;/li&gt;
&lt;li&gt;Someone's installation guide&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4 (rare):&lt;/strong&gt; Check official website&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download &lt;code&gt;.deb&lt;/code&gt; → Extract manually (last resort, unclean)&lt;/li&gt;
&lt;li&gt;Download source → Create your own PKGBUILD (advanced)&lt;/li&gt;
&lt;li&gt;Use Flatpak/Snap (containerized, bigger downloads)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When Things Break
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Config got messed up?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Don't reinstall the program - just reset its config&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; ~/.config/program_name
&lt;span class="c"&gt;# Restart program - fresh defaults&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Want to cleanly remove a program?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-R&lt;/span&gt; package_name        &lt;span class="c"&gt;# Remove program&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-Rs&lt;/span&gt; package_name       &lt;span class="c"&gt;# Remove + unused dependencies&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; ~/.config/package_name      &lt;span class="c"&gt;# Remove user configs&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; ~/.local/share/package_name &lt;span class="c"&gt;# Remove user data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;System update broke something?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Downgrade to previous version&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-U&lt;/span&gt; /var/cache/pacman/pkg/package-old-version.pkg.tar.zst
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;This guide covered what the Quick Intro skipped - the philosophy, the technical depth, and the "why" behind Linux's design decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaways:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Linux's design isn't arbitrary - it's intentional and well-reasoned&lt;/li&gt;
&lt;li&gt;Standards exist for your benefit, not to constrain you&lt;/li&gt;
&lt;li&gt;The learning curve is real, but the payoff is a system you actually understand&lt;/li&gt;
&lt;li&gt;"User-friendly" often means "hides complexity" - Linux respects your intelligence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Part 3 could cover: Wine deep-dive, running Windows software, Photoshop/Office alternatives in detail&lt;/li&gt;
&lt;li&gt;Part 4 could be: Customization - themes, window managers, making Linux truly yours&lt;/li&gt;
&lt;li&gt;Part 5: Server use, self-hosting, why Linux dominates infrastructure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You've now gone from "What's a &lt;code&gt;/usr/bin/&lt;/code&gt;?" to understanding the entire system architecture. That's not a small achievement. Most Windows users don't understand their own OS at this level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final wisdom:&lt;/strong&gt; The frustrations you feel now (remembering paths, using the terminal) are temporary. The understanding you're building is permanent. In a few months, you won't remember Windows fondly - you'll remember it as the training wheels you've outgrown.&lt;/p&gt;

&lt;p&gt;Welcome to the deep end. The water's fine once you stop fighting the current.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>learning</category>
      <category>linux</category>
    </item>
    <item>
      <title>Linux Usage Intro: System Folders Explanation, Proton, Apps Install&amp;Remove</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Tue, 16 Dec 2025 16:33:20 +0000</pubDate>
      <link>https://forem.com/hopsayer/linux-quick-intro-system-folders-explanation-proton-apps-installremove-37i4</link>
      <guid>https://forem.com/hopsayer/linux-quick-intro-system-folders-explanation-proton-apps-installremove-37i4</guid>
      <description>&lt;h1&gt;
  
  
  Linux Usage Quick Intro: From Confusion to Clarity
&lt;/h1&gt;

&lt;p&gt;If you're new to Linux, especially coming from Windows, the operating system can feel like a completely different world. The lack of C:\ and D:\ drives, the terminal-centric approach, and the different file system hierarchy can be overwhelming at first. This guide aims to demystify Linux usage, focusing on Arch Linux (though most concepts apply universally), and help you understand the &lt;em&gt;why&lt;/em&gt; behind the system's design.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Core Philosophy: Order Over Chaos
&lt;/h2&gt;

&lt;p&gt;Unlike Windows, Linux follows a &lt;strong&gt;unified, hierarchical file system&lt;/strong&gt; that starts from a single root: &lt;code&gt;/&lt;/code&gt;. There's no concept of separate drives in the path structure. When you install programs, they go into &lt;strong&gt;standardized, predictable locations&lt;/strong&gt; by default. Why?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Interoperability:&lt;/strong&gt; Program A can reliably find files from Program B.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictability:&lt;/strong&gt; You (and the system) always know where to look for things.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No manual path selection:&lt;/strong&gt; You don't need to choose "install locations" for each application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rare exception? Massive games or datasets that don't fit on your primary drive. For these, you use &lt;strong&gt;symbolic links&lt;/strong&gt; (advanced "shortcuts") to redirect from standard paths to other locations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Navigating the File System: Key Directories
&lt;/h2&gt;

&lt;p&gt;Open your file manager, type &lt;code&gt;/&lt;/code&gt; in the address bar, and press Enter. Welcome to the root. Here's what matters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/home/&lt;/code&gt;&lt;/strong&gt; – Equivalent to &lt;code&gt;C:\Users\&lt;/code&gt;. Your personal folder is &lt;code&gt;/home/your_username/&lt;/code&gt;. This is typically where your file manager opens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/etc/&lt;/code&gt;&lt;/strong&gt; – &lt;strong&gt;The configuration hub.&lt;/strong&gt; Contains config files for most system-wide applications. &lt;strong&gt;Crucial:&lt;/strong&gt; If you edit configs here, they might get overwritten on updates. The proper way is to copy them to your user config directory (more on that later).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/tmp/&lt;/code&gt;&lt;/strong&gt; – Temporary files. Browser caches, app temp data, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/usr/&lt;/code&gt;&lt;/strong&gt; – User programs and data (despite the name).

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/usr/bin/&lt;/code&gt; – Main executable binaries for installed programs.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/usr/share/&lt;/code&gt; – Shared data: icons, &lt;code&gt;.desktop&lt;/code&gt; files (menu entries).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;/opt/&lt;/code&gt;&lt;/strong&gt; – Optional/third-party large applications (Steam, some proprietary software).&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;/var/&lt;/code&gt;&lt;/strong&gt; – Variable data like logs (&lt;code&gt;/var/log/&lt;/code&gt;).&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;/bin/&lt;/code&gt;, &lt;code&gt;/sbin/&lt;/code&gt;, &lt;code&gt;/lib/&lt;/code&gt;&lt;/strong&gt; – Essential system binaries and libraries. Rarely need manual interaction.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Your Home Directory: The Hidden Power
&lt;/h2&gt;

&lt;p&gt;Inside &lt;code&gt;/home/your_username/&lt;/code&gt;, you'll find visible folders (Downloads, Documents) and &lt;strong&gt;hidden ones&lt;/strong&gt; starting with a dot (e.g., &lt;code&gt;.config&lt;/code&gt;). Enable "Show Hidden Files" in your file manager (Dolphin: &lt;code&gt;Ctrl+H&lt;/code&gt; or View menu).&lt;/p&gt;

&lt;p&gt;Key hidden directories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.config&lt;/code&gt;&lt;/strong&gt; – &lt;strong&gt;Your personal configuration center.&lt;/strong&gt; Copy and edit config files from &lt;code&gt;/etc/&lt;/code&gt; here. They won't be overwritten by updates, and they're portable between installations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.cache&lt;/code&gt;&lt;/strong&gt; – Local cache (browsers, apps). User-specific version of &lt;code&gt;/tmp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;.local/share/&lt;/code&gt;&lt;/strong&gt; – Your personal &lt;code&gt;AppData\Roaming&lt;/code&gt;. 

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.local/share/applications/&lt;/code&gt; – Place custom &lt;code&gt;.desktop&lt;/code&gt; files here to add programs to your application menu.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;Templates&lt;/code&gt;&lt;/strong&gt; – &lt;strong&gt;A brilliant feature.&lt;/strong&gt; Whatever files you put here (e.g., &lt;code&gt;New Image.png&lt;/code&gt;, &lt;code&gt;Resume.docx&lt;/code&gt;) will appear in your file manager's right-click "Create New" menu. No more cluttered context menus!&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installing Software: Repositories Are Your Friend
&lt;/h2&gt;

&lt;p&gt;Forget downloading &lt;code&gt;.exe&lt;/code&gt; files from websites. Linux uses &lt;strong&gt;package managers&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Official Repositories (&lt;code&gt;pacman&lt;/code&gt; in Arch)
&lt;/h3&gt;

&lt;p&gt;Thousands of vetted, maintained packages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Search for a package&lt;/span&gt;
pacman &lt;span class="nt"&gt;-Ss&lt;/span&gt; package_name

&lt;span class="c"&gt;# Install&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; package_name

&lt;span class="c"&gt;# Remove&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-R&lt;/span&gt; package_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AUR (Arch User Repository) via &lt;code&gt;yay&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;A community-driven repository with virtually every program imaginable. If it's not in the official repos, check AUR.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install yay (if not present)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; yay

&lt;span class="c"&gt;# Install from AUR&lt;/span&gt;
yay &lt;span class="nt"&gt;-S&lt;/span&gt; package-name-from-aur
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; &lt;code&gt;yay&lt;/code&gt; will show multiple options. Usually pick the first one, especially if it has a &lt;code&gt;-bin&lt;/code&gt; suffix (pre-compiled, faster installation).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How AUR works:&lt;/strong&gt; Community members create &lt;code&gt;PKGBUILD&lt;/code&gt; scripts that automatically:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the program from its official source (even &lt;code&gt;.deb&lt;/code&gt; files for Ubuntu)&lt;/li&gt;
&lt;li&gt;Compile or extract it&lt;/li&gt;
&lt;li&gt;Place files in correct Linux paths&lt;/li&gt;
&lt;li&gt;Create a native Arch package&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Gaming on Linux: Steam &amp;amp; Proton
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Steam typically installs to &lt;code&gt;~/.local/share/Steam/&lt;/code&gt; or &lt;code&gt;/opt/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proton&lt;/strong&gt; is a compatibility layer (Wine) optimized for games. &lt;strong&gt;It's not emulation&lt;/strong&gt; – it translates Windows API calls to Linux on the fly.&lt;/li&gt;
&lt;li&gt;To enable Proton: Right-click a Windows game → Properties → Compatibility → Enable Steam Play → Choose Proton version.&lt;/li&gt;
&lt;li&gt;Check game compatibility at &lt;strong&gt;protondb.com&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Steam's new behavior:&lt;/strong&gt; With "Enable Steam Play for all titles" checked, your library shows ALL games regardless of OS. The Linux filter (penguin icon) won't change counts – Steam assumes everything can run via Proton.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Essential Software Replacements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Graphics:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sudo pacman -S krita&lt;/code&gt; – Digital painting (great with tablets)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo pacman -S gimp&lt;/code&gt; – Photo editing (with Photoshop-like extensions)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo pacman -S inkscape&lt;/code&gt; – Vector graphics&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sudo pacman -S pinta&lt;/code&gt; – Simple image editing&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Office Suites:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sudo pacman -S libreoffice-fresh&lt;/code&gt; – Full-featured free suite&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yay -S onlyoffice-bin&lt;/code&gt; – Best MS Office format compatibility&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Mindset Shift
&lt;/h2&gt;

&lt;p&gt;Yes, there's a learning curve. You need to remember paths and get comfortable with the terminal. But this is an &lt;strong&gt;investment&lt;/strong&gt; that pays off:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Predictable system behavior&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy configuration backup&lt;/strong&gt; (just copy &lt;code&gt;.config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean software management&lt;/strong&gt; (no registry, no scattered files)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No context menu bloat&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Don't try to force Windows patterns onto Linux. Embrace the standardized paths, trust the package manager, and within a couple of months, you'll not only understand the system – you'll appreciate its elegance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final tip:&lt;/strong&gt; When you need software, first search your package manager (&lt;code&gt;pacman -Ss&lt;/code&gt; or &lt;code&gt;yay&lt;/code&gt;). If it's not there, search "program_name arch linux" – you'll usually find it in the AUR. This approach keeps your system clean and manageable.&lt;/p&gt;

&lt;p&gt;Welcome to Linux – where things make sense once you understand the logic!&lt;/p&gt;

</description>
      <category>archlinux</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>linux</category>
    </item>
    <item>
      <title>GTA Vice City Nextgen Edition on Linux/Steam Deck - Guide</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Sat, 08 Nov 2025 00:00:31 +0000</pubDate>
      <link>https://forem.com/hopsayer/gta-vice-city-nextgen-edition-on-linux-starting-guide-4mo9</link>
      <guid>https://forem.com/hopsayer/gta-vice-city-nextgen-edition-on-linux-starting-guide-4mo9</guid>
      <description>&lt;h1&gt;
  
  
  Starting GTA Vice City Next Edition on Linux - Complete Guide
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Quick Reference for Experienced Users
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install game with GE-Proton10-15&lt;/li&gt;
&lt;li&gt;Add to Lutris with Wine runner&lt;/li&gt;
&lt;li&gt;First launch: wine-ge-8-26 + d3d9 override (will error but properly creates prefix)&lt;/li&gt;
&lt;li&gt;Second launch: wine-10.16-staging + d3d9 override (will work)&lt;/li&gt;
&lt;li&gt;Install "Better Handling" and "Sprint Inside Interiors" mods&lt;/li&gt;
&lt;li&gt;Set all graphics to Low&lt;/li&gt;
&lt;li&gt;Backup saves from: &lt;code&gt;~/gtavcne/0_pfx/drive_c/users/steamuser/Documents/Rockstar Games/GTA VC/savegames&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  When to Use This Guide
&lt;/h2&gt;

&lt;p&gt;This guide will help if you're experiencing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Black screen or instant crash (but splash/menu/loading screens work)&lt;/li&gt;
&lt;li&gt;Black screen crash after 5-10 seconds with no splash screen&lt;/li&gt;
&lt;li&gt;Instant crash on loading screen&lt;/li&gt;
&lt;li&gt;Instant crash during/after intro cut scenes&lt;/li&gt;
&lt;li&gt;Splash screen appears but menu crashes instantly&lt;/li&gt;
&lt;li&gt;Missing "ENB series" splash screen on startup&lt;/li&gt;
&lt;li&gt;Any combination of the above issues&lt;/li&gt;
&lt;li&gt;Official instructions are unclear or don't work&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Requirements for Successful Launch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Successful Launch Conditions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Official game distribution from developers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NO PATCH needed&lt;/strong&gt; - V1.2.7 patch can actually cause performance issues&lt;/li&gt;
&lt;li&gt;Compatibility layer: Wine and Proton (via Lutris - strongly recommended)&lt;/li&gt;
&lt;li&gt;d3d9 override: Must use game's own d3d9.dll via &lt;code&gt;WINEDLLOVERRIDES="d3d9=n"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;dsound override NOT needed - Contrary to official instructions, &lt;code&gt;WINEDLLOVERRIDES="dsound=n,b"&lt;/code&gt; disables sound completely in my testing&lt;/li&gt;
&lt;li&gt;First start with wine-ge-8, second with wine-10.16-staging&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Lutris is Strongly Recommended
&lt;/h3&gt;

&lt;p&gt;Even if Lutris seems unfamiliar to you, use it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's light, easy, GUI, quick, automated, has both Wine and Proton, lets quickly switch between them/their versions&lt;/li&gt;
&lt;li&gt;It often has better compatibility and success rates than vanilla Steam Proton&lt;/li&gt;
&lt;li&gt;Built-in MangoHud integration (FPS counter, performance monitoring)&lt;/li&gt;
&lt;li&gt;Effortless, explicit and efficient choice of used graphics card in GUI game settings&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  CRITICAL: Wine Version Requirements
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;WARNING&lt;/strong&gt;: The game requires a specific two-step Wine configuration:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;First launch must use wine-ge-8-26&lt;/strong&gt; (or similar wine-8.x version)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This creates the Wine prefix correctly, while the game gives the error "GTA IV FATAL ERROR: Invalid resource detected - Please re-install the game", it's OK for this time&lt;/li&gt;
&lt;li&gt;If you skip this step, Wine 10 will delete the prefix folder&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;After successful prefix creation, switch to wine-10.16-staging&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is needed for the game to actually run&lt;/li&gt;
&lt;li&gt;Launched under Wine 8 again, the game will give the above error endlessly&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why this happens&lt;/strong&gt;: Unknown RAGE engine quirk. But it works reliably and repeatably.&lt;/p&gt;

&lt;h3&gt;
  
  
  Proton Does NOT Work for This Game
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;proton ge 10 gives crash on start with rockstar logo&lt;/li&gt;
&lt;li&gt;proton ge 9 gives crash on start without rockstar logo&lt;/li&gt;
&lt;li&gt;proton 9.0 beta gives crash on start with rockstar logo shown in wrong aspect ratio&lt;/li&gt;
&lt;li&gt;proton experimental hangs on "launching" state&lt;/li&gt;
&lt;li&gt;proton 10.0 gives crash on start with rockstar logo shown in wrong aspect ratio&lt;/li&gt;
&lt;li&gt;proton hotfix gives crash on start with rockstar logo shown in wrong aspect ratio&lt;/li&gt;
&lt;li&gt;GE-proton(latest) gives crash on start with rockstar logo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;USE WINE, NOT PROTON&lt;/strong&gt;. This behavior is consistent whether launching from Lutris or Steam.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 1: Setting Up Lutris and Wine
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install Lutris
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;pacman &lt;span class="nt"&gt;-S&lt;/span&gt; lutris
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Initial Lutris Setup
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Launch Lutris&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It will auto-install dependencies (you'll see progress bar bottom-left)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This includes Lutris-patched Wine versions (separate from system Wine)&lt;/li&gt;
&lt;li&gt;Installs to &lt;code&gt;~/.local/share/lutris/runners&lt;/code&gt; by default&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make sure you have both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wine-ge-8-26-x86_64 (or similar wine-8.x)&lt;/li&gt;
&lt;li&gt;wine-10.16-staging-amd64-wow64-X86_64 (or similar wine-10.x)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If these aren't installed automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Lutris → Preferences → Runners → Wine&lt;/li&gt;
&lt;li&gt;Click the download icon next to the versions you need&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Part 2: Installing the Game
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Prepare Installation Directory
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create main game folder (choose location with enough space)&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/gtavcne

&lt;span class="c"&gt;# Create Wine prefix subfolder&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/gtavcne/0_pfx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Add Installer to Lutris
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click "+" button in Lutris → "Add locally installed game"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure installer entry:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt;: vcne-installer (or whatever you prefer)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runner&lt;/strong&gt;: Wine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wine version&lt;/strong&gt;: GE-Proton10-15 or similar (not clean Wine)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;WARNING&lt;/strong&gt;: clean Wine will give empty/black installer window. Use GE-Proton for installation only, then switch to Wine for gameplay&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Switch to "Game Options" tab:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Executable&lt;/strong&gt;: Path to vcNE_setup.exe&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wine prefix&lt;/strong&gt;: ~/gtavcne/0_pfx&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click "Save"&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 3: Run Installation
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Launch the installer from Lutris&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose installation target in Windows notation: ~/gtavcne (or your chosen location)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait for unpacking to complete&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If installer can't see your disk, install elsewhere then move the folder&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;DO NOT install the patch (v1.2.7)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It pulls FusionFix as a dependency which damages performance&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DO NOT launch the game from installer&lt;/strong&gt; - click "Complete" instead&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Backup the clean installation:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; ~/gtavcne ~/gtavcne-backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is extremely useful for troubleshooting. Delete later when stable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 3: Configuring and Launching the Game
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Critical Configuration
&lt;/h3&gt;

&lt;p&gt;Key requirements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use Wine (not Proton)&lt;/li&gt;
&lt;li&gt;Override d3d9.dll and check if DXVK enabled (should be by default)&lt;/li&gt;
&lt;li&gt;Start with wine-ge-8-26 to create prefix&lt;/li&gt;
&lt;li&gt;Switch to wine-10.16 for actual gameplay&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 1: Add Game to Lutris
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click "+" → "Add locally installed game"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configure game entry:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Game Info Tab&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: GTA Vice City Next Edition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Game Options Tab&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runner: Wine&lt;/li&gt;
&lt;li&gt;Executable: ~/gtavcne/LaunchGTAIV.exe&lt;/li&gt;
&lt;li&gt;Wine prefix: ~/gtavcne/0_pfx&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Runner Options Tab&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wine version: Select wine-ge-8-26-x86_64 (for first launch)&lt;/li&gt;
&lt;li&gt;Enable DXVK: Must be checked, should be ON by default&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;System Options Tab&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;DLL overrides:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click "Add"&lt;/li&gt;
&lt;li&gt;Key: &lt;code&gt;d3d9&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Value: &lt;code&gt;n&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This forces Wine to use the d3d9.dll inside the game folder&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Show MangoHud overlay: Check this for FPS counter (optional)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If unavailable, install MangoHud: &lt;code&gt;sudo pacman -S mangohud&lt;/code&gt; and restart Lutris&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For laptops with NVIDIA GPU&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to System Options tab&lt;/li&gt;
&lt;li&gt;Find "Discrete GPU" → Select your NVIDIA card&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Click "Save"&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: First Launch (Wine Prefix Creation)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Launch the game from Lutris with wine-ge-8-26&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You'll see: "GTA IV FATAL ERROR: Invalid resource detected - Please re-install the game"&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;THIS IS EXPECTED!&lt;/strong&gt; The prefix was created successfully&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Close the error&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 3: Switch to Wine 10
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Right-click the game in Lutris → Configure&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Runner Options tab&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change Wine version to: wine-10.16-staging-amd64-wow64-X86_64&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 4: Successful Launch
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Run the game from Lutris again&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Success indicators:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You should see "ENB series" splash screen&lt;/li&gt;
&lt;li&gt;Rockstar logo appears&lt;/li&gt;
&lt;li&gt;Initial cutscenes render properly (not black)&lt;/li&gt;
&lt;li&gt;Game graphics display correctly&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Game may crash after helicopter cutscene - just restart if this happens&lt;/li&gt;
&lt;li&gt;Skipping cutscenes too quickly can cause crashes - let them play a bit&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Essential Mods for Playability
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Better Handling for GTA VC NE (CRITICAL)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;WITHOUT THIS MOD, CARS ARE NEARLY UNCONTROLLABLE.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install from the mod's folder or website to make vehicles drivable. This mod replaces just one file.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Sprint Inside Interiors (HIGHLY RECOMMENDED)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;WITHOUT THIS MOD, YOU CANNOT USE TAPE-SAVING FEATURE INSIDE BUILDINGS.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This dramatically improves gameplay quality of life. This mod replaces just 5 files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;p&gt;Both mods should have installation instructions in their folders. Generally:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy mod files to game directory&lt;/li&gt;
&lt;li&gt;Merge with existing files if prompted&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Performance Optimization
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Enable FPS Counter (MangoHud)
&lt;/h3&gt;

&lt;p&gt;Already covered in Step 1 above - just tick "Show MangoHud overlay" in System Options.&lt;/p&gt;

&lt;p&gt;For advanced customization, create/edit &lt;code&gt;~/.config/MangoHud/MangoHud.conf&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ini"&gt;&lt;code&gt;&lt;span class="py"&gt;position&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;top-right&lt;/span&gt;
&lt;span class="py"&gt;font_size&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;10&lt;/span&gt;
&lt;span class="err"&gt;fps&lt;/span&gt;
&lt;span class="err"&gt;frametime&lt;/span&gt;
&lt;span class="err"&gt;cpu_temp&lt;/span&gt;
&lt;span class="err"&gt;gpu_temp&lt;/span&gt;
&lt;span class="err"&gt;cpu_power&lt;/span&gt;
&lt;span class="err"&gt;gpu_power&lt;/span&gt;
&lt;span class="err"&gt;gpu_load&lt;/span&gt;
&lt;span class="err"&gt;cpu_load&lt;/span&gt;
&lt;span class="err"&gt;ram&lt;/span&gt;
&lt;span class="err"&gt;vram&lt;/span&gt;
&lt;span class="py"&gt;background_alpha&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;0.0&lt;/span&gt;
&lt;span class="py"&gt;alpha&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;0.3&lt;/span&gt;
&lt;span class="py"&gt;frame_timing&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Low FPS / Stuttering Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Symptoms&lt;/strong&gt;: 25-35 FPS with severe stuttering (long frametimes), especially on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Laptops with NVIDIA GPUs below GTX 1000 series&lt;/li&gt;
&lt;li&gt;Older/mid-range hardware&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Solutions&lt;/strong&gt; (in order of priority):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Set everything to "Low" in graphics settings - CRITICAL&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This game's graphics settings are extremely demanding. Set ALL options to LOW for playable performance.&lt;/p&gt;

&lt;p&gt;In-game settings: Graphics → Set everything to Low/Off where possible&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lower Shadow Quality specifically&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Shadows are the biggest performance killer. Set to Low (provides huge improvement).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;DO NOT install the V1.2.7 patch&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The patch can actually worsen performance (FusionFix component). If already installed, restore from your backup.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Lower Resolution&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Try 1600x900 or 1280x720 if you're at 1920x1080.&lt;br&gt;
   In-game settings: Graphics → Resolution&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Lower resolutions cause the game to start in borderless window mode.&lt;br&gt;
   Fix: Minimize the game, then click on its window again to stretch fullscreen.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Do NOT use commandline.txt&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The commandline.txt file is useless for this instance. Don't modify it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected results after optimization&lt;/strong&gt;: 45-60+ FPS with smooth frametimes&lt;/p&gt;


&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Resolution/Window Issues
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: After lowering resolution, game starts in borderless window instead of fullscreen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Minimize the game (Alt+Tab or Super key)&lt;/li&gt;
&lt;li&gt;Click on the game window to focus it again&lt;/li&gt;
&lt;li&gt;It will stretch to fullscreen&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Save Game Backups
&lt;/h3&gt;

&lt;p&gt;Your saves are located at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/gtavcne/0_pfx/drive_c/users/steamuser/Documents/Rockstar Games/GTA VC/savegames
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cutscene Crashes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Don't skip cutscenes too quickly&lt;/li&gt;
&lt;li&gt;Let them play for at least a few seconds before skipping&lt;/li&gt;
&lt;li&gt;If crash occurs, just restart the game&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Notes
&lt;/h2&gt;

&lt;p&gt;Now your only challenge will be the incompatibility between GTA: Vice City and GTA IV mission playstyles/balance, not launching the game.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tested Environment
&lt;/h2&gt;

&lt;p&gt;This guide was tested on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OS&lt;/strong&gt;: EndeavourOS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Kernel&lt;/strong&gt;: 6.17.7-arch1-1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lutris&lt;/strong&gt;: lutris-0.5.19&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wine (Lutris)&lt;/strong&gt;: wine-ge-8-26-x86_64, wine-10.16-staging-amd64-wow64-X86_64&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proton-GE&lt;/strong&gt;: GE-Proton10-15, GE-Proton9-27&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DXVK&lt;/strong&gt;: lib32-vulkan-icd-loader 1.4.328.1-1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MangoHud&lt;/strong&gt;: v0.8.1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get your system info, run this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"OS: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /etc/os-release | &lt;span class="nb"&gt;grep &lt;/span&gt;PRETTY_NAME | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="s1"&gt;'"'&lt;/span&gt; &lt;span class="nt"&gt;-f2&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Kernel: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Lutris: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lutris &lt;span class="nt"&gt;--version&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'not installed'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Wine (Lutris): &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; ~/.local/share/lutris/runners/wine/ 2&amp;gt;/dev/null | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s1"&gt;'lutris|wine'&lt;/span&gt; | &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'not found'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Proton-GE: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; ~/.steam/root/compatibilitytools.d/ 2&amp;gt;/dev/null | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; proton | &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-2&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'not found'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"DXVK: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;pacman &lt;span class="nt"&gt;-Q&lt;/span&gt; dxvk-bin 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; pacman &lt;span class="nt"&gt;-Q&lt;/span&gt; lib32-vulkan-icd-loader 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'check via Lutris'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"MangoHud: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;mangohud &lt;span class="nt"&gt;--version&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'not installed'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>linux</category>
      <category>tooling</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>mpv vs VLC: Making mpv Comfortable to Use</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Thu, 17 Jul 2025 12:48:22 +0000</pubDate>
      <link>https://forem.com/hopsayer/mpv-vs-vlc-making-mpv-comfortable-to-use-26e4</link>
      <guid>https://forem.com/hopsayer/mpv-vs-vlc-making-mpv-comfortable-to-use-26e4</guid>
      <description>&lt;h4&gt;
  
  
  VLC or mpv? That's the question
&lt;/h4&gt;

&lt;p&gt;Both are excellent open-source, cross-platform media players and serve as core components for many other apps. Because they often come bundled as dependencies, especially in Linux, it’s not always obvious which one to pick. Plus, debates about which is better happen a lot.&lt;/p&gt;

&lt;h3&gt;
  
  
  VLC vs mpv: The Basics
&lt;/h3&gt;

&lt;p&gt;VLC is popular for a reason: it has a full GUI out of the box, supports tons of formats, and can stream YouTube videos, handle DVDs, and almost anything else without fuss.&lt;/p&gt;

&lt;p&gt;However, &lt;strong&gt;VLC can struggle with modern codecs like HEVC/H.265&lt;/strong&gt; — even with codecs installed, playback might lag, fail to decode, or overload your CPU. This problem is worse with Flatpak or Snap versions, where codec support can be limited.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mpv, on the other hand, handled all my HEVC videos flawlessly from the start&lt;/strong&gt;. It’s lightweight, highly customizable, and perfect for Linux users who like to tweak configs or use CLI tools. By default, mpv has no GUI distractions, but you can add frontends like Celluloid or smplayer if you want.&lt;/p&gt;

&lt;p&gt;So I chose using &lt;strong&gt;mpv&lt;/strong&gt;, but it &lt;strong&gt;needs some configuring to be comfortable&lt;/strong&gt; for daily use. &lt;/p&gt;

&lt;h3&gt;
  
  
  Making mpv Comfortable
&lt;/h3&gt;

&lt;p&gt;To make mpv a daily driver, I customized it via config files:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;~/.config/mpv/mpv.conf&lt;/code&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hwdec=auto              # Enable hardware decoding if available to reduce CPU load  
keep-open=yes           # Keep window open after playback finishes  
loop-file=inf           # Loop current file indefinitely  

cursor-autohide=3000    # Hide mouse cursor after 3 seconds idle  
osd-duration=3000       # Show on-screen messages for 3 seconds  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;~/.config/mpv/script-opts/osc.conf&lt;/code&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;visibility=auto         # Show control panel (OSC) on mouse movement, then auto-hide  
hidetimeout=2000        # Hide control panel after 2 seconds idle  
fadeduration=500        # Fade-out animation lasts 0.5 seconds  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can download these configs with the full file hierarchy preserved from &lt;a href="https://github.com/hopsayer/personal-linux-configs/tree/main/.config/mpv" rel="noopener noreferrer"&gt;my GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;If you want hassle-free playback with maximum control, mpv is the way to go. It has a steeper learning curve than VLC, but a few config tweaks can make it super comfortable and tailored to your workflow.&lt;/p&gt;

&lt;p&gt;If you deal with HEVC videos or want a lightweight player, mpv beats VLC hands down.&lt;/p&gt;

&lt;p&gt;Try my configs and adjust them to your taste—you might be surprised how slick mpv can be.&lt;/p&gt;

&lt;h3&gt;
  
  
  Was this article any useful?
&lt;/h3&gt;

&lt;p&gt;Don't be shy to write impressions and suggestions in the comment section! &lt;/p&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
      <category>tutorial</category>
      <category>performance</category>
    </item>
    <item>
      <title>Casting PC Screen to Android (Linux/Mac/Windows)</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Tue, 08 Jul 2025 03:30:34 +0000</pubDate>
      <link>https://forem.com/hopsayer/casting-pc-screen-to-android-linuxmacwindows-1njm</link>
      <guid>https://forem.com/hopsayer/casting-pc-screen-to-android-linuxmacwindows-1njm</guid>
      <description>&lt;p&gt;Ah. I faced a problem in my 25. &lt;/p&gt;

&lt;p&gt;I often watch YouTube via my PC, but unfortunately I need to eat sometimes in my kitchen. This is not a reason to turn the video off - it's rather the opposite. &lt;/p&gt;

&lt;p&gt;So there are 2 ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy the video's link on PC, send it to Android, wait until it fully loads, rewind the video to the moment I stopped at and continue viewing. I manage to finish my food doing this. &lt;/li&gt;
&lt;li&gt;Share the PC screen with Android and continue viewing seemlessly. Providing that you have bluetooth headphones. What I do. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The simplest way is &lt;code&gt;Deskreen&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;This is an easy-to-use, cross-platform, free and open-source app that lets you share your desktop over Wi-Fi using any browser, including on Android or iPad. &lt;/p&gt;

&lt;h1&gt;
  
  
  Here’s a guide to start up quickly:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Download and install Deskreen from &lt;a href="https://deskreen.com" rel="noopener noreferrer"&gt;the official web site&lt;/a&gt; on your PC (Windows, Mac, or Linux).&lt;/li&gt;
&lt;li&gt;Launch Deskreen on your PC. It will show a QR code and a local IP address.&lt;/li&gt;
&lt;li&gt;Scan the QR code with your phone’s camera or manually enter the IP address shown in Deskreen into your Android browser.&lt;/li&gt;
&lt;li&gt;Deskreen will ask you to allow sharing your entire screen or a specific application window — choose your preference and confirm.&lt;/li&gt;
&lt;li&gt;Your PC screen should now be mirrored on your Android device in real time. &lt;/li&gt;
&lt;li&gt;You can connect multiple devices by repeating the above steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tips:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;5GHz Wi-Fi can provide lower latency. &lt;/li&gt;
&lt;li&gt;Deskreen supports encrypted connections for safer casting.&lt;/li&gt;
&lt;li&gt;Adjust the resolution and bandwidth in Deskreen settings to optimize performance and battery usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Additional features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Mirroring the screen is not the only option. You can also use your another device as a physical second screen. Any of your apps can be mouse-dragged on it. A tablet can be transformed into a monitor. A Virtual Display Adapter is required. Without it, you can only stream an existing screen. &lt;/li&gt;
&lt;li&gt;You don’t have to share the whole screen; you can share specific apps — good for privacy and focus.&lt;/li&gt;
&lt;li&gt;Multiple connections simultaneously. &lt;/li&gt;
&lt;li&gt;Any resolution can be chosen. Auto adjustment can be set. &lt;/li&gt;
&lt;li&gt;2 media players are available for better experience and reliability. I prefer the second one, which is not the default.&lt;/li&gt;
&lt;li&gt;No any mobile installations. &lt;/li&gt;
&lt;li&gt;SmartTV is supported. &lt;/li&gt;
&lt;li&gt;Can be used for presentations or video speech recording. &lt;/li&gt;
&lt;li&gt;Teleprompter mode: you can flip the streamed image horizontally. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I think this could be the best way for screencasting:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;User-friendly. Quick to set up, despite the underlying complexity. Clear and simple tutorial on the main page, including video instruction. The product really invites you to try it.&lt;/li&gt;
&lt;li&gt;Cross-platform. All major desktop and mobile OS. &lt;/li&gt;
&lt;li&gt;Open-source, which allows anyone to take part, just like me. Even if the project is frozen. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I actually do not:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Connection can suddenly drop if you leave the Android browser tab for 1+ minutes. In that case the user has to create a new connection, which sometimes ruins the seamless living room to kitchen switching experience. I decided to participate by creating an issue on GitHub, if you're interested: &lt;a href="https://github.com/pavlobu/deskreen/issues/280" rel="noopener noreferrer"&gt;https://github.com/pavlobu/deskreen/issues/280&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Deskreen streaming experience is slightly worse on Android Firefox due to how the browser handles background tabs. Picture-in-picture mode is harder to get, and background tabs tend to sleep even while playing video.&lt;/li&gt;
&lt;li&gt;No support for trusted devices feature. Each connection from the same mobile device initiates a new session, slightly breaking the flow. &lt;/li&gt;
&lt;li&gt;ARM processors are not supported. Building from source doesn’t seem to help.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still this app is really good, I enjoy using it and appreciate the author's effort. &lt;/p&gt;

&lt;h4&gt;
  
  
  By the way:
&lt;/h4&gt;

&lt;p&gt;If you use Arch and prefer the &lt;code&gt;.AppImage&lt;/code&gt; version of Deskreen instead of &lt;a href="https://aur.archlinux.org/packages/deskreen" rel="noopener noreferrer"&gt;the AUR package&lt;/a&gt;, you might want to create a .desktop file to launch the app quickly from the application menu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Desktop Entry]
Name=Deskreen Screencaster
Exec=/path/to/Deskreen-2.0.4.AppImage
Icon=/path/to/deskreen.png
Terminal=false
Type=Application
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;/path/to/&lt;/code&gt; with the actual paths on your system.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;deskreen.png&lt;/code&gt; icon can be downloaded from the official site by right-clicking (&lt;code&gt;Save As...&lt;/code&gt;) or directly from here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1kt21iynld1m7glkumi4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1kt21iynld1m7glkumi4.png" alt=" " width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiplatform</category>
      <category>android</category>
      <category>linux</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Fix GNOME's Alt+Tab: Always Switch to the Last Used Window (Not All Windows of the App)</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Fri, 04 Jul 2025 23:17:22 +0000</pubDate>
      <link>https://forem.com/hopsayer/fix-gnomes-alttab-always-switch-to-the-last-used-window-not-all-windows-of-the-app-976</link>
      <guid>https://forem.com/hopsayer/fix-gnomes-alttab-always-switch-to-the-last-used-window-not-all-windows-of-the-app-976</guid>
      <description>&lt;p&gt;If you’re using GNOME (e.g. on Arch Linux) and notice that pressing Alt+Tab switches between applications—not individual windows—you’ve probably experienced this frustrating behavior:&lt;/p&gt;

&lt;p&gt;You press Alt+Tab, trying to return to the last window you were using, but instead, GNOME shows all open windows of the application (e.g. all browser windows). This clutters the interface and breaks your flow — even though GNOME’s whole mission seems to be the exact opposite. Let's fix this. &lt;/p&gt;

&lt;h1&gt;
  
  
  The Problem
&lt;/h1&gt;

&lt;p&gt;By default, GNOME groups windows by application. So if you have multiple windows of the same app, pressing Alt+Tab shows a grouped stack instead of just going to the last active window.&lt;/p&gt;

&lt;p&gt;You can install gnome extensions like Coverflow Alt-Tab, but they often overcomplicate things with animations or heavy UI changes.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Clean Solution
&lt;/h1&gt;

&lt;p&gt;You can fix this behavior with built-in GNOME settings—no extensions required.&lt;/p&gt;

&lt;p&gt;Here’s how:&lt;/p&gt;

&lt;p&gt;I. Open Settings → Keyboard → View and Customize Shortcuts&lt;/p&gt;

&lt;p&gt;II. Find these two entries:&lt;br&gt;
• Switch Applications — this is the default Alt+Tab behavior that &lt;strong&gt;groups&lt;/strong&gt; apps&lt;br&gt;
• Switch Windows — this switches between all windows, regardless of app&lt;/p&gt;

&lt;p&gt;III. Do the following:&lt;br&gt;
• Disable “Switch Applications” or unbind its shortcut with the &lt;code&gt;Backspace&lt;/code&gt; key.&lt;br&gt;
• Set “Switch Windows” to Alt+Tab&lt;/p&gt;

&lt;p&gt;Now, when you press Alt+Tab, it cycles through each window linearly, just like in older desktop environments (Xfce, Mate, etc.). No more app-grouped stacks. The last active window always comes up first. &lt;/p&gt;

&lt;h4&gt;
  
  
  A little side note:
&lt;/h4&gt;

&lt;p&gt;If only two windows are fully visible (covering everything else), pressing Alt+Tab won’t show the switcher popup—it’ll just toggle focus between those two windows.&lt;/p&gt;

&lt;h1&gt;
  
  
  Why This Works
&lt;/h1&gt;

&lt;p&gt;GNOME treats app switching and window switching as two separate concepts. The default is designed around grouping, which can be helpful in some workflows, but it often gets in the way when multitasking between many windows.&lt;/p&gt;

&lt;p&gt;Rebinding Alt+Tab to “Switch Windows” brings back the classic, no-nonsense window switcher—exactly what most power users expect.&lt;/p&gt;

&lt;h1&gt;
  
  
  Bonus Tip
&lt;/h1&gt;

&lt;p&gt;Still want to switch between windows within one app (e.g. different VS Code windows)? GNOME has a default shortcut for that:&lt;/p&gt;

&lt;p&gt;• Alt+` (tilda key) = switch between windows of the same application&lt;/p&gt;

&lt;h1&gt;
  
  
  TL;DR
&lt;/h1&gt;

&lt;p&gt;To stop GNOME from grouping windows when pressing Alt+Tab:&lt;/p&gt;

&lt;p&gt;• Go to Settings → Keyboard → Shortcuts&lt;br&gt;
• Disable “Switch Applications”&lt;br&gt;
• Set Alt+Tab to “Switch Windows”&lt;/p&gt;

&lt;p&gt;Done. Clean, minimal, and works exactly as expected.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Fixing ChatGPT "Lost First Key" Bug in Firefox</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Fri, 04 Jul 2025 15:07:08 +0000</pubDate>
      <link>https://forem.com/hopsayer/fixing-chatgpt-lost-first-key-bug-in-firefox-14g9</link>
      <guid>https://forem.com/hopsayer/fixing-chatgpt-lost-first-key-bug-in-firefox-14g9</guid>
      <description>&lt;h1&gt;
  
  
  &lt;strong&gt;Problem&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;When using ChatGPT in Firefox, the text input field doesn’t properly register the first typed character. The cursor appears focused, but the first keypress is ignored, making it frustrating to start typing. In Chromium browsers, this issue doesn’t occur — the first keystroke goes directly into the input field as expected.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Solution&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This happens because ChatGPT’s web app uses React and dynamic rendering, and Firefox handles DOM focus and event propagation slightly differently. React’s internal focus management can interfere, causing the first keystroke to be lost. A workaround is to programmatically focus the textarea when it appears and, if needed, simulate user interaction (like a click) to ensure the input field is truly active.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Instruction&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;You can create a userscript to fix this in Firefox using Tampermonkey or Violentmonkey. The script observes the page’s DOM for changes, and when the textarea appears, it forces focus on it. Additionally, it simulates a mouse click event in the center of the textarea to activate the input fully.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Here’s a userscript example:&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ==UserScript==
// @name         ChatGPT Firefox Input Focus Fix
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Fixes lost first keystroke in ChatGPT input on Firefox by focusing and clicking the textarea
// @match        https://chat.openai.com/*
// @match        https://chatgpt.com/*
// @grant        none
// ==/UserScript==

(function () {
  const simulateClick = (el) =&amp;gt; {
    const rect = el.getBoundingClientRect();
    const x = rect.left + rect.width / 2;
    const y = rect.top + rect.height / 2;
    ["mousedown", "mouseup", "click"].forEach(type =&amp;gt; {
      el.dispatchEvent(new MouseEvent(type, {
        bubbles: true,
        cancelable: true,
        view: window,
        clientX: x,
        clientY: y,
      }));
    });
  };

  const tryFocusByClick = () =&amp;gt; {
    const input = document.querySelector("textarea");
    if (input &amp;amp;&amp;amp; document.activeElement !== input) {
      simulateClick(input);
    }
  };

  const observer = new MutationObserver(() =&amp;gt; {
    tryFocusByClick();
  });

  observer.observe(document.body, {
    childList: true,
    subtree: true,
  });

  window.addEventListener("load", () =&amp;gt; {
    setTimeout(tryFocusByClick, 150);
  });

  document.addEventListener("visibilitychange", tryFocusByClick);
})();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  &lt;strong&gt;To use it:&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;• Install Tampermonkey or Violentmonkey in Firefox.&lt;br&gt;
• Create a new userscript and paste the above code.&lt;br&gt;
• Save and reload ChatGPT in Firefox.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Result&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;After applying this userscript, the textarea in ChatGPT on Firefox will receive proper focus, and the first keypress won’t be lost. You should be able to start typing immediately without needing to press Enter or click the field manually. This significantly improves the input experience on Firefox, bringing it closer to Chromium’s behavior.&lt;/p&gt;

&lt;p&gt;Tested on Firefox 135&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Removing Firefox context menu items (right-click menu)</title>
      <dc:creator>hopsayer</dc:creator>
      <pubDate>Tue, 01 Jul 2025 21:52:35 +0000</pubDate>
      <link>https://forem.com/hopsayer/removing-firefox-context-menu-items-right-click-menu-g89</link>
      <guid>https://forem.com/hopsayer/removing-firefox-context-menu-items-right-click-menu-g89</guid>
      <description>&lt;p&gt;I. &lt;strong&gt;Problem:&lt;/strong&gt;&lt;br&gt;
   Remove or hide specific items from Firefox context menu (right-click menu), such as:&lt;/p&gt;

&lt;p&gt;• "Take Screenshot" &lt;br&gt;
• "Inspect" &lt;br&gt;
• "Inspect Accessibility Properties" &lt;br&gt;
• "View Page Source" &lt;br&gt;
• "Select All" &lt;br&gt;
• "Ask AI" &lt;br&gt;
• "Print Selection" &lt;br&gt;
• "Translate Selection"&lt;br&gt;
• "View Selection Source".&lt;/p&gt;

&lt;p&gt;II. &lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• Use Firefox's &lt;code&gt;about:config&lt;/code&gt; settings to disable certain features entirely &lt;br&gt;
    or&lt;br&gt;
  • Use &lt;code&gt;userChrome.css&lt;/code&gt; to hide individual menu items via CSS rules.&lt;/p&gt;

&lt;p&gt;III. &lt;strong&gt;Instruction:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• Open Firefox and go to &lt;code&gt;about:profiles&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;• Find the user profile which is marked as "This is the profile in use and it cannot be deleted." &lt;br&gt;
    Click &lt;code&gt;Open Directory&lt;/code&gt; next to &lt;code&gt;Root Directory&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;• In the profile folder, create a folder named &lt;code&gt;chrome&lt;/code&gt; if it doesn't exist.&lt;/p&gt;

&lt;p&gt;• Inside &lt;code&gt;chrome&lt;/code&gt;, create or edit a file named &lt;code&gt;userChrome.css&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;• To disable context menu items you consider unnecessary, edit the &lt;code&gt;userChrome.css&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* Hide "Take Screenshot" */
#context-screenshot {
  display: none !important;
}

/* Hide "Inspect" */
#context-inspect {
  display: none !important;
}

/* Hide "Inspect Accessibility Properties" */
#context-inspect-a11y {
  display: none !important;
}

/* Hide "View Page Source" */
#context-viewsource {
  display: none !important;
}

/* Hide "Select All" */
#context-selectall {
  display: none !important;
}

/* Hide "Print Selection" */
#context-print-selection {
  display: none !important;
}

/* Hide "Translate Selection" */
#context-translate-selection {
  display: none !important;
}

/* Hide "View Selection Source" */
#context-viewpartialsource-selection {
  display: none !important;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this done, you have hidden menu items by adding multiple custom CSS rules.&lt;/p&gt;

&lt;p&gt;• In Firefox open new tab with the address &lt;code&gt;about:config&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;• Find the &lt;code&gt;toolkit.legacyUserProfileCustomizations.stylesheets&lt;/code&gt; flag and set it to &lt;code&gt;true&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;• Restart Firefox completely.&lt;/p&gt;

&lt;p&gt;IV. &lt;strong&gt;Result:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• After applying these settings and restarting Firefox, the specified context menu items will be removed or hidden as requested.&lt;/p&gt;

&lt;p&gt;• Disabling features via about:config completely removes their functionality and menu items.&lt;/p&gt;

&lt;p&gt;• Using &lt;code&gt;userChrome.css&lt;/code&gt; allows selective hiding of menu items without disabling the underlying feature.&lt;/p&gt;

&lt;p&gt;• This provides flexible control over Firefox's context menu appearance.&lt;/p&gt;




&lt;p&gt;You may also like the &lt;strong&gt;second&lt;/strong&gt;, more tough, &lt;strong&gt;way&lt;/strong&gt; to exclude menu items by disabling entire features, which removes corresponding menu items automatically:&lt;/p&gt;

&lt;p&gt;• To disable screenshots feature (removes "Take Screenshot"), change &lt;code&gt;screenshots.browser.component.enabled&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt; in &lt;code&gt;about:config&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;• To disable "Ask ChatGPT" menu item, change &lt;code&gt;browser.ml.chat.enabled and browser.ml.chat.shortcuts&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt; in &lt;code&gt;about:config&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;• To disable accessibility tools (removes "Inspect Accessibility Properties"), change &lt;code&gt;devtools.accessibility.enabled&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
