Sync from SUSE:SLFO:Main xdg-menu revision 5b51617c623fbbd4cce56ea2a721a2ee
This commit is contained in:
commit
7e2c807697
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
14
xdg-menu-accept-defaultlayout-bnc529057.patch
Normal file
14
xdg-menu-accept-defaultlayout-bnc529057.patch
Normal file
@ -0,0 +1,14 @@
|
||||
--- xdg_menu
|
||||
+++ xdg_menu
|
||||
@@ -638,6 +638,11 @@
|
||||
interpret_Exclude($tree->[$i], $menu{'entries'}, $pool);
|
||||
$i++;
|
||||
}
|
||||
+ elsif ($tree->[$i] eq 'DefaultLayout') {
|
||||
+ #FIXME: use the values
|
||||
+ $i++;
|
||||
+ $i++;
|
||||
+ }
|
||||
elsif ($tree->[$i] eq '0') {
|
||||
$i++;
|
||||
if ($tree->[$i] !~ /^\s*$/) {
|
229
xdg-menu-box.patch
Normal file
229
xdg-menu-box.patch
Normal file
@ -0,0 +1,229 @@
|
||||
diff -ur xdg-menu.orig/xdg_menu xdg-menu/xdg_menu
|
||||
--- xdg-menu.orig/xdg_menu 2004-11-30 13:23:12.459157549 +0100
|
||||
+++ xdg-menu/xdg_menu 2004-11-30 13:28:27.640045633 +0100
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
my $die_on_error = 0;
|
||||
my $verbose = 0;
|
||||
+my $fullmenu = 0;
|
||||
|
||||
my @language_keys;
|
||||
|
||||
@@ -1410,6 +1411,40 @@
|
||||
|
||||
sub output_blackbox_menu ($;$)
|
||||
{
|
||||
+ my ($menu, $indent) = @_;
|
||||
+
|
||||
+ my $output = '';
|
||||
+
|
||||
+ $output .= "[begin] (Menu)\n";
|
||||
+ $output .= "[exec] (xterm) {xterm}\n[separator]\n";
|
||||
+ $output .= output_blackbox_inner_menu ($menu, $indent);
|
||||
+ $output .= "[separator]\n";
|
||||
+ $output .= '[config] (Configuration)
|
||||
+ [workspaces] (Workspace)
|
||||
+ [submenu] (System Styles) {Choose a style...}
|
||||
+ [stylesdir] (/usr/share/blackbox/styles)
|
||||
+ [stylesdir] (/usr/share/fluxbox/styles)
|
||||
+ [stylesdir] (/usr/share/openbox/styles)
|
||||
+ [end]
|
||||
+ [submenu] (User Styles) {Choose a style...}
|
||||
+ [stylesdir] (~/.blackbox/styles)
|
||||
+ [stylesdir] (~/.fluxbox/styles)
|
||||
+ [stylesdir] (~/.openbox/styles)
|
||||
+ [end]
|
||||
+ [separator]
|
||||
+ [exec] (Run Command) {bbrun -a -w}
|
||||
+ [exec] (Lock Screen) {xlock}
|
||||
+ [restart] (Restart) {}
|
||||
+ [exit] (Logout)
|
||||
+[end]
|
||||
+';
|
||||
+ $output .= "[end]\n";
|
||||
+ return $output;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+sub output_blackbox_inner_menu ($;$)
|
||||
+{
|
||||
my ($menu, $indent) = @_;
|
||||
|
||||
my $output = '';
|
||||
@@ -1432,7 +1467,7 @@
|
||||
$output .= " [exec] ($name) {$exec}\n";
|
||||
}
|
||||
elsif ($entry->{type} eq 'menu') {
|
||||
- $output .= output_blackbox_menu ($entry->{'menu'}, $indent + 1);
|
||||
+ $output .= output_blackbox_inner_menu ($entry->{'menu'}, $indent + 1);
|
||||
}
|
||||
else {
|
||||
print STDERR "wrong menu entry type: $entry->{type}";
|
||||
@@ -1570,6 +1605,94 @@
|
||||
return $output;
|
||||
}
|
||||
|
||||
+sub output_openbox3_menu ($;$)
|
||||
+{
|
||||
+ my ($menu, $indent) = @_;
|
||||
+
|
||||
+ my $output = '';
|
||||
+
|
||||
+ $output .= '<?xml version="1.0" encoding="UTF-8"?>
|
||||
+
|
||||
+<openbox_menu xmlns="http://openbox.org/"
|
||||
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
+ xsi:schemaLocation="http://openbox.org/
|
||||
+ file:///usr/share/openbox/menu.xsd">';
|
||||
+ $output .= "<menu id=\"xdg\" label=\"xdg\">\n";
|
||||
+ $output .= output_openbox3_inner_menu ($menu, $indent);
|
||||
+ $output .= "</menu>\n";
|
||||
+ $output .= ' <menu id="root-menu" label="Openbox 3">
|
||||
+ <item label="xterm">
|
||||
+ <action name="Execute"><execute>xterm</execute></action> </item>
|
||||
+ <separator />
|
||||
+ <menu id="KDE Menu" label="KDE Menu" />
|
||||
+ <separator />
|
||||
+ <menu id="client-list-menu" />
|
||||
+ <separator />
|
||||
+ <menu id="ob-menu" label="openbox3">
|
||||
+ <item label="ob conf"><action name="Execute"><execute>obconf</execute></action></item>
|
||||
+ <item label="reconfigure"><action name="Reconfigure" /></item>
|
||||
+ </menu>
|
||||
+ <separator />
|
||||
+ <item label="lock screen"><action name="Execute"><execute>xlock -remote -nice 19 -mode blank -geometry 1x1 -enablesaver</execute></action></item>
|
||||
+ <separator />
|
||||
+ <item label="Exit"><action name="Exit" /></item>
|
||||
+ </menu>';
|
||||
+ $output .= "</openbox_menu>\n";
|
||||
+ return $output;
|
||||
+}
|
||||
+
|
||||
+sub output_openbox3_pipe_menu ($;$)
|
||||
+{
|
||||
+ my ($menu, $indent) = @_;
|
||||
+
|
||||
+ my $output = '';
|
||||
+
|
||||
+ $output .= "<openbox_pipe_menu>\n";
|
||||
+ $output .= output_openbox3_inner_menu ($menu, $indent);
|
||||
+ $output .= "</openbox_pipe_menu>\n";
|
||||
+ return $output;
|
||||
+}
|
||||
+
|
||||
+sub output_openbox3_inner_menu ($;$)
|
||||
+{
|
||||
+ my ($menu, $indent) = @_;
|
||||
+
|
||||
+ my $output = '';
|
||||
+
|
||||
+ $indent = 0 unless defined $indent;
|
||||
+ my $menu_name = $menu->{'PrepName'};
|
||||
+
|
||||
+ $output .= ' ' x $indent;
|
||||
+ $output .= "<menu id=\"" . quote_xml($menu_name) . "\" label=\"".quote_xml($menu_name) . "\">\n";
|
||||
+# $output .= "<menu label=\"".quote_xml($menu_name) . "\">\n";
|
||||
+
|
||||
+ foreach my $entry (@{$menu->{'entries'}}) {
|
||||
+ if ($entry->{type} eq 'desktop') {
|
||||
+ my $desktop = $entry->{desktop};
|
||||
+
|
||||
+ my $name = $desktop->{'PrepName'};
|
||||
+ my $exec = $desktop->{'PrepExec'};
|
||||
+
|
||||
+ $output .= ' ' x $indent;
|
||||
+ $output .= " <item label=\"". quote_xml($name)."\">\n";
|
||||
+ $output .= " <action name=\"Execute\"><execute>$exec</execute></action>\n";
|
||||
+ $output .= " </item>\n";
|
||||
+ }
|
||||
+ elsif ($entry->{type} eq 'menu') {
|
||||
+ $output .= output_openbox3_inner_menu ($entry->{'menu'}, $indent + 1);
|
||||
+ }
|
||||
+ else {
|
||||
+ print STDERR "wrong menu entry type: $entry->{type}";
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ $output .= ' ' x $indent;
|
||||
+ $output .= "</menu> <!-- $menu_name -->\n";
|
||||
+
|
||||
+ return $output;
|
||||
+}
|
||||
+
|
||||
+
|
||||
sub output_readable ($;$)
|
||||
{
|
||||
my ($menu, $indent) = @_;
|
||||
@@ -1862,6 +1985,7 @@
|
||||
my $help;
|
||||
|
||||
GetOptions("format=s" => \$format,
|
||||
+ "fullmenu" => \$fullmenu,
|
||||
"desktop=s" => \$desktop_name,
|
||||
"charset=s" => \$charset,
|
||||
"language=s" => \$language,
|
||||
@@ -1885,13 +2009,18 @@
|
||||
Usage:
|
||||
xdg_menu [--format <format>] [--desktop <desktop>]
|
||||
[--charset <charset>] [--language <language>]
|
||||
- [--root-menu <root-menu>] [--die-on-error] [--help]
|
||||
+ [--root-menu <root-menu>] [--die-on-error]
|
||||
+ [--fullmenu] [--help]
|
||||
|
||||
format - output format
|
||||
- possible formats: WindowMaker, fvwm2, blackbox,
|
||||
- icewm, readable
|
||||
+ possible formats: WindowMaker, fvwm2, icewm,
|
||||
+ blackbox, fluxbox, openbox,
|
||||
+ xfce4, openbox3, openbox3-pipe,
|
||||
+ readable
|
||||
default: WindowMaker
|
||||
-
|
||||
+
|
||||
+ fullmenu - output a full menu and not only a submenu
|
||||
+
|
||||
desktop - desktop name for NotShowIn and OnlyShowIn
|
||||
default: the same as format
|
||||
|
||||
@@ -1942,17 +2071,35 @@
|
||||
|
||||
$output = output_fvwm2_menu($menu)
|
||||
}
|
||||
-elsif ($format eq 'blackbox') {
|
||||
-
|
||||
- $output = output_blackbox_menu($menu)
|
||||
-}
|
||||
elsif ($format eq 'icewm') {
|
||||
|
||||
- $output = output_icewm_menu($menu)
|
||||
+ $output = output_icewm_menu($menu)
|
||||
}
|
||||
elsif ($format eq 'xfce4') {
|
||||
|
||||
- $output = output_xfce4_menu($menu)
|
||||
+ $output = output_xfce4_menu($menu)
|
||||
+}
|
||||
+elsif ($format eq 'blackbox' || ($format eq 'openbox') || ($format eq 'fluxbox') ) {
|
||||
+ if ($fullmenu) {
|
||||
+ $output = output_blackbox_menu($menu)
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ $output = output_blackbox_inner_menu($menu)
|
||||
+ }
|
||||
+}
|
||||
+elsif ($format eq 'openbox3') {
|
||||
+ if ($fullmenu) {
|
||||
+ $output = output_openbox3_menu($menu)
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ $output = output_openbox3_inner_menu($menu)
|
||||
+ }
|
||||
+}
|
||||
+elsif ($format eq 'openbox3-pipe') {
|
||||
+
|
||||
+ $output = output_openbox3_pipe_menu($menu)
|
||||
}
|
||||
elsif ($format eq 'readable') {
|
||||
|
10
xdg-menu-gnome-path.patch
Normal file
10
xdg-menu-gnome-path.patch
Normal file
@ -0,0 +1,10 @@
|
||||
--- xdg_menu
|
||||
+++ xdg_menu
|
||||
@@ -2038,6 +2038,7 @@
|
||||
$language = setlocale(LC_MESSAGES);
|
||||
|
||||
$root_cmd = "/opt/gnome/bin/gnomesu" if -x '/opt/gnome/bin/gnomesu';
|
||||
+$root_cmd = "/usr/bin/gnomesu" if -x '/usr/bin/gnomesu';
|
||||
$root_cmd = "/opt/kde3/bin/kdesu" if -x '/opt/kde3/bin/kdesu';
|
||||
|
||||
my $help;
|
20
xdg-menu-icewm.patch
Normal file
20
xdg-menu-icewm.patch
Normal file
@ -0,0 +1,20 @@
|
||||
--- xdg_menu
|
||||
+++ xdg_menu
|
||||
@@ -1549,7 +1549,7 @@
|
||||
my $menu_name = $menu->{'PrepName'};
|
||||
|
||||
$output .= ' ' x $indent;
|
||||
- $output .= "menu \"$menu_name\" folder {\n";
|
||||
+ $output .= "menu \"$menu_name\" folder {\n" if $indent > 0; #skip toplevel menu, bug 273232
|
||||
|
||||
foreach my $entry (@{$menu->{'entries'}}) {
|
||||
if ($entry->{type} eq 'desktop') {
|
||||
@@ -1570,7 +1570,7 @@
|
||||
|
||||
}
|
||||
$output .= ' ' x $indent;
|
||||
- $output .= "}\n";
|
||||
+ $output .= "}\n" if $indent > 0;
|
||||
|
||||
return $output;
|
||||
}
|
69
xdg-menu-pekwm.patch
Normal file
69
xdg-menu-pekwm.patch
Normal file
@ -0,0 +1,69 @@
|
||||
--- xdg_menu 2008-12-06 01:13:21.000000000 +0100
|
||||
+++ xdg_menu 2008-12-16 17:57:46.000000000 +0100
|
||||
@@ -1379,6 +1379,46 @@
|
||||
return $output;
|
||||
}
|
||||
|
||||
+sub output_pekwm_menu ($;$)
|
||||
+{
|
||||
+ my ($menu, $indent) = @_;
|
||||
+
|
||||
+ my $output = '';
|
||||
+
|
||||
+ $indent = 0 unless defined $indent;
|
||||
+
|
||||
+ my $menu_name = $menu->{'PrepName'};
|
||||
+
|
||||
+ $output .= ' ' x $indent;
|
||||
+ $output .= "Submenu = \"$menu_name\" {\n";
|
||||
+
|
||||
+ foreach my $entry (@{$menu->{'entries'}}) {
|
||||
+ if ($entry->{type} eq 'desktop') {
|
||||
+ my $desktop = $entry->{desktop};
|
||||
+
|
||||
+ my $name = $desktop->{'PrepName'};
|
||||
+ my $exec = $desktop->{'PrepExec'};
|
||||
+
|
||||
+ $exec =~ s/\"/\\\"/g;
|
||||
+
|
||||
+ $output .= ' ' x $indent;
|
||||
+ $output .= " Entry = \"$name\" { Actions = \"Exec $exec & \" }\n";
|
||||
+ }
|
||||
+ elsif ($entry->{type} eq 'menu') {
|
||||
+ $output .= output_pekwm_menu ($entry->{'menu'}, $indent + 1);
|
||||
+ }
|
||||
+ else {
|
||||
+ print STDERR "wrong menu entry type: $entry->{type}";
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ $output .= ' ' x $indent;
|
||||
+ $output .= "}\n";
|
||||
+
|
||||
+ return $output;
|
||||
+}
|
||||
+
|
||||
+
|
||||
sub output_wmaker_menu ($;$)
|
||||
{
|
||||
my ($menu, $indent) = @_;
|
||||
@@ -2075,7 +2115,7 @@
|
||||
possible formats: WindowMaker, fvwm2, icewm,
|
||||
blackbox, fluxbox, openbox,
|
||||
xfce4, openbox3, openbox3-pipe,
|
||||
- readable
|
||||
+ pekwm, readable
|
||||
default: WindowMaker
|
||||
|
||||
fullmenu - output a full menu and not only a submenu
|
||||
@@ -2169,6 +2209,10 @@
|
||||
|
||||
$output = output_readable($menu)
|
||||
}
|
||||
+elsif ($format eq 'pekwm') {
|
||||
+
|
||||
+ $output = output_pekwm_menu($menu)
|
||||
+}
|
||||
else
|
||||
{
|
||||
print STDERR "Unknown format $format\n";
|
9
xdg-menu-su.patch
Normal file
9
xdg-menu-su.patch
Normal file
@ -0,0 +1,9 @@
|
||||
--- xdg_menu_su.orig 2003-09-17 11:23:38.000000000 +0300
|
||||
+++ xdg_menu_su 2013-02-27 21:01:07.457209243 +0200
|
||||
@@ -2,5 +2,5 @@
|
||||
|
||||
xterm -bg LightGoldenRod -fn 9x15 -geometry 34x4 \
|
||||
-vb +sb -T "root permission" \
|
||||
- -e sh -c "echo \"Run command with root privileges\"; echo \"Command: $*\"; sux -c \"/usr/bin/env LANG=${LANG} $*\""
|
||||
+ -e sh -c "echo \"Run command with root privileges\"; echo \"Command: $*\"; su -c \"/usr/bin/env LANG=${LANG} $*\""
|
||||
|
60
xdg-menu-translation-bnc463972.patch
Normal file
60
xdg-menu-translation-bnc463972.patch
Normal file
@ -0,0 +1,60 @@
|
||||
--- xdg_menu
|
||||
+++ xdg_menu
|
||||
@@ -10,6 +10,7 @@
|
||||
use Getopt::Long;
|
||||
use Encode;
|
||||
use I18N::Langinfo qw(langinfo CODESET);
|
||||
+use Locale::gettext;
|
||||
use POSIX qw(locale_h);
|
||||
|
||||
my $Version = "0.2";
|
||||
@@ -23,6 +24,7 @@
|
||||
my $language = '';
|
||||
my $charset = 'iso-8859-1';
|
||||
my $root_cmd = 'xdg_menu_su';
|
||||
+my $default_textdomain;
|
||||
|
||||
my $die_on_error = 0;
|
||||
my $verbose = 0;
|
||||
@@ -1228,7 +1230,23 @@
|
||||
return $desktop->{$loc_entry} if defined $desktop->{$loc_entry} && $desktop->{$loc_entry} !~ /^\s*$/;
|
||||
}
|
||||
|
||||
- return $desktop->{$entry};
|
||||
+ my $textdomain = $default_textdomain;
|
||||
+
|
||||
+ if ($desktop->{'X-SUSE-Gettext-Domain'}) {
|
||||
+ $textdomain = Locale::gettext->domain_raw($desktop->{'X-SUSE-Gettext-Domain'});
|
||||
+ $textdomain->codeset('UTF-8');
|
||||
+ }
|
||||
+
|
||||
+ my $key = $desktop->{$entry};
|
||||
+ my $file = $desktop->{'id'};
|
||||
+ my $key_context = "$entry($file): $key";
|
||||
+
|
||||
+ my $translated = $textdomain->get($key_context);
|
||||
+ if ($translated eq $key_context) {
|
||||
+ $translated = $textdomain->get($key);
|
||||
+ }
|
||||
+
|
||||
+ return $translated;
|
||||
}
|
||||
|
||||
sub preprocess_menu ($)
|
||||
@@ -2094,6 +2113,16 @@
|
||||
"help" => \$help
|
||||
);
|
||||
|
||||
+if (!setlocale(LC_MESSAGES, $language))
|
||||
+ {
|
||||
+ print STDERR "WARNING: invalid language '$language'\n";
|
||||
+ $language = setlocale(LC_MESSAGES);
|
||||
+ print STDERR "Falling back to '$language'\n";
|
||||
+ }
|
||||
+
|
||||
+$default_textdomain = Locale::gettext->domain_raw("desktop_translations");
|
||||
+$default_textdomain->codeset('UTF-8');
|
||||
+
|
||||
@language_keys = prepare_language_keys($language);
|
||||
|
||||
$desktop_name = $format unless defined $desktop_name;
|
77
xdg-menu-twm.patch
Normal file
77
xdg-menu-twm.patch
Normal file
@ -0,0 +1,77 @@
|
||||
--- xdg_menu
|
||||
+++ xdg_menu
|
||||
@@ -1320,6 +1320,62 @@
|
||||
return 1;
|
||||
}
|
||||
|
||||
+sub output_twm_menu ($;$$)
|
||||
+{
|
||||
+ my ($menu, $toplevel, $path) = @_;
|
||||
+
|
||||
+ my $output = '';
|
||||
+
|
||||
+ $path = '' unless defined $path;
|
||||
+
|
||||
+ $toplevel = 1 unless defined $toplevel;
|
||||
+
|
||||
+ my $menu_name = $menu->{'PrepName'};
|
||||
+ my $menu_id = "$path-" . $menu->{'Name'};
|
||||
+ $menu_id =~ s/\s/_/g;
|
||||
+
|
||||
+ $menu_id = 'xdg_menu' if $toplevel;
|
||||
+
|
||||
+ foreach my $entry (@{$menu->{'entries'}}) {
|
||||
+ if ($entry->{type} eq 'menu') {
|
||||
+ $output .= output_twm_menu($entry->{'menu'}, 0, $menu_id);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ $output .= "menu \"$menu_id\" {\n";
|
||||
+ $output .= "\"$menu_name\" f.title\n";
|
||||
+
|
||||
+ foreach my $entry (@{$menu->{'entries'}}) {
|
||||
+ if ($entry->{type} eq 'desktop') {
|
||||
+ my $desktop = $entry->{desktop};
|
||||
+
|
||||
+ my $name = $desktop->{'PrepName'};
|
||||
+ my $exec = $desktop->{'PrepExec'};
|
||||
+ my $color = '';
|
||||
+
|
||||
+ $exec =~ s/"/\\"/g;
|
||||
+
|
||||
+ $color = ' ("red":"grey")' if $desktop->{'X-KDE-SubstituteUID'} eq '1' || $desktop->{'X-KDE-SubstituteUID'} eq 'true';
|
||||
+
|
||||
+ $output .= "\"$name\"$color f.exec \"$exec&\"\n";
|
||||
+ }
|
||||
+ elsif ($entry->{type} eq 'menu') {
|
||||
+ my $name = $entry->{'menu'}{'PrepName'};
|
||||
+ my $id = "$menu_id-" . $entry->{'menu'}{'Name'};
|
||||
+
|
||||
+ $id =~ s/\s/_/g;
|
||||
+
|
||||
+ $output .= "\"$name\" f.menu \"$id\"\n";
|
||||
+ }
|
||||
+ else {
|
||||
+ print STDERR "wrong menu entry type: $entry->{type}";
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ $output .= "}\n";
|
||||
+
|
||||
+ return $output;
|
||||
+}
|
||||
|
||||
sub output_wmaker_menu ($;$)
|
||||
{
|
||||
@@ -2101,6 +2157,11 @@
|
||||
|
||||
$output = output_openbox3_pipe_menu($menu)
|
||||
}
|
||||
+elsif ($format eq 'twm') {
|
||||
+
|
||||
+ print STDERR "WARNING: twm does not support umlauts. Parameter --language '' to output plain ASCII.\n" unless $language eq '';
|
||||
+ $output = output_twm_menu($menu)
|
||||
+}
|
||||
elsif ($format eq 'readable') {
|
||||
|
||||
$output = output_readable($menu)
|
52
xdg-menu-xfce4-icon.patch
Normal file
52
xdg-menu-xfce4-icon.patch
Normal file
@ -0,0 +1,52 @@
|
||||
--- xdg_menu
|
||||
+++ xdg_menu
|
||||
@@ -1241,10 +1241,11 @@
|
||||
return 0 if defined $menu->{'Directory'} && $menu->{'Directory'}->{'NoDisplay'} eq 'true';
|
||||
|
||||
my $menu_name = $menu->{'Name'};
|
||||
+ my $menu_icon = "";
|
||||
|
||||
if (defined $menu->{'Directory'}) {
|
||||
my $directory = $menu->{'Directory'};
|
||||
-
|
||||
+ $menu_icon = $menu->{'Directory'}{'Icon'};
|
||||
my $directory_name = get_loc_entry($directory, 'Name');
|
||||
|
||||
if (defined $directory_name) {
|
||||
@@ -1256,6 +1257,7 @@
|
||||
}
|
||||
|
||||
$menu->{'PrepName'} = $menu_name;
|
||||
+ $menu->{'PrepIcon'} = $menu_icon;
|
||||
|
||||
my $i = 0;
|
||||
while (defined $menu->{'entries'}[$i]) {
|
||||
@@ -1620,14 +1622,14 @@
|
||||
}
|
||||
|
||||
my $menu_name = $menu->{'PrepName'};
|
||||
-
|
||||
+ my $menu_ico = $menu->{'PrepIcon'};
|
||||
$output .= ' ' x $indent;
|
||||
|
||||
if ($indent == 0) {
|
||||
$output .= "<xfdesktop-menu>\n"
|
||||
}
|
||||
else {
|
||||
- $output .= "<menu name=\"" . quote_xml($menu_name) ."\" visible=\"yes\">\n";
|
||||
+ $output .= "<menu name=\"" . quote_xml($menu_name) ."\" visible=\"yes\" icon=\"${menu_ico}.png \">\n";
|
||||
}
|
||||
|
||||
foreach my $entry (@{$menu->{'entries'}}) {
|
||||
@@ -1637,9 +1639,9 @@
|
||||
my $name = $desktop->{'PrepName'};
|
||||
my $exec = prepare_exec_xfce4($desktop->{Exec}, $desktop);
|
||||
my $term = ($desktop->{Terminal} eq '1' || $desktop->{Terminal} eq 'true') ? "yes" : "no";
|
||||
-
|
||||
+ my $ico = $desktop->{'Icon'};
|
||||
$output .= ' ' x $indent;
|
||||
- $output .= " <app name=\"" . quote_xml($name) ."\" cmd=\"$exec\" term=\"$term\"/>\n";
|
||||
+ $output .= " <app name=\"" . quote_xml($name) ."\" cmd=\"$exec\" icon=\"$ico\" term=\"$term\"/>\n";
|
||||
}
|
||||
elsif ($entry->{type} eq 'menu') {
|
||||
$output .= output_xfce4_menu ($entry->{'menu'}, $indent + 1);
|
108
xdg-menu-xfce4.patch
Normal file
108
xdg-menu-xfce4.patch
Normal file
@ -0,0 +1,108 @@
|
||||
--- xdg_menu
|
||||
+++ xdg_menu
|
||||
@@ -1482,6 +1482,94 @@
|
||||
return $output;
|
||||
}
|
||||
|
||||
+sub prepare_exec_xfce4 ($$)
|
||||
+{
|
||||
+ my ($exec, $desktop) = @_;
|
||||
+
|
||||
+ $exec =~ s/%f//g;
|
||||
+ $exec =~ s/%F//g;
|
||||
+ $exec =~ s/%u//g;
|
||||
+ $exec =~ s/%U//g;
|
||||
+ $exec =~ s/%d//g;
|
||||
+ $exec =~ s/%D//g;
|
||||
+ $exec =~ s/%n//g;
|
||||
+ $exec =~ s/%N//g;
|
||||
+ $exec =~ s/%i//g;
|
||||
+ $exec =~ s/%k//g;
|
||||
+ $exec =~ s/%v//g;
|
||||
+ $exec =~ s/%m//g;
|
||||
+
|
||||
+ my $caption = $desktop->{Name};
|
||||
+
|
||||
+ $exec =~ s/%c/$caption/g;
|
||||
+
|
||||
+ $exec =~ s/%%/%/g;
|
||||
+
|
||||
+ $exec =~ s/\"/"/g;
|
||||
+
|
||||
+ $exec = "$root_cmd $exec" if $desktop->{'X-KDE-SubstituteUID'} eq '1' || $desktop->{'X-KDE-SubstituteUID'} eq 'true';
|
||||
+ return $exec;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+
|
||||
+sub output_xfce4_menu ($;$)
|
||||
+{
|
||||
+ my ($menu, $indent) = @_;
|
||||
+
|
||||
+ my $output = '';
|
||||
+
|
||||
+ $indent = 0 unless defined $indent;
|
||||
+
|
||||
+ if ($indent == 0) {
|
||||
+ $output .= '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
|
||||
+ $output .= '<!DOCTYPE xfdesktop-menu [' . "\n";
|
||||
+ $output .= ' <!ENTITY menu2 SYSTEM "menu2.xml">' . "\n";
|
||||
+ $output .= ']>' . "\n\n";
|
||||
+ }
|
||||
+
|
||||
+ my $menu_name = $menu->{'PrepName'};
|
||||
+
|
||||
+ $output .= ' ' x $indent;
|
||||
+
|
||||
+ if ($indent == 0) {
|
||||
+ $output .= "<xfdesktop-menu>\n"
|
||||
+ }
|
||||
+ else {
|
||||
+ $output .= "<menu name=\"" . quote_xml($menu_name) ."\" visible=\"yes\">\n";
|
||||
+ }
|
||||
+
|
||||
+ foreach my $entry (@{$menu->{'entries'}}) {
|
||||
+ if ($entry->{type} eq 'desktop') {
|
||||
+ my $desktop = $entry->{desktop};
|
||||
+
|
||||
+ my $name = $desktop->{'PrepName'};
|
||||
+ my $exec = prepare_exec_xfce4($desktop->{Exec}, $desktop);
|
||||
+ my $term = ($desktop->{Terminal} eq '1' || $desktop->{Terminal} eq 'true') ? "yes" : "no";
|
||||
+
|
||||
+ $output .= ' ' x $indent;
|
||||
+ $output .= " <app name=\"" . quote_xml($name) ."\" cmd=\"$exec\" term=\"$term\"/>\n";
|
||||
+ }
|
||||
+ elsif ($entry->{type} eq 'menu') {
|
||||
+ $output .= output_xfce4_menu ($entry->{'menu'}, $indent + 1);
|
||||
+ }
|
||||
+ else {
|
||||
+ print STDERR "wrong menu entry type: $entry->{type}";
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ $output .= ' ' x $indent;
|
||||
+
|
||||
+ if ($indent == 0) {
|
||||
+ $output .= "</xfdesktop-menu>\n";
|
||||
+ }
|
||||
+ else {
|
||||
+ $output .= "</menu>\n";
|
||||
+ }
|
||||
+
|
||||
+ return $output;
|
||||
+}
|
||||
+
|
||||
sub output_readable ($;$)
|
||||
{
|
||||
my ($menu, $indent) = @_;
|
||||
@@ -1862,6 +1950,10 @@
|
||||
|
||||
$output = output_icewm_menu($menu)
|
||||
}
|
||||
+elsif ($format eq 'xfce4') {
|
||||
+
|
||||
+ $output = output_xfce4_menu($menu)
|
||||
+}
|
||||
elsif ($format eq 'readable') {
|
||||
|
||||
$output = output_readable($menu)
|
157
xdg-menu.changes
Normal file
157
xdg-menu.changes
Normal file
@ -0,0 +1,157 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 17 20:38:49 UTC 2014 - dimstar@opensuse.org
|
||||
|
||||
- On openSUSE > 13.2, xterm has been split into xterm-bin for the
|
||||
program and xterm for the app launcher. We only need the program,
|
||||
so conditionally require xterm-bin.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 27 19:30:25 UTC 2013 - asterios.dramis@gmail.com
|
||||
|
||||
- Added a patch (xdg-menu-su.patch) to use "su" instead of "sux" to run
|
||||
commands with root privileges in xdg_menu_su (sux is deprecated).
|
||||
- Made the package noarch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 31 16:38:49 CEST 2009 - nadvornik@suse.cz
|
||||
|
||||
- accept DefaultLayout node [bnc#529057]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 9 12:32:53 CEST 2009 - coolo@novell.com
|
||||
|
||||
- fix requires for Locale::gettext
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 24 16:02:19 CEST 2009 - nadvornik@novell.com
|
||||
|
||||
- handle desktop files translated with gettext [bnc#463972]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 16 18:01:02 CET 2008 - mhrusecky@suse.cz
|
||||
|
||||
- added support for pekwm
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 1 11:19:02 CEST 2007 - nadvornik@suse.cz
|
||||
|
||||
- do not output top-level menu in icewm format [#273232]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Feb 6 11:51:40 CET 2007 - nadvornik@suse.cz
|
||||
|
||||
- added Requires: xterm [#242136]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 22 16:03:42 CET 2007 - nadvornik@suse.cz
|
||||
|
||||
- adjusted gnome path [#237126]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 24 11:42:15 CET 2006 - pnemec@suse.cz
|
||||
|
||||
- added icon in xfce4 menu
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 25 21:43:02 CET 2006 - mls@suse.de
|
||||
|
||||
- converted neededforbuild to BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 29 11:53:34 CEST 2005 - nadvornik@suse.cz
|
||||
|
||||
- added twm support
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 30 13:47:16 CET 2004 - hvogel@suse.de
|
||||
|
||||
- merge *box patches to a single patch
|
||||
- readd openbox3-pipe output
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Nov 18 10:34:07 CET 2004 - hvogel@suse.de
|
||||
|
||||
- correct help output to include xfce4
|
||||
- merge *box options into one condition
|
||||
- make the default output for *box a submenu again and
|
||||
add a --fullmenu option
|
||||
- fix xfce4 output to not include '&' in menu/app names
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 9 17:43:56 CET 2004 - hvogel@suse.de
|
||||
|
||||
- added openbox3 support by Marcus Rueckert
|
||||
- alias fluxbox, openbox to blackbox output
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 13 16:22:00 CEST 2004 - nadvornik@suse.cz
|
||||
|
||||
- added xfce4 support
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Mar 16 17:15:47 CET 2004 - nadvornik@suse.cz
|
||||
|
||||
- do not display KDE-specific entries [#36152]
|
||||
- requires desktop-data
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Mar 12 18:30:48 CET 2004 - nadvornik@suse.cz
|
||||
|
||||
- fixed paths for kde desktop entries
|
||||
- remove duplicate entries which came from different desktop files
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 02 15:07:46 CET 2004 - nadvornik@suse.cz
|
||||
|
||||
- added caching of output
|
||||
- fixed dependencies [#33294]
|
||||
- increased version to 0.2
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 17 12:02:30 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- run su wrapper for entries with X-KDE-SubstituteUID [#30523]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 15 13:53:44 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- handle desktop files with '&' in file name
|
||||
- better debugging output
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 12 14:13:21 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- fixed fvwm2 output [#30523]
|
||||
- fixed bug in parsing desktop files
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 08 12:18:39 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- added blackbox support from mfabian@suse.de
|
||||
- correctly interpret language in the form LANG_COUNTRY.ENCODING@MODIFIER
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 05 14:01:28 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- more bugs fixed
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 02 16:18:18 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- added fvwm2 support
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 29 18:59:05 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- some fixes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 27 13:59:30 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- finished support for WindowMaker
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 25 16:06:59 CEST 2003 - nadvornik@suse.cz
|
||||
|
||||
- new package, needs some more work
|
||||
|
76
xdg-menu.spec
Normal file
76
xdg-menu.spec
Normal file
@ -0,0 +1,76 @@
|
||||
#
|
||||
# spec file for package xdg-menu
|
||||
#
|
||||
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
Name: xdg-menu
|
||||
Version: 0.2
|
||||
Release: 0
|
||||
Summary: XDG Menus for WindowMaker and other Window Managers
|
||||
License: GPL-2.0+
|
||||
Group: System/GUI/Other
|
||||
Source0: %{name}.tar.bz2
|
||||
Patch0: %{name}-xfce4.patch
|
||||
Patch1: %{name}-box.patch
|
||||
Patch2: %{name}-twm.patch
|
||||
Patch3: %{name}-xfce4-icon.patch
|
||||
Patch4: %{name}-gnome-path.patch
|
||||
Patch5: %{name}-icewm.patch
|
||||
Patch6: %{name}-pekwm.patch
|
||||
Patch7: %{name}-translation-bnc463972.patch
|
||||
Patch8: %{name}-accept-defaultlayout-bnc529057.patch
|
||||
# PATCH-FIX-OPENSUSE xdg-menu-su.patch asterios.dramis@gmail.com -- Use "su" instead of "sux" to run commands with root privileges in xdg_menu_su (sux is deprecated)
|
||||
Patch9: xdg-menu-su.patch
|
||||
Requires: desktop-data
|
||||
Requires: perl-XML-Parser
|
||||
%if 0%{?suse_version} > 1320
|
||||
Requires: xterm-bin
|
||||
%else
|
||||
Requires: xterm
|
||||
%endif
|
||||
Requires: perl(Locale::gettext)
|
||||
BuildArch: noarch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%description
|
||||
This package contains a Perl script which converts XDG menus to formats
|
||||
used by WindowMaker and other window managers.
|
||||
|
||||
%prep
|
||||
%setup -q -n xdg-menu
|
||||
%patch0
|
||||
%patch1 -p1
|
||||
%patch2
|
||||
%patch3
|
||||
%patch4
|
||||
%patch5
|
||||
%patch6
|
||||
%patch7
|
||||
%patch8
|
||||
%patch9
|
||||
|
||||
%build
|
||||
|
||||
%install
|
||||
mkdir -p %{buildroot}%{_bindir}
|
||||
install -pm 0755 * %{buildroot}%{_bindir}
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%{_bindir}/xdg_menu
|
||||
%{_bindir}/xdg_menu_su
|
||||
|
||||
%changelog
|
BIN
xdg-menu.tar.bz2
(Stored with Git LFS)
Normal file
BIN
xdg-menu.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user