Add notion and some other stuff

This commit is contained in:
Sergey 2017-01-29 03:03:12 +03:00
parent 22b6ed39dc
commit 1fa4ecee5a
22 changed files with 2051 additions and 64 deletions

View File

@ -1,8 +1,6 @@
URxvt*termName: rxvt
! rxvt-256colors
!URxvt*foreground: #F5FAFC
!URxvt*background: #1C1F22
URxvt*termName: xterm-256color
! URxvt*foreground: #F5FAFC
! URxvt*background: #1C1F22
URxvt*font: xft:Terminus:size=10:antialias=false
URxvt*scrollBar: false
! URxvt*geometry: 167x54
@ -23,7 +21,8 @@ URxvt.urgentOnBell: true
URxvt.perl-ext: default,clipboard,url-select,keyboard-select
URxvt*perl-ext-common: urxvt-colors
URxvt*perl-lib: .Xresources.d
URxvt*keysym.F5: perl:urxvt-colors:
! URxvt*keysym.F5: perl:urxvt-colors:
URxvt*keysym.C-F5: perl:urxvt-colors:
! tabbed
! URxvt.tabbed.tabbar-fg: 2
! URxvt.tabbed.tabbar-bg: 0
@ -44,31 +43,7 @@ URxvt.keysym.M-u: perl:url-select:select_next
Xft*dpi: 96
Xft*antialias: true
xterm*faceName:xft:Terminus:size=10:antialias=false
xterm*termName: xterm-256color
xterm*faceName: xft:Terminus:size=10:antialias=false
!#include ".Xresources.d/solarized"
!! 0: black
!*color0: #000000
!*color8: #000000
!! 1: red
!*color1: #FF4141
!*color9: #FF4141
!! 2: green
!*color2: #1AE51A
!*color10: #1AE51A
!! 3: yellow
!*color3: #FFFF3A
!*color11: #FFFF3A
!! 4: blue
!*color4: #549BE7
!*color12: #549BE7
!! 5: magenta
!*color5: #FF5AFF
!*color13: #FF5AFF
!! 6: cyan
!*color6: #4BFFFF
!*color14: #4BFFFF
!! 7: white
!*color7: #F5FAFC
!*color15: #F5FAFC
#include ".Xresources.d/solarized"

63
.newsbeuter/config Normal file
View File

@ -0,0 +1,63 @@
# ----------------------------------------------------------------------
# file: ~/.config/newsbeuter/config
# author: moparx - http://moparx.com/configs
# date: 05/08/2013 - 18:12 EDT
# vim: set ai et fenc=utf-8 ft=conf nu si sts=0 sw=4 ts=8 tw=0 :
# ----------------------------------------------------------------------
auto-reload yes
browser lynx
cleanup-on-quit yes
# download-path "/home/moparx/downloads/podcasts"
feed-sort-order title-dec
max-downloads 4
notify-always yes
notify-format "newsbeuter: %n unread articles within %f unread feeds"
notify-program notify-send
notify-xterm no
notify-screen no
player mplayer
refresh-on-startup yes
reload-time 20
reload-threads 2
#show-read-articles no
show-read-feeds yes
# binds ----------------------------------------------------------------
unbind-key t
unbind-key R
bind-key \ reload-all
bind-key "RIGHT" select-tag
bind-key "SPACE" open
# hide articles matching: ---------------------------------------------
ignore-article "*" "title =~ \"Sponsor\""
ignore-article "*" "title =~ \"Advertisement\""
ignore-mode "display"
# formatting and colorization ------------------------------------------
articlelist-format "%4i %f %D %?T?|%-17T| ?%t"
highlight feedlist "^ *[0-9]+ *N " color156 default
highlight articlelist "^ *[0-9]+ *N " color156 default
highlight article "(^Feed:.*|^Title:.*|^Author:.*)" color75 default
highlight article "(^Link:.*|^Date:.*)" color75 default
highlight article "^Podcast Download URL:.*" color71 default
highlight article "^Links:" white color240 underline
highlight article "\\[[0-9][0-9]*\\]" color72 default bold
highlight article "\\[image [0-9][0-9]*\\]" color72 default bold
highlight article "\\[embedded flash: [0-9][0-9]*\\]" color72 default bold
highlight article ":.*\\(link\\)$" color74 default
highlight article ":.*\\(image\\)$" color74 default
highlight article ":.*\\(embedded flash\\)$" color74 default
color listnormal white default
color listfocus default color240
color info default color240

View File

12
.notion/cfg_dock.lua Normal file
View File

@ -0,0 +1,12 @@
-- Create a statusbar
-- mod_statusbar.create{
-- screen=0,
-- pos='bl',
-- fullsize=true,
-- systray=true,
-- template="[ %date || %load || ... ] %systray%filler%systray_stalone",
-- }
--
-- defwinprop{class="stalonetray",instance="stalonetray",statusbar="systray_stalone"}
-- defwinprop{instance="stalonetray",statusbar="systray_stalone"}
-- defwinprop{class="stalonetray",statusbar="systray_stalone"}

54
.notion/cfg_dock.lua.bak Normal file
View File

@ -0,0 +1,54 @@
--
-- Notion dock module configuration
--
-- Create a dock.
mod_dock.create{
-- Dock mode: embedded|floating.
mode="floating",
-- The screen to create the dock on.
screen=0,
-- Corner or side of the screen to place the dock on.
-- For embedded dock the valid values are: tl|tr|bl|br.
-- For floating dock the following are also valid: tc|bc|ml|mc|mr.
pos="bl",
-- Growth direction: left|right|up|down.
grow="right",
-- Whether new dockapps should be added automatically to this dock.
is_auto=true,
-- Show floating dock initially?
floating_hidden=false,
-- Name of the dock.
name="*dock*",
}
-- For floating docks, you may want the following toggle binding.
defbindings("WScreen", {
bdoc("Toggle floating dock."),
kpress(META.."D", "mod_dock.set_floating_shown_on(_, 'toggle')"),
})
-- Dock settings menu. For this to work, mod_menu must have been loaded
-- previously.
if mod_menu then
defmenu("dock-settings", {
menuentry("Pos-TL", "_:set{pos='tl'}"),
menuentry("Pos-TR", "_:set{pos='tr'}"),
menuentry("Pos-BL", "_:set{pos='bl'}"),
menuentry("Pos-BR", "_:set{pos='br'}"),
menuentry("Grow-L", "_:set{grow='left'}"),
menuentry("Grow-R", "_:set{grow='right'}"),
menuentry("Grow-U", "_:set{grow='up'}"),
menuentry("Grow-D", "_:set{grow='down'}"),
})
defbindings("WDock", {
mpress("Button3", "mod_menu.pmenu(_, _sub, 'dock-settings')"),
})
end

57
.notion/cfg_kludges.lua Normal file
View File

@ -0,0 +1,57 @@
--
-- Options to get some programs work more nicely (or at all)
--
defwinprop {
class = "AcroRead",
instance = "documentShell",
acrobatic = true,
}
defwinprop {
class = "Xpdf",
instance = "openDialog_popup",
ignore_cfgrq = true,
}
-- Better would be to apply these settings automatically whenever a window
-- has type _NET_WM_WINDOW_TYPE_NOTIFICATION.
defwinprop {
class = "Xfce4-notifyd",
float = true,
userpos = true,
switchto = false,
}
-- Put all dockapps in the statusbar's systray, also adding the missing size
-- hints necessary for this to work.
defwinprop {
is_dockapp = true,
statusbar = "systray",
-- max_size = { w = 64, h = 64},
-- min_size = { w = 64, h = 64},
}
-- Make an exception for Docker, which sets correct size hints.
defwinprop {
is_dockapp = true,
class = "Docker",
statusbar = "systray",
}
-- https://sourceforge.net/tracker/?func=detail&aid=3471910&group_id=314802&atid=1324528
defwinprop {
class = "Gimp",
acrobatic = true,
}
-- Define some additional title shortening rules to use when the full title
-- doesn't fit in the available space. The first-defined matching rule that
-- succeeds in making the title short enough is used.
ioncore.defshortening("(.*) - Mozilla(<[0-9]+>)", "$1$2$|$1$<...$2")
ioncore.defshortening("(.*) - Mozilla", "$1$|$1$<...")
ioncore.defshortening("XMMS - (.*)", "$1$|...$>$1")
ioncore.defshortening("[^:]+: (.*)(<[0-9]+>)", "$1$2$|$1$<...$2")
ioncore.defshortening("[^:]+: (.*)", "$1$|$1$<...")
ioncore.defshortening("(.*)(<[0-9]+>)", "$1$2$|$1$<...$2")
ioncore.defshortening("(.*)", "$1$|$1$<...")

130
.notion/cfg_notion.lua Normal file
View File

