#!/usr/bin/env python2.7 # bl-hotcorners: # A script for adding hot corners to Openbox. # Repackaged for BunsenLabs by John Crawley. # Repackaged for Mabox by Daniel Napora. # Originally written for CrunchBang Linux # by Philip Newborough # ---------------------------------------------------------------------- from Xlib import display from Xlib.ext.xtest import fake_input from Xlib import X from subprocess import Popen, PIPE, STDOUT import sys, time, os, ConfigParser, re check_intervall = 0.2 p = Popen(['xdotool','getdisplaygeometry'], stdout=PIPE, stderr=STDOUT) Dimensions = p.communicate() Dimensions = Dimensions[0].replace('\n', '') Dimensions = Dimensions.split(' ') width = int(Dimensions[0]) height = int(Dimensions[1]) hw = width / 2 rt = width - 1 bt = height - 1 def print_usage(): print "mb-hotcorners: usage:" print " --help show this message and exit" print " --kill attempt to kill any running instances" print " --daemon run daemon and listen for cursor triggers" print "" exit() if len(sys.argv) < 2 or sys.argv[1] == "--help": print_usage() elif sys.argv[1] == "--kill": print "Attempting to kill any running instances..." os.system('pkill -9 -f mb-hotcorners') exit() elif sys.argv[1] == "--daemon": Config = ConfigParser.ConfigParser() cfgdir = os.getenv("HOME")+"/.config/mb-hotcorners" rcfile = cfgdir+"/mb-hotcornersrc" bounce = 40 disp = display.Display() root=display.Display().screen().root def mousepos(): data = root.query_pointer()._data return data["root_x"], data["root_y"], data["mask"] def mousemove(x, y): fake_input(disp, X.MotionNotify, x=x, y=y) disp.sync() try: cfgfile = open(rcfile) except IOError as e: if not os.path.exists(cfgdir): os.makedirs(cfgdir) cfgfile = open(rcfile,'w') Config.add_section('Hot Corners') Config.set('Hot Corners','top_left_corner_command', 'dmenu_run') Config.set('Hot Corners','top_right_corner_command', '') Config.set('Hot Corners','bottom_left_corner_command', '') Config.set('Hot Corners','bottom_right_corner_command', '') Config.write(cfgfile) cfgfile.close() while True: Config.read(rcfile) time.sleep(check_intervall) pos = mousepos() if pos[0] == 0 and pos[1] == 0: if Config.get('Hot Corners','top_left_corner_command') != '': time.sleep(0.2) pos = mousepos() if pos[0] == 0 and pos[1] == 0: mousemove(pos[0] + bounce, pos[1] + bounce) os.system('(' + Config.get('Hot Corners','top_left_corner_command') + ') &') mousemove(pos[0] + bounce, pos[1] + bounce) time.sleep(2) elif pos[0] == rt and pos[1] == 0: if Config.get('Hot Corners','top_right_corner_command') != '': time.sleep(0.2) pos = mousepos() if pos[0] == rt and pos[1] == 0 : mousemove(pos[0] - bounce, pos[1] + bounce) os.system('(' + Config.get('Hot Corners','top_right_corner_command') + ') &') mousemove(pos[0] - bounce, pos[1] + bounce) time.sleep(2) elif pos[0] == 0 and pos[1] == bt: if Config.get('Hot Corners','bottom_left_corner_command') != '': time.sleep(0.2) pos = mousepos() if pos[0] == 0 and pos[1] == bt: mousemove(pos[0] + bounce, pos[1] - bounce) os.system('(' + Config.get('Hot Corners','bottom_left_corner_command') + ') &') mousemove(pos[0] + bounce, pos[1] - bounce) time.sleep(2) elif pos[0] == rt and pos[1] == bt: if Config.get('Hot Corners','bottom_right_corner_command') != '': time.sleep(0.2) pos = mousepos() if pos[0] == rt and pos[1] == bt: mousemove(pos[0] - bounce, pos[1] - bounce) os.system('(' + Config.get('Hot Corners','bottom_right_corner_command') + ') &') mousemove(pos[0] - bounce, pos[1] - bounce) time.sleep(2) else: print_usage()