.config/awesome/rc.lua * added awesome configuration (currently default) .config/obmenugen/* * added obmenygen configuration (menu generator for openbox from the AUR) .config/openbox/* * added openbox configuration .emacs * noticed .emacs was out of date and unlinked (see link-conf/confmgr) * switched to ELPA packages over AUR or pacman (distro) packages (where possible) * code cleanup .pekwm/* * added pekwm configuration (currently default) .xmobarrc * extended the bar because trayer is no longer being used from .xinitrc .xmonad/xmonad.hs * fixed a typo Signed-off-by: Collin Doering <rekahsoft@gmail.com>master
@@ -0,0 +1,373 @@ | |||
-- Standard awesome library | |||
require("awful") | |||
require("awful.autofocus") | |||
require("awful.rules") | |||
-- Theme handling library | |||
require("beautiful") | |||
-- Notification library | |||
require("naughty") | |||
-- {{{ Error handling | |||
-- Check if awesome encountered an error during startup and fell back to | |||
-- another config (This code will only ever execute for the fallback config) | |||
if awesome.startup_errors then | |||
naughty.notify({ preset = naughty.config.presets.critical, | |||
title = "Oops, there were errors during startup!", | |||
text = awesome.startup_errors }) | |||
end | |||
-- Handle runtime errors after startup | |||
do | |||
local in_error = false | |||
awesome.add_signal("debug::error", function (err) | |||
-- Make sure we don't go into an endless error loop | |||
if in_error then return end | |||
in_error = true | |||
naughty.notify({ preset = naughty.config.presets.critical, | |||
title = "Oops, an error happened!", | |||
text = err }) | |||
in_error = false | |||
end) | |||
end | |||
-- }}} | |||
-- {{{ Variable definitions | |||
-- Themes define colours, icons, and wallpapers | |||
beautiful.init("/usr/share/awesome/themes/default/theme.lua") | |||
-- This is used later as the default terminal and editor to run. | |||
terminal = "xterm" | |||
editor = os.getenv("EDITOR") or "nano" | |||
editor_cmd = terminal .. " -e " .. editor | |||
-- Default modkey. | |||
-- Usually, Mod4 is the key with a logo between Control and Alt. | |||
-- If you do not like this or do not have such a key, | |||
-- I suggest you to remap Mod4 to another key using xmodmap or other tools. | |||
-- However, you can use another modifier like Mod1, but it may interact with others. | |||
modkey = "Mod4" | |||
-- Table of layouts to cover with awful.layout.inc, order matters. | |||
layouts = | |||
{ | |||
awful.layout.suit.floating, | |||
awful.layout.suit.tile, | |||
awful.layout.suit.tile.left, | |||
awful.layout.suit.tile.bottom, | |||
awful.layout.suit.tile.top, | |||
awful.layout.suit.fair, | |||
awful.layout.suit.fair.horizontal, | |||
awful.layout.suit.spiral, | |||
awful.layout.suit.spiral.dwindle, | |||
awful.layout.suit.max, | |||
awful.layout.suit.max.fullscreen, | |||
awful.layout.suit.magnifier | |||
} | |||
-- }}} | |||
-- {{{ Tags | |||
-- Define a tag table which hold all screen tags. | |||
tags = {} | |||
for s = 1, screen.count() do | |||
-- Each screen has its own tag table. | |||
tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1]) | |||
end | |||
-- }}} | |||
-- {{{ Menu | |||
-- Create a laucher widget and a main menu | |||
myawesomemenu = { | |||
{ "manual", terminal .. " -e man awesome" }, | |||
{ "edit config", editor_cmd .. " " .. awesome.conffile }, | |||
{ "restart", awesome.restart }, | |||
{ "quit", awesome.quit } | |||
} | |||
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, | |||
{ "open terminal", terminal } | |||
} | |||
}) | |||
mylauncher = awful.widget.launcher({ image = image(beautiful.awesome_icon), | |||
menu = mymainmenu }) | |||
-- }}} | |||
-- {{{ Wibox | |||
-- Create a textclock widget | |||
mytextclock = awful.widget.textclock({ align = "right" }) | |||
-- Create a systray | |||
mysystray = widget({ type = "systray" }) | |||
-- Create a wibox for each screen and add it | |||
mywibox = {} | |||
mypromptbox = {} | |||
mylayoutbox = {} | |||
mytaglist = {} | |||
mytaglist.buttons = awful.util.table.join( | |||
awful.button({ }, 1, awful.tag.viewonly), | |||
awful.button({ modkey }, 1, awful.client.movetotag), | |||
awful.button({ }, 3, awful.tag.viewtoggle), | |||
awful.button({ modkey }, 3, awful.client.toggletag), | |||
awful.button({ }, 4, awful.tag.viewnext), | |||
awful.button({ }, 5, awful.tag.viewprev) | |||
) | |||
mytasklist = {} | |||
mytasklist.buttons = awful.util.table.join( | |||
awful.button({ }, 1, function (c) | |||
if c == client.focus then | |||
c.minimized = true | |||
else | |||
if not c:isvisible() then | |||
awful.tag.viewonly(c:tags()[1]) | |||
end | |||
-- This will also un-minimize | |||
-- the client, if needed | |||
client.focus = c | |||
c:raise() | |||
end | |||
end), | |||
awful.button({ }, 3, function () | |||
if instance then | |||
instance:hide() | |||
instance = nil | |||
else | |||
instance = awful.menu.clients({ width=250 }) | |||
end | |||
end), | |||
awful.button({ }, 4, function () | |||
awful.client.focus.byidx(1) | |||
if client.focus then client.focus:raise() end | |||
end), | |||
awful.button({ }, 5, function () | |||
awful.client.focus.byidx(-1) | |||
if client.focus then client.focus:raise() end | |||
end)) | |||
for s = 1, screen.count() do | |||
-- Create a promptbox for each screen | |||
mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright }) | |||
-- Create an imagebox widget which will contains an icon indicating which layout we're using. | |||
-- We need one layoutbox per screen. | |||
mylayoutbox[s] = awful.widget.layoutbox(s) | |||
mylayoutbox[s]:buttons(awful.util.table.join( | |||
awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end), | |||
awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end), | |||
awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end), | |||
awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end))) | |||
-- Create a taglist widget | |||
mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons) | |||
-- Create a tasklist widget | |||
mytasklist[s] = awful.widget.tasklist(function(c) | |||
return awful.widget.tasklist.label.currenttags(c, s) | |||
end, mytasklist.buttons) | |||
-- Create the wibox | |||
mywibox[s] = awful.wibox({ position = "top", screen = s }) | |||
-- Add widgets to the wibox - order matters | |||
mywibox[s].widgets = { | |||
{ | |||
mylauncher, | |||
mytaglist[s], | |||
mypromptbox[s], | |||
layout = awful.widget.layout.horizontal.leftright | |||
}, | |||
mylayoutbox[s], | |||
mytextclock, | |||
s == 1 and mysystray or nil, | |||
mytasklist[s], | |||
layout = awful.widget.layout.horizontal.rightleft | |||
} | |||
end | |||
-- }}} | |||
-- {{{ Mouse bindings | |||
root.buttons(awful.util.table.join( | |||
awful.button({ }, 3, function () mymainmenu:toggle() end), | |||
awful.button({ }, 4, awful.tag.viewnext), | |||
awful.button({ }, 5, awful.tag.viewprev) | |||
)) | |||
-- }}} | |||
-- {{{ Key bindings | |||
globalkeys = awful.util.table.join( | |||
awful.key({ modkey, }, "Left", awful.tag.viewprev ), | |||
awful.key({ modkey, }, "Right", awful.tag.viewnext ), | |||
awful.key({ modkey, }, "Escape", awful.tag.history.restore), | |||
awful.key({ modkey, }, "j", | |||
function () | |||
awful.client.focus.byidx( 1) | |||
if client.focus then client.focus:raise() end | |||
end), | |||
awful.key({ modkey, }, "k", | |||
function () | |||
awful.client.focus.byidx(-1) | |||
if client.focus then client.focus:raise() end | |||
end), | |||
awful.key({ modkey, }, "w", function () mymainmenu:show({keygrabber=true}) end), | |||
-- Layout manipulation | |||
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end), | |||
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end), | |||
awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end), | |||
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end), | |||
awful.key({ modkey, }, "u", awful.client.urgent.jumpto), | |||
awful.key({ modkey, }, "Tab", | |||
function () | |||
awful.client.focus.history.previous() | |||
if client.focus then | |||
client.focus:raise() | |||
end | |||
end), | |||
-- Standard program | |||
awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end), | |||
awful.key({ modkey, "Control" }, "r", awesome.restart), | |||
awful.key({ modkey, "Shift" }, "q", awesome.quit), | |||
awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end), | |||
awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end), | |||
awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1) end), | |||
awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1) end), | |||
awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1) end), | |||
awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1) end), | |||
awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end), | |||
awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end), | |||
awful.key({ modkey, "Control" }, "n", awful.client.restore), | |||
-- Prompt | |||
awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end), | |||
awful.key({ modkey }, "x", | |||
function () | |||
awful.prompt.run({ prompt = "Run Lua code: " }, | |||
mypromptbox[mouse.screen].widget, | |||
awful.util.eval, nil, | |||
awful.util.getdir("cache") .. "/history_eval") | |||
end) | |||
) | |||
clientkeys = awful.util.table.join( | |||
awful.key({ modkey, }, "f", function (c) c.fullscreen = not c.fullscreen end), | |||
awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end), | |||
awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle ), | |||
awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end), | |||
awful.key({ modkey, }, "o", awful.client.movetoscreen ), | |||
awful.key({ modkey, "Shift" }, "r", function (c) c:redraw() end), | |||
awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end), | |||
awful.key({ modkey, }, "n", | |||
function (c) | |||
-- The client currently has the input focus, so it cannot be | |||
-- minimized, since minimized clients can't have the focus. | |||
c.minimized = true | |||
end), | |||
awful.key({ modkey, }, "m", | |||
function (c) | |||
c.maximized_horizontal = not c.maximized_horizontal | |||
c.maximized_vertical = not c.maximized_vertical | |||
end) | |||
) | |||
-- Compute the maximum number of digit we need, limited to 9 | |||
keynumber = 0 | |||
for s = 1, screen.count() do | |||
keynumber = math.min(9, math.max(#tags[s], keynumber)); | |||
end | |||
-- Bind all key numbers to tags. | |||
-- Be careful: we use keycodes to make it works on any keyboard layout. | |||
-- This should map on the top row of your keyboard, usually 1 to 9. | |||
for i = 1, keynumber do | |||
globalkeys = awful.util.table.join(globalkeys, | |||
awful.key({ modkey }, "#" .. i + 9, | |||
function () | |||
local screen = mouse.screen | |||
if tags[screen][i] then | |||
awful.tag.viewonly(tags[screen][i]) | |||
end | |||
end), | |||
awful.key({ modkey, "Control" }, "#" .. i + 9, | |||
function () | |||
local screen = mouse.screen | |||
if tags[screen][i] then | |||
awful.tag.viewtoggle(tags[screen][i]) | |||
end | |||
end), | |||
awful.key({ modkey, "Shift" }, "#" .. i + 9, | |||
function () | |||
if client.focus and tags[client.focus.screen][i] then | |||
awful.client.movetotag(tags[client.focus.screen][i]) | |||
end | |||
end), | |||
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, | |||
function () | |||
if client.focus and tags[client.focus.screen][i] then | |||
awful.client.toggletag(tags[client.focus.screen][i]) | |||
end | |||
end)) | |||
end | |||
clientbuttons = awful.util.table.join( | |||
awful.button({ }, 1, function (c) client.focus = c; c:raise() end), | |||
awful.button({ modkey }, 1, awful.mouse.client.move), | |||
awful.button({ modkey }, 3, awful.mouse.client.resize)) | |||
-- Set keys | |||
root.keys(globalkeys) | |||
-- }}} | |||
-- {{{ Rules | |||
awful.rules.rules = { | |||
-- All clients will match this rule. | |||
{ rule = { }, | |||
properties = { border_width = beautiful.border_width, | |||
border_color = beautiful.border_normal, | |||
focus = true, | |||
keys = clientkeys, | |||
buttons = clientbuttons } }, | |||
{ rule = { class = "MPlayer" }, | |||
properties = { floating = true } }, | |||
{ rule = { class = "pinentry" }, | |||
properties = { floating = true } }, | |||
{ rule = { class = "gimp" }, | |||
properties = { floating = true } }, | |||
-- Set Firefox to always map on tags number 2 of screen 1. | |||
-- { rule = { class = "Firefox" }, | |||
-- properties = { tag = tags[1][2] } }, | |||
} | |||
-- }}} | |||
-- {{{ Signals | |||
-- Signal function to execute when a new client appears. | |||
client.add_signal("manage", function (c, startup) | |||
-- Add a titlebar | |||
-- awful.titlebar.add(c, { modkey = modkey }) | |||
-- Enable sloppy focus | |||
c:add_signal("mouse::enter", function(c) | |||
if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier | |||
and awful.client.focus.filter(c) then | |||
client.focus = c | |||
end | |||
end) | |||
if not startup then | |||
-- Set the windows at the slave, | |||
-- i.e. put it at the end of others instead of setting it master. | |||
-- awful.client.setslave(c) | |||
-- Put windows in a smart way, only if they does not set an initial position. | |||
if not c.size_hints.user_position and not c.size_hints.program_position then | |||
awful.placement.no_overlap(c) | |||
awful.placement.no_offscreen(c) | |||
end | |||
end | |||
end) | |||
client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end) | |||
client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end) | |||
-- }}} |
@@ -0,0 +1,13 @@ | |||
# OpenBox Menu Generator exclusions file | |||
# | |||
# Lines starting with a '#' character and empty lines are ignored. | |||
# Put one exclusion per line. | |||
# Exclusions are case sensitive and are matched against | |||
# the 'Name' of the entry (the text that appears in menuitems). | |||
# | |||
# Exclusions format examples: | |||
# ^example$ exact match with 'example'. | |||
# ^example match any string that begins whith 'example'. | |||
# example$ match any string that ends with 'example'. | |||
# example match any string containing 'example'. | |||
@@ -0,0 +1,35 @@ | |||
# OpenBox Menu Generator config file | |||
# | |||
# Lines starting with a '#' character and empty lines are ignored. | |||
# Keys and values are case sensitive. Keep all keys lowercase. | |||
# Removing or commenting any config line will cause an error. | |||
# Top Menu section | |||
# 'terminal' and 'editor' are REQUIRED | |||
# 'filemanager', 'webbrowser' and 'run command' are optional. | |||
# Leaving optional values empty causes the corresponding | |||
# menu item to be hidden, no matter what show/hide option says. | |||
terminal = urxvt | |||
editor = emacs | |||
filemanager = urxvt -e mc | |||
webbrowser = firefox | |||
instant messaging = | |||
run command = gmrun | |||
# Lock Screen menuitem | |||
# Also leaving it empty causes menuitem to be hidden | |||
lock command = xscreensaver-command -lock | |||
# Exit menuitem | |||
# Giving this an empty value don't hides the menuitem | |||
# but uses the default OpenBox action "Exit" | |||
exit command = | |||
# OnlyShowIn Exclusions | |||
# There is a 'OnlyShowIn' directive in .desktop files. | |||
# This directive is self-descriptive :) | |||
# You can put here (in lowercase) any directive's posible value | |||
# you want to be excluded from the menu, comma-separeted. | |||
# Leaving this value empty won't exclude any entry by this criteria. | |||
exclude onlyshowin = kde,gnome | |||
@@ -0,0 +1,43 @@ | |||
# OpenBox Menu Generator Schema file | |||
# Each (non-empty or non-comment) line of this file must be in the form: | |||
# 'type:options' | |||
# | |||
# 'type' could be one of the following values: | |||
# 'item', 'submenu', 'sep', 'cat', 'raw', 'file' | |||
# | |||
# Posible values for each of this types are: | |||
# For 'item': 'terminal', 'filemanager', 'webbrowser', 'instantmessaging', 'editor', 'runcommand', 'lock', 'exit' | |||
# For 'submenu': 'windowsanddesktops', 'openbox' | |||
# For 'sep': A string representing the LABEL for the separator or none | |||
# For 'cat': Any of the posible categories. See obmenugen --help | |||
# For 'raw': A hardcoded XML line in the OpenBox's menu.xml file format | |||
# Example: raw:<item label="Linux Breakout 2"><action name="Execute"><execute>lbreakout2</execute></action></item> | |||
# For file: The name of a file with a chunk of XML in the OpenBox's menu.xml file format. | |||
# The file must be in ~/.config/obmenugen/ | |||
# Example: file:extras.xml | |||
# | |||
# Comments are lines begining with a # character, to the end of the line. | |||
item:terminal | |||
item:filemanager | |||
item:webbrowser | |||
item:instantmessaging | |||
item:editor | |||
item:runcommand | |||
submenu:windowsanddesktops | |||
sep:Applications | |||
cat:accesories | |||
cat:graphics | |||
cat:audiovideo | |||
cat:education | |||
cat:office | |||
cat:games | |||
cat:network | |||
cat:development | |||
cat:settings | |||
cat:system | |||
submenu:openbox | |||
sep: | |||
item:lock | |||
item:exit | |||
@@ -0,0 +1 @@ | |||
#!/bin/bash |
@@ -0,0 +1,91 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<openbox_menu xmlns="http://openbox.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://openbox.org/ file:///usr/X11R6/share/openbox/menu.xsd"> | |||
<menu id="root-menu" label="openbox3"> | |||
<item label="Terminal"><action name="Execute"><execute>urxvt</execute></action></item> | |||
<item label="File Manager"><action name="Execute"><execute>urxvt -e mc</execute></action></item> | |||
<item label="Web Browser"><action name="Execute"><execute>firefox</execute></action></item> | |||
<item label="Editor"><action name="Execute"><execute>emacs</execute></action></item> | |||
<item label="Run Command"><action name="Execute"><execute>gmrun</execute></action></item> | |||
<separator /> | |||
<menu id="client-list-combined-menu" /> | |||
<separator label="Applications"/> | |||
<menu id="Accesories" label="Accesories"> | |||
<item label="File Manager"><action name="Execute"><execute>pcmanfm</execute></action></item> | |||
<item label="Graveman"><action name="Execute"><execute>graveman</execute></action></item> | |||
<item label="Parcellite"><action name="Execute"><execute>parcellite</execute></action></item> | |||
<item label="SpeedCrunch"><action name="Execute"><execute>speedcrunch</execute></action></item> | |||
</menu> | |||
<menu id="Graphics" label="Graphics"> | |||
<item label="GNU Image Manipulation Program"><action name="Execute"><execute>gimp-2.6</execute></action></item> | |||
<item label="Image Viewer"><action name="Execute"><execute>gpicview</execute></action></item> | |||
</menu> | |||
<menu id="Audio & Video" label="Audio & Video"> | |||
<item label="EasyTAG"><action name="Execute"><execute>easytag</execute></action></item> | |||
<item label="Enqueue in SMPlayer"><action name="Execute"><execute>smplayer -add-to-playlist</execute></action></item> | |||
<item label="MPlayer Media Player"><action name="Execute"><execute>mplayer -really-quiet</execute></action></item> | |||
<item label="SMPlayer"><action name="Execute"><execute>smplayer</execute></action></item> | |||
<item label="VLC media player"><action name="Execute"><execute>vlc</execute></action></item> | |||
</menu> | |||
<menu id="Office" label="Office"> | |||
<item label="HTMLDOC"><action name="Execute"><execute>htmldoc</execute></action></item> | |||
<item label="OpenOffice.org 3.3 Base"><action name="Execute"><execute>openoffice -base</execute></action></item> | |||
<item label="OpenOffice.org 3.3 Calc"><action name="Execute"><execute>openoffice -calc</execute></action></item> | |||
<item label="OpenOffice.org 3.3 Draw"><action name="Execute"><execute>openoffice -draw</execute></action></item> | |||
<item label="OpenOffice.org 3.3 Impress"><action name="Execute"><execute>openoffice -impress</execute></action></item> | |||
<item label="OpenOffice.org 3.3 Math"><action name="Execute"><execute>openoffice -math</execute></action></item> | |||
<item label="OpenOffice.org 3.3 Printer Administration"><action name="Execute"><execute>openoffice-printeradmin</execute></action></item> | |||
<item label="OpenOffice.org 3.3 Writer"><action name="Execute"><execute>openoffice -writer</execute></action></item> | |||
<item label="OpenOffice.org 3.3"><action name="Execute"><execute>openoffice</execute></action></item> | |||
<item label="Zathura"><action name="Execute"><execute>zathura</execute></action></item> | |||
</menu> | |||
<menu id="Games" label="Games"> | |||
<item label="DOOM III"><action name="Execute"><execute>/usr/bin/doom3</execute></action></item> | |||
</menu> | |||
<menu id="Network" label="Network"> | |||
<item label="Avahi SSH Server Browser"><action name="Execute"><execute>/usr/bin/bssh</execute></action></item> | |||
<item label="Avahi VNC Server Browser"><action name="Execute"><execute>/usr/bin/bvnc</execute></action></item> | |||
<item label="Deluge BitTorrent Client"><action name="Execute"><execute>deluge-gtk</execute></action></item> | |||
<item label="Firefox - Safe Mode"><action name="Execute"><execute>firefox -safe-mode</execute></action></item> | |||
<item label="Firefox Beta - Safe Mode"><action name="Execute"><execute>firefox-beta-bin -safe-mode</execute></action></item> | |||
<item label="Firefox Beta"><action name="Execute"><execute>firefox-beta-bin</execute></action></item> | |||
<item label="Firefox"><action name="Execute"><execute>firefox</execute></action></item> | |||
<item label="Zenmap (as root)"><action name="Execute"><execute>/usr/share/zenmap/su-to-zenmap.sh</execute></action></item> | |||
<item label="Zenmap"><action name="Execute"><execute>zenmap</execute></action></item> | |||
<item label="unison"><action name="Execute"><execute>unison-x11</execute></action></item> | |||
</menu> | |||
<menu id="Development" label="Development"> | |||
<item label="CMake"><action name="Execute"><execute>cmake-gui</execute></action></item> | |||
<item label="DrRacket"><action name="Execute"><execute>drracket</execute></action></item> | |||
<item label="Emacs Text Editor"><action name="Execute"><execute>emacs</execute></action></item> | |||
<item label="Qt Assistant"><action name="Execute"><execute>/usr/bin/assistant</execute></action></item> | |||
<item label="Qt Designer"><action name="Execute"><execute>/usr/bin/designer</execute></action></item> | |||
<item label="Qt Linguist"><action name="Execute"><execute>/usr/bin/linguist</execute></action></item> | |||
</menu> | |||
<menu id="Settings" label="Settings"> | |||
<item label="NVIDIA X Server Settings"><action name="Execute"><execute>/usr/bin/nvidia-settings</execute></action></item> | |||
<item label="Preferred Applications"><action name="Execute"><execute>libfm-pref-apps</execute></action></item> | |||
<item label="Qt Config"><action name="Execute"><execute>/usr/bin/qtconfig</execute></action></item> | |||
<item label="Screensaver"><action name="Execute"><execute>xscreensaver-demo</execute></action></item> | |||
</menu> | |||
<menu id="System Tools" label="System Tools"> | |||
<item label="Avahi Zeroconf Browser"><action name="Execute"><execute>/usr/bin/avahi-discover</execute></action></item> | |||
<item label="Htop"><action name="Execute"><execute>urxvt -e htop</execute></action></item> | |||
<item label="Ophcrack"><action name="Execute"><execute>ophcrack</execute></action></item> | |||
<item label="Oracle VM VirtualBox"><action name="Execute"><execute>VirtualBox</execute></action></item> | |||
<item label="rxvt-unicode"><action name="Execute"><execute>urxvt</execute></action></item> | |||
</menu> | |||
<separator /> | |||
<menu id="Openbox Settings" label="Openbox Settings"> | |||
<item label="Reconfigure Openbox"><action name="Reconfigure" /></item> | |||
<item label="Configure Autostarted Applications"><action name="Execute"><execute>emacs /home/collin/.config/openbox/autostart.sh</execute></action></item> | |||
<item label="Edit rc.xml"><action name="Execute"><execute>emacs /home/collin/.config/openbox/rc.xml</execute></action></item> | |||
<separator label="obmenugen settings"/> | |||
<item label="Edit obmenugen configuration"><action name="Execute"><execute>emacs /home/collin/.config/obmenugen/obmenugen.cfg</execute></action></item> | |||
<item label="Edit obmenugen exclusions"><action name="Execute"><execute>emacs /home/collin/.config/obmenugen/exclusions</execute></action></item> | |||
<item label="Edit obmenugen schema"><action name="Execute"><execute>emacs /home/collin/.config/obmenugen/obmenugen.schema</execute></action></item> | |||
</menu> | |||
<separator /> | |||
<item label="Lock Screen"><action name="Execute"><execute>xscreensaver-command -lock</execute></action></item> | |||
<item label="Exit"><action name="Exit" /></item> | |||
</menu> | |||
</openbox_menu> |
@@ -0,0 +1,732 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!-- Do not edit this file, it will be overwritten on install. | |||
Copy the file to $HOME/.config/openbox/ instead. --> | |||
<openbox_config xmlns="http://openbox.org/3.4/rc"> | |||
<resistance> | |||
<strength>10</strength> | |||
<screen_edge_strength>20</screen_edge_strength> | |||
</resistance> | |||
<focus> | |||
<focusNew>yes</focusNew> | |||
<!-- always try to focus new windows when they appear. other rules do | |||
apply --> | |||
<followMouse>no</followMouse> | |||
<!-- move focus to a window when you move the mouse into it --> | |||
<focusLast>yes</focusLast> | |||
<!-- focus the last used window when changing desktops, instead of the one | |||
under the mouse pointer. when followMouse is enabled --> | |||
<underMouse>no</underMouse> | |||
<!-- move focus under the mouse, even when the mouse is not moving --> | |||
<focusDelay>200</focusDelay> | |||
<!-- when followMouse is enabled, the mouse must be inside the window for | |||
this many milliseconds (1000 = 1 sec) before moving focus to it --> | |||
<raiseOnFocus>no</raiseOnFocus> | |||
<!-- when followMouse is enabled, and a window is given focus by moving the | |||
mouse into it, also raise the window --> | |||
</focus> | |||
<placement> | |||
<policy>Smart</policy> | |||
<!-- 'Smart' or 'UnderMouse' --> | |||
<center>yes</center> | |||
<!-- whether to place windows in the center of the free area found or | |||
the top left corner --> | |||
<monitor>Active</monitor> | |||
<!-- with Smart placement on a multi-monitor system, try to place new windows | |||
on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where | |||
the active window is --> | |||
<primaryMonitor>1</primaryMonitor> | |||
<!-- The monitor where Openbox should place popup dialogs such as the | |||
focus cycling popup, or the desktop switch popup. It can be an index | |||
from 1, specifying a particular monitor. Or it can be one of the | |||
following: 'Mouse' - where the mouse is, or | |||
'Active' - where the active window is --> | |||
</placement> | |||
<theme> | |||
<name>Clearlooks</name> | |||
<titleLayout>NLIMC</titleLayout> | |||
<!-- | |||
available characters are NDSLIMC, each can occur at most once. | |||
N: window icon | |||
L: window label (AKA title). | |||
I: iconify | |||
M: maximize | |||
C: close | |||
S: shade (roll up/down) | |||
D: omnipresent (on all desktops). | |||
--> | |||
<keepBorder>yes</keepBorder> | |||
<animateIconify>yes</animateIconify> | |||
<font place="ActiveWindow"> | |||
<name>sans</name> | |||
<size>8</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="InactiveWindow"> | |||
<name>sans</name> | |||
<size>8</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="MenuHeader"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>normal</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="MenuItem"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>normal</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
<font place="OnScreenDisplay"> | |||
<name>sans</name> | |||
<size>9</size> | |||
<!-- font size in points --> | |||
<weight>bold</weight> | |||
<!-- 'bold' or 'normal' --> | |||
<slant>normal</slant> | |||
<!-- 'italic' or 'normal' --> | |||
</font> | |||
</theme> | |||
<desktops> | |||
<!-- this stuff is only used at startup, pagers allow you to change them | |||
during a session | |||
these are default values to use when other ones are not already set | |||
by other applications, or saved in your session | |||
use obconf if you want to change these without having to log out | |||
and back in --> | |||
<number>4</number> | |||
<firstdesk>1</firstdesk> | |||
<names> | |||
<!-- set names up here if you want to, like this: | |||
<name>desktop 1</name> | |||
<name>desktop 2</name> | |||
--> | |||
</names> | |||
<popupTime>875</popupTime> | |||
<!-- The number of milliseconds to show the popup for when switching | |||
desktops. Set this to 0 to disable the popup. --> | |||
</desktops> | |||
<resize> | |||
<drawContents>yes</drawContents> | |||
<popupShow>Nonpixel</popupShow> | |||
<!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) --> | |||
<popupPosition>Center</popupPosition> | |||
<!-- 'Center', 'Top', or 'Fixed' --> | |||
<popupFixedPosition> | |||
<!-- these are used if popupPosition is set to 'Fixed' --> | |||
<x>10</x> | |||
<!-- positive number for distance from left edge, negative number for | |||
distance from right edge, or 'Center' --> | |||
<y>10</y> | |||
<!-- positive number for distance from top edge, negative number for | |||
distance from bottom edge, or 'Center' --> | |||
</popupFixedPosition> | |||
</resize> | |||
<!-- You can reserve a portion of your screen where windows will not cover when | |||
they are maximized, or when they are initially placed. | |||
Many programs reserve space automatically, but you can use this in other | |||
cases. --> | |||
<margins> | |||
<top>0</top> | |||
<bottom>0</bottom> | |||
<left>0</left> | |||
<right>0</right> | |||
</margins> | |||
<dock> | |||
<position>TopLeft</position> | |||
<!-- (Top|Bottom)(Left|Right|)|Top|Bottom|Left|Right|Floating --> | |||
<floatingX>0</floatingX> | |||
<floatingY>0</floatingY> | |||
<noStrut>no</noStrut> | |||
<stacking>Above</stacking> | |||
<!-- 'Above', 'Normal', or 'Below' --> | |||
<direction>Vertical</direction> | |||
<!-- 'Vertical' or 'Horizontal' --> | |||
<autoHide>no</autoHide> | |||
<hideDelay>300</hideDelay> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<showDelay>300</showDelay> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<moveButton>Middle</moveButton> | |||
<!-- 'Left', 'Middle', 'Right' --> | |||
</dock> | |||
<keyboard> | |||
<chainQuitKey>C-g</chainQuitKey> | |||
<!-- GMRun keybinding --> | |||
<keybind key="A-F2"> | |||
<action name="execute"><execute>gmrun</execute></action> | |||
</keybind> | |||
<!-- Keybindings for desktop switching --> | |||
<keybind key="C-A-Left"> | |||
<action name="DesktopLeft"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="C-A-Right"> | |||
<action name="DesktopRight"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="C-A-Up"> | |||
<action name="DesktopUp"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="C-A-Down"> | |||
<action name="DesktopDown"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="S-A-Left"> | |||
<action name="SendToDesktopLeft"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="S-A-Right"> | |||
<action name="SendToDesktopRight"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="S-A-Up"> | |||
<action name="SendToDesktopUp"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="S-A-Down"> | |||
<action name="SendToDesktopDown"><dialog>no</dialog><wrap>no</wrap></action> | |||
</keybind> | |||
<keybind key="W-F1"> | |||
<action name="Desktop"><desktop>1</desktop></action> | |||
</keybind> | |||
<keybind key="W-F2"> | |||
<action name="Desktop"><desktop>2</desktop></action> | |||
</keybind> | |||
<keybind key="W-F3"> | |||
<action name="Desktop"><desktop>3</desktop></action> | |||
</keybind> | |||
<keybind key="W-F4"> | |||
<action name="Desktop"><desktop>4</desktop></action> | |||
</keybind> | |||
<keybind key="W-d"> | |||
<action name="ToggleShowDesktop"/> | |||
</keybind> | |||
<!-- Keybindings for windows --> | |||
<keybind key="A-F4"> | |||
<action name="Close"/> | |||
</keybind> | |||
<keybind key="A-Escape"> | |||
<action name="Lower"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
</keybind> | |||
<keybind key="A-space"> | |||
<action name="ShowMenu"><menu>client-menu</menu></action> | |||
</keybind> | |||
<!-- Keybindings for window switching --> | |||
<keybind key="A-Tab"> | |||
<action name="NextWindow"/> | |||
</keybind> | |||
<keybind key="A-S-Tab"> | |||
<action name="PreviousWindow"/> | |||
</keybind> | |||
<keybind key="C-A-Tab"> | |||
<action name="NextWindow"> | |||
<panels>yes</panels><desktop>yes</desktop> | |||
</action> | |||
</keybind> | |||
<!-- Keybindings for running applications --> | |||
<keybind key="W-e"> | |||
<action name="Execute"> | |||
<startupnotify> | |||
<enabled>true</enabled> | |||
<name>Konqueror</name> | |||
</startupnotify> | |||
<command>kfmclient openProfile filemanagement</command> | |||
</action> | |||
</keybind> | |||
</keyboard> | |||
<mouse> | |||
<dragThreshold>8</dragThreshold> | |||
<!-- number of pixels the mouse must move before a drag begins --> | |||
<doubleClickTime>200</doubleClickTime> | |||
<!-- in milliseconds (1000 = 1 second) --> | |||
<screenEdgeWarpTime>400</screenEdgeWarpTime> | |||
<!-- Time before changing desktops when the pointer touches the edge of the | |||
screen while moving a window, in milliseconds (1000 = 1 second). | |||
Set this to 0 to disable warping --> | |||
<context name="Frame"> | |||
<mousebind button="A-Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="A-Left" action="Click"> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="A-Left" action="Drag"> | |||
<action name="Move"/> | |||
</mousebind> | |||
<mousebind button="A-Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="A-Right" action="Drag"> | |||
<action name="Resize"/> | |||
</mousebind> | |||
<mousebind button="A-Middle" action="Press"> | |||
<action name="Lower"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
</mousebind> | |||
<mousebind button="A-Up" action="Click"> | |||
<action name="DesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="A-Down" action="Click"> | |||
<action name="DesktopNext"/> | |||
</mousebind> | |||
<mousebind button="C-A-Up" action="Click"> | |||
<action name="DesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="C-A-Down" action="Click"> | |||
<action name="DesktopNext"/> | |||
</mousebind> | |||
<mousebind button="A-S-Up" action="Click"> | |||
<action name="SendToDesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="A-S-Down" action="Click"> | |||
<action name="SendToDesktopNext"/> | |||
</mousebind> | |||
</context> | |||
<context name="Titlebar"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Move"/> | |||
</mousebind> | |||
<mousebind button="Left" action="DoubleClick"> | |||
<action name="ToggleMaximizeFull"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="Lower"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
</mousebind> | |||
<mousebind button="Up" action="Click"> | |||
<action name="Shade"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
<action name="Lower"/> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="Unshade"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"><menu>client-menu</menu></action> | |||
</mousebind> | |||
</context> | |||
<context name="Top"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"><edge>top</edge></action> | |||
</mousebind> | |||
</context> | |||
<context name="Left"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"><edge>left</edge></action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"><menu>client-menu</menu></action> | |||
</mousebind> | |||
</context> | |||
<context name="Right"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"><edge>right</edge></action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"><menu>client-menu</menu></action> | |||
</mousebind> | |||
</context> | |||
<context name="Bottom"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"><edge>bottom</edge></action> | |||
</mousebind> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="Lower"/> | |||
<action name="FocusToBottom"/> | |||
<action name="Unfocus"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"><menu>client-menu</menu></action> | |||
</mousebind> | |||
</context> | |||
<context name="BLCorner"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"/> | |||
</mousebind> | |||
</context> | |||
<context name="BRCorner"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"/> | |||
</mousebind> | |||
</context> | |||
<context name="TLCorner"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"/> | |||
</mousebind> | |||
</context> | |||
<context name="TRCorner"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Drag"> | |||
<action name="Resize"/> | |||
</mousebind> | |||
</context> | |||
<context name="Client"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
</context> | |||
<context name="Icon"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
<action name="ShowMenu"><menu>client-menu</menu></action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="ShowMenu"><menu>client-menu</menu></action> | |||
</mousebind> | |||
</context> | |||
<context name="AllDesktops"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleOmnipresent"/> | |||
</mousebind> | |||
</context> | |||
<context name="Shade"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleShade"/> | |||
</mousebind> | |||
</context> | |||
<context name="Iconify"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="Iconify"/> | |||
</mousebind> | |||
</context> | |||
<context name="Maximize"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="ToggleMaximizeFull"/> | |||
</mousebind> | |||
<mousebind button="Middle" action="Click"> | |||
<action name="ToggleMaximizeVert"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Click"> | |||
<action name="ToggleMaximizeHorz"/> | |||
</mousebind> | |||
</context> | |||
<context name="Close"> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
<action name="Unshade"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Click"> | |||
<action name="Close"/> | |||
</mousebind> | |||
</context> | |||
<context name="Desktop"> | |||
<mousebind button="Up" action="Click"> | |||
<action name="DesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="DesktopNext"/> | |||
</mousebind> | |||
<mousebind button="A-Up" action="Click"> | |||
<action name="DesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="A-Down" action="Click"> | |||
<action name="DesktopNext"/> | |||
</mousebind> | |||
<mousebind button="C-A-Up" action="Click"> | |||
<action name="DesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="C-A-Down" action="Click"> | |||
<action name="DesktopNext"/> | |||
</mousebind> | |||
<mousebind button="Left" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="Focus"/> | |||
<action name="Raise"/> | |||
</mousebind> | |||
</context> | |||
<context name="Root"> | |||
<!-- Menus --> | |||
<mousebind button="Middle" action="Press"> | |||
<action name="ShowMenu"><menu>client-list-combined-menu</menu></action> | |||
</mousebind> | |||
<mousebind button="Right" action="Press"> | |||
<action name="ShowMenu"><menu>root-menu</menu></action> | |||
</mousebind> | |||
</context> | |||
<context name="MoveResize"> | |||
<mousebind button="Up" action="Click"> | |||
<action name="DesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="Down" action="Click"> | |||
<action name="DesktopNext"/> | |||
</mousebind> | |||
<mousebind button="A-Up" action="Click"> | |||
<action name="DesktopPrevious"/> | |||
</mousebind> | |||
<mousebind button="A-Down" action="Click"> | |||
<action name="DesktopNext"/> | |||
</mousebind> | |||
</context> | |||
</mouse> | |||
<menu> | |||
<!-- You can specify more than one menu file in here and they are all loaded, | |||
just don't make menu ids clash or, well, it'll be kind of pointless --> | |||
<!-- default menu file (or custom one in $HOME/.config/openbox/) --> | |||
<file>menu.xml</file> | |||
<hideDelay>200</hideDelay> | |||
<!-- if a press-release lasts longer than this setting (in milliseconds), the | |||
menu is hidden again --> | |||
<middle>no</middle> | |||
<!-- center submenus vertically about the parent entry --> | |||
<submenuShowDelay>100</submenuShowDelay> | |||
<!-- time to delay before showing a submenu after hovering over the parent | |||
entry. | |||
if this is a negative value, then the delay is infinite and the | |||
submenu will not be shown until it is clicked on --> | |||
<submenuHideDelay>400</submenuHideDelay> | |||
<!-- time to delay before hiding a submenu when selecting another | |||
entry in parent menu --> | |||
if this is a negative value, then the delay is infinite and the | |||
submenu will not be hidden until a different submenu is opened --> | |||
<applicationIcons>yes</applicationIcons> | |||
<!-- controls if icons appear in the client-list-(combined-)menu --> | |||
<manageDesktops>yes</manageDesktops> | |||
<!-- show the manage desktops section in the client-list-(combined-)menu --> | |||
</menu> | |||
<applications> | |||
<!-- | |||
# this is an example with comments through out. use these to make your | |||
# own rules, but without the comments of course. | |||
<application name="the window's _OB_APP_NAME property (see obxprop)" | |||
class="the window's _OB_APP_CLASS property (see obxprop)" | |||
role="the window's _OB_APP_ROLE property (see obxprop)" | |||
type="the window's _OB_APP_TYPE property (see obxprob).. | |||
(if unspecified, then it is 'dialog' for child windows)"> | |||
# you may set only one of name/class/role/type, or you may use more than one | |||
# together to restrict your matches. | |||
# the name, class, and role use simple wildcard matching such as those | |||
# used by a shell. you can use * to match any characters and ? to match | |||
# any single character. | |||
# the type is one of: normal, dialog, splash, utility, menu, toolbar, dock, | |||
# or desktop | |||
# when multiple rules match a window, they will all be applied, in the | |||
# order that they appear in this list | |||
# each rule element can be left out or set to 'default' to specify to not | |||
# change that attribute of the window | |||
<decor>yes</decor> | |||
# enable or disable window decorations | |||
<shade>no</shade> | |||
# make the window shaded when it appears, or not | |||
<position force="no"> | |||
# the position is only used if both an x and y coordinate are provided | |||
# (and not set to 'default') | |||
# when force is "yes", then the window will be placed here even if it | |||
# says you want it placed elsewhere. this is to override buggy | |||
# applications who refuse to behave | |||
<x>center</x> | |||
# a number like 50, or 'center' to center on screen. use a negative number | |||
# to start from the right (or bottom for <y>), ie -50 is 50 pixels from the | |||
# right edge (or bottom). | |||
<y>200</y> | |||
<monitor>1</monitor> | |||
# specifies the monitor in a xinerama setup. | |||
# 1 is the first head, or 'mouse' for wherever the mouse is | |||
</position> | |||
<focus>yes</focus> | |||
# if the window should try be given focus when it appears. if this is set | |||
# to yes it doesn't guarantee the window will be given focus. some | |||
# restrictions may apply, but Openbox will try to | |||
<desktop>1</desktop> | |||
# 1 is the first desktop, 'all' for all desktops | |||
<layer>normal</layer> | |||
# 'above', 'normal', or 'below' | |||
<iconic>no</iconic> | |||
# make the window iconified when it appears, or not | |||
<skip_pager>no</skip_pager> | |||
# asks to not be shown in pagers | |||
<skip_taskbar>no</skip_taskbar> | |||
# asks to not be shown in taskbars. window cycling actions will also | |||
# skip past such windows | |||
<fullscreen>yes</fullscreen> | |||
# make the window in fullscreen mode when it appears | |||
<maximized>true</maximized> | |||
# 'Horizontal', 'Vertical' or boolean (yes/no) | |||
</application> | |||
# end of the example | |||
--> | |||
</applications> | |||
</openbox_config> |
@@ -2,6 +2,37 @@ | |||
;; Author: Collin J. Doering | |||
;; Description: Emacs configuration file (in emacs lisp) | |||
;; TODO: clean up backages (prefer ELPA to AUR and archlinux packages); also denote which | |||
;; source is being used after require or autoload sexp's. | |||
;; E.g (require 'pkg) ;; PKG_SRC | |||
;; (autoload ...) ;; PKG_SRC | |||
;; For packages that are installed through the ELPA (and thus they are loaded | |||
;; auto-magically) that do not require any changes to this file (.emacs) and/or | |||
;; are changed using customize simply note (in a comment) at the beginning of this file | |||
;; the package | |||
;; ELPA packages that do not require modification of this file other then Customize | |||
;; * caml (required by tuareg) | |||
;; * tuareg | |||
;; * project-mode | |||
;; ELPA packages configured explicitly below: | |||
;; * php-mode | |||
;; * python-mode | |||
;; * lua-mode | |||
;; * erlang | |||
;; * clojure-mode | |||
;; This needs to be a the start of ~/.emacs since package-initialize is run after the user | |||
;; init file is read but before after-init-hook. It autoloads packages installed by | |||
;; package.el including updating the load-path and running/loading/requiring | |||
;; pkgname-autoload.el for all packages (where pkgname is replaced with the appropriate | |||
;; package name). To disable package.el's autoloading functionality use: | |||
;; (setq package-enabled-at-startup nil) | |||
;; The reason to use package-initialize here is so one can modify the installed modules | |||
;; later in this .emacs file but still retain the autoloading functionality of package.el | |||
(package-initialize) | |||
;; stop renaming of saved files to filename~ which ends up breaking hardlinks | |||
(setq backup-by-copying-when-linked t) | |||
@@ -51,7 +82,7 @@ | |||
;;(activate-mode-with-hooks 'pretty-lambdas '(scheme-mode-hook lisp-mode-hook lisp-interaction-mode geiser-repl-mode python-mode emacs-lisp-mode)) | |||
;; linum mode for pretty line numbering | |||
(require 'linum) | |||
(require 'linum) ;; Built-in | |||
;; right justify the numbers and add a space between them and the text in the given buffer | |||
(setq linum-format | |||
@@ -64,7 +95,7 @@ | |||
'face 'linum))) | |||
;; code-modes is a list of mode hooks (for programming langs only) | |||
(defvar code-modes '(scheme-mode-hook emacs-lisp-mode-hook c-mode-hook c++-mode-hook python-mode-hook lua-mode-hook haskell-mode-hook php-mode-hook perl-mode-hook lisp-mode-hook clojure-mode-hook ruby-mode-hook sh-mode-hook)) | |||
(defvar code-modes '(scheme-mode-hook emacs-lisp-mode-hook c-mode-hook c++-mode-hook python-mode-hook lua-mode-hook python-mode-hook haskell-mode-hook php-mode-hook perl-mode-hook lisp-mode-hook clojure-mode-hook ruby-mode-hook erlang-mode-hook sh-mode-hook)) | |||
;; activate linum-mode in all buffers used for programming | |||
(activate-mode-with-hooks (lambda () (linum-mode 1)) code-modes) | |||
@@ -72,6 +103,12 @@ | |||
;; activate flyspell-prog-mode for all buffers used for programming | |||
(activate-mode-with-hooks 'flyspell-prog-mode code-modes) | |||
;; use flyspell-mode in org-mode and magit-log-edit-mode buffers | |||
(activate-mode-with-hooks 'flyspell-mode '(org-mode-hook magit-log-edit-mode-hook)) | |||
;; Enjoy a game of Sudoku on some downtime | |||
(require 'sudoku) ;; ELPA | |||
;; *DEPRECIATED* as of emacs24; when it goes live remove this as well as package emacs-color-theme | |||
;; load color-theme and initialize | |||
;;(require 'color-theme) | |||
@@ -105,7 +142,7 @@ | |||
(autoload 'ibuffer "ibuffer" "List buffers." t) | |||
;; Require ibuffer extentions (used for ibuffer-never-show-predicates) | |||
(require 'ibuf-ext) | |||
(require 'ibuf-ext) ;; Built-in | |||
(add-to-list 'ibuffer-never-show-predicates "^\\*slime-events\\*$") | |||
(add-to-list 'ibuffer-never-show-predicates "^\\*Completions\\*$") | |||
(add-to-list 'ibuffer-never-show-predicates "^\\*tramp/.*\\*$") | |||
@@ -125,22 +162,35 @@ | |||
(name . "^\\.xmobarrc") | |||
(name . "^\\.Xdefaults$") | |||
(name . "^\\.screenrc$") | |||
(name . "^\\.xbindkeysrc$"))) | |||
(name . "^\\.xbindkeysrc$") | |||
(name . "^\\.racketrc$") | |||
(name . "^\\.ghci"))) | |||
("code" (or | |||
(mode . c-mode) | |||
(mode . c++-mode) | |||
(mode . perl-mode) | |||
(mode . lua-mode) | |||
(mode . clojure-mode) | |||
(mode . java-mode) | |||
(mode . python-mode) | |||
(mode . ruby-mode) | |||
(mode . emacs-lisp-mode) | |||
(mode . lisp-mode) | |||
(mode . sh-mode) | |||
(mode . scheme-mode) | |||
(mode . haskell-mode) | |||
(mode . php-mode) | |||
(mode . xml-mode))) | |||
("REPL" (or | |||
(mode . geiser-mode) | |||
(mode . slime-repl-mode) | |||
(mode . inferior-python-mode) | |||
(mode . inferior-haskell-mode) | |||
(mode . inferior-lisp-mode) | |||
(mode . eshell-mode) | |||
(mode . inferior-scheme-mode) | |||
(mode . inferior-tcl) | |||
(mode . erlang-shell-mode) | |||
(name . "^\\*inferior-lisp\\*$") | |||
(name . "^\\* Racket REPL \\*$"))) | |||
("planner" (or | |||
@@ -150,6 +200,10 @@ | |||
("emacs" (or | |||
(name . "^\\*scratch\\*$") | |||
(name . "^\\*Messages\\*$"))) | |||
("org" (or | |||
(mode . org-mode) | |||
(name . "^\\.org$") | |||
(name . "^\\.org.gpg$"))) | |||
("gnus" (or | |||
(mode . message-mode) | |||
(mode . bbdb-mode) | |||
@@ -164,21 +218,32 @@ | |||
(lambda () | |||
(ibuffer-switch-to-saved-filter-groups "default"))) | |||
;; setup html renderer w3m | |||
(require 'w3m-load) | |||
(setq browse-url-browser-function 'w3m-browse-url) | |||
;; Setup oauth2 (required by google-contacts) | |||
;;(add-to-list 'load-path "/home/collin/.emacs.d/elpa/oauth2-0.5") | |||
(require 'oauth2-autoloads) ;; ELPA | |||
;; Setup google-contact | |||
(require 'google-contacts) ;; AUR: emacs-google-contacts | |||
(require 'google-contacts-gnus) ;; AUR: emacs-google-contacts | |||
;; setup html renderer w3m and external browser conkeror | |||
(require 'w3m-load) ;; AUR: emacs-w3m-cvs | |||
(setq browse-url-browser-function 'w3m-browse-url | |||
browse-url-generic-program "conkeror" | |||
w3m-use-cookies t) | |||
(autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t) | |||
;; setup magit for git *DISABLED* | |||
;; setup magit for git (being used though elpa [auto-loaded]) | |||
;;(autoload 'magit-status magit nil t) | |||
;;(require 'magit) | |||
;;(require 'magit) ;; ELPA | |||
(global-set-key "\C-xS" 'magit-status) | |||
;; Setup PKGBUILD mode | |||
(autoload 'pkgbuild-mode "pkgbuild-mode.el" "PKGBUILD mode." t) | |||
(setq auto-mode-alist (append '(("/PKGBUILD$" . pkgbuild-mode)) auto-mode-alist)) | |||
;; setup php-mode | |||
(autoload 'php-mode "php-mode.el" "Php mode." t) | |||
(autoload 'php-mode "php-mode.el" "Php mode." t) ;; ELPA | |||
(setq auto-mode-alist (append '(("/*.\.php[345]?$" . php-mode)) auto-mode-alist)) | |||
;; Set default lisp program | |||
@@ -188,7 +253,7 @@ | |||
(defun run-kawa () | |||
"Run Kawa Scheme in an Emacs buffer." | |||
(interactive) | |||
(require 'cmuscheme) | |||
(require 'cmuscheme) ;; Built-in | |||
(let ((scheme-program-name "/usr/bin/kawa")) | |||
(run-scheme scheme-program-name))) | |||
@@ -200,29 +265,27 @@ | |||
;; Function to start and/or connect to slime | |||
(defun start-slime () | |||
(interactive) | |||
(unless (slime-connected-p) | |||
(save-excursion (slime)))) | |||
;; Setup slime mode | |||
;; Setup slime mode *TODO* drop in slime from ELPA | |||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/slime/") | |||
(require 'slime) | |||
(require 'slime) ;; AUR: emacs-slime-cvs | |||
(slime-setup '(slime-fancy)) | |||
;; Setup clojure mode | |||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/clojure-mode") | |||
(require 'clojure-mode) | |||
;; Setup swank-clojure-mode | |||
;; Setup swank-clojure-mode *TODO* drop in version from ELPA | |||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/swank-clojure") | |||
(require 'swank-clojure) | |||
(require 'swank-clojure) ;; AUR: swank-clojure-git | |||
(add-hook 'clojure-mode-hook | |||
'(lambda () | |||
(define-key clojure-mode-map "\C-c\C-e" 'lisp-eval-last-sexp) | |||
(define-key clojure-mode-map "\C-x\C-e" 'lisp-eval-last-sexp))) | |||
(eval-after-load "slime" | |||
`(progn | |||
(require 'assoc) | |||
(require 'assoc) ;; Built-in | |||
(setq swank-clojure-classpath | |||
(list "/usr/share/clojure/clojure.jar" | |||
"/usr/share/clojure/clojure-contrib.jar" | |||
@@ -233,11 +296,13 @@ | |||
;; Setup emacs-org-mode | |||
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode)) | |||
(add-hook 'org-mode-hook 'turn-on-font-lock) ; not needed when global-font-lock-mode is on | |||
(setq org-return-follows-link t) | |||
(setq org-log-done 'time) | |||
(global-set-key "\C-cl" 'org-store-link) | |||
(global-set-key "\C-ca" 'org-agenda) | |||
(global-set-key "\C-cb" 'org-iswitchb) | |||
;; Setup emacs-haskell-mode | |||
;; Setup emacs-haskell-mode *TODO* drop in ELPA version | |||
(load "/usr/share/emacs/site-lisp/haskell-mode/haskell-site-file") | |||
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) | |||
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) | |||
@@ -248,33 +313,38 @@ | |||
(setq haskell-program-name "/usr/bin/ghci") | |||
;; Setup emacs-python-mode | |||
(autoload 'python-mode "/usr/share/emacs/site-lisp/python-mode.el" "Python mode." t) | |||
(autoload 'python-mode "python-mode.el" "Python mode." t) ;; ELPA | |||
(setq auto-mode-alist (append '(("/*.\.py$" . python-mode)) auto-mode-alist)) | |||
;; Setup emacs-lua-mode | |||
(setq auto-mode-alist (cons '("\.lua$" . lua-mode) auto-mode-alist)) | |||
(setq auto-mode-alist (cons '("\.lua$" . lua-mode) auto-mode-alist)) ;; ELPA | |||
(autoload 'lua-mode "lua-mode" "Lua editing mode." t) | |||
;; Setup emacs-erlang-mode | |||
;; Setup emacs-erlang-mode (ELPA) | |||
(setq erlang-root-dir "/usr/lib/erlang") | |||
(setq exec-path (cons "/usr/lib/erlang/bin" exec-path)) | |||
(require 'erlang-start) | |||
(setq auto-mode-alist (append '(("\.erl$" . erlang-mode)) auto-mode-alist)) | |||
;; Setup enhanced scheme/racket mode consisting of geiser, quack and paredit | |||
(require 'geiser-install) | |||
;; Setup geiser | |||
(require 'geiser-install) ;; AUR: geiser-git | |||
;; Setup quack *DISABLED* | |||
;(require 'quack) | |||
(require 'paredit) | |||
(defvar paredit-hooks '(lisp-mode-hook lisp-interaction-mode-hook emacs-lisp-mode scheme-mode-hook c-mode-hook c++-mode-hook python-mode-hook)) | |||
;; Paredit binds to C-j globally and thus disables the binding to | |||
;; eval-print-last-sexp in *scratch*; this is more of a temporary | |||
;; fix because it creates a global binding and thus can be run in | |||
;; not only any emacs-lisp-mode buffer but any buffer | |||
(global-set-key "\C-xj" 'eval-print-last-sexp) | |||
;; Setup paredit | |||
(require 'paredit) ;; ELPA | |||
(defvar paredit-hooks '(lisp-mode-hook lisp-interaction-mode-hook emacs-lisp-mode-hook scheme-mode-hook c-mode-hook c++-mode-hook python-mode-hook)) | |||
;; Apply paredit-mode to modes listed in paredit-hooks | |||
(activate-mode-with-hooks (lambda () (paredit-mode 1)) paredit-hooks) | |||
;; Paredit binds to C-j globally and thus disables the binding to | |||
;; eval-print-last-sexp in emacs-lisp-mode (e.g *scratch*, etc..) | |||
(add-hook 'emacs-lisp-mode-hook | |||
'(lambda () | |||
(define-key emacs-lisp-mode-map "\C-xj" 'eval-print-last-sexp))) | |||
;; Highlight paren's in given modes [to apply globally do (show-paren-mode 1)] | |||
(activate-mode-with-hooks (lambda () (show-paren-mode 1)) paredit-hooks) | |||
@@ -291,10 +361,13 @@ | |||
(setq geiser-active-implementations '(racket)) | |||
;; setup pastebin.el for use with pastebin.com | |||
(require 'pastebin) | |||
(require 'pastebin) ;; ELPA | |||
;; yasnippet, auto-complete-mode and flyspell do not play nicely with one another due to | |||
;; a conflict with the context of their tab binding *OLD* | |||
;; hs-org/minor-mode, yasnippet, auto-complete-mode and flyspell do not play | |||
;; nicely with one another due to a conflict with the context of their tab binding *TODO* | |||
;; hideshow-org being depreciated in my config due to conflicting key bindings with yasnippet | |||
;; and flyspell *TODO* | |||
;; Make hs-minor-mode act like org-mode for code folding | |||
;;(add-to-list 'load-path "/usr/share/emacs/site-lisp/hideshow-org") | |||
@@ -311,16 +384,14 @@ | |||
;; (add-hook 'scheme-mode-hook 'hs-org/minor-mode) | |||
;; Setup fancy auto-complete | |||
(add-to-list 'load-path "/usr/share/emacs/site-lisp/auto-complete") | |||
(require 'auto-complete-config) | |||
(add-to-list 'ac-dictionary-directories "/usr/share/emacs/site-lisp/auto-complete/ac-dict") | |||
(require 'auto-complete-config) ;; ELPA | |||
;;(add-to-list 'ac-dictionary-directories "/usr/share/emacs/site-lisp/auto-complete/ac-dict") | |||
(ac-config-default) | |||
;; Setup yasnippet-mode *TODO* - in conflict (see comment where hs-org/minor-mode is required) | |||
;; (add-to-list 'load-path "/usr/share/emacs/site-lisp/yas") | |||
;; (require 'yasnippet) ;; not yasnippet-bundle | |||
;; (yas/initialize) | |||
;; (yas/load-directory "/usr/share/emacs/site-lisp/yas/snippets") | |||
;; Setup yasnippet-mode (not yasnippet-bundle) | |||
(require 'yasnippet) ;; ELPA | |||
(yas/initialize) | |||
(yas/load-directory "~/.emacs.d/elpa/yasnippet-0.6.1/snippets") | |||
;; Enable flyspell-mode | |||
(ac-flyspell-workaround) | |||
@@ -328,7 +399,7 @@ | |||
;;(flyspell-mode) | |||
;; Enable autoinsert feature to automagically insert | |||
(require 'autoinsert) | |||
(require 'autoinsert) ;; Built-in | |||
(auto-insert-mode) ;;; Adds hook to find-files-hook | |||
(setq auto-insert-directory "~/.emacs.d/templates/") ;;; Or use custom, *NOTE* Trailing slash important | |||
(setq auto-insert-query nil) ;;; If you don't want to be prompted before insertion | |||
@@ -339,6 +410,9 @@ | |||
(setq auto-insert-alist | |||
'(("\\.c$" . ["c-template.c" auto-update-generic-template]) | |||
("\\.\(cc\|cpp\)$" . ["cpp-template.c" auto-update-generic-template]) | |||
("\\.php$" . ["php-template.php" auto-update-generic-template]) | |||
("\\.lua$" . ["lua-template.lua" auto-update-generic-template]) | |||
("\\.erl$" . ["erlang-template.erl" auto-update-generic-template]) | |||
("\\.sh$" . ["shell-template.sh" auto-update-generic-template]) | |||
("\\.rkt$" . ["racket-template.rkt" auto-update-generic-template]) | |||
("\\.scm$" . ["scheme-template.scm" auto-update-generic-template]) | |||
@@ -346,6 +420,7 @@ | |||
("\\.lisp$" . ["lisp-template.lisp" auto-update-generic-template]) | |||
("\\.el$" . ["emacs-lisp-template.el" auto-update-generic-template]) | |||
("\\.hs$" . ["haskell-template.hs" auto-update-generic-template]) | |||
("\\.ml$" . ["ocaml-template.ml" auto-update-generic-template]) | |||
("\\.py$" . ["python-template.py" auto-update-generic-template]))) | |||
(setq auto-insert 'other) | |||
@@ -463,7 +538,7 @@ | |||
(let ((inhibit-read-only t)) | |||
(erase-buffer))) | |||
(add-to-list 'load-path "~/.emacs.d/el-get/el-get") | |||
;; (add-to-list 'load-path "~/.emacs.d/el-get/el-get") | |||
;; *BROKEN*..can't connect to dbus for some reason? | |||
;; ;; Setup el-get | |||
@@ -487,15 +562,20 @@ | |||
;; If you edit it by hand, you could mess it up, so be careful. | |||
;; Your init file should contain only one such instance. | |||
;; If there is more than one, they won't work right. | |||
'(org-agenda-files nil) | |||
'(highlight-current-line-globally t nil (highlight-current-line)) | |||
'(highlight-current-line-ignore-regexp "Faces\\|Colors\\| \\*Mini\\|\\**\\*") | |||
'(magit-commit-signoff t) | |||
'(org-agenda-files (quote ("~/.org/tech/notes.org" "~/.org/todo/rekahsoft-mini-todo.org" "~/.org/todo/rekahsoft-todo.org" "~/.org/todo/general.org" "~/.org/todo/work.org"))) | |||
'(quack-default-program "racket") | |||
'(quack-fontify-style (quote plt)) | |||
'(quack-programs (quote ("mzscheme" "bigloo" "csi" "csi -hygienic" "gosh" "gracket" "gsi" "gsi ~~/syntax-case.scm -" "guile" "kawa" "mit-scheme" "racket" "racket -il typed/racket" "rs" "scheme" "scheme48" "scsh" "sisc" "stklos" "sxi"))) | |||
'(scroll-bar-mode nil) | |||
'(show-paren-mode t)) | |||
'(show-paren-mode t) | |||
'(w3m-content-type-alist (quote (("text/plain" "\\.\\(?:txt\\|tex\\|el\\)\\'" nil nil) ("text/html" "\\.s?html?\\'" ("conkeror" file) nil) ("text/sgml" "\\.sgml?\\'" nil "text/plain") ("text/xml" "\\.xml\\'" nil "text/plain") ("image/jpeg" "\\.jpe?g\\'" ("/usr/bin/display" file) nil) ("image/png" "\\.png\\'" ("/usr/bin/display" file) nil) ("image/gif" "\\.gif\\'" ("/usr/bin/display" file) nil) ("image/tiff" "\\.tif?f\\'" ("/usr/bin/display" file) nil) ("image/x-xwd" "\\.xwd\\'" ("/usr/bin/display" file) nil) ("image/x-xbm" "\\.xbm\\'" ("/usr/bin/display" file) nil) ("image/x-xpm" "\\.xpm\\'" ("/usr/bin/display" file) nil) ("image/x-bmp" "\\.bmp\\'" ("/usr/bin/display" file) nil) ("video/mpeg" "\\.mpe?g\\'" nil nil) ("video/quicktime" "\\.mov\\'" nil nil) ("application/dvi" "\\.dvi\\'" ("xdvi" file) nil) ("application/postscript" "\\.e?ps\\'" ("gs" file) nil) ("application/pdf" "\\.pdf\\'" nil nil) ("application/x-pdf" "\\.pdf\\'" nil nil) ("application/xml" "\\.xml\\'" nil w3m-detect-xml-type) ("application/rdf+xml" "\\.rdf\\'" nil "text/plain") ("application/rss+xml" "\\.rss\\'" nil "text/plain") ("application/xhtml+xml" nil nil "text/html"))))) | |||
(custom-set-faces | |||
;; custom-set-faces was added by Custom. | |||
;; If you edit it by hand, you could mess it up, so be careful. | |||
;; Your init file should contain only one such instance. | |||
;; If there is more than one, they won't work right. | |||
) | |||
'(font-lock-function-name-face ((t (:foreground "mediumspringgreen" :weight bold :height 1.0)))) | |||
'(highlight-current-line-face ((t (:background "gray10"))))) |
@@ -0,0 +1,108 @@ | |||
Files { | |||
Keys = "~/.pekwm/keys" | |||
Mouse = "~/.pekwm/mouse" | |||
Menu = "~/.pekwm/menu" | |||
Start = "~/.pekwm/start" | |||
AutoProps = "~/.pekwm/autoproperties" | |||
Theme = "$_PEKWM_THEME_PATH/<THEME>" | |||
Icons = "~/.pekwm/icons/" | |||
} | |||
MoveResize { | |||
EdgeAttract = "10" | |||
EdgeResist = "10" | |||
WindowAttract = "5" | |||
WindowResist = "5" | |||
OpaqueMove = "True" | |||
OpaqueResize = "False" | |||
} | |||
Screen { | |||
Workspaces = "9" | |||
WorkspacesPerRow = "3" | |||
WorkspaceNames = "Main;Web;E-mail;Music;Work 05;Work 06;Work 07;Work 08;Work 09" | |||
ShowFrameList = "True" | |||
ShowStatusWindow = "True" | |||
ShowStatusWindowCenteredOnRoot = "False" | |||
ShowClientID = "False" | |||
ShowWorkspaceIndicator = "500" | |||
PlaceNew = "True" | |||
FocusNew = "True" | |||
ReportAllClients = "False" | |||
TrimTitle = "..." | |||
FullscreenAbove = "True" | |||
FullscreenDetect = "True" | |||
HonourRandr = "True" | |||
HonourAspectRatio = "True" | |||
EdgeSize = "1 1 1 1" | |||
EdgeIndent = "False" | |||
PixmapCacheSize = "20" | |||
DoubleClickTime = "250" | |||
Placement { | |||
Model = "CenteredOnParent Smart MouseNotUnder" | |||
Smart { | |||
Row = "True" | |||
TopToBottom = "True" | |||
LeftToRight = "True" | |||
OffsetX = "0" | |||
OffsetY = "0" | |||
} | |||
} | |||
UniqueNames { | |||
SetUnique = "False" | |||
Pre = " #" | |||
Post = "" | |||
} | |||
} | |||
Menu { | |||
DisplayIcons = "True" | |||
Icons = "DEFAULT" { | |||
Minimum = "16x16" | |||
Maximum = "16x16" | |||
} | |||
# To enable make separate window have other icon size restrictions, | |||
# for example wallpaper menu found in pekwm_menu_tools, set the following | |||
# for each menu you want to "free". | |||
# Icons = "Wallpaper" { | |||
# Minimum = "64x64" | |||
# Maximum = "64x64" | |||
# } | |||
# Defines how menus act on mouse input. | |||
# Possible values are: "ButtonPress ButtonRelease DoubleClick Motion" | |||
# To make submenus open on mouse over, comment the default Enter, | |||
# uncomment the alternative, and reload pekwm. | |||
Select = "Motion MotionPressed" | |||
Enter = "MotionPressed ButtonPress" | |||
# Enter = "Motion" | |||
Exec = "ButtonRelease" | |||
} | |||
CmdDialog { | |||
HistoryUnique = "True" | |||
HistorySize = "1024" | |||
HistoryFile = "~/.pekwm/history" | |||
HistorySaveInterval = "16" | |||
} | |||
Harbour { | |||
OnTop = "True" | |||
MaximizeOver = "False" | |||
Placement = "Right" | |||
Orientation = "TopToBottom" | |||
Head = "0" | |||
DockApp { | |||
SideMin = "64" | |||
SideMax = "0" | |||
} | |||
} |
@@ -0,0 +1,315 @@ | |||
INCLUDE = "vars" | |||
Global { | |||
# - - ----------------------------------------------- - - | |||
# Simple bindings to most frequently used actions. | |||
# | |||
# Adding your own frequently used actions is easy - | |||
# just copy it over from CHAINS and edit the keypress! | |||
# Moving in frames | |||
KeyPress = "Mod1 Tab" { Actions = "NextFrame EndRaise" } | |||
KeyPress = "Mod1 Shift Tab" { Actions = "PrevFrame EndRaise" } | |||
KeyPress = "Mod1 Ctrl Tab" { Actions = "NextFrameMRU EndRaise" } | |||
KeyPress = "Mod1 Ctrl Shift Tab" { Actions = "PrevFrameMRU EndRaise" } | |||
KeyPress = "Mod4 Tab" { Actions = "ActivateClientRel 1" } | |||
KeyPress = "Mod4 Shift Tab" { Actions = "ActivateClientRel -1" } | |||
KeyPress = "Mod4 Ctrl Right" { Actions = "MoveClientRel 1" } | |||
KeyPress = "Mod4 Ctrl Left" { Actions = "MoveClientRel -1" } | |||
KeyPress = "Mod4 Left" { Actions = "FocusDirectional Left" } | |||
KeyPress = "Mod4 Right" { Actions = "FocusDirectional Right" } | |||
KeyPress = "Mod4 Up" { Actions = "FocusDirectional Up" } | |||
KeyPress = "Mod4 Down" { Actions = "FocusDirectional Down" } | |||
# Moving in workspaces | |||
KeyPress = "Ctrl Mod1 Left" { Actions = "GotoWorkspace Left" } | |||
KeyPress = "Ctrl Mod1 Right" { Actions = "GotoWorkspace Right" } | |||
KeyPress = "Ctrl Mod1 Up" { Actions = "GotoWorkspace Up" } | |||
KeyPress = "Ctrl Mod1 Down" { Actions = "GotoWorkspace Down" } | |||
KeyPress = "Mod4 1" { Actions = "GotoWorkspace 1" } | |||
KeyPress = "Mod4 2" { Actions = "GotoWorkspace 2" } | |||
KeyPress = "Mod4 3" { Actions = "GotoWorkspace 3" } | |||
KeyPress = "Mod4 4" { Actions = "GotoWorkspace 4" } | |||
KeyPress = "Mod4 5" { Actions = "GotoWorkspace 5" } | |||
KeyPress = "Mod4 6" { Actions = "GotoWorkspace 6" } | |||
KeyPress = "Mod4 7" { Actions = "GotoWorkspace 7" } | |||
KeyPress = "Mod4 8" { Actions = "GotoWorkspace 8" } | |||
KeyPress = "Mod4 9" { Actions = "GotoWorkspace 9" } | |||
KeyPress = "Ctrl Mod1 Shift Left" { Actions = "SendToWorkspace Next; GoToWorkspace Next" } | |||
KeyPress = "Ctrl Mod1 Shift Right" { Actions = "SendToWorkspace Prev; GoToWorkspace Prev" } | |||
KeyPress = "Ctrl Mod1 Shift Up" { Actions = "SendToWorkspace NextV; GoToWorkspace NextV" } | |||
KeyPress = "Ctrl Mod1 Shift Down" { Actions = "SendToWorkspace PrevV; GoToWorkspace PrevV" } | |||
KeyPress = "Mod4 F1" { Actions = "SendToWorkspace 1" } | |||
KeyPress = "Mod4 F2" { Actions = "SendToWorkspace 2" } | |||
KeyPress = "Mod4 F3" { Actions = "SendToWorkspace 3" } | |||
KeyPress = "Mod4 F4" { Actions = "SendToWorkspace 4" } | |||
KeyPress = "Mod4 F5" { Actions = "SendToWorkspace 5" } | |||
KeyPress = "Mod4 F6" { Actions = "SendToWorkspace 6" } | |||
KeyPress = "Mod4 F7" { Actions = "SendToWorkspace 7" } | |||
KeyPress = "Mod4 F8" { Actions = "SendToWorkspace 8" } | |||
KeyPress = "Mod4 F9" { Actions = "SendToWorkspace 9" } | |||
# Simple window management | |||
KeyPress = "Mod4 M" { Actions = "Toggle Maximized True True" } | |||
KeyPress = "Mod4 G" { Actions = "Maxfill True True" } | |||
KeyPress = "Mod4 F" { Actions = "Toggle FullScreen" } | |||
KeyPress = "Mod4 Return" { Actions = "MoveResize" } | |||
KeyPress = "Mod4 Q" { Actions = "Close" } | |||
KeyPress = "Mod4 S" { Actions = "Toggle Shaded" } | |||
KeyPress = "Mod4 I" { Actions = "Toggle Iconified" } | |||
# Marking | |||
KeyPress = "Mod4 Z" { Actions = "Toggle Marked" } | |||
KeyPress = "Mod4 A" { Actions = "AttachMarked" } | |||
# Tagging | |||
KeyPress = "Mod4 T" { Actions = "Toggle Tagged False" } | |||
# Menus | |||
KeyPress = "Mod4 R" { Actions = "ShowMenu Root" } | |||
KeyPress = "Mod4 W" { Actions = "ShowMenu Window" } | |||
KeyPress = "Mod4 L" { Actions = "ShowMenu Goto" } | |||
KeyPress = "Mod4 C" { Actions = "ShowMenu GotoClient" } | |||
KeyPress = "Mod4 Shift I" { Actions = "ShowMenu Icon" } | |||
KeyPress = "Mod4 X" { Actions = "HideAllMenus" } | |||
# External Commands | |||
KeyPress = "Mod4 E" { Actions = "Exec $TERM" } | |||
# Pekwm control | |||
KeyPress = "Ctrl Mod1 Delete" { Actions = "Reload" } | |||
KeyPress = "Mod4 D" { Actions = "ShowCmdDialog" } | |||
KeyPress = "Mod4 V" { Actions = "ShowSearchDialog" } | |||
KeyPress = "Mod4 H" { Actions = "Toggle HarbourHidden" } | |||
# - - ----------------------------------------------- - - | |||
# CHAINS. These give you access to just about everything. | |||
# Move to Corner | |||
Chain = "Ctrl Mod1 C" { | |||
KeyPress = "Q" { Actions = "MoveToEdge TopLeft" } | |||
KeyPress = "Y" { Actions = "MoveToEdge TopCenterEdge" } | |||
KeyPress = "W" { Actions = "MoveToEdge TopCenterEdge" } | |||
KeyPress = "Shift Y" { Actions = "MoveToEdge TopEdge" } | |||
KeyPress = "Shift W" { Actions = "MoveToEdge TopEdge" } | |||
KeyPress = "P" { Actions = "MoveToEdge TopRight" } | |||
KeyPress = "E" { Actions = "MoveToEdge TopRight" } | |||
KeyPress = "A" { Actions = "MoveToEdge LeftCenterEdge" } | |||
KeyPress = "Shift A" { Actions = "MoveToEdge LeftEdge" } | |||
KeyPress = "L" { Actions = "MoveToEdge RightCenterEdge" } | |||
KeyPress = "D" { Actions = "MoveToEdge RightCenterEdge" } | |||
KeyPress = "Shift L" { Actions = "MoveToEdge RightEdge" } | |||
KeyPress = "Shift D" { Actions = "MoveToEdge RightEdge" } | |||
KeyPress = "Z" { Actions = "MoveToEdge BottomLeft" } | |||
KeyPress = "B" { Actions = "MoveToEdge BottomCenterEdge" } | |||
KeyPress = "X" { Actions = "MoveToEdge BottomCenterEdge" } | |||
KeyPress = "Shift B" { Actions = "MoveToEdge BottomEdge" } | |||
KeyPress = "Shift X" { Actions = "MoveToEdge BottomEdge" } | |||
KeyPress = "M" { Actions = "MoveToEdge BottomRight" } | |||
KeyPress = "C" { Actions = "MoveToEdge BottomRight" } | |||
KeyPress = "H" { Actions = "MoveToEdge Center" } | |||
KeyPress = "S" { Actions = "MoveToEdge Center" } | |||
} | |||
# Menus | |||
Chain = "Ctrl Mod1 M" { | |||
KeyPress = "R" { Actions = "ShowMenu Root" } | |||
KeyPress = "W" { Actions = "ShowMenu Window" } | |||
KeyPress = "I" { Actions = "ShowMenu Icon" } | |||
KeyPress = "G" { Actions = "ShowMenu Goto" } | |||
KeyPress = "C" { Actions = "ShowMenu GotoClient" } | |||
KeyPress = "D" { Actions = "ShowMenu Decor" } | |||
KeyPress = "A" { Actions = "ShowMenu AttachClientInFrame" } | |||
KeyPress = "F" { Actions = "ShowMenu AttachFrameInFrame" } | |||
Keypress = "Shift A" { Actions = "ShowMenu AttachClient" } | |||
Keypress = "Shift F" { Actions = "ShowMenu AttachFrame" } | |||
KeyPress = "X" { Actions = "HideAllMenus" } | |||
} | |||
# Grouping | |||
Chain = "Ctrl Mod1 T" { | |||
KeyPress = "T" { Actions = "Toggle Tagged False" } | |||
KeyPress = "B" { Actions = "Toggle Tagged True" } | |||
KeyPress = "C" { Actions = "Unset Tagged" } | |||
KeyPress = "G" { Actions = "Toggle GlobalGrouping" } | |||
KeyPress = "M" { Actions = "Toggle Marked" } | |||
KeyPress = "A" { Actions = "AttachMarked" } | |||
KeyPress = "D" { Actions = "Detach" } | |||
Keypress = "P" { Actions = "AttachClientInNextFrame" } | |||
KeyPress = "O" { Actions = "AttachClientInPrevFrame" } | |||
Keypress = "I" { Actions = "AttachFrameInNextFrame" } | |||
KeyPress = "U" { Actions = "AttachFrameInPrevFrame" } | |||
} | |||
# Decor Toggles | |||
Chain = "Ctrl Mod1 D" { | |||
KeyPress = "B" { Actions = "Toggle DecorBorder" } | |||
KeyPress = "T" { Actions = "Toggle DecorTitlebar" } | |||
KeyPress = "D" { Actions = "Toggle DecorBorder; Toggle DecorTitlebar" } | |||
} | |||
# Window Actions | |||
Chain = "Ctrl Mod1 A" { | |||
Chain = "G" { | |||
KeyPress = "G" { Actions = "MaxFill True True" } | |||
KeyPress = "V" { Actions = "MaxFill False True" } | |||
KeyPress = "H" { Actions = "MaxFill True False" } | |||
} | |||
Chain = "M" { | |||
KeyPress = "M" { Actions = "Toggle Maximized True True" } | |||
KeyPress = "V" { Actions = "Toggle Maximized False True" } | |||
KeyPress = "H" { Actions = "Toggle Maximized True False" } | |||
} | |||
Chain = "Q" { | |||
KeyPress = "Q" { Actions = "Close" } | |||
KeyPress = "F" { Actions = "CloseFrame" } | |||
KeyPress = "K" { Actions = "Kill" } | |||
} | |||
KeyPress = "S" { Actions = "Toggle Shaded" } | |||
KeyPress = "A" { Actions = "Toggle Sticky" } | |||
KeyPress = "O" { Actions = "Toggle AlwaysOnTop" } | |||
KeyPress = "B" { Actions = "Toggle AlwaysBelow" } | |||
KeyPress = "I" { Actions = "Set Iconified" } | |||
KeyPress = "R" { Actions = "Raise" } | |||
KeyPress = "Shift R" { Actions = "Raise True" } | |||
KeyPress = "L" { Actions = "Lower" } | |||
KeyPress = "Shift L" { Actions = "Lower True" } | |||
KeyPress = "X" { Actions = "ActivateOrRaise" } | |||
KeyPress = "Return" { Actions = "MoveResize" } | |||
KeyPress = "F" { Actions = "Toggle Fullscreen" } | |||
KeyPress = "Left" { Actions = "GrowDirection Left" } | |||
KeyPress = "Right" { Actions = "GrowDirection Right" } | |||
KeyPress = "Up" { Actions = "GrowDirection Up" } | |||
KeyPress = "Down" { Actions = "GrowDirection Down" } | |||
} | |||
# Moving in Frames | |||
Chain = "Ctrl Mod1 F" { | |||
KeyPress = "P" { Actions = "NextFrame AlwaysRaise" } | |||
KeyPress = "O" { Actions = "PrevFrame AlwaysRaise" } | |||
KeyPress = "Shift P" { Actions = "NextFrameMRU EndRaise" } | |||
KeyPress = "Shift O" { Actions = "PrevFrameMRU EndRaise" } | |||
KeyPress = "I" { Actions = "ActivateClientRel 1" } | |||
KeyPress = "U" { Actions = "ActivateClientRel -1" } | |||
KeyPress = "Shift I" { Actions = "MoveClientRel 1" } | |||
KeyPress = "Shift U" { Actions = "MoveClientRel -1" } | |||
KeyPress = "Up" { Actions = "FocusDirectional Up" } | |||
KeyPress = "Down" { Actions = "FocusDirectional Down" } | |||
KeyPress = "Left" { Actions = "FocusDirectional Left" } | |||
Keypress = "Right" { Actions = "FocusDirectional Right" } | |||
KeyPress = "1" { Actions = "ActivateClientNum 1" } | |||
KeyPress = "2" { Actions = "ActivateClientNum 2" } | |||
KeyPress = "3" { Actions = "ActivateClientNum 3" } | |||
KeyPress = "4" { Actions = "ActivateClientNum 4" } | |||
KeyPress = "5" { Actions = "ActivateClientNum 5" } | |||
KeyPress = "6" { Actions = "ActivateClientNum 6" } | |||
KeyPress = "7" { Actions = "ActivateClientNum 7" } | |||
KeyPress = "8" { Actions = "ActivateClientNum 8" } | |||
KeyPress = "9" { Actions = "ActivateClientNum 9" } | |||
KeyPress = "0" { Actions = "ActivateClientNum 10" } | |||
KeyPress = "C" { Actions = "ShowCmdDialog GotoClientID " } | |||
} | |||
# Workspaces | |||
Chain = "Ctrl Mod1 W" { | |||
KeyPress = "Right" { Actions = "GoToWorkspace Right" } | |||
KeyPress = "Left" { Actions = "GoToWorkspace Left" } | |||
KeyPress = "N" { Actions = "GoToWorkspace Next" } | |||
KeyPress = "P" { Actions = "GoToWorkspace Prev" } | |||
KeyPress = "1" { Actions = "GoToWorkspace 1" } | |||
KeyPress = "2" { Actions = "GoToWorkspace 2" } | |||
KeyPress = "3" { Actions = "GoToWorkspace 3" } | |||
KeyPress = "4" { Actions = "GoToWorkspace 4" } | |||
KeyPress = "5" { Actions = "GoToWorkspace 5" } | |||
KeyPress = "6" { Actions = "GoToWorkspace 6" } | |||
KeyPress = "7" { Actions = "GoToWorkspace 7" } | |||
KeyPress = "8" { Actions = "GoToWorkspace 8" } | |||
KeyPress = "9" { Actions = "GoToWorkspace 9" } | |||
KeyPress = "Up" { Actions = "SendToWorkspace Next; GoToWorkspace Next" } | |||
KeyPress = "Down" { Actions = "SendToWorkspace Prev; GoToWorkspace Prev" } | |||
KeyPress = "F1" { Actions = "SendToWorkspace 1" } | |||
KeyPress = "F2" { Actions = "SendToWorkspace 2" } | |||
KeyPress = "F3" { Actions = "SendToWorkspace 3" } | |||
KeyPress = "F4" { Actions = "SendToWorkspace 4" } | |||
KeyPress = "F5" { Actions = "SendToWorkspace 5" } | |||
KeyPress = "F6" { Actions = "SendToWorkspace 6" } | |||
KeyPress = "F7" { Actions = "SendToWorkspace 7" } | |||
KeyPress = "F8" { Actions = "SendToWorkspace 8" } | |||
KeyPress = "F9" { Actions = "SendToWorkspace 9" } | |||
} | |||
# External commands | |||
Chain = "Ctrl Mod1 E" { | |||
KeyPress = "E" { Actions = "Exec $TERM" } | |||
KeyPress = "L" { Actions = "Exec xlock -mode blank &" } | |||
KeyPress = "S" { Actions = "Exec scrot &" } | |||
KeyPress = "C" { Actions = "ShowCmdDialog" } | |||
} | |||
# Wm actions | |||
Chain = "Ctrl Mod1 P" { | |||
KeyPress = "Delete" { Actions = "Reload" } | |||
KeyPress = "Next" { Actions = "Restart" } | |||
KeyPress = "End" { Actions = "Exit" } | |||
KeyPress = "Prior" { Actions = "RestartOther twm" } | |||
KeyPress = "D" { Actions = "ShowCmdDialog" } | |||
KeyPress = "H" { Actions = "Toggle HarbourHidden" } | |||
} | |||
# Skipping | |||
Chain = "Ctrl Mod1 S" { | |||
Keypress = "M" { Actions = "Toggle Skip Menus" } | |||
Keypress = "F" { Actions = "Toggle Skip FocusToggle" } | |||
Keypress = "S" { Actions = "Toggle Skip Snap" } | |||
} | |||
} | |||
# Keys when MoveResize is active | |||
MoveResize { | |||
KeyPress = "Left" { Actions = "MoveHorizontal -10" } | |||
KeyPress = "Right" { Actions = "MoveHorizontal 10" } | |||
KeyPress = "Up" { Actions = "MoveVertical -10" } | |||
KeyPress = "Down" { Actions = "MoveVertical 10" } | |||
Keypress = "Shift Left" { Actions = "MoveHorizontal -1" } | |||
Keypress = "Shift Right" { Actions = "MoveHorizontal 1" } | |||
Keypress = "Shift Up" { Actions = "MoveVertical -1" } | |||
Keypress = "Shift Down" { Actions = "MoveVertical 1" } | |||
Keypress = "Mod4 Left" { Actions = "ResizeHorizontal -10" } | |||
Keypress = "Mod4 Right" { Actions = "ResizeHorizontal 10" } | |||
Keypress = "Mod4 Up" { Actions = "ResizeVertical -10" } | |||
Keypress = "Mod4 Down" { Actions = "ResizeVertical 10" } | |||
Keypress = "Mod1 Left" { Actions = "ResizeHorizontal -10" } | |||
Keypress = "Mod1 Right" { Actions = "ResizeHorizontal 10" } | |||
Keypress = "Mod1 Up" { Actions = "ResizeVertical -10" } | |||
Keypress = "Mod1 Down" { Actions = "ResizeVertical 10" } | |||
Keypress = "Shift Mod4 Left" { Actions = "ResizeHorizontal -1" } | |||
Keypress = "Shift Mod4 Right" { Actions = "ResizeHorizontal 1" } | |||
Keypress = "Shift Mod4 Up" { Actions = "ResizeVertical -1" } | |||
Keypress = "Shift Mod4 Down" { Actions = "ResizeVertical 1" } | |||
Keypress = "Shift Mod1 Left" { Actions = "ResizeHorizontal -1" } | |||
Keypress = "Shift Mod1 Right" { Actions = "ResizeHorizontal 1" } | |||
Keypress = "Shift Mod1 Up" { Actions = "ResizeVertical -1" } | |||
Keypress = "Shift Mod1 Down" { Actions = "ResizeVertical 1" } | |||
Keypress = "s" { Actions = "MoveSnap" } | |||
Keypress = "Escape" { Actions = "Cancel" } | |||
Keypress = "q" { Actions = "Cancel" } | |||
Keypress = "Return" { Actions = "End" } | |||
} | |||