@ -0,0 +1,130 @@
--
-- Notion main configuration file
--
-- This file only includes some settings that are rather frequently altered.
-- The rest of the settings are in cfg_notioncore.lua and individual modules'
-- configuration files (cfg_modulename.lua).
--
-- When any binding and other customisations that you want are minor, it is
-- recommended that you include them in a copy of this file in ~/.notion/.
-- Simply create or copy the relevant settings at the end of this file (from
-- the other files), recalling that a key can be unbound by passing 'nil'
-- (without the quotes) as the callback. For more information, please see
-- the Notion configuration manual available from the Notion Web page.
--
-- Set default modifiers. The default is the 'windows' key; it is usually mapped
-- to Mod4 on Xorg-based systems. Any other modifier, such as Alt, can be used
-- instead. The 'xmodmap' tool can be used to get/set which key codes correspond
-- to which modifiers, and the 'xev' tool can be used to see what codes are
-- generated by particular keys.
--META="Mod4+"
--ALTMETA=""
-- Terminal emulator.
XTERM="urxvt"
-- Some basic settings.
ioncore.set{
-- Maximum delay between clicks in milliseconds to be considered a
-- double click.
--dblclick_delay=250,
-- For keyboard resize, time (in milliseconds) to wait after latest
-- key press before automatically leaving resize mode (and doing
-- the resize in case of non-opaque move).
--kbresize_delay=1500,
-- Opaque resize?
--opaque_resize=false,
-- Movement commands warp the pointer to frames instead of just
-- changing focus. Enabled by default.
--warp=true,
-- Switch frames to display newly mapped windows.
--switchto=true,
-- Default index for windows in frames: one of 'last', 'next' (for
-- after current), or 'next-act' (for after current and anything with
-- activity right after it).
--frame_default_index='next',
-- Auto-unsqueeze transients/menus/queries.
--unsqueeze=true,
-- Display notification tooltips for activity on hidden workspace.
--screen_notify=true,
-- Automatically save layout on restart and exit.
autosave_layout=false,
-- Mouse focus mode; set to "sloppy" if you want the focus to follow the
-- mouse, and to "disabled" otherwise.
--mousefocus="sloppy",
mousefocus="disabled",
-- Controls Notion's reaction to stacking requests sent by clients. Set to
-- "ignore" to ignore these requests, and to "activate" to set the activity
-- flag on a window that requests to be stacked "Above".
--window_stacking_request="ignore",
-- Time (in ms) that a window has to be focussed in order to be added to the
-- focus list. Set this to <=0 (or comment it out) to disable the logic, and
-- update the focus list immediately.
--focuslist_insert_delay=1000,
-- If enabled, activity notifiers are displayed on ALL the screens, not just
-- the screen that contains the window producing the notification. This is
-- only relevant on multi-head setups. By default this is disabled.
activity_notification_on_all_screens=true,
-- If enabled, a workspace indicator comes up at the bottom-left of the
-- screen when a new workspace is selected. This indicator stays active for
-- only as long as indicated by this variable (in ms). Timeout values <=0
-- disable the indicator altogether. This is disabled by default.
workspace_indicator_timeout=500,
}
-- Load default settings. The file cfg_defaults loads all the files
-- commented out below, except mod_dock. If you do not want to load
-- something, comment out this line, and uncomment the lines corresponding
-- the modules or configuration files that you want, below.
-- The modules' configuration files correspond to the names of the
-- modules with 'mod' replaced by 'cfg'.
dopath("cfg_defaults")
-- Load configuration of the Notion 'core'. Most bindings are here.
--dopath("cfg_notioncore")
-- Load some kludges to make apps behave better.
--dopath("cfg_kludges")
-- Define some layouts.
--dopath("cfg_layouts")
-- Load some modules. Bindings and other configuration specific to modules
-- are in the files cfg_modulename.lua.
--dopath("mod_query")
--dopath("mod_menu")
--dopath("mod_tiling")
--dopath("mod_statusbar")
--dopath("mod_dock")
--dopath("mod_sp")
--dopath("mod_notionflux")
--dopath("mod_xrandr")
--
-- Common customisations
--
-- Uncommenting the following lines should get you plain-old-menus instead
-- of query-menus.
--defbindings("WScreen", {
-- kpress(ALTMETA.."F12", "mod_menu.menu(_, _sub, 'mainmenu', {big=true})"),
--})
--
--defbindings("WMPlex.toplevel", {
-- kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"),
--})

414
.notion/cfg_notioncore.lua Normal file
View File

