From 9bf2bf4f8a09977bf9bd45e1ee8a5e518075d93d Mon Sep 17 00:00:00 2001 From: Ambrevar Date: Mon, 29 Oct 2012 15:29:54 +0100 Subject: [PATCH] FreeBSD support: beginning. --- .config/awesome/rc.lua | 848 +++++++++++++++++++++-------------------- .homeinit | 7 +- .shell.d/alias_freebsd | 30 ++ .shell.d/alias_pacman | 42 ++ .shell.d/alias_rc | 109 ++---- .shell.d/main_rc | 24 +- .zshrc | 7 +- 7 files changed, 568 insertions(+), 499 deletions(-) create mode 100644 .shell.d/alias_freebsd create mode 100644 .shell.d/alias_pacman diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua index cd7c70a8..65907cc1 100644 --- a/.config/awesome/rc.lua +++ b/.config/awesome/rc.lua @@ -1,8 +1,13 @@ -------------------------------------------------------------------------------- -- Awesome configuration --- Date 2012-06-21 +-- Date 2012-10-28 -------------------------------------------------------------------------------- +-- Get OS +local f = io.popen("uname") +local ostype = f:read("*a") +f:close() + -- Standard awesome library require("awful") require("awful.autofocus") @@ -15,10 +20,16 @@ require("beautiful") require("naughty") -- Widget library -vicious = require("vicious") +--naughty.notify({ preset = naughty.config.presets.critical, +-- title = "aze", +-- text = err }) + +if ostype == "Linux" then + vicious = require("vicious") +end -------------------------------------------------------------------------------- --- {{{ Error handling +-- 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) @@ -42,10 +53,6 @@ do in_error = false end) end --- }}} - - - -------------------------------------------------------------------------------- -- Themes define colours, icons, and wallpapers @@ -55,6 +62,9 @@ end beautiful.init(awful.util.getdir("config") .. "/themes/custom/theme.lua") -------------------------------------------------------------------------------- +-- Misc +-------------------------------------------------------------------------------- + -- 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, @@ -63,56 +73,51 @@ beautiful.init(awful.util.getdir("config") .. "/themes/custom/theme.lua") modkey = "Mod4" -- Table of layouts to cover with awful.layout.inc, order matters. -layouts = - { +layouts = { 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, awful.layout.suit.floating - } - -- }}} +} - -- {{{ 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]) - -- tags[s] = awful.tag({ " 1 ", " 2 "," 3 "," 4 ", " 5. Factory ", " 6. Music ", "7. Mail " }, s, layouts[1]) - tags[s] = awful.tag({ " 1 ", " 2 "," 3 "," 4 ", " 5 ⚒ ", " 6 ♫ ", "7 ✉ " }, s, layouts[1]) - end - -- }}} +-- 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 ✉ " }, s, layouts[1]) +end - -------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +-- Wibox +-------------------------------------------------------------------------------- - -- {{{ Wibox +-- Separator +separator = " | " +separator_date = widget({ type = "textbox" }) +separator_date.text = " |" - -- Separator - separator = " | " - separator_date = widget({ type = "textbox" }) - separator_date.text = " |" +-- Systray +systraywidget = widget({ type = "systray" }) - -- Systray - systraywidget = widget({ type = "systray" }) +-- Clock +clockwidget = awful.widget.textclock({ align = "right" }) - -- Clock - clockwidget = awful.widget.textclock({ align = "right" }) +cpuwidget = widget({ type = "textbox" }) +netwidget = widget({ type = "textbox" }) +volmwidget = widget({ type = "textbox" }) +batwidget = widget({ type = "textbox" }) + +if ostype == "Linux" then -- CPU - cpuwidget = widget({ type = "textbox" }) vicious.register(cpuwidget, vicious.widgets.cpu, separator .. 'CPU $1%') -- Net - netwidget = widget({ type = "textbox" }) - networks = { "eth0", "wlan0" } + local networks = { "eth0", "wlan0" } vicious.register(netwidget, vicious.widgets.net, function (widget, args) for _,device in pairs(networks) do @@ -124,7 +129,6 @@ layouts = end, 3) -- Volume - volmwidget = widget({ type = "textbox" }) vicious.register(volmwidget, vicious.widgets.volume, separator .. "Master $1% $2 ", 1, "Master") -- PCM may not be available all the time on every machine. If PCM is toggled -- after awesome has been started, you'll need to reload the configuration. @@ -136,9 +140,8 @@ layouts = vicious.register(volpwidget, vicious.widgets.volume, "PCM $1%", 1, "PCM") end volpf:close() - + -- Battery - batwidget = widget({ type = "textbox" }) local batf = io.popen("ls '/sys/class/power_supply' 2>/dev/null") local batl = batf:read("*a") local batlimit = 10 @@ -163,419 +166,432 @@ layouts = 60, "BAT0") end batf:close() +end - -- 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() +-- 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 - 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 = { - { - mylayoutbox[s], - mytaglist[s], - mypromptbox[s], - layout = awful.widget.layout.horizontal.leftright - }, - s == 1 and systraywidget or nil, - clockwidget, - separator_date, - cpuwidget, - netwidget, - volpwidget, - volmwidget, - batwidget, - mytasklist[s], - layout = awful.widget.layout.horizontal.rightleft - } - end - -- }}} - - -------------------------------------------------------------------------------- - -- CUSTOM - -------------------------------------------------------------------------------- - - -- Mouse control - -- set the desired pixel coordinates: - local safeCoords = {x=0, y=0} - -- Flag to tell Awesome whether to do this at startup. - local moveMouseOnStartup = true - - -- Simple function to move the mouse to the coordinates set above. - local function moveMouseAway(x_co, y_co) - mouse.coords({ x=x_co, y=y_co }) - end - - local function moveMouse(x_co, y_co) - t=mouse.coords() - mouse.coords( {x = t.x + x_co, y = t.y + y_co} ) - end - - -- Optionally move the mouse when rc.lua is read (startup) - if moveMouseOnStartup then - moveMouseAway(safeCoords.x, safeCoords.y) - end - - -------------------------------------------------------------------------------- - -- Key bindings - -- Note that some laptop will not work when pressing Super+Fn. - -- Therefore we only use Fn and Mod1+Fn. - -------------------------------------------------------------------------------- - term = "urxvt" - termcmd = term .. " -e " - - globalkeys = awful.util.table.join( - -- Terminal - awful.key({ modkey, }, "Return", function () awful.util.spawn(term) end), - awful.key({ }, "XF86Terminal", function () awful.util.spawn(term) end), - - -- Calc - awful.key({ modkey, }, "b", function () awful.util.spawn(termcmd .. "calc") end), - awful.key({ }, "XF86Calculator", function () awful.util.spawn(termcmd .. "calc") end), - - -- File browser - awful.key({ modkey, }, "e", function () awful.util.spawn(termcmd .. "ranger") end), - awful.key({ }, "XF86Explorer", function () awful.util.spawn(termcmd .. "ranger") end), - awful.key({ }, "XF86MyComputer", function () awful.util.spawn(termcmd .. "ranger") end), - - -- Screen lock - awful.key({ modkey, }, "s", function () awful.util.spawn("slock") end), - awful.key({ }, "XF86ScreenSaver", function () awful.util.spawn("slock") end), - awful.key({ }, "XF86Sleep", function () awful.util.spawn("slock") end), - awful.key({ }, "XF86Standby", function () awful.util.spawn("slock") end), - - -- PDF Reader - awful.key({ modkey, }, "p", function () awful.util.spawn("zathura") end), - - -- Mail user agent - awful.key({ modkey, }, "m", function () awful.util.spawn(termcmd .. "mutt") end), - awful.key({ }, "XF86Mail", function () awful.util.spawn(termcmd .. "mutt") end), - - -- Web browser - awful.key({ modkey, }, "w", function () awful.util.spawn_with_shell("luakit 2>>/tmp/luakit.log") end), - awful.key({ }, "XF86WWW", function () awful.util.spawn_with_shell("luakit 2>>/tmp/luakit.log") end), - - -- Music player - awful.key({ modkey, }, "a", function () awful.util.spawn(termcmd .. "cmus") end), - awful.key({ modkey, "Mod1" }, "a", function () awful.util.spawn("cmus-remote -u") end), - awful.key({ modkey, "Shift" }, "a", function () awful.util.spawn("cmus-remote -n") end), - awful.key({ modkey, "Control" }, "a", function () awful.util.spawn("cmus-remote -r") end), - - awful.key({ }, "XF86AudioMedia", function () awful.util.spawn(termcmd .. "cmus") end), - awful.key({ }, "XF86AudioPlay", function () awful.util.spawn("cmus-remote -u") end), - awful.key({ }, "XF86AudioNext", function () awful.util.spawn("cmus-remote -n") end), - awful.key({ }, "XF86AudioPrev", function () awful.util.spawn("cmus-remote -r") end), - - -- Screenshot - awful.key({}, "Print", function () awful.util.spawn("scrot 'screen-%Y-%m-%d-%H%M%S.png' -e 'mkdir -p ~/temp && mv $f ~/temp/'") end), - - -- Sound Volume - awful.key({ modkey, }, "KP_Subtract", function () awful.util.spawn("amixer set Master 5%- >/dev/null") end), - awful.key({ modkey, }, "KP_Add", function () awful.util.spawn("amixer set Master 5%+ >/dev/null") end), - awful.key({ modkey, }, "KP_Enter", function () awful.util.spawn("amixer set Master toggle >/dev/null") end), - awful.key({ modkey, "Mod1" }, "KP_Subtract", function () awful.util.spawn("amixer set PCM 5%- >/dev/null") end), - awful.key({ modkey, "Mod1" }, "KP_Add", function () awful.util.spawn("amixer set PCM 5%+ >/dev/null") end), - - awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer set Master 5%+ >/dev/null") end), - awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer set Master 5%- >/dev/null") end), - awful.key({ }, "XF86AudioMute", function () awful.util.spawn("amixer set Master toggle >/dev/null") end), - awful.key({ "Mod1" }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer set PCM 5%+ >/dev/null") end), - awful.key({ "Mod1" }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer set PCM 5%- >/dev/null") end), - - -- Touchpad - awful.key({ }, "XF86TouchpadToggle", function () os.execute("synclient TouchpadOff=`synclient -l | grep -c 'TouchpadOff.*=.*0'`") end), - awful.key({ }, "XF86Tools", function () os.execute("synclient TouchpadOff=`synclient -l | grep -c 'TouchpadOff.*=.*0'`") end), - - -- Mouse control - -- Bind ''Meta4+Ctrl+m'' to move the mouse to the coordinates set above. - -- This is useful if you needed the mouse for something and now want it out of the way. - awful.key({ modkey, "Control" }, "m", function() moveMouseAway(safeCoords.x, safeCoords.y) end), - -- awful.key({ modkey, "Control" }, "h", function() moveMouse(-5, 0) end), - -- awful.key({ modkey, "Control" }, "j", function() moveMouse(0, 5) end), - -- awful.key({ modkey, "Control" }, "k", function() moveMouse(0, -5) end), - -- awful.key({ modkey, "Control" }, "l", function() moveMouse(5, 0) end), - - -------------------------------------------------------------------------------- - -- Awesome specific - -------------------------------------------------------------------------------- - - -- Standard program - awful.key({ modkey, "Control" }, "r", awesome.restart), - awful.key({ modkey, "Shift" }, "q", awesome.quit), - - -- Tags - awful.key({ modkey }, "Prior", awful.tag.viewprev ), - awful.key({ modkey }, "Next", awful.tag.viewnext ), - awful.key({ modkey }, "Escape", awful.tag.history.restore), - - -- Layout select and switch - awful.key({ modkey }, "Up", function () awful.client.swap.byidx( 1) end), - awful.key({ modkey }, "Down", function () awful.client.swap.byidx( -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() + -- This will also un-minimize + -- the client, if needed + client.focus = c + c:raise() end end), - awful.key({ modkey }, "Right", + awful.button({ }, 3, function () - awful.client.focus.byidx( 1) + 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.key({ modkey }, "Left", + + awful.button({ }, 5, function () awful.client.focus.byidx(-1) if client.focus then client.focus:raise() end - end), + end)) - -- Layout resize - awful.key({ modkey, "Mod1" }, "Left", function () awful.tag.incmwfact(-0.05) end), - awful.key({ modkey, "Mod1" }, "Right", function () awful.tag.incmwfact(0.05) end), - awful.key({ modkey, "Mod1" }, "Up", function () awful.client.incwfact(0.05) end), - awful.key({ modkey, "Mod1" }, "Down", function () awful.client.incwfact(-0.05) end), +for s = 1, screen.count() do + -- Create a promptbox for each screen + mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright }) - -- Floating clients resize - awful.key({ modkey , "Mod1"}, "j", function () awful.client.moveresize( 20, 20, -40, -40) end), - awful.key({ modkey , "Mod1"}, "k", function () awful.client.moveresize(-20, -20, 40, 40) end), + -- 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) - -- Layout organization - awful.key({ modkey, "Control" }, "Left", function () awful.tag.incnmaster( 1) end), - awful.key({ modkey, "Control" }, "Right", function () awful.tag.incnmaster(-1) end), - awful.key({ modkey, "Control" }, "Up", function () awful.tag.incncol( 1) end), - awful.key({ modkey, "Control" }, "Down", function () awful.tag.incncol(-1) end), + -- Create a tasklist widget + mytasklist[s] = awful.widget.tasklist(function(c) + return awful.widget.tasklist.label.currenttags(c, s) + end, mytasklist.buttons) - awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end), - awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end), + -- Create the wibox + mywibox[s] = awful.wibox({ position = "top", screen = s }) + -- Add widgets to the wibox - order matters + mywibox[s].widgets = { + { + mylayoutbox[s], + mytaglist[s], + mypromptbox[s], + layout = awful.widget.layout.horizontal.leftright + }, + s == 1 and systraywidget or nil, + clockwidget, + separator_date, + cpuwidget, + netwidget, + volpwidget, + volmwidget, + batwidget, + mytasklist[s], + layout = awful.widget.layout.horizontal.rightleft + } +end - -- Multi screen - awful.key({ modkey, "Mod1" }, "Next", function () awful.screen.focus_relative( 1) end), - awful.key({ modkey, "Mod1" }, "Prior", function () awful.screen.focus_relative(-1) end), +-------------------------------------------------------------------------------- +-- CUSTOM +-------------------------------------------------------------------------------- +-- Mouse control +-- set the desired pixel coordinates: +local safeCoords = {x=0, y=0} +-- Flag to tell Awesome whether to do this at startup. +local moveMouseOnStartup = true - -- Prompt - awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end), +-- Simple function to move the mouse to the coordinates set above. +local function moveMouseAway(x_co, y_co) + mouse.coords({ x=x_co, y=y_co }) +end - -- Lua code - 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) - ) +local function moveMouse(x_co, y_co) + t=mouse.coords() + mouse.coords( {x = t.x + x_co, y = t.y + y_co} ) +end - -- Client keys - 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), +-- Optionally move the mouse when rc.lua is read (startup) +if moveMouseOnStartup then + moveMouseAway(safeCoords.x, safeCoords.y) +end - - -- Floating clients move - awful.key({ modkey }, "j", function () awful.client.moveresize( 0, 20, 0, 0) end), - awful.key({ modkey }, "k", function () awful.client.moveresize( 0, -20, 0, 0) end), - awful.key({ modkey }, "h", function () awful.client.moveresize(-20, 0, 0, 0) end), - awful.key({ modkey }, "l", function () awful.client.moveresize( 20, 0, 0, 0) end), +-------------------------------------------------------------------------------- +-- Key bindings +-- Note that some laptop will not work when pressing Super+Fn. +-- Therefore we only use Fn and Mod1+Fn. +-------------------------------------------------------------------------------- +term = "urxvt" +termcmd = term .. " -e " - -- 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, "Control" }, "n", awful.client.restore), +globalkeys = awful.util.table.join( + -- Terminal + awful.key({ modkey, }, "Return", function () awful.util.spawn(term) end), + awful.key({ }, "XF86Terminal", function () awful.util.spawn(term) end), - awful.key({ modkey, "Mod1" }, "m", - function (c) - c.maximized_horizontal = not c.maximized_horizontal - c.maximized_vertical = not c.maximized_vertical - end) - ) + -- Calc + awful.key({ modkey, }, "b", function () awful.util.spawn(termcmd .. "calc") end), + awful.key({ }, "XF86Calculator", function () awful.util.spawn(termcmd .. "calc") 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 + -- File browser + awful.key({ modkey, }, "e", function () awful.util.spawn(termcmd .. "ranger") end), + awful.key({ }, "XF86Explorer", function () awful.util.spawn(termcmd .. "ranger") end), + awful.key({ }, "XF86MyComputer", function () awful.util.spawn(termcmd .. "ranger") 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, "Mod1" }, "#" .. 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 + -- Screen lock + awful.key({ modkey, }, "s", function () awful.util.spawn("slock") end), + awful.key({ }, "XF86ScreenSaver", function () awful.util.spawn("slock") end), + awful.key({ }, "XF86Sleep", function () awful.util.spawn("slock") end), + awful.key({ }, "XF86Standby", function () awful.util.spawn("slock") 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)) + -- PDF Reader + awful.key({ modkey, }, "p", function () awful.util.spawn("zathura") end), - -- Set keys - root.keys(globalkeys) - -- }}} + -- Mail user agent + awful.key({ modkey, }, "m", function () awful.util.spawn(termcmd .. "mutt") end), + awful.key({ }, "XF86Mail", function () awful.util.spawn(termcmd .. "mutt") end), + + -- Web browser + awful.key({ modkey, }, "w", function () awful.util.spawn_with_shell("luakit 2>>/tmp/luakit.log") end), + awful.key({ }, "XF86WWW", function () awful.util.spawn_with_shell("luakit 2>>/tmp/luakit.log") end), + + -- Music player + awful.key({ modkey, }, "a", function () awful.util.spawn(termcmd .. "cmus") end), + awful.key({ modkey, "Mod1" }, "a", function () awful.util.spawn("cmus-remote -u") end), + awful.key({ modkey, "Shift" }, "a", function () awful.util.spawn("cmus-remote -n") end), + awful.key({ modkey, "Control" }, "a", function () awful.util.spawn("cmus-remote -r") end), + + awful.key({ }, "XF86AudioMedia", function () awful.util.spawn(termcmd .. "cmus") end), + awful.key({ }, "XF86AudioPlay", function () awful.util.spawn("cmus-remote -u") end), + awful.key({ }, "XF86AudioNext", function () awful.util.spawn("cmus-remote -n") end), + awful.key({ }, "XF86AudioPrev", function () awful.util.spawn("cmus-remote -r") end), + + -- Screenshot + awful.key({}, "Print", function () awful.util.spawn("scrot 'screen-%Y-%m-%d-%H%M%S.png' -e 'mkdir -p ~/temp && mv $f ~/temp/'") end), + + -- Sound Volume + awful.key({ modkey, }, "KP_Subtract", function () awful.util.spawn("amixer set Master 5%- >/dev/null") end), + awful.key({ modkey, }, "KP_Add", function () awful.util.spawn("amixer set Master 5%+ >/dev/null") end), + awful.key({ modkey, }, "KP_Enter", function () awful.util.spawn("amixer set Master toggle >/dev/null") end), + awful.key({ modkey, "Mod1" }, "KP_Subtract", function () awful.util.spawn("amixer set PCM 5%- >/dev/null") end), + awful.key({ modkey, "Mod1" }, "KP_Add", function () awful.util.spawn("amixer set PCM 5%+ >/dev/null") end), + + awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer set Master 5%+ >/dev/null") end), + awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer set Master 5%- >/dev/null") end), + awful.key({ }, "XF86AudioMute", function () awful.util.spawn("amixer set Master toggle >/dev/null") end), + awful.key({ "Mod1" }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer set PCM 5%+ >/dev/null") end), + awful.key({ "Mod1" }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer set PCM 5%- >/dev/null") end), + + -- Touchpad + awful.key({ }, "XF86TouchpadToggle", function () os.execute("synclient TouchpadOff=`synclient -l | grep -c 'TouchpadOff.*=.*0'`") end), + awful.key({ }, "XF86Tools", function () os.execute("synclient TouchpadOff=`synclient -l | grep -c 'TouchpadOff.*=.*0'`") end), + + -- Mouse control + -- Bind ''Meta4+Ctrl+m'' to move the mouse to the coordinates set above. + -- This is useful if you needed the mouse for something and now want it out of the way. + awful.key({ modkey, "Control" }, "m", function() moveMouseAway(safeCoords.x, safeCoords.y) end), + -- awful.key({ modkey, "Control" }, "h", function() moveMouse(-5, 0) end), + -- awful.key({ modkey, "Control" }, "j", function() moveMouse(0, 5) end), + -- awful.key({ modkey, "Control" }, "k", function() moveMouse(0, -5) end), + -- awful.key({ modkey, "Control" }, "l", function() moveMouse(5, 0) end), -------------------------------------------------------------------------------- - -- {{{ 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 } }, + -- Awesome specific + -------------------------------------------------------------------------------- - { rule = { class = "MPlayer" }, - properties = { floating = true } }, - { rule = { class = "mplayer2" }, - properties = { floating = true } }, + -- Standard program + awful.key({ modkey, "Control" }, "r", awesome.restart), + awful.key({ modkey, "Shift" }, "q", awesome.quit), - { rule = { class = "pinentry" }, - properties = { floating = true } }, + -- Tags + awful.key({ modkey }, "Prior", awful.tag.viewprev ), + awful.key({ modkey }, "Next", awful.tag.viewnext ), + awful.key({ modkey }, "Escape", awful.tag.history.restore), - { rule = { class = "Gimp" }, - properties = { floating = false } }, + -- Layout select and switch + awful.key({ modkey }, "Up", function () awful.client.swap.byidx( 1) end), + awful.key({ modkey }, "Down", function () awful.client.swap.byidx( -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), - -- Flash workaround. Does not work? - { rule = { instance = "plugin-container" }, - properties = { floating = true } }, + awful.key({ modkey }, "Right", + function () + awful.client.focus.byidx( 1) + if client.focus then client.focus:raise() end + end), + awful.key({ modkey }, "Left", + function () + awful.client.focus.byidx(-1) + if client.focus then client.focus:raise() end + end), - { rule = { instance = "exe" }, - properties = { floating = true } }, + -- Layout resize + awful.key({ modkey, "Mod1" }, "Left", function () awful.tag.incmwfact(-0.05) end), + awful.key({ modkey, "Mod1" }, "Right", function () awful.tag.incmwfact(0.05) end), + awful.key({ modkey, "Mod1" }, "Up", function () awful.client.incwfact(0.05) end), + awful.key({ modkey, "Mod1" }, "Down", function () awful.client.incwfact(-0.05) end), - -- Only works for terminal with WM_COMMAND property? - -- Does not work with LXTerminal. - { rule = { name = "cmus"}, - properties = { tag = tags[1][6] } }, - { rule = { name = "mutt"}, - properties = { tag = tags[1][7] } }, + -- Floating clients resize + awful.key({ modkey , "Mod1"}, "j", function () awful.client.moveresize( 20, 20, -40, -40) end), + awful.key({ modkey , "Mod1"}, "k", function () awful.client.moveresize(-20, -20, 40, 40) end), - } - -- }}} + -- Layout organization + awful.key({ modkey, "Control" }, "Left", function () awful.tag.incnmaster( 1) end), + awful.key({ modkey, "Control" }, "Right", function () awful.tag.incnmaster(-1) end), + awful.key({ modkey, "Control" }, "Up", function () awful.tag.incncol( 1) end), + awful.key({ modkey, "Control" }, "Down", function () awful.tag.incncol(-1) end), - -- {{{ 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 }) + awful.key({ modkey, }, "space", function () awful.layout.inc(layouts, 1) end), + awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(layouts, -1) end), - -- 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) + -- Multi screen + awful.key({ modkey, "Mod1" }, "Next", function () awful.screen.focus_relative( 1) end), + awful.key({ modkey, "Mod1" }, "Prior", function () awful.screen.focus_relative(-1) 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 + -- Prompt + awful.key({ modkey }, "r", function () mypromptbox[mouse.screen]:run() end), + + -- Lua code + 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) + ) + +-- Client keys +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), + + + -- Floating clients move + awful.key({ modkey }, "j", function () awful.client.moveresize( 0, 20, 0, 0) end), + awful.key({ modkey }, "k", function () awful.client.moveresize( 0, -20, 0, 0) end), + awful.key({ modkey }, "h", function () awful.client.moveresize(-20, 0, 0, 0) end), + awful.key({ modkey }, "l", function () awful.client.moveresize( 20, 0, 0, 0) 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, "Control" }, "n", awful.client.restore), + + awful.key({ modkey, "Mod1" }, "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, "Mod1" }, "#" .. 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 = "mplayer2" }, + properties = { floating = true } }, + + { rule = { class = "pinentry" }, + properties = { floating = true } }, + + { rule = { class = "Gimp" }, + properties = { floating = false } }, + + -- Flash workaround. Does not work? + { rule = { instance = "plugin-container" }, + properties = { floating = true } }, + + { rule = { instance = "exe" }, + properties = { floating = true } }, + + -- Only works for terminal with WM_COMMAND property? + -- Does not work with LXTerminal. + { rule = { name = "cmus"}, + properties = { tag = tags[1][6] } }, + { rule = { name = "mutt"}, + properties = { tag = tags[1][7] } }, + +} + +-------------------------------------------------------------------------------- +-- 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 + 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) - -- }}} +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/.homeinit b/.homeinit index 37146c11..e1b19133 100755 --- a/.homeinit +++ b/.homeinit @@ -16,6 +16,9 @@ ## The following is used as first-run setup. SOURCEDIR="${HOME}/personal/dataperso" +[ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config" +[ -z "$XDG_DATA_HOME" ] && XDG_DATA_HOME="$HOME/.local/share" +[ -z "$XDG_DATA_DIRS" ] && XDG_DATA_DIRS="/usr/local/share" ## Mutt echo "==> Mutt" @@ -30,8 +33,8 @@ echo ## Awesome echo "==> Awesome" -THEME_DEST="${HOME}/.config/awesome/themes/custom" -THEME_SOURCE="/usr/share/awesome/themes/default/" +THEME_DEST="${XDG_CONFIG_HOME}/awesome/themes/custom" +THEME_SOURCE="${XDG_DATA_DIRS}/awesome/themes/default/" if [ ! -e "${THEME_DEST}/background.png" ]; then [ -d "${THEME_SOURCE}" ] && cp -rn ${THEME_SOURCE}/* "${THEME_DEST}" fi diff --git a/.shell.d/alias_freebsd b/.shell.d/alias_freebsd new file mode 100644 index 00000000..6dc5a2de --- /dev/null +++ b/.shell.d/alias_freebsd @@ -0,0 +1,30 @@ +## -*- mode:sh -*- # + +alias pa='sudo pkg_add -r' +alias pr='sudo pkg_delete' +alias pi='pkg_info -RrcdsD -l "::"' +alias pil='pkg_info -L' + +## Search +alias pis='pkg_info -Qox' +alias pvs='pkg_version -Is' +alias psr='pkg_search -r' + +## Out-of-date packages. +alias pv='pkg_version -Il "<"' + +## Port tree +alias mic='sudo make install clean' +alias mc='sudo make config' + +ms() +{ + find /usr/ports -iname "*$1*" +} + +mcd() +{ + local DEST=$(find /usr/ports -iname "*$1*" | head -n1) + echo $DEST + cd "$DEST" +} diff --git a/.shell.d/alias_pacman b/.shell.d/alias_pacman new file mode 100644 index 00000000..f1e0ff7e --- /dev/null +++ b/.shell.d/alias_pacman @@ -0,0 +1,42 @@ +## -*- mode:sh -*- # + +PACMAN_FRONTEND='pacman' + + ## Use of Pacman-Color +if [ -e "/usr/bin/pacman-color" ]; then + PACMAN_FRONTEND='pacman-color' + + if [ "zsh" = "$SHELL_CURRENT" ]; then + compdef _pacman pacman-color + elif [ "bash" = "$SHELL_CURRENT" ]; then + complete -o default -o nospace -F _pacman pacman-color + fi +fi + + ## Pacman aliases +if [ "$PACMAN_FRONTEND" = "pacman" ]; then + alias pc='sudo pacman -Sc' + alias pi='sudo pacman -S --needed' + alias pqi='pacman -Qi' + alias pql='pacman -Ql' + alias pqo='pacman -Qo' + alias pqs='pacman -Qs' + alias pr='sudo pacman -Rs' + alias psi='pacman -Si' + alias pss='pacman -Ss' + alias pu='sudo pacman -Syu' +fi + +if [ "$PACMAN_FRONTEND" = "pacman-color" ]; then + alias pc='sudo pacman-color -Sc' + alias pi='sudo pacman -S --needed' + alias pqi='pacman-color -Qi' + alias pql='pacman-color -Ql' + alias pqo='pacman-color -Qo' + alias pqs='pacman-color -Qs' + alias pr='sudo pacman-color -Rs' + alias psi='pacman-color -Si' + alias pss='pacman-color -Ss' + alias pu='sudo pacman-color -Syu' +fi + diff --git a/.shell.d/alias_rc b/.shell.d/alias_rc index 5c136fbb..aceeb61e 100644 --- a/.shell.d/alias_rc +++ b/.shell.d/alias_rc @@ -1,7 +1,7 @@ ## -*- mode:sh -*- # ################################################################################ ## Shell Config -- Alias Definitions. -## Date 2012-07-02 +## Date 2012-10-29 ################################################################################ ##============================================================================== @@ -13,12 +13,10 @@ if [ "bash" = "$SHELL_CURRENT" ]; then alias ..='cd ..' - alias esrc='$EDITOR ~/.bashrc' alias ssrc='source ~/.bashrc' fi if [ "zsh" = "$SHELL_CURRENT" ]; then - alias esrc='$EDITOR ~/.zshrc' alias ssrc='source ~/.zshrc' fi @@ -26,15 +24,22 @@ fi ##============================================================================== ## 'ls' redefinition -alias ls='ls --color=auto -F -v' +alias ls='ls -F' + +## GNU extras. +if [ "$OSTYPE" = "linux-gnu" ]; then + alias ls='ls --color=auto -v --group-directories-first' +else + alias ls='ls -G' +fi ## Listing aliases. alias l='ls -1' -alias la='ls -lAh --group-directories-first' # Hidden files -alias lc='ls -ltcrh --group-directories-first' # by change time -alias lk='ls -lSrh --group-directories-first' # by size -alias ll='ls -lh --group-directories-first' # Detailed view with human readable values. -alias lx='ls -lXh --group-directories-first' # sort by extension +alias la='ls -lAh' # Hidden files +alias lc='ls -ltcrh' # Sort by change time +alias lk='ls -lSrh' # Sort by size +alias ll='ls -lh' # Detailed view with human readable values. +alias lx='ls -lXh' # Sort by extension ## Misc alias cp="cp -i" # confirm before overwriting something @@ -42,22 +47,27 @@ alias xlx='xrdb -load ~/.Xresources' alias grep='grep --color=auto' ## Emacs -if [ -e "/usr/bin/emacs" ]; then +type emacs > /dev/null +if [ $? ]; then alias em='emacsclient -a "" -t' - alias emacs-reload="emacsclient -e '(kill-emacs)' >/dev/null 2>&1; /usr/bin/emacs --daemon" + alias emacs-reload="emacsclient -e '(kill-emacs)' >/dev/null 2>&1; emacs --daemon" fi # List desktop applications. -alias applist='grep -r "^Name=" /usr/share/applications/* | cut -d'=' -f2| sort' +[ -d /usr/share/applications ] && XDG_APPS=($XDG_APPS /usr/share/applications) +[ -d /usr/local/share/applications ] && XDG_APPS=($XDG_APPS /usr/local/share/applications) +[ ${#XDG_APPS} -ne 0 ] && alias applist='grep -R "^Name=" $XDG_APPS | cut -d'=' -f2 | sort' ## Remove executable attribute. alias nox='find . -type f -exec chmod a-x {} \;' ## Get your external IP. -[ -e "/usr/bin/curl" ] && alias myip='curl ifconfig.me' +type curl > /dev/null +[ $? ] && alias myip='curl ifconfig.me' ## Network discovery. -[ -e "/usr/bin/nmap" ] && alias network-discover='nmap -sP "192.168.1.*"' +type nmap > /dev/null +[ $? ] && alias network-discover='nmap -sP "192.168.1.*"' ## Prevents accidentally clobbering files. alias mkdir='mkdir -p' @@ -71,19 +81,19 @@ alias echolibpath='echo -e ${LD_LIBRARY_PATH//:/\\n}' ## Shutdown / Reboot. ## If you do not want to get prompted for your password, configure sudo properly. -if [ -e "/usr/bin/dbus-send" ]; then +if [ "$OSTYPE" = "linux-gnu" ]; then alias halt='sudo halt' - alias reboot='sudo reboot' +else + alias halt='sudo halt -p' fi ## Start X and lock current terminal (press ENTER when back in terminal to prompt for password). -[ -e "/usr/bin/vlock" ] && alias sx='startx & vlock' - -## Screensaver -[ -e "/usr/bin/xscreensaver-command" ] && alias xss='xscreensaver-command --lock' +type vlock > /dev/null +[ $? ] && alias sx='startx & vlock' ## Zathura -- Fork to background. -[ -e "/usr/bin/zathura" ] && alias zat='zathura --fork' +type zathura > /dev/null +[ $? ] && alias zat='zathura --fork' ## Xrandr alias xmorphnone='xrandr --output $(xrandr | grep "\" | cut -f1 -d" ") --transform none' @@ -108,49 +118,12 @@ alias xmorphzi='xrandr --output $(xrandr | grep "\" | cut -f1 -d" ") ##============================================================================== ## Pacman aliases ##============================================================================== -if [ -e "/usr/bin/pacman" ] ; then +[ -e "/usr/bin/pacman" ] && . ~/.shell.d/alias_pacman - PACMAN_FRONTEND='pacman' - - ## Use of Pacman-Color - if [ -e "/usr/bin/pacman-color" ]; then - PACMAN_FRONTEND='pacman-color' - - if [ "zsh" = "$SHELL_CURRENT" ]; then - compdef _pacman pacman-color - elif [ "bash" = "$SHELL_CURRENT" ]; then - complete -o default -o nospace -F _pacman pacman-color - fi - fi - - ## Pacman aliases - if [ "$PACMAN_FRONTEND" = "pacman" ]; then - alias pc='sudo pacman -Sc' - alias pi='sudo pacman -S --needed' - alias pqi='pacman -Qi' - alias pql='pacman -Ql' - alias pqo='pacman -Qo' - alias pqs='pacman -Qs' - alias pr='sudo pacman -Rs' - alias psi='pacman -Si' - alias pss='pacman -Ss' - alias pu='sudo pacman -Syu' - fi - - if [ "$PACMAN_FRONTEND" = "pacman-color" ]; then - alias pc='sudo pacman-color -Sc' - alias pi='sudo pacman -S --needed' - alias pqi='pacman-color -Qi' - alias pql='pacman-color -Ql' - alias pqo='pacman-color -Qo' - alias pqs='pacman-color -Qs' - alias pr='sudo pacman-color -Rs' - alias psi='pacman-color -Si' - alias pss='pacman-color -Ss' - alias pu='sudo pacman-color -Syu' - fi - -fi +##============================================================================== +## FreeBSD aliases +##============================================================================== +[ "$(uname)" = "FreeBSD" ] && . ~/.shell.d/alias_freebsd ##============================================================================== ## TeXlive aliases @@ -162,13 +135,3 @@ if [ -d "/usr/local/texlive" ]; then alias tls="tlmgr search --global" alias tll="tlmgr show --list" fi - -##============================================================================== -## APT aliases -##============================================================================== - -if [ -e "/usr/bin/apt-get" ]; then - alias au='sudo apt-get update' - alias ac='sudo apt-get autoremove && sudo apt-get clean' - alias ai='sudo apt-get install' -fi diff --git a/.shell.d/main_rc b/.shell.d/main_rc index f4230ed1..77d72dae 100644 --- a/.shell.d/main_rc +++ b/.shell.d/main_rc @@ -19,8 +19,12 @@ if [ -d "${TEXDIR}" ]; then TEXFOLDER="${TEXDIR}/${TEXYEAR}/bin/${TEXDISTRO}/" if [ -d "${TEXFOLDER}" ]; then export PATH=${TEXFOLDER}:$PATH - export MANPATH=${TEXDIR}/${TEXYEAR}/texmf/doc/man:$MANPATH export INFOPATH=${TEXDIR}/${TEXYEAR}/texmf/doc/info:$INFOPATH + + ## BSD uses 'manpath' utility, so MANPATH variable may be empty. + if [ "$OSTYPE" = "linux-gnu" ]; then + export MANPATH=${TEXDIR}/${TEXYEAR}/texmf/doc/man:$MANPATH + fi fi unset TEXYEAR unset TEXDISTRO @@ -29,27 +33,32 @@ fi unset TEXDIR ## Enable color support of ls. -if [ "$TERM" != "dumb" ]; then +if [ "$TERM" != "dumb" ] && [ "$OSTYPE" = "linux-gnu" ]; then eval "`dircolors $HOME/.shell.d/dircolorsdb`" fi ## Terminal ## WARNING: this is always a bad idea! -# if [[ "$TERM" = "*rxvt*" ]]; then -# export TERM="rxvt-unicode" -# fi +if [[ "$TERM" = *rxvt* ]]; then + export TERM="rxvt-unicode-256color" +fi ## Make 'less' more friendly for non-text input files, see lesspipe(1). [ -x /usr/bin/lesspipe ] && eval "$(lesspipe)" ## Manpage. export MANPAGER="less -s" -export MANWIDTH=80 +if [ "$OSTYPE" = "linux-gnu" ]; then + export MANWIDTH=80 +else + export MANWIDTH=75 +fi ## Less config. -R is needed for lesspipe. export LESS=' -R ' ## Time display (with ls command for example) +## TODO: BSD version? export TIME_STYLE=+"|%Y-%m-%d %H:%M:%S|" ## System locale @@ -66,7 +75,8 @@ fi export EDITOR ## Internet Browser -[ -e "/usr/bin/luakit" ] && export BROWSER="luakit" +type luakit > /dev/null +[ $? ] && export BROWSER="luakit" ## Title ## If this is an xterm set the title to user@host:dir diff --git a/.zshrc b/.zshrc index c750560d..f33a57ea 100644 --- a/.zshrc +++ b/.zshrc @@ -7,7 +7,12 @@ ## Sourcing ##============================================================================== -SHELL_CURRENT="$(ps | awk -v shellpid=$$ '$0 ~ shellpid {print $4}')" +## TODO: is it possible to unify BSD and GNU here? +if [ "$OSTYPE" = "linux-gnu" ]; then + SHELL_CURRENT="$(ps | awk -v shellpid=$$ '$0 ~ shellpid {print $4}')" +else + SHELL_CURRENT="$(ps -c | awk -v shellpid=$$ '$0 ~ shellpid {print $5}')" +fi SHELL_DIR="$HOME/.shell.d" ## Should be sourced first.