<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ubuntu on DonDoIT</title><link>/tags/ubuntu/</link><description>Recent content in Ubuntu on DonDoIT</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sat, 14 Jun 2025 10:42:47 +0300</lastBuildDate><atom:link href="/tags/ubuntu/index.xml" rel="self" type="application/rss+xml"/><item><title>Customizing Regolith (Wayland)</title><link>/posts/ubuntu/regolith/</link><pubDate>Sat, 14 Jun 2025 10:42:47 +0300</pubDate><guid>/posts/ubuntu/regolith/</guid><description>&lt;h1 id="something-customization-for-regolith-wayland"&gt;Something customization for Regolith (Wayland)&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://regolith-desktop.com"&gt;Regolith&lt;/a&gt; is an Ubuntu desktop environment that build on top of &lt;a href="https://i3wm.org"&gt;i3 window manager&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="why-wayland-and-not-x11"&gt;Why Wayland and not X11?&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve experienced some lagging and delaying issues with X11, especially when using browsers such as video couldn&amp;rsquo;t play or if it&amp;rsquo;s played, it delayed and glitched all the time.
So when switching to Wayland, the experience feels much better and the same as native Ubuntu. However, Regolith Wayland needs some manual configurations that I want to use in my workflow.&lt;/p&gt;</description><content>&lt;h1 id="something-customization-for-regolith-wayland"&gt;Something customization for Regolith (Wayland)&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://regolith-desktop.com"&gt;Regolith&lt;/a&gt; is an Ubuntu desktop environment that build on top of &lt;a href="https://i3wm.org"&gt;i3 window manager&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="why-wayland-and-not-x11"&gt;Why Wayland and not X11?&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve experienced some lagging and delaying issues with X11, especially when using browsers such as video couldn&amp;rsquo;t play or if it&amp;rsquo;s played, it delayed and glitched all the time.
So when switching to Wayland, the experience feels much better and the same as native Ubuntu. However, Regolith Wayland needs some manual configurations that I want to use in my workflow.&lt;/p&gt;
&lt;h2 id="ibus-languages"&gt;Ibus languages&lt;/h2&gt;
&lt;p&gt;Although in Regolith Wayland, Ibus deamon was running, it couldn&amp;rsquo;t pick up the configured languages that were setup in Gnome setting, as well as the shortcut key. So the workaround I made was to create a shell script that manually run ibus command to set the language, then add an &lt;code&gt;i3&lt;/code&gt; config to bind the shortcut key that I wanted.&lt;/p&gt;
&lt;h3 id="shell-script"&gt;Shell script&lt;/h3&gt;
&lt;p&gt;In my case, I only needed 2 languages, English and Vietnamese (Unikey), so my shell script looked like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;current&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;ibus engine&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$current&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Unikey&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ibus engine xkb:us::eng
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ibus engine Unikey
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But if more languages needed, the script could be tweaked like:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Define your input engines here, e.g English, Vietnamese (Unikey), Finnish&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ENGINES&lt;span style="color:#f92672"&gt;=(&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;xkb:us::eng&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Unikey&amp;#34;&lt;/span&gt;, xkb:fi::fin&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Get the current engine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;CURRENT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;ibus engine&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Find the index of the current engine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NEXT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i in &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;!ENGINES[@]&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;[[&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;ENGINES[$i]&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$CURRENT&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;]]&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; NEXT&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;i &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &lt;span style="color:#e6db74"&gt;${#&lt;/span&gt;ENGINES[@]&lt;span style="color:#e6db74"&gt;}&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; break
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Switch to the next engine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ibus engine &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;ENGINES[$NEXT]&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="add-i3-config"&gt;Add i3 config&lt;/h3&gt;
&lt;p&gt;Regolith Wayland would look for user&amp;rsquo;s config in &lt;code&gt;~/.config/regolith3/sway/config.d/&lt;/code&gt;, so I added &lt;code&gt;ibus.conf&lt;/code&gt; file there, with the content&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;bindsym Alt+Space exec &amp;#34;~/.config/sway_language_switch.sh&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="i3status-rust"&gt;i3status-rust&lt;/h3&gt;
&lt;p&gt;Regolith Wayland used &lt;code&gt;i3status-rust&lt;/code&gt; instead of the normal &lt;code&gt;i3status&lt;/code&gt; for styling the &lt;code&gt;i3bar&lt;/code&gt;. The &lt;code&gt;i3status-rust&lt;/code&gt; version that were used as of the moment writing this was &lt;code&gt;0.22.0&lt;/code&gt; eventhough there was newer version released. I had to dig into &lt;code&gt;i3status-rust&lt;/code&gt; github repository to look for documentation about its supported modules, and turned out it did supported &lt;code&gt;ibus&lt;/code&gt; (but not anymore in the future versions).&lt;/p&gt;
&lt;p&gt;Regolith would look for user&amp;rsquo;s own config in &lt;code&gt;~/.config/regolith3/i3status-rust/config.toml&lt;/code&gt;, so first I had to copy the default config, which was in &lt;code&gt;/etc/regolith3/i3status-rust/config.toml&lt;/code&gt;, over to the user&amp;rsquo;s config mentioned above. Then added &lt;code&gt;ibus&lt;/code&gt; block in there&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[[&lt;span style="color:#a6e22e"&gt;block&lt;/span&gt;]]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;block&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;ibus&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#a6e22e"&gt;block&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;mappings&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Unikey&amp;#34;&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;Vi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;xkb:us::eng&amp;#34;&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;EN&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After this, whenever I wanted to switch the input language between English and Vietnamese, I simply pressed &lt;code&gt;Alt + Space&lt;/code&gt; and also the changes would be reflected in i3 status bar as well.&lt;/p&gt;</content></item></channel></rss>