@ -0,0 +1,414 @@
--
-- Notion core configuration file
--
--
-- Bindings. This includes global bindings and bindings common to
-- screens and all types of frames only. See modules' configuration
-- files for other bindings.
--
-- WScreen context bindings
--
-- The bindings in this context are available all the time.
--
-- The variable META should contain a string of the form 'Mod4+'
-- where Mod4 maybe replaced with the modifier you want to use for most
-- of the bindings. Similarly ALTMETA may be redefined to add a
-- modifier to some of the F-key bindings.
defbindings("WScreen", {
bdoc("Switch to n:th object (workspace, full screen client window) "..
"within current screen."),
kpress(META.."1", "WScreen.switch_nth(_, 0)"),
kpress(META.."2", "WScreen.switch_nth(_, 1)"),
kpress(META.."3", "WScreen.switch_nth(_, 2)"),
kpress(META.."4", "WScreen.switch_nth(_, 3)"),
kpress(META.."5", "WScreen.switch_nth(_, 4)"),
kpress(META.."6", "WScreen.switch_nth(_, 5)"),
kpress(META.."7", "WScreen.switch_nth(_, 6)"),
kpress(META.."8", "WScreen.switch_nth(_, 7)"),
kpress(META.."9", "WScreen.switch_nth(_, 8)"),
kpress(META.."0", "WScreen.switch_nth(_, 9)"),
bdoc("Switch to next/previous object within current screen."),
kpress(META.."comma", "WScreen.switch_prev(_)"),
kpress(META.."period", "WScreen.switch_next(_)"),
submap(META.."K", {
bdoc("Go to first region demanding attention or previously active one."),
kpress("K", "mod_menu.grabmenu(_, _sub, 'focuslist')"),
-- Alternative without (cyclable) menu
--kpress("K", "ioncore.goto_activity() or ioncore.goto_previous()"),
--bdoc("Go to previous active object."),
--kpress("K", "ioncore.goto_previous()"),
--bdoc("Go to first object on activity/urgency list."),
--kpress("I", "ioncore.goto_activity()"),
bdoc("Clear all tags."),
kpress("T", "ioncore.tagged_clear()"),
}),
bdoc("Go to n:th screen on multihead setup."),
kpress(META.."Shift+1", "ioncore.goto_nth_screen(0)"),
kpress(META.."Q", "ioncore.goto_nth_screen(0)"),
kpress(META.."Shift+2", "ioncore.goto_nth_screen(1)"),
kpress(META.."W", "ioncore.goto_nth_screen(1)"),
kpress(META.."Shift+3", "ioncore.goto_nth_screen(2)"),
kpress(META.."E", "ioncore.goto_nth_screen(2)"),
bdoc("Go to next/previous screen on multihead setup."),
kpress(META.."Shift+comma", "ioncore.goto_prev_screen()"),
kpress(META.."I", "ioncore.goto_prev_screen()"),
kpress(META.."O", "ioncore.goto_next_screen()"),
kpress(META.."grave", "ioncore.goto_next_screen()"),
--bdoc("Create a new workspace of chosen default type."),
--kpress(META.."F9", "ioncore.create_ws(_)"),
bdoc("Display the main menu."),
kpress(META.."F12", "mod_query.query_menu(_, _sub, 'mainmenu', 'Main menu:')"),
--kpress(ALTMETA.."F12", "mod_menu.menu(_, _sub, 'mainmenu', {big=true})"),
mpress("Button3", "mod_menu.pmenu(_, _sub, 'mainmenu')"),
bdoc("Display the window list menu."),
mpress("Button2", "mod_menu.pmenu(_, _sub, 'windowlist')"),
bdoc("Forward-circulate focus."),
-- '_chld' used here stands to for an actual child window that may not
-- be managed by the screen itself, unlike '_sub', that is likely to be
-- the managing group of that window. The right/left directions are
-- used instead of next/prev, because they work better in conjunction
-- with tilings.
kpress(META.."Tab", "ioncore.goto_next(_chld, 'right')",
"_chld:non-nil"),
submap(META.."K", {
bdoc("Backward-circulate focus."),
kpress("AnyModifier+Tab", "ioncore.goto_next(_chld, 'left')",
"_chld:non-nil"),
bdoc("Raise focused object, if possible."),
kpress("AnyModifier+R", "WRegion.rqorder(_chld, 'front')",
"_chld:non-nil"),
}),
})
-- Client window bindings
--
-- These bindings affect client windows directly.
defbindings("WClientWin", {
submap(META.."K", {
bdoc("Nudge the client window. This might help with some "..
"programs' resizing problems."),
kpress_wait(META.."L", "WClientWin.nudge(_)"),
bdoc("Kill client owning the client window."),
kpress("C", "WClientWin.kill(_)"),
bdoc("Send next key press to the client window. "..
"Some programs may not allow this by default."),
kpress("Q", "WClientWin.quote_next(_)"),
}),
})
-- Client window group bindings
defbindings("WGroupCW", {
bdoc("Toggle client window group full-screen mode"),
kpress_wait(META.."Return", "WGroup.set_fullscreen(_, 'toggle')"),
})
-- WMPlex context bindings
--
-- These bindings work in frames and on screens. The innermost of such
-- contexts/objects always gets to handle the key press.
defbindings("WMPlex", {
bdoc("Close current object."),
kpress_wait(META.."C", "WRegion.rqclose_propagate(_, _sub)"),
})
-- Frames for transient windows ignore this bindmap
defbindings("WMPlex.toplevel", {
bdoc("Toggle tag of current object."),
kpress(META.."T", "WRegion.set_tagged(_sub, 'toggle')", "_sub:non-nil"),
bdoc("Lock screen"),
kpress(META.."L", "notioncore.exec_on(_, notioncore.lookup_script('notion-lock'))"),
--bdoc("Query for manual page to be displayed."),
--kpress(META.."F1", "mod_query.query_man(_, ':man')"),
bdoc("Show the Notion manual page."),
kpress(META.."F1", "ioncore.exec_on(_, ':man notion')"),
bdoc("Run password menu."),
kpress(META.."V", "ioncore.exec_on(_, '/home/kressh/scripts/passmenu.sh')"),
--bdoc("Run a terminal emulator."),
--kpress(META.."T", "mod_query.exec_on_merr(_, XTERM or 'urxvt')"),
bdoc("Run a browser."),
kpress(META.."B", "mod_query.exec_on_merr(_, BROWSER or 'vimb')"),
bdoc("Query for command line to execute."),
kpress(META.."F2", "mod_query.query_exec(_)"),
--bdoc("Query for Lua code to execute."),
--kpress(META.."F3", "mod_query.query_lua(_)"),
--bdoc("Query for host to connect to with SSH."),
--kpress(ALTMETA.."F4", "mod_query.query_ssh(_, ':ssh')"),
bdoc("Zumhotface file!."),
kpress(META.."Z",
"mod_query.query_runfile(_, 'zhfup -f')"),
bdoc("Zumhotface from buffer."),
kpress(META.."X",
"ioncore.exec_on(_, 'zhfclip')"),
bdoc("Zumhotface screen."),
kpress(META.."Print",
"ioncore.exec_on(_, 'zhfscreen')"),
bdoc("Query for file to view."),
kpress(META.."F3",
"mod_query.query_runfile(_, 'xvim')"),
--"mod_query.query_runfile(_, 'run-mailcap --action=view')"),
bdoc("Query for file to edit."),
kpress(META.."F4",
"mod_query.query_editfile(_, 'xvim')"),
--"mod_query.query_editfile(_, 'run-mailcap --action=edit')"),
bdoc("Query for workspace to go to or create a new one."),
kpress(META.."F9", "mod_query.query_workspace(_)"),
bdoc("Query for a client window to go to."),
kpress(META.."G", "mod_query.query_gotoclient(_)"),
bdoc("Display context menu."),
--kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"),
kpress(META.."M", "mod_query.query_menu(_, _sub, 'ctxmenu', 'Context menu:')"),
submap(META.."K", {
bdoc("Detach (float) or reattach an object to its previous location."),
-- By using _chld instead of _sub, we can detach/reattach queries
-- attached to a group. The detach code checks if the parameter
-- (_chld) is a group 'bottom' and detaches the whole group in that
-- case.
kpress("D", "ioncore.detach(_chld, 'toggle')", "_chld:non-nil"),
}),
})
-- WFrame context bindings
--
-- These bindings are common to all types of frames. Some additional
-- frame bindings are found in some modules' configuration files.
defbindings("WFrame", {
submap(META.."K", {
bdoc("Maximize the frame horizontally/vertically."),
kpress("H", "WFrame.maximize_horiz(_)"),
kpress("V", "WFrame.maximize_vert(_)"),
}),
bdoc("Display context menu."),
mpress("Button3", "mod_menu.pmenu(_, _sub, 'ctxmenu')"),
bdoc("Begin move/resize mode."),
kpress(META.."R", "WFrame.begin_kbresize(_)"),
bdoc("Switch the frame to display the object indicated by the tab."),
mclick("Button1@tab", "WFrame.p_switch_tab(_)"),
mclick("Button2@tab", "WFrame.p_switch_tab(_)"),
bdoc("Resize the frame."),
mdrag("Button1@border", "WFrame.p_resize(_)"),
mdrag(META.."Button3", "WFrame.p_resize(_)"),
bdoc("Move the frame."),
mdrag(META.."Button1", "WFrame.p_move(_)"),
bdoc("Move objects between frames by dragging and dropping the tab."),
mdrag("Button1@tab", "WFrame.p_tabdrag(_)"),
mdrag("Button2@tab", "WFrame.p_tabdrag(_)"),
bdoc("Switch to next/previous object within the frame."),
mclick(META.."Button4", "WFrame.switch_next(_)"),
mclick(META.."Button5", "WFrame.switch_prev(_)"),
})
-- Frames for transient windows ignore this bindmap
defbindings("WFrame.toplevel", {
bdoc("Query for a client window to attach."),
kpress(META.."A", "mod_query.query_attachclient(_)"),
submap(META.."K", {
-- Display tab numbers when modifiers are released
submap_wait("ioncore.tabnum.show(_)"),
bdoc("Switch to n:th object within the frame."),
kpress("1", "WFrame.switch_nth(_, 0)"),
kpress("2", "WFrame.switch_nth(_, 1)"),
kpress("3", "WFrame.switch_nth(_, 2)"),
kpress("4", "WFrame.switch_nth(_, 3)"),
kpress("5", "WFrame.switch_nth(_, 4)"),
kpress("6", "WFrame.switch_nth(_, 5)"),
kpress("7", "WFrame.switch_nth(_, 6)"),
kpress("8", "WFrame.switch_nth(_, 7)"),
kpress("9", "WFrame.switch_nth(_, 8)"),
kpress("0", "WFrame.switch_nth(_, 9)"),
bdoc("Switch to next/previous object within the frame."),
kpress("N", "WFrame.switch_next(_)"),
kpress("P", "WFrame.switch_prev(_)"),
bdoc("Move current object within the frame left/right."),
kpress("comma", "WFrame.dec_index(_, _sub)", "_sub:non-nil"),
kpress("period", "WFrame.inc_index(_, _sub)", "_sub:non-nil"),
bdoc("Maximize the frame horizontally/vertically."),
kpress("H", "WFrame.maximize_horiz(_)"),
kpress("V", "WFrame.maximize_vert(_)"),
bdoc("Attach tagged objects to this frame."),
kpress("A", "ioncore.tagged_attach(_)"),
}),
})
-- Bindings for floating frames
defbindings("WFrame.floating", {
bdoc("Toggle shade mode"),
mdblclick("Button1@tab", "WFrame.set_shaded(_, 'toggle')"),
bdoc("Raise the frame."),
mpress("Button1@tab", "WRegion.rqorder(_, 'front')"),
mpress("Button1@border", "WRegion.rqorder(_, 'front')"),
mclick(META.."Button1", "WRegion.rqorder(_, 'front')"),
bdoc("Lower the frame."),
mclick(META.."Button3", "WRegion.rqorder(_, 'back')"),
bdoc("Move the frame."),
mdrag("Button1@tab", "WFrame.p_move(_)"),
})
-- WMoveresMode context bindings
--
-- These bindings are available keyboard move/resize mode. The mode
-- is activated on frames with the command begin_kbresize (bound to
-- META.."R" above by default).
defbindings("WMoveresMode", {
bdoc("Cancel the resize mode."),
kpress("AnyModifier+Escape","WMoveresMode.cancel(_)"),
bdoc("End the resize mode."),
kpress("AnyModifier+Return","WMoveresMode.finish(_)"),
bdoc("Grow in specified direction."),
kpress("Left", "WMoveresMode.resize(_, 1, 0, 0, 0)"),
kpress("Right", "WMoveresMode.resize(_, 0, 1, 0, 0)"),
kpress("Up", "WMoveresMode.resize(_, 0, 0, 1, 0)"),
kpress("Down", "WMoveresMode.resize(_, 0, 0, 0, 1)"),
kpress("F", "WMoveresMode.resize(_, 1, 0, 0, 0)"),
kpress("B", "WMoveresMode.resize(_, 0, 1, 0, 0)"),
kpress("P", "WMoveresMode.resize(_, 0, 0, 1, 0)"),
kpress("N", "WMoveresMode.resize(_, 0, 0, 0, 1)"),
bdoc("Shrink in specified direction."),
kpress("Shift+Left", "WMoveresMode.resize(_,-1, 0, 0, 0)"),
kpress("Shift+Right", "WMoveresMode.resize(_, 0,-1, 0, 0)"),
kpress("Shift+Up", "WMoveresMode.resize(_, 0, 0,-1, 0)"),
kpress("Shift+Down", "WMoveresMode.resize(_, 0, 0, 0,-1)"),
kpress("Shift+F", "WMoveresMode.resize(_,-1, 0, 0, 0)"),
kpress("Shift+B", "WMoveresMode.resize(_, 0,-1, 0, 0)"),
kpress("Shift+P", "WMoveresMode.resize(_, 0, 0,-1, 0)"),
kpress("Shift+N", "WMoveresMode.resize(_, 0, 0, 0,-1)"),
bdoc("Move in specified direction."),
kpress(META.."Left", "WMoveresMode.move(_,-1, 0)"),
kpress(META.."Right", "WMoveresMode.move(_, 1, 0)"),
kpress(META.."Up", "WMoveresMode.move(_, 0,-1)"),
kpress(META.."Down", "WMoveresMode.move(_, 0, 1)"),
kpress(META.."F", "WMoveresMode.move(_,-1, 0)"),
kpress(META.."B", "WMoveresMode.move(_, 1, 0)"),
kpress(META.."P", "WMoveresMode.move(_, 0,-1)"),
kpress(META.."N", "WMoveresMode.move(_, 0, 1)"),
})
--
-- Menu definitions
--
-- Main menu
defmenu("mainmenu", {
menuentry("Run...", "mod_query.query_exec(_)"),
menuentry("Terminal", "mod_query.exec_on_merr(_, XTERM or 'urxvt')"),
menuentry("Lock screen",
"notioncore.exec_on(_, notioncore.lookup_script('notion-lock'))"),
menuentry("Help", "mod_query.query_man(_)"),
menuentry("About Notion", "mod_query.show_about_ion(_)"),
submenu("Styles", "stylemenu"),
submenu("Session", "sessionmenu"),
})
-- Session control menu
defmenu("sessionmenu", {
menuentry("Save", "ioncore.snapshot()"),
menuentry("Restart", "ioncore.restart()"),
--menuentry("Restart TWM", "ioncore.restart_other('twm')"),
menuentry("Exit", "ioncore.shutdown()"),
})
-- Context menu (frame actions etc.)
defctxmenu("WFrame", "Frame", {
-- Note: this propagates the close to any subwindows; it does not
-- destroy the frame itself, unless empty. An entry to destroy tiled
-- frames is configured in cfg_tiling.lua.
menuentry("Close", "WRegion.rqclose_propagate(_, _sub)"),
-- Low-priority entries
menuentry("Attach tagged", "ioncore.tagged_attach(_)", { priority = 0 }),
menuentry("Clear tags", "ioncore.tagged_clear()", { priority = 0 }),
menuentry("Window info", "mod_query.show_tree(_, _sub)", { priority = 0 }),
})
-- Context menu for groups (workspaces, client windows)
defctxmenu("WGroup", "Group", {
menuentry("Toggle tag", "WRegion.set_tagged(_, 'toggle')"),
menuentry("De/reattach", "ioncore.detach(_, 'toggle')"),
})
-- Context menu for workspaces
defctxmenu("WGroupWS", "Workspace", {
menuentry("Close", "WRegion.rqclose(_)"),
menuentry("Rename", "mod_query.query_renameworkspace(nil, _)"),
menuentry("Attach tagged", "ioncore.tagged_attach(_)"),
})
-- Context menu for client windows
defctxmenu("WClientWin", "Client window", {
menuentry("Kill", "WClientWin.kill(_)"),
})

