<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bruno Haible</title>
    <description>The latest articles on DEV Community by Bruno Haible (@bhaible).</description>
    <link>https://dev.to/bhaible</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4012816%2Fbdf67aa1-c3af-4183-83a1-cfd75800b904.png</url>
      <title>DEV Community: Bruno Haible</title>
      <link>https://dev.to/bhaible</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhaible"/>
    <language>en</language>
    <item>
      <title>Kubuntu 26.04 installation and customization</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 22:01:12 +0000</pubDate>
      <link>https://dev.to/bhaible/kubuntu-2604-installation-and-customization-mng</link>
      <guid>https://dev.to/bhaible/kubuntu-2604-installation-and-customization-mng</guid>
      <description>&lt;p&gt;Recently I installed Kubuntu 26.04, and there were a number of installation steps and customizations that may apply to you too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/ubuntu-kubuntu-installation-on-a-new-computer-b7p"&gt;A new computer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/ubuntu-kubuntu-2604-customizing-the-root-account-428k"&gt;The root account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/kubuntu-2604-customizing-kde-56k8"&gt;KDE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/kubuntu-2604-customizing-kde-plasma-39bk"&gt;KDE Plasma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/kubuntu-2604-customizing-kde-konsole-5990"&gt;KDE konsole&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/kubuntu-2604-customizing-kde-kate-27fp"&gt;KDE kate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/kubuntu-2604-getting-the-headphones-working-3f54"&gt;Get the headphones working&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/ubuntu-kubuntu-2604-prefer-gnu-coreutils-c01"&gt;Prefer GNU coreutils&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/ubuntu-kubuntu-2604-without-snap-programs-1248"&gt;No snaps!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/an-etcfstab-for-developers-27dg"&gt;An /etc/fstab for developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/customizing-firefox-to-be-less-alien-184e"&gt;firefox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/customizing-chromium-to-be-less-alien-2f1b"&gt;chromium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/ubuntu-kubuntu-2604-vlc-4i8d"&gt;vlc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/ubuntu-kubuntu-2604-ssh-278b"&gt;ssh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/bhaible/ubuntu-kubuntu-2604-emacs-56no"&gt;emacs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ubuntu</category>
      <category>kde</category>
      <category>kubuntu</category>
    </item>
    <item>
      <title>Ubuntu / Kubuntu 26.04 — emacs</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 21:51:11 +0000</pubDate>
      <link>https://dev.to/bhaible/ubuntu-kubuntu-2604-emacs-56no</link>
      <guid>https://dev.to/bhaible/ubuntu-kubuntu-2604-emacs-56no</guid>
      <description>&lt;p&gt;The Kubuntu desktop in this release is based on Wayland. (Although, most X11 applications still run. A notable exception is &lt;code&gt;xmag&lt;/code&gt;.)&lt;/p&gt;

&lt;p&gt;For emacs, install the package &lt;code&gt;emacs-pgtk&lt;/code&gt;, &lt;strong&gt;not&lt;/strong&gt; the package &lt;code&gt;emacs&lt;/code&gt;. With the package &lt;code&gt;emacs&lt;/code&gt;, you would immediately notice that &lt;a href="https://debbugs.gnu.org/81580" rel="noopener noreferrer"&gt;you cannot resize the Emacs window as you like&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The 'p' in "pgtk" stands for Wayland.&lt;/p&gt;

&lt;p&gt;No, really, "pgtk" means "pure GTK" and means that Emacs should not use a mix of GTK and X11 calls, just GTK calls.&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>kubuntu</category>
      <category>emacs</category>
      <category>wayland</category>
    </item>
    <item>
      <title>Ubuntu / Kubuntu 26.04 — ssh</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 21:44:18 +0000</pubDate>
      <link>https://dev.to/bhaible/ubuntu-kubuntu-2604-ssh-278b</link>
      <guid>https://dev.to/bhaible/ubuntu-kubuntu-2604-ssh-278b</guid>
      <description>&lt;p&gt;I have a number of old and new virtual machines, and need to ssh from each VM to the host.&lt;/p&gt;

