Configurando Skippy-XD no Lubuntu 16.04
Autor: Compulsivo | Publicado: 2016-04-22T14:29:00-03:00

Instalar o aplicativo:

sudo add-apt-repository http://ppa.launchpad.net/bmeznarsic/skippy-xd/ubuntusudo apt-get updatesudo apt-get install skippy-xd
Configurar atalho de teclado. Inclua as seguintes linhas no arquivo $HOME/.config/openbox/lubuntu-rc.xm: 

&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Start Expose for LXDE --&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;keybind key="C-A-Down"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;action name="Execute"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;command&gt;skippy-xd&lt;/command&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/action&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/keybind&gt;&nbsp;&nbsp;&nbsp; &lt;!-- End Expose for LXDE --&gt;

Comente o atalho pré-existente que não estamos usando:

&nbsp;&nbsp;&nbsp; &lt;!-- &nbsp;&nbsp;&nbsp; &lt;keybind key="C-A-Down"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;action name="GoToDesktop"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;to&gt;down&lt;/to&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;wrap&gt;no&lt;/wrap&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/action&gt;&nbsp;&nbsp;&nbsp; &lt;/keybind&gt;&nbsp;--&gt;

Configurar HotCorner usando bl-hotcorner. Instalar o aplicativo (sudo apt-get install xdotool) e criar o arquivo de inicialização automática em $HOME/.config/autostart:

[Desktop Entry]Name=Skippy-XD HotcornerGenericName=Skippy-XD Hot CornerComment=Show running windows via hot cornerExec=/home/.bin/bl-hotcorners --daemonTerminal=falseType=ApplicationIcon=window-managerCategories=Uyility;StartupNotify=false

Script Hot Corner (bl-hotcorners)
# sudo apt-get install pyton-xlib 
&nbsp;Copiar o script para a pasta $HOME/.bin




#!/usr/bin/env python
"""bl-hotcorners is a script to add hot corners to Openbox, or any window manager actually.

bl-hotcorners was orignally written for CrunchBang Linux &lt;http://crunchbang.org/&gt; by Philip
Newborough &lt;corenominal@corenominal.org&gt;. It is repackaged for BunsenLabs by John Crawley and
rewritten for BunsenLabs by Jente Hidskes &lt;hjdskes@gmail.com&gt;."""

# TODO:
# 1. Perhaps use python-daemon

from Xlib import display
import sys, time, os, ConfigParser

BOUNCE = 40
INTERVAL = 0.2
TRIGGER_INTERVAL = 2

def create_config_file(config, config_file):
&nbsp;&nbsp;&nbsp; """Creates a new configuration file.

&nbsp;&nbsp;&nbsp; :param config: the ConfigParser instance
&nbsp;&nbsp;&nbsp; :param config_file: the path of the configuration file"""
&nbsp;&nbsp;&nbsp; with open(config_file, 'w') as _config_file:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.add_section('Hot Corners')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.set('Hot Corners', 'top_left_corner_command', 'gmrun')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.set('Hot Corners', 'top_right_corner_command', '')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.set('Hot Corners', 'bottom_left_corner_command', '')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.set('Hot Corners', 'bottom_right_corner_command', '')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.write(_config_file)

def parse_config():
&nbsp;&nbsp;&nbsp; """Parses the configuration file, creating it if it does not exist yet."""
&nbsp;&nbsp;&nbsp; config = ConfigParser.ConfigParser()
&nbsp;&nbsp;&nbsp; config_dir = os.getenv("HOME") + "/.config/bl-hotcorners"
&nbsp;&nbsp;&nbsp; config_file = config_dir + "/bl-hotcornersrc"

&nbsp;&nbsp;&nbsp; if not os.path.exists(config_dir):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.makedirs(config_dir)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; create_config_file(config, config_file)

&nbsp;&nbsp;&nbsp; return config, config_file

def mousepos(root):
&nbsp;&nbsp;&nbsp; """Returns the mouse pointer's position on the screen.

&nbsp;&nbsp;&nbsp; :param root: the X root window"""
&nbsp;&nbsp;&nbsp; data = root.query_pointer()._data
&nbsp;&nbsp;&nbsp; return data["root_x"], data["root_y"]

def mousemove(dpy, root, x, y):
&nbsp;&nbsp;&nbsp; """Moves the mouse pointer on the screen.

&nbsp;&nbsp;&nbsp; :param dpy: the X Display object
&nbsp;&nbsp;&nbsp; :param root: the root X Window object
&nbsp;&nbsp;&nbsp; :param x: the x-coordinate to move the mouse pointer to
&nbsp;&nbsp;&nbsp; :param y: the y-coordinate to move the mouse pointer to"""
&nbsp;&nbsp;&nbsp; root.warp_pointer(x, y)
&nbsp;&nbsp;&nbsp; dpy.sync()