91
.notion/cfg_statusbar.lua Normal file
View File

@ -0,0 +1,91 @@
--
-- Notion statusbar module configuration file
--
-- Create a statusbar.
mod_statusbar.create{
-- First screen, bottom left corner.
screen=0,
pos='bl',
-- Set this to true if you want a full-width statusbar.
fullsize=true,
-- Swallow systray windows.
systray=true,
-- Template. Tokens %string are replaced with the value of the
-- corresponding meter. Currently supported meters are:
-- date date
-- load load average (1min, 5min, 15min)
-- load_Nmin N minute load average (N=1, 5, 15)
-- mail_new mail count (mbox format file $MAIL)
-- mail_unread mail count
-- mail_total mail count
-- mail_*_new mail count (from an alternate mail folder, see below)
-- mail_*_unread mail count
-- mail_*_total mail count
--
-- Space preceded by % adds stretchable space for alignment of variable
-- meter value widths. > before meter name aligns right using this
-- stretchable space , < left, and | centers.
-- Meter values may be zero-padded to a width preceding the meter name.
-- These alignment and padding specifiers and the meter name may be
-- enclosed in braces {}.
--
-- %filler causes things on the marker's sides to be aligned left and
-- right, respectively, and %systray is a placeholder for system tray
-- windows and icons.
--
template=" %battery | %load | %mem_available | %taskwarrior %filler %timelogger | %systray | %date ",
--template="[ %date || load:% %>load || mail:% %>mail_new/%>mail_total ] %filler%systray",
--template="[ %date || load: %05load_1min || mail: %02mail_new/%02mail_total ] %filler%systray",
}
-- Launch ion-statusd. This must be done after creating any statusbars
-- for necessary statusd modules to be parsed from the templates.
mod_statusbar.launch_statusd{
-- Date meter
date={
-- ISO-8601 date format with additional abbreviated day name.
--date_format='%a %Y-%m-%d %H:%M',
-- Finnish etc. date format
date_format='%A, %d.%m.%Y | %H:%M',
-- Locale date format (usually shows seconds, which would require
-- updating rather often and can be distracting)
-- date_format='%c',
-- Additional date formats.
--[[
formats={
time = '%H:%M', -- %date_time
}
--]]
},
-- Load meter
load={
--update_interval=10*1000,
--important_threshold=1.5,
--critical_threshold=4.0,
},
-- Mail meter
--
-- To monitor more mbox files, add them to the files table. For
-- example, add mail_work_new and mail_junk_new to the template
-- above, and define them in the files table:
--
-- files = { work = "/path/to/work_email", junk = "/path/to/junk" }
--
-- Don't use the keyword 'spool' as it's reserved for mbox.
mail={
--update_interval=60*1000,
--mbox=os.getenv("MAIL"),
--files={},
},
}
defwinprop{class="stalonetray",instance="stalonetray",statusbar="systray"}
defwinprop{instance="stalonetray",statusbar="systray"}
defwinprop{class="stalonetray",statusbar="systray"}

133
.notion/look-zenburn.lua Normal file
View File

@ -0,0 +1,133 @@
-- look-zenburn-ion3.lua --- Zenburn color theme for Ion3
-- This file is in the public domain.
-- Author: Daniel Brockman <daniel@brockman.se>
-- URL: http://www.brockman.se/software/zenburn/look-zenburn-ion3.lua
-- Based on Jani Nurminen's original Zenburn color scheme for Vim,
-- and the classic brownsteel look for pwm.
-- Thanks to Luke Renn for porting this to Ion3.
if not gr.select_engine("de") then return end
de.reset()
font_medium = "terminus-*-med-*-11-*"
font_bold = font_medium
de.defstyle("*", {
shadow_colour = "#262626",
highlight_colour = "#767676",
background_colour = "#464646",
foreground_colour = "#acac9c",
padding_pixels = 0,
highlight_pixels = 0,
shadow_pixels = 1,
border_style = "elevated",
font = font_medium,
text_align = "center",
})
de.defstyle("frame", {
based_on = "*",
padding_colour = "#505050",
background_colour = "#3f3f3f",
foreground_colour = "#ffffff",
padding_pixels = 2,
highlight_pixels = 1,
shadow_pixels = 1,
de.substyle("active", {
shadow_colour = "#204050",
highlight_colour = "#607080",
background_colour = "#505050",
foreground_colour = "#ffffff",
}),
})
de.defstyle("frame-ionframe", {
based_on = "frame",
border_style = "inlaid",
padding_pixels = 1,
spacing = 2,
})
de.defstyle("frame-floatframe", {
based_on = "frame",
border_style = "ridge"
})
de.defstyle("tab", {
based_on = "*",
font = font_bold,
de.substyle("inactive-unselected", {
shadow_colour = "#262626",
highlight_colour = "#767676",
background_colour = "#464646",
foreground_colour = "#acac9c",
}),
de.substyle("inactive-selected", {
shadow_colour = "#404040",
highlight_colour = "#909090",
background_colour = "#606060",
foreground_colour = "#dcdccc",
}),
de.substyle("active-unselected", {
shadow_colour = "#203040",
highlight_colour = "#607080",
background_colour = "#405060",
foreground_colour = "#a0a0a0",
}),
de.substyle("active-selected", {
shadow_colour = "#304050",
highlight_colour = "#708090",
background_colour = "#506070",
foreground_colour = "#ffffff",
}),
text_align = "center",
})
de.defstyle("tab-frame", {
based_on = "tab",
de.substyle("*-*-*-*-activity", {
shadow_colour = "#404040",
highlight_colour = "#707070",
background_colour = "#990000",
foreground_colour = "#eeeeee",
}),
})
de.defstyle("tab-frame-ionframe", {
based_on = "tab-frame",
spacing = 1,
})
de.defstyle("tab-menuentry", {
based_on = "tab",
text_align = "left",
})
de.defstyle("tab-menuentry-big", {
based_on = "tab-menuentry",
padding_pixels = 2,
})
de.defstyle("input", {
based_on = "*",
background_colour = "#000000",
foreground_colour = "#ffffff",
padding_pixels = 1,
highlight_pixels = 1,
shadow_pixels = 1,
border_style = "elevated",
de.substyle("*-cursor", {
background_colour = "#ffffff",
foreground_colour = "#000000",
}),
de.substyle("*-selection", {
background_colour = "#505050",
foreground_colour = "#ffffff",
}),
})
gr.refresh()