&lt;p&gt;Therefore install an ssh server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt install openssh-server&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And configure it to allow incoming connections from older VMs:&lt;br&gt;
Add a file &lt;code&gt;/etc/ssh/sshd_config.d/allow-older-clients.conf&lt;/code&gt;&lt;br&gt;
with contents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="c"&gt;# When a client ssh fails to login, look at the "service sshd status" log,
# and by use of "man sshd_config" find the options that need additional values.
&lt;/span&gt;&lt;span class="n"&gt;Ciphers&lt;/span&gt; +&lt;span class="n"&gt;aes128&lt;/span&gt;-&lt;span class="n"&gt;cbc&lt;/span&gt;,&lt;span class="n"&gt;aes192&lt;/span&gt;-&lt;span class="n"&gt;cbc&lt;/span&gt;,&lt;span class="n"&gt;aes256&lt;/span&gt;-&lt;span class="n"&gt;cbc&lt;/span&gt;
&lt;span class="n"&gt;KexAlgorithms&lt;/span&gt; +&lt;span class="n"&gt;diffie&lt;/span&gt;-&lt;span class="n"&gt;hellman&lt;/span&gt;-&lt;span class="n"&gt;group1&lt;/span&gt;-&lt;span class="n"&gt;sha1&lt;/span&gt;,&lt;span class="n"&gt;diffie&lt;/span&gt;-&lt;span class="n"&gt;hellman&lt;/span&gt;-&lt;span class="n"&gt;group&lt;/span&gt;-&lt;span class="n"&gt;exchange&lt;/span&gt;-&lt;span class="n"&gt;sha1&lt;/span&gt;
&lt;span class="n"&gt;HostKeyAlgorithms&lt;/span&gt; +&lt;span class="n"&gt;ssh&lt;/span&gt;-&lt;span class="n"&gt;rsa&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ubuntu</category>
      <category>kubuntu</category>
      <category>ssh</category>
      <category>openssh</category>
    </item>
    <item>
      <title>Ubuntu / Kubuntu 26.04 — vlc</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 21:40:58 +0000</pubDate>
      <link>https://dev.to/bhaible/ubuntu-kubuntu-2604-vlc-4i8d</link>
      <guid>https://dev.to/bhaible/ubuntu-kubuntu-2604-vlc-4i8d</guid>
      <description>&lt;p&gt;Install vlc through&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt install vlc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;not&lt;/strong&gt; &lt;code&gt;# snap install vlc&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I like to have a frame-by-frame button among the controls.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;toolbar &amp;gt; popup &amp;gt; View &amp;gt; Advanced controls: Enabled.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ubuntu</category>
      <category>kubuntu</category>
      <category>vlc</category>
    </item>
    <item>
      <title>Customizing Chromium to be less alien</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 21:34:32 +0000</pubDate>
      <link>https://dev.to/bhaible/customizing-chromium-to-be-less-alien-2f1b</link>
      <guid>https://dev.to/bhaible/customizing-chromium-to-be-less-alien-2f1b</guid>
      <description>&lt;p&gt;Chromium in its initial configuration also feels like a gnome from Mars.&lt;/p&gt;

&lt;p&gt;First, make sure that the Chromium installation did not change the default browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KDE System Settings &amp;gt; Apps &amp;amp; Windows &amp;gt; Default Applications &amp;gt; Default Applications &amp;gt; Web browser: Firefox

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

&lt;/div&gt;



&lt;p&gt;Then, there is a major problem: There is no way to raise/lower the Chromium window.&lt;br&gt;
It's not a problem with the KDE setting. It's a problem caused by Chromium.&lt;br&gt;
The fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Settings &amp;gt; Appearance &amp;gt; Use system titlebars and borders: Enable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other customizations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Settings &amp;gt; Languages &amp;gt; Spell check &amp;gt; Check for spelling errors: Disable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's no way to make this browser ad-free. Google prevents that.&lt;/p&gt;

</description>
      <category>chromium</category>
      <category>kde</category>
    </item>
    <item>
      <title>Customizing Firefox to be less alien</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 21:27:18 +0000</pubDate>
      <link>https://dev.to/bhaible/customizing-firefox-to-be-less-alien-184e</link>
      <guid>https://dev.to/bhaible/customizing-firefox-to-be-less-alien-184e</guid>
      <description>&lt;p&gt;Firefox in its initial configuration feels like a gnome from Mars that landed in Google-land.&lt;/p&gt;

