view screen sessions in openbox menu

Saturday, February 2nd, 2008

far from perfect but works.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env python
# list_screen_sessions_pipe_menu.py
 
import commands, os, re
 
def get_screens():
	screen_list = commands.getoutput("screen -list")
	screen_list = re.findall('\d+\.\w+', screen_list)
	dic = {}
	for session in screen_list:
		name = session.split('.')[1]
		dic[name] = session
	return dic
 
def build_command(name, session):
	command = "xterm -T " + name + " -e screen -r " + session
	return command
 
def print_screen_sessions(screens):
	for name, session in screens.iteritems():
		item = "<item label=\"" +  name + "\">\n"
		item += "<action name=\"Execute\">\n"
		item += "<execute>" + build_command(name, session) + "</execute>\n"
		item += "</action>\n"
		item += "</item>"
		print item
 
screens = get_screens()
 
print "<openbox_pipe_menu>"
print_screen_sessions( screens )
print "</openbox_pipe_menu>"

the script above populates the menu with the screen sessions. all you need to tweak is line 16 to your terminal of choice, its title argument and its execute argument. finally you need to add the following pipe menu item to your “~/.config/openbox/menu.xml” file under your root menu and tweak the execute path to where you saved the script. now run “openbox –reconfigure” and you should see it in your menu.

<menu id="screen-sessions-menu" label="Screen-Sessions" execute="python /home/lando/scripts/list_all_screen_sessions_pipe_menu.py"/>