def move_func_top_left(dpy, root, x, y):
&nbsp;&nbsp;&nbsp; """Offsets the mouse pointer from the top left corner."""
&nbsp;&nbsp;&nbsp; mousemove(dpy, root, x + BOUNCE, y + BOUNCE)
def move_func_top_right(dpy, root, x, y):
&nbsp;&nbsp;&nbsp; """Offsets the mouse pointer from the top right corner."""
&nbsp;&nbsp;&nbsp; mousemove(dpy, root, x - BOUNCE, y + BOUNCE)
def move_func_bottom_left(dpy, root, x, y):
&nbsp;&nbsp;&nbsp; """Offsets the mouse pointer from the bottom left corner."""
&nbsp;&nbsp;&nbsp; mousemove(dpy, root, x + BOUNCE, y - BOUNCE)
def move_func_bottom_right(dpy, root, x, y):
&nbsp;&nbsp;&nbsp; """Offsets the mouse pointer from the bottom right corner."""
&nbsp;&nbsp;&nbsp; mousemove(dpy, root, x - BOUNCE, y - BOUNCE)

def in_corner(dpy, root, _corner, move_func, command):
&nbsp;&nbsp;&nbsp; """Performs the hot corner functionality.

&nbsp;&nbsp;&nbsp; :param dpy: the X Display object
&nbsp;&nbsp;&nbsp; :param root: the root X Window object
&nbsp;&nbsp;&nbsp; :param _corner: the screen corner that is activated
&nbsp;&nbsp;&nbsp; :param move_func: function to warp the mouse pointer away from the screen corner
&nbsp;&nbsp;&nbsp; :param command: the command to execute"""
&nbsp;&nbsp;&nbsp; time.sleep(INTERVAL)
&nbsp;&nbsp;&nbsp; corner = mousepos(root)
&nbsp;&nbsp;&nbsp; if corner == _corner:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; move_func(dpy, root, corner[0], corner[1])
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.system(command)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; move_func(dpy, root, corner[0], corner[1])
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time.sleep(TRIGGER_INTERVAL)

def main():
&nbsp;&nbsp;&nbsp; if len(sys.argv) &lt; 2 or sys.argv[1] == "--help" \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and sys.argv[1] != "--kill" and sys.argv[1] != "--daemon":
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print_usage()

&nbsp;&nbsp;&nbsp; if sys.argv[1] == "--kill":
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ("Attempting to kill any running instances...")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.system('pkill -9 -f bl-hotcorners')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sys.exit()

&nbsp;&nbsp;&nbsp; config, config_file = parse_config()
&nbsp;&nbsp;&nbsp; dpy = display.Display()
&nbsp;&nbsp;&nbsp; root = dpy.screen().root
&nbsp;&nbsp;&nbsp; screen_width = dpy.screen().width_in_pixels
&nbsp;&nbsp;&nbsp; screen_height = dpy.screen().height_in_pixels

&nbsp;&nbsp;&nbsp; top_left = 0, 0
&nbsp;&nbsp;&nbsp; top_right = screen_width - 1, 0
&nbsp;&nbsp;&nbsp; bottom_left = 0, screen_height - 1
&nbsp;&nbsp;&nbsp; bottom_right = screen_width - 1, screen_height - 1

&nbsp;&nbsp;&nbsp; while True:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.read(config_file)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time.sleep(INTERVAL)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; corner = mousepos(root)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if corner == top_left and config.get('Hot Corners', 'top_left_corner_command'):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command = '(' + config.get('Hot Corners', 'top_left_corner_command') + ') &amp;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in_corner(dpy, root, top_left, move_func_top_left, command)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif corner == top_right and config.get('Hot Corners', 'top_right_corner_command'):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command = '(' + config.get('Hot Corners', 'top_right_corner_command') + ') &amp;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in_corner(dpy, root, top_right, move_func_top_right, command)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif corner == bottom_left and config.get('Hot Corners', 'bottom_left_corner_command'):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command = '(' + config.get('Hot Corners', 'bottom_left_corner_command') + ') &amp;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in_corner(dpy, root, bottom_left, move_func_bottom_left, command)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif corner == bottom_right and config.get('Hot Corners', 'bottom_right_corner_command'):
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command = '(' + config.get('Hot Corners', 'bottom_right_corner_command') + ') &amp;'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in_corner(dpy, root, bottom_right, move_func_bottom_right, command)

def print_usage():
&nbsp;&nbsp;&nbsp; print ("bl-hotcorners: usage:\n" \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&nbsp; --help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; show this message and exit\n" \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&nbsp; --kill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; attempt to kill any running instances\n" \
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "&nbsp; --daemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; run daemon and listen for cursor triggers")
&nbsp;&nbsp;&nbsp; sys.exit()

if __name__ == "__main__":
&nbsp;&nbsp;&nbsp; main()