diff --git a/rc.lua b/rc.lua index 6642032..4779ce9 100644 --- a/rc.lua +++ b/rc.lua @@ -15,6 +15,11 @@ local hotkeys_popup = require("awful.hotkeys_popup").widget require("awful.hotkeys_popup.keys.vim") --FreeDesktop require('freedesktop.menu') +--require('freedesktop.utils') +freedesktop.utils.icon_theme = 'gnome' +local vicious = require("vicious") +local wi = require("wi") +local autostart = require("autostart") ----< Variables >----------------------------------------------------- -- @@ -31,6 +36,23 @@ local titlebars_enabled = false -- beautiful.init(cfgpath.."/themes/zenburn/theme.lua") +-- Naughty +-- +naughty.config.defaults.timeout = 5 +naughty.config.defaults.screen = 1 +naughty.config.defaults.position = "top_right" +naughty.config.defaults.margin = 8 +naughty.config.defaults.gap = 1 +naughty.config.defaults.ontop = true +naughty.config.defaults.font = "terminus 9" +naughty.config.defaults.icon = nil +naughty.config.defaults.icon_size = 256 +naughty.config.defaults.fg = beautiful.fg_tooltip +naughty.config.defaults.bg = beautiful.bg_tooltip +naughty.config.defaults.border_color = beautiful.border_tooltip +naughty.config.defaults.border_width = 2 +naughty.config.defaults.hover_timeout = nil + ----< Error handling >------------------------------------------------ if awesome.startup_errors then naughty.notify({ preset = naughty.config.presets.critical, @@ -123,6 +145,180 @@ menubar.utils.terminal = terminal -- Set the terminal for applications that requ -- Keyboard map indicator and switcher mykeyboardlayout = awful.widget.keyboardlayout() +----< Widgets >------------------------------------------------------- +-- +local spacer = wibox.widget.textbox() +spacer:set_text(' ') + +-- Create a wibox for each screen and add it +local myinfowibox = {} + +-- My Mail updater widget +function mail_count(filename) + local f = io.open(filename, "r") + local l = nil + if f ~= nil then + l = f:read() + if l == nil then + l = "?" + end + f:close() + else + l = "?" + end + return l +end +local mail_tmp_path = "/tmp/"..username.."-mail_loop" +local mailicon = wibox.widget.imagebox() +mailicon:set_image(beautiful.widget_mailnew) +function mail_on_click() + os.execute ("pgrep thunderbird || thunderbird &") +end +mailicon:buttons(awful.util.table.join(awful.button({ }, 1, mail_on_click))) +local mymail_mail = wibox.widget.textbox( "?" ) +mymail_mail.timer = timer{timeout=20} +mymail_mail.timer:connect_signal("timeout", + function () mymail_mail:set_text ( mail_count(mail_tmp_path.."/mymail_count") ) end) +mymail_mail.timer:start() +mymail_mail:buttons(mailicon:buttons()) +-- local gmail_mail = wibox.widget.textbox( "?" ) +-- gmail_mail.timer = timer{timeout=20} +-- gmail_mail.timer:connect_signal("timeout", +-- function () gmail_mail:set_text ( mail_count(mail_tmp_path.."/gmail_count") ) end) +-- gmail_mail.timer:start() +-- gmail_mail:buttons(mailicon:buttons()) + +-- nVidia Optimus +local optimus_icon = wibox.widget.imagebox() +local optimus_overclocked = false +optimus_icon:set_image(beautiful.widget_optimus_off) +optimus_icon.timer = timer{timeout=3} +optimus_icon.timer:connect_signal("timeout", + function () + local f = io.open("/proc/acpi/bbswitch", "r") + local l = nil + if f ~= nil then + l = f:read() + if string.sub (l, 14) == "ON" then + if optimus_overclocked == true then + optimus_icon:set_image(beautiful.widget_optimus_overclocked) + else + optimus_icon:set_image(beautiful.widget_optimus_on) + end + else + optimus_icon:set_image(beautiful.widget_optimus_off) + optimus_overclocked = false + end + f:close() + else + optimus_icon:set_image(beautiful.widget_optimus_off) + end + end) +optimus_icon.timer:start() +optimus_icon:buttons(awful.util.table.join( + awful.button({ }, 1, + function () + os.execute ("pgrep nvidia-settings || optirun nvidia-settings -c :8 &") + end + ), + awful.button({ }, 3, + function () + os.execute ("optirun nvidia-settings -c :8 -a '[gpu:0]/GPUGraphicsClockOffset[2]=135' &") + os.execute ("optirun nvidia-settings -c :8 -a '[gpu:0]/GPUMemoryTransferRateOffset[2]=560' &") + optimus_overclocked = true + end + ) +)) + +-- Wi-Fi / Ethernet widgets +local wifi_widget_down = wibox.widget.textbox() +local wifi_widget_up = wibox.widget.textbox() +local icon_wifi = wibox.widget.imagebox() +local icon_wifi_down_up = wibox.widget.imagebox() +icon_wifi:set_image (beautiful.widget_wifi) +icon_wifi_down_up:set_image (beautiful.widget_wifi_down_up) +local wired_widget_down = wibox.widget.textbox() +local wired_widget_up = wibox.widget.textbox() +local icon_wired = wibox.widget.imagebox() +local icon_wired_down_up = wibox.widget.imagebox() +icon_wired:set_image (beautiful.widget_wired) +icon_wired_down_up:set_image (beautiful.widget_wired_down_up) + +-- Network buttons +function show_nload (interface) + os.execute ("pgrep --full --exact 'nload "..interface.."' || urxvt -e nload "..interface.." &") +end +function show_nethogs () + os.execute ("pgrep nethogs || urxvt -e sudo nethogs &") +end +icon_wifi:buttons(awful.util.table.join(awful.button({ }, 1, function () show_nload("wifi0") end), awful.button({ }, 3, show_nethogs))) +wifi_widget_down:buttons(icon_wifi:buttons()) +icon_wifi_down_up:buttons(icon_wifi:buttons()) +wifi_widget_up:buttons(icon_wifi:buttons()) +icon_wired:buttons(awful.util.table.join(awful.button({ }, 1, function () show_nload("wan0") end), awful.button({ }, 3, show_nethogs))) +wired_widget_down:buttons(icon_wired:buttons()) +icon_wired_down_up:buttons(icon_wired:buttons()) +wired_widget_up:buttons(icon_wired:buttons()) + +-- VOL icon +vicious.cache(vicious.widgets.volume) +local volicon = wibox.widget.imagebox() +volicon:set_image(beautiful.widget_vol) +volicon:buttons( + awful.util.table.join( + awful.button({ }, 1, function () awful.util.spawn("urxvt -e alsamixer --view=all") end), + awful.button({ }, 4, function () os.execute("pgrep -x amixer || amixer set Master 1%+") end), + awful.button({ }, 5, function () os.execute("pgrep -x amixer || amixer set Master 1%-") end) + ) +) +volpct = wibox.widget.textbox() +volpct:buttons(volicon:buttons()) +vicious.register(volpct, vicious.widgets.volume, "$1% ", nil, "Master") + +-- CPU icon +function show_htop () + os.execute ("pgrep htop || urxvt -e htop &") +end +local cpuicon = wibox.widget.imagebox() +cpuicon:set_image(beautiful.widget_cpu) +cpuicon:buttons(awful.util.table.join(awful.button({ }, 1, show_htop))) +cpu = wibox.widget.textbox() +cpu.fit = function (box,w,h) + return 30,0 +end +vicious.register(cpu, vicious.widgets.cpu, ' $1%', 2) +cpu:buttons(cpuicon:buttons()) + +-- Memory icon +function show_atop () + os.execute ("pgrep atop || urxvt -e atop &") +end +local memicon = wibox.widget.imagebox() +memicon:set_image(beautiful.widget_ram) +memicon:buttons(awful.util.table.join(awful.button({ }, 1, show_atop))) +mem = wibox.widget.textbox() +vicious.register(mem, vicious.widgets.mem, ' $1/$5% ', 2) +mem:buttons(memicon:buttons()) + +-- Disk icon +function show_iotop () + os.execute ("pgrep iotop || urxvt -e sudo iotop --delay=4 &") +end +local diskicon = wibox.widget.imagebox() +diskicon:set_image(beautiful.widget_disk) +diskicon:buttons(awful.util.table.join(awful.button({ }, 1, show_iotop))) +disk = wibox.widget.textbox() +vicious.register(disk, vicious.widgets.fs, '${/mnt/bcache0 avail_gb}Gb ', 15) +disk:buttons(diskicon:buttons()) + +vicious.cache(vicious.widgets.net) +vicious.register(wifi_widget_down, vicious.widgets.net, '${wifi0 down_mb}', 2) +vicious.register(wifi_widget_up, vicious.widgets.net, '${wifi0 up_mb}', 2) +vicious.register(wired_widget_down, vicious.widgets.net, '${wan0 down_mb}', 2) +vicious.register(wired_widget_up, vicious.widgets.net, '${wan0 up_mb}', 2) + + + ----< Wibar >-------------------------------------------------- -- -- Create a textclock widget @@ -213,7 +409,7 @@ awful.screen.connect_for_each_screen(function(s) s.mytasklist = awful.widget.tasklist(s, awful.widget.tasklist.filter.currenttags, tasklist_buttons) -- Create the wibox - s.mywibox = awful.wibar({ position = "top", screen = s }) + s.mywibox = awful.wibar({ position = "top", screen = s, height = 15.5 }) -- Add widgets to the wibox s.mywibox:setup { @@ -227,6 +423,38 @@ awful.screen.connect_for_each_screen(function(s) s.mytasklist, -- Middle widget { -- Right widgets layout = wibox.layout.fixed.horizontal, + + spacer, + mailicon, + mymail_mail, + -- myslash = wibox.widget.textbox("+") + -- myslash:buttons(mailicon:buttons()) + -- right_layout:add(myslash) + -- right_layout:add(gmail_mail) + spacer, + cpuicon, + cpu, + memicon, + mem, + diskicon, + disk, + optimus_icon, + spacer, + baticon, + batpct, + icon_wifi, + wifi_widget_down, + icon_wifi_down_up, + wifi_widget_up, + spacer, + icon_wired, + wired_widget_down, + icon_wired_down_up, + wired_widget_up, + spacer, + volicon, + volpct, + mykeyboardlayout, wibox.widget.systray(), mytextclock, @@ -275,9 +503,9 @@ globalkeys = gears.table.join( {description = "swap with next client by index", group = "client"}), awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end, {description = "swap with previous client by index", group = "client"}), - awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end, + awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative(-1) end, {description = "focus the next screen", group = "screen"}), - awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end, + awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative( 1) end, {description = "focus the previous screen", group = "screen"}), awful.key({ modkey, }, "u", awful.client.urgent.jumpto, {description = "jump to urgent client", group = "client"}), @@ -573,9 +801,9 @@ awful.rules.rules = { { rule = { class = "Qt Jambi application" }, properties = { tag = "1" } }, { rule = { class = "Pidgin" }, - properties = { tag = "9" } }, + properties = { tag = "+" } }, { rule = { class = "Stardict" }, - properties = { tag = "8" } }, + properties = { tag = "-" } }, { rule = { class = "MPlayer" }, properties = { floating = true } }, { rule = { class = "Texreport-gtk" }, @@ -677,7 +905,7 @@ awful.rules.rules = { { rule = { class = "Eiskaltdcpp" }, properties = { tag = "1" } }, { rule = { class = "Ekiga" }, - properties = { tag = "9" } }, + properties = { tag = "+" } }, { rule = { class = "Googleearth-bin" }, properties = { tag = "1" } }, { rule = { class = "Links" }, @@ -685,7 +913,7 @@ awful.rules.rules = { { rule = { class = "Linphone" }, properties = { tag = "1" } }, { rule = { class = "psi" }, - properties = { tag = "9" } }, + properties = { tag = "+" } }, { rule = { class = "Transmission" }, properties = { tag = "1" } }, { rule = { class = "Vncviewer" }, diff --git a/themes/zenburn/theme.lua b/themes/zenburn/theme.lua index af10fae..d3bd88d 100644 --- a/themes/zenburn/theme.lua +++ b/themes/zenburn/theme.lua @@ -130,6 +130,48 @@ theme.titlebar_maximized_button_normal_inactive = themes_path .. "zenburn/titleb -- }}} -- }}} +-- {{{ Widgets +local home = os.getenv("HOME") +local cfgpath = home.."/.config/awesome" + +theme.widget_disk = cfgpath .. "/Icons/16x16/hdd_clear.png" +theme.widget_cpu = cfgpath .. "/themes/default/widgets/cpu.png" +theme.widget_ac = cfgpath .. "/themes/default/widgets/ac.png" +theme.widget_acblink = cfgpath .. "/themes/default/widgets/acblink.png" +theme.widget_blank = cfgpath .. "/themes/default/widgets/blank.png" +theme.widget_batfull = cfgpath .. "/themes/default/widgets/batfull.png" +theme.widget_batmed = cfgpath .. "/themes/default/widgets/batmed.png" +theme.widget_batlow = cfgpath .. "/themes/default/widgets/batlow.png" +theme.widget_batempty = cfgpath .. "/themes/default/widgets/batempty.png" +theme.widget_vol = cfgpath .. "/themes/default/widgets/vol.png" +theme.widget_mute = cfgpath .. "/themes/default/widgets/mute.png" +theme.widget_pac = cfgpath .. "/themes/default/widgets/pac.png" +theme.widget_pacnew = cfgpath .. "/themes/default/widgets/pacnew.png" +theme.widget_mail = cfgpath .. "/themes/default/widgets/mail.png" +theme.widget_mailnew = cfgpath .. "/themes/default/widgets/mailnew.png" +theme.widget_optimus_off = cfgpath .. "/themes/default/widgets/optimus_off.png" +theme.widget_optimus_on = cfgpath .. "/themes/default/widgets/optimus_on.png" +theme.widget_optimus_overclocked = cfgpath .. "/themes/default/widgets/optimus_overclocked.png" +theme.widget_temp = cfgpath .. "/themes/default/widgets/temp.png" +theme.widget_tempwarn = cfgpath .. "/themes/default/widgets/tempwarm.png" +theme.widget_temphot = cfgpath .. "/themes/default/widgets/temphot.png" +theme.widget_wifi = cfgpath .. "/themes/default/widgets/wifi.png" +theme.widget_nowifi = cfgpath .. "/themes/default/widgets/nowifi.png" +theme.widget_wired = cfgpath .. "/Icons/16x16/net-wired.png" +theme.widget_wired_down_up = cfgpath .. "/Icons/16x16/down_up.png" +theme.widget_wifi_down_up = cfgpath .. "/Icons/16x16/down_up.png" +theme.widget_mpd = cfgpath .. "/themes/default/widgets/mpd.png" +theme.widget_play = cfgpath .. "/themes/default/widgets/play.png" +theme.widget_pause = cfgpath .. "/themes/default/widgets/pause.png" +theme.widget_ram = cfgpath .. "/themes/default/widgets/ram.png" +theme.widget_mem = cfgpath .. "/themes/default/tp/ram.png" +theme.widget_swap = cfgpath .. "/themes/default/tp/swap.png" +theme.widget_fs = cfgpath .. "/themes/default/tp/fs_01.png" +theme.widget_fs2 = cfgpath .. "/themes/default/tp/fs_02.png" +theme.widget_up = cfgpath .. "/themes/default/tp/up.png" +theme.widget_down = cfgpath .. "/themes/default/tp/down.png" +-- }}} + return theme -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/wi.lua b/wi.lua index db7e57c..34a337e 100644 --- a/wi.lua +++ b/wi.lua @@ -67,43 +67,3 @@ function show_powertop () end batpct:buttons(awful.util.table.join(awful.button({ }, 1, popup_bat), awful.button({ }, 3, show_powertop))) baticon:buttons(batpct:buttons()) - -----< Volume >-------------------------------------------------------- --- -vicious.cache(vicious.widgets.volume) -volicon = wibox.widget.imagebox() -volicon:set_image(beautiful.widget_vol) -volicon:buttons( - awful.util.table.join( - awful.button({ }, 1, function () awful.util.spawn("urxvt -e alsamixer --view=all") end), - awful.button({ }, 4, function () os.execute("pgrep -x amixer || amixer set Master 1%+") end), - awful.button({ }, 5, function () os.execute("pgrep -x amixer || amixer set Master 1%-") end) - ) -) -volpct = wibox.widget.textbox() -volpct:buttons(volicon:buttons()) -vicious.register(volpct, vicious.widgets.volume, "$1% ", nil, "Master") - -----< CPU >----------------------------------------------------------- --- -cpuicon = wibox.widget.imagebox() -cpuicon:set_image(beautiful.widget_cpu) -cpu = wibox.widget.textbox() -cpu.fit = function (box,w,h) - return 30,0 -end -vicious.register(cpu, vicious.widgets.cpu, ' $1%', 2) - -----< Disk Usage >---------------------------------------------------- --- -diskicon = wibox.widget.imagebox() -diskicon:set_image(beautiful.widget_disk) -disk = wibox.widget.textbox() -vicious.register(disk, vicious.widgets.fs, '${/home avail_gb}Gb ', 15) - -----< Memory Usage >-------------------------------------------------- --- -memicon = wibox.widget.imagebox() -memicon:set_image(beautiful.widget_ram) -mem = wibox.widget.textbox() -vicious.register(mem, vicious.widgets.mem, ' $1/$5% ', 2)