<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>linux &amp;mdash; forbiddenlake</title>
    <link>https://blog.kiserai.net/tag:linux</link>
    <description></description>
    <pubDate>Tue, 28 Apr 2026 08:00:48 +0000</pubDate>
    <item>
      <title>Elite: Dangerous HUD Mod UI on Linux</title>
      <link>https://blog.kiserai.net/elite-dangerous-hud-mod-ui-on-linux</link>
      <description>&lt;![CDATA[2025 update: With the release of version 3, none of the below is necessary. &#xA;&#xA;----&#xA;&#xA;EDHM+UI is a tool that lets you change the colors and lighting of the HUD in Elite: Dangerous.  Does it work on Linux? Yes!&#xA;&#xA;tl;dr: Install EDHM+UI in its own WINE prefix, then point it at your E:D install.&#xA;&#xA;!--more--&#xA;&#xA;Long version:&#xA;&#xA;Download the EDHM+UI installer (EDHMUISetup.msi) from GitHub.&#xA;Choose a name for a new WINE prefix: export WINEPREFIX=&#34;$HOME/.wineedhmui&#34;&#xA;Initialize the prefix with: wine wineboot&#xA;Install .NET to the prefix: winetricks dotnet48. This will take you through a couple installers. Just continue through any warnings the installers show.&#xA;Make sure the Windows version is set to one supported by EDHM+UI: winetricks win10&#xA;Install EDHM+UI to the prefix (replace with the path to the .msi if it is not in the current folder): wine msiexec /i ./EDHMUISetup.msi&#xA;(Optional) Download an icon for a shortcut: wget https://bluemystical.github.io/edhm-api/assets/img/logo.png -O &#34;${WINEPREFIX}/logo.png&#34;&#xA;Set up a .desktop file to put EDHM in your menu.  Create ~/.local/share/applications/edhm-ui.desktop with a text editor and put the following in. Replace NAME with your username.&#xA;[Desktop Entry]&#xA;Name=EDHM UI&#xA;Comment=E:D HUD Mod UI&#xA;Exec=env WINEDEBUG=&#34;-all&#34; WINEPREFIX=&#34;/home/NAME/.wineedhmui&#34; &#34;/home/NAME/.wineedhmui/drivec/users/NAME/AppData/Local/EDHMUI/EDHMUImk2.exe&#34;&#xA;Icon=/home/NAME/.wineedhmui/logo.png&#xA;Terminal=false&#xA;Type=Application&#xA;Categories=Game&#xA;&#xA;Start EDHM+UI. Point it at your Elite Dangerous install(s). In the following picture it references my Steam install. You can likely find your install with: find ~ -name elite-dangerous-odyssey-64, but be sure to use the Windows-style path like I do, usually under Z:\. To make the box editable/browsable, CTRL+LEFT-CLICK the pi (π) symbol first.&#xA;image&#xA;You can then use EDHM+UI like on Windows. Select a premade theme, tweak it, add third-party plugins, and apply it. And just like Windows, you can use a hotkey (F11 by default) to reload a changed theme while the game is running.  &#xA;&#xA;Note: I was getting frequent crashes from EDHM UI, but I was still able to apply a theme and add a third-party plugin. &#xA;&#xA;---&#xA;References:&#xA;EDHM+UI Discord MrVaad&#xA;EDHM+UI Discord Thorned Rose&#xA;GitHub issue&#xA;&#xA;---&#xA;Tested versions:&#xA;Arch Linux as of 2024-02-19&#xA;wine 9.2-1&#xA;winetricks 20240105-1&#xA;EDHM+UI v2.2.19&#xA;---&#xA;Filed in: #elitedangerous #linux]]&gt;</description>
      <content:encoded><![CDATA[<p><strong>2025 update</strong>: With the <a href="https://github.com/BlueMystical/EDHM_UI/releases">release of version 3</a>, none of the below is necessary.</p>

<hr>

<p><a href="https://bluemystical.github.io/edhm-api/">EDHM+UI</a> is a tool that lets you change the colors and lighting of the HUD in Elite: Dangerous.  Does it work on Linux? Yes!</p>

<p>tl;dr: Install EDHM+UI in its <em>own</em> WINE prefix, then point it at your E:D install.</p>



<p>Long version:</p>
<ol><li>Download the EDHM+UI installer (<code>EDHM_UI_Setup.msi</code>) from <a href="https://github.com/BlueMystical/EDHM_UI/releases/latest">GitHub</a>.</li>
<li>Choose a name for a new WINE prefix: <code>export WINEPREFIX=&#34;$HOME/.wine_edhmui&#34;</code></li>
<li>Initialize the prefix with: <code>wine wineboot</code></li>
<li>Install .NET to the prefix: <code>winetricks dotnet48</code>. This will take you through a couple installers. Just continue through any warnings the installers show.</li>
<li>Make sure the Windows version is set to one supported by EDHM+UI: <code>winetricks win10</code></li>
<li>Install EDHM+UI to the prefix (replace with the path to the .msi if it is not in the current folder): <code>wine msiexec /i ./EDHM_UI_Setup.msi</code></li>
<li>(Optional) Download an icon for a shortcut: <code>wget https://bluemystical.github.io/edhm-api/assets/img/logo.png -O &#34;${WINEPREFIX}/logo.png&#34;</code></li>

<li><p>Set up a .desktop file to put EDHM in your menu.  Create <code>~/.local/share/applications/edhm-ui.desktop</code> with a text editor and put the following in. Replace NAME with your username.</p>

<pre><code class="language-sh">[Desktop Entry]
Name=EDHM UI
Comment=E:D HUD Mod UI
Exec=env WINEDEBUG=&#34;-all&#34; WINEPREFIX=&#34;/home/NAME/.wine_edhmui&#34; &#34;/home/NAME/.wine_edhmui/drive_c/users/NAME/AppData/Local/EDHM_UI/EDHM_UI_mk2.exe&#34;
Icon=/home/NAME/.wine_edhmui/logo.png
Terminal=false
Type=Application
Categories=Game
</code></pre></li>

<li><p>Start EDHM+UI. Point it at your Elite Dangerous install(s). In the following picture it references my Steam install. You can likely find your install with: <code>find ~ -name elite-dangerous-odyssey-64</code>, but be sure to use the Windows-style path like I do, usually under <code>Z:\</code>. <strong>To make the box editable/browsable, CTRL+LEFT-CLICK the pi (π) symbol first.</strong>
<img src="https://dabor.kiserai.net/i/fcd388e2-095f-4c41-87ff-69676bae4246.jpg" alt="image"></p></li>

<li><p>You can then use EDHM+UI like on Windows. Select a premade theme, tweak it, add third-party plugins, and apply it. And just like Windows, you can use a hotkey (F11 by default) to reload a changed theme <em>while the game is running</em>.</p></li></ol>

<p><strong>Note</strong>: I was getting frequent crashes from EDHM UI, but I was still able to apply a theme and add a third-party plugin.</p>

<hr>

<p>References:
1. <a href="https://discord.com/channels/773552741632180224/773553131568889916/1171209291856883773">EDHM+UI Discord MrVaad</a>
2. <a href="https://discord.com/channels/773552741632180224/773553131568889916/1016666369774858240">EDHM+UI Discord Thorned Rose</a>
3. <a href="https://github.com/BlueMystical/EDHM_UI/issues/36#issuecomment-1595329861">GitHub issue</a></p>

<hr>

<p>Tested versions:
* Arch Linux as of 2024-02-19
* wine 9.2-1
* winetricks 20240105-1
* EDHM+UI v2.2.19</p>

<hr>

<p>Filed in: <a href="https://blog.kiserai.net/tag:elitedangerous" class="hashtag"><span>#</span><span class="p-category">elitedangerous</span></a> <a href="https://blog.kiserai.net/tag:linux" class="hashtag"><span>#</span><span class="p-category">linux</span></a></p>
]]></content:encoded>
      <guid>https://blog.kiserai.net/elite-dangerous-hud-mod-ui-on-linux</guid>
      <pubDate>Wed, 21 Feb 2024 17:17:07 +0000</pubDate>
    </item>
    <item>
      <title>Scheduled Game Save Backups with Ludusavi on Linux</title>
      <link>https://blog.kiserai.net/scheduled-game-save-backups-with-ludusavi-on-linux</link>
      <description>&lt;![CDATA[Ludusavi is a cross-platform tool for backing up game saves and configuration.  Currently, it does not have a built-in way to schedule backups, but we can use system tools to do so instead. In the post, we will use systemd user timers.&#xA;&#xA;!--more--&#xA;The following steps make a couple assumptions:&#xA;&#xA;You are running Linux and using systemd&#xA;The ludusavi command is available at /usr/bin/ludusavi, which it is at least for the Arch Linux AUR package.  You may need to adjust it when using another distribution or package.&#xA;The timer is set to run daily, or 5-10 minutes after boot. You can adjust it if you want.&#xA;&#xA;Steps&#xA;&#xA;1\. Set Ludusavi up in the GUI as you wish. Test with the Preview and Back Up buttons.&#xA;2\. Create a service with systemctl edit --user --force --full ludusavi-backup.service and put the following text in it:&#xA;&#xA;[Unit]&#xA;Description=Back up game saves&#xA;After=network.target&#xA;&#xA;[Service]&#xA;Type=oneshot&#xA;ExecStart=/usr/bin/ludusavi backup --force&#xA;&#xA;[Install]&#xA;WantedBy=default.target&#xA;&#xA;3\. Create a timer with systemctl edit --user --force --full ludusavi-backup.timer and put the following text in it:&#xA;&#xA;[Unit]&#xA;Description=Back up game saves&#xA;RefuseManualStart=no&#xA;RefuseManualStop=no&#xA;&#xA;[Timer]&#xA;OnCalendar=daily&#xA;RandomizedDelaySec=5min&#xA;OnBootSec=5min&#xA;&#xA;[Install]&#xA;WantedBy=timers.target&#xA;&#xA;4\. Enable the timer and run the backup with: systemctl --user enable --now ludusavi-backup.timer&#xA;&#xA;Other Commands&#xA;&#xA;List timers: systemctl --user list-timers --all&#xA;Run a backup manually: systemctl --user start ludusavi-backup.service&#xA;Check logs: journalctl --user -u ludusavi-backup.service&#xA;&#xA;Filed in: #linux]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://github.com/mtkennerly/ludusavi">Ludusavi</a> is a cross-platform tool for backing up game saves and configuration.  Currently, it does not have a built-in way to schedule backups, but we can use system tools to do so instead. In the post, we will use <strong>systemd user timers</strong>.</p>



<p>The following steps make a couple assumptions:</p>
<ol><li>You are running Linux and using systemd</li>
<li>The ludusavi command is available at <code>/usr/bin/ludusavi</code>, which it is at least for the Arch Linux <a href="https://aur.archlinux.org/packages/ludusavi">AUR package</a>.  You may need to adjust it when using another distribution or package.</li>
<li>The timer is set to run daily, or 5-10 minutes after boot. You can <a href="https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html">adjust it if you want</a>.</li></ol>

<h2 id="steps">Steps</h2>

<p>1. Set Ludusavi up in the GUI as you wish. Test with the Preview and Back Up buttons.
2. Create a service with <code>systemctl edit --user --force --full ludusavi-backup.service</code> and put the following text in it:</p>

<pre><code class="language-ini">[Unit]
Description=Back up game saves
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/ludusavi backup --force

[Install]
WantedBy=default.target
</code></pre>

<p>3. Create a timer with <code>systemctl edit --user --force --full ludusavi-backup.timer</code> and put the following text in it:</p>

<pre><code class="language-ini">[Unit]
Description=Back up game saves
RefuseManualStart=no
RefuseManualStop=no

[Timer]
OnCalendar=daily
RandomizedDelaySec=5min
OnBootSec=5min

[Install]
WantedBy=timers.target
</code></pre>

<p>4. Enable the timer and run the backup with: <code>systemctl --user enable --now ludusavi-backup.timer</code></p>

<h2 id="other-commands">Other Commands</h2>
<ul><li>List timers: <code>systemctl --user list-timers --all</code></li>
<li>Run a backup manually: <code>systemctl --user start ludusavi-backup.service</code></li>
<li>Check logs: <code>journalctl --user -u ludusavi-backup.service</code></li></ul>

<p>Filed in: <a href="https://blog.kiserai.net/tag:linux" class="hashtag"><span>#</span><span class="p-category">linux</span></a></p>
]]></content:encoded>
      <guid>https://blog.kiserai.net/scheduled-game-save-backups-with-ludusavi-on-linux</guid>
      <pubDate>Mon, 04 Dec 2023 17:17:21 +0000</pubDate>
    </item>
    <item>
      <title>Hardening Tailscale on Arch Linux: Polkit   = 106</title>
      <link>https://blog.kiserai.net/hardening-tailscale-on-arch-linux-polkit-106</link>
      <description>&lt;![CDATA[Tailscale is an easy and free service for creating your own mesh VPN, built on Wireguard and easier to scale.  Tailscale does provide instructions for hardening it - reducing its privileges to the minimum necessary to run.  However, the instructions don&#39;t fully work for Linux distributions running polkit   = 106, like Arch Linux.&#xA;&#xA;!--more--&#xA;&#xA;Solution&#xA;&#xA;The solution I came up with is, instead of using the Tailscale-provided polkit configuration, create /etc/polkit-1/rules.d/99-tailscaled-dns.rules with the following content:&#xA;&#xA;polkit.addRule(function(action, subject) {&#xA;    if (action.id.startsWith(&#34;org.freedesktop.resolve1.&#34;) &amp;&amp;&#xA;        subject.user == &#34;tailscaled&#34;)&#xA;    {&#xA;        return polkit.Result.YES;&#xA;    }&#xA;});&#xA;&#xA;Then restart it with sudo systemctl restart polkit.service .&#xA;&#xA;I have filed #9344 and hope the official documentation will be updated soon, as Ubuntu 23.10 and later have finally updated polkitd.&#xA;&#xA;Filed in: #linux]]&gt;</description>
      <content:encoded><![CDATA[<p><a href="https://tailscale.com/">Tailscale</a> is an easy and free service for creating your own mesh VPN, built on <a href="https://www.wireguard.com/">Wireguard</a> and easier to scale.  Tailscale does provide <a href="https://tailscale.com/kb/1279/security-node-hardening/">instructions</a> for hardening it – reducing its privileges to the minimum necessary to run.  However, the instructions don&#39;t fully work for Linux distributions running <a href="https://discourse.ubuntu.com/t/use-of-javascript-rules-in-polkit/13892">polkit &gt;= 106</a>, like Arch Linux.</p>



<h1 id="solution">Solution</h1>

<p>The solution I came up with is, instead of using the Tailscale-provided polkit configuration, create <code>/etc/polkit-1/rules.d/99-tailscaled-dns.rules</code> with the following content:</p>

<pre><code class="language-javascript">polkit.addRule(function(action, subject) {
    if (action.id.startsWith(&#34;org.freedesktop.resolve1.&#34;) &amp;&amp;
        subject.user == &#34;tailscaled&#34;)
    {
        return polkit.Result.YES;
    }
});
</code></pre>

<p>Then restart it with <code>sudo systemctl restart polkit.service</code> .</p>

<p>I have filed <a href="https://github.com/tailscale/tailscale/issues/9344">#9344</a> and hope the official documentation will be updated soon, as Ubuntu 23.10 and later have finally updated polkitd.</p>

<p>Filed in: <a href="https://blog.kiserai.net/tag:linux" class="hashtag"><span>#</span><span class="p-category">linux</span></a></p>
]]></content:encoded>
      <guid>https://blog.kiserai.net/hardening-tailscale-on-arch-linux-polkit-106</guid>
      <pubDate>Tue, 24 Oct 2023 17:56:24 +0000</pubDate>
    </item>
  </channel>
</rss>