The lazy audiophile
I love listening to music. And while I am lazy (which is the popular term for considering if something is worth the effort before doing it), I still prefer listening to it in a realistic sound quality. Which sounds like a contradiction, isn’t it? Well, yes, but only if you are not ready for compromises. In this blog, I focus on technologies and software problems, and the compromises I made to keep listening to music simple but still enjoy it. On the audio device side, I won’t mention any brands.
Digital audio
My number one compromise is that I listen to digital audio. I am often told that a true audiophile listens only to analog sound sources. For them, listening to music actually starts days earlier: doing all kinds of cleaning rituals on vinyls.
I have multiple problems with the vinyl approach. First of all: I have no idea what I will want to listen to in a few days. I do not even know what I want to listen to in a few hours. I only know what I want to listen to right now. This need is easy to meet with digital sources, but not so convenient with analog ones, especially not with vinyl. The other problem is that there is no vinyl without some extra noise. When I bring this up, I’m reminded of concerts, namely that there are extra noises in the concert room as well. That is right. And I do not like that either :-).
Bluetooth headphones
Whenever I mention that next to my regular headphones, I also use a pair of Bluetooth headphones, people swear at me, claiming that it substantially degrades sound quality. Yes, that is right. And to add insult to injury, I even use active noise canceling, which changes the original sound even more. But who cares when it is just background music, so I can concentrate on my work when people are talking around me? It does its job: keeps the noise out. Of course I switch to my studio headphones as soon as I want to focus on the music itself. But when it comes to background music, Bluetooth is a lot more comfortable.
Music sources
I have tons of CDs, but no CD player anymore. I have a USB CD drive instead, which I use to grab CDs into FLAC files. I play those lossless files whenever I want to play my collection. Of course you might ask why do I still buy CDs. There are many reasons for that. First of all: I want to own the music I like in physical format. I also like the booklets. Many CDs are never published to TIDAL or to online services. Finally, music could be removed from online services or could become region limited. So, it could happen that the music I like suddenly disappears. What I have in a physical format and grabbed into FLAC files is already my own. It just cannot disappear suddenly.
I also buy digital music files. Once I was a Society of Sound member, but as you can see, this service is no longer available. They published one, later two albums each month. Even if I did not like the music on each and every album, the quality of their recordings is fantastic, and a joy to listen to.
Currently, I am a TIDAL subscriber. When you use their player, they have all albums available at least in CD quality, some even at a higher quality. Originally, they had a very limited repertoire, but now it is quite good.
Linux
For many years, I listened to music on Linux. First of all, because it is my primary operating system. But also because it sounded the best. There were no additional layers between the sound card and music player applications, making the sound very clean. Unfortunately, pulseaudio became popular later, and now you cannot use a GUI without using pulseaudio. And while it adds some extra flexibility, it really degrades sound quality. With some tuning, the situation can be improved, but it is far from perfect.
There are still some Linux-based music appliances without pulseaudio, providing excellent sound quality. But unless it is just background music, the Linux desktop is not really good to listen to music anymore.
Another pain point on Linux is TIDAL. You can only use it from a browser, where only the lowest sound quality is available.
Windows
I am a Linux guy, so I avoid Windows as much as possible. But of course sometimes I still use it, for example for photo editing, when playing with my MIDI keyboard, and for some minimal gaming. On Windows, I have Foobar2000 as music player. And of course I also have TIDAL. Recently I learned some extra settings: using the sound card directly (without sharing it with other applications), and turning off normalization. These two settings eliminate all degradation I could hear. Of course some people say that even this is not enough, but for me, additional complex tweaks just do not worth the time, money or effort.
MacOS
Not my favorite OS either. Neither of my DACs work perfectly with music player applications trying to use the sound directly. The only exception here is TIDAL, which works just perfectly and can use the sound card directly, just like on Windows. So, I often use my MacBook Pro when I want to listen to TIDAL. It is an Intel-based one though, but hopefully it will be supported for another few years.
A surprising choice: Android
Android is not famous for its multimedia capabilities. The TIDAL Android app cannot use the sound output directly, so sound quality is degraded, only good for some background music. Previously I used a music player application, which could play my FLAC and DSD files from my NAS accessing the USB port of my Android device directly. First they broke DSD support, which was not a problem though, as I only had a few sample files. My own collection is purely FLAC. But then they also broke network support, which proved to be a bigger problem, as my music collection sits on a NAS, because it is a lot larger than it could fit the storage of my Android devices.
Luckily, I heard about USB Audio Player Pro in one of the Facebook discussion groups I am a member of. It can directly access the USB port, making “bit perfect” audio possible. And best of all, it can play back not just my FLAC collection, but also TIDAL - in better sound quality than the official TIDAL application on Android itself! Of course, there are some limitations: discovering new music is not so easy as it is in the official app. As a workaround, I use TIDAL on my MacBook Pro to discover new music, but I use my Google Pixel C tablet with USB Audio Player Pro whenever I listen to music or composers I already know. There, I can easily combine music from my NAS with music from TIDAL. A few weeks ago, I complained that the keyboard of my Google Pixel C tablet died. Luckily the tablet itself still works just fine, so I can use it to listen to music.
A bit of fun
And just to prove that analog vs. digital is more of a religious question than audio quality. One of my favorite recordings is John Metcalfe – Kites And Echoes (The Vinyl Experience). It was one of the albums from Society of Sound. And, as its note states:
A special exclusive edition called The Vinyl Experience. This is to provide listeners with a high resolution 96kHz recording of the actual vinyl LP.
Someone was listening to music at my place, and loudly complained that digital music does not have a soul, as it’s missing important details, and all the usual arguments. So, I proposed that we listen to an LP instead of digital. Of course I do not have a record player, but I started the above recording on my Pixel C. The mood quickly changed, and my guest was all smiles once the familiar sound of an LP started coming out from the speakers. However, the smile turned into laughter, once I explained how I cheated :-)
Customize IBus User Guide
GNOME Desktop
First, make sure you have installed the GNOME Shell Extension: Customize IBus https://extensions.gnome.org/extension/4112/customize-ibus/
Installation
You can refer to here: https://itsfoss.com/gnome-shell-extensions/ to install the GNOME Shell Extension from a web browser.
or
- Linux:
git clone https://github.com/openSUSE/Customize-IBus.git
cd Customize-IBus && make install
- FreeBSD:
git clone https://github.com/openSUSE/Customize-IBus.git
cd Customize-IBus && gmake install
If you want to install Customize IBus as a system extension for all users:
- For Arch based:
yay -S gnome-shell-extension-customize-ibus

