aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2013-05-11 18:18:54 +0200
committerdakkar <dakkar@thenautilus.net>2014-08-02 18:49:04 +0100
commit54dbf2012b0915ae43ef40b89c3ea2bb03818c2a (patch)
tree6e0c80e9c5d11226df94674eca9319a2d8813d6e
parentthe laptop looks better with white text (diff)
downloadfvwm-crystal-54dbf2012b0915ae43ef40b89c3ea2bb03818c2a.tar.gz
fvwm-crystal-54dbf2012b0915ae43ef40b89c3ea2bb03818c2a.tar.bz2
fvwm-crystal-54dbf2012b0915ae43ef40b89c3ea2bb03818c2a.zip
use XDG apps descriptions for launcher
-rw-r--r--recipes/TopLine-single15
-rwxr-xr-xscripts/menu.pl44
2 files changed, 45 insertions, 14 deletions
diff --git a/recipes/TopLine-single b/recipes/TopLine-single
index 5c572dc..f7b5e7a 100644
--- a/recipes/TopLine-single
+++ b/recipes/TopLine-single
@@ -127,20 +127,7 @@ DestroyModuleConfig ApplicationPanel: *
*ApplicationPanel: Padding 1 1
*ApplicationPanel: Frame 0
-# fvwm-crystal.apps {{{2
-
-# This creates the distribution-based panel button - defaut distribution
-# icon, only menu is opened (no default app on the panel)
-PipeRead 'fvwm-crystal.apps --database=$[FVWM_DISTROMENUDIR]/Applications --database=$[FVWM_SYSTEMDIR]/Applications --database=$[FVWM_USERDIR]/Applications --with=/Applications/$[FVWM_DISTROMENUNAME] --search-icons-in=$[FVWM_USERDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_USERDIR]/icons/$[Icon_Theme]/22x22/apps:$[FVWM_SYSTEMDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_SYSTEMDIR]/icons/$[Icon_Theme]/22x22/apps:$[FVWM_DISTROMENUDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_DISTROMENUDIR]/icons/$[Icon_Theme]/22x22/apps --default-file-icon=22x22/apps/default.png --default-dir-icon=22x22/categories/directory.png --min-submenu-length=5 --sort=prio --panel-icons=standard --panel-action1=menu --panel-action2=none --panel-action3=menu --menu-pos=S --menuname-suffix="Panel" --check-execs'
-
-# This creates the main panel with applications - default app icon is
-# shown on the panel, and can be launched using RMB; LMB opens the app
-# category menu
-PipeRead 'fvwm-crystal.apps --database=$[FVWM_DISTROMENUDIR]/Applications --database=$[FVWM_SYSTEMDIR]/Applications --database=$[FVWM_USERDIR]/Applications --without=/Applications/$[FVWM_DISTROMENUNAME] --search-icons-in=$[FVWM_USERDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_USERDIR]/icons/$[Icon_Theme]/22x22/apps:$[FVWM_SYSTEMDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_SYSTEMDIR]/icons/$[Icon_Theme]/22x22/apps:$[FVWM_DISTROMENUDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_DISTROMENUDIR]/icons/$[Icon_Theme]/22x22/apps --default-file-icon=22x22/apps/default.png --default-dir-icon=22x22/categories/directory.png --min-submenu-length=3 --sort=prio --panel-icons=topapp --panel-action3=menu --panel-action2=none --panel-action1=topapp --menu-pos=S --menuname-suffix="Panel" --check-execs'
-
-# This creates the menu with applications available under Alt+Win_R
-PipeRead 'fvwm-crystal.apps --database=$[FVWM_DISTROMENUDIR]/Applications --database=$[FVWM_SYSTEMDIR]/Applications --database=$[FVWM_USERDIR]/Applications --search-icons-in=$[FVWM_USERDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_USERDIR]/icons/$[Icon_Theme]/22x22/apps:$[FVWM_SYSTEMDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_SYSTEMDIR]/icons/$[Icon_Theme]/22x22/apps:$[FVWM_DISTROMENUDIR]/icons/$[Icon_Theme]/22x22/categories:$[FVWM_DISTROMENUDIR]/icons/$[Icon_Theme]/22x22/apps --default-file-icon=22x22/apps/default.png --default-dir-icon=22x22/categories/directory.png --min-submenu-length=3 --sort=prio --panel-icons=topapp --panel-action3=menu --panel-action2=none --panel-action1=topapp --menu-pos=S --no-panel --check-execs'
-# }}}2
+PipeRead $[FVWM_USERDIR]/scripts/menu.pl
Module FvwmButtons ApplicationPanel
diff --git a/scripts/menu.pl b/scripts/menu.pl
new file mode 100755
index 0000000..d9eeaeb
--- /dev/null
+++ b/scripts/menu.pl
@@ -0,0 +1,44 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.016;
+use Linux::DesktopFiles;
+use List::Util 'first';
+use Data::Printer;
+
+my $d = Linux::DesktopFiles->new(
+ with_icons => 1,
+ full_icon_paths => 1,
+ skip_svg_icons => 1,
+ icon_dirs_last => ['/usr/share/icons/gnome'],
+);
+
+my $f = $d->parse_desktop_files();
+
+for my $cat (keys %$f) {
+ my @apps=@{$f->{$cat}};
+ my $menu_name='/Applications/'.ucfirst(lc($cat)).'Panel';
+ say "DestroyMenu $menu_name";
+ say "AddToMenu $menu_name";
+ for my $app (@apps) {
+ next unless $app->{Icon};
+ printf qq{+ "%%%s%%\$[gt.%s]" Exec exec "%s"\n},
+ $app->{Icon},$app->{Name},$app->{Exec};
+ }
+ say '';
+}
+
+my $buttons=0;
+for my $cat (keys %$f) {
+ my @apps=@{$f->{$cat}};
+ my $app=first { $_->{Icon} } @apps;
+ next unless $app;
+ ++$buttons;
+
+ my $menu_name='/Applications/'.ucfirst(lc($cat)).'Panel';
+ printf qq{*ApplicationPanel: (1x1, Size 22 22, Icon "%s", \\\n},$app->{Icon};
+ printf qq{Action (Mouse 1) Exec exec "%s", \\\n},$app->{Exec};
+ printf qq{Action (Mouse 3) Menu %s \$[MenuPosition_S] )\n},$menu_name;
+}
+
+say "SetEnv ApplicationPanelLength $buttons";