&lt;p&gt;First, there is a major problem: There is no way to raise/lower the Firefox window.&lt;br&gt;
It's not a problem with the KDE setting. It's a problem caused by Firefox.&lt;br&gt;
The fix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Top-left corner popup menu &amp;gt; Customize Toolbar...
Enable "Title Bar".
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, customize the toolbar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Top-left corner popup menu &amp;gt; Customize Toolbar...
- Drag &amp;amp; Drop the Search into the toolbar.
- Firefox account: popup menu &amp;gt; Remove from toolbar.
- Flexible space: popup menu &amp;gt; Remove from toolbar.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, Firefox puts me in Google-land. As if I were to need ads in order tell me what to buy, what to think, and what to vote. And search suggestions, in order to tell me what to search for. Who are all these idiots who willingly accept to be Google slaves?!&lt;/p&gt;

&lt;p&gt;So, customize the search:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Settings &amp;gt; Search &amp;gt; Search suggestions: Disable.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Customize the appearance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Settings &amp;gt; Home &amp;gt; New Windows and Tabs &amp;gt; Homepage: Blank page
Settings &amp;gt; Home &amp;gt; New Windows and Tabs &amp;gt; New tabs: Blank page
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And customize the extensions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;uBlock Origin by Raymond Hill,&lt;/li&gt;
&lt;li&gt;AdBlock Plus.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>firefox</category>
      <category>adblock</category>
      <category>kde</category>
    </item>
    <item>
      <title>An /etc/fstab for developers</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 21:12:20 +0000</pubDate>
      <link>https://dev.to/bhaible/an-etcfstab-for-developers-27dg</link>
      <guid>https://dev.to/bhaible/an-etcfstab-for-developers-27dg</guid>
      <description>&lt;p&gt;As a developer, I often have to ask myself which files a certain process has accessed. It might be a single program run, or it might be a complex build (&lt;code&gt;make&lt;/code&gt; invocation).&lt;/p&gt;

&lt;p&gt;One way to answer this question is to look at the access times of the files (&lt;code&gt;ls -lu&lt;/code&gt;). But that works only when the access times reflect the reality.&lt;/p&gt;

&lt;p&gt;The other way is via &lt;code&gt;strace&lt;/code&gt;. Which is much more complicated and usually only feasible for a single program run.&lt;/p&gt;

&lt;p&gt;So, how do you make the access times reflect the reality?&lt;/p&gt;

