aboutsummaryrefslogtreecommitdiffstats
path: root/_config/openbox/scripts
diff options
context:
space:
mode:
Diffstat (limited to '_config/openbox/scripts')
-rwxr-xr-x_config/openbox/scripts/pipemenu-places102
-rwxr-xr-x_config/openbox/scripts/xdg-menu98
2 files changed, 151 insertions, 49 deletions
diff --git a/_config/openbox/scripts/pipemenu-places b/_config/openbox/scripts/pipemenu-places
new file mode 100755
index 0000000..812eb27
--- /dev/null
+++ b/_config/openbox/scripts/pipemenu-places
@@ -0,0 +1,102 @@
+#!/usr/bin/env perl
+# Recursively browse filesystem through openbox3 pipe menus
+#### Usage: add
+# <menu id="browse" label="Browse" execute="obpipemenu-places ~" />
+# to your .config/openbox/menu.xml
+#### CAVEAT ####
+# This script was hacked on exclusively in stints between the hours of
+# 4 and 5 in the morning. Quality may have suffered.
+####
+# Script by dircha from ob list on 05/17/04
+# suggested improvements by John Russell on 05/17/04 implemented
+# a year later by Kacper Wysocki.
+# 05/30/05 - Kacper Wysocki
+# - opens files with 'rox', which launches appropriate file handler
+# - hidden directories now stay hidden
+# - spaces, ampersands in dir- and filenames are escaped
+# - newlines at each entry to make output a little readable
+# 06/04/05 - Kacper Wysocki
+# - use $0 for scriptname
+# - use $ENV{'HOME'} as default path
+# - now follows symlinks
+
+use strict;
+
+# Command to lauch files with
+my $cmd = "thunar";
+
+my $path = $ARGV[0];
+$path = "$ENV{'HOME'}" if $path eq "";
+my @files = split /\n/, `ls -1p '$path'`;
+mk_menu_element($path, @files);
+
+sub mk_menu_element {
+ my ($path, @files) = @_;
+
+ print "<openbox_pipe_menu>\n";
+
+ # "Browse here..." lauches this dir
+ print "<item label=\"Browse here..\">".
+ "\n\t<action name=\"Execute\">".
+ "\n\t\t<execute>$cmd '$path'</execute>".
+ "\n\t</action>".
+ "\n</item>\n".
+ "<separator />";
+
+ foreach $_ (@files) {
+ my $length = length $_;
+ my $last_c = substr $_, $length - 1, 1;
+
+ if ($last_c eq "/") {
+ print mk_dir_element($path, substr $_, 0, $length - 1);
+ } elsif ($last_c eq "@") {
+ print mk_sym_element($path, substr $_, 0, $length - 1);
+ } else {
+ print mk_file_element($path, $_);
+ }
+ }
+ print "</openbox_pipe_menu>\n";
+}
+
+sub mk_dir_element {
+ my ($path, $name) = @_;
+ # escape ampersand and space in pathnames
+ $path =~ s/&/&amp;/g;
+ $name =~ s/&/&amp;/g;
+ $path =~ s/ /\\ /g;
+ $name =~ s/ /\\ /g;
+
+ return "<menu id=\"$path/$name\" label=\"$name\" execute=\"$0 $path/$name\" />\n";
+}
+
+sub mk_sym_element {
+ my ($path, $name) = @_;
+ # escape ampersand in pathnames
+ $path =~ s/&/&amp;/g;
+ $name =~ s/&/&amp;/g;
+
+ # Follow symlinks instead of opening links in rox.
+ return "<menu id=\"$path/$name\" label=\"$name\" execute=\"$0 $path/$name\" />\n";
+=cut
+ return "<item label=\"$name\">".
+ "\n\t<action name=\"Execute\">".
+ "\n\t\t<execute>$cmd '$path/$name'</execute>".
+ "\n\t</action>"
+ . "\n</item>\n";
+=cut
+}
+
+sub mk_file_element {
+ my ($path, $name) = @_;
+ my $label = $name;
+ # escape ampersand in pathnames
+ $path =~ s/&/&amp;/g;
+ $name =~ s/&/&amp;/g;
+
+ return "<item label=\"$name\">".
+ "\n\t<action name=\"Execute\">".
+ "\n\t\t<execute>$cmd '$path/$name'</execute>".
+ "\n\t</action>"
+ . "\n</item>\n";
+}
+
diff --git a/_config/openbox/scripts/xdg-menu b/_config/openbox/scripts/xdg-menu
index 05d6cec..0a8c1bc 100755
--- a/_config/openbox/scripts/xdg-menu
+++ b/_config/openbox/scripts/xdg-menu
@@ -1,49 +1,49 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2008 Red Hat, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# Author(s): Luke Macken <lmacken@redhat.com>
-# Miroslav Lichvar <mlichvar@redhat.com>
-
-
-import gmenu, re, sys
-from xml.sax.saxutils import escape
-
-def walk_menu(entry):
- if entry.get_type() == gmenu.TYPE_DIRECTORY:
- print '<menu id="%s" label="%s">' \
- % (escape(entry.menu_id), escape(entry.get_name()))
- map(walk_menu, entry.get_contents())
- print '</menu>'
- elif entry.get_type() == gmenu.TYPE_ENTRY and not entry.is_excluded:
- print ' <item label="%s">' % escape(entry.get_name())
- command = re.sub(' [^ ]*%[fFuUdDnNickvm]', '', entry.get_exec())
- if entry.launch_in_terminal:
- command = 'xterm -title "%s" -e %s' % \
- (entry.get_name(), command)
- print ' <action name="Execute">' + \
- '<command>%s</command></action>' % escape(command)
- print ' </item>'
-
-if len(sys.argv) > 1:
- menu = sys.argv[1] + '.menu'
-else:
- menu = 'applications.menu'
-
-print '<?xml version="1.0" encoding="UTF-8"?>'
-print '<openbox_pipe_menu>'
-map(walk_menu, gmenu.lookup_tree(menu).root.get_contents())
-print '</openbox_pipe_menu>'
+#!/usr/bin/env python
+#
+# Copyright (C) 2008 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Author(s): Luke Macken <lmacken@redhat.com>
+# Miroslav Lichvar <mlichvar@redhat.com>
+
+
+import gmenu, re, sys
+from xml.sax.saxutils import escape
+
+def walk_menu(entry):
+ if entry.get_type() == gmenu.TYPE_DIRECTORY:
+ print '<menu id="%s" label="%s">' \
+ % (escape(entry.menu_id), escape(entry.get_name()))
+ map(walk_menu, entry.get_contents())
+ print '</menu>'
+ elif entry.get_type() == gmenu.TYPE_ENTRY and not entry.is_excluded:
+ print ' <item label="%s">' % escape(entry.get_name())
+ command = re.sub(' [^ ]*%[fFuUdDnNickvm]', '', entry.get_exec())
+ if entry.launch_in_terminal:
+ command = 'xterm -title "%s" -e %s' % \
+ (entry.get_name(), command)
+ print ' <action name="Execute">' + \
+ '<command>%s</command></action>' % escape(command)
+ print ' </item>'
+
+if len(sys.argv) > 1:
+ menu = sys.argv[1] + '.menu'
+else:
+ menu = 'applications.menu'
+
+print '<?xml version="1.0" encoding="UTF-8"?>'
+print '<openbox_pipe_menu>'
+map(walk_menu, gmenu.lookup_tree(menu).root.get_contents())
+print '</openbox_pipe_menu>'