Linux Saloon Distribution Explorations

Exploring Linux distributions is an activity that I think is fun for a lot of people and since Linux Saloon is the “entry level” sort of show where we have fun with Linux at a user level. As such, I am looking for some suggestions for Linux distros to take out around the town, kick the tires and see what they have to offer. I am looking for distros that are more esoteric, so not mainline Ubuntu, Debian, Fedora or openSUSE (as much as I :heart: openSUSE…). Spins of these are of course okay. For example, we recently did GeckoLinux, a spin of openSUSE and I would consider Nobara as something different too.

Some other examples of distro that I have on my list to try is BunsenLabs Linux, Blend OS and Lakka. I’m not picky about the distros, I am looking primarily for things that are not necessarily in the normal discourse.

I super appreciate your help and I look forward to the torrent of suggestions!

I would recommend trying Qubes. I’ve not been able to get it to work on any of the hardware that I have.

1 Like

Thank you! I will put that on the list!

1 Like

Ubuntu Studio.

I know that you don’t want this mainline distro – but I would argue that US touts the lowlatency kernel - which is, I think, the only distro that makes a claim to modify the kernel in this way rather than merely globbing together a set of default app selections, Desktop Evironment, and theme.

It would be interesting to know, why they think this is important and what on a practical level is accomplished by this “mainline” distro modification.

1 Like

Extracts the latest iCal link from https://cubiclenate.com/linuxsaloon/, downloads the iCal from Google and outputs the upcoming events in local time. This is how BASH people tell you they don’t want to miss the next episode.

linux_saloon_times

#!/bin/bash
# License: BSD-0 Clause, Ulfnic

StdErr() {
	if [[ $1 == '0' ]]; then
		[[ $2 ]] && printf '%s\n' "$2" 1>&2
	else
		[[ $2 ]] && printf '%s%s\n' "ERROR: ${0##*/}, $2" 1>&2
		exit "$1"
	fi
}

LinuxSaloonUrl='https://cubiclenate.com/linuxsaloon/'

printf '%s %s\n' 'Downloading:' "$LinuxSaloonUrl"
LinuxSaloonPage=$(wget -qO - "$LinuxSaloonUrl") || StdErr 1 'Failed to download: '$LinuxSaloonUrl

Re='href="https://calendar.google.com/calendar/ical/([^"]+)"'
[[ $LinuxSaloonPage =~ $Re ]] || StdErr 1 'Failed to parse iCal URL'
IcalUrl='https://calendar.google.com/calendar/ical/'${BASH_REMATCH[1]}
(( ${#IcalUrl} < 500 )) || StdErr 1 'Failed to parse iCal URL'

printf '%s %s\n' 'Downloading:' "$IcalUrl"
IcalPage=$(wget -qO - "$IcalUrl") || StdErr 1 'Failed to download: '$IcalUrl

printf '%s\n\n' 'Reading iCal...'
ConvertDate() {
	# Convert from ISO 8601 format so it's recognizable by `date`
	local \
		Re='^([0-9][0-9][0-9][0-9])-?([0-9][0-9])-?([0-9][0-9])T([0-9][0-9]):?([0-9][0-9]):?[0-9][0-9](Z|\+[0-9][0-9]:[0-9][0-9])$' \
		NormalizedDate

	if [[ $2 =~ $Re ]]; then
		NormalizedDate=${BASH_REMATCH[1]}-${BASH_REMATCH[2]}-${BASH_REMATCH[3]}T${BASH_REMATCH[4]}:${BASH_REMATCH[5]}${BASH_REMATCH[6]}
		date "$1" -d "$NormalizedDate" || StdErr 1 'Date parse error on: '"$1"
	else
		StdErr 1 'Date parse error on: '"$1"
	fi
}

printf -v NowEpoch '%(%s)T'
declare -A GroupArr
Group=

while LANG=C IFS=':'$'\r' read F1 F2; do

	if [[ $Group == 'VEVENT' ]]; then
		case $F1 in
			DTSTART|DTEND|SUMMARY|DESCRIPTION|STATUS)
				GroupArr["$F1"]=$F2
				;;
			END)
				if [[ ${GroupArr['DTSTART']} ]]; then
					StartEpoch=$(ConvertDate '+%s' "${GroupArr['DTSTART']}")
					if (( StartEpoch > NowEpoch )); then
						[[ ${GroupArr['DESCRIPTION']} ]] &&	printf '\e[32m%s\e[0m %s\n' '   Desc:' "${GroupArr['DESCRIPTION']}"
						[[ ${GroupArr['SUMMARY']} ]] && 	printf '\e[32m%s\e[0m %s\n' 'Summary:' "${GroupArr['SUMMARY']}"
						[[ ${GroupArr['STATUS']} ]] && 		printf '\e[32m%s\e[0m %s\n' ' Status:' "${GroupArr['STATUS']}"
															printf '\e[32m%s\e[0m %s\n' '  Start:' "$(ConvertDate '+%F %l:%M %p' "${GroupArr['DTSTART']}")"
						[[ ${GroupArr['DTEND']} ]] &&		printf '\e[32m%s\e[0m %s\n' '    End:' "$(ConvertDate '+%F %l:%M %p' "${GroupArr['DTEND']}")"

						diff=$(( StartEpoch - NowEpoch ))
						days=$(( diff / 86400 ))
						hours=$(( diff / 3600 % 24 ))
						minutes=$(( ( diff / 60 ) % 60 ))
						seconds=$(( diff % 60 ))
						printf '\e[32m%s\e[0m %s\n' '     In:' "$days days, $hours hours, $minutes minutes, $seconds seconds"

						printf '\n'
					fi
				fi
				Group=
				declare -A GroupArr
				;;
		esac
	elif [[ $F1 == 'BEGIN' ]]; then
		Group=$F2
		continue
	fi
	
done <<< $IcalPage
1 Like

I guess that it is normal that everybody prefers its favorite distribution. So I would probably say Mageia, I like this one and one laptop runs with it. But then there are so many gems like Bunsenlabs, good idea btw, Salix (I vaguely remember you had this one on the show).
@GeckoLinux also makes a good looking Debian spin with the same premise.

There are so many distros so for now I will stop here.

2 Likes

I updated the calendar embed. Can you tell me if it multi-timezone friendly? BTW, this bash script is so flipping cool!

1 Like

Confirming the site outputs the right date and times for me now.

Thank you.

1 Like