One-вкладыш:
Gtk3ThemeName=/tmp/$RANDOM$$ && gcc -o $Gtk3ThemeName -include stdio.h -include gtk/gtk.h -xc <(echo 'int main() {gchar *prop; gtk_init(0, 0); g_object_get(gtk_settings_get_default(), "gtk-theme-name", &prop, 0); return !printf("%s\n", prop);}') $(pkg-config gtk+-3.0 --cflags --libs 2>/dev/null) 2>/dev/null && Gtk3ThemeName="$($Gtk3ThemeName && rm $Gtk3ThemeName)" || unset Gtk3ThemeName
Несколько более читабельно:
Gtk3ThemeName=/tmp/$RANDOM$$
if gcc -o $Gtk3ThemeName -include stdio.h -include gtk/gtk.h -xc <(echo '
int main() {
gchar *prop;
gtk_init(0, 0);
g_object_get(gtk_settings_get_default(), "gtk-theme-name", &prop, 0);
return !printf("%s\n", prop);
}') $(pkg-config gtk+-3.0 --cflags --libs 2>/dev/null) 2>/dev/null; then
Gtk3ThemeName="$($Gtk3ThemeName && rm $Gtk3ThemeName)"
else
unset Gtk3ThemeName
fi
После этого вы можете просто echo "$Gtk3ThemeName"
напечатать название темы.
Если не установлен GTK3 (или если gcc
или pkg-config
не удалось, или если /tmp/
не доступен для записи или защиты от запуска), переменная в итоге окажется пустой.