&lt;p&gt;Edit &lt;code&gt;/etc/fstab&lt;/code&gt; and add the &lt;strong&gt;strictatime&lt;/strong&gt; option to every ext4 mount (or btrfs mount, if that's what you are using).&lt;/p&gt;

</description>
      <category>linux</category>
      <category>development</category>
      <category>developer</category>
      <category>fstab</category>
    </item>
    <item>
      <title>Ubuntu / Kubuntu 26.04 without snap programs</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 20:56:14 +0000</pubDate>
      <link>https://dev.to/bhaible/ubuntu-kubuntu-2604-without-snap-programs-1248</link>
      <guid>https://dev.to/bhaible/ubuntu-kubuntu-2604-without-snap-programs-1248</guid>
      <description>&lt;p&gt;Some important applications, such as Firefox, Thunderbird, Chromium, VLC, come as "snaps" in Ubuntu. This is a packaging format, like Flatpak or AppImage, that contains an entire application for a Linux operating system.&lt;/p&gt;

&lt;p&gt;These three packaging formats have different uses: While some distros bet on Flatpak, Ubuntu is unique in betting on Snap. AppImage is more for app vendors that want to publish their app without favouring any particular Linux distro.&lt;/p&gt;

&lt;p&gt;My experience with snaps is entirely negative: It is all related to the fact that it messes around with the file system.&lt;/p&gt;

&lt;p&gt;1) On my disk, I have a &lt;code&gt;/data&lt;/code&gt; partition for storing things outside &lt;code&gt;$HOME&lt;/code&gt;. Snaps don't work with this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When I create an HTML file under data, for instance as part of some build process, &lt;code&gt;firefox /data/..../file.html&lt;/code&gt; tells me that it cannot access the file. Likewise for Chromium. I have to use another browser, such as &lt;code&gt;konqueror&lt;/code&gt; or &lt;code&gt;falkon&lt;/code&gt; in order to view an HTML file on my disk!&lt;/li&gt;
&lt;li&gt;I have a symlink &lt;code&gt;$HOME/Videos -&amp;gt; /data/Videos&lt;/code&gt;. When a video file is in this directory, &lt;code&gt;vlc&lt;/code&gt; cannot open it when I pass the file name on the command line, and I cannot pick the file from vlc's file chooser either. I have to move the video file into &lt;code&gt;$HOME/&lt;/code&gt; in order to view it!&lt;/li&gt;
&lt;li&gt;I have a symlink &lt;code&gt;$HOME/Downloads -&amp;gt; /data/Downloads&lt;/code&gt;. Even through I specified to Firefox that it should save downloads in this directory, it never did: it stored them sometimes under &lt;code&gt;$HOME/snap/firefox/common/&lt;/code&gt; and sometimes under &lt;code&gt;/run/user/1000/doc/by-app/snap.firefox/&lt;/code&gt; in a directory where the file magically appears and magically disappears.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2) The snaps have a file chooser (file selector box) that is different from the native one (KDE's file selector). This is disturbing for the user. Additionally, this file chooser presents the home folder under different names: Home and I18N_something.&lt;/p&gt;

&lt;p&gt;3) The browser's data files (bookmarks, session store, etc.) are no longer under &lt;code&gt;$HOME/.mozilla/firefox/&lt;/code&gt;, they are under &lt;code&gt;$HOME/snap/firefox/common/.mozilla/firefox/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The worst thing is that these bugs don't get fixed over the years. You wait for two years, for the next Ubuntu LTS release, and they are still present.&lt;/p&gt;

&lt;p&gt;And then there's the fact that Snaps, like Flatpak and AppImage, consume more memory because there are multiple copies of the shared libraries of the GUI toolkit in memory: one copy for the packages that use the distro's native packaging format, and another copy for the packages in snaps. Whereas one of the reasons to use Linux (as opposed to other operating systems) is that it's memory efficient.&lt;/p&gt;

&lt;p&gt;Therefore, I don't want to use this garbage any more.&lt;/p&gt;

&lt;p&gt;First, remove snaps that contain user programs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# snap list&lt;/span&gt;
&lt;span class="c"&gt;# snap remove firefox thunderbird&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, install a fallback browser, just as a backup, for the day when Firefox breaks due to an automatic upgrade.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt install falkon&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prepare for installing Flatpaks. I did not end up installing Flatpaks in the end, but it's a better fallback that nothing at all or Snaps.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt install flatpak&lt;/span&gt;
&lt;span class="c"&gt;# flatpak remote-add flathub https://dl.flathub.org/repo/flathub.flatpakrepo&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Prepare for installing Debian 13 packages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt install binutils&lt;/span&gt;
Download package from https://packages.debian.org/trixie/debian-archive-keyring.
&lt;span class="c"&gt;# ar x debian-archive-keyring_2025.1_all.deb&lt;/span&gt;
&lt;span class="c"&gt;# tar xf data.tar.xz&lt;/span&gt;
&lt;span class="c"&gt;# mv -i usr/share/keyrings/debian-archive-* /usr/share/keyrings/&lt;/span&gt;
Create file /etc/apt/sources.list.d/z-debian.sources:
&lt;span class="nt"&gt;-----------------------------------------------------------&lt;/span&gt;
&lt;span class="c"&gt;### Debian 13&lt;/span&gt;
Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates trixie-backports
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

