antiX26 with Trinity Desktop: the ISO

This is my implementation of antiX26 with Trinity Desktop (TDE) with turnstile login daemon and slimski Login Manager.

It complements the turnstile implementation of Xfce Desktop documented here

I have spent some time deciding on the best way to implement DE’s in antiX26.. I have concluded that the best option is to retain both turnstile and slimski , because that is minimal disturbance of the default antiX26, and all the WM’s and init systems continue to work.

Trinity requires some extra work compared to Xfce. The Dolphin File Manager needs to be installed and configured.

I have made an .iso file , and it is available at sourceforge

It corrects the partition mounting and reboot/halt issues with raw Trinity, and have provided an altenate File Manager Dolphin.

The following replies contain some howto info … for those DIY enthusiasts and as documentation.

I would like to acknowledge assistance from @berninghausen and @ProwlerGr .

I hope that the Trinity version may be helpful to someone wanting to start in antiX with a Qt-based DE, instead of the default WM’s.

Trinity is based on a fork of KDE3 and it includes its own forked copy of Qt, so it is independent of Qt versions.

antiX with Trinity has a slightly smaller memory ( ie ram) footprint than antiX with Xfce. The figures are

Ram usage at idle as reported by Conky in a 4Mb VM
 - antiX26 + zzz-IceWM                  230-240 M
 - antiX26 + Xfce ( turnstile version)  520-530 M
 - antiX26 + Xfce ( consolekit version) 500-510 M
 - antiX26 + Trinity ( with turnstile)  440-450 M

Please report any issues.

Note:

  • Use the Install Antix icon if you wish to install from this .iso . There will be other icons called Custom AntiX Install … ignore them… they are filesystems.
  • Use the the Exit Antix Icon to shutdown or reboot.
  • The live iso uses the same demo:demo and root:root logins as the official antiX26
  • The iso defaults to the dinit init system, but you can choose any init system in the grub menu, as with the official antiX26
  • The full 13 WM’s that come with the official antiX26 are available in addition to Trinity.

Adding Trinity Desktop Environment to antiX26

I installed antix26-x64-full.iso. Then, set the repo to a local mirror, did apt update and apt upgrade. Then did the following to install Trinity DE.

  1. There are stable and rolling versions of TDE available from repositories.
    I chose a stable version for Debian Trixie.
    One has to configure the apt package manager
Create the file /etc/apt/sources.list.d/tde.list and add the following lines to it.
# TDE R14.1.x series

deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x trixie main deps

# Optional sources
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x trixie main deps

