TROMjaro Forum

TROMjaro 2021.12.24

We are getting TROMjaro out of Beta. Not that it means much, but just so that people understand that it is stable enough. So this is the first non-beta release that comes with a few changes and explanations.

No more Classic and Modern

Our TROMjaro distribution had a particular layout since we started it in 2019. A left side panel with the apps and the apps-menu, and the top bar with the indicators. I think this makes a lot of sense since most, if not all screens have a “landscape” (rectangular) shape.

So having the apps on the left side creates more workspace for your screen, than having it at the bottom. Anyway, since then we moved from Gnome to XFCE and I tried to replicate the same layout. In some regards it was better, in some maybe not. Compared to Gnome, we managed to implement global menus that are now integrated with the top bar, and the amazing HUD letting you search through the menus of apps.

The downside was that the nature of global menus makes them so that they do not work with all apps, but with (say) 70% of them. That means you’ll find the top global menus only for some 70% of all apps.

Like so:

The 20-25% of the rest have a burger menu and you’ll always gonna find the menu there and not on the top bar.

Here:

And the tiny rest, have a normal menu but won’t export it to the top bar.

This situation may be confusing at times, but not as much as you may think. I use this configuration and I do not find it confusing. But it is an inconsistency and any distribution that ships with global menus will face this inconsistency.

Speaking of global menus, as we mentioned in a previous release, some apps (perhaps some 10% of all) have duplicated window buttons when maximized…it is just a minor visual inconvenience…but it is there.

Now if you look at pretty much all distributions (Linux, Windows, MacOS) they are all inconsistent…Windows 11 ports old menus and “control panels” from the Vista days…MacOs can’t handle global menus properly either, and many popular Linux distros have themes that only apply to half of all apps, or they use flatpaks as default and they don’t respect the theme so you end up with wildly different looking apps, including the postilion of all window buttons and such. If you put the microscope on any operating system, you’ll find lots of such inconsistencies.

TROMjaro is a small distro made by a handful of people. So we can’t push ourselves too much. We fixed the themes situation and now you only have to change the theme from one place to apply to 95% or so of all apps…much better than Pop OS, Ubuntu, Elementary, Budgie and most Linux distros. We fixed the zombie apps icons, something even XFCE did not fix…and we did more to make it very consistent.

The Classic version would have removed the inconsistencies of the global menu and create a different TROMjaro layout. But I personally find the layout we use now as very efficient and sane. So recognizing the value in both, I decided to make 2 ISOs for TROMjaro. But to make this short, I am overwhelmed by the work so I have to choose one or the other. I choose to stick to the default TROMjaro look. It is what I love and what I test since it is my main layout. Anyone is free to fork TROMjaro and provide a different, more consistent, look. I am sorry but it is what it is.

For now I am ok with those few inconsistencies. All distros have them. And they are not that bad. If I will have the time I will improve this somehow or release 2 ISOs again.

The menu is back

The APPS menu should be a proper menu. We used Whisker at first, the default XFCE menu, then changed to Application Launcher, and now we are back to Whisker. Whisker is faster, and requires no hack to make it close and open via the same button/key. Now they introduced horizontal categories and so it makes it very customizable. Here it is:

Looks great, works great! To add it, right click the Panel, then Panel Preferences. Remove the “app launcher” launcher from Items, and add Whisker menu instead of it. As for settings, do these:

You can also remove the top bar right lock and shut down buttons. Since now they are located in the menu itself.

Custom menu searches are awesome

If you type in the same APPS Menu: “web” and then something say “web how many people are on earth?” and press enter, it will open our trade-free search engine and it will search for “how many people are on earth?”. We added a few such custom searches that can be very useful. See this demo:

Go to Whisker’s menu properties and in the tab “Search Actions” add new entries.

To search the web:

Name: Search the Web
Pattern: web
Command: exo-open --launch WebBrowser https://search.trom.tf/search?q=%u

To search locally for files and folders:

Name: Search for Files Locally
Pattern: files
Command: catfish --path=~ --start %s

To search on Wikipedia:

Name: Search on Wikipedia
Pattern: wiki
Command: exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u

To search on our Invidious instance for videos:

Name: Search for Videos Online
Pattern: video
Command: exo-open --launch WebBrowser https://ytb.trom.tf/search?q=%u

To search for images using search.trom.tf:

Name: Search for Images Online
Pattern: image
Command: exo-open --launch WebBrowser https://search.trom.tf/search?q=%u&categories=images

To search for torrents using search.trom.tf:

Name: Search for Files Online
Pattern: download
Command: exo-open --launch WebBrowser https://search.trom.tf/search?q=%u&categories=files

To search on our maps.trom.tf:

Name: Search Online Maps
Pattern: map
Command: exo-open --launch WebBrowser https://maps.trom.tf/#q=%u

To search for news using search.trom.tf:

Name: Search for News Online
Pattern: news
Command: exo-open --launch WebBrowser https://search.trom.tf/search?q=%u&categories=news

To search for scientific papers using search.trom.tf:

Name: Search for Scientific Papers Online
Pattern: science
Command: exo-open --launch WebBrowser https://search.trom.tf/search?q=%u&categories=science

To search for documentaries and lectures via our videoneat.com:

Name: Search for Documentaries/Courses Online
Pattern: edu
Command: exo-open --launch WebBrowser https://www.videoneat.com/?s=%u

To search for trade-free goods and services via our Trade-Free Directory:

Name: Search for Trade-Free Goods and Services Online
Pattern: tf
Command: exo-open --launch WebBrowser https://www.directory.trade-free.org/?s=%u

To search for help with TROMjaro, use our forum:

Name: Search the TROMjaro Forum
Pattern: help
Command: exo-open --launch WebBrowser https://forum.tromjaro.com/search?q=%u

WebAPPS

It is now very easy to make a webapp out of any website via our webapp…app :slight_smile:

The package is called webapp-manager . Here is a demo of creating a webapp for videoneat.com so you can watch trad-free courses and documentaries. And save your favorites inside of the app:

As you can see it will remember to open the magnet links with webtorrent or what I have added to my favorite list. Great!

Update the zombie script again… :smiley:

Go to .local/bin and edit the file fix-tweaked-desktop-files - replace all of what is there with:

#!/bin/bash
pidof -sq -o %PPID -x "$(basename "$0")" && exit
data="$HOME"/.local/share/applications/tweaked-desktop-files
data2="$HOME"/.local/share/applications/bakkedup-desktop-files

# Directories where desktop files are stored
user="$HOME"/.local/share/applications
flatpak_local="$HOME"/.local/share/flatpak/exports/share/applications
flatpak_global=/var/lib/flatpak/exports/share/applications
pacman_local=/usr/local/share/applications
pacman_global=/usr/share/applications
snap=/var/lib/snapd/desktop/applications

detectfiles() {
	for file in "$user"/*.desktop; do
		name=$(basename "$file") || continue
		[ -d "$file" ] || grep -xq "\(flatpak-local\|flatpak-global\|pacman-local\|pacman-global\|snap\)/$name" "$data" && continue
		if [ -f "$flatpak_local/$name" ]; then
			echo "flatpak-local/$name" >> "$data"
		elif [ -f "$flatpak_global/$name" ]; then
			echo "flatpak-global/$name" >> "$data"
		elif [ -f "$pacman_local/$name" ]; then
			echo "pacman-local/$name" >> "$data"
		elif [ -f "$pacman_global/$name" ]; then
			echo "pacman-global/$name" >> "$data"
		elif [ -f "$snap/$name" ]; then
			echo "snap/$name" >> "$data"
		fi
	done
}

fixfiles() {
	lastmod=$(stat -c "%Y" "$data")
	tmp="$(mktemp)"
	trap 'rm $tmp' EXIT
	[ -f "$data" ] && cp "$data" "$tmp" && copied='true'
	lineno=0
	[ "$copied" = 'true' ] && while IFS= read -r line; do
		((lineno++))
		name=${line#*/}
		file="$user/$name"
		# shellcheck disable=2015 # To disable shellcheck error here, line below is intended to work this way
		echo "$line" | grep -xq '\(flatpak-local\|flatpak-global\|pacman-local\|pacman-global\|snap\)/.\+' && [ -f "$file" ] || { sed -i "${lineno}d" "$tmp" && ((lineno--)) ; continue; }
		[ -f "$flatpak_local/$name" ] ||
			[ -f "$flatpak_global/$name" ] ||
			[ -f "$pacman_local/$name" ] ||
			[ -f "$pacman_global/$name" ] ||
			[ -f "$snap/$name" ] ||
			mv "$file" "$file.bak" && echo "$line" >> "$data2"
	done < "$data"

	[ "$copied" = 'true' ] && [ "$(stat -c '%Y' "$data")" = "$lastmod" ] && sort "$tmp" | uniq > "$data"

	for bakfile in "$user"/*.desktop.bak; do
		origfile="${bakfile%.bak}"
		[ -f "$origfile" ] && continue
		name=$(basename "$origfile") || continue
		[ -f "$flatpak_local/$name" ] ||
			[ -f "$flatpak_global/$name" ] ||
			[ -f "$pacman_local/$name" ] ||
			[ -f "$pacman_global/$name" ] ||
			[ -f "$snap/$name" ] &&
			mv "$bakfile" "$origfile"
	done
}

while :; do
	user_new=$(ls -ad "$user"/*.desktop 2>/dev/null)
	flatpak_local_new=$(ls -ad "$flatpak_local"/*.desktop 2>/dev/null)
	flatpak_global_new=$(ls -ad "$flatpak_global"/*.desktop 2>/dev/null)
	pacman_local_new=$(ls -ad "$pacman_local"/*.desktop 2>/dev/null)
	pacman_global_new=$(ls -ad "$pacman_global"/*.desktop 2>/dev/null)
	snap_new=$(ls -ad "$snap"/*.desktop 2>/dev/null)
	[ "$user_new" != "$user_old" ] && detectfiles
	[ "$flatpak_local_new" != "$flatpak_local_old" ] ||
		[ "$flatpak_global_new" != "$flatpak_global_old" ] ||
		[ "$pacman_local_new" != "$pacman_local_old" ] ||
		[ "$pacman_global_new" != "$pacman_global_old" ] ||
		[ "$snap_new" != "$snap_old" ] && fixfiles
	user_old=$user_new
	flatpak_local_old=$flatpak_local_new
	flatpak_global_old=$flatpak_global_new
	pacman_local_old=$pacman_local_new
	pacman_global_old=$pacman_global_new
	snap_old=$snap_new
	sleep 5
done

That’s it. From now on we really hope that the ISO releases will come with very few new changes! Grab the ISO from here.