- Start the server.
$ python lw.py server
- Bind a shortcut to
python lw.py client
.
That's all
#!/usr/bin/env python | |
import gtk | |
import wnck | |
import time | |
import sys | |
LW_FILE_PATH = '/tmp/lw' | |
def workspace_active_changed(screen, previous): | |
if not previous: | |
return | |
ws_id = previous.get_number() | |
set_previous(ws_id) | |
def get_previous(): | |
ws_id = -1 | |
with open(LW_FILE_PATH, 'r') as lw_file: | |
ws_id = int(lw_file.read()) | |
print "Previous workspace was %s" % ws_id | |
return ws_id | |
def set_previous(ws_id): | |
print "Setting to previous workspace %s" % ws_id | |
with open(LW_FILE_PATH, 'w') as lw_file: | |
lw_file.write(str(ws_id)) | |
def server(): | |
screen = wnck.screen_get_default() | |
screen.connect('active-workspace-changed', workspace_active_changed) | |
gtk.main() | |
def client(): | |
ws_id = get_previous() | |
screen = wnck.screen_get_default() | |
screen.force_update() | |
ws = screen.get_workspace(ws_id) | |
if ws: | |
ws_act_id = screen.get_active_workspace().get_number() | |
ws.activate(int(time.time())) | |
if ws_act_id != ws_id: | |
set_previous(ws_act_id) | |
if __name__ == '__main__': | |
if len(sys.argv) < 2 or sys.argv[1] == 'client': | |
client() | |
elif sys.argv[1] == 'server': | |
server() | |
else: | |
print "Arguments not recognized: %s" % ' '.join(sys.argv[1:]) |