- For Fedora:
wget https://github.com/openSUSE/Customize-IBus/raw/package-repo/customize-ibus-rpm.repo
sudo mv customize-ibus-rpm.repo /etc/yum.repos.d/
sudo dnf update
sudo dnf install gnome-shell-extension-customize-ibus
- For OpenSUSE:
wget https://github.com/openSUSE/Customize-IBus/raw/package-repo/customize-ibus-rpm.repo
sudo mv customize-ibus-rpm.repo /etc/zypp/repos.d/
sudo zypper refresh
sudo zypper install gnome-shell-extension-customize-ibus
Or install directly through the ymp file.
- For Debian based (Ubuntu):
echo "deb http://opensuse.github.io/Customize-IBus/deb/ /" | sudo tee -a /etc/apt/sources.list.d/customize-ibus-deb.list > /dev/null
wget -q -O - http://opensuse.github.io/Customize-IBus/hollowman.pgp | sudo apt-key add -
sudo apt update
sudo apt install gnome-shell-extension-customize-ibus
PPA:
sudo add-apt-repository ppa:hollowman86/customize-ibus
sudo apt-get update
You can download the majority of your Linux distributions related packages through OpenSUSE OBS and then install.
- Gentoo:
git clone https://github.com/openSUSE/Customize-IBus.git
cd Customize-IBus && make emerge
- NixOS:
sudo nix-env -i gnomeExtensions.customize-ibus
- Guix:
guix install gnome-shell-extension-customize-ibus
- FreeBSD:
wget https://github.com/openSUSE/Customize-IBus/raw/package-repo/customize_ibus.conf
sudo mkdir -p /usr/local/etc/pkg/repos/
sudo mv customize_ibus.conf /usr/local/etc/pkg/repos/
sudo pkg update
sudo pkg install gnome-shell-extension-customize-ibus
After installation, you will find that there is an additional entry Customize IBus in the IBus input source indicator menu. Click it, and you will open the Customize IBus preferences. If there is no such menu entry, you can press Alt+F2 to restart the GNOME shell, or log out and log in again. If that still doesn’t work, please make sure you have installed the latest version of the extension and have enabled the extension.

You can also click the configuration icon of the Customize IBus extension in https://extensions.gnome.org/local/ to open the preferences.

General

At item Candidates orientation, select the check box on the left to enable the configuration of the IBus candidate box direction. Click on the right side to select, it can be set to vertical or horizontal.
At item Candidates popup animation, select the check box on the left to enable the configuration of the IBus animation. Click on the right side to select, support setting to no animation, slide, fade, and both.
Example to turn on the sliding animation: 
At item Candidate box right click, select the check box on the left to enable the configuration of right-click the candidate box to perform related operations when using the IBus. Click on the right to make a selection, and you can set to open the tray menu or switch the input source.
At item Candidates scroll, select the check box on the left to enable the configuration of actions performed when scrolling using the IBus. Click on the right to select, and you can set to switch the current candidate word or page.
At item Fix candidate box, select the check box on the left to enable a fixed candidate box. Click on the right to select. You can set the candidate box position with 9 options. Recommend to enable Drag to reposition candidate box at the same time so that you can rearrange the position at any time. Will remember candidate position forever after reposition if you set to Remember last position, and restore at next login.
At item Use custom font, select the check box on the left to enable configuration of the font and size of the text in the IBus candidate box. Click on the right to open the font selector. In the pop-up dialog box, you can select the font you want in the upper part and the font size in the lower part. Click Select to confirm the modification. 
At item Auto switch ASCII mode, select the check box on the left to enable configuration of switching ASCII mode when switching windows, Click on the far right to select. It supports setting to make ASCII mode on and off, or just keep to remain current mode. You can also set to remember input state or not on the near right. If you have set to Remember Input State, every opened APP’s input mode will be remembered if you have switched the input source manually in the APP’s window, and the newly-opened APP will follow the configuration. APP’s Input State will be remembered forever.
At item Candidate box opacity, select the check box on the left to enable configuration of the opacity in the IBus candidate box. Slide the right button to configure opacity ranging from 0 to 255 step 1.
At item Fix IME list order, click the switch on the right to turn this feature on or off.
If you use multiple input methods in your system, when you use the keyboard shortcut to switch input methods (usually Win + Space), the input method displayed by default on the screen will be sorted by the most recently used input method. Turn on this feature to modify the order of input methods as fixed.
When off:

When on:

At item Enable drag to reposition candidate box, click the switch on the right to turn this feature on or off.
Example of turning on drag to reposition candidate box: 
At item Candidate box page buttons, click the switch on the right to show or hide the candidate page buttons.
Tray

Here you can set to show IBus tray icon, enable directly switch source with click, add additional menu entries to IBus input source indicator menu at system tray to restore the feelings on Non-GNOME desktop environment.
All menus are enabled:

You can also start or restart IBus by pressing the top button: 
Indicator

Here you can set to Use input source indicator, default is to show indicator every time you type, move caret or switch input source. You can set to Indicate only when switching input source by clicking the switch on the right. You can also set to Indicate only when using ASCII mode (for multi-mode IME), Don't indicate when using single mode IME, Right click to close indicator, Scroll to switch input source, Indicator popup animation supporting None, Slide, Fade, All. Also support to Use custom font, Enable indicator left click to switch input source or drag to move indicator, set Indicator opacity supporting range of 0 to 255, and the setting step is 1, Enable indicator show delay (unit: seconds), Enable indicator auto-hide timeout (unit: seconds) and auto-hide timeout (in ” “seconds) supporting to set the hidden delay in the range of 1 second to 5 seconds, and the setting step is 1.
Note: If you choose to enable the show delay, there won’t be a show delay when you switch input source or window.
Example animation: 
Theme

Same as the general part, select the check box on the left to enable the configuration, and click on the right to select the IBus theme style sheet.
If you have selected a style sheet, click the icon on the far right to directly open it to view the style sheet. You can also click the clear icon to make it follow system theme.
Supports importing style sheets generated by the IBus Theme Tools or provided by the IBus Theme Hub.
When light theme and dark theme are turned on at the same time, the IBus theme will automatically follow GNOME Night Light mode, use light theme when off, and use dark theme when on. When only the light theme or dark theme is turned on, the IBus theme will always use the theme that is turned on.
If not for debugging, please DO NOT add any classes that’s not started with .candidate-* into IBus stylesheet to prevent from corrupting system themes.
If your IBus style sheet has changed after application, please close and reopen the corresponding Starting from v69, now this extension support stylesheets hot reload, CSS changes will reflect in real-time.custom IME theme to make it effective.
You can download more GNOME Shell themes from this website: https://www.pling.com/s/Gnome/browse/cat/134/order/latest/, then put it under the $HOME/.themes/ directory to complete the installation.
The IBus theme tool style sheet generation uses the GNOME Shell theme that has been installed on the computer to extract the IBus style. The extraction steps are as follows:
- Refer to the following part:
Non-GNOME Desktop->Customize IBus Themesteps 1-2 to run the program. - Enter the number of the IBus-related GNOME Shell theme style you want to export, and press
Enter.
- Enter the location of the GNOME Shell theme style sheet exported related to IBus that you want to store, and press
Enter. Empty selection will be the default, that is in the current directoryexportedIBusTheme.cssfile. If there is no error message, it will be successfully exported to the specified location.
Example export file:
/*
Generated by IBus Theme Tools
Tool Author: Hollow Man <hollowman@hollowman.ml>
Tool Source Code: https://github.com/openSUSE/IBus-Theme-Tools
Tool Licence: GPLv3
CSS Source File: /usr/share/gnome-shell/theme/gnome-classic-high-contrast.css
Recommend to use Customize IBus GNOME Shell Extension:
https://extensions.gnome.org/extension/4112/customize-ibus/
to change IBus theme by selecting this file.
If you make any changes to this content after applying this file in above extension,
for Customize IBus Extension before v68, please disable and then enable 'custom IME theme'
again to make the changes take effect.
Starting from v69, support stylesheets hot reload, CSS changes reflecting in real-time.
*/
/*
Imported from CSS Source File: /usr/share/gnome-shell/theme/gnome-classic.css
*/
.candidate-page-button:focus {
color: #2e3436;
text-shadow: 0 1px rgba(255, 255, 255, 0.3);
icon-shadow: 0 1px rgba(255, 255, 255, 0.3);
box-shadow: inset 0 0 0 2px rgba(53, 132, 228, 0.6);
}
.candidate-page-button:hover {
color: #2e3436;
background-color: white;
border-color: #d6d1cd;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
text-shadow: 0 1px rgba(255, 255, 255, 0.3);
icon-shadow: 0 1px rgba(255, 255, 255, 0.3);
}
.candidate-page-button:insensitive {
color: #929595;
border-color: #e1ddda;
background-color: #faf9f8;
box-shadow: none;
text-shadow: none;
icon-shadow: none;
}
.candidate-page-button:active {
color: #2e3436;
background-color: #efedec;
border-color: #cdc7c2;
text-shadow: none;
icon-shadow: none;
box-shadow: none;
}
.candidate-index {
padding: 0 0.5em 0 0;
color: #17191a;
}
.candidate-box:selected,
.candidate-box:hover {
background-color: #3584e4;
color: #fff;
}
.candidate-page-button-box {
height: 2em;
}
.vertical .candidate-page-button-box {
padding-top: 0.5em;
}
.horizontal .candidate-page-button-box {
padding-left: 0.5em;
}
.candidate-page-button-previous {
border-radius: 5px 0px 0px 5px;
border-right-width: 0;
}
.candidate-page-button-next {
border-radius: 0px 5px 5px 0px;
}
.candidate-page-button-icon {
icon-size: 1em;
}
.candidate-box {
padding: 0.3em 0.5em 0.3em 0.5em;
border-radius: 5px; /* Fix candidate color */
color: #2e3436;
}
.candidate-popup-content {
padding: 0.5em;
spacing: 0.3em; /* Fix system IBus theme background inherited in replaced theme */
background: transparent;
/* Fix system IBus theme candidate window border inherited in replaced theme */
border: transparent;
/* Fix system IBus theme candidate box shadow inherited in replaced theme */
box-shadow: none;
/* Fix candidate color */
color: #2e3436;
}
.candidate-popup-boxpointer {
-arrow-border-radius: 9px;
-arrow-background-color: #f6f5f4;
-arrow-border-width: 1px;
-arrow-border-color: #cdc7c2;
-arrow-base: 24px;
-arrow-rise: 12px;
-arrow-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); /* Fix black border at pointer when system theme is black */
border-image: none;
}
/* Unify system page button and IBus style page button */
.candidate-page-button {
border-style: solid;
border-width: 1px;
min-height: 22px;
padding: 3px 24px;
color: #2e3436;
background-color: #fdfdfc;
border-color: #cdc7c2;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
text-shadow: 0 1px rgba(255, 255, 255, 0.3);
icon-shadow: 0 1px rgba(255, 255, 255, 0.3); /* IBus style page button */
padding: 4px;
}
/* EOF */
You can also go directly to the IBus Theme Hub and download specialized made IBus theme style sheet file. Here are the IBus theme style sheet files with Microsoft IME style: https://github.com/openSUSE/IBus-Theme-Hub/tree/main/%E4%BB%BF%E5%BE%AE%E8%BD%AFMicrosoft
Background

