<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en">
  <title>Cybolic.me</title>
  <subtitle>Personal Website of Christian Dannie Storgaard</subtitle>
  <link href="https://staging.cybolic.me/feed-atom.xml" rel="self" type="application/atom+xml" />
  <link href="https://staging.cybolic.me/" />
  <updated>2025-07-29T13:16:50Z</updated>
  <updated>2025-07-29T13:16:50Z</updated>
  <id>https://staging.cybolic.me/</id>
  <author>
    <name>Christian Dannie Storgaard</name>
  </author>
  <icon>https://staging.cybolic.me//assets/images/favicon.png</icon>
  <entry>
    <title>EVE Online Trinity - in Linux</title>
    <link href="https://staging.cybolic.me/posts/eve-online-trinity-in-linux" />
    <updated>2007-12-14T13:39:00Z</updated>
    <id>https://staging.cybolic.me/posts/eve-online-trinity-in-linux</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="games" label="Games"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/eveonline.jpg" />
    <content type="html">&lt;p&gt;I&#39;ve just begun my venture into the world of &lt;a href=&quot;http://eve-online.com/&quot; title=&quot;EVE Online Website&quot;&gt;EVE Online&lt;/a&gt; and find it quite intriguing. However, since the &amp;quot;port&amp;quot; to Linux was poorly done by &lt;a href=&quot;http://www.transgaming.com/&quot; title=&quot;Transgaming Website&quot;&gt;Transgaming&lt;/a&gt; I was having quite some problems with parts of the game, namely it&#39;s locking of the soundcard and it&#39;s often crashing. Here is a (rather hold-in-hand style, sorry to those who find it boring) guide on how to set up EVE in Linux so you can listen to music while playing and run the game in a window so it won&#39;t leave your system unusable when the client freezes (and so you can minimise it and switch to other tasks, this is Linux, remember?).&lt;/p&gt;&lt;h3 id=&quot;1-installing-the-client&quot;&gt;1. Installing the client&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;Last I downloaded EVE for Linux, it wouldn&#39;t even install properly, set wrong permissions and no amount of tweaking would get it running, so I was a bit hesitive this time, but to my surprise Trinity installed without a problem (as a single user install (on Mint (that is based on Ubuntu))). You can download EVE for Linux here: &lt;a href=&quot;http://www.eve-online.com/download/linux.asp&quot;&gt;http://www.eve-online.com/download/linux.asp&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;2-setting-its-preferences-for-shared-audio&quot;&gt;2. Setting its preferences (for shared audio)&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;As standard, Transgaming (the company responsible for &amp;quot;porting&amp;quot; EVE to Linux (it&#39;s not a port, it&#39;s just EVE and Cedega in single package)) has set Trinity to be the only program allowed to use the soundcard - to fix this, open a terminal and type the following:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; CEDEGA_PATH=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.cedega&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; $HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.cedega/.ui/runGUI&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;to get to the Cedega user interface.&lt;/p&gt;&lt;p&gt;Click on &amp;quot;&lt;em&gt;EVE Online&lt;/em&gt;&amp;quot; to your left, and then right click on &amp;quot;&lt;em&gt;Play EVE&lt;/em&gt;&amp;quot; on your right and select &amp;quot;&lt;em&gt;Edit Settings for this Shortcut&lt;/em&gt;&amp;quot; &lt;span style=&quot;font-size:xx-small;&quot;&gt;(the window that pops up is also accessable from the &amp;quot;EVE Online Configuration&amp;quot; launcher in your desktop environments application menu, as &amp;quot;Configure Options&amp;quot;, but this method has a few extra possibilites we&#39;ll use in a moment).&lt;img src=&quot;https://staging.cybolic.me/posts/Hbe8fg31kq-456.jpeg&quot; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;You should now see this:&lt;img src=&quot;https://staging.cybolic.me/posts/NrPDyqNt6e-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;Switch to the audio tab, and edit the text fields so it says &amp;quot;&lt;em&gt;default&lt;/em&gt;&amp;quot;, like so:&lt;img src=&quot;https://staging.cybolic.me/posts/9__evBUT89-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;Other programs can now also use the soundcard while you&#39;re playing EVE. If that was all you wanted to do, you can stop reading now.&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;3-setting-it-to-window-mode&quot;&gt;3. Setting it to window-mode&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;Now, Transgaming didn&#39;t do a very good job in my oppinion in the &amp;quot;porting&amp;quot;, as the client crashes often, and also has the same &amp;quot;inactivity bug&amp;quot; as WoW suffers from in Cedega, being that the program freezes if left untouched for a few minutes (even sometimes just when there&#39;s not much action in the game). Since Transgaming haven&#39;t bothered giving us the option to run EVE in a window (like it seems the Windows client can), this causes your computer to become unreachable as Cedega also grabs the keyboard focus, so you can&#39;t get out of the game if (when) it crashes.&lt;/p&gt;&lt;p&gt;To remedy this, we can force EVE to run in a window, so we can at least kill it when it freezes.&lt;/p&gt;&lt;p&gt;Let&#39;s go back to the Cedega window. Right click on &amp;quot;EVE Online&amp;quot; to your left, and select &amp;quot;&lt;em&gt;Add Shortcut&lt;/em&gt;&amp;quot;:&lt;img src=&quot;https://staging.cybolic.me/posts/n8Gzbw13sS-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;In the window that appears we need to do a few things. First we have to give the shortcut a name, I suggest you call it &amp;quot;EVE&amp;quot; to make it easier to follow my example. Then, we need to tell Cedega where the EVE executable is. Instead of just giving it the standard EVE executable, we&#39;re going to give it the one that the standard EVE executable executes &lt;em&gt;(if we don&#39;t we&#39;ll end up with two windows instead of one - the EVE window and the EVE splash-window (and no, the splash-window does not go away until you exit the game))&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;So, type &amp;quot;&lt;strong&gt;/home/&lt;em&gt;YOURUSERNAME&lt;/em&gt;/.cedega/EVE Online/c_drive/Program Files/CCP/EVE/bin/ExeFile.exe&lt;/strong&gt;&amp;quot; (replacing YOURUSERNAME with your username) next to &amp;quot;&lt;em&gt;Path to Program&lt;/em&gt;&amp;quot;. Also, I suggest you click the &amp;quot;&lt;em&gt;Extract Icon&lt;/em&gt;&amp;quot; button, as the Windows icon for EVE is much nicer than the one Transgaming has supplied for Linux - don&#39;t ask why.&lt;/p&gt;&lt;p&gt;Set the &amp;quot;&lt;em&gt;Working Directory&lt;/em&gt;&amp;quot; to &amp;quot;&lt;strong&gt;/home/&lt;em&gt;YOURUSERNAME&lt;/em&gt;/.cedega/EVE Online/c_drive/Program Files/CCP/EVE&lt;/strong&gt;&amp;quot; (again replacing YOURUSERNAME). We also have to pass it some arguments, one to stop it from trying to display a splash screen that won&#39;t display, and one to make it start a bit faster, so write &amp;quot;&lt;strong&gt;/nosplash /noconsole&lt;/strong&gt;&amp;quot; next to &amp;quot;Command Line Options:&amp;quot;.&lt;/p&gt;&lt;p&gt;Next, select &amp;quot;EVE Online&amp;quot; as the GDDB Profile to make Cedega run the game correctly.&lt;/p&gt;&lt;p&gt;The window should now look much like this:&lt;img src=&quot;https://staging.cybolic.me/posts/JNWLccHnWN-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;Before we can go further and edit the settings (to make it run in a window), we need to click the &amp;quot;&lt;em&gt;Ok&lt;/em&gt;&amp;quot; button first to make Cedega save this shortcut - so go ahead and click it.&lt;/p&gt;&lt;p&gt;Now, let&#39;s make it run in a window.&lt;/p&gt;&lt;p&gt;Much like before, right click on the EVE icon we just created and select &amp;quot;&lt;em&gt;Edit Settings for this Shortcut&lt;/em&gt;&amp;quot;. I suggest you repeat the steps from before to make Cedega play nicely with other audio programs, so go back to see how we did that.&lt;/p&gt;&lt;p&gt;Back in the &amp;quot;&lt;em&gt;General&lt;/em&gt;&amp;quot; tab, simply select your desired window size at &amp;quot;&lt;em&gt;Run in Window&lt;/em&gt;&amp;quot; to your right, and uncheck &amp;quot;&lt;em&gt;DXGrab&lt;/em&gt;&amp;quot; to make your mouse able to leave the window (you really want that, you really do).&lt;/p&gt;&lt;p&gt;Your window should now look much like this:&lt;img src=&quot;https://staging.cybolic.me/posts/J6hw8HJwIW-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;Now that we have configured Cedega to be able to run EVE in window mode, we need to configure EVE to run in the window., so let&#39;s start her up. With our &amp;quot;&lt;em&gt;EVE&lt;/em&gt;&amp;quot; selected in the list to right in the Cedega window, click the play button in the top of the window to start EVE.&lt;/p&gt;&lt;p&gt;When EVE has loaded (you don&#39;t need to log in), press the Escape key on the keyboard and a settings window will appear.&lt;/p&gt;&lt;p&gt;Select the same &amp;quot;&lt;em&gt;Adapter Resolution&lt;/em&gt;&amp;quot; as you did in the Cedega Settings window and click apply:&lt;img src=&quot;https://staging.cybolic.me/posts/bIWpmJXowh-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;EVE is now configured.&lt;/p&gt;&lt;p&gt;Now, our windowed EVE isn&#39;t much good if we can&#39;t run it, so here&#39;s the command to do so:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;env&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; CEDEGA_PATH=/home/YOURUSERNAME/.cedega&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /home/YOURUSERNAME/.cedega/.ui/runGUI&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -run&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;EVE Online&quot;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;EVE&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;(again, replace YOURUSERNAME with your username)&lt;/em&gt;&lt;/p&gt;&lt;p&gt;To add this as a shortcut to your panel in Gnome (if that&#39;s what you&#39;re running), I suggest you locate the original EVE icon under Games, right click on it and select &amp;quot;&lt;em&gt;Add this launcher to panel&lt;/em&gt;&amp;quot;. Then right click on the newly added icon on your panel, select &lt;em&gt;Properties&lt;/em&gt; and replace whatever is in &lt;em&gt;Command&lt;/em&gt; with the command above. I&#39;ll leave finding our fancy icon from Windows as an exercise for the reader ;)&lt;/p&gt;&lt;p&gt;You now have a nice and easy access to running EVE on Linux without it freezing your system or stealing your soundcard. Enjoy.&lt;/p&gt;&lt;/blockquote&gt;</content>
  </entry>
  <entry>
    <title>EVE Icons</title>
    <link href="https://staging.cybolic.me/posts/eve-icons" />
    <updated>2007-12-14T21:13:00Z</updated>
    <id>https://staging.cybolic.me/posts/eve-icons</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="games" label="Games"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/eveonline.jpg" />
    <content type="html">&lt;p&gt;Well, turns out I&#39;m not really a fan of the Windows icons for EVE either, so I set about finding a replacement icon, and what&#39;d&#39;you&#39;know - there aren&#39;t really any (please correct me, and &lt;em&gt;direct&lt;/em&gt; me, if I&#39;m wrong). So I made my own.&lt;/p&gt;&lt;p&gt;I made two simple versions of the Trinity logo, and I encourage anyone who knows how to flip a pixel to try and make their own - EVE really needs custom icons (IMO anyway).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; I found a tool that could extract the high quality icons from the EVE executable, so I&#39;ve added them here as well. Turns out I was VERY close to the official icon with my 16x16 version... funny.&lt;/p&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;1&quot; cellpadding=&quot;1&quot; summary=&quot;Two sets of icons for EVE Online Trinity&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;border:medium none;&quot;&gt;&lt;/td&gt;&lt;td&gt;Official&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;Basic&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;Basic with planet&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;128px&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/ldDUapEiAi-128.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/WuLw8dsP37-128.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/HpVQP12ycB-128.jpeg&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;48px&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/yoCxbuW0dQ-48.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/G1dfVgZ_NZ-48.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/QgDSPt-4If-48.jpeg&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;32px&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/vfVAiuIntr-32.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/zBru3kaTRh-32.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/1-QPLjHOgN-32.jpeg&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;24/22px&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/kRKNupfQnJ-24.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/lEaKiOvsTs-22.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/cle990huqe-22.jpeg&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;right&quot;&gt;16px&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/8R2wfUonVk-16.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/AO-e8cfPD_-16.jpeg&quot; /&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;(note: All &quot;Basic&quot; (and &quot;Basic with planet&quot;) icons were done from scratch in Inkscape (16x16 in Gimp) - they are not derivative works)</content>
  </entry>
  <entry>
    <title>More about EVE (in Wine)</title>
    <link href="https://staging.cybolic.me/posts/more-about-eve-in-wine" />
    <updated>2007-12-19T23:34:00Z</updated>
    <id>https://staging.cybolic.me/posts/more-about-eve-in-wine</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="games" label="Games"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/eveonline.jpg" />
    <content type="html">&lt;p&gt;Okay, annoyed with the choppiness of EVE in Cedega (the official &amp;quot;client&amp;quot; on Linux) I set out to get EVE running in Wine.&lt;/p&gt;&lt;p&gt;The instructions for setting it up are on the EVE forum, but &lt;a href=&quot;http://myeve.eve-online.com/ingameboard.asp?a=topic&amp;amp;threadID=30457&quot;&gt;the thread&lt;/a&gt; is 60 pages long, so I&#39;ve added it as steps here instead (for Debianish systems (Debian, Ubuntu, Mint, etc)).&lt;/p&gt;&lt;p&gt;Since the install works fine in vanilla Wine, I&#39;ll just skip that bit as it is really point and click (check winehq.org if you have doubts about how to install wine - you&#39;ll at least need to add their repository).&lt;/p&gt;&lt;p&gt;Open a terminal and let&#39;s go! (just copy-paste this stuff line for line)&lt;/p&gt;&lt;h3 id=&quot;1-creating-a-patched-wine-package&quot;&gt;1. Creating a patched Wine package&lt;/h3&gt;&lt;p&gt;First, we need the sourcecode to Wine:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;apt-get&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; source&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; wine&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Go to the newly created directory containing the sourcecode:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; wine-0.9.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;*&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Get and apply the patch (developed by aturkin and stefand from #winehackers@FreeNod): This adds support for some advanced network operations that vanilla Wine currently doesn&#39;t have and EVE Trinity require.&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;wget&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; http://stud4.tuwien.ac.at/~e0526822/0001-implement-BindIoCompletionCallback.patch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;patch&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -p1&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; 0001-implement-BindIoCompletionCallback.patch&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Get the packages required to compile Wine: This might take some time to finish.&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; apt-get&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; build-dep&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; wine&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Change the version number of our Wine-package: This makes it easier to keep of track of what version we have installed.&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;cp&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; debian/changelog&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; debian/changelog.backup&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -e&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;wine (&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;dpkg-parsechangelog&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Version: &#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; cut&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt;&#92; &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -f2-&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;eve) &#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;dpkg-parsechangelog&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Distribution: &#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; cut&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt;&#92; &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -f2-&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;; urgency=low&#92;n&#92;n  * Small patch to make EVE work&#92;n&#92;n -- &#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; dpkg-parsechangelog&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Maintainer: &#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; cut&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt;&#92; &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -f2-&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;  &#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;dpkg-parsechangelog&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Date: &#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; cut&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt;&#92; &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -f2-&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;&#92;n&#92;n&#39;&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; debian/changelog&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; debian/changelog&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Compile Wine and make a package of it: Put on a movie while this command finishes, it&#39;s going to take a while.&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;dpkg-buildpackage&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -rfakeroot&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, install the package:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; dpkg&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -B&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -i&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ../wine_0.9.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;eve&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;.deb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;2-running-eve&quot;&gt;2. Running EVE&lt;/h3&gt;&lt;p&gt;Run:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;~/.wine/drive_c/Program Files/CCP/EVE/&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; wine&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; eve.exe&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(If you get a black screen, or can&#39;t get passed the login screen, try pressing Escape and see if you can get further from there)&lt;/p&gt;&lt;h3 id=&quot;if-you-still-have-problems&quot;&gt;If you still have problems&lt;/h3&gt;&lt;p&gt;You might need to upgrade EVE to Premium by downloading and running the &lt;a href=&quot;http://www.eve-online.com/patches/patches.asp?s=&amp;amp;system=win&amp;amp;edition=classic&amp;amp;n=45017&quot;&gt;patch located here&lt;/a&gt; (in Wine).&lt;/p&gt;&lt;h4 id=&quot;the-following-is-made-obsolete-by-the-patching-above-but-included-here-still-in-case-you-have-any-problems&quot;&gt;The following is made obsolete by the patching above, but included here still in case you have any problems:&lt;/h4&gt;&lt;p&gt;Since EVE tries to communicate with a specific server on startup in a way that Wine currently doesn&#39;t support, we need to block that server&#39;s IP address:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; sh&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -c&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;echo &quot;87.237.39.199 localhost&quot; &gt;&gt; /etc/hosts&#39;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Restart the network (is not always necessary):&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /etc/init.d/networking&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; restart&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Voice chat seems to cause problems with Wine, so you can turn that off too. Open &lt;strong&gt;~/.wine/drive_c/windows/profiles/&lt;em&gt;YOURUSERNAME&lt;/em&gt;/Local Settings/Application Data/CCP/EVE/settings/prefs.ini&lt;/strong&gt; and add the following line:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;voiceenabled=0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Also, you might as well set &lt;strong&gt;eulaagreed&lt;/strong&gt; to &lt;strong&gt;1&lt;/strong&gt; so you can skip the license agreement.&lt;/p&gt;&lt;p&gt;That&#39;s it! If you have any problems with the steps, feel free to leave a comment.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Windows are for breaking</title>
    <link href="https://staging.cybolic.me/posts/windows-are-for-breaking" />
    <updated>2008-01-05T11:39:00Z</updated>
    <id>https://staging.cybolic.me/posts/windows-are-for-breaking</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/microsoft.jpg" />
    <content type="html">&lt;h3 id=&quot;automated-breakage&quot;&gt;Automated breakage&lt;/h3&gt;&lt;p&gt;Yesterday I wanted to boot into my Windows XP Professional partition to see if &lt;em&gt;Perfect World&lt;/em&gt; ran better in Windows than in Wine, but what was this? Windows refused to boot. Now, this has happened to me before, and I have read lots and lots of post online about the dreaded Mup.sys problem, but this time - I just could not get it to go away and get into Windows.&lt;/p&gt;&lt;p&gt;It was time for &lt;em&gt;the reinstall&lt;/em&gt;.&lt;/p&gt;&lt;h3 id=&quot;more-reinstall-part-one&quot;&gt;Reinstall part one&lt;/h3&gt;&lt;p&gt;So, I dig out my original Windows XP CD, pop it in the PC and reboot. 5-10 minutes later I&#39;m at the installation program where it tells me that it&#39;s not happy about installing over the old XP installation and that I should pick another partition, so I go back, delete the old XP partition and tell it to create a new one. It can&#39;t. Sigh.&lt;/p&gt;&lt;h3 id=&quot;reinstall-2-now-with-training-wheels&quot;&gt;Reinstall 2: Now with training wheels&lt;/h3&gt;&lt;p&gt;Reboot again with an Ubuntu live CD (notice that the adventure would just be over now if it wasn&#39;t for Linux). It appears the Windows setup has somehow changed to order of my partitions, and generally corrupted the partition table, but Linux let&#39;s me read my data anyhow, and I backup everything important to an external drive and clear the entire disk. As I now don&#39;t trust the Windows installer, I create the NTFS partition forehand, so it won&#39;t choke on it next time. Reboot.&lt;/p&gt;&lt;p&gt;After many minutes, I&#39;m finally in the installation again, I can select the NTFS partition and start the installation. I lean back and let it do it&#39;s &amp;quot;magic&amp;quot; and after some time it reboots, supposedly having copied all required files. After the reboot I get a nice message telling me that it can&#39;t find a required file, and won&#39;t boot. Sigh again. Reboot.&lt;/p&gt;&lt;h3 id=&quot;third-times-a-charm-right&quot;&gt;Third time&#39;s a charm - right?&lt;/h3&gt;&lt;p&gt;Now, in the setup program I select the same options as before, let it finish copying the files, reboot, and for some reason it works this time - hurray! Now I put on a movie and wait the about 40-50 minutes the Windows install takes.&lt;/p&gt;&lt;p&gt;... The install is finished, and I now have a shiny, newly installed Windows XP! Yay! All should be good from now on, right? Wrong. It doesn&#39;t recognise my network card, so I&#39;m left with a VESA display driver and no programs. Luckily I still have the CD that came with my motherboard, so I pop that in and install the network driver. Reboot again.&lt;/p&gt;&lt;h3 id=&quot;one-driver-down-two-more-to-go&quot;&gt;One driver down, two more to go...&lt;/h3&gt;&lt;p&gt;After the reboot I am online and go straight to Nvidia.com, since I have an nForce2 motherboard and would like proper drivers, but to my surprise the driver for it isn&#39;t that easy to find. I eventually find it through Google (it&#39;s under &amp;quot;Legacy&amp;quot; at Nvidia.com), download it and install it. Reboot again again.&lt;/p&gt;&lt;p&gt;Next boot is starting very, very slowly.... after about 15 minutes, I finally get a desktop, but it freezes after a couple of seconds. What now?&lt;/p&gt;&lt;p&gt;I turn off the computer on the switch, since Ctrl+Alt+Del doesn&#39;t work, restart it and start Windows in Safe Mode. ...it stops at Mup.sys... Come on! I let it run for about 20 minutes before I turn it off again.&lt;/p&gt;&lt;p&gt;I try again and can start the desktop, but it still freezes after a couple of seconds.&lt;/p&gt;&lt;p&gt;This is the last straw. After it having corrupted my partition, installed faulty, not having any drivers and then just not working when it gets the only official driver available, I walk away from Windows.&lt;/p&gt;&lt;h3 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h3&gt;&lt;p&gt;I am writing this post from the Ubuntu Live CD, where it is installing in the background (it&#39;s finished now - it started just before I started writing this post), and I&#39;m also downloading an ISO of xubuntu and Sabayon at the same time, so I can try them as well - this all took me about 15 minutes in all, as opposed to my 2 1/2 hours wasted on NOT getting Windows to install (but enjoying 7 wonderful reboots; Microsoft knows how we love those reboots).&lt;/p&gt;&lt;p&gt;XP might be a dated system, but the motherboard is two years older than XP SP2 (which is the version I installed), so there&#39;s really no excuse for it working so poorly.&lt;/p&gt;&lt;p&gt;I think I&#39;ll try and install Vista at some point, just for the lulz.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Default video player in Linux</title>
    <link href="https://staging.cybolic.me/posts/default-video-player-in-linux" />
    <updated>2008-01-06T18:26:00Z</updated>
    <id>https://staging.cybolic.me/posts/default-video-player-in-linux</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;Just a quick memo on how to make mplayer the default videoplayer in Linux:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;xdg-mime&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; default&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; mplayer.desktop&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; application/vnd.rn-realmedia&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; application/x-extension-mp4&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; application/x-flash-video&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; application/x-matroska&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; application/x-quicktime-media-link&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; application/x-quicktimeplayer&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; text/google-video-pointer&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; text/x-google-video-pointer&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/3gpp&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/dv&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/fli&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/flv&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/mp4&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/mp4v-es&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/mpeg&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/msvideo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/quicktime&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/vivo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/vnd.divx&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/vnd.rn-realvideo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/vnd.vivo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-anim&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-avi&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-flc&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-fli&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-flic&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-m4v&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-matroska&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-mpeg&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-ms-asf&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-msvideo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-ms-wm&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-ms-wmv&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-ms-wmx&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-ms-wvx&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-nsv&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-ogm+ogg&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; video/x-theora+ogg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This of course depends on your system actually having a desktop file for MPlayer (which the &lt;em&gt;mplayer-nogui&lt;/em&gt; package in Ubuntu doesn&#39;t), so if your system doesn&#39;t have it (check /usr/share/applications/), you can copy the following to &lt;strong&gt;.local/share/applications/mplayer.desktop&lt;/strong&gt; in your home directory:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#EED49F&quot;&gt;Desktop Entry&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Version&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;1.0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Type&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;Application&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Encoding&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;UTF-8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;MPlayer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Comment&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;Play multimedia files and media&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;GenericName&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;Media Player&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Exec&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;mplayer %U&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Icon&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;mplayer&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;NoDisplay&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;MimeType&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;application/vnd.rn-realmedia&lt;/span&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;;application/x-extension-mp4;application/x-flash-video;application/x-matroska;application/x-quicktime-media-link;application/x-quicktimeplayer;text/google-video-pointer;text/x-google-video-pointer;video/3gpp;video/dv;video/fli;video/flv;video/mp4;video/mp4v-es;video/mpeg;video/msvideo;video/quicktime;video/vivo;video/vnd.divx;video/vnd.rn-realvideo;video/vnd.vivo;video/x-anim;video/x-avi;video/x-flc;video/x-fli;video/x-flic;video/x-m4v;video/x-matroska;video/x-mpeg;video/x-ms-asf;video/x-msvideo;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-ms-wvx;video/x-nsv;video/x-ogm+ogg;video/x-theora+ogg;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Afterwards, you might need to run&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;update-desktop-database&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ~/.local/share/applications&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and log out and in again.... mimetypes are a bit magic...&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>The future of Ubuntu and the desktop internet</title>
    <link href="https://staging.cybolic.me/posts/the-future-of-ubuntu-and-the-desktop-internet" />
    <updated>2008-09-16T04:56:06Z</updated>
    <id>https://staging.cybolic.me/posts/the-future-of-ubuntu-and-the-desktop-internet</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;I&#39;ve just read &lt;a href=&quot;https://lists.ubuntu.com/archives/ubuntu-devel-announce/2008-September/000481.html&quot;&gt;Mark Shuttleworths post&lt;/a&gt; to the Ubuntu Development mailing-list and I must say it got me a bit excited.&lt;/p&gt;&lt;p&gt;In his post he mentions that the focus of the next release of Ubuntu, the one after Intreprid Ibex, namely 9.04 &amp;quot;Jaunty Jackalope&amp;quot; will, amongst other things, focus on &amp;quot;&lt;em&gt;the blurring of web services and desktop applications&lt;/em&gt;&amp;quot; which, if done right, will be extremely cool and also give Ubuntu a real edge over OS X and Vista.&lt;/p&gt;&lt;p&gt;It also got me thinking about projects such as &lt;a href=&quot;http://live.gnome.org/Empathy&quot;&gt;Empathy&lt;/a&gt;, &lt;a href=&quot;http://beatniksoftware.com/gimmie/&quot;&gt;Gimmie&lt;/a&gt; and &lt;a href=&quot;http://live.gnome.org/Soylent&quot;&gt;Soylent&lt;/a&gt;. Just imagine the things these programs can do, implemented properly in an Ubuntu Gnome kind of way... pure bliss.&lt;/p&gt;&lt;p&gt;When I think of this, I immediately also think that we should try to step away from the program analogy and focus on tasks instead.&lt;/p&gt;&lt;p&gt;You shouldn&#39;t have to locate F-Spot in the menu, but click &amp;quot;Pictures&amp;quot;; if you prefer something other than F-Spot, change it in the preferences (and yes, this should include a way to &amp;quot;launch&amp;quot; Photobucket, Flickr, etc.). The same with instant messaging, you shouldn&#39;t have to start Pidgin, you should have a &amp;quot;People&amp;quot; or &amp;quot;Contacts&amp;quot; entry in the main menubar with all your IM contacts, email contacts, heck, even Facebook contacts listed, each with a submenu giving you the option to contact them in different ways: video, chat, email - like Soylent in a menu.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://labs.mozilla.com/2008/08/introducing-ubiquity/&quot;&gt;Ubiquity&lt;/a&gt; already implements a lot of what I have in mind, but it&#39;s still inside the browser, it should be part of the desktop, also it uses English language to do the task, it should use the desktop interface (though language based operation shouldn&#39;t be ignored, it should still be an option - like in &lt;a href=&quot;http://do.davebsd.com/&quot;&gt;GNOME Do&lt;/a&gt;, which has a nice graphical way of showing what you are requesting).&lt;/p&gt;&lt;p&gt;Ideas such as this have been posted numerous times, but have yet to be included in any standard desktop - I sincerely hope Jaunty Jackalope will change this.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Linux Mint - Wow!</title>
    <link href="https://staging.cybolic.me/posts/linux-mint-wow" />
    <updated>2008-09-18T01:04:01Z</updated>
    <id>https://staging.cybolic.me/posts/linux-mint-wow</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;After having my partitions mangled once again, again, again by Windows, I decided I had to clean up my Linux - and by clean up, I mean reinstall, though I still use the same config files for my program - I love how you can do that in Linux.&lt;/p&gt;&lt;p&gt;But anyway, instead of reinstalling Ubuntu Hardy, which has given me so many problems with my notepad&#39;s ATI graphic card, I figured I might as well try &lt;a href=&quot;http://www.linuxmint.com/&quot;&gt;Mint&lt;/a&gt; again, since it was a very enjoyable ride last time, and it sure still is!&lt;/p&gt;&lt;p&gt;So far I like practically everything about &lt;a href=&quot;http://www.linuxmint.com/edition.php?id=25&quot;&gt;the new Mint&lt;/a&gt;! Their funky little menu-ting (though it makes setting preferences slightly slower than the standard Gnome menu, though that&#39;s not really an issue since it not something one should have to anyway), their theme (and the &lt;span style=&quot;text-decoration:underline;&quot;&gt;excellent&lt;/span&gt; included themes), how everything is automated, from video codecs to software installation and checking, and most of all because it let me boot into CompizFusion without any configuration &lt;span style=&quot;text-decoration:underline;&quot;&gt;at all&lt;/span&gt; - with working video none the less (something I never got working right in Ubuntu).&lt;/p&gt;&lt;p&gt;I don&#39;t know how on earth the &lt;a href=&quot;http://www.linuxmint.com/&quot;&gt;Mint&lt;/a&gt; team has achieved this, since it should function exactly like Ubuntu in regards to drivers, but for some reason &lt;a href=&quot;http://www.linuxmint.com/&quot;&gt;Mint&lt;/a&gt; just works.&lt;/p&gt;&lt;p&gt;If I gave out stars, Mint would get five out five (or maybe 4.9 because of the redundant, and slighly ugly, welcome setup) - if you haven&#39;t already tried &lt;a href=&quot;http://www.linuxmint.com/&quot;&gt;Linux Mint&lt;/a&gt;, I recommend you give it a go - especially if you&#39;ve never tried Linux before and want to see what alle the hype is about ;)&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>GLM Extractor for Tabula Rasa</title>
    <link href="https://staging.cybolic.me/posts/glm-extractor-for-tabula-rasa" />
    <updated>2008-12-30T19:21:41Z</updated>
    <id>https://staging.cybolic.me/posts/glm-extractor-for-tabula-rasa</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="games" label="Games"/>
    <category term="audio" label="Audio"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/music.jpg" />
    <content type="html">&lt;p&gt;Now that Tabula Rasa is entering its final death rattle I wanted to make sure I got the soundtrack by Tracy Bush, Curse Mackey and Chris Vrenna with Clint Walsh, so I wrote a small extractor for the GLM format.&lt;/p&gt;&lt;p&gt;Now, as far as I can tell, a GLM file is just a sequence of either Ogg Vorbis or MP3 files put together, so my extractor only looks for those two file formats and splits them up into single files in the sequence it finds them in. There might be more to the format than that, and so I don&#39;t guarantee that it works correctly, but at least I&#39;ve got my soundtrack to listen to.&lt;/p&gt;&lt;p&gt;Anyhow, here it is: &lt;a href=&quot;http://dl.getdropbox.com/u/278272/TabulaRasaGLMExtractor.py&quot;&gt;http://dl.getdropbox.com/u/278272/TabulaRasaGLMExtractor.py&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Just run it in a terminal and it should tell you how to use it.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Linux Memory Management</title>
    <link href="https://staging.cybolic.me/posts/linux-memory-management" />
    <updated>2009-02-11T13:59:29Z</updated>
    <id>https://staging.cybolic.me/posts/linux-memory-management</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;I have 3gbs of memory in my system and a fast processor, yet my system would start choking when I used too much memory, so I sat out to fix it.&lt;/p&gt;&lt;p&gt;What I learned is that there&#39;s a setting in &lt;code&gt;/etc/sysctl.conf&lt;/code&gt; called &lt;code&gt;vm.swappiness&lt;/code&gt; that controls to what level the Linux kernel should use disk based virtual memory from 1-100.&lt;/p&gt;&lt;p&gt;In Ubuntu, this is set to 60 by default, which roughly translates to 60% of all virtual memory being disk based, and therefore, slow.&lt;/p&gt;&lt;p&gt;To change the value simply edit the file (e.g. &lt;code&gt;gksu gedit /etc/sysctl.conf&lt;/code&gt;) and add the line &lt;code&gt;vm.swappiness = 1&lt;/code&gt; (change &lt;code&gt;1&lt;/code&gt; to what you think is appropriate) - the change will take effect on next reboot.&lt;/p&gt;&lt;p&gt;If you want the effect now, you can run &lt;code&gt;sudo sysctl vm.swappiness=1&lt;/code&gt; in a terminal.&lt;/p&gt;&lt;p&gt;A very welcome effect of this change is that Nautilus is now many, many, many times faster!&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Wine integration in Nautilus</title>
    <link href="https://staging.cybolic.me/posts/wine-integration-in-nautilus" />
    <updated>2009-10-13T02:46:21Z</updated>
    <id>https://staging.cybolic.me/posts/wine-integration-in-nautilus</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/vineyard.jpg" />
    <content type="html">&lt;p&gt;As very few people apart from &lt;a href=&quot;http://yokozar.org/blog/&quot; title=&quot;Scott Rotchie&quot;&gt;Scott Ritchie&lt;/a&gt; probably know, I&#39;ve been working on integrating Wine more closely with Gnome for a few months now, and though I&#39;ve had a break from the development for some time, I managed to finally create a little more for the project today.&lt;/p&gt;&lt;p&gt;More specifically, I made the first version of the integration of Wine&#39;s preferences into Nautilus.&lt;/p&gt;&lt;p&gt;So far, this is what&#39;s possible:&lt;img src=&quot;https://staging.cybolic.me/posts/r4qmhlQecs-426.jpeg&quot; /&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/soRCfXiy9E-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;Now, Wine also has options for setting some options for DirectSound emulation and library (DLL) overrides for a specific program, and while I intend to add support for library overrides, I don&#39;t think I&#39;ll include the options for setting DirectSound emulation levels. The reasons for this are that, first of all, the options would take up a lot of space visually and make the usually small properties dialog huge, but more importantly, I&#39;ve never seen any howto, guide or anything where a program would work better after toggling DirectSound emulation or changing the bit depth of the audio, so I&#39;m assuming that those options are pretty safe to exclude.&lt;/p&gt;&lt;p&gt;If you want this on your own system, this is what you have to do (this will be much easier soon as Scott is in the process of packaging this stuff up for Ubuntu):&lt;/p&gt;&lt;p&gt;We&#39;ll be needing two things: My Wine library for Python and the properties file for Nautilus and we&#39;ll be getting both from bzr, so if you don&#39;t have bzr installed you should do a &lt;strong&gt;sudo aptitude install bzr&lt;/strong&gt; (if you are on Ubuntu or another Debian based system) before doing the next steps.&lt;/p&gt;&lt;p&gt;First, let&#39;s get all the files from the bzr project: &lt;code&gt;bzr branch lp:~ubuntu-wine/+junk/wine-helper&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Next, we&#39;ll install the Wine library for Python (UPDATE: There&#39;s a debian package further down the page, if you prefer that route): &lt;code&gt;sudo cp -R wine-helper/wine /usr/lib/python2.6/wine&lt;/code&gt;&lt;/p&gt;&lt;p&gt;And finally we&#39;ll install the Wine properties page for Nautilus: &lt;code&gt;sudo cp wine-helper/wine-property-page.py /usr/lib/nautilus/extensions-2.0/python/&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Now everything is installed and you can either log out and in again or restart Nautilus by pressing Alt+F2 and typing &lt;strong&gt;nautilus -q&lt;/strong&gt; for the changes to have effect.&lt;/p&gt;&lt;p&gt;Let me know how things went :)&lt;/p&gt;&lt;p&gt;UPDATE: For those of you that prefer not to &amp;quot;hack&amp;quot; your system, say by copying files directly into the directory of a specific Python version, I&#39;ve made a deb package of the Wine library. &lt;a href=&quot;http://dl.getdropbox.com/u/278272/Linux/python-wine_0.1_all.deb&quot;&gt;It&#39;s available here.&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Launchpad and PPA - here we go!</title>
    <link href="https://staging.cybolic.me/posts/launchpad-and-ppa-here-we-go" />
    <updated>2009-10-13T17:12:42Z</updated>
    <id>https://staging.cybolic.me/posts/launchpad-and-ppa-here-we-go</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/vineyard.jpg" />
    <content type="html">&lt;p&gt;So, after having build a debian package of python-wine, I thought it would be an easy thing to set up a PPA and start actually distributing my work on the Wine/Gnome integration... Well, turns out it was a bit trickier than I thought and I consequently had to rebuild the python-wine package from scratch, but at least it should now follow the Ubuntu/Debian Packaging Guidelines! :D (though lintian still complains about stuff the guideline says is correct... hmm...)&lt;/p&gt;&lt;p&gt;Anywho! The PPA is set up and the first package is being build so now you should be able to add my PPA and have automatic updates to python-wine, and hopefully the rest of my work in the near future.&lt;/p&gt;&lt;p&gt;While I&#39;m on the subject I have to comment on how annoying the documentation is for building packages. I&#39;m sure it&#39;s just dandy if you are building a package from someone else&#39;s work and it&#39;s coded in a compiled language, but it only gives an example on how build a package of a python application, no word on how a module or extension would work, or how something like a Nautilus extension or other single-file-or-small-script-package would have to be build. I&#39;m sure I&#39;ll figure this stuff out eventually, but it&#39;s going to be by trial and error and by looking at other people&#39;s packages, not by reading documentation, which is sad. I hear good things about Ubuntu&#39;s &lt;a href=&quot;https://wiki.ubuntu.com/Quickly&quot;&gt;Quickly&lt;/a&gt; project, but so far it seems a bit too &amp;quot;magical&amp;quot; for me since there&#39;s very little documentation on what it actually does behind the scenes to make me trust that it won&#39;t make a mess of things for me instead. Of course, I could stop complaining and publish some documentation instead, but to be honest I don&#39;t fee I know enough of the subject yet to do so... maybe in the future.&lt;/p&gt;&lt;p&gt;Anyway, enough rambling! &lt;a href=&quot;https://launchpad.net/~cybolic/+archive/ppa&quot;&gt;Here&#39;s my PPA.&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>More tools for Wine management</title>
    <link href="https://staging.cybolic.me/posts/more-tools-for-wine-management" />
    <updated>2009-10-14T03:35:03Z</updated>
    <id>https://staging.cybolic.me/posts/more-tools-for-wine-management</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/vineyard.jpg" />
    <content type="html">&lt;p&gt;Okay, this is actually fairly exciting... I&#39;ve packaged and uploaded nautilus-wine and wine-preferences to my PPA, so now you can install both the Nautilus Wine properties page I showed two posts ago, and my fancy &amp;quot;new&amp;quot; (it&#39;s been in ubuntu-wine&#39;s bzr forever) graphical configuration tool for Wine directly from your package manager (if you&#39;re running Ubuntu).&lt;/p&gt;&lt;p&gt;Yes, this is the so called gtk-port of winecfg that so many have been dreaming about for the last couple of years, only this one also throws in bottle support (though you have to launch it with &amp;quot;--enable-bottles&amp;quot; to use that the first time, after you&#39;ve created a bottle it figures you might want to use the functionality again by default), running and uninstalling installed Windows programs and a few commonly used &amp;quot;tricks&amp;quot; like setting how much video card ram you have or how offscreen images should be rendered (FBO, PixelBuffer or BackBuffer) all nicely wrapped in a Gnome System Tools -like program.&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/984PRgaXpS-456.jpeg&quot; /&gt;&lt;/p&gt;&lt;p&gt;Next on the packaging schedule are the helper tools that offer to install Wine the first time you try to open a Windows executable without Wine installed, scans the file for virus and offer to set the executable bit for you, oh and also does this for Java and .desktop files, more Nautilus integration in the form of the &amp;quot;Run in new Wine configuration&amp;quot; right click option you may have noticed earlier and the command line version of wine-preferences which should come very handy for you script makers out there.&lt;/p&gt;&lt;p&gt;On the development front I think I still need to figure out a clever way of exposing the bottle structure to Nautilus. As it is now, bottles are saved as fake home directory in ~/.winebottles/$BOTTLENAME - why the fake home directory you ask? Since I discovered that Windows programs just love to put stuff in My Documents, which defaults to the users home, so this is to avoid programs spamming your home folder, unfortunately it also means that if you open ~/.winebottles/$BOTTLENAME in Nautilus you won&#39;t see anything since everything is in hidden directories. I&#39;m thinking some kind of symlinking could make this accessible, but I still have to work out the details.&lt;/p&gt;&lt;p&gt;So, now I&#39;m off to bed (finally) so I&#39;m ready for helping my beautiful Greek fiancee move into her new flat here in Denmark tomorrow :D - which is bad news for the rest of you since this means no time for coding or packaging the next couple of days ;)&lt;/p&gt;&lt;p&gt;Cheerios!&lt;/p&gt;&lt;p&gt;EDIT: Oh, almost forgot, in case you missed my last post, &lt;a href=&quot;https://launchpad.net/~cybolic/+archive/ppa&quot;&gt;my PPA is here&lt;/a&gt;.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Vineyard update</title>
    <link href="https://staging.cybolic.me/posts/vineyard-update" />
    <updated>2009-10-23T00:00:00Z</updated>
    <id>https://staging.cybolic.me/posts/vineyard-update</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/vineyard.jpg" />
    <content type="html">&lt;p&gt;Sorry for the lack of updates lately, lot&#39;s of stuff to take care of lately, but at least Vineyard is shaping up nicely! It took a bit longer than I expected to rewrite Vineyard, most of it was due to the code redesigning but the porting from Glade to code definitely also took longer than anticipated. What you can expect from the next version is much, much, much faster start up time, &amp;quot;lazy loading&amp;quot; of pages and better error handling. So far the only pages that need work are Drives and Programs - the last one needs some more redesign on the python-wine end as well, so it&#39;ll take a little while, but it should prove much faster when done (it already is). I&#39;ve reorganised the pages a bit, to hopefully make it easier to navigate.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Christmas release!</title>
    <link href="https://staging.cybolic.me/posts/christmas-release" />
    <updated>2009-12-24T17:21:15Z</updated>
    <id>https://staging.cybolic.me/posts/christmas-release</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/vineyard.jpg" />
    <content type="html">&lt;p&gt;This is just a quick post to tell you all that I&#39;ve updated wine-preferences in my PPA. There are lots of new goodies and a nice graphical overhaul. More details later, now for the eating!&lt;/p&gt;&lt;p&gt;Remember, you can install all the Vineyard packages (wine-preferences, nautilus-wine and python-wine) by running the following commands:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; add-apt-repository&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ppa:cybolic/ppa&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; aptitude&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; update&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; aptitude&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; wine-preferences&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; nautilus-wine&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
  </entry>
  <entry>
    <title>Just a quick note about network connections</title>
    <link href="https://staging.cybolic.me/posts/just-a-quick-note-about-network-connections" />
    <updated>2010-03-14T19:15:29Z</updated>
    <id>https://staging.cybolic.me/posts/just-a-quick-note-about-network-connections</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;I&#39;ve been working on some new functionality for Vineyard and I needed to test if the user is connected to the internet or not. After some Google scouting I didn&#39;t come up with anything that did what I needed so I ended up writing this little function and thought it might be useful for others.&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; test_internet_connection&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;():&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;	info &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; subprocess&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;Popen&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;([&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;ifconfig&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;-a&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;],&lt;/span&gt;&lt;span style=&quot;color:#EE99A0;font-style:italic&quot;&gt; stdout&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;subprocess&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;PIPE&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;communicate&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;()[&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;	for&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; interface &lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; info&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;split&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;nn&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;):&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;		if&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;UP BROADCAST RUNNING&#39;&lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; interface &lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;inet addr:&#39;&lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; interface&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;			return&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; True&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;	return&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; False&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Internet connection... Vineyard... what could I be up to? Any guesses (or requests)?&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Vineyard: What&#39;s going on?</title>
    <link href="https://staging.cybolic.me/posts/vineyard-whats-going-on" />
    <updated>2010-03-19T21:24:23Z</updated>
    <id>https://staging.cybolic.me/posts/vineyard-whats-going-on</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/vineyard.jpg" />
    <content type="html">&lt;p&gt;After the hinting I did in my &lt;a href=&quot;http://cybolic.wordpress.com/2010/03/14/just-a-quick-note-about-network-connections/&quot;&gt;last post&lt;/a&gt; and the lack of any new features being released for Vineyard, I though I&#39;d let you people know what&#39;s actually going on with the development.&lt;/p&gt;&lt;p&gt;As some may have noticed, the last release had the Programs-page split into a separate file loaded as a plugin/module. This was done since the code for it is the largest piece of related code in Vineyard and it made sense to separate it, but also because I&#39;ve been wanting to make Vineyard more modular. The result of starting to split out the different pages into modules (and stumbling on to &lt;a href=&quot;http://www.jonobacon.org/2010/03/15/download-files-async-with-gio-and-python/&quot;&gt;Jono Bacon&#39;s recent post&lt;/a&gt;) however left me wishing that I had structured Vineyard differently from the start, so I sat down, did some thinking and decided to reprogram vinyard-preferences from scratch. Yup, that&#39;s right, from scratch.&lt;/p&gt;&lt;p&gt;I know this means that you&#39;ll have to wait somewhat longer for the next version, but fear not, I will still release bug fixes when necessary for the 1.4 series. What this also means is that the next version (the one brewing on my harddrive) loads completely asynchronously (in less than a second on my computer right now), has every page split into modules/plugins that load on demand, supports loading parts of the interface into other programs as widgets (!), supports theming Wine (including installing themes from archive files), has rudimentary support for colour-settings, and.... you guessed it Luke... basic AppDB integration. It also means that maintaining and extending Vineyard should be a lot easier in the future, good news for me.&lt;/p&gt;&lt;p&gt;So, sorry to keep you waiting, but I promise I&#39;m cooking up something good ;) Oh, and feel free to keep requesting functionality!&lt;/p&gt;&lt;p&gt;Before I sign out I&#39;ll leave you with a quick screenshot of the new (possible) layout of some of the options:&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://staging.cybolic.me/posts/TKtkrrO4XH-447.jpeg&quot; /&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Thoughts on The Piracy Logic Problem</title>
    <link href="https://staging.cybolic.me/posts/thoughts-on-the-piracy-logic-problem" />
    <updated>2010-03-25T20:13:08Z</updated>
    <id>https://staging.cybolic.me/posts/thoughts-on-the-piracy-logic-problem</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/tech.jpg" />
    <content type="html">&lt;p&gt;I just thought of something that I can&#39;t get to make sense...&lt;/p&gt;&lt;p&gt;&lt;em&gt;DISCLAIMER: I am in no way a lawyer, just a confused consumer.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;It is (in Denmark at least, and I assume in most other countries) legal to make a safety copy of a legally purchased movie or album for yourself. I presume it is also legal to get a friend to make the copy for you, provided they don&#39;t make one for themself as well (quite likely to happen given the time and computing power it takes to make a digital copy / transcoding) But, it is not legal for me to &lt;em&gt;download&lt;/em&gt; a &amp;quot;safety copy&amp;quot; of a movie or album I have legally purchased.&lt;/p&gt;&lt;p&gt;How exactly is that different from getting a friend to make the copy, and how is it supposed to be proven that it was actually downloaded? And what about if I make backups of all my movies and albums on my home computer and my physical collection then get stolen or my house burns down? Will it be assumed that everything was downloaded illegally and if not, am I even entitled to &lt;em&gt;keep&lt;/em&gt; my backups - and if not, why allow me to make backups in the first place?&lt;/p&gt;&lt;p&gt;Furthermore, even if it is proven that my collection was downloaded off the internet, how can it be proven that the copy I downloaded was not ripped from my own original (in the case that your backup-friend lives far away and sending the file is quicker than getting it physically - and, for the sake of argument, that your physical collection is nearer to your friend)?&lt;/p&gt;&lt;p&gt;Also, in the case of someone downloading something off BitTorrent, Rapidshare or another service - how can it be proven that the &amp;quot;leaked&amp;quot; copy didn&#39;t originate from, but wasn&#39;t spread by, the person downloading it? Isn&#39;t that still a personal backup, even though others &amp;quot;stole&amp;quot; copies of it?&lt;/p&gt;&lt;p&gt;I&#39;m having a great deal of trouble seeing how it&#39;s possible to separate legal from non-legal copies (except for the case of watermarks, but even then you have the possible after-market sale to deal with) and how you can prove that any downloading/ripping/transcoding is illegal, provided that backups are legal - and I strongly believe they should keep being legal! I don&#39;t want to lose my copy of Ghostbusters to scratches on the disc :(.&lt;/p&gt;&lt;p&gt;What are your thoughts on the subject?&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>&quot;Fixing&quot; a Banshee music database</title>
    <link href="https://staging.cybolic.me/posts/fixing-a-banshee-music-database" />
    <updated>2010-04-21T00:00:00Z</updated>
    <id>https://staging.cybolic.me/posts/fixing-a-banshee-music-database</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="audio" label="Audio"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/music.jpg" />
    <content type="html">&lt;p&gt;NOTE: This is a bit verbose in the description, but maybe you can learn something from the process. If you just want to know how to fix the Banshee database after changing user-name or moving your library to a different location, scroll down.&lt;/p&gt;&lt;p&gt;I recently reinstalled Ubuntu and in the process changed my user-name to my more commonly used &#39;cybolic&#39;, however after copying the &lt;code&gt;~/.config/banshee-1&lt;/code&gt; directory to my new home-dir, I realised that Banshee had all my music indexed by absolute path, meaning that it was looking for my old home-dir and so couldn&#39;t play any tracks.&lt;/p&gt;&lt;p&gt;To fix it I assumed I would have to do a search and replace on its database, but I needed the filetype, so a quick &lt;code&gt;file ~/.config/banshee-1/banshee.db&lt;/code&gt; later I now knew that it was in SQLite 3.x format.&lt;/p&gt;&lt;p&gt;Now on to a tool to do the search and replace on the database...&lt;/p&gt;&lt;p&gt;Ubuntu has a tool in its repos called &lt;code&gt;sqlitebrowser&lt;/code&gt;, that sounded about right, so I installed it and yes, it allowed me to browse the database and perform SQL queries - just what I needed.&lt;/p&gt;&lt;p&gt;So, long story short, to change the location of your music files in the Banshee database, here&#39;s what you do (close Banshee first):&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; aptitude&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; sqlitebrowser&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sqlitebrowser&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ~/.config/banshee-1/banshee.db&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now change to the tab labelled &amp;quot;Execute SQL&amp;quot; and write something like the following:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; CoreTracks &lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; Uri &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; replace&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(Uri, &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;/home/&amp;#x3C;olduser&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;/home/&amp;#x3C;newuser&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;update&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; PodcastEnclosures &lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; LocalPath &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; replace&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(LocalPath, &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;/home/&amp;#x3C;olduser&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;/home/&amp;#x3C;newuser&gt;&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You are now done and can start Banshee again :)&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>A quiet little game</title>
    <link href="https://staging.cybolic.me/posts/a-quiet-little-game" />
    <updated>2010-04-29T17:38:57Z</updated>
    <id>https://staging.cybolic.me/posts/a-quiet-little-game</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="games" label="Games"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/osmos.jpg" />
    <content type="html">&lt;p&gt;Normally I blog about Wine and Vineyard, but while the meaning behind these two projects are getting an existing Windows program running on Linux, thankfully this is not always necessary.&lt;/p&gt;&lt;p&gt;Now, I&#39;m not much of a gamer, when I actually play something it&#39;s usually not for more than an hour, at most. I tend to launch a game, play it for about 10 minutes and then get back to something else, so most of the Hollywood fps-shooter/rpg/mmo-hybrids that are released these days never really get the attention they need from me for their mood and storyline to really grab me, luckily I stumbled upon another type of game a while back - for Windows.&lt;/p&gt;&lt;p&gt;You may have heard of or tried the initial stages of Spore or the simple fun of Flow and the game I&#39;m talking about is very much in the same category as these, but in my opinion, a much more capturing and relaxing experience. The good news is that even though this was previously very possible to run through Wine, there is now a dedicated, very-well-ported, Linux version!&lt;/p&gt;&lt;p&gt;The game is, if you haven&#39;t guessed it: Osmos.&lt;/p&gt;&lt;p&gt;In Osmos you play a small blob (or mote) that has to eat smaller blobs in order to grow and become the largest in the &amp;quot;blobiverse&amp;quot; and while this idea in itself isn&#39;t new, the half-cosmos, half-biology visuals and the great galaxy inspired physics certainly are and give the game a great twist, placing it both in the tranquil, meditative genre and at the same time, due to the physics, the other intelligent blobs and depending on how you play, in the same kind of hectic, tilt-your-entire-body-to-move-your-avatar frenzy that is usually associated with action games. Another point worth mentioning is that Osmos contains music by several artists, with the name of the artist and the track printed at the bottom of the screen at all times. This is a great move by Hemisphere Games and is a welcome show of respect towards musicians that is seldom seen in the game world.&lt;/p&gt;&lt;p&gt;All in all, while getting Windows-only games to run on Linux is great, supporting properly ported games and programs (and trust me, this is a fantastic port) is extremely important if Linux is to be taken seriously on the desktop and helps prove to companies that Linux is worth supporting.&lt;/p&gt;&lt;p&gt;If you haven&#39;t done so already, hurry up and download the Osmos demo and if you like what you see, purchase a copy and support a company that has done a great job at porting a great game to a great platform.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.hemispheregames.com/Osmos/&quot;&gt;Osmos website is here.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;UPDATE: I forgot to link to the &lt;a href=&quot;http://createdigitalmusic.com/2009/09/24/music-physics-space-in-perfect-fusion-interview-creators-of-game-osmos/&quot;&gt;article that actually introduced me to Osmos&lt;/a&gt;. It&#39;s a good read, so don&#39;t be afraid of the length.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Facebook chat flaw?</title>
    <link href="https://staging.cybolic.me/posts/facebook-chat-flaw" />
    <updated>2010-06-03T08:29:21Z</updated>
    <id>https://staging.cybolic.me/posts/facebook-chat-flaw</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/facebook.jpg" />
    <content type="html">&lt;p&gt;I just received a chat message from someone on Facebook whom I am not friends with, and went to investigate... Though I couldn&#39;t find anything online, and I&#39;m not going to test it by spamming random people, it seems that if you add a buddy/friend in your desktop chat client with a username such as &lt;code&gt;-PROFILEID@chat.facebook.com&lt;/code&gt; (and &lt;code&gt;profileid&lt;/code&gt;s can be read from any profile) you&#39;ll be able to chat to that person, &lt;em&gt;even if you are not friends&lt;/em&gt;!&lt;/p&gt;&lt;p&gt;This might only work if the person you are chatting up also uses a desktop client, since Facebook did not store the message I received, but it&#39;s still a flaw - especially considering that adding a person from &lt;code&gt;UNIQUENAME@chat.facebook.com&lt;/code&gt; clearly claims that you are not authorised, so they do have some security in place.&lt;/p&gt;&lt;p&gt;&lt;em&gt;sigh&lt;/em&gt; ...when will Google free up Buzz from GMail so we can start migrating?&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>How to get sound in Shadowgrounds in Ubuntu Maverick x64</title>
    <link href="https://staging.cybolic.me/posts/how-to-get-sound-in-shadowgrounds-in-ubuntu-maverick-x64" />
    <updated>2010-10-01T23:55:39Z</updated>
    <id>https://staging.cybolic.me/posts/how-to-get-sound-in-shadowgrounds-in-ubuntu-maverick-x64</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="games" label="Games"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;Yeah, so here we go, my third issue with the Linux port of Shadowgrounds... anyway, it turned out to not be that difficult to fix.&lt;/p&gt;&lt;p&gt;Shadowgrounds only really plays well with OSS, so you should run it through aoss, but that won&#39;t work in 64 bit. So here&#39;s the solution:&lt;/p&gt;&lt;p&gt;First, install &lt;code&gt;alsa-oss&lt;/code&gt; (&lt;code&gt;sudo apt-get install alsa-oss&lt;/code&gt;), then download this archive, extract it your game directory and run &lt;code&gt;shadowgrounds-x64&lt;/code&gt; from now on - easy as that. &lt;a href=&quot;http://dl.dropbox.com/u/278272/Linux/shadowgrounds-x64-fix.tar.bz2&quot;&gt;Download me&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you prefer to do this by hand, first download the &lt;code&gt;alsa-oss&lt;/code&gt; package for i386 (&lt;a href=&quot;http://packages.ubuntu.com/maverick/i386/alsa-oss/download&quot;&gt;from here&lt;/a&gt;), extract it (&lt;code&gt;dpkg --extract alsa-oss_1.0.17-4_i386.deb alsa-oss&lt;/code&gt;) and copy the files in &lt;code&gt;usr/lib/&lt;/code&gt; to &lt;code&gt;/usr/lib32/&lt;/code&gt; (&lt;code&gt;sudo cp alsa-oss/usr/lib/* /usr/lib32/&lt;/code&gt;). Now when you want to run the game, you should run it as:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;LD_PRELOAD&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;/usr/lib32/libaoss.so&quot;&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; aoss&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ./shadowgrounds-bin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
  </entry>
  <entry>
    <title>Switch to bottom pane plugin for GEdit</title>
    <link href="https://staging.cybolic.me/posts/switch-to-bottom-pane-plugin-for-gedit" />
    <updated>2010-12-09T19:19:00Z</updated>
    <id>https://staging.cybolic.me/posts/switch-to-bottom-pane-plugin-for-gedit</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;So, I&#39;ve been reconsidering GEdit as a quick development environment, but I was really missing a way to switch to the bottom pane and back (for using the embedded terminal).&lt;/p&gt;&lt;p&gt;I couldn&#39;t find an existing plugin to do this, so I took a look at Elia Sarti&#39;s TabSwitch plugin - that uses Ctrl+Tab to switch tabs - and edited it to switch back and forth between the bottom pane and the editor view and I must say that GEdit has a rather comfortable work flow now :)&lt;/p&gt;&lt;p&gt;Plugin is &lt;a href=&quot;http://dl.dropbox.com/u/278272/Linux/gedit-focusbottompane.tar.bz2&quot;&gt;here&lt;/a&gt; for Gedit 2 and &lt;a href=&quot;https://dl.dropboxusercontent.com/u/278272/Linux/gedit3-focusbottompane.tar.bz2&quot;&gt;here&lt;/a&gt; for Gedit 3.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Find the 32bit deb package from your 64bit system</title>
    <link href="https://staging.cybolic.me/posts/find-the-32bit-deb-package-from-your-64bit-system" />
    <updated>2011-01-13T14:46:46Z</updated>
    <id>https://staging.cybolic.me/posts/find-the-32bit-deb-package-from-your-64bit-system</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/linux.jpg" />
    <content type="html">&lt;p&gt;I&#39;m sure I&#39;m not the only one that has had to install a 32bit version of some package to get a game or other program not designed for 64bit to work in 64bit Linux/Ubuntu/Debian and I&#39;m sure others will nod in agreement at how difficult it can be to find the 32bit version, especially if you need a bunch and don&#39;t really have the time to wade through packages.ubuntu.com (or packages.debian.org for that matter), so I&#39;ve cooked up a little Python script to find the URL for the 32bit version of a package for you.&lt;/p&gt;&lt;p&gt;It&#39;s &lt;a href=&quot;http://dl.dropbox.com/u/278272/Utils/apt-get-i386-package.py&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;You just run it with the name of the package you want to find as the first argument, like so:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;$&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ./apt-get-i386-package.py&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; libpulse0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;http://ppa.launchpad.net/ubuntu-audio-dev/ppa/ubuntu/pool/main/p/pulseaudio/libpulse0_0.9.22-0ubuntu1_i386.deb&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;See? Easy.&lt;/p&gt;&lt;p&gt;Also note that it found it in a PPA - it uses your package database, so everything you can theoretically install can be found in a 32bit version.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>GStreamer, MIDI (and Ubuntu)</title>
    <link href="https://staging.cybolic.me/posts/gstreamer-midi-and-ubuntu" />
    <updated>2011-04-26T02:41:57Z</updated>
    <id>https://staging.cybolic.me/posts/gstreamer-midi-and-ubuntu</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="audio" label="Audio"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/music.jpg" />
    <content type="html">&lt;p&gt;So, you have all your old MIDI files lying around and you decide to play them through Totem or another GStreamer based player. What happens? They sound... flat.&lt;/p&gt;&lt;p&gt;Ah, no problem you think, I&#39;ll just set up Timidity to use the neat soundfont I have lying around that sounds like my old SoundBlaster card and everything will be peachy, but no, GStreamer doesn&#39;t support soundfonts cause it doesn&#39;t use timidity but wildmidi - what to do?&lt;/p&gt;&lt;p&gt;Or: &lt;strong&gt;How to convert soundfonts to GUS patches for use in wildmidi/gstreamer.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There&#39;s a neat little tool called &lt;a href=&quot;http://alsa.opensrc.org/Unsf&quot;&gt;Unsf&lt;/a&gt; included in Greg Lee&#39;s gt - a stripped down version of Timidity - that can convert a soundfont to a GUS patch usable by wildmidi and therefore GStreamer, so let&#39;s get started with the conversion!&lt;/p&gt;&lt;p&gt;First, go to where you want the GUS patch (and its files) - this path shouldn&#39;t contain spaces - then download the latest version of gt (I hear there&#39;s a version 1.0, but 0.4 is the latest I can find):&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /where/you/want/the/GUS/files&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;wget&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ftp://ling.lll.hawaii.edu/pub/greg/gt-0.4.tar.gz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, let&#39;s extract it somewhere and build it:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;tar&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -xzf&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; gt-0.4.tar.gz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; gt-0.4&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;./configure&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; utils&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;make&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now, let&#39;s convert the soundfont to a GUS patch (remember to replace /path/to/your/soundfont.sf2 with the actual path to your soundfont):&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; ../../GUS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;./utils/unsf&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -F&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /path/to/your/soundfont.sf2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now we need to fix the config file that unsf wrote to include the path to where your GUS patch is:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -e&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;dir &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$PWDn&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; &amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; wildmidi&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; cat&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;.cfg&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; &gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; wildmidi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now let&#39;s &amp;quot;install&amp;quot; that config file:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; cp&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; wildmidi&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /etc/wildmidi.cfg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;There! You&#39;re done!&lt;/p&gt;&lt;p&gt;For a nice athentic old school midi sound, I recommend the following soundfont (you need to register to download though): http://www.sf2midi.com/soundfonts/file-detail/roland-sc-55-sf2-3033.html&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Howto: Deus Ex: Human Revolution in Ubuntu/Linux</title>
    <link href="https://staging.cybolic.me/posts/howto-deus-ex-human-revolution-in-ubuntu-linux" />
    <updated>2012-01-07T00:09:43Z</updated>
    <id>https://staging.cybolic.me/posts/howto-deus-ex-human-revolution-in-ubuntu-linux</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="linux" label="Linux"/>
    <category term="vineyard" label="Vineyard"/>
    <category term="games" label="Games"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/vineyard_deusexhr.jpg" />
    <content type="html">&lt;p&gt;I just bought &lt;em&gt;Deus Ex: Human Revolution&lt;/em&gt;, and if you did too, or are contemplating it, don&#39;t let the bad rating on WineHQ scare you off - it runs near perfectly. Now, the in-game tutorials are a bit wonky, but if you can live without those (I know I didn&#39;t have much of a problem without them), here&#39;s how you can install and run DE:HR in Ubuntu/Linux.&lt;/p&gt;&lt;p&gt;You are going to need &lt;a href=&quot;http://vineyardproject.org&quot;&gt;Vineyard&lt;/a&gt;, so install that first if you haven&#39;t already, also we are going to use the terminal a bit, but don&#39;t worry, it&#39;s not scary, just quicker.&lt;/p&gt;&lt;h2 id=&quot;first-off-lets-install-the-game&quot;&gt;First off, let&#39;s install the game.&lt;/h2&gt;&lt;p&gt;Do whatever you would normally do; run the installer from the DVD or download it from Steam - just make sure you do it in a new prefix in Vineyard.&lt;/p&gt;&lt;h2 id=&quot;secondly-install-a-custom-version-of-wine-with-rawinput2-patch&quot;&gt;Secondly, install a custom version of Wine (with rawinput2 patch).&lt;/h2&gt;&lt;p&gt;We&#39;re going to use one provided by &lt;a href=&quot;http://www.playonlinux.com/&quot;&gt;PlayOnLinux&lt;/a&gt;, so if you have &lt;em&gt;PlayOnLinux&lt;/em&gt; installed, just install Wine 1.3.34 rawinput2 from there, otherwise, either go to &lt;a href=&quot;http://www.playonlinux.com/wine/binaries/linux-x86/&quot;&gt;http://www.playonlinux.com/wine/binaries/linux-x86/&lt;/a&gt;, download the one called &lt;em&gt;PlayOnLinux-wine-1.3.34-rawinput2-linux-x86.pol&lt;/em&gt;, rename it to have a &lt;em&gt;.tar.bz2&lt;/em&gt; ending and then extract from it the folder called &amp;quot;&lt;em&gt;wineversion/1.3.34-rawinput2&lt;/em&gt;&amp;quot; to &lt;em&gt;$HOME/.local/share/wineversions/1.3.34-rawinput2&lt;/em&gt; - &lt;strong&gt;or run the following command&lt;/strong&gt;:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; $HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.local/share/wineversions&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;  wget&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -q&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -O&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;http://www.playonlinux.com/wine/binaries/linux-x86/PlayOnLinux-wine-1.3.34-rawinput2-linux-x86.pol&#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;  tar&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; --wildcards&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; --transform&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;s/wineversion///&#39;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; --bzip2&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -xvf&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -C&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; $HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.local/share/wineversions/&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;wineversion/*&#39;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;setup-vineyard-to-use-it&quot;&gt;Setup Vineyard to use it&lt;/h2&gt;&lt;p&gt;Now we need to edit the prefix configuration so Vineyard knows to run this version of Wine, so if you know where that directory is, just go and open the file &lt;em&gt;wrapper.cfg&lt;/em&gt;, otherwise open Vineyard Preferences, select the prefix and under &amp;quot;&lt;em&gt;Tools&lt;/em&gt;&amp;quot;, click &amp;quot;&lt;em&gt;Open Main Drive&lt;/em&gt;&amp;quot; and then navigate one directory up, there&#39;s your &lt;em&gt;wrapper.cfg&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;Add the following lines to this file:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_wine&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.local/share/wineversions/1.3.34-rawinput2/bin/wine&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_wineloader&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.local/share/wineversions/1.3.34-rawinput2/bin/wine&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_wineserver&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.local/share/wineversions/1.3.34-rawinput2/bin/wineserver&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_winedllpath&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.local/share/wineversions/1.3.34-rawinput2/lib/wine&quot;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;`&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Or, if you installed the Wine version through PlayOnLinux:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_wine&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.PlayOnLinux/wine/linux-x86/1.3.34-rawinput2/bin/wine&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_wineloader&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.PlayOnLinux/wine/linux-x86/1.3.34-rawinput2/bin/wine&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_wineserver&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.PlayOnLinux/wine/linux-x86/1.3.34-rawinput2/bin/wineserver&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;ww_winedllpath&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;$HOME&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/.PlayOnLinux/wine/linux-x86/1.3.34-rawinput2/lib/wine&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;done-or-do-you-have-sound&quot;&gt;Done! (or do you have sound?)&lt;/h2&gt;&lt;p&gt;Now you actually might be able to run &lt;em&gt;Deus Ex: Human Revolution&lt;/em&gt; just fine! For me though, I needed to go to &lt;em&gt;Vineyard Preferences&lt;/em&gt; again and make sure the &lt;em&gt;Deus Ex: Human Revolution&lt;/em&gt; launcher had &amp;quot;&lt;em&gt;Disable PulseAudio whilst running&lt;/em&gt;&amp;quot; checked on, and then it was smooth sailing.&lt;/p&gt;&lt;p&gt;Hope this little guide was helpful, comments are very welcome.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>I&#39;ve moved!</title>
    <link href="https://staging.cybolic.me/posts/i-ve-moved" />
    <updated>2012-03-19T01:08:56Z</updated>
    <id>https://staging.cybolic.me/posts/i-ve-moved</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/internet.jpg" />
    <content type="html">&lt;p&gt;This blog has moved!&lt;/p&gt;&lt;p&gt;The new url is &lt;a href=&quot;http://cybolic.me&quot; title=&quot;Cybolic.me&quot;&gt;http://cybolic.me&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;All comments are now transferred and while the new site still has a few issues, it works well enough for now.&lt;/p&gt;&lt;p&gt;Everyone update your bookmarks, feed sources, rolodexes and fridge magnet spell-outs!&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Mail Mirror on NAS</title>
    <link href="https://staging.cybolic.me/posts/mail-mirror-on-nas" />
    <updated>2021-04-17T12:08:56Z</updated>
    <id>https://staging.cybolic.me/posts/mail-mirror-on-nas</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="tech" label="Tech"/>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/tech.jpg" />
    <content type="html">&lt;h2 id=&quot;the-problem&quot;&gt;The problem&lt;/h2&gt;&lt;p&gt;In the past, I used to mirror my email accounts locally and use &lt;a href=&quot;https://notmuchmail.org/&quot;&gt;Notmuch&lt;/a&gt; with the &lt;a href=&quot;https://github.com/pazz/alot&quot;&gt;alot email client&lt;/a&gt;. Every email was tagged appropriately, I would only see the tags I wanted in &lt;code&gt;alot&lt;/code&gt; and it was generally a pretty smooth system that got me very, very close to &lt;a href=&quot;https://www.youtube.com/watch?v=z9UjeTMb3Yk&quot;&gt;inbox zero&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The problem was that this was only the case on my desktop PC. Every time I was out of the house or wanted to try out a new distro, the email I would see anywhere else was still a cluttered mess as the tagging was only local to that one machine.&lt;/p&gt;&lt;h2 id=&quot;the-solution&quot;&gt;The solution&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;Move from Notmuch tags to folders&lt;/li&gt;&lt;li&gt;Move the email mirroring off my main PC&lt;/li&gt;&lt;li&gt;(bonus) Get Notmuch back, but not locally&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;My NAS is by definition always on and - should I want - I can access it from anywhere in the world (though the setup I chose doesn&#39;t depend on this at all). This also provides me with a place to keep backups of email that I might need in the future, but serve no purpose taking up space on my email provider&#39;s drive.&lt;/p&gt;&lt;p&gt;So, with a solution planned, let&#39;s get started.&lt;/p&gt;&lt;h3 id=&quot;part-1-move-from-notmuch-tags-to-folders&quot;&gt;Part 1: Move from Notmuch tags to folders&lt;/h3&gt;&lt;p&gt;Tags are great, but we want every client to have access to organised email, so IMAP folders are the way to go here. &lt;a href=&quot;https://github.com/lefcha/imapfilter&quot;&gt;IMAPFilter&lt;/a&gt; is a pretty well-established tool for moving email around on IMAP servers; it provides a good amount of filter options for selecting those emails and the fact that its configuration is done in Lua allows us to customise the procedure anyway we like.&lt;/p&gt;&lt;h4 id=&quot;installing-imapfilter&quot;&gt;Installing IMAPFilter&lt;/h4&gt;&lt;p&gt;Since this is going to run on my NAS, a Docker container is the obvious way to go.&lt;/p&gt;&lt;p&gt;I&#39;ve prepared a &lt;a href=&quot;https://hub.docker.com/r/cybolic/imapfilter-isync&quot;&gt;Docker image for IMAPFilter&lt;/a&gt;. Normally, I would use &lt;a href=&quot;https://www.alpinelinux.org/&quot;&gt;Alpine Linux&lt;/a&gt; as a base, but &lt;code&gt;IMAPFilter&lt;/code&gt; is not yet in a stable release of Alpine (&lt;a href=&quot;https://pkgs.alpinelinux.org/packages?name=imapfilter&amp;amp;branch=edge&quot;&gt;it&#39;s in edge, so it should happen eventually&lt;/a&gt;), because of this, the Docker image uses &lt;code&gt;Debian&lt;/code&gt; as a base. This doesn&#39;t affect its use, but is good to know.&lt;/p&gt;&lt;p&gt;This image is set up to be able to run IMAPFilter on a schedule. Now, IMAPFilter &lt;em&gt;can&lt;/em&gt; stay connected to all defined IMAP accounts and listen for either &lt;code&gt;RECENT&lt;/code&gt; or &lt;code&gt;EXISTS&lt;/code&gt; events, which normally indicate that new mail has arrived. In theory, this would be the ideal way to run as we wouldn&#39;t have to keep polling the email server(s) and could just run our filters when needed. Unfortunately, many email providers only send these events once and only to one connected client, meaning IMAPFilter wouldn&#39;t get the notification if, for example, my email client on Android also happened to be connected at the time.&lt;/p&gt;&lt;p&gt;Instead, I&#39;m using &lt;a href=&quot;https://github.com/aptible/supercronic&quot;&gt;Supercronic&lt;/a&gt; to schedule IMAPFilter to be run every few minutes. I also set flags on messages that have already been seen by IMAPFilter so we don&#39;t have to check all mail in the inbox every time, but that&#39;s a setup detail for later.&lt;/p&gt;&lt;p&gt;I&#39;m using the following &lt;code&gt;crontab&lt;/code&gt; setup. You may chose to run less often, if you get less promotional email than I do:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Run every 2 minutes, starting from 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;0/2&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/sync.sh imapfilter&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;/workdir/sync.sh&lt;/code&gt; script can just be &lt;code&gt;export IMAPFILTER_HOME=/workdir/.imapfilter; imapfilter -c /workdir/.imapfilter/config.lua&lt;/code&gt;, but we&#39;ll return to that later.&lt;/p&gt;&lt;p&gt;Just create two bind mounts for Docker, mounting the crontab to &lt;code&gt;/etc/crontab&lt;/code&gt; and your configuration directory to &lt;code&gt;/workdir/.imapfilter&lt;/code&gt;:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --name&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; mail-imapfilter&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/confs/crontab&quot;,target=/etc/crontab,readonly&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/confs/imapfilter&quot;,target=/workdir/.imapfilter,readonly&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  cybolic/imapfilter-isync:latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This command is just to test and give a quick overview. Ideally you wouldn&#39;t run the &lt;code&gt;docker&lt;/code&gt; command like this, but use a &lt;a href=&quot;https://docs.docker.com/compose/compose-file/compose-file-v3/&quot;&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/a&gt; file or something like &lt;a href=&quot;https://www.portainer.io/&quot;&gt;Portainer&lt;/a&gt; instead.&lt;/p&gt;&lt;h4 id=&quot;setting-up-imapfilters-filters&quot;&gt;Setting up IMAPFilter&#39;s filters&lt;/h4&gt;&lt;p&gt;IMAPFilter filters are usually written directly in &lt;a href=&quot;https://www.lua.org/&quot;&gt;Lua&lt;/a&gt;, but I like to keep my &lt;code&gt;data&lt;/code&gt; separate from my &lt;code&gt;code&lt;/code&gt; and filter definitions definitely fall under &lt;code&gt;data&lt;/code&gt; for me. Instead, I wrote a small module that lets me write filters as Lua tables instead of code. This allows me to write some things more succinctly and also opens up the possibility to write an exporter for the filter rules, should I move away from IMAPFilter down the line.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://git.sr.ht/~cybolic/Dotfiles/tree/master/item/imapfilter/.imapfilter/_rules.lua&quot;&gt;Here&#39;s the module&lt;/a&gt; and here&#39;s an example of how I use it:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; rulesrunner.&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;run_rules&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(messages, {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;  -- PayPal Subscription receipts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  { subscription_paypal &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;    { match_subject &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;receipt.*to Dropbox&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;    { match_subject &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;receipt.*to Humble Bundle&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, contain_body &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;Humble Choice&quot; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  }, from &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; { contain_from &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;@paypal&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;}, move_to &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Official/Receipts/Subscription&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;  -- Google Play Subscription receipts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  { subscription_googleplay &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;    { contain_subject &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;receipt&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;    { contain_body &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;subscription&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  }, from &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; { contain_from &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Google Play&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, contain_subject &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Your Google Play&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;}, move_to &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Official/Receipts/Subscription&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;  -- Game purchases&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  { purchase_games &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;    { contain_from &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;@steampowered.com&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, contain_subject &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;Steam purchase&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;thank you&quot; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;} }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  }, move_to &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;Official/Purchase/Games&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;},&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;  -- Crowdfunding direct messages&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  { crowdfunding_messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;    { contain_from &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;@kickstarter.com&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, match_utf8_field &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;subject&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;response needed|sent you a message|new message&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;} }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  }, flag &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#ED8796&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;}, accounts.posteo)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Each rule in the main table passed to &lt;code&gt;run_rules&lt;/code&gt; is run in order and given the &lt;code&gt;messages&lt;/code&gt; table with any results from previous rules subtracted.&lt;/li&gt;&lt;li&gt;Each filter (e.g. &lt;code&gt;match_subject&lt;/code&gt;) is logically ANDed with the rest in the rule.&lt;/li&gt;&lt;li&gt;Multiple filters of the same type can be defined by providing their values in a table (e.g. &lt;code&gt;contain_subject = { &amp;quot;Hello&amp;quot;, &amp;quot;World&amp;quot; }&lt;/code&gt;) and are ANDed.&lt;/li&gt;&lt;li&gt;Filters that take more than one argument (like &lt;code&gt;match_field&lt;/code&gt; and &lt;code&gt;match_utf8_field&lt;/code&gt;) have their arguments defined in a table.&lt;/li&gt;&lt;li&gt;Two custom matchers, &lt;code&gt;match_utf8_field&lt;/code&gt; and &lt;code&gt;match_utf8_body&lt;/code&gt; decode Base64-encoded UTF8 text before matching (necessary for a lot of modern email).&lt;/li&gt;&lt;li&gt;The &lt;code&gt;move_to&lt;/code&gt; key triggers moving the matches to the given destination (the account to move to is given in the final argument to &lt;code&gt;run_rules&lt;/code&gt;). &lt;code&gt;delete&lt;/code&gt; and &lt;code&gt;flag&lt;/code&gt; are also supported.&lt;/li&gt;&lt;li&gt;The returned value is a table of all matches so I can subtract them from &lt;code&gt;messages&lt;/code&gt; so the next &lt;code&gt;run_rules&lt;/code&gt; block skips them.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you want to do the same filtering without my module, this would be the code for just the PayPal example above:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;local&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; results&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;local&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; subresults&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;-- PayPal Subscription receipts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;local&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; _messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt; messages&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;contain_from&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;@paypal&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;-- for Dropbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;subresults &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt; _messages&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;match_subject&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;receipt.*to Dropbox&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;_messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; _messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; subresults&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;results &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; Set&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(subresults)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;-- for Humble Choice&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;subresults &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt; _messages&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;match_subject&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;receipt.*to Humble Bundle&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt; _messages&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;contain_body&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;Humble Choice&quot;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;_messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; _messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; subresults&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;results &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; results &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; subresults&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;move_messages&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(accounts.posteo[&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;Official/Receipts/Subscription&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;])&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Personally, I find the table version easier to read.&lt;/p&gt;&lt;p&gt;At the end of the filtering, I add a &lt;code&gt;filtered&lt;/code&gt; flag to all messages that were matched so they aren&#39;t processed next time IMAPFilter runs:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt;results&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;add_flags&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;({ &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;Filtered&#39; &lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;})&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And I get the initial list of messages to process as so (messages from the last 24 hours that haven&#39;t been processed):&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;local&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; messages &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; (accounts.posteo.&lt;/span&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt;INBOX&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;is_newer&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; accounts.gmail.&lt;/span&gt;&lt;span style=&quot;color:#EED49F;font-style:italic&quot;&gt;INBOX&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;is_newer&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;)):&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;has_unkeyword&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&#39;Filtered&#39;&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can find my full setup and rules &lt;a href=&quot;https://git.sr.ht/~cybolic/Dotfiles/tree/master/item/imapfilter/.imapfilter&quot;&gt;here&lt;/a&gt;. Do note that this is the first time I&#39;ve written anything in Lua, so this setup is not necessarily production quality, but it works for my use. The files in that repo are also not the exact ones I use on my NAS; these are my local dotfiles for my main PC, so consider it more of a staging area.&lt;/p&gt;&lt;h3 id=&quot;part-2-move-the-email-mirroring-off-my-main-pc-setting-up-isync-mbsync&quot;&gt;Part 2: Move the email mirroring off my main PC (setting up isync / mbsync)&lt;/h3&gt;&lt;p&gt;The Docker image used above also has &lt;a href=&quot;https://isync.sourceforge.io/&quot;&gt;isync&lt;/a&gt; (also known as &lt;code&gt;mbsync&lt;/code&gt;) installed, so we can just throw a config file in there and add it to the &lt;code&gt;crontab&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;I&#39;ve set this up to do the synchronisation in stages:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Every 2 minutes: The inbox gets synced&lt;/li&gt;&lt;li&gt;Every 7 minutes: Sync mail sorted by IMAPFilter into folders that I care about every&lt;/li&gt;&lt;li&gt;Every 15 minutes: A full sync of all email&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You&#39;ll see that IMAPFilter runs every two minutes (:00, :02, etc.) and isync runs every 2 + 1 minutes (:01, :03, etc.). This gives IMAPFilter time to sort the email before isync fetches it.&lt;/p&gt;&lt;p&gt;&lt;code&gt;mbsyncrc&lt;/code&gt;:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Generic defaults&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Create&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; Slave&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;SyncState&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; *&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;CopyArrivalDate&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; yes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Accounts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;IMAPAccount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;CertificateFile&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /etc/ssl/certs/ca-certificates.crt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;SSLType&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; IMAPS&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Host&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo.de&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;User&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; username@posteo.net&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;PassCmd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/get_passwd.sh&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;IMAPStore&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-remote&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Account&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;MaildirStore&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-local&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# The trailing &quot;/&quot; is important&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Path&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/data/posteo-account/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Inbox&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/data/posteo-account/inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Subfolders&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; Verbatim&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Channels&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Master&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-remote:INBOX&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Slave&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-local:inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Sync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-sorted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Master&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-remote:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Slave&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-local:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Patterns&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !archived&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !drafts&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !sent&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !trash&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !Inbox&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !&quot;Unimportant*&quot;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !&quot;Official/Backups*&quot;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; !&quot;Promotional*&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Sync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-non-urgent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Master&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-remote:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Slave&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-local:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Patterns&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;Unimportant*&quot;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;Official/Backups*&quot;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;Promotional*&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Sync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-archived&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Master&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-remote:Archived&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Slave&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-local:archived&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Sync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-sent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Master&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-remote:Sent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Slave&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-local:sent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Sync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-drafts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Master&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-remote:Drafts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Slave&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-local:drafts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Sync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-trash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Master&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-remote:Trash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Slave&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; :posteo-local:trash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Sync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Groups&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Group&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Group&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; sorted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-sorted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Group&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; full-without-inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-non-urgent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-drafts&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-sent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-trash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;Channel&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; posteo-archived&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;crontab&lt;/code&gt;:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Run every 2 minutes, starting from 0&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;0/2&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/sync.sh imapfilter&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Run every 2 minutes, starting from 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;1/2&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/sync.sh isync inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Run every 7 minutes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;*/7&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/sync.sh isync sorted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# Run every 15 minutes&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;*/15&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/sync.sh isync full-without-inbox&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;sync.sh&lt;/code&gt;:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F5BDE6;font-style:italic&quot;&gt;#!/usr/bin/env bash&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#EE99A0;font-style:italic&quot;&gt;$1&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;isync&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; ]];&lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt; then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;  mbsync&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; --config&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/.mbsyncrc&lt;/span&gt;&lt;span style=&quot;color:#EE99A0;font-style:italic&quot;&gt; $2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; [[&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#EE99A0;font-style:italic&quot;&gt;$1&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;imapfilter&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; ]];&lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt; then&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;  export&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; IMAPFILTER_HOME&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;/workdir/.imapfilter&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;  imapfilter&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -c&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /workdir/.imapfilter/config.lua&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;fi&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Our Docker setup should now look something like this:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --name&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; mail-imapfilter&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/confs/crontab&quot;,target=/etc/crontab,readonly&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/confs/imapfilter&quot;,target=/workdir/.imapfilter,readonly&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/confs/mbsyncrc&quot;,target=/workdir/.mbsyncrc,readonly&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/email/storage&quot;,target=/workdir/data&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  cybolic/imapfilter-isync:latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;part-3-get-notmuch-back-but-not-locally&quot;&gt;Part 3: Get Notmuch back, but not locally&lt;/h3&gt;&lt;p&gt;Even though I&#39;m no longer using Notmuch to sort my email, that doesn&#39;t mean it&#39;s not still a great program for very quickly searching one&#39;s email. Since Notmuch reads through all the email files, it&#39;s not really something you&#39;d want reading the files over a networked connection to your NAS. Instead, it&#39;s much faster to run an instance of Notmuch on your NAS, let that create it&#39;s database and then let your local Notmuch instance just use that database.&lt;/p&gt;&lt;p&gt;For that, I&#39;ve created another Docker image, &lt;code&gt;cybolic/notmuch&lt;/code&gt;. Just like the previous one, it uses Supercronic, so you can set it up to run Notmuch every 30 minutes or so, depending on how fresh you want your search results.&lt;/p&gt;&lt;p&gt;Dockerfile:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;docker&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; run&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -d&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --name&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; mail-imapfilter&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/confs/crontab&quot;,target=/etc/crontab,readonly&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/confs/notmuch&quot;,target=/workdir/notmuch-config,readonly&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  --mount&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; type=bind,source=&quot;/path/to/your/email/storage&quot;,target=/workdir/data&lt;/span&gt;&lt;span style=&quot;color:#F5BDE6&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;  cybolic/notmuch:latest&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;crontab:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;# 15 and 45 past&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt;15/30&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#F5A97F&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; notmuch new&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;notmuch-config:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#EED49F&quot;&gt;database&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;path&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;/workdir/data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#EED49F&quot;&gt;user&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;Christian Dannie Storgaard&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;primary_email&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;address@host.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;other_email&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;semicolon@separated.com&lt;/span&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;;list@of.com;other@addresses.com&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#EED49F&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;tags&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;new&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;ignore&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;/[.]*.(off|old|bak)$/&lt;/span&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;;/[.]*.json$/;.lock;/.*[.]mbsyncstate.*$/;.uidvalidity&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#EED49F&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;exclude_tags&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;deleted&lt;/span&gt;&lt;span style=&quot;color:#939AB7;font-style:italic&quot;&gt;;spam;trash;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#EED49F&quot;&gt;maildir&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;synchronize_flags&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color:#EED49F&quot;&gt;index&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;headers.List&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;List-Id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Everything will just work as long as your local Notmuch config file&#39;s &lt;code&gt;path&lt;/code&gt; variable points to the same files as your NAS instance uses. My email storage is mounted using NFS, so is set to &lt;code&gt;/mnt/nas-mail&lt;/code&gt; in the local Notmuch config.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;That&#39;s it!&lt;/strong&gt; Your email is now sorted, backed up, searchable and available from your NAS.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>Installing Arch for my use</title>
    <link href="https://staging.cybolic.me/posts/installing-arch-for-my-use" />
    <updated>2022-04-06T19:09:50Z</updated>
    <id>https://staging.cybolic.me/posts/installing-arch-for-my-use</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="tech" label="Tech"/>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/tech.jpg" />
    <content type="html">&lt;h2 id=&quot;or-how-i-learned-to-re-install-without-thinking&quot;&gt;...or, how I learned to re-install without thinking&lt;/h2&gt;&lt;p&gt;I recently wanted to re-install my Arch Linux setup due to a couple of hard-to-debug issues that had cropped up after switching from NVIDIA to AMD for my GPU. What I really didn&#39;t want, however, was to spend hours getting back to the setup I had previously, so this time, I dove into the new official installer, &lt;a href=&quot;https://python-archinstall.readthedocs.io/&quot;&gt;arch-install&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Now, the &lt;code&gt;arch-install&lt;/code&gt; part of this whole thing is actually pretty simple. &lt;code&gt;arch-install&lt;/code&gt; lets you set up configuration files from within your existing installation, so you don&#39;t have to make hard choices while you&#39;re in the bare environment of the installer image.&lt;/p&gt;&lt;p&gt;To do this, install &lt;code&gt;arch-install&lt;/code&gt; using your prefered method - the package name is &lt;code&gt;archinstall&lt;/code&gt; - and then just run the following and go through the options:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;sudo&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; archinstall&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; --dry-run&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You&#39;ll end up with three configuration files that you can edit to your preference and put on a separate partition of your install media (e.g. USB stick) to pass to &lt;code&gt;arch-install&lt;/code&gt; when you&#39;re ready to install. This takes care of the basics of partitioning your drive, installing a bootloader, setting up your network, sound and graphics drivers, and installing the base packages for your choice of system (minimal Xorg, KDE, Gnome, etc.).&lt;/p&gt;&lt;p&gt;For my use, I let &lt;code&gt;arch-install&lt;/code&gt; pick its default partition layout and then tweaked the file afterwards so it didn&#39;t use the entirety of my 1TB NVMe drive for the root system.&lt;/p&gt;&lt;p&gt;What follows is the general setup of the system. This will vary based on what you need for your system, but for me, it boils down to the following list, which I&#39;ve created scripts for:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall/tree/main/item/setup-system.sh&quot;&gt;setup-system.sh&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Update the pipewire install to use wireplumber (not needed on &lt;code&gt;archinstall&lt;/code&gt; &amp;gt; 2.3.2)&lt;/li&gt;&lt;li&gt;Set up sudo for my user (&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall/tree/main/item/config/sudoers.example&quot;&gt;example config file in repo&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Add my NAS to &lt;code&gt;/etc/hosts&lt;/code&gt; (&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall/tree/main/item/config/hosts.example&quot;&gt;example config file in repo&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Add my NAS mounts to &lt;code&gt;/etc/fstab&lt;/code&gt; (&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall/tree/main/item/config/fstab.example&quot;&gt;example config file in repo&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall/tree/main/item/setup-amdgpu.sh&quot;&gt;setup-amdgpu.sh&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add the Vulkan packages for my AMD GPU&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall/tree/main/item/setup-ecryptfs.sh&quot;&gt;setup-ecryptfs.sh&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Set up an encrypted directory in my home directory&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall/tree/main/item/setup-packages.sh&quot;&gt;setup-packages.sh&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Install the &lt;code&gt;paru&lt;/code&gt; pacman helper and various packages I use&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you need any of the above functionality, feel free to take a look at these scripts (&lt;a href=&quot;https://git.sr.ht/~cybolic/ArchInstall&quot;&gt;the full repo is here&lt;/a&gt;) and adapt them how you see fit. For me - together with &lt;a href=&quot;https://git.sr.ht/~cybolic/Dotfiles&quot;&gt;my stow setup&lt;/a&gt; for configuration files - all this means I can have a working re-install, with no need to think or remember commands, set up in no time.&lt;/p&gt;&lt;p&gt;With the repo - plus my config files - on a flash drive, a re-install is just:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#ED8796;font-style:italic&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; /run/media/&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/flash_drive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;./install.sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;./setup.sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If you want to quickly get a list of the packages you&#39;ve manually installed on your own system, here&#39;s a convoluted one-liner for just that:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;pacman&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -Qi&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -ett&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -E&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;^(Name|Description)&#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; sed&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;:a;N;$!ba;s/&#92;nDescription *: / # /g;s/Name *: //g&#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; column&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -s&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;#&#39;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;#&#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; grep&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -vE&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;^(&#39;&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;$(&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt;pacman&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; -Qq -g base -g base-devel &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;2&gt;&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/dev/null &lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; sed&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;:a;N;$!ba;s/&#92;n/ |/g&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;&#39;)&#39;&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#8AADF4;font-style:italic&quot;&gt; sort&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;</content>
  </entry>
  <entry>
    <title>Kitty with Nerd Font icons thanks to Nix</title>
    <link href="https://staging.cybolic.me/posts/kitty-with-nerd-font-icons-thanks-to-nix" />
    <updated>2025-07-14T01:10:54Z</updated>
    <id>https://staging.cybolic.me/posts/kitty-with-nerd-font-icons-thanks-to-nix</id>
    <author>
      <name>Christian Dannie Storgaard</name>
    </author>
    <category term="tech" label="Tech"/>
    <category term="linux" label="Linux"/>
    <media:thumbnail url="https://staging.cybolic.me/assets/images/thumbs/tech.jpg" />
    <content type="html">&lt;p&gt;Kitty has a nice way of showing Nerd Font characters, even if your current font hasn&#39;t been patched with them. Normally though, the recommended way of setting this up, is to go to &lt;a href=&quot;https://github.com/ryanoasis/nerd-fonts/wiki/Glyph-Sets-and-Code-Points&quot;&gt;the Nerd Fonts wiki&lt;/a&gt;, copy one column from the table of codepoints at the bottom of the page and then adjust the formatting to fit Kitty&#39;s options for the &lt;a href=&quot;https://sw.kovidgoyal.net/kitty/faq/#kitty-is-not-able-to-use-my-favorite-font&quot;&gt;symbol_map configuration option&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Now, you have to remember to do this every time Nerd Fonts updates this table, which isn&#39;t really announced, so you&#39;ll just have to check manually once in a while. Honestly, this isn&#39;t ideal and after doing it again recently, I thought this shouldn&#39;t really be necessary at all; I&#39;m running NixOS - surely there must be a way for this to be auto-generated?&lt;/p&gt;&lt;p&gt;My first thought was to parse the wiki page from within my Nix config, but considering that Nix is very much a functional language, the codepoints really should come from the &lt;em&gt;input&lt;/em&gt;, not an external source that may be out of date (as the git log shows that the wiki has occasionally been). Instead, what if we could get the list of codepoints from the font file itself, format it to fit what Kitty expects and have it be a part of our configuration build?&lt;/p&gt;&lt;p&gt;Luckily, &lt;code&gt;nixpkgs&lt;/code&gt; already contains a build of Nerd Fonts that only includes the symbols, so we have everything we need ready to go and &lt;code&gt;fontconfig&lt;/code&gt; provides tools that can extract the codepoints.&lt;/p&gt;&lt;p&gt;So, with all the preamble out of the way, I present a Nerd Font configuration for Kitty that will always stay in sync with the version of Nerd Font that&#39;s actually installed:&lt;/p&gt;&lt;pre class=&quot;shiki catppuccin-macchiato&quot; style=&quot;background-color:#24273a;color:#cad3f5&quot; tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;  programs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;kitty = &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;    extraConfig&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt; let&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;      fontFile&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;nerd-fonts&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;symbols-only&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/share/fonts/truetype/NerdFonts/Symbols/SymbolsNerdFontMono-Regular.ttf&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;      codepoints&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#ED8796&quot;&gt; builtins&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;readFile &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;runCommandLocal &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;get-nerdfont-codepoints&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;&#39;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;        ${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;fontconfig&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/bin/fc-query --format=&#39;%{charset}&#39; &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;fontFile&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;        | &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;gnused&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/bin/sed &#39;s/&#92;b&#92;([0-9a-f]&#92;+&#92;)&#92;b/U+&#92;U&#92;1/g&#39; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;        | &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;coreutils&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/bin/tr &#39; &#39; &#39;,&#39; &#92;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;        &gt; $out&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;      &#39;&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;      fontName&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#ED8796&quot;&gt; builtins&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;readFile &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;runCommandLocal &lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;&quot;get-nerdfont-name&quot;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; {}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;&#39;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;        ${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;fontconfig&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;/bin/fc-query --format=&#39;%{fullname}&#39; &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;fontFile&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &gt; $out&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;      &#39;&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#C6A0F6&quot;&gt;    in&lt;/span&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt; &#39;&#39;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;      # Use additional nerd symbols&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;      # https://sw.kovidgoyal.net/kitty/faq/#kitty-is-not-able-to-use-my-favorite-font&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;      symbol_map &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;codepoints&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; ${&lt;/span&gt;&lt;span style=&quot;color:#B7BDF8&quot;&gt;fontName&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#A6DA95&quot;&gt;    &#39;&#39;&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;  home&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#8AADF4&quot;&gt;packages&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt; [&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt; pkgs&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;nerd-fonts&lt;/span&gt;&lt;span style=&quot;color:#8BD5CA&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#CAD3F5&quot;&gt;symbols-only &lt;/span&gt;&lt;span style=&quot;color:#939AB7&quot;&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Another lovely example of Nix allowing me to stop worrying about yet another thing.&lt;/p&gt;&lt;p&gt;NOTE: I know this blog hasn&#39;t been updated in a while, and the last post mentions Arch Linux, but in the meantime Nix has slowly but surely taken over most of my tech, and it&#39;s been &lt;em&gt;lovely&lt;/em&gt;.&lt;/p&gt;</content>
  </entry>
</feed>
