Topic: Linux distro development

I've just completed a full rebuild of my Linux distro, Laclin, and I thought I'd comment on a worthwhile point.

Today, the vast majority of 64-bit #Linux #distros support 32-bit mode primarily as a set of 32-bit libraries, referred to as "multilibs", that are used to permit the builds of 32-bit components.

Relatively few 64-bit distros permit the user to boot into a true 32-bit desktop, 32-bit kernel plus 32-bit applications, that might run on 32-bit boxes that are decades old.

I haven't seen a reason to drop support for true 32-bit mode. It's only a little more work compared to "multilibs" to build a complete tree of 32-bit executables. So, my distro does precisely that.

#Laclin is able to boot into any of the following modes: 64-bit kernel plus 64-bit programs, 64-bit kernel plus 32-bit programs [this mode is useful for 32-bit cross-compiles as compilers are able to use more RAM], and 32-bit kernel plus 32-bit programs [true 32-bit mode].

In true 32-bit mode, most things work normally. You can read email using Thunderbird, edit documents using LibreOffice, play videos and music, edit images using The GIMP, and browse the Web using the WebKitGTK mini-browser [which works even with modern websites].

The main things that are missing are support for Chromium and Firefox derivatives and all programs written in Rust.

So, why not support this mode?

Illustration: The attached JPEG is a screenshot of Laclin Linux booted into true 32-bit mode. The applications shown are 32-bit versions that will run, in some cases, on boxes that are decades old.

Subject: Accessibility for visually impaired Linux CLI users

Illustration: XFCE Terminal running in #Laclin #Linux with the change described below.

This article may be of interest to Linux users with slight visual impairment. It assumes basic knowledge of CLI [middle school level and up].

The following change will make the menus for Gtk3 programs more readable in some cases. In other cases, it won't make a difference as menus have been properly configured in other ways.

Gtk4 programs are addressed further down. Note: superuser isn't required to make the change.

First, execute:

mkdir -p $HOME/.config/gtk-3.0