Support customizing your IBus Input window background with a picture. It has a higher priority than the theme-defined background.
If you have selected a picture, click the icon on the far right to directly open and view the picture. You can also click the clear icon to make it follow theme background.
When light background and dark background are turned on at the same time, the IBus background will automatically follow GNOME Night Light mode, use light background when off, and use dark background when on. When only the light background or dark background is turned on, the IBus background will always use the background that is turned on.
Please make sure your background picture can always be visited. If your pictures are stored in the removable device and the system doesn’t mount it by default, please disable and then enable the corresponding Use custom background again to make it effective after manually mounting.
Same as the general part, select the check box on the left to enable the configuration, and click on the right to select the background image of the IBus input candidate box.
You can also set the background picture display mode, you can set whether the background picture is displayed repeatedly, or the display mode Centered, Full or Zoom.
Examples of various picture display modes (using 128×128 compressed pictures: https://github.com/openSUSE/Customize-IBus/blob/main/customize-ibus%40hollowman.ml/img/logo.png ):

- Centered + No repeat:

- Centered + Repeat:

- Full + No repeat:

- Full + Repeat:

- Zoom + No Repeat/Repeat (equivalent):

Settings

Here you can reset the settings of this extension to default. You can also export current settings to an ini file for backup, and then import it when you need restore. For your information, you may also open the official IBus customization settings for customizations you can’t find in this extension.
Click Restore Default Settings, after confirming, you can re-initialize the extension.

Click Export Current Settings, you can choose to export the current settings as a *.inifile. The default file name is Customize_IBus_Settings_[Current Time].ini: 
Example settings export file content:
[/]
candidate-box-position={'x': uint32 0, 'y': 0}
candidate-opacity=uint32 210
candidate-orientation=uint32 0
candidate-scroll-mode=uint32 0
custom-bg='/home/hollowman/图片/light.jpg'
custom-bg-dark='/home/hollowman/图片/dark.jpg'
custom-bg-mode=uint32 2
custom-bg-repeat-mode=uint32 1
custom-font='Sans 16'
custom-theme='/home/hollowman/stylesheet.css'
custom-theme-dark='/home/hollowman/stylesheet-dark.css'
enable-custom-theme=true
enable-custom-theme-dark=true
enable-orientation=true
fix-ime-list=true
ibus-restart-time='1625063857427'
indicator-custom-font='Sans Bold 16'
indicator-left-click-func=uint32 0
indicator-opacity=uint32 210
input-indicator-hide-time=uint32 2
input-indicator-not-on-single-ime=true
input-indicator-right-close=true
input-indicator-show-time=uint32 1
input-indicator-use-scroll=true
input-mode-list={'undefined': true, '': false, 'gjs': false, 'org.gnome.nautilus': false, 'google-chrome-beta': false, 'gedit': false, 'gnome-terminal': true, 'code': false, 'org.gnome.shell.extensions': true}
input-mode-remember=uint32 0
menu-ibus-emoji=true
menu-ibus-exit=true
menu-ibus-preference=true
menu-ibus-restart=true
menu-ibus-version=true
use-candidate-box-right-click=true
use-candidate-buttons=false
use-candidate-opacity=true
use-candidate-reposition=true
use-candidate-scroll=true
use-candidate-still=false
use-custom-bg=true
use-custom-bg-dark=true
use-custom-font=true
use-indicator-auto-hide=true
use-indicator-custom-font=true
use-indicator-left-click=true
use-indicator-opacity=true
use-indicator-reposition=true
use-indicator-show-delay=true
use-input-indicator=true
use-popup-animation=true
use-tray=true
use-tray-click-source-switch=true
Click Import Settings from File, you can choose to import the settings file you just saved: 
About
At any time, you can click on the icon in the upper left corner to open this guide:

Non-GNOME desktop
Customize IBus theme
In non-GNOME Shell desktop environment, the display effect of IBus is determined by the current GTK theme.
You can download more GTK3/4 themes from this website: https://www.gnome-look.org/browse/cat/135/, then put them in the $HOME/.themes/ directory to complete the installation.
The following steps can change the GTK theme of IBus:
- First, Install ibus-theme-tools:
Recommend to use pip to install:
pip install ibus-theme-tools
You can also install manually:
git clone https://github.com/openSUSE/IBus-Theme-Tools.git
cd IBus-Theme-Tools && python3 setup.py install
For install using package manager:
- Arch Linux:
You can use AUR to install:
yay -S ibus-theme-tools

- Ubuntu:
You can use PPA to install:
sudo add-apt-repository ppa:hollowman86/ibus-theme-tools
sudo apt-get update
- openSUSE:
You can install directly through the ymp file.
You can download the majority of your Linux distributions related packages through OpenSUSE OBS and then install.
- Gentoo:
git clone https://github.com/openSUSE/IBus-Theme-Tools.git
cd IBus-Theme-Tools && make emerge
- NixOS:
sudo nix-env -i ibus-theme-tools
- Guix:
guix install ibus-theme-tools
- Then run
ibus-theme-toolsin the terminal. - Enter
1, choose to extract an IBus-related GTK theme, and pressEnter.
- Enter the IBus GTK theme you want to extract, and then press
Enter. (Note that the theme name ends with:darkis the dark mode of the theme)
- Enter the system GTK you want to mix, and then press
Enter.
- Select whether to add a customized background image for IBus panel, if you need press
2and then pressEnter.
- Enter the picture address:
- Then choose repeat and sizing modes, and set background border radius (unit:
px).
- If there is no error message, the setting action should be successful. Then you can choose the GTK theme that just generated in the system theme settings to apply the previous choices.
Customize IBus font size
Recommend to directly change the font and font size settings in the IBus preferences (ibus-setup).
Or:
$HOME/.config/gtk-3.0/settings.ini defines the current GTK3 theme and font size.
Example of the content of the file is as follows:
[Settings]
gtk-theme-name=Materia-light
gtk-font-name=更纱黑体 SC 12
In the above content, gtk-theme-name specifies that the current GTK theme is material-light, gtk-font-name specifies that the current font is 更纱黑体 SC and the font size is 12.
The IBus font and font size can be changed by modifying the above documents.
Customize IBus colors (Create a GTK theme)
Create a GTK3 theme called ibus-custom-theme by running:
mkdir -p $HOME/.themes/ibus-custom-theme/gtk-3.0
$EDITOR $HOME/.themes/ibus-custom-theme/gtk-3.0/gtk.css
then edit the file content. An example can be:
* {
color: #0b141a; /* Font Color */
background-color: #ffffff; /* Background Color */
-gtk-secondary-caret-color: #d4d4d4; /* Highlight Background Color */
}
After that, referring to the actions of the Customize IBus theme part, please select the theme ibus-custom-theme which you just created.
My Google Summer of Code 2021

Blog Posted on openSUSE News about the Project
Project Introduction
IBus Customize @openSUSE by Songlin Jiang (@HollowMan6)
Before GSoC 2021, the IBus theme follows the global GNOME-Shell theme in GNOME and the global GTK theme in other desktop environments, and IBus lacks customization for users in GNOME.
Main Focus
This project aims to make IBus themes separate from the current GNOME-Shell theme and GTK theme so that users can customize it with other GNOME-Shell themes and GTK themes.
Other Goals
Improve the UI usability for IBus in GNOME. That is, to add more features, including customization of orientation, animation, font, opacity. Support right-click to switch the input source or open the tray menu, scroll to switch among pages or candidates, fix candidate box and IME switch list order, ASCII mode auto-switch, reposition, show or hide candidate box page buttons, set system tray settings, input source indicator with settings. Theme and background picture follow GNOME Night Light Mode, and so on. These customizations will make users find IBus in GNOME familiar if they have just switched from another platform. Eventually, an extension providing full customization of appearance, behavior, system tray, input source indicator for IBus will be available.
Archived Codebase

Contribution in Details
Blog Posts both in Chinese and English of the Documentations Related to the Project User Guide
Customize IBus Extension (All the commits and releases submitted by @HollowMan6 are my contributions)

Functionalities
- Candidate Box Orientation (imported from ibus-tweaker, refer to ibus-font-setting for settings sync with
ibus-setup) - Candidate Box Animation (thanks for the help from Florian Müllner)
- Right-click Candidate Box to Switch the Input Mode or Open the Tray Menu
- Scroll on Candidate Box to Switch among Pages or Candidates
- Fix Candidate Box to Not Follow the Caret and Set Fixed Position
- Candidate Box Font (imported from ibus-tweaker and ibus-font-setting)
- Input Mode Remember and Auto-switch by APP (imported from ibus-tweaker, refactor to enable configuring input mode remember)
- Change Candidate Box Opacity
- Fix IME List Order (imported from fixed-ime-list)
- Drag Candidate Box to Reposition
- Show or Hide Candidate Box Page Buttons
- Restart or Start IBus from Preferences
- System Tray Menus and Interaction Settings
- Show or Hide Tray Icon
- Directly Click Tray Icon to Switch Input Mode
- Add Additional Menu
- Input Source Indicator Appearance and Interaction Settings
- Enable Indicator
- Only Indicate when Switching Input Mode
- Only Indicate when Using ASCII Input Mode
- Right-click Indicator to Hide
- Scroll on Indicator to Switch Input Mode
- Indicator Animation
- Customize Font
- Left-click Indicator to Drag to Move Indicator or Switch Input Mode
- Change Opacity
- Enable Auto-hide Indicator and Configure Auto-hide Timeout
- Configure Theme (Stylesheet Provided by IBus Theme Hub or Extracted from IBus Theme Tools GNOME Shell Themes)
- Add a Candidate Box Background Picture and Configure its Displaying Style
- Theme and Background Picture Follow GNOME Night Light Mode (partly referred to ibus-tweaker for this feature)
- Multi GNOME Version Support ranging from GNOME 3.34 to GNOME 40 Simultaneously
- Hot Reload Support for Theme
- Reset to Default Settings
- Export Current Settings to File
- Import Current Settings from File
- Open Official Settings from Preferences
- Multi-Linguistic Support (Chinese and English)
- Packages Definition Files that can Pack it in Arch, RPM Based, Debian Based
- Logo Design
- Eslint and Prettier Check Support
- Workflow for Auto-Generating Extension Upload Zip file
- Distribution Repos
- Makefile for Build, Release, Package, Translate
(Credits for the GJS Documentation and GNOME Shell Codebase!)
Issues and PRs Opened and Resolved
Submitted to Open Build Service
Source Repository (Before revision 87)
Upstream Repository (Before revision 4)

IBus Theme Tools (All the commits and releases submitted by @HollowMan6 are my contributions)

Functionalities
- Non-GNOME Desktop Change IBus GTK Theme, Add Theme Settings to Startup (Before v3). Generate an IBus Mixed GTK theme, Supporting to Select a Background Picture and Configure Border Radius (After v4)
- GNOME Desktop Extract IBus Style from GNOME Shell Theme
- Pack into Module Using Python Package Setup
- Multi-Linguistic Support (Chinese and English)
- Workflow for Python Package Check
- Packages Definition Files that can Pack it in Arch
- Makefile for Build, Release, Package, Translate
Issues and PRs Opened and Resolved
Submitted to Open Build Service
Source Repository (Before revision 17)
Upstream Repository (Before revision 3)

IBus Theme Hub (All the commits and releases submitted by @HollowMan6 are my contributions)

Functionalities
- Microsoft IME Theme (imported from ibus-tweaker Stylesheet, Page buttons added by Me)
- Nord Theme (contributed by @stonegate, I did some fixes)
- PR template
Issues, Discussions, and PRs Opened and Resolved
IBus (All the commits and releases submitted by @HollowMan6 are my contributions)

openSUSE Tumbleweed – Review of Weeks 2021/32 & 33
Dear Tumbleweed users and hackers,
Dominique has been enjoying a vacation these last two weeks and left Tumbleweed in my hands. It’s been quite an interesting fortnight.
These two weeks have only seen 3 snapshots released, numbered 0807, 0810 and 0817. Snapshots 0811, 0812, 0816 and 0818 were all produced but discarded for a number of reasons including:
- DVD ISO grew too big (twice!)
- Random vim build failure produced an amusingly broken snapshot
- And probably a few other bits and pieces I’m forgetting now
Plus on a personal note this was the fortnight I moved house so I wasn’t able to fix all the issues as fast as normal when they came up. Thanks for everyone’s patience and understanding
The changes delivered these weeks included:
- kernel 5.13.8
- KDE Gear 21.08
- apparmor 3.0.3
- vim 8.2.3318
- And lots of other miscellaneous fixes
The future, near or far, will bring those updates:
- kernel 5.13.12 (Currently being tested in 0819)
- systemd v249.2
- nodejs 16.6.2
- glibc 2.34
- podman & crio with crun enabled by default
- and many more…
Have a lot of fun!
– Richard
openqa-cli Cheatsheet
Checkout the new openqa-cli cheat sheet page where I start to collect some useful “how do I do …” snippets for the openQA CLI utility openqa-cli.
Tumbleweed Fast Forwards with KDE Gear, Frameworks Updates
A lot of work this week has been taking place in the background to release openSUSE Tumbleweed snapshots.
Documented on the mailing list in the latest openSUSE release engineering meeting was information about some challenges Tumbleweed development had this week building images with the Open Build Service. There were some build failures, which caused some broken builds. These builds aren’t released as a snapshot since these must pass openSUSE’s openQA testing. The size of the ISO media also became too large to fit on a DVD; adjustments are made frequently when the capacity exceeds the size, so let’s get into the snapshot that was released.
The efforts to build, test and release a successful snapshot did come with the release of snapshot 20210817. Users received some much anticipated software with some really cool new features. KDE Gear 21.08.0 was among the many packages for rolling release users. The Dolphin file manager now shows an animated sequence of previews for folders containing a lot of previewable files. Its preview code has also been optimized so thumbnails pop up faster and files inside encrypted locations, such as Plasma Vaults, can show a preview. The PDF viewer Okular made some enhancements in the toolbar that allows for a color design to make reading more comfortable and to help avoid eye-strain. The Konsole terminal offers a preview feature from the command line when hovering the cursor over image filenames. Enhancements were also made for the Gwenview image viewer and the Elsa music player. KDE Frameworks 5.85.0 also came in the snapshot. The developer user interface Kirigami corrected some spacing between the close button and action buttons. It also added a method to push a page as a new window on the desktop. Optimizations for the network mounting performance were made to the KTextEditor and KWayland fixed a check for an mmap system call failure. AppStream, which is a package that provides a standard for creating app stores across distributions, updated to version 0.14.4 and improved text line wrapping. Mozilla Thunderbird 78.13.0 fixed a half dozen Common Vulnerabilities and Exposures; three of those involved fixes for possible memory corruption. Better native Wayland support for handling client-side decorations and other functionality were made to the update of media SDL2 2.0.16. The first major 1.0.0 version for firewalld was released in the snapshot; the dynamically managed firewall reduced dependencies, cleaned the spec file and deprecated the iptables backend. Vector graphics editor inkscape advanced a few minor versions to 1.1 and added a Welcome dialog where the look of Inkscape can be selected and some choices for the new document size or file to open are available. And when pasting a copied object, Inkscape now pastes it directly on top of the currently selected object by default. There is a list of several more packages that updated in the snapshot. Among some of those packages update were apparmor 3.0.3, ipset 7.15, nodejs16 16.6.2, openvpn 2.5.3, vim 8.2.3318, pipewire 0.3.33 and yast2-users 4.4.6, which made an update to allow for the editing of the name of an existing user and another update to remove the password of an existing user.
openqa-cli cheat sheet
openqa-cli is a command-line utility for interacting with openQA. The tool is versatile and allows you to control and interact with an arbitrary openQA instance from the comfort of your command line. While the internal help is quiet comprehensive, I list some of the most basic tasks in the form of a tutorial or knowledge base here.
S.u.S.E., Opensuse and me
Recently connect.opensuse.org, the openSUSE member directory and social site was shut down. You can read more about the reasons on openSUSE News. I also had my profile on the site, listing many of the things I worked on during the past two and a half decades. Reading it was quite a trip down the memory lane. It also reminded me, how the name changed over the years. Did you know that SUSE was originally an acronym for Software- und System-Entwicklung? This is why the original name is S.u.S.E.
- S.u.S.E. user from 1996, starting with version 4.3 (4.2 was the first “real” release)
- wrote a couple of articles about S.u.S.E. Linux in various Hungarian magazines
- became a S.u.S.E. beta tester when beta releases were sent by post on a pile of CD-s
- was part of the openSUSE tester team and still have a wonderful t-shirt somewhere
- did lots of PowerPC testing and fixing while working at Genesi
- compiled PowerPC packages for Packman
- became an openSUSE ambassador for Hungary, organizing events, spreading the word at conferences
- worked on the ARM port of openSUSE using hardware from Genesi
- became syslog-ng package co-maintainer and later maintainer
The beginnings
As also mentioned in an opensource.com article, I started using Linux in 1994 during my first year of university. I tried quite a few distributions, but when I discovered my /etc/passwd file printed in the Russian student’s computer lab, I quickly installed Jurix a rolling Linux distro, which was among the firsts to feature shadow passwords. These foreign students were constantly attacking our servers, but as they were paying students, they could not be punished. They even tried to bribe me with a counterfeit game CD to get an account. Thanks to them I shifted my focus to IT security. Using a distro with a strong focus on security was important. When the maintainer of Jurix joined S.u.S.E. and helped to roll out their first own Linux distro based on Jurix, S.u.S.E. Linux 4.2 (their earlier releases were simply Slackware with German localization), it was a logical next step to try it.
When I asked for a review copy, instead of 4.2 I received an early beta of the 4.3 release. I did not only write an article for the Hungarian edition of CHIP magazine, but also provided feedback for S.u.S.E. and even gave some ideas how to work around some problems. This resulted in a good relationship both with marketing and product departments of S.u.S.E. I became a beta tester, receiving CDs and providing feedback by e-mail. I was trying to persuade them for years to install Bugzilla. First they introduced it internally, and later I also got access. Of course I also kept writing articles about various S.u.S.E. and later SuSE and SUSE releases.
openSUSE
I am an open source maniac, but I am not religious about it. I truly enjoyed that SUSE Linux also made many closed source applications or applications with proprietary licenses easily available. And the SUSE Linux kernel contained lots of non-mainline code making sure, that even cutting-edge devices work. Sometimes devices under S.u.S.E. Linux worked even better than under Windows, like my TV tuner card. The change to openSUSE was a kind of shock for me. Luckily it worked out nicely in the end. Installing the “problematic” (not fully open source) applications is still possible, even if it requires enabling an extra repository. And maintaining out of tree code became more and more difficult as the speed of Linux kernel development grew. Sticking more to main-line helped to free up resources.
Once SUSE Linux turned into openSUSE I became part of the openSUSE testing team. My focus at that time was the PowerPC platform, but I double checked everything on x86 to figure out if a bug is PowerPC specific or generic. I still have a nice t-shirt from those times. I do not wear it often any more to make sure that it does not completely wither.
A few years later I also became an openSUSE ambassador. I organized release events in Hungary, spread the word at conferences, giving talks, maintaining the openSUSE booth. I still maintain the Hungarian openSUSE facebook page, but for the past 1.5 years there were no in person events at all.
Today I work at Balabit (now officially called One Identity Hungary), the home of syslog-ng. One of my first tasks was to help Linux distros and FreeBSD to keep the syslog-ng package up-to-date. First I became a co-maintainer of the syslog-ng package in openSUSE, later I became the maintainer.
For the past 25 years I had S.u.S.E. Linux, SuSE, SUSE and openSUSE running on my desktops most of the time. The only few exceptions were when I received a new laptop and it was not supported openSUSE Leap due to using old kernels. There were two short periods, but I quickly changed back to openSUSE as soon as a major new Leap release came out with an up-to-date kernel.
What is next
I mentioned ARM and PowerPC a few times in my blog. I guess that my work at Genesi is worth a separate blog :-) But if you are curious, you can already read two of my related articles:
How to Gradient When You Can’t
While this topic isn’t anything new (the asset in question is probably a decade old) I never shared a dirty little secret about some of our symbolic assets.
UI icons in GNOME are to a major extent monochrome. They behave like text and can be rendered with various foreground colors depending on context. In a small subset of icons we use partially shaded elements. Those are done as a solid fill as well, but lowered opacity. Then can still remain recolorable at runtime.
What we don’t have is the ability to draw a gradient that remains recolorable, because we’d need more somphisticated machinery to rewrite the stops of the gradient definition. Or can we? Unless you’re reading this on Planet or in your fancy RSS reader, you can see the spinner we’ve been using for well over 7 years now:
It actually isn’t filtered particularly well in Firefox, but is nice and clean in gtk. Firefox amplifies one of the big downsides of this method, it’s quite prone to moiré. If you hover over the spinner, it reveals the nasty hack how the fade to transparency has been achieved.
Let me show you how it’s done in Inkscape. The UI is a bit of afterthought, but you can make actual objects follow a path.
- The first step will be to create our spinner in its linear form. Create a rectangle, convert it into a shape with
Ctrl+Shift+Cand subdivide one of the sides a couple of times using theAdd Nodebutton in the context menubar. - To create the etch-gradient, select every even node on the side and move them horizontally.
- Next step is to create the curve this object will follow. The easiest is to use the
Ellipseprimitive and only make it go along around 270deg rather than a full circle. - Now onto the magic. Putting shapes onto curves is done with a
pattern along curvepath effect found in thepathmenu. Despite the odd terminology, path effects can be previewed in real time and working with them is much easier than filters. Setting the source shape can be done multiple ways, but I found pasting from clipboard the easiest. If the source object is actually on canvas, the shape will remain linked and editing the source shape will result in the path effect updating on the target curve in real time, allowing iteration into perfection.
I bet there is a filter that can produce halftoning out of a gradient, but who’s brave enough to spend an evening in the filters menu.
The best thing about the spinner is that Software is now getting a lot less of it. Phillip & Milan, thank you.
Onboarding Sketches

GNOME 41 is now UI frozen, so without spoiling the release much, I’d like to share some of the explorations that led to some of the onboarding in both app space (mostly Connections) and the new Tour.