&lt;span class="c"&gt;## Debian security updates. Aside from URIs and Suites,&lt;/span&gt;
&lt;span class="c"&gt;## this should mirror your choices in the previous section.&lt;/span&gt;
Types: deb
URIs: http://security.debian.org/debian-security
Suites: trixie-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
&lt;span class="nt"&gt;-----------------------------------------------------------&lt;/span&gt;
&lt;span class="c"&gt;# apt update&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install firefox (from the Debian repositories).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt remove firefox&lt;/span&gt;
&lt;span class="c"&gt;# apt install firefox-esr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Chromium (from the Debian repositories).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt install chromium&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hide the Debian 13 packages again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# mv /etc/apt/sources.list.d/z-debian.sources /etc/apt/sources.list.d/z-debian.sources.mine&lt;/span&gt;
&lt;span class="c"&gt;# apt update&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. It wasn't that hard, after all.&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>kubuntu</category>
      <category>snap</category>
      <category>firefox</category>
    </item>
    <item>
      <title>Ubuntu / Kubuntu 26.04 — Prefer GNU coreutils</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 18:06:23 +0000</pubDate>
      <link>https://dev.to/bhaible/ubuntu-kubuntu-2604-prefer-gnu-coreutils-c01</link>
      <guid>https://dev.to/bhaible/ubuntu-kubuntu-2604-prefer-gnu-coreutils-c01</guid>
      <description>&lt;p&gt;GNU coreutils or uutils coreutils? Ubuntu 26.04 ships with both. I prefer to use the GNU coreutils, for several reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The uutils are written in Rust and therefore make use of the Rust/Cargo modules. This is an ecosystem of small modules, each written by a different author and sometimes maintained, but more often unmaintained over longer time. This ecosystem is vulnerable to the same kinds of supply chain attacks as we have seen in the &lt;code&gt;npm&lt;/code&gt; world, where packages are occasionally taken over by malicious people (either because the maintainer behaves in an irresponsible way, or by takeover via stolen credentials, or by domain name squatting, etc.). I cannot trust a package that relies on 100 or more such modules.&lt;/li&gt;
&lt;li&gt;The uutils people are fighting the GPL, by putting their code under the MIT license and thereby inviting corporations to add proprietary features. And guess what? The corporations have already started doing so: Microsoft is shipping a modified version of the uutils coreutils as the "Microsoft coreutils", without publishing its source code.&lt;/li&gt;
&lt;li&gt;The uutils currently don't pass 100% of the GNU coreutils test suite. In other words, while the "main" use-cases of the programs work fine, "fringe" use-cases exhibit bugs. But I don't want to be a beta-tester for unfinished software when I install a Linux distro on my work machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, how to do it?&lt;br&gt;
1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# apt remove --allow-remove-essential coreutils-from-uutils&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create a file &lt;code&gt;/etc/apt/preferences.d/uutils&lt;/code&gt; with contents:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;Package&lt;/span&gt;: &lt;span class="n"&gt;coreutils&lt;/span&gt;-&lt;span class="n"&gt;from&lt;/span&gt;-&lt;span class="n"&gt;uutils&lt;/span&gt;
&lt;span class="n"&gt;Pin&lt;/span&gt;: &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;=*
&lt;span class="n"&gt;Pin&lt;/span&gt;-&lt;span class="n"&gt;Priority&lt;/span&gt;: -&lt;span class="m"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it, mostly. You will notice that you cannot install a few packages that depend on a package named &lt;code&gt;build-essential&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;apt-cache rdepends build-essential
...
    cuda-crt-13-1
    cuda-nvcc-13-1
    cuda-crt-13-1
    python3-virtualenv
    python3-torch-rocm
    python3-torch
    python3-pip
    pyenv
    opam
    nim
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ubuntu maintainers&lt;/strong&gt;: Get your ass together and remove &lt;code&gt;build-essential&lt;/code&gt; from the dependency list of these packages! There is no reason why I should not be able to install the OCaml package manager (&lt;code&gt;opam&lt;/code&gt;) just because I prefer the GNU coreutils.&lt;/p&gt;

&lt;p&gt;Credit: Collin Funk provided the &lt;code&gt;apt-cache rdepends&lt;/code&gt; command.&lt;/p&gt;

</description>
      <category>ubuntu</category>
      <category>kubuntu</category>
      <category>coreutils</category>
      <category>uutils</category>
    </item>
    <item>
      <title>Kubuntu 26.04 — Getting the headphones working</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:32:51 +0000</pubDate>
      <link>https://dev.to/bhaible/kubuntu-2604-getting-the-headphones-working-3f54</link>
      <guid>https://dev.to/bhaible/kubuntu-2604-getting-the-headphones-working-3f54</guid>
      <description>&lt;p&gt;A PC typically has three ways of producing sound:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the speakers in the PC (if any),&lt;/li&gt;
