Three writing systems of English and localization woes

Did you know there are three different writing systems for English? That’s right - you can write English using letters that aren’t Latin characters. If you’re using KDE Plasma version 6.4 or earlier, go to the “Region & Language” system settings page and search “en_US.” You’ll see two locales in the results, and they both say they’re “en_US.” The latter en_US doesn’t seem to be English at all. It turns out that the “weird” English is the “America English Deseret” locale, and the “normal” en_US is called “America English Latin”. ...

August 24, 2025

Programming Pipewire - Introduction

From ArchLinux Wiki: PipeWire is a new low-level multimedia framework. It aims to offer capture and playback for both audio and video with minimal latency. Pipewire is the default audio server on new Linux distributions. But what is an audio server? Audio Server On a modern Linux system, multiple applications can produce audio at any given time. For example, the VLC video player and the Firefox browser. These applications are called audio sources. In order to play the audio, the digital audio data must be passed to the computer’s sound card or HDMI output (i.e., the audio jack on your monitor). The devices that convert digital audio information into sound waves that we can hear are called audio sinks. ...

July 6, 2025

Run Nextcloud on the cheap

Run Nextcloud on the cheap I store all my family videos, photos on my PC (home lab). The setup hasn’t changed in three years. It works great, cheaper than a dedicated NAS and more flexible. However, the system suffers in these areas: No way to access the content outside the local network, the PC is turned off to save power when I’m away Even though the data is duplicated using btrfs, there is no geo-redundancy Physical connection to the PC required for data upload, not so convenient for family members A local-cloud hybrid architecture will solve the problem, a self-hosted, always-on cloud driver can act as a central point for data distribution. My PC still serves as the main storage, but new data can be uploaded to the cloud driver first, the local storage will synchronize with the cloud driver as soon as I turn on the PC. ...

March 19, 2025

Cross Compile to PinePhone with Clang

Cross Compile to PinePhone with Clang Click Here for GCC Part one Click Here for GCC Part three Advantages of Clang If you have read the previous posts about cross-compiling with gcc, you know that we need to install the cross-compiler first. This is not that difficult, but it has a few pitfalls. In particular, the one provided by ArchLinux by default does not work in our use case. The good thing about clang is that clang is inherently a cross-compiler. It lowers C/C++ source code into LLVM IR, which is platform independent. And LLVM then lower the IR further into platform-dependent machine code. One less tool to install, one less tool to maintain. ...

November 22, 2021

I spent two days building KDE from source, so you can do it faster

I spent two days building KDE from source, so you can do it faster or: How I Learned to Stop Worrying and Love Ubuntu kdesrc-build From KDE documentations: kdesrc-build is a script to help the KDE community install KDE software from its Git and Subversion source repositories, and continue to update that software afterwards. If you are a developer, your distribution may not have the latest dependencies. Even though you can theoretically build them from source, it is difficult to find out every dependencies and keep them up to date. kdesrc-build can manage the dependencies for you, build the dependencies and install them somewhere so that they don’t conflict with system libraries. ...

November 14, 2021

PolKit Explained

Polkit explained What is PolKit PolKit is a standard authorization method for Linux. It usually consists of PolKit daemon, PolKit session agent and the helper program shipped by applications that use PolKit. As a user, you don’t really interact with PolKit itself, usually you interact with PolKit session agent. Like KDE’s PolKit agent: You can consider it as sudo of the GUI. But it works completely different than sudo. I spent two days trying to figure out what PolKit is, how it works, and how to use it to write a GUI tool that requires root privileges but can’t be run as root itself. ...

November 7, 2021

Linux Application Ecosystem Salon 2021 Changsha

Linux Application Ecosystem Salon 2021 Changsha This weekend I traveled to Changsha for the Linux Application Ecosystem Salon 2021 Changsha, which is held by Ubuntu Kylin in the campus of Central South University. The journey itself is uneventful. I’ve never been to any offline Linux events before, I wanted to go to FOSDEM, but then the COVID hit. So anyway, it’s a first time for me. You can view the full news in Ubuntu Kylin’s post ...

October 24, 2021

Linux Locales

Linux Locales Locale is often ignored aspects of a system. Especially if you’re America. For most systems, locale is chosen on installation. But for distributions like ArchLinux, you do need to config locale yourself. Now there’re two ways to config set locale. One way is described on ArchLinux Wiki, edit /etc/locale.gen to enable the locale and use locale-gen to generates it. Finally set $LANG to the locale you want. The second way is to use DE, take KDE for example. You can set locale in system settings under languages or formats. And unlike locale-gen, it doesn’t need root permission. Surprisingly, it actually work! I always set time format in formats to British while keep other America. The time format on system panel did changed to British after that. However, after rebooting, some terminal applications will complain about invalid locales. Mosh even refuses to work! I just set $LC_ALL to C in situations like this. But there must be something wrong about it. ...

October 17, 2021

Cross Compile to PinePhone Part Four

Cross Compile to PinePhone Part Four Click Here for Part one Click Here for Part two Click Here for Part three Now we’ve got ourselve a handy script for cross compiling, I think it’s time to introduce other means of cross compiliing and why I not using existing methods. Pmbootstrap pmbootstrap is the central tool to develop and install postmarketOS. It works using Alpine chroots to avoid installing software on the host’s machine. ...

October 1, 2021

Cross Compile to PinePhone Part Three

Cross Compile to PinePhone Part Three Click Here for Part one Click Here for Part two On last part, we managed to generate package by hand. While it works, having a script to do everything for us is even better. So I’ve wrote a small python script to automate the process. ppbuild ppbuild: https://invent.kde.org/hanyoung/ppbuild ppbuild is a small script for cross compile common Plasma Mobile apps. It expects you’ve already set up the binfmt. If you haven’t, refer to part one. ...

September 25, 2021