152
.notion/look_alex.lua Normal file
View File

@ -0,0 +1,152 @@
if not gr.select_engine("de") then return end
de.reset()
de.defstyle("*", {
shadow_colour = "#00aa00",
highlight_colour = "#00aa00",
-- background_colour = "#000000",
foreground_colour = "#00aa00",
padding_pixels = 1,
highlight_pixels = 1,
shadow_pixels = 1,
border_style = "elevated",
font = "-*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-*",
text_align = "center",
})
de.defstyle("frame", {
based_on = "*",
shadow_colour = "#000000",
highlight_colour = "#000000",
padding_colour = "#00aa00",
-- transparent_background = true,
-- background_colour = "#000000",
foreground_colour = "#ffffff",
padding_pixels = 2,
highlight_pixels = 1,
shadow_pixels = 1,
de.substyle("active", {
shadow_colour = "#000000",
highlight_colour = "#000000",
padding_colour = "#00aa00",
foreground_colour = "#ffffff",
}),
})
de.defstyle("frame-ionframe", {
based_on = "frame",
border_style = "inlaid",
padding_pixels = 1,
spacing = 1,
})
de.defstyle("frame-floatframe", {
based_on = "frame",
border_style = "ridge",
})
de.defstyle("tab", {
based_on = "*",
font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*",
de.substyle("active-selected", {
shadow_colour = "#00aa00",
highlight_colour = "#00aa00",
background_colour = "#000000",
foreground_colour = "#00aa00",
}),
de.substyle("active-unselected", {
shadow_colour = "#006600",
highlight_colour = "#006600",
background_colour = "#000000",
foreground_colour = "#006600",
}),
de.substyle("inactive-selected", {
shadow_colour = "#006600",
highlight_colour = "#006600",
background_colour = "#000000",
foreground_colour = "#006600",
}),
de.substyle("inactive-unselected", {
shadow_colour = "#003300",
highlight_colour = "#003300",
background_colour = "#000000",
foreground_colour = "#003300",
}),
text_align = "center",
})
de.defstyle("tab-frame", {
based_on = "tab",
de.substyle("*-*-*-*-activity", {
shadow_colour = "#00aa00",
highlight_colour = "#00aa00",
background_colour = "#000000",
foreground_colour = "#00aa00",
}),
})
de.defstyle("tab-frame-ionframe", {
based_on = "tab-frame",
spacing = 1,
})
de.defstyle("tab-menuentry", {
based_on = "tab",
text_align = "left",
highlight_pixels = 0,
shadow_pixels = 0,
--give pmenus the same brightness as the other menus.
de.substyle("inactive-selected", {
shadow_colour = "#00aa00",
highlight_colour = "#00aa00",
background_colour = "#000000",
foreground_colour = "#00aa00",
}),
de.substyle("inactive-unselected", {
shadow_colour = "#006600",
highlight_colour = "#006600",
background_colour = "#000000",
foreground_colour = "#006600",
}),
})
de.defstyle("tab-menuentry-big", {
based_on = "tab-menuentry",
font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
padding_pixels = 7,
})
de.defstyle("input", {
based_on = "*",
shadow_colour = "#00aa00",
highlight_colour = "#00aa00",
background_colour = "#000000",
foreground_colour = "#00aa00",
padding_pixels = 1,
highlight_pixels = 1,
shadow_pixels = 1,
border_style = "elevated",
de.substyle("*-cursor", {
background_colour = "#ffffff",
foreground_colour = "#000000",
}),
de.substyle("*-selection", {
background_colour = "#505050",
foreground_colour = "#ffffff",
}),
})
de.defstyle("input-menu", {
based_on = "*",
de.substyle("active", {
shadow_colour = "#00aa00",
highlight_colour = "#00aa00",
background_colour = "#000000",
foreground_colour = "#00aa00",
}),
})
gr.refresh()

View File

@ -0,0 +1,77 @@
--
-- look_greenlight for Notion's default drawing engine.
--
if not gr.select_engine("de") then
return
end
-- Clear existing styles from memory.
de.reset()
font_medium = "-misc-fixed-medium-r-*-*-13-*-*-*-*-60-*-*"
-- "-*-terminus-*-medium-*-*-*-11-*-*-*-*-koi8-ru"
font_bold = font_medium
-- Base style
de.defstyle("*", {
highlight_colour = "#666666",
shadow_colour = "#666666",
background_colour = "#333333",
foreground_colour = "#cccccc",
shadow_pixels = 1,
highlight_pixels = 1,
padding_pixels = 1,
spacing = 0,
border_style = "elevated",
border_sides = "tb",
font = font_medium,
text_align = "center",
})
de.defstyle("frame", {
background_colour = "#1C1F22",
transparent_background = false,
})
de.defstyle("tab", {
font = font_medium,
spacing = 0,
de.substyle("active-selected", {
highlight_colour = "#8ac267",
shadow_colour = "#8ac267",
background_colour = "#354743",
}),
de.substyle("inactive-selected", {
highlight_colour = "#6aa247",
shadow_colour = "#6aa247",
}),
})
de.defstyle("input", {
text_align = "left",
spacing = 0,
de.substyle("*-selection", {
background_colour = "#354743",
}),
de.substyle("*-cursor", {
background_colour = "#8ac267",
foreground_colour = "#333333",
}),
})
dopath("lookcommon_emboss")
-- Refresh objects' brushes.
gr.refresh()

View File

@ -0,0 +1,93 @@
-- look_simpleblue.lua drawing engine configuration file for Notion.
if not gr.select_engine("de") then return end
de.reset()
de.defstyle("*", {
shadow_colour = "black",
highlight_colour = "black",
background_colour = "#222222",
foreground_colour = "#9f9f9f",
padding_pixels = 1,
highlight_pixels = 0,
shadow_pixels = 0,
border_style = "elevated",
font = "-misc-fixed-medium-r-*-*-13-*-*-*-*-60-*-*",
-- font = "-*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-*",
text_align = "center",
})
de.defstyle("frame", {
shadow_colour = "black",
highlight_colour = "black",
padding_colour = "black",
background_colour = "black",
foreground_colour = "#ffffff",
padding_pixels = 0,
highlight_pixels = 0,
shadow_pixels = 0,
de.substyle("active", {
shadow_colour = "black",
highlight_colour = "black",
background_colour = "#D58919",
foreground_colour = "#ffffff",
}),
})
de.defstyle("tab", {
--font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*",
de.substyle("active-selected", {
shadow_colour = "black",
highlight_colour = "black",
background_colour = "#D58919",
foreground_colour = "#000000",
}),
--de.substyle("active-unselected", {
--shadow_colour = "black",
--highlight_colour = "black",
--background_colour = "#222222",
--foreground_colour = "#9f9f9f",
--}),
--de.substyle("inactive-selected", {
--shadow_colour = "black",
--highlight_colour = "black",
--background_colour = "#382C1B",
--foreground_colour = "#bfbfbf",
--}),
--de.substyle("inactive-unselected", {
--shadow_colour = "black",
--highlight_colour = "black",
--background_colour = "#222222",
--foreground_colour = "#9f9f9f",
--}),
text_align = "left",
})
de.defstyle("input", {
shadow_colour = "black",
highlight_colour = "black",
background_colour = "#3f3f3f",
foreground_colour = "white",
padding_pixels = 1,
highlight_pixels = 0,
shadow_pixels = 0,
border_style = "elevated",
de.substyle("*-cursor", {
background_colour = "white",
foreground_colour = "#3f3f3f",
}),
de.substyle("*-selection", {
background_colour = "black",
foreground_colour = "white",
}),
})
de.defstyle("input-menu", {
padding_pixels=0,
})
dopath("lookcommon_clean")
gr.refresh()

View File