&lt;li&gt;the speakers in the display, connected through HDMI,&lt;/li&gt;
&lt;li&gt;the headphones, connected through a cable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By default, in Kubuntu 26.04, &lt;strong&gt;the headphones don't work&lt;/strong&gt;. My system is one with AMD Ryzen (in case that matters).&lt;/p&gt;

&lt;p&gt;This is annoying, because after generations of sound systems in Linux (Open Sound System, ALSA, PulseAudio, and now PipeWire), a user's expectation is that it works out-of-the-box.&lt;/p&gt;

&lt;p&gt;The solution is:&lt;br&gt;
After each reboot:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Plug in headphones.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KDE System Settings
     Input &amp;amp; Output &amp;gt; Sound &amp;gt; Playback Devices:
     Select "Ryzen HD Audio Controller Analog Stereo".
     Select Port: "Headphones (unplugged)".
     Select Profile: "Pro Audio".
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Credit: This solution comes from &lt;a href="https://discuss.kde.org/t/wired-earphones-do-not-work-out-of-the-box/46408" rel="noopener noreferrer"&gt;https://discuss.kde.org/t/wired-earphones-do-not-work-out-of-the-box/46408&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubuntu</category>
      <category>hardware</category>
      <category>sound</category>
      <category>headphones</category>
    </item>
    <item>
      <title>Kubuntu 26.04 — Customizing KDE kate</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:29:15 +0000</pubDate>
      <link>https://dev.to/bhaible/kubuntu-2604-customizing-kde-kate-27fp</link>
      <guid>https://dev.to/bhaible/kubuntu-2604-customizing-kde-kate-27fp</guid>
      <description>&lt;p&gt;After &lt;a href="https://dev.to/bhaible/kubuntu-2604-customizing-kde-56k8"&gt;customizing KDE in general&lt;/a&gt;, you will want to customize its advanced text editor, called "kate".&lt;/p&gt;

&lt;p&gt;Start it and then do these settings changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Settings &amp;gt; Configure kate &amp;gt; Appearance &amp;gt; Borders: Left side: Show line numbers: Disable.

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

&lt;/div&gt;



&lt;p&gt;Line numbers in every editor window is overkill. I want to concentrate on the text.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Settings &amp;gt; Configure kate &amp;gt; Editing &amp;gt; General: Automatically close bracket when opening bracket is typed: Disable.

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

&lt;/div&gt;



&lt;p&gt;While it can be a nice feature, it ends up disturbing me when I type code more often than it is helpful.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Settings &amp;gt; Configure kate &amp;gt; Editing &amp;gt; Indentation: Tab width 8
  Settings &amp;gt; Configure kate &amp;gt; Editing &amp;gt; Indentation: Indentation width 8

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

&lt;/div&gt;



&lt;p&gt;In Unix, a tab is 8 columns wide, not 4. I don't want glibc source code to look misindented just because my editor's settings are wrong.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Settings &amp;gt; Configure kate &amp;gt; Editing &amp;gt; Indentation: Backspace key in leading blank space unindents: Disable.
  Settings &amp;gt; Configure kate &amp;gt; Editing &amp;gt; Indentation: Adjust indentation of code pasted from the clipboard: Disable.

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

&lt;/div&gt;



&lt;p&gt;Automatic indentation adjustments do the wrong thing for me too often. Especially with C code that uses GNU style indentation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Settings &amp;gt; Configure kate &amp;gt; Open/Save &amp;gt; Advanced: Write a backup file on save for local files: Enable.

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

&lt;/div&gt;



&lt;p&gt;I don't want to lose hours of editing just by making a mistake in a file once and saving. A backup file is a good insurance. If the backup files clutter up over time, it's easy to remove them: &lt;code&gt;rm -f $(find . -type f -name '*~')&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Settings &amp;gt; Configure Keyboard Shortcuts &amp;gt; katepart &amp;gt; Dynamic Word Wrap: F10

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

&lt;/div&gt;



