diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua new file mode 100644 index 0000000..c8f0a92 --- /dev/null +++ b/.config/awesome/rc.lua @@ -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) +-- }}} diff --git a/.config/obmenugen/exclusions b/.config/obmenugen/exclusions new file mode 100644 index 0000000..e0530a8 --- /dev/null +++ b/.config/obmenugen/exclusions @@ -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'. + diff --git a/.config/obmenugen/obmenugen.cfg b/.config/obmenugen/obmenugen.cfg new file mode 100644 index 0000000..699163c --- /dev/null +++ b/.config/obmenugen/obmenugen.cfg @@ -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 + diff --git a/.config/obmenugen/obmenugen.schema b/.config/obmenugen/obmenugen.schema new file mode 100644 index 0000000..93f1bdc --- /dev/null +++ b/.config/obmenugen/obmenugen.schema @@ -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:lbreakout2 +# 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 + diff --git a/.config/openbox/autostart.sh b/.config/openbox/autostart.sh new file mode 100755 index 0000000..a9bf588 --- /dev/null +++ b/.config/openbox/autostart.sh @@ -0,0 +1 @@ +#!/bin/bash diff --git a/.config/openbox/menu.xml b/.config/openbox/menu.xml new file mode 100644 index 0000000..286b0af --- /dev/null +++ b/.config/openbox/menu.xml @@ -0,0 +1,91 @@ + + + + urxvt + urxvt -e mc + firefox + emacs + gmrun + + + + + pcmanfm + graveman + parcellite + speedcrunch + + + gimp-2.6 + gpicview + + + easytag + smplayer -add-to-playlist + mplayer -really-quiet + smplayer + vlc + + + htmldoc + openoffice -base + openoffice -calc + openoffice -draw + openoffice -impress + openoffice -math + openoffice-printeradmin + openoffice -writer + openoffice + zathura + + + /usr/bin/doom3 + + + /usr/bin/bssh + /usr/bin/bvnc + deluge-gtk + firefox -safe-mode + firefox-beta-bin -safe-mode + firefox-beta-bin + firefox + /usr/share/zenmap/su-to-zenmap.sh + zenmap + unison-x11 + + + cmake-gui + drracket + emacs + /usr/bin/assistant + /usr/bin/designer + /usr/bin/linguist + + + /usr/bin/nvidia-settings + libfm-pref-apps + /usr/bin/qtconfig + xscreensaver-demo + + + /usr/bin/avahi-discover + urxvt -e htop + ophcrack + VirtualBox + urxvt + + + + + emacs /home/collin/.config/openbox/autostart.sh + emacs /home/collin/.config/openbox/rc.xml + + emacs /home/collin/.config/obmenugen/obmenugen.cfg + emacs /home/collin/.config/obmenugen/exclusions + emacs /home/collin/.config/obmenugen/obmenugen.schema + + + xscreensaver-command -lock + + + diff --git a/.config/openbox/rc.xml b/.config/openbox/rc.xml new file mode 100644 index 0000000..55690dd --- /dev/null +++ b/.config/openbox/rc.xml @@ -0,0 +1,732 @@ + + + + + + + + 10 + 20 + + + + yes + + no + + yes + + no + + 200 + + no + + + + + Smart + +
yes
+ + Active + + 1 + +
+ + + Clearlooks + NLIMC + + yes + yes + + sans + 8 + + bold + + normal + + + + sans + 8 + + bold + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + normal + + normal + + + + sans + 9 + + bold + + normal + + + + + + + 4 + 1 + + + + 875 + + + + + yes + Nonpixel + + Center + + + + + 10 + + 10 + + + + + + + 0 + 0 + 0 + 0 + + + + TopLeft + + 0 + 0 + no + Above + + Vertical + + no + 300 + + 300 + + Middle + + + + + C-g + + + + gmrun + + + + + nono + + + nono + + + nono + + + nono + + + nono + + + nono + + + nono + + + nono + + + 1 + + + 2 + + + 3 + + + 4 + + + + + + + + + + + + + + + + client-menu + + + + + + + + + + + + yesyes + + + + + + + + true + Konqueror + + kfmclient openProfile filemanagement + + + + + + 8 + + 200 + + 400 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + + + + + + + top + + + + + + + + + + left + + + + + + client-menu + + + + + + + + + + right + + + + + + client-menu + + + + + + + + + + bottom + + + + + + + + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + client-menu + + + + + client-menu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + client-list-combined-menu + + + root-menu + + + + + + + + + + + + + + + + + + + + + + + + menu.xml + 200 + + no + + 100 + + 400 + + if this is a negative value, then the delay is infinite and the + submenu will not be hidden until a different submenu is opened --> + yes + + yes + + + + + + + +
diff --git a/.emacs b/.emacs index 0e0ddb7..9436982 100644 --- a/.emacs +++ b/.emacs @@ -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) -;(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)) +;; Setup geiser +(require 'geiser-install) ;; AUR: geiser-git -;; 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 quack *DISABLED* +;(require 'quack) + +;; 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 -;; 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* +;; 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* + +;; 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"))))) diff --git a/.pekwm/config b/.pekwm/config new file mode 100644 index 0000000..5093160 --- /dev/null +++ b/.pekwm/config @@ -0,0 +1,108 @@ +Files { + Keys = "~/.pekwm/keys" + Mouse = "~/.pekwm/mouse" + Menu = "~/.pekwm/menu" + Start = "~/.pekwm/start" + AutoProps = "~/.pekwm/autoproperties" + Theme = "$_PEKWM_THEME_PATH/" + 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" + } +} diff --git a/.pekwm/keys b/.pekwm/keys new file mode 100644 index 0000000..6002088 --- /dev/null +++ b/.pekwm/keys @@ -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" } +} + +# Keys for CmdDialog editing +InputDialog { + KeyPress = "Left" { Actions = "CursPrev" } + KeyPress = "Right" { Actions = "CursNext" } + KeyPress = "Ctrl A" { Actions = "CursBegin" } + KeyPress = "Ctrl E" { Actions = "CursEnd" } + KeyPress = "BackSpace" { Actions = "Erase;CompleteAbort" } + KeyPress = "Ctrl K" { Actions = "ClearFromCursor" } + KeyPress = "Ctrl C" { Actions = "Clear" } + KeyPress = "Return" { Actions = "Exec" } + KeyPress = "Escape" { Actions = "Close" } + KeyPress = "Up" { Actions = "HistPrev" } + KeyPress = "Down" { Actions = "HistNext" } + KeyPress = "Ctrl P" { Actions = "HistPrev" } + KeyPress = "Ctrl N" { Actions = "HistNext" } + KeyPress = "Ctrl B" { Actions = "CursPrev" } + KeyPress = "Ctrl F" { Actions = "CursNext" } + KeyPress = "Tab" { Actions = "Complete" } + KeyPress = "Any Any" { Actions = "Insert" } +} + +# Keys working in menus +Menu { + KeyPress = "Down" { Actions = "NextItem" } + KeyPress = "Up" { Actions = "PrevItem" } + KeyPress = "Ctrl N" { Actions = "NextItem" } + KeyPress = "Ctrl P" { Actions = "PrevItem" } + KeyPress = "Left" { Actions = "LeaveSubmenu" } + KeyPress = "Right" { Actions = "EnterSubmenu" } + KeyPress = "Return" { Actions = "Select" } + KeyPress = "space" { Actions = "Select" } + KeyPress = "Escape" { Actions = "Close" } + KeyPress = "Q" { Actions = "Close" } +} + diff --git a/.pekwm/menu b/.pekwm/menu new file mode 100644 index 0000000..3e22e98 --- /dev/null +++ b/.pekwm/menu @@ -0,0 +1,147 @@ +# Menu config for pekwm + +# Variables +INCLUDE = "vars" + +RootMenu = "Pekwm" { + Entry = "Terminal" { Actions = "Exec $TERM &" } + Entry = "Run.." { Actions = "ShowCmdDialog" } + + Separator {} + + Submenu = "Editors" { + Entry = "vim" { Actions = "Exec $TERM -title vim -e vim &" } + Entry = "gvim" { Actions = "Exec gvim &" } + Entry = "Emacs" { Actions = "Exec emacs &" } + Entry = "Emacs Terminal" { Actions = "Exec $TERM -title emacs -e emacs -nw &" } + Entry = "Kate" { Actions = "Exec kate &" } + } + Submenu = "Graphics" { + Entry = "display" { Actions = "Exec display &" } + Entry = "Gimp" { Actions = "Exec gimp &" } + Entry = "Gv" { Actions = "Exec gv &" } + Entry = "Xpdf" { Actions = "Exec xpdf &" } + Entry = "gqview" { Actions = "Exec gqview &" } + } + Submenu = "Multimedia" { + Entry = "Amarok" { Actions = "Exec amarok &" } + Entry = "Quod Libet" { Actions = "Exec quodlibet &" } + Entry = "Xmms" { Actions = "Exec xmms &" } + Entry = "MPlayer" { Actions = "Exec gnome-mplayer &" } + Entry = "Xine" { Actions = "Exec xine &" } + Entry = "xawtv" { Actions = "Exec xawtv &" } + Entry = "Totem" { actions = "exec totem &" } + Entry = "alsamixer" { Actions = "Exec $TERM -title alsamixer -e alsamixer &" } + } + Submenu = "Utils" { + Entry = "Calculator" { Actions = "Exec gcalctool &" } + Entry = "Xpdf" { Actions = "Exec xpdf &" } + Entry = "Evince" { Actions = "Exec evince &" } + Entry = "gucharmap" { Actions = "Exec gucharmap &" } + Entry = "Gkrellm" { Actions = "Exec gkrellm &" } + } + Submenu = "WWW" { + Entry = "Dillo" { Actions = "Exec dillo &" } + Entry = "Konqueror" { Actions = "Exec konqueror &" } + Entry = "Firefox" { Actions = "Exec firefox &" } + } + Submenu = "FTP" { + Entry = "gftp" { Actions = "Exec gftp &" } + Entry = "lftp" { Actions = "Exec $TERM -title lftp -e lftp &" } + } + Submenu = "Communication" { + Entry = "Mutt" { Actions = "Exec $TERM -title mutt -e mutt &" } + Entry = "Alpine" { Actions = "Exec $TERM -title alpine -e alpine &" } + Entry = "Thunderbird" { Actions = "Exec thunderbird &" } + Entry = "Evolution" { Actions = "Exec evolution &" } + Entry = "KMail" { Actions = "Exec kmail &" } + Entry = "Pidgin" { Actions = "Exec pidgin &" } + Entry = "Irssi" { Actions = "Exec $TERM -title irssi -e irssi &" } + Entry = "Kopete" { Actions = "Exec kopete &" } + } + Submenu = "Office" { + Entry = "KOffice Workspace" { Actions = "Exec koshell &" } + Entry = "OpenOffice" { Actions = "Exec ooffice &" } + } + Submenu = "Development" { + Entry = "Anjuta" { Actions = "Exec anjuta &" } + Entry = "Eclipse" { Actions = "Exec eclipse &" } + Entry = "KDevelop" { Actions = "Exec kdevelop &" } + } + + Separator {} + + Submenu = "Go to" { + SubMenu = "Workspace" { + # Create goto menu once per pekwm config reload. The fast way that + # will work for most if not all users. + COMMAND = "$_PEKWM_SCRIPT_PATH/pekwm_ws_menu.sh goto" + # Create goto menu every time the menu is opened. The slow way. + # This is what you want if you are using external tools to make + # the amount of workspaces something else than what you define in + # ~/.pekwm/config. You will know if you want this. + # Entry = "" { Actions = "Dynamic $_PEKWM_SCRIPT_PATH/pekwm_ws_menu.sh goto dynamic" } + } + Entry = "Window.." { Actions = "ShowMenu GotoClient True" } + } + Submenu = "Pekwm" { + Submenu = "Themes" { + Entry { Actions = "Dynamic $_PEKWM_SCRIPT_PATH/pekwm_themeset.sh $_PEKWM_THEME_PATH" } + Entry { Actions = "Dynamic $_PEKWM_SCRIPT_PATH/pekwm_themeset.sh ~/.pekwm/themes" } + } + Entry = "Reload" { Actions = "Reload" } + Entry = "Restart" { Actions = "Restart" } + Entry = "Exit" { Actions = "Exit" } + Submenu = "Exit to" { + Entry = "Xterm" { Actions = "RestartOther xterm" } + Entry = "TWM" { Actions = "RestartOther twm" } + } + } +} + +WindowMenu = "Window Menu" { + Entry = "(Un)Stick" { Actions = "Toggle Sticky" } + Entry = "(Un)Shade" { Actions = "Toggle Shaded" } + Entry = "Iconify" { Actions = "Set Iconified" } + Entry = "Command.." { Actions = "ShowCmdDialog" } + + Submenu = "Maximize" { + Entry = "Toggle Full" { Actions = "Toggle Maximized True True" } + Entry = "Toggle Horizontal" { Actions = "Toggle Maximized True False" } + Entry = "Toggle Vertical" { Actions = "Toggle Maximized False True" } + } + Submenu = "Fill" { + Entry = "Full" { Actions = "MaxFill True True" } + Entry = "Horizontal" { Actions = "MaxFill True False" } + Entry = "Vertical" { Actions = "MaxFill False True" } + } + Submenu = "Stacking" { + Entry = "Raise" { Actions = "Raise" } + Entry = "Lower" { Actions = "Lower" } + Entry = "Toggle Always On Top" { Actions = "Toggle AlwaysOnTop" } + Entry = "Toggle Always Below" { Actions = "Toggle AlwaysBelow" } + } + Submenu = "Decorations" { + Entry = "Toggle Decorations" { Actions = "Toggle DecorBorder; Toggle DecorTitlebar" } + Entry = "Toggle Borders" { Actions = "Toggle DecorBorder" } + Entry = "Toggle Titlebar" { Actions = "Toggle DecorTitlebar" } + } + Submenu = "Skip" { + Entry = "Toggle showing this frame in menus" { Actions = "Toggle Skip Menus" } + Entry = "Toggle including this frame in focus toggle" { Actions = "Toggle Skip FocusToggle" } + Entry = "Toggle if this frame snaps to other windows" { Actions = "Toggle Skip Snap" } + } + SubMenu = "Send To" { + # Create sendto menu once per pekwm config reload. The fast way that + # will work for most if not all users. + COMMAND = "$_PEKWM_SCRIPT_PATH/pekwm_ws_menu.sh send" + # Create sendto menu every time the menu is opened. The slow way. + # This is what you want if you are using external tools to make + # the amount of workspaces something else than what you define in + # ~/.pekwm/config. You will know if you want this. + # Entry = "" { Actions = "Dynamic $_PEKWM_SCRIPT_PATH/pekwm_ws_menu.sh send dynamic" } + } + Separator {} + Entry = "Close" { Actions = "Close" } + Submenu = "Kill" { Entry = "Kill application" { Actions = "Kill" } } +} diff --git a/.pekwm/mouse b/.pekwm/mouse new file mode 100644 index 0000000..3aa9ae8 --- /dev/null +++ b/.pekwm/mouse @@ -0,0 +1,182 @@ +FrameTitle { + ButtonRelease = "1" { Actions = "Raise; Focus; ActivateClient" } + ButtonRelease = "Mod1 1" { Actions = "Focus; Raise" } + ButtonRelease = "Mod4 1" { Actions = "Focus; Raise" } + ButtonRelease = "2" { Actions = "ActivateClient" } + ButtonRelease = "Mod4 3" { Actions = "Close" } + ButtonRelease = "3" { Actions = "ShowMenu Window" } + ButtonRelease = "4" { Actions = "ActivateClientRel 1" } + ButtonRelease = "5" { Actions = "ActivateClientRel -1" } + ButtonRelease = "Mod1 4" { Actions = "SendToWorkspace Next; GotoWorkspace Next" } + ButtonRelease = "Mod1 5" { Actions = "SendToWorkspace Prev; GotoWorkspace Prev" } + ButtonRelease = "Mod1 Shift 4" { Actions = "SendToWorkspace PrevV; GotoWorkspace PrevV" } + ButtonRelease = "Mod1 Shift 5" { Actions = "SendToWorkspace NextV; GotoWorkspace NextV" } + ButtonRelease = "Ctrl 4" { Actions = "MoveClientRel 1" } + ButtonRelease = "Ctrl 5" { Actions = "MoveClientRel -1" } + ButtonRelease = "Ctrl Mod1 1" { Actions = "Focus; Raise True" } + DoubleClick = "2" { Actions = "Toggle Shaded" } + DoubleClick = "Mod1 2" { Actions = "Toggle Shaded" } + DoubleClick = "1" { Actions = "MaxFill True True" } + DoubleClick = "Mod1 1" { Actions = "Toggle Maximized True True" } + Motion = "1" { Threshold = "4"; Actions = "Raise; Move" } + Motion = "Mod1 1" { Threshold = "4"; Actions = "Raise; Move" } + Motion = "Mod4 1" { Threshold = "4"; Actions = "Raise; Move" } + Motion = "2" { Threshold = "4"; Actions = "GroupingDrag True" } + Motion = "Mod1 3" { Actions = "Resize" } + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } +} + +OtherTitle { + ButtonRelease = "1" { Actions = "Raise; Focus" } + ButtonRelease = "2" { Actions = "Focus" } + ButtonRelease = "3" { Actions = "Close" } + ButtonRelease = "Mod4 3" { Actions = "ShowMenu Window" } + ButtonRelease = "Mod1 4" { Actions = "SendToWorkspace Next; GotoWorkspace Next" } + ButtonRelease = "Mod1 5" { Actions = "SendToWorkspace Prev; GotoWorkspace Prev" } + ButtonRelease = "Mod1 Shift 4" { Actions = "SendToWorkspace PrevV; GotoWorkspace PrevV" } + ButtonRelease = "Mod1 Shift 5" { Actions = "SendToWorkspace NextV; GotoWorkspace NextV" } + Motion = "1" { Threshold = "4"; Actions = "Raise; Move" } + Motion = "Mod1 1" { Threshold = "4"; Actions = "Raise; Move" } + Motion = "Mod4 1" { Threshold = "4"; Actions = "Raise; Move" } + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } +} + +Border { + TopLeft { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize TopLeft" } } + Top { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize Top" } } + TopRight { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize TopRight" } } + Left { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize Left" } } + Right { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize Right" } } + BottomLeft { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize BottomLeft" } } + Bottom { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize Bottom" } } + BottomRight { + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } + ButtonPress = "1" { Actions = "Focus; Resize BottomRight" } } +} + +ScreenEdge { + Down { + Enter = "Mod1 Any" { Actions = "GoToWorkspace Down" } + ButtonRelease = "3" { Actions = "ShowMenu Root" } + ButtonRelease = "2" { Actions = "ShowMenu Goto" } + ButtonRelease = "1" { Actions = "GoToWorkspace Down" } + ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" } + ButtonRelease = "4" { Actions = "GoToWorkspace Up" } + ButtonRelease = "5" { Actions = "GoToWorkspace Down" } + ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace PrevV" } + ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace NextV" } + EnterMoving = "Any Any" { Actions = "WarpToWorkspace Down" } + } + Up { + Enter = "Mod1 Any" { Actions = "GoToWorkspace Up" } + ButtonRelease = "3" { Actions = "ShowMenu Root" } + ButtonRelease = "2" { Actions = "ShowMenu Goto" } + ButtonRelease = "1" { Actions = "GoToWorkspace Up" } + ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" } + ButtonRelease = "4" { Actions = "GoToWorkspace Up" } + ButtonRelease = "5" { Actions = "GoToWorkspace Down" } + ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace PrevV" } + ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace NextV" } + EnterMoving = "Any Any" { Actions = "WarpToWorkspace Up" } + } + Left { + Enter = "Mod1 Any" { Actions = "GoToWorkspace Left" } + ButtonRelease = "3" { Actions = "ShowMenu Root" } + ButtonRelease = "1" { Actions = "GoToWorkspace Left" } + DoubleClick = "1" { Actions = "GoToWorkspace Left" } + ButtonRelease = "2" { Actions = "ShowMenu Goto" } + ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" } + ButtonRelease = "4" { Actions = "GoToWorkspace Right" } + ButtonRelease = "5" { Actions = "GoToWorkspace Left" } + ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace Next" } + ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace Prev" } + EnterMoving = "Any Any" { Actions = "WarpToWorkspace Left" } + } + Right { + Enter = "Mod1 Any" { Actions = "GoToWorkspace Right" } + ButtonRelease = "3" { Actions = "ShowMenu Root" } + ButtonRelease = "1" { Actions = "GoToWorkspace Right" } + DoubleClick = "1" { Actions = "GoToWorkspace Right" } + ButtonRelease = "2" { Actions = "ShowMenu Goto" } + ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" } + ButtonRelease = "4" { Actions = "GoToWorkspace Right" } + ButtonRelease = "5" { Actions = "GoToWorkspace Left" } + ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace Next" } + ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace Prev" } + EnterMoving = "Any Any" { Actions = "WarpToWorkspace Right" } + } +} + +Client { + # Remove the following line and uncomment the alternative if windows should raise when clicked. + ButtonPress = "1" { Actions = "Focus" } + # Uncomment the following line if windows should raise when clicked. + # ButtonPress = "1" { Actions = "Focus; Raise" } + + ButtonRelease = "Mod1 1" { Actions = "Focus; Raise" } + ButtonRelease = "Mod4 1" { Actions = "Lower" } + ButtonRelease = "Mod1 4" { Actions = "SendToWorkspace Next; GotoWorkspace Next" } + ButtonRelease = "Mod1 5" { Actions = "SendToWorkspace Prev; GotoWorkspace Prev" } + ButtonRelease = "Mod1 Shift 4" { Actions = "SendToWorkspace PrevV; GotoWorkspace PrevV" } + ButtonRelease = "Mod1 Shift 5" { Actions = "SendToWorkspace NextV; GotoWorkspace NextV" } + ButtonRelease = "Ctrl Mod1 1" { Actions = "Focus; Raise True" } + Motion = "Mod1 1" { Threshold = "4"; Actions = "Focus; Raise; Move" } + Motion = "Mod4 1" { Threshold = "4"; Actions = "Focus; Raise; Move" } + Motion = "Mod1 2" { Threshold = "4"; Actions = "GroupingDrag True" } + Motion = "Mod1 3" { Actions = "Resize" } + # Remove the following line if you want to use click to focus. + Enter = "Any Any" { Actions = "Focus" } +} + +Root { + ButtonRelease = "3" { Actions = "ShowMenu Root" } + ButtonRelease = "2" { Actions = "ShowMenu Goto" } + ButtonRelease = "Mod4 2" { Actions = "ShowMenu GotoClient" } + # Horizontal movement + ButtonRelease = "4" { Actions = "GoToWorkspace Right" } + ButtonRelease = "5" { Actions = "GoToWorkspace Left" } + ButtonRelease = "Mod1 4" { Actions = "GoToWorkspace Next" } + ButtonRelease = "Mod1 5" { Actions = "GoToWorkspace Prev" } + # Vertical movement + ButtonRelease = "Shift 4" { Actions = "GoToWorkspace Up" } + ButtonRelease = "Shift 5" { Actions = "GoToWorkspace Down" } + ButtonRelease = "Mod1 Shift 4" { Actions = "GoToWorkspace NextV" } + ButtonRelease = "Mod1 Shift 5" { Actions = "GoToWorkspace PrevV" } + ButtonRelease = "1" { Actions = "HideAllMenus" } +} + +Menu { + Enter = "Any Any" { Actions = "Focus" } + Motion = "Mod1 1" { Threshold = "4"; Actions = "Focus; Raise; Move" } +} + +Other { + Enter = "Any Any" { Actions = "Focus" } + ButtonRelease = "3" { Actions = "Close" } + Motion = "1" { Actions = "Focus; Raise; Move" } + Motion = "Mod1 1" { Threshold = "4"; Actions = "Focus; Raise; Move" } +} diff --git a/.pekwm/start b/.pekwm/start new file mode 100644 index 0000000..ba11dda --- /dev/null +++ b/.pekwm/start @@ -0,0 +1,18 @@ +#!/bin/sh +# PekWM start file +# This file is a simple shell script; It gets run on pekwm startup, after +# the theme and all config has loaded if it is set executable +# (chmod +x start). +# +# This is different from ~/.xinitrc because a normal configuration of +# .xinitrc you'll run all commands, then launch the window manager last. +# +# It also gets re-run every time pekwm is restarted. +# +# As for it's usefulness, well, it's up to you. I actually set my background +# from my start file; since it runs after the theme gets loaded, this +# effectively overrides whatever's in the theme. +# +# There's probably a few other good uses for it, too. I mainly pushed for it +# because when I was doing fluxbox's docs, people used to complain that there +# wasn't one, and I wanted to avoid that for pekwm. ;) --eyez diff --git a/.pekwm/vars b/.pekwm/vars new file mode 100644 index 0000000..cd1027e --- /dev/null +++ b/.pekwm/vars @@ -0,0 +1 @@ +$TERM="xterm -fn fixed +sb -bg white -fg black" diff --git a/.xmobarrc b/.xmobarrc index 0e97e94..3f37ad0 100644 --- a/.xmobarrc +++ b/.xmobarrc @@ -20,7 +20,7 @@ Config { font = "-*-terminus-*-*-*-*-35-*-*-*-*-*-*-u" , bgColor = "#000000" , fgColor = "#00FFFF" - , position = TopW L 96 + , position = TopW L 100 , lowerOnStart = True , commands = [ Run Network "eth0" ["-L","0","-H","32","-l","green","--normal","orange","--high","red"] 40 -- , Run Com "/home/collin/.bin/vol.sh" [] "vol" 15 diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs index 792536e..598ed9b 100644 --- a/.xmonad/xmonad.hs +++ b/.xmonad/xmonad.hs @@ -329,7 +329,7 @@ myLayout = smartBorders . avoidStruts $ toggleLayouts (noBorders Full) $ -- for sublayouts but not currently used..see myGenericBindings above -- windowNavigation $ subTabbed $ boringWindows $ --- to get tabbed layout add simple +-- to get tabbed layout add simpleTabbed rztiled ||| Mirror rztiled ||| Grid where -- default tiling algorithm partitions the screen into two panes