Replace ‘trixie’ with your actual distribution release name (for example ‘trixie’

  1. One needs to import a key
The best way to install GPG key is to manually download and install package trinity-keyring. The advantage is that this method of installation is not dependent on the availability of the key server. Another advantage is that the key is not integrated into the global apt keyring, but is installed as a separate file:

$ wget http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-keyring.deb
$ sudo dpkg -i trinity-keyring.deb

It does not matter where the file trinity-keyring.deb is stored.
The actual keyring trinity-keyring.gpg will be installed by dpkg in /usr/share/keyrings.

  1. Install trinity
apt-get update
apt install tde-trinity

After installing the environment, it is also a good idea to install the localization packages so that you can switch the environment to your native language. For example, for Czech you would run:

apt-get install tde-i18n-cs-trinity

I stayed with the default en_US

  1. After rebooting , the Login Manager ( slimski) come up with the default still zzz-icewm. We will reset tha tlater.
    One can choose TDE using F1 key, and Trinity the starts. It looks like this

a welcome popup, and Conky is inherited from antiX.
One can go on throught the help screens, and one eventually arrives at

where one can see the lower panel with 4 workspaces (it calls them desktops) , a Menu launcher, and various icons. There is only one panel. Its memory usage at idle is about 405M according to Conky.

5. Konqueror or Firefox?

The first thing to note about Trinity is that it pushes Konqueror as both a Browser and a File Manager. Ignore that , it is dated . Konqueror as a browser will not cope with modern wesites. It works as a File Manager, but there are better choices.

One should use Firefox for browsing ( it is installed) , and probably Dolphin ( the package dolphin-trinity needs to be installed) as a File Manager.

5a. Adding Dolphin to Trinity
apt install dolphin-trinity
apt install polkit-agent-tde

It works. Dolphin is found in System → File Manager (Dolphin).
Unlike Thunar in Xfce in antiX, Dolphin in Trinity in antiX can see all the internal hard disk partitons. However it does not have mount permission. The default file-manager ( zzz-FM) is the same.

To fix this do the following

cd /etc/udevil
vi udevil.conf
modify the following lines to
allowed_internal_devices = *
allowed_media_dirs = /media/$USER, /run/media/$USER , /media

The make a polkit rule

cd /etc/polkit-1/rules.d
vi 10-enable-mount.rules
[add the following lines
// Allow udisks2 to mount devices without authentication
// for users in the "wheel" group.
polkit.addRule(function(action, subject) {
    if ((action.id == "org.freedesktop.udisks2.filesystem-mount-system" ||
         action.id == "org.freedesktop.udisks2.filesystem-mount") &&
        subject.isInGroup("storage")) {
        return polkit.Result.YES;
    }
});

That allows any user in the “storage” group to mount files.
Make sure user is in the “storage” group

groupadd storage
usermod -aG storage <username>
reboot

Dolphin will now mount any internal disk partiton without requiring authorisation.

When you look at the content of a file with Dolphin, it brings up a window called ‘Session Chooser-Kate’ and you need to click on ‘New Session’ and it will display the content (if it is text) in the Kate editor. When you terminate Kate, you need to delete the Session if you are just looking.

  1. To Exit, one can use the dropdown menu on background, or the Menu icon in the panel. It gives the following choices

and no matter what you choose it drops you back th the slimski Login Manager. There one is supposed to be able to type ‘halt’ or ‘reboot’ in the user name section, and give the root password, but this does not work … it gives the same ‘preview’ error as Xfce, and all you can do is log back in again. So Trinity in antiX has the same Exit problems as Xfce. We ave to go thru all the same steps

FIRST
One can exit by typing ‘poweroff’ or ‘reboot’ at the CLI as root.

SECOND
We need to edit /etc/slimski.local.conf to define the halt and reboot commands.

systemhalt_enabled true
poweroff_enabled true
systemhalt_cmd /usr/sbin/poweroff
reboot_enabled true
reboot_cmd /usr/sbin/reboot

[ and while there fix te default desktop ]
default_sessiontype  tde

That alone achieves a situation where halt/reboot work intermittantly.
What is also needed is some delay in the startup of slimski, because it is restarting too soon and thinks it is being used in preview mode.
We can modify the init system to introduce a delay

[Go to /etc/dinit.d and edit the file slimski]
type = process
command = /usr/local/bin/my-slimski-wrapper.sh
logfile = /tmp/slimski.log

depends-on = seatd

Then write the wrapper program my-slimski-wrapper.sh

cd /usr/local/bin
vi /usr/local/bin/my-slimski-wrapper.sh
[add the lines]
#!/bin/sh
sleep 6
exec /usr/bin/slimski -nodaemon -z -i
[ make it executable]
chmod 755 my-slimski-wrapper.sh

So slimski waits 6 seconds when started or restarted by dinit.
Similar modifications are needed for other init systems.

Now any user can halt or reboot on the slimski screen.
Logout->Logout or Logout->Shutdown or Logout->Reboot will drop you back to the Login Manager screen. From there one
can type 'halt or ‘reboot’ for the username and give the superuser password , an
d it will reboot or poweroff.

If the delay is really inadequate, it may drop you back to the Login Manager scr
een in ‘preview’ mode, in which case attempts to halt or reboot will fail with a
message ‘systemhalt_enabled=TRUE but this action is unavailable during preview’
. In this case relogin as yourself and use poweroff or reboot at the CLI.

The above is a known issue with slimski. If it restarts while the xserver is sti
ll running it will start in preview mode.

THIRD
There is nothing else needed. Unlike Xfce , Trinity seems to have the necessary permissions set , so that a user does not have to become root to halt or reboot.

If the preview problem with slimski persists, or one dislikes shutting down via slimski, one can bypass it by making one’s own Exit icon using the antiX desktop-session- exit script which is found in /usr/local/bin.
Settings->Add-Menu-Item → setup the add-desktop popup with Item Location set to Desktop Shortcut. Set Item name to ‘Exit antiX’. Set Item Command to ‘/usr/local/bin/desktop-session-exit’. Set File Name to ‘desktop-session-exit’.
If you get the alert about disabling automatic applications menu answer ‘no’.
The item ‘Exit antiX’ appears in an icon on the TDE background.
This allows anyone to Logout, Reboot or Shutdown, without slimski issues.

  1. Setup autostart apps.
    In the Trinity Control Centre, if you go to TDE Components → Service Manager, you get a list of startup services … but none of the things on the startup desktop are there … Things like Magnus and Yad and the Other Desktops window.
    Some of then may be being started by antiX?
    Then I found this
    “If you have the kcontrol-autostart-trinity package installed, you can easily manage apps from the control panel:”
    So
apt-get install kcontrol-autostart-trinity

Now, in the Trinity Control Centre, I can go to TDE Components → Autostart Manager
… and I get an empty Menu .
Apparently antiX is starting those annoying startups, not Trinity. ???

  1. Add some antiX programs to the menues.
    There is one usefile antiX settings program missing from the Trinity menues. It
    is antiX Control Centre. One can add items to
    the menues with Settings → Add Menu Item It requires knowing the name of the program executable and the name of its .desk top file. For example AntiX Control Centre executable is/usr/local/bin/antixcc.sh
    .shand its desktop file isantiXCC.desktop`.
    It appears in the menu under whatever you specify in te Item Category box. I used Settings.

  2. Choice of Terminal.
    The background dropdown menu offers Konsole terminal. I found it had a poor set of colour settings and would not follow the theme if I wanted ‘dark’ background.
    A better choice is ROXTerm … found in Utilities → Terminal Emulator (Rox-Term). It at least sets a comfortable grey background and readable colours.
    There is also Utilities → Terminal Emulator (uRxvt) which sets a black background by default.
    To change themes go to Settings → Trinity Control Centre.
    To change an individual Konsole terminal window use Settings->Configure Konsole in the Terminal top row.
    The annoying feature of Konsole is that each new Terminal you open reverts to the default black on white text colour, and a tiny font.

  3. Session Saving.
    Trinity saves desktop sessions by default on exit. When you log back in, all the previous session’s windows, in all 4 workspaces, reappear.

  4. Is Trinity usable in antiX?
    I find it is OK for basic Terminal work, browsing and File Management. Some of the menu items simply do not work. The desktop is cluttered with Yad popups that I can not suppress. If you install the apps you need , it should be workable. It is the simplest KDI-like Desktop that I could find.

Trinity seems to work perfectly in antiX26 with the default turnstile login daemon. There is no need to consider consolekit or elogind.

I had one problem with graphics programs not starting in the s6-66 init system. The message indicates Authentication failure. If this happens remove your .Xauthority file and reboot. THe system will generate a new clean .Xauthority file when it reboots.

Summary of steps to prepare antiX26 with Trinity for making an .iso file

To make an .iso file for use as an install medium, one needs to setup certain special files before using the AntiX ‘ISO Snapshot’ tool.

  1. Include the install program.
    On a live antiX you see an Install icon, but it does not appear in an installed system. The program is there , it is called /sbin/minstall.
    To add an icon do the following
Look at a live antiX26 ( eg in a VM) and copy out the file `/usr/share/applications/minstall.desktop'
Boot antiX and copy/paste the `minstall.Desktop` file into `~/Desktop`

When you boot my .iso live, you will see two install icons … one called “Custom antiX26 Install” … ignore that , it uses Konqueror. The other is called “Install AntiX” .. use that one … it uses the antiX Gazelle installer.

  1. Setup /etc/skel
    In making an ‘Install’ iso, one’s home directory and other sensitive files in /etc are not copied. To control what the .iso has in the home directory of its ‘demo’ user do the following
    Files placed in /etc/skel will be placed in the /home/demo directory of the .iso file
    so
cd ~nevj
cp -r .config /etc/skel
cp -r .local /etc/skel
cp -r Desktop /etc/skel
cp -r .desktop-session /etc/skel
cp -r .trinity /etc/skel
cd /etc/skel
mkdir Downloads Documents Music Pictures Videos Templates

Those are the necessary non-personal files that will make the ‘demo’ xfce in the .iso boot up the same as my own configured xfce install.

  1. Setup /usr/local/share/live-files/
    To control what the .iso file has in its /etc directory over and above the default for a fresh install, one has to add what is required to /usr/local/share/live-files/files/etc
    In the present case all that is needed is slimski.conf, slimski.local.conf , and dinit.d/slimski.
cp /etc/slimski.conf /usr/local/share/live-files/files/etc
cp /etc/slimski.local.conf /usr/local/share/live-files/files/etc
mkdir /usr/local/share/live-files/files/etc/dinit.d
cp /etc/dinit.d/slimski /usr/local/share/live-files/files/etc/dinit.d/slimski
mkdir /usr/local/share/live-files/files/etc/init.d
cp /etc/init.d/slimski /usr/local/share/live-files/files/etc/init.d/slimski
mkdir /usr/local/share/live-files/files/etc/sv
cp -r /etc/sv/slimski /usr/local/share/live-files/files/etc/sv/slimski
mkdir /usr/local/share/live-files/files/etc/polkit-1
mkdir /usr/local/share/live-files/files/etc/polkit-1/rules.d
cp /etc/polkit-1/rules.d/10-enable-mount.rules /usr/local/share/live-files/files/etc/polkit-1/rules.d
cp -r /etc/chrony /usr/local/share/live-files/files/etc
  1. Run the antiX ‘ISO Snapshot’ tool from the menu.
    It will write scratch files in your home directory, and it puts the .iso file in /home/snapshot.

  2. Unfortunately steps 3 and 4. do not work for the case where the target .iso is a distribution .iso without persistance … ie for making my installation .iso.
    It is necessary to fix this by hand
    I used Void linux to do this step ( saves installing things in antiX)
    First loop mount the .iso file

mount -o loop snapshot-20260707_1726.iso /mnt

Then unsquash the file /mnt/antiX/linuxfs

unsquashfs -d /home/nevj/tmp /mnt/antiX/linuxfs
Parallel unsquashfs: Using 12 processors
267748 inodes (262702 blocks) to write

[==========================================================-] 530450/530450 100%

created 238543 files
created 23503 directories
created 29129 symlinks
created 0 devices
created 50 fifos
created 0 sockets
created 26 hardlinks

Second, transfer the required files from /usr/local/share/live-files/files/etc to /etc , in the temporary copy in ~/tmp

cd /home/nevj/tmp
cp usr/local/share/live-files/files/etc/slimski.conf etc
cp usr/local/share/live-files/files/etc/slimski.local.conf etc
cp -r usr/local/share/live-files/files/etc/dinit.d/slimski etc/dinit.d
cp -r usr/local/share/live-files/files/etc/init.d/slimski etc/init.d
cp -r usr/local/share/live-files/files/etc/sv/slimski etc/sv
cp -r usr/local/share/live-files/files/etc/polkit-1/rules.d/10-enable-mount.rules etc/polkit-1/rules.d
cp -r  usr/local/share/live-files/files/etc/chrony etc

Third … copy all files from the original .iso to a second working directory

mkdir ~nevj/tmp2
cd /mnt
cp -r * ~nevj/tmp2

Fourth … re-squash the edited unsquashed linuxfs folder , replacing the temporary copy in ~nevj/tmp2

cd  ~nevj/tmp2
cd antiX
rm linuxfs
mksquashfs ~nevj/tmp ~nevj/tmp2/antiX/linuxfs -comp xz -b 1024k -always-use-fragments
Parallel mksquashfs: Using 12 processors
Creating 4.0 filesystem on /home/nevj/tmp2/antiX/linuxfs, block size 1048576.
[==========================================================|] 235508/235508 100%

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 1048576
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 2195751.77 Kbytes (2144.29 Mbytes)
	29.61% of uncompressed filesystem size (7415736.20 Kbytes)
Inode table size 2067360 bytes (2018.91 Kbytes)
	21.33% of uncompressed inode table size (9693897 bytes)
Directory table size 2522052 bytes (2462.94 Kbytes)
	35.72% of uncompressed directory table size (7061348 bytes)
Xattr table size 78 bytes (0.08 Kbytes)
	97.50% of uncompressed xattr table size (80 bytes)
Number of duplicate files found 60735
Number of inodes 291227
Number of files 238543

....  many lines skipped .....

Fifth … make a new file linuxfs.info file

du -sb ~nevj/tmp 
cd ~nevj/tmp2/antiX
vi linuxfs.info
[edit in the result of the du command]

Sixth … make a new linuxfs.md5 file

md5sum linuxfs
vi linuxfs.md5
[edit in the new md5sum]

Seventh … Build the final bootable ISO
Use xorriso to master the new bootable ISO for distribution. Make sure xorriso and isolinux [in void ‘syslinux’] are installed.

cd ~nevj/tmp2

sudo xorriso -as mkisofs \
  -V "Custom_antiX26_Install" \
  -o ../antix26-trinity-x86_64.iso \
[ -o ../antix26-xfce-consolekit-x86_64.iso \]
  -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
[in void -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \]
  -c boot/isolinux/boot.cat \
  -b boot/isolinux/isolinux.bin \
  -no-emul-boot -boot-load-size 4 -boot-info-table \
  -eltorito-alt-boot \
[  -e boot/uefi/efiboot.img \]
  -e boot/grub/efi.img \
  -no-emul-boot -isohybrid-gpt-basdat \
  .

The bracketed line [ -e boot/uefi/efiboot.img \] does not work for antiX26 … the file is not there. That means the .iso will not do an UEFI boot from a usb drive … it will do a grub boot, on either a UEF-bios computer or a Legacy-bios computer.
The output from above is

GNU xorriso 1.5.6.pl02 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:../antix26-trinity-x86_64.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 86.0g free
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
Added to ISO image: directory '/'='/home/nevj/tmp2'
xorriso : UPDATE :    1018 files added in 1 seconds
xorriso : UPDATE :    1018 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 432 bytes from file '/usr/lib/syslinux/isohdpfx.bin'
libisofs: NOTE : Automatically adjusted MBR geometry to 1021/138/32
libisofs: NOTE : Aligned image size to cylinder size by 863 blocks
xorriso : UPDATE :  8.45% done
xorriso : UPDATE : Thank you for being patient. Working since 2 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 3 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 4 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 5 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 6 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 7 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 8 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 9 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 10 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 11 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 12 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 13 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 14 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 14 seconds.
xorriso : UPDATE : Thank you for being patient. Working since 15 seconds.
ISO image produced: 1127184 sectors
Written to medium : 1127184 sectors at LBA 0
Writing to 'stdio:../antix26-trinity-x86_64.iso' completed successfully.

Warnings are OK, but check for errors.

The completed, custom install ISO will be generated in the parent directory as antix26-trinity-x86_64.iso.

  1. Test the .iso file in a VM, and then written to a USB flash drive.

Things to do in antiX26 (not DE related)

  1. Setup Network Time Protocol
    There are 2 alternative packages for ntp
  • chrony
  • ntpsec
    We are going to use chrony, so
apt install chrony

There is no service package dinit-service-chrony, so we have to setup a servic
e file in /etc/dinit.d

cd /etc/dinit.d
vi chrony
[add the following lines]
type = process
command = /sbin/chronyd -d
depends-on = loginready
logfile = /var/log/chrony-dinit.log

Start and enable the service

dinitctl start chrony
dinitctl status chrony
dinitctl enable chrony

or use the GUI under Control Centre → Services
Verify that everything is working with

chronyc tracking

If the displayed time is out by a lot ( eg 1 hour ) do

dpkg-reconfigure tzdata

and check that the local time zone is set correctly.

The daemon chronyd needs to be set to start at boot in each init system.

  1. DNS lookup failure
    AntiX used connmand in place of NetworkManager. Check that connmand is running. If running, you need to use connmanctl` to make sure connman uses dhcp on the correct interface and has nameservers. Try the following
connmanctl services
[make sure your interface's service-name is at top of the list ... note  the name]
connmanctl config <service-name> --ipv4 dhcp
connmanctl config <service-name> --nameservers 1.1.1.1 8.8.8.8

Test that DNS is working by pinging something.

The markdown files used to create this post are available on Github

https://github.com/nevillejackson/Unix/tree/main/antiX26