Awesome: more flexible systray.

Ranger: svg support.
Shell: improved dircolors.
master
Ambrevar 2012-10-04 22:03:29 +02:00
parent 0b3de546c1
commit 4a50ebd6c4
4 changed files with 651 additions and 478 deletions

View File

@ -64,7 +64,7 @@ modkey = "Mod4"
-- Table of layouts to cover with awful.layout.inc, order matters.
layouts =
{
{
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
@ -77,53 +77,72 @@ layouts =
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
-- {{{ 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
-- }}}
end
-- }}}
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- {{{ Wibox
-- {{{ Wibox
-- Clock
clockwidget = awful.widget.textclock({ align = "right" })
-- Separator
separator = " | "
separator_date = widget({ type = "textbox" })
separator_date.text = " |"
-- Systray
systraywidget = widget({ type = "systray" })
-- Systray
systraywidget = widget({ type = "systray" })
-- CPU
cpuwidget = widget({ type = "textbox" })
vicious.register(cpuwidget, vicious.widgets.cpu, '<span color="#CC8F52">CPU $1%</span>')
-- Clock
clockwidget = awful.widget.textclock({ align = "right" })
-- Net
netwidget = widget({ type = "textbox" })
networks = { "eth0", "wlan0" }
vicious.register(netwidget, vicious.widgets.net,
-- CPU
cpuwidget = widget({ type = "textbox" })
vicious.register(cpuwidget, vicious.widgets.cpu, separator .. '<span color="#CC8F52">CPU $1%</span>')
-- Net
netwidget = widget({ type = "textbox" })
networks = { "eth0", "wlan0" }
vicious.register(netwidget, vicious.widgets.net,
function (widget, args)
for _,device in pairs(networks) do
value = tonumber(args["{".. device .." carrier}"])
if value ~= nil and value > 0 then
return '<span color="#CC9393">↓' .. args["{" .. device .. " down_kb}"] .. '</span> <span color="#7F9F7F">↑' .. args["{" .. device .. " up_kb}"] .. '</span>'
return separator .. '<span color="#CC9393">↓' .. args["{" .. device .. " down_kb}"] .. '</span> <span color="#7F9F7F">↑' .. args["{" .. device .. " up_kb}"] .. '</span>'
end
end
end, 3)
-- 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
if batl ~= "" then
-- 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.
-- If 'amixer' is not installed, status will never display.
local volpf = io.popen("amixer | grep PCM 2>/dev/null")
local volpl = volpf:read("*a")
if volpl ~= "" then
volpwidget = widget({ type = "textbox" })
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
if batl ~= "" then
--{{ Simple version (perf friendly)
-- vicious.register(batwidget, vicious.widgets.bat, '<span color="#73A9CD">$2%$1$3</span> | ', 60, "BAT0")
--{{ Complex version (time warning)
@ -136,44 +155,21 @@ if batl ~= "" then
and tonumber(string.sub(args[3],1,2)) == 0
and tonumber(string.sub(args[3],4,5)) <= batlimit
then
return '<span color="#FF0000">' .. args[2] .. '%' .. args[1] .. args[3] .. '</span>'
return separator .. '<span color="#FF0000">' .. args[2] .. '%' .. args[1] .. args[3] .. '</span>'
else
return '<span color="#73A9CD">' .. args[2] .. '%' .. args[1] .. args[3] .. '</span>'
return separator .. '<span color="#73A9CD">' .. args[2] .. '%' .. args[1] .. args[3] .. '</span>'
end
end,
60, "BAT0")
end
batf:close()
end
batf:close()
-- Volume
volmwidget = widget({ type = "textbox" })
vicious.register(volmwidget, vicious.widgets.volume, "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.
-- If 'amixer' is not installed, status will never display.
local volpf = io.popen("amixer | grep PCM 2>/dev/null")
local volpl = volpf:read("*a")
if volpl ~= "" then
volpwidget = widget({ type = "textbox" })
vicious.register(volpwidget, vicious.widgets.volume, "PCM $1%", 1, "PCM")
end
volpf:close()
-- Separator
separator = widget({ type = "textbox" })
separator.text = " | "
separatordate = widget({ type = "textbox" })
separatordate.text = " |"
separatorapps = widget({ type = "textbox" })
separatorapps.text = " "
-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
-- 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),
@ -181,8 +177,8 @@ mytaglist.buttons = awful.util.table.join(
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
)
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
awful.button({ }, 1, function (c)
if c == client.focus then
c.minimized = true
@ -213,7 +209,7 @@ mytasklist.buttons = awful.util.table.join(
if client.focus then client.focus:raise() end
end))
for s = 1, screen.count() do
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.
@ -238,63 +234,58 @@ for s = 1, screen.count() do
mywibox[s].widgets = {
{
mylayoutbox[s],
-- mylauncher,
mytaglist[s],
mypromptbox[s],
layout = awful.widget.layout.horizontal.leftright
},
s == 1 and systraywidget or nil,
clockwidget,
separatordate,
separator_date,
cpuwidget,
netwidget,
volpwidget,
volmwidget,
separator,
cpuwidget,
separator,
netwidget,
separator,
batwidget,
separatorapps,
mytasklist[s],
layout = awful.widget.layout.horizontal.rightleft
}
end
-- }}}
end
-- }}}
--------------------------------------------------------------------------------
-- CUSTOM
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
-- 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
-- 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)
-- 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
end
local function moveMouse(x_co, y_co)
local function moveMouse(x_co, y_co)
t=mouse.coords()
mouse.coords( {x = t.x + x_co, y = t.y + y_co} )
end
end
-- Optionally move the mouse when rc.lua is read (startup)
if moveMouseOnStartup then
-- Optionally move the mouse when rc.lua is read (startup)
if moveMouseOnStartup then
moveMouseAway(safeCoords.x, safeCoords.y)
end
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 "
--------------------------------------------------------------------------------
-- 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(
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),
@ -436,10 +427,10 @@ globalkeys = awful.util.table.join(
awful.util.eval, nil,
awful.util.getdir("cache") .. "/history_eval")
end)
)
)
-- Client keys
clientkeys = awful.util.table.join(
-- 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 ),
@ -468,18 +459,18 @@ clientkeys = awful.util.table.join(
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
-- 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
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
-- 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 ()
@ -508,20 +499,20 @@ for i = 1, keynumber do
-- awful.client.toggletag(tags[client.focus.screen][i])
-- end
-- end)
end
end
clientbuttons = awful.util.table.join(
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)
-- }}}
-- Set keys
root.keys(globalkeys)
-- }}}
--------------------------------------------------------------------------------
-- {{{ Rules
awful.rules.rules = {
--------------------------------------------------------------------------------
-- {{{ Rules
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { },
properties = { border_width = beautiful.border_width,
@ -555,12 +546,12 @@ awful.rules.rules = {
{ 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)
-- {{{ 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 })
@ -583,8 +574,8 @@ client.add_signal("manage", function (c, startup)
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)
-- }}}

View File

@ -37,6 +37,11 @@ class CustomApplications(DefaultApps):
c.flags += 'd'
return self.either(c, 'zathura', 'evince')
# CUSTOM
if f.extension == 'svg':
c.flags += 'd'
return self.either(c, 'inkscape')
# CUSTOM
if f.extension == 'm2ts':
c.flags += 'd'

177
.shell.d/dircolorsdb Normal file
View File

@ -0,0 +1,177 @@
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
# Filesystem
MULTIHARDLINK 01;37 # regular file with more than one link
FIFO 01;33 # pipe
# archives or compressed (bright red)
.tar 00;31
.tgz 00;31
.arj 00;31
.taz 00;31
.lzh 00;31
.lzma 00;31
.tlz 00;31
.txz 00;31
.zip 00;31
.z 00;31
.Z 00;31
.dz 00;31
.gz 00;31
.lz 00;31
.xz 00;31
.bz2 00;31
.bz 00;31
.tbz 00;31
.tbz2 00;31
.tz 00;31
.deb 00;31
.rpm 00;31
.jar 00;31
.war 00;31
.ear 00;31
.sar 00;31
.rar 00;31
.ace 00;31
.zoo 00;31
.cpio 00;31
.7z 00;31
.rz 00;31
# Disc image
.iso 04;31
# image formats
.jpg 04;33
.jpeg 04;33
.gif 04;33
.bmp 04;33
.pbm 04;33
.pgm 04;33
.ppm 04;33
.tga 04;33
.xbm 04;33
.xpm 04;33
.tif 04;33
.tiff 04;33
.png 04;33
.svg 04;33
.svgz 04;33
.mng 04;33
.pcx 04;33
# image formats UPPERCASE
.JPG 04;33
.JPEG 04;33
.GIF 04;33
.BMP 04;33
.PBM 04;33
.PGM 04;33
.PPM 04;33
.TGA 04;33
.XBM 04;33
.XPM 04;33
.TIF 04;33
.TIFF 04;33
.PNG 04;33
.SVG 04;33
.SVGZ 04;33
.MNG 04;33
.PCX 04;33
# Documents
.pdf 00;33
.ps 00;33
.dvi 00;33
.0 00;33
.1 00;33
.2 00;33
.3 00;33
.4 00;33
.5 00;33
.6 00;33
.7 00;33
.8 00;33
.9 00;33
# videos
.mov 00;35
.mpg 00;35
.mpeg 00;35
.m2v 00;35
.mkv 00;35
.webm 00;35
.ogm 00;35
.mp4 00;35
.m4v 00;35
.mp4v 00;35
.vob 00;35
.qt 00;35
.nuv 00;35
.wmv 00;35
.asf 00;35
.rm 00;35
.rmvb 00;35
.flc 00;35
.avi 00;35
.fli 00;35
.flv 00;35
.gl 00;35
.dl 00;35
.xcf 00;35
.xwd 00;35
.yuv 00;35
.cgm 00;35
.emf 00;35
# audio formats
.aac 04;35
.au 04;35
.flac 04;35
.mid 04;35
.midi 04;35
.mka 04;35
.mp3 04;35
.mpc 04;35
.ogg 04;35
.ra 04;35
.wav 04;35
# Text files
.txt 04;37
.log 04;37
.tex 04;37
.srt 04;37
.sub 04;37
# Web
.html 04;37
.htm 04;37
.css 04;37
.js 04;37
# Makefile
.mk 04;36
.in 04;36
# Prog
.lua 00;36
.py 00;36
.pl 00;36
.el 00;36
.c 00;36
.h 00;36
.cpp 00;36
.hpp 00;36
.cc 00;36
.hh 00;36
.sh 00;36
.bash 00;36
.zsh 00;36
.csh 00;36
.ksh 00;36

View File

@ -30,7 +30,7 @@ unset TEXDIR
## Enable color support of ls.
if [ "$TERM" != "dumb" ]; then
eval "`dircolors -b`"
eval "`dircolors $HOME/.shell.d/dircolorsdb`"
fi
## Terminal