@ -0,0 +1,82 @@
-- A battery statusbar meter for the ion3 window manager for Apple Powerbooks
-- running Linux. These machines do not use APM or ACPI but have a PMU, Power
-- Management Unit.
--
-- Install the meter in ~/.ion3/statusd_battery.lua
--
-- Edit your ~/.ion3/cfg_statusbar.lua to add this meter:
-- template="%date - %battery %filler%systray",
--
-- When the battery is charged and you're on AC power, you don't see anything.
-- When the system is on AC power and charging the battery, you'll see a tilde
-- sign, ~, followed by the percentage that the battery is charged. When the
-- system is running on battery power, you'll an equal, =, sign, followed by
-- the remaining capacity in percentages.
--
-- See /usr/src/linux/include/battery.h and
-- /usr/src/linux/drivers/macintosh/via-battery.c for some documentation on the
-- exported data.
--
-- Author: Jeroen Pulles
-- Rotterdam, 15 november 2007
local battery_base_settings = {
update_interval = 15*1000, -- every 15 sec
important_threshold = 33 , -- 33% cap. remaining
critical_threshold = 15, -- 15% capacity remaining
}
local battery_settings = battery_base_settings
local battery_timer
-- Read the battery battery info
local function read_battery_data ()
-- assume only one of possible two batteries is present:
local f = assert(io.open("/sys/class/power_supply/BAT0/uevent", "r"))
local data = f:read("*all")
f:close()
local _, _, capacity = string.find(data, "POWER_SUPPLY_CAPACITY=(%d+)")
local _, _, status = string.find(data, "POWER_SUPPLY_STATUS=(%w+)")
return status, tonumber(capacity)
end
-- Write the current state to the statusbar:
local function inform_battery ()
local status, cap = read_battery_data()
if status == 'Discharging' then
-- On battery power, percentage remaining:
statusd.inform("battery", string.format("BAT %d%%", cap))
else
-- Charging the battery on AC power, percentage charged:
statusd.inform("battery", string.format("AC %d%%", cap))
end
if cap <= battery_settings.critical_threshold then
statusd.inform("battery_hint", "critical")
elseif cap <= battery_settings.important_threshold then
statusd.inform("battery_hint", "important")
end
end
-- Statusbar update loop:
local function update_battery ()
inform_battery()
battery_timer:set(battery_settings.update_interval, update_battery)
end
-- Run the script:
if statusd then
-- we're a statusbar plugin:
battery_settings = table.join(statusd.get_config("battery"), battery_base_settings)
battery_timer = statusd.create_timer()
update_battery()
end
-- vim: set ts=4 sw=4 expandtab

88
.notion/statusd_mem.lua Normal file
View File