Next, edit the following text file: [create the file if it doesn't exist]

$HOME/.config/gtk-3.0/gtk.css

Add the following settings or modify existing settings to match:

menubar > menuitem label { color: #0000aa; font-size: 5mm; font-weight: bold; } menu menuitem label { color: #0000aa; font-size: 5mm; font-weight: bold; }

Save the file and restart Gtk3 programs.

A similar change should work for Gtk4 programs. To address those programs, substitute "gtk-4.0" for "gtk-3.0" in the instructions.

Easy to overlook: If you're running programs in Firejail, remember to create and/or modify "gtk.css" files in the appropriate Firejail directories. For example, if you're running "hexchat" in Firejail, the "gtk.css" file to create and/or modify for that program might be:

$HOME/.firejail/hexchat/.config/gtk-3.0/gtk.css

For readers who have LinkedIn accounts, a LinkedIn version of this post is online at:

https://www.linkedin.com/pulse/accessibility-change-visually-impaired-linux-cli-users-robert-kiraly-xr47c

Screenshot: Laclin desktop. To see it in a larger size, right-click on the image and select Open Image in New Tab or similar.

@mason : I encourage you to continue with your #Linux distro even if it needs to be a one-person project. There will be all sorts of spin-offs from the project.

I'll add more in the coming months to the #Laclin site about how that distro is unique. I can say here that:

* My distro fits in a pants pocket -- it boots from SSD or Flash. To me, a laptop is just another peripheral.

* For cloud deployment, Laclin can run in a chroot on top of Debian on a dedi. So, cloud installation is almost as easy as unzipping a few ZIP files. The ZIP files add up to about 200GB, though, so plenty of disk space is needed.

* For improved security, there are nearly no foreign binaries. I build nearly everything from source. This includes the web browsers -- UChromium, LibreWolf, Tor Browser, and my own browser, AlbusLuna -- as well as LibreOffice. Firmware and old game EXEs might be the only exceptions to the rule.

* Nearly every package can be built offline. This includes packages based on Go, Haskell, Rust, and other languages that usually require Internet access.

* The size of the distro is comparable to that of a typical Debian install, but it's super-light.

* The core desktop executable is only 100KB in size. But the distro has a Start menu, launch buttons, a taskbar, workspaces, a systray, alt-tab, and single-instance support.

Does anybody truly need more?

* I collect and maintain obscure programs that deserve to be distributed and used. The distro includes dozens of unique tools of my own design as well.

* One of my hobbies is to transcode videos to optimum file size, dimensions, and sharpness. I pad some videos with black borders to prevent devices from upscaling them.

I also normalize audio and add readable yellow subtitles below the videos [as opposed to in them].

I use neural nets -- in my distro and not online AIs -- to upscale both videos and images. Note: I use the images for movie posters. The neural nets work with old CPUs and don't require GPUs.

So, the distro includes an OldCoder video toolset which handles all of that.

* The distro can, of course, play and/or rip BluRay discs [older type and not Ultra HD] as well as DVDs.

* I plan to add a number of other major distros to my distro as containers. It'll be a Porting Center on a Stick.

* Built-in servers include Angie and a Fediverse instance. Angie is an enhanced Nginx that handles certs for you. The Fediverse instance is Pleroma-BE plus my own fork of Soapbox-FE.

This post is being posted using Laclin and that same Fediverse instance. Laclin is running in a chroot on top of Debian on a relatively light dedi.

* The package system permits conflicting libraries and program releases to coexist. So, for example, every OpenJDK from 15 to 20 is preinstalled. OpenJDK 08 as well in case you'd like to run Java programs from 2000.

* I've migrated much of the distro from "gcc" to "clang". I hope to go a step further and migrate from "glibc" to "musl" as well. Note: This is based on multiple factors and isn't an implied criticism of "gcc" or "glibc".

* The distro will be useful after the coming apocalypse because the goal is to build everything right into the system. Source code, Wikipedia, WikiHow, street maps, books, music, and puzzles and games. No Internet will be needed.

Of course, after the apocalypse, it might be difficult to obtain laptops, SSDs and Flash sticks, and electricity. But, still. I love my distro.
I added Bluetooth support to my #Linux distro, #Laclin, this weekend. It's years overdue, but I can finally use a single headset both for distro work and for multiple phones.

To try out a Bluetooth headset, I used my favorite #music player, Audacious, and a new player, Qmmp. Note: Qmmp has been around since 2007, but it's new to me. It went into the distro only today.

Qmmp is inspired by, and strongly resembles, Winamp and XMMS. I find the default window to be too dark and small to use. However, if the "KGP_Win98" skin is used and double-size mode is turned on, the Qmmp GUI is quite readable and fun to play with.

Points worth noting:

1. Qmmp supports all standard sound formats and some lesser-known formats.

2. MIDI support is included. To enable MIDI support, distro maintainers need to build a library named "wildmidi", install "freepats", and fiddle with configuration settings for both "wildmidi" and Qmmp. However, the resulting sound is pretty good. As a bonus, "wildmidi" comes with its own CLI MIDI player.

3. Qmmp is a music player, but you can pass a video file to it. In this case, Qmmp acts as a GUI front-end to MPlayer. Note: To make this work, turn on the MPlayer plugin in Settings.

4. You need to download a standard Qmmp skins ZIP file separately. It provides about 133 skins. XMMS and Winamp 2 skins are supported as well. There are apparently 1,000s of them.

5. The program supports a number of special features, either built-in or via plug-ins. Examples include a ReplayGain scanner, an equalizer, a visual analyzer, a playback history log, and conversion of audio files to other formats.

Topic: #gamedev

ScummVM is a games system that is similar to #MAME though not quite the same. It supports a wide range of old games, largely commercial, that were sold for different platforms in the past.

I built #ScummVM from source in my #Linux distro, #Laclin, today. I had no trouble with the build. I recommend the program to other distro developers.

The ScummVM source tree may be obtained as follows:

git clone https://github.com/scummvm/scummvm.git

You don't need the ".git" subdirectories in the tree. You can delete them and this will save nearly 2GB of disk space.

Before a build can be done, you may need to install the devel versions of a number of packages, including the following:

alsa, curl, faad2, fluidsynth, fribidi, giflib5, gtk3, jpeg, libflac, libmad, libmpeg2, libogg, libpng, libvorbis, sdl2, theora, timidity, xorg, and other graphics and multimedia libraries.

I haven't found a formal requirements list in the ScummVM source tree yet. That is one possible issue for other developers. In my case, my distro has all of the devel packages preloaded -- the distro is monolithic -- so it wasn't an issue for me.

This is a "configure"-based FOSS project. The build procedure that I used was similar to the following:

mkdir -p /opt/scummvm bash ./configure \ --prefix=/opt/scummvm \ --disable-all-unstable-engines \ --enable-optimizations make -j4 make install

To make the program work, I needed to create the following configuration file:

$HOME/.config/scummvm/scummvm.ini

which looked initially like this:

[scummvm] scaler=hq scale_factor=2 gfx_mode=hq2x mute=false versioninfo=2.9.0git

To take a screenshot, one presses Alt+S. The screenshot is saved in the current working directory.

That is most of it. Half an hour and a new game system is in place.