&lt;p&gt;Sometimes I want wrapped lines, sometimes I don't. It depends on what I do. So I use F10 to toggle word wrap on/off.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  File &amp;gt; Print/Export &amp;gt; Print &amp;gt; Options&amp;gt;&amp;gt; &amp;gt; Header &amp;amp; Footer: Print header: Disable.
  File &amp;gt; Print/Export &amp;gt; Print &amp;gt; Options&amp;gt;&amp;gt; &amp;gt; Header &amp;amp; Footer: Print footer: Disable.
  File &amp;gt; Print/Export &amp;gt; Print &amp;gt; PDF &amp;gt; Properties &amp;gt; Page &amp;gt; Margins (= [Kate Print Settings][Margins])
    top=10.29
    left=8.79
    right=3.79
    bottom=5.29
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are good settings for printing something in such a way that there will be no loss at the margins. This dialog tells the printing applications where on each page to place the contents.&lt;/p&gt;

</description>
      <category>kubuntu</category>
      <category>kde</category>
      <category>kate</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Kubuntu 26.04 — Customizing KDE konsole</title>
      <dc:creator>Bruno Haible</dc:creator>
      <pubDate>Tue, 20 Oct 2026 16:17:25 +0000</pubDate>
      <link>https://dev.to/bhaible/kubuntu-2604-customizing-kde-konsole-5990</link>
      <guid>https://dev.to/bhaible/kubuntu-2604-customizing-kde-konsole-5990</guid>
      <description>&lt;p&gt;After &lt;a href="https://dev.to/bhaible/kubuntu-2604-customizing-kde-56k8"&gt;customizing KDE in general&lt;/a&gt;, you will want to customize its terminal emulator, called "konsole".&lt;/p&gt;

&lt;p&gt;Start it and then do these settings changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Settings &amp;gt; Manage Profiles &amp;gt; New: MyProfile
  Settings &amp;gt; Profiles &amp;gt; MyProfile &amp;gt; Edit &amp;gt; Appearance &amp;gt; Black on White
  Settings &amp;gt; Profiles &amp;gt; MyProfile &amp;gt; Edit &amp;gt; Mouse &amp;gt; Text interaction &amp;gt; Word characters: Remove ':'
  Settings &amp;gt; Profiles &amp;gt; MyProfile &amp;gt; Edit &amp;gt; Mouse &amp;gt; Miscellaneous &amp;gt; Preview colors on hover: off
  Settings &amp;gt; Profiles &amp;gt; MyProfile &amp;gt; Edit &amp;gt; General &amp;gt; Terminal bell mode: Ignore Bell Events
  Settings &amp;gt; Profiles &amp;gt; MyProfile: set as default
  Settings &amp;gt; Configure Notifications &amp;gt; Bell in Non-Focused Session: Do NOT show a popup
  Settings &amp;gt; Configure Notifications &amp;gt; Silence in Monitored Session: Do NOT show a popup
  Settings &amp;gt; Configure Notifications &amp;gt; Activity in Non-Focused Monitored Session: Do NOT show a popup
  Settings &amp;gt; Configure Notifications &amp;gt; Silence in Non-Focused Monitored Session: Do NOT show a popup
  Settings &amp;gt; Configure Notifications &amp;gt; Activity in Monitored Session: Do NOT show a popup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a bit of an annoyance with &lt;code&gt;konsole&lt;/code&gt; that you can't edit the properties of the default profile. You need to create a new profile, based on the default, of which you can then edit the properties. And you can make that one the new default.&lt;/p&gt;

&lt;p&gt;The most useful customization here is to remove the colon from the list of "word characters".&lt;/p&gt;

&lt;p&gt;Let me explain: These "word characters" determine what gets selected when you double-click on a cell in the terminal emulator.&lt;/p&gt;

&lt;p&gt;I have a GNU bash prompt that looks like this: &lt;code&gt;user@hostname:/current/directory$&amp;nbsp;&lt;/code&gt;. By default, when I double-click on the directory, it would select &lt;code&gt;user@hostname:/current/directory&lt;/code&gt; — which is not very useful for me. With the colon removed, when I double-click on the directory, it selects &lt;code&gt;/current/directory&lt;/code&gt; — which is useful, because it lets me paste this string anywhere else directly, to form a file name.&lt;/p&gt;

</description>
      <category>kubuntu</category>
      <category>kde</category>
      <category>konsole</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