@ -0,0 +1,88 @@
-------------------------------------------------------------------------------------------
--
-- PURPOSE:
-- Shows system available memory catching [free] command outputs.
-- It is intended to make it simpler than statusd_meminfo, plus user configurable
-- measurement units and alarms for "all" available memory metters.
--
-- USAGE:
-- Just set any of the following labels on cfg_statusbar.lua: %mem_hused, %mem_shared
-- %mem_free, %mem_hfree, %mem_swap, %mem_used, %mem_cached. Example: [MF: %mem_free]
--
-- MEANINGS:
--> ** "mem_hfree" poses as "htop free memory" or "mem_free +cached +buffers",
-- in oposition, "mem_hused" is "mem_used -cached -buffers"; other labels have
-- transparent meanings.
--
------- CONFIG EXAMPLE: ------------------------------------------------------------------
--
-- To modify settings is quite simple and flexible, write (on cfg_statusbar.lua)
-- something like this, without comments:
-- mem = {
-- update_interval = 15*1000, --> Milliseconds
-- free_alarm = 25, --> Limits percentaje ...
-- used_alarm = 65,
-- units = "m" --> "g" or "k" too
-- }
-- Write only the settings that do you want to change or leave this section as is...
--> ** "update_interval" means "time in milliseconds to update info (default = 15)"
-- "xx_alarm" means "do a color advise when memory *percentage* reaches this value".
-- (both defaults are 50). "units" means Gb "g", Mb "m" or Kb "k" (default = "m")
------------------------------------------------------------------------------------------
--
-- NOTES:
-- * Alarms for used memory are inverse to alarms for free memory (think about it...)
-- "mem_total" label is useless. If total memory varies, its time to open your
-- hardware and check this script from barebone. Seriously, may be your video or wifi
-- devices were claiming some free R.A.M. on your machine start-up.
-- However, I included "mem_total" just in case.
-- ** This script has non blocking I/O.
--
-- LICENSE:
-- GPL2 Copyright(C)2006 Mario Garcia H.
-- (Please see http://www.gnu.org/licenses/gpl.html to read complete license)
--
-- T.STAMP: Thu Dec 7 03:28:04 2006
--
-- DEPENDS: "free" command. Probably, all GNU/Linux distros have one.
--
-- INSECTS: Not known.
--
-- CONTACT:
-- G.H. <drosophila (at) nmental (dot) com>
--
------- DEFAULT SETTINGS :-----------------------------------------------------------------
local mem_timer
local defaults = { update_interval = 10*1000, free_alarm = 25, used_alarm = 50, units = "m" }
local settings = table.join(statusd.get_config("mem"), defaults)
------- MEM MONITOR :----------------------------------------------------------------------
local function show_meminfo(status)
while status do
local ok, _, total, used, free, shared, buffers, cache, available =--
string.find(status, "Mem:%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)")
--
if not ok then statusd.inform("mem_template", "--") return end
--
statusd.inform("mem_total", total)
statusd.inform("mem_used", used)
statusd.inform("mem_free", free)
statusd.inform("mem_shared", shared)
statusd.inform("mem_buffers", buffers)
statusd.inform("mem_cache", cache)
statusd.inform("mem_available", available)
statusd.inform("mem_available_hint", available*100/total >= settings.free_alarm and "important" or "critical")
status = coroutine.yield()
end
end
local function update_mem()
statusd.popen_bgread("free -"..settings.units.."w", coroutine.wrap(show_meminfo))
mem_timer:set(settings.update_interval, update_mem)
end
mem_timer = statusd.create_timer()
update_mem()

100
.notion/statusd_pmu.lua.bak Normal file
View File

@ -0,0 +1,100 @@
-- A battery statusbar meter for the ion3 window manager for Apple Powerbooks
-- running Linux. These machines do not use APM or ACPI but have a PMU, Power
-- Management Unit.
--
-- Install the meter in ~/.ion3/statusd_pmu.lua
--
-- Edit your ~/.ion3/cfg_statusbar.lua to add this meter:
-- template="%date - %pmu_battery %filler%systray",
--
-- When the battery is charged and you're on AC power, you don't see anything.
-- When the system is on AC power and charging the battery, you'll see a tilde
-- sign, ~, followed by the percentage that the battery is charged. When the
-- system is running on battery power, you'll an equal, =, sign, followed by
-- the remaining capacity in percentages.
--
-- See /usr/src/linux/include/pmu.h and
-- /usr/src/linux/drivers/macintosh/via-pmu.c for some documentation on the
-- exported data.
--
-- Author: Jeroen Pulles
-- Rotterdam, 15 november 2007
local pmu_base_settings = {
update_interval = 60*1000, -- every minute
--important_threshold = 33 , -- 33% cap. remaining
--critical_threshold = 8, -- 8% capacity remaining
}
local pmu_settings = pmu_base_settings
local pmu_timer
-- Read the pmu battery info
local function read_acpi_data ()
local cmd = 'acpi -b'
local f = assert(io.popen(cmd, 'r'))
local bat = assert(f:read('*a'))
f:close()
return tostring(bat)
end
-- Print the battery status to stdout, for debugging purposes:
local function print_batt_info ()
local battery = read_acpi_data ()
print(battery)
end
-- Write the current state to the statusbar:
local function inform_pmu ()
local bat = read_acpi_data ()
--if amp == 0 then
---- Do no show anything when on AC power and fully charged:
--statusd.inform("pmu_battery", "")
--elseif amp > 0 then
---- Charging the battery on AC power, percentage charged:
--statusd.inform("pmu_battery", string.format("~%d%%", pct))
--else
---- On battery power, percentage remaining:
--statusd.inform("pmu_battery", string.format("=%d%%", pct))
--end
statusd.inform("pmu_battery", bat)
-- crit and imp. hints only when on battery:
--if amp < 0 and pct <= pmu_settings.critical_threshold then
--statusd.inform("pmu_battery_hint", "critical")
--elseif amp < 0 and pct <= pmu_settings.important_threshold then
--statusd.inform("pmu_battery_hint", "important")
--else
--statusd.inform("pmu_battery_hint", "normal")
--end
end
-- Statusbar update loop:
local function update_pmu ()
inform_pmu()
pmu_timer:set(pmu_settings.update_interval, update_pmu)
end
-- Run the script:
if statusd then
-- we're a statusbar plugin:
pmu_settings = table.join(statusd.get_config("pmu"), pmu_base_settings)
pmu_timer = statusd.create_timer()
update_pmu()
else
-- run as standalone:
print_batt_info()
end
-- vim: set ts=4 sw=4 expandtab

View File

@ -0,0 +1,41 @@
local task_base_settings = {
update_interval = 30*1000, -- every minute
}
local task_settings = task_base_settings
local task_timer
-- Read the active task
local function read_task_data ()
local f = assert(io.popen("/usr/bin/task statusd limit:1 | head -n 4 | tail -n 1"))
local data = f:read("*all")
f:close()
return data
end
-- Write the current state to the statusbar:
local function inform_task ()
local task = read_task_data()
statusd.inform("taskwarrior", task)
end
-- Statusbar update loop:
local function update_task ()
inform_task()
task_timer:set(task_settings.update_interval, update_task)
end
-- Run the script:
if statusd then
-- we're a statusbar plugin:
task_settings = table.join(statusd.get_config("task"), task_base_settings)
task_timer = statusd.create_timer()
update_task()
end
-- vim: set ts=4 sw=4 expandtab

View File

@ -0,0 +1,42 @@
local timelogger_base_settings = {
update_interval = 5*1000 -- 5 seconds
}
local timelogger_settings = timelogger_base_settings
local timelogger_timer
-- Read the active timelogger
local function read_timelogger_data ()
local f = assert(io.popen("head -n 1 $HOME/tmp/timelogger.state | awk '{ print $1 }'"))
local data = f:read("*all")
f:close()
return tonumber(data)
end
-- Write the current state to the statusbar:
local function inform_timelogger ()
local timelogger = read_timelogger_data()
statusd.inform("timelogger", tostring(math.floor(timelogger/60).." min"))
statusd.inform("timelogger_hint", timelogger >= 25*60 and "critical" or "important")
end
-- Statusbar update loop:
local function update_timelogger ()
inform_timelogger()
timelogger_timer:set(timelogger_settings.update_interval, update_timelogger)
end
-- Run the script:
if statusd then
-- we're a statusbar plugin:
timelogger_settings = table.join(statusd.get_config("timelogger"), timelogger_base_settings)
timelogger_timer = statusd.create_timer()
update_timelogger()
end
-- vim: set ts=4 sw=4 expandtab

329
.nvimrc Normal file
View File

@ -0,0 +1,329 @@
set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle
" required!
Plugin 'gmarik/Vundle.vim'
" Plugin 'pydave/AsyncCommand'
Plugin 'tpope/vim-fugitive'
" Autocomplete
Plugin 'Shougo/deoplete.nvim'
" Plugin 'Valloric/YouCompleteMe'
" Plugin 'Shougo/unite.vim'
" Plugin 'ervandew/supertab'
"
Plugin 'terryma/vim-multiple-cursors'
Plugin 'Lokaltog/vim-easymotion'
" Ruby/Rails
Plugin 'tpope/vim-rails'
Plugin 'tpope/vim-rake'
Plugin 'tpope/vim-bundler'
" Productivity
Plugin 'farseer90718/vim-taskwarrior'
Plugin 'majutsushi/tagbar'
Plugin 'L9'
" Plugin 'FuzzyFinder'
" Plugin 'AutoComplPop'
Plugin 'scrooloose/nerdcommenter'
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
" Plugin 'tpope/vim-rvm'
" Plugin 'vim-scripts/ScreenShot'
Plugin 'vim-scripts/SearchComplete'
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'vim-scripts/tlib'
" Snippets
" Plugin 'garbas/vim-snipmate'
" Plugin 'honza/vim-snippets'
Plugin 'Shougo/neosnippet'
Plugin 'Shougo/neosnippet-snippets'
Plugin 'vim-scripts/taglist.vim'
" Appearance
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
" Langs
Plugin 'kchmck/vim-coffee-script'
Plugin 'slim-template/vim-slim'
Plugin 'fatih/vim-go'
Plugin 'wavded/vim-stylus'
Plugin 'tpope/vim-haml'
Plugin 'digitaltoad/vim-jade'
" CVS
Plugin 'phleet/vim-mercenary'
Plugin 'mattn/calendar-vim'
Plugin 'vim-scripts/vimwiki'
" Plugin 'mhinz/vim-startify'
Plugin 'ngmy/vim-rubocop'
Plugin 'tpope/vim-surround'
Plugin 'kien/ctrlp.vim'
Plugin 'mileszs/ack.vim'
Plugin 'godlygeek/tabular'
Plugin 'nathanaelkane/vim-indent-guides'
Plugin 'scrooloose/syntastic'
" Plugin 'syngan/vim-vimlint'
" Plugin 'ynkdir/vim-vimlparser'
" Plugin 'tpope/vim-dispatch'
" Plugin 'whatyouhide/vim-gotham'
Plugin 'altercation/vim-colors-solarized'
Plugin 'airblade/vim-gitgutter'
Plugin 'szw/vim-maximizer'
call vundle#end()
let wiki = {}
let wiki.path = '~/wiki/'
let wiki.diary_rel_path='journal/'
let wiki.diary_index='journal'
let wiki.diary_header='Journal'
let wiki.syntax = 'markdown'
let wiki.ext = '.md'
"let wiki.auto_export = 1
let wiki.nested_syntaxes = {'ruby': 'ruby', 'sh': 'sh'}
"let wiki.custom_wiki2html = '~/scripts/vimwiki-md2html.rb'
let g:vimwiki_list = [wiki]
let g:vimwiki_hl_headers = 1
let g:vimwiki_hl_cb_checked = 1
let g:vimwiki_ext2syntax = {'.md': 'markdown', '.mkd': 'markdown', '.wiki': 'media'}
" NERD Commenter
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Use compact syntax for prettified multi-line comments
let g:NERDCompactSexyComs = 1
" Align line-wise comment delimiters flush left instead of following code indentation
let g:NERDDefaultAlign = 'left'
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 0
" NERDtree-tabs
let g:nerdtree_tabs_open_on_gui_startup = 0
let g:nerdtree_tabs_autoclose = 0
" Snipmate
" imap <S-Enter> <Plug>snipMateNextOrTrigger
" let g:snipMate = get(g:, 'snipMate', {}) " Allow for vimrc re-sourcing
" YouCompleteMe
" let g:ycm_key_list_select_completion = ['<TAB>']
" let g:ycm_key_list_previous_completion = ['<S-TAB>']
" Neocomplete
let g:acp_enableAtStartup = 0
let g:deoplete#enable_at_startup = 1
let g:deoplete#enable_smart_case = 1
let g:deoplete#max_list = 10
let g:deoplete#sources#syntax#min_keyword_length = 3
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete
" Neocomplete snippets
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
" SuperTab like snippets behavior.
" Note: It must be "imap" and "smap". It uses <Plug> mappings.
imap <C-k> <Plug>(neosnippet_expand_or_jump)
"imap <expr><TAB>
" \ pumvisible() ? "\<C-n>" :
" \ neosnippet#expandable_or_jumpable() ?
" \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
" For conceal markers.
if has('conceal')
set conceallevel=2 concealcursor=niv
endif
" Enable snipMate compatibility feature.
let g:neosnippet#enable_snipmate_compatibility = 1
"
" Tell Neosnippet about the other snippets
let g:neosnippet#snippets_directory='~/.vim/bundle/vim-snippets/snippets'
" Syntastic
" let g:syntastic_ruby_checkers = ['mri']
"let g:syntastic_shell = "/bin/sh"
"let g:syntastic_loc_list_height = 2
"let g:syntastic_enable_balloons = 1
"let g:syntastic_ruby_checkers = ['rubocop']
"let g:syntastic_ruby_rubocop_exec ='/home/kressh/.rbenv/versions/2.2.0/bin/rubocop'
" let g:syntastic_ruby_rubocop_args = '-l'
" let g:syntastic_quiet_messages = { "type": "style" }
"let g:syntastic_always_populate_loc_list = 0
"let g:syntastic_auto_loc_list = 1
"let g:syntastic_check_on_open = 0
"let g:syntastic_check_on_wq = 1
" Ack
let g:ack_use_dispatch = 0
syntax enable
filetype plugin indent on
silent! nmap <C-p> :NERDTreeTabsToggle<CR>
silent! map <F4> :NERDTreeFind<CR>
let g:NERDTreeMapActivateNode="<F4>"
let g:NERDTreeMapPreview="<F3>"
let g:calendar_keys = {'goto_next_month': '<C-Right>',
\ 'goto_prev_month': '<C-Left>',
\ 'goto_prev_year': '<C-Down>',
\ 'goto_next_year': '<C-Up>'}
let g:calendar_monday = 1
let g:calendar_focus_today = 1
au BufRead,BufNewFile *.rabl setf ruby
au BufRead,BufNewFile *.arb setf ruby
au BufRead,BufNewFile *.tag setf coffee " riotjs tags
au BufRead,BufNewFile *.vue setf coffee " riotjs tags
" silent! nmap <C-f> :FufLine<CR>
" silent! nmap <C-g> :FufCoverageFile<CR>
"
" Airline
let g:airline_theme = 'solarized'
let g:airline_section_y = '' " Don't display encoding
let g:airline_left_sep = '▶' " Set custom left separator
let g:airline_right_sep = '◀' " Set custom right separator
"let g:airline#extensions#tabline#enabled = 1 " Enable airline for tab-bar
"let g:airline#extensions#tabline#show_buffers = 0 " Don't display buffers in tab-bar with single tab
"let g:airline#extensions#tabline#fnamemod = ':t' " Display only filename in tab
" Vim gitgutter
let g:gitgutter_sign_added = '█'
let g:gitgutter_sign_modified = '█'
let g:gitgutter_sign_removed = '█'
let g:gitgutter_sign_removed_first_line = '█'
let g:gitgutter_sign_modified_removed = '█'
let g:ctrlp_map = '<c-g>'
let g:ctrlp_cmd = 'CtrlP'
let g:ctrlp_custom_ignore = '\v(node_modules|vendor\/bundle)$'
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files -co --exclude-standard']
" Vim maximizer
let g:maximizer_default_mapping_key = '<F3>'
" Replace current word with yanked or deleted text
nnoremap S "_diwP
fun! <SID>StripTrailingWhitespaces()
let l = line(".")
let c = col(".")
%s/\s\+$//e
call cursor(l, c)
endfun
" tagbar
nmap <F8> :TagbarToggle<CR>
" Automatically clean trailing whitespaces on save
autocmd BufWritePre *.* :call <SID>StripTrailingWhitespaces()
set noswapfile
set background=dark
" colorscheme coldrails
set t_Co=256
colorscheme solarized
call togglebg#map("<F5>")
set ofu=syntaxcomplete#Complete
set ts=2 " Tabs are 2 spaces
set bs=2 " Backspace over everything in insert mode
set shiftwidth=2 " Tabs under smart indent
set cf " Enable error files & error jumping.
set clipboard=unnamed " Yanks go on clipboard instead.
set history=32 " Number of things to remember in history.
set autowrite " Writes on make/shell commands
set nu " Line numbers on
" set nowrap " Line wrapping off
set wrap
set linebreak
set notimeout
set ttimeout
" set timeoutlen=250 " Time to wait after ESC (default causes an annoying delay)
set synmaxcol=160
set incsearch
set hlsearch " Highlight searches
set ruler " Ruler on
set colorcolumn=+1
set re=1
" set ttyfast
" set lazyredraw
set nocp incsearch
" Search
" set ignorecase " Ignore case of searches
set cinoptions=:0,p0,t0
set cinwords=if,else,while,do,for,switch,case,begin
set formatoptions=tcqr
set cindent
set autoindent
set smarttab
set expandtab
set colorcolumn=80,120
" hi ColorColumn guibg=Black
set nostartofline " Dont reset cursor to start of line when moving around.
set noeol " Dont add empty newlines at the end of files
:autocmd InsertEnter * set cul " Show cursor line in insert mode
:autocmd InsertLeave * set nocul " Hide cursor line in insert mode
" Visual
set showmatch " Show matching brackets.
set mat=5 " Bracket blinking.
" Show $ at end of line and trailing space as ~
set novisualbell " No blinking .
set noerrorbells " No noise.
set laststatus=2 " Always show status line.
" Invisibles
set list " show invisibles
set listchars=tab:▸\ ,eol:¬
" inoremap <Up> <NOP>
" inoremap <Down> <NOP>
" inoremap <Left> <NOP>
" inoremap <Right> <NOP>
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
" Open new split panes to right and bottom, which feels more natural
set splitbelow
set splitright
" Quicker window movement
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l

View File

@ -7,9 +7,9 @@ autodetach on
altscreen on
defscrollback 5000
term xterm
term screen-256color
attrcolor b ".I"
# Tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
# Erase background with current bg color. Not needed if TERM=screen-256color
defbce "on"
# defbce "on"

110
.vimrc
View File

@ -14,7 +14,7 @@ Plugin 'tpope/vim-fugitive'
Plugin 'shougo/neocomplete.vim'
" Plugin 'Valloric/YouCompleteMe'
" Plugin 'Shougo/unite.vim'
Plugin 'ervandew/supertab'
" Plugin 'ervandew/supertab'
"
Plugin 'terryma/vim-multiple-cursors'
@ -41,9 +41,19 @@ Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'vim-scripts/SearchComplete'
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'vim-scripts/tlib'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'
" Snippets
" Plugin 'garbas/vim-snipmate'
" Plugin 'honza/vim-snippets'
Plugin 'Shougo/neosnippet'
Plugin 'Shougo/neosnippet-snippets'
Plugin 'vim-scripts/taglist.vim'
" Appearance
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
" Langs
Plugin 'kchmck/vim-coffee-script'
Plugin 'slim-template/vim-slim'
@ -108,12 +118,49 @@ let g:nerdtree_tabs_open_on_gui_startup = 0
let g:nerdtree_tabs_autoclose = 0
" Snipmate
imap <S-Enter> <Plug>snipMateNextOrTrigger
" imap <S-Enter> <Plug>snipMateNextOrTrigger
" let g:snipMate = get(g:, 'snipMate', {}) " Allow for vimrc re-sourcing
" YouCompleteMe
" let g:ycm_key_list_select_completion = ['<TAB>']
" let g:ycm_key_list_previous_completion = ['<S-TAB>']
" Neocomplete
let g:acp_enableAtStartup = 0
let g:neocomplete#enable_at_startup = 1
let g:neocomplete#enable_smart_case = 1
let g:neocomplete#max_list = 10
let g:neocomplete#sources#syntax#min_keyword_length = 3
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete
" Neocomplete snippets
imap <C-k> <Plug>(neosnippet_expand_or_jump)
smap <C-k> <Plug>(neosnippet_expand_or_jump)
xmap <C-k> <Plug>(neosnippet_expand_target)
" SuperTab like snippets behavior.
" Note: It must be "imap" and "smap". It uses <Plug> mappings.
imap <C-k> <Plug>(neosnippet_expand_or_jump)
"imap <expr><TAB>
" \ pumvisible() ? "\<C-n>" :
" \ neosnippet#expandable_or_jumpable() ?
" \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
" For conceal markers.
if has('conceal')
set conceallevel=2 concealcursor=niv
endif
" Enable snipMate compatibility feature.
let g:neosnippet#enable_snipmate_compatibility = 1
"
" Tell Neosnippet about the other snippets
let g:neosnippet#snippets_directory='~/.vim/bundle/vim-snippets/snippets'
" Syntastic
" let g:syntastic_ruby_checkers = ['mri']
"let g:syntastic_shell = "/bin/sh"
@ -128,8 +175,6 @@ imap <S-Enter> <Plug>snipMateNextOrTrigger
"let g:syntastic_check_on_open = 0
"let g:syntastic_check_on_wq = 1
let g:snipMate = get(g:, 'snipMate', {}) " Allow for vimrc re-sourcing
" Ack
let g:ack_use_dispatch = 0
@ -155,13 +200,15 @@ au BufRead,BufNewFile *.vue setf coffee " riotjs tags
" silent! nmap <C-f> :FufLine<CR>
" silent! nmap <C-g> :FufCoverageFile<CR>
"let g:airline_theme = 'gotham'
"let g:airline_left_sep = '▶' " Set custom left separator
"let g:airline_right_sep = '◀' " Set custom right separator
"let g:airline#extensions#tabline#enabled = 1 " Enable airline for tab-bar
"
" Airline
let g:airline_theme = 'solarized'
let g:airline_section_y = '' " Don't display encoding
let g:airline_left_sep = '▶' " Set custom left separator
let g:airline_right_sep = '◀' " Set custom right separator
"let g:airline#extensions#tabline#enabled = 1 " Enable airline for tab-bar
"let g:airline#extensions#tabline#show_buffers = 0 " Don't display buffers in tab-bar with single tab
"let g:airline#extensions#tabline#fnamemod = ':t' " Display only filename in tab
"let g:airline_section_y = '' " Don't display encoding
"let g:airline#extensions#tabline#fnamemod = ':t' " Display only filename in tab
" Vim gitgutter
let g:gitgutter_sign_added = '█'
@ -197,6 +244,7 @@ autocmd BufWritePre *.* :call <SID>StripTrailingWhitespaces()
set noswapfile
set background=dark
" colorscheme coldrails
set t_Co=256
colorscheme solarized
call togglebg#map("<F5>")
@ -223,6 +271,12 @@ set incsearch
set hlsearch " Highlight searches
set ruler " Ruler on
set colorcolumn=+1
set re=1
" set ttyfast
" set lazyredraw
set nocp incsearch
" Search
" set ignorecase " Ignore case of searches
@ -255,21 +309,21 @@ set laststatus=2 " Always show status line.
set list " show invisibles
set listchars=tab:▸\ ,eol
if has("gui_running")
set go-=m " remove menu bar
set go-=T " remove toolbar
set go-=r " remove right-hand scroll bar
set go-=e " remove gui tabs
set go-=L " remove left-hand scroll bar
" inoremap <Up> <NOP>
" inoremap <Down> <NOP>
" inoremap <Left> <NOP>
" inoremap <Right> <NOP>
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>
let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
" Open new split panes to right and bottom, which feels more natural
set splitbelow
set splitright
set guifont=Terminus\ 10
" gvim specific
set mousehide " Hide mouse after chars typed
set mouse-=a " Mouse in all modes
end " end for guichecking if
" Quicker window movement
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l

2
.zshrc
View File

@ -193,7 +193,7 @@ alias foreman="bundle exec foreman"
alias sidekiq="bundle exec sidekiq"
alias cap="bundle exec cap"
alias mina="bundle exec mina"
alias heroku="~/Soft/heroku-client/bin/heroku"
alias heroku="$HOME/Soft/heroku-client/bin/heroku"
alias rgrep="grep --exclude-dir=Godeps --exclude-dir=node_modules --exclude-dir=log --exclude-dir=vendor --exclude-dir=tmp --exclude-dir=public --exclude-dir=.git --exclude=.swp -rn"
alias vagrant="BUNDLE_GEMFILE=$HOME/Soft/vagrant/Gemfile bundle exec vagrant"
alias vimb="HTTP_PROXY='http://localhost:8118' vimb"