Ich nutze als Window Manager fvwm3.
Damit dort die flatpak apps über die Menüs aufzurufen sind habe ich zum einen ein shell script
flatpak_menu.sh
definiert:
#! /bin/bash
icon_paths=(
"${HOME}/.local/share/flatpak/exports/share/icons/hicolor/scalable/apps/"
"${HOME}/.local/share/flatpak/exports/share/icons/hicolor/"
"${HOME}/.local/share/flatpak/appstream/"
)
for p in "${icon_paths[@]}"
do
printf "ImagePathIfThere ${p}\n"
done
# define special icons
declare -A iconmap=(
[com.github.alainm23.byte]="24x24/apps/com.github.alainm23.byte.svg:24x24"
[org.eclipse.Java]="24x24/apps/eclipse.svg:24x24"
[io.github.jliljebl.Flowblade]="24x24/apps/io.github.jliljebl.Flowblade.svg:24x24"
[org.fritzing.Fritzing]="24x24/apps/org.fritzing.Fritzing.svg:24x24"
[com.simulide.simulide]="flathub/x86_64/active/icons/64x64/com.simulide.simulide.png"
)
# create menu entries
printf "AddToMenu FlatpakMenu \"Flatpak Menu\" Title\n"
if [ -x "$(command -v flatpak)" ]
then
mapfile -t flat_commands < <(flatpak list --columns=name,application --user --app | sort)
for l in "${flat_commands[@]}"
do
app_name="$(cut -f 1 <<<"${l}")"
app_command="$(cut -f 2 <<<"${l}")"
app_icon="${iconmap[${app_command}]:=${app_command}.svg:24x24}"
printf "+ \"%s%%%s%%\" Exec flatpak run %s\n" \
"${app_name}" "${app_icon}" "${app_command}"
done
fi
Dies script wird in der fvwm3 Konfiguration aufgerufen:
+ I DestroyMenu FlatpakMenu
+ I PipeRead "$[FVWM_USERDIR]/flatpak_menu.sh"
Und dann als wird ein Untermenü in ein bestehendes Menü integriert:
+ "Flatpak Menu%16x16/mimetypes/application-vnd.flatpak.svg%" PopUp FlatpakMenu