finalyse awesome adaptation

This commit is contained in:
vincent 2019-10-20 17:51:59 +02:00
parent 8b1c4c1a4a
commit 8800c9f3e3
107 changed files with 838 additions and 1521 deletions

View File

@ -0,0 +1,32 @@
-----------------------------------------------------------------------------------------------------------------------
-- Application aliases for tasklist widget --
-----------------------------------------------------------------------------------------------------------------------
local appnames = {}
appnames["Exaile" ] = "EXAILE"
appnames["Pragha" ] = "PRAG"
appnames["Smplayer" ] = "SMPL"
appnames["Firefox" ] = "FIFOX"
appnames["Gnome-terminal" ] = "GTERM"
appnames["Gnome-system-monitor"] = "SYSMN"
appnames["Gthumb" ] = "THUMB"
appnames["Gimp-2.8" ] = "GIMP"
appnames["Gimp-2.10" ] = "GIMP"
appnames["Goldendict" ] = "GDIC"
appnames["Easytag" ] = "ETAG"
appnames["Mcomix" ] = "COMIX"
appnames["Claws-mail" ] = "CMAIL"
appnames["Evolution" ] = "EVOM"
appnames["URxvt" ] = "RXVT"
appnames["VirtualBox" ] = "VBOX"
appnames["Keepassx" ] = "KPASS"
appnames["keepassxc" ] = "KPASS"
appnames["Evince" ] = "EVINCE"
appnames["Thunderbird" ] = "TBIRD"
appnames["jetbrains-pycharm-ce"] = "PYCRM"
appnames["jetbrains-clion" ] = "CLION"
appnames["Qemu-system-x86_64" ] = "QEMU"
return appnames

View File

@ -31,7 +31,7 @@ function env:init(args)
self.mod = args.mod or "Mod4"
self.fm = args.fm or "nemo"
self.mail = args.mail or "thunderbird"
self.player = args.player or self.terminal .. "-e ncmpcpp"
self.player = args.player or "mpd"
self.updates = args.updates or "bash -c 'pacman -Qu | grep -v ignored | wc -l'"
self.home = os.getenv("HOME")
self.themedir = awful.util.get_configuration_dir() .. "themes/default"

View File

@ -0,0 +1,230 @@
-- {{{ Key bindings
globalkeys = gears.table.join(
awful.key({ env.mod }, "b", function ()
mouse.screen.mywibox.visible = not mouse.screen.mywibox.visible
end,{description="togle wibox",group="awesome"}),
awful.key({ env.mod, }, "s", hotkeys_popup.show_help,
{description="show help", group="awesome"}),
awful.key({ env.mod, }, "e", revelation,
{description="revelation shortcut",group="awesome"}),
awful.key({ env.mod, }, "Left", awful.tag.viewprev,
{description = "view previous", group = "tag"}),
awful.key({ env.mod, }, "Right", awful.tag.viewnext,
{description = "view next", group = "tag"}),
awful.key({ env.mod, }, "Escape", awful.tag.history.restore,
{description = "go back", group = "tag"}),
awful.key({ "Shift" }, "Alt_L", function() mykeyboardlayout.next_layout(); end),
awful.key({ env.mod, }, "j",
function ()
awful.client.focus.byidx( 1)
end,
{description = "focus next by index", group = "client"}
),
awful.key({ env.mod, }, "k",
function ()
awful.client.focus.byidx(-1)
end,
{description = "focus previous by index", group = "client"}
),
awful.key({env.mod,"Shift"},"o" , function() xrandr.xrandr() end,
{description = "xrandr shortcut", group = "awesome"}),
awful.key({ env.mod, }, "w", function () mainmenu.mainmenu:show() end,
{description = "show main menu", group = "awesome"}),
-- Layout manipulation
awful.key({ env.mod, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
{description = "swap with next client by index", group = "client"}),
awful.key({ env.mod, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
{description = "swap with previous client by index", group = "client"}),
awful.key({ env.mod, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
{description = "focus the next screen", group = "screen"}),
awful.key({ env.mod, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
{description = "focus the previous screen", group = "screen"}),
awful.key({ env.mod, }, "u", awful.client.urgent.jumpto,
{description = "jump to urgent client", group = "client"}),
awful.key({ env.mod, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end,
{description = "go back", group = "client"}),
-- Standard program
-- Dropdown application
awful.key({ env.mod, }, "Return", function () awful.spawn(terminal) end,
{description = "open a terminal", group = "launcher"}),
awful.key({ env.mod, "Control" }, "r", awesome.restart,
{description = "reload awesome", group = "awesome"}),
awful.key({ env.mod, "Shift" }, "q", awesome.quit,
{description = "quit awesome", group = "awesome"}),
awful.key({ env.mod, }, "l", function () awful.tag.incmwfact( 0.05) end,
{description = "increase master width factor", group = "layout"}),
awful.key({ env.mod, }, "h", function () awful.tag.incmwfact(-0.05) end,
{description = "decrease master width factor", group = "layout"}),
awful.key({ env.mod, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
{description = "increase the number of master clients", group = "layout"}),
awful.key({ env.mod, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
{description = "decrease the number of master clients", group = "layout"}),
awful.key({ env.mod, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
{description = "increase the number of columns", group = "layout"}),
awful.key({ env.mod, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
{description = "decrease the number of columns", group = "layout"}),
awful.key({ env.mod, }, "space", function () awful.layout.inc( 1) end,
{description = "select next", group = "layout"}),
awful.key({ env.mod, "Shift" }, "space", function () awful.layout.inc(-1) end,
{description = "select previous", group = "layout"}),
awful.key({ env.mod, "Control" }, "n",
function ()
local c = awful.client.restore()
-- Focus restored client
if c then
client.focus = c
c:raise()
end
end,
{description = "restore minimized", group = "client"}),
-- Prompt
awful.key({ env.mod }, "r", function () awful.screen.focused().mypromptbox:run() end,
{description = "run prompt", group = "launcher"}),
awful.key({ env.mod }, "x",
function ()
awful.prompt.run {
prompt = "Run Lua code: ",
textbox = awful.screen.focused().mypromptbox.widget,
exe_callback = awful.util.eval,
history_path = awful.util.get_cache_dir() .. "/history_eval"
}
end,
{description = "lua execute prompt", group = "awesome"}),
-- Menubar
awful.key({ env.mod }, "p", function() menubar.show() end,
{description = "show the menubar", group = "launcher"}),
awful.key({ },"XF86AudioRaiseVolume", function() awful.spawn("pamixer -i 5") end),
awful.key({ }, "XF86AudioLowerVolume", function () awful.spawn("pamixer -d 5") end),
--multimedia keys
awful.key({ }, "XF86MonBrightnessUp", function () awful.spawn("light -A 10") end),
awful.key({ }, "XF86MonBrightnessDown", function () awful.spawn("light -U 10") end),
awful.key({ }, "XF86AudioMute", function () awful.spawn("pamixer -t") end),
awful.key({ }, "XF86AudioPlay", function () awful.spawn("mpc toggle") end),
awful.key({ }, "XF86AudioStop", function () awful.spawn("mpc stop") end),
awful.key({ }, "XF86AudioNext", function () awful.spawn("mpc next") end),
awful.key({ }, "XF86AudioPrev", function () awful.spawn("mpc prev") end),
--application hotkeys (logitech keyboard g710+)
awful.key({ }, "XF86LaunchA", function () awful.spawn(terminal) end,
{description = "open a terminal", group = "launcher"}),
awful.key({ }, "XF86Launch9", function () awful.spawn("keepassxc") end,
{description = "open keepass", group = "launcher"}),
awful.key({ }, "XF86Launch8", function () awful.spawn("firefox") end,
{description = "open a Firefox", group = "launcher"}),
awful.key({ }, "XF86Launch7", function () awful.spawn("code") end,
{description = "open VScode", group = "launcher"})
)
clientkeys = gears.table.join(
awful.key({ env.mod, }, "f",
function (c)
c.fullscreen = not c.fullscreen
c:raise()
end,
{description = "toggle fullscreen", group = "client"}),
awful.key({ env.mod, "Shift" }, "c", function (c) c:kill() end,
{description = "close", group = "client"}),
awful.key({ env.mod, "Control" }, "space", awful.client.floating.toggle ,
{description = "toggle floating", group = "client"}),
awful.key({ env.mod, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end,
{description = "move to master", group = "client"}),
awful.key({ env.mod, }, "o", function (c) c:move_to_screen() end,
{description = "move to screen", group = "client"}),
awful.key({ env.mod, }, "t", function (c) c.ontop = not c.ontop end,
{description = "toggle keep on top", group = "client"}),
awful.key({ env.mod, }, "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 ,
{description = "minimize", group = "client"}),
awful.key({ env.mod, }, "m",
function (c)
c.maximized = not c.maximized
c:raise()
end ,
{description = "(un)maximize", group = "client"}),
awful.key({ env.mod, "Control" }, "m",
function (c)
c.maximized_vertical = not c.maximized_vertical
c:raise()
end ,
{description = "(un)maximize vertically", group = "client"}),
awful.key({ env.mod, "Shift" }, "m",
function (c)
c.maximized_horizontal = not c.maximized_horizontal
c:raise()
end ,
{description = "(un)maximize horizontally", group = "client"})
)
-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it work on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
globalkeys = gears.table.join(globalkeys,
-- View tag only.
awful.key({ env.mod }, "#" .. i + 9,
function ()
local screen = awful.screen.focused()
local tag = screen.tags[i]
if tag then
tag:view_only()
end
end,
{description = "view tag #"..i, group = "tag"}),
-- Toggle tag display.
awful.key({ env.mod, "Control" }, "#" .. i + 9,
function ()
local screen = awful.screen.focused()
local tag = screen.tags[i]
if tag then
awful.tag.viewtoggle(tag)
end
end,
{description = "toggle tag #" .. i, group = "tag"}),
-- Move client to tag.
awful.key({ env.mod, "Shift" }, "#" .. i + 9,
function ()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:move_to_tag(tag)
end
end
end,
{description = "move focused client to tag #"..i, group = "tag"}),
-- Toggle tag on focused client.
awful.key({ env.mod, "Control", "Shift" }, "#" .. i + 9,
function ()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:toggle_tag(tag)
end
end
end,
{description = "toggle focused client on tag #" .. i, group = "tag"})
)
end
clientbuttons = gears.table.join(
awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
awful.button({ env.mod }, 1, awful.mouse.client.move),
awful.button({ env.mod }, 3, awful.mouse.client.resize))
root.keys(globalkeys)

View File

@ -6,7 +6,8 @@
local table = table
local awful = require("awful")
local redflat = require("redflat")
--import xrandr library
local xrandr = require("xrandr")
-- Initialize tables and vars for module
-----------------------------------------------------------------------------------------------------------------------
local hotkeys = { mouse = {}, raw = {}, keys = {}, fake = {} }
@ -125,6 +126,7 @@ function hotkeys:init(args)
local appkeys = args.appkeys or {}
self.mouse.root = (awful.util.table.join(
awful.button({ }, 1, function () mainmenu:hide() end),
awful.button({ }, 3, function () mainmenu:toggle() end),
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
@ -204,6 +206,7 @@ function hotkeys:init(args)
-- Appswitcher widget
------------------------------------------------------------
local appswitcher_keys = {
{
{ env.mod }, "a", function() appswitcher:switch() end,
{ description = "Select next app", group = "Navigation" }
@ -252,80 +255,6 @@ function hotkeys:init(args)
appswitcher:set_keys(appswitcher_keys)
-- Emacs like key sequences
--------------------------------------------------------------------------------
-- initial key
local keyseq = { { env.mod }, "c", {}, {} }
-- group
keyseq[3] = {
{ {}, "k", {}, {} }, -- application kill group
{ {}, "c", {}, {} }, -- client managment group
{ {}, "r", {}, {} }, -- client managment group
{ {}, "n", {}, {} }, -- client managment group
{ {}, "g", {}, {} }, -- run or rise group
{ {}, "f", {}, {} }, -- launch application group
}
-- quick launch key sequence actions
for i = 1, 9 do
local ik = tostring(i)
table.insert(keyseq[3][5][3], {
{}, ik, function() qlaunch:run_or_raise(ik) end,
{ description = "Run or rise application №" .. ik, group = "Run or Rise", keyset = { ik } }
})
table.insert(keyseq[3][6][3], {
{}, ik, function() qlaunch:run_or_raise(ik, true) end,
{ description = "Launch application №".. ik, group = "Quick Launch", keyset = { ik } }
})
end
-- application kill sequence actions
keyseq[3][1][3] = {
{
{}, "f", function() if client.focus then client.focus:kill() end end,
{ description = "Kill focused client", group = "Kill application", keyset = { "f" } }
},
{
{}, "a", kill_all,
{ description = "Kill all clients with current tag", group = "Kill application", keyset = { "a" } }
},
}
-- client managment sequence actions
keyseq[3][2][3] = {
{
{}, "p", function () toggle_placement(env) end,
{ description = "Switch master/slave window placement", group = "Clients managment", keyset = { "p" } }
},
}
keyseq[3][3][3] = {
{
{}, "f", restore_client,
{ description = "Restore minimized client", group = "Clients managment", keyset = { "f" } }
},
{
{}, "a", restore_all,
{ description = "Restore all clients with current tag", group = "Clients managment", keyset = { "a" } }
},
}
keyseq[3][4][3] = {
{
{}, "f", function() if client.focus then client.focus.minimized = true end end,
{ description = "Minimized focused client", group = "Clients managment", keyset = { "f" } }
},
{
{}, "a", minimize_all,
{ description = "Minimized all clients with current tag", group = "Clients managment", keyset = { "a" } }
},
{
{}, "e", minimize_all_except_focused,
{ description = "Minimized all clients except focused", group = "Clients managment", keyset = { "e" } }
},
}
-- Layouts
@ -353,6 +282,10 @@ function hotkeys:init(args)
{ env.mod, }, "+", function () awful.tag.incnmaster( 1, nil, true) end,
{ description = "Increase the number of master clients", group = "Layout" }
},
{
{ env.mod, }, "=", function () awful.tag.incnmaster( 1, nil, true) end,
{ description = "Increase the number of master clients", group = "Layout" }
},
{
{ env.mod }, "-", function () awful.tag.incnmaster(-1, nil, true) end,
{ description = "Decrease the number of master clients", group = "Layout" }
@ -361,6 +294,10 @@ function hotkeys:init(args)
{ env.mod, "Control" }, "+", function () awful.tag.incncol( 1, nil, true) end,
{ description = "Increase the number of columns", group = "Layout" }
},
{
{ env.mod, "Control" }, "=", function () awful.tag.incncol( 1, nil, true) end,
{ description = "Increase the number of columns", group = "Layout" }
},
{
{ env.mod, "Control" }, "-", function () awful.tag.incncol(-1, nil, true) end,
{ description = "Decrease the number of columns", group = "Layout" }
@ -581,6 +518,9 @@ function hotkeys:init(args)
-- Global keys
--------------------------------------------------------------------------------
self.raw.root = {
{
{ env.mod }, "b", function () mouse.screen.mywibox.visible = not mouse.screen.mywibox.visible end,{description="togle wibox",group="awesome"}
},
{
{ env.mod }, "F1", function() redtip:show() end,
{ description = "[Hold] Show awesome hotkeys helper", group = "Main" }
@ -589,10 +529,6 @@ function hotkeys:init(args)
{ env.mod, "Control" }, "F1", function() apphelper(appkeys) end,
{ description = "[Hold] Show hotkeys helper for application", group = "Main" }
},
{
{ env.mod }, "c", function() redflat.float.keychain:activate(keyseq, "User") end,
{ description = "[Hold] User key sequence", group = "Main" }
},
{
{ env.mod }, "F2", function () redflat.service.navigator:run() end,
@ -640,6 +576,12 @@ function hotkeys:init(args)
{ env.mod }, "Tab", focus_to_previous,
{ description = "Go to previos client", group = "Client focus" }
},
{
{ env.mod, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
{description = "focus the next screen", group = "screen"}},
{
{ env.mod, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
{description = "focus the previous screen", group = "screen"}},
{
{ env.mod }, "w", function() mainmenu:show() end,
@ -776,9 +718,31 @@ function hotkeys:init(args)
{
{ env.mod, "Control" }, "s", function() for s in screen do env.wallpaper(s) end end,
{} -- hidden key
}
}
},
--application hotkeys (logitech keyboard g710+)
{
{ }, "XF86LaunchA", function () awful.spawn(terminal) end,
{description = "open a terminal", group = "launcher"}
},
{
{ }, "XF86Launch9", function () awful.spawn("keepassxc") end,
{description = "open keepass", group = "launcher"}
},
{
{ }, "XF86Launch8", function () awful.spawn("firefox") end,
{description = "open a Firefox", group = "launcher"}
},
{
{ }, "XF86Launch7", function () awful.spawn("code") end,
{description = "open VScode", group = "launcher"}
},
{
{env.mod,"Shift"},"o" , function() xrandr.xrandr() end,
{description = "xrandr shortcut", group = "screen"}}
}
-- Client keys
--------------------------------------------------------------------------------
self.raw.client = {
@ -805,7 +769,11 @@ function hotkeys:init(args)
{
{ env.mod }, "m", function(c) c.maximized = not c.maximized; c:raise() end,
{ description = "Maximize", group = "Client keys" }
}
},
{
{ env.mod }, "o", function (c) c:move_to_screen() end,
{description = "move to screen", group = "client"}
},
}
self.keys.root = redflat.util.key.build(self.raw.root)
@ -856,8 +824,7 @@ function hotkeys:init(args)
self.mouse.client = awful.util.table.join(
awful.button({}, 1, function (c) client.focus = c; c:raise() end),
awful.button({}, 2, awful.mouse.client.move),
awful.button({ env.mod }, 3, awful.mouse.client.resize),
awful.button({}, 8, function(c) c:kill() end)
awful.button({ env.mod }, 3, awful.mouse.client.resize)
)
-- Set root hotkeys

View File

@ -26,7 +26,7 @@ function layouts:init()
awful.layout.suit.fair,
redflat.layout.map,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
--awful.layout.suit.max.fullscreen,
}
awful.layout.layouts = layset

View File

@ -15,12 +15,9 @@ local wibox = require("wibox")
local lain = require("lain")
local markup = lain.util.markup
local beautiful = require("beautiful")
--import xrandr library
local xrandr = require("xrandr")
-- Notification library
local naughty = require("naughty")
local menubar = require("menubar")
--load revelation plugin
--load hotkey_popup
local hotkeys_popup = require("awful.hotkeys_popup").widget
@ -35,28 +32,9 @@ require("ercheck-config") -- load file with error handling
env=require("env-config")
env:init()
-- revelation init
local revelation=require("revelation")
revelation.init()
--
-- This is used later as the default terminal and editor to run.
awful.util.terminal = env.terminal
awful.util.terminal = terminal
editor = os.getenv("EDITOR") or "vim"
editor_cmd = env.terminal .. " -e " .. editor
-- Default env.mod.
-- Usually, Mod4 is the key with a logo between Control and Alt.
-- If you do not like this or do not have such a key,
-- I suggest you to remap Mod4 to another key using xmodmap or other tools.
-- However, you can use another modifier like Mod1, but it may interact with others.
-- Table of layouts to cover with awful.layout.inc, order matters.
-- {{{ Menu
local mainmenu=require("menu")
mainmenu:init({ env = env })
@ -66,43 +44,141 @@ layouts:init()
--mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
-- menu = mymainmenu })
-- Menubar configuration
menubar.utils.terminal = terminal -- Set the terminal for applications that require it
-- }}}
-- menu = mainmenu })
-- Keyboard map indicator and switcher
mykeyboardlayout = awful.widget.keyboardlayout()
local tasklist = {}
-- load list of app name aliases from files and set it as part of tasklist theme
tasklist.style = { appnames = require("alias-config")}
tasklist.buttons = awful.util.table.join(
awful.button({}, 1, redflat.widget.tasklist.action.select),
awful.button({}, 2, redflat.widget.tasklist.action.close),
awful.button({}, 3, redflat.widget.tasklist.action.menu),
awful.button({}, 4, redflat.widget.tasklist.action.switch_next),
awful.button({}, 5, redflat.widget.tasklist.action.switch_prev)
)
-- Taglist widget
--------------------------------------------------------------------------------
local taglist = {}
taglist.style = { widget = redflat.gauge.tag.orange.new, show_tip = true }
taglist.buttons = awful.util.table.join(
awful.button({ }, 1, function(t) t:view_only() end),
awful.button({ env.mod }, 1, function(t) if client.focus then client.focus:move_to_tag(t) end end),
awful.button({ }, 2, awful.tag.viewtoggle),
awful.button({ }, 3, function(t) redflat.widget.layoutbox:toggle_menu(t) end),
awful.button({ env.mod }, 3, function(t) if client.focus then client.focus:toggle_tag(t) end end),
awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end),
awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end)
)
-- Textclock widget
--------------------------------------------------------------------------------
local textclock = {}
textclock.widget = redflat.widget.textclock({ timeformat = "%H:%M", dateformat = "%b %d %a" })
-- Layoutbox configure
--------------------------------------------------------------------------------
local layoutbox = {}
layoutbox.buttons = awful.util.table.join(
awful.button({ }, 1, function () mainmenu.mainmenu:toggle() end),
awful.button({ }, 3, function () redflat.widget.layoutbox:toggle_menu(mouse.screen.selected_tag) end),
awful.button({ }, 4, function () awful.layout.inc( 1) end),
awful.button({ }, 5, function () awful.layout.inc(-1) end)
)
-- Tray widget
--------------------------------------------------------------------------------
local tray = {}
tray.widget = redflat.widget.minitray()
tray.buttons = awful.util.table.join(
awful.button({}, 1, function() redflat.widget.minitray:toggle() end)
)
local volume = {}
volume.widget = redflat.widget.pulse(nil, { widget = redflat.gauge.audio.blue.new })
-- activate player widget
redflat.float.player:init({ name = env.player })
volume.buttons = awful.util.table.join(
awful.button({}, 4, function() volume.widget:change_volume() end),
awful.button({}, 5, function() volume.widget:change_volume({ down = true }) end),
awful.button({}, 2, function() volume.widget:mute() end),
awful.button({}, 3, function() redflat.float.player:show() end),
awful.button({}, 1, function() redflat.float.player:action("PlayPause") end),
awful.button({}, 8, function() redflat.float.player:action("Previous") end),
awful.button({}, 9, function() redflat.float.player:action("Next") end)
)
-- Keyboard layout indicator
--------------------------------------------------------------------------------
local kbindicator = {}
redflat.widget.keyboard:init({ "French", "English" })
kbindicator.widget = redflat.widget.keyboard()
kbindicator.buttons = awful.util.table.join(
awful.button({}, 1, function () redflat.widget.keyboard:toggle_menu() end),
awful.button({}, 4, function () redflat.widget.keyboard:toggle() end),
awful.button({}, 5, function () redflat.widget.keyboard:toggle(true) end)
)
-- {{{ Wibar
-- Create a textclock widget
mytextclock = wibox.widget.textclock()
local spr_right = redflat.gauge.separator.vertical()
local cpuicon = wibox.widget.imagebox(beautiful.cpu_icon,true)
local cpu = lain.widget.cpu({
settings = function()
widget:set_markup(markup.fontfg(beautiful.font,beautiful.fg_normal, cpu_now.usage .. "% "))
end
})
local mymemicon =wibox.widget.imagebox(beautiful.ram_icon)
local mymem = lain.widget.mem({
settings = function()
widget:set_markup(markup.fontfg(beautiful.font,beautiful.fg_normal, mem_now.perc .. "% "))
end
})
-- Net
local netdownicon = wibox.widget.imagebox(beautiful.net_down)
local netdowninfo = wibox.widget.textbox()
local netupicon = wibox.widget.imagebox(beautiful.net_up)
local netupinfo = lain.widget.net({
settings = function()
widget:set_markup(markup.fontfg(beautiful.font, "#e54c62", net_now.sent .. " "))
netdowninfo:set_markup(markup.fontfg(beautiful.font, "#87af5f", net_now.received .. " "))
end
})
local sysmon = { widget = {}, buttons = {}, icon = {} }
-- icons
sysmon.icon.battery = redflat.util.table.check(beautiful, "wicon.battery")
sysmon.icon.network = redflat.util.table.check(beautiful, "wicon.wireless")
sysmon.icon.cpuram = redflat.util.table.check(beautiful, "wicon.monitor")
-- CPU usage
sysmon.widget.cpu = redflat.widget.sysmon(
{ func = redflat.system.pformatted.cpu(80) },
{ timeout = 2, monitor = { label = "CPU" } }
)
sysmon.buttons.cpu = awful.util.table.join(
awful.button({ }, 1, function() redflat.float.top:show("cpu") end)
)
-- RAM usage
sysmon.widget.ram = redflat.widget.sysmon(
{ func = redflat.system.pformatted.mem(80) },
{ timeout = 10, monitor = { label = "RAM" } }
)
sysmon.buttons.ram = awful.util.table.join(
awful.button({ }, 1, function() redflat.float.top:show("mem") end)
)
-- battery
local batstate=redflat.system.battery("BAT0")
if batstate.value ~= nil then
sysmon.widget.battery = redflat.widget.sysmon(
{ func = redflat.system.pformatted.bat(25), arg = "BAT0" },
{ timeout = 60, widget = redflat.gauge.icon.single, monitor = { is_vertical = true, icon = sysmon.icon.battery } }
)
end
-- network speed
-- use self-drawn rectange image as indicator icon
local img = redflat.util.base.image(7, 40, { x = 1, y = 0, width = 5, height = 40 })
local interfaces = "br0"
local netstate=redflat.system.net_speed("br0",{})
if netstate[3] == 0 then
interfaces = "wlp2s0"
end
sysmon.widget.network = redflat.widget.net(
{ interface = interfaces, speed = { up = 6 * 1024^2, down = 6 * 1024^2 }, autoscale = false },
-- custom style
{ timeout = 2, widget = redflat.gauge.icon.double, monitor = { step = 0.1, icon1 = img, icon2 = img, igap = 3 } }
)
local mpdicon = wibox.widget.imagebox(beautiful.mpd_icon)
@ -132,8 +208,7 @@ local mpd = lain.widget.mpd({
end
})
local baticon = wibox.widget.imagebox(beautiful
.widget_batt)
local baticon = wibox.widget.imagebox(beautiful.widget_batt)
local bat = lain.widget.bat({
settings = function()
local perc = bat_now.perc ~= "N/A" and bat_now.perc .. "%" or bat_now.perc
@ -148,337 +223,72 @@ local bat = lain.widget.bat({
end
})
-- Create a wibox for each screen and add it
local taglist_buttons = gears.table.join(
awful.button({ }, 1, function(t) t:view_only() end),
awful.button({ env.mod }, 1, function(t)
if client.focus then
client.focus:move_to_tag(t)
end
end),
awful.button({ }, 3, awful.tag.viewtoggle),
awful.button({ env.mod }, 3, function(t)
if client.focus then
client.focus:toggle_tag(t)
end
end),
awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end),
awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end)
)
local function set_wallpaper(s)
-- Wallpaper
if beautiful.wallpaper then
local wallpaper = beautiful.wallpaper
-- If wallpaper is a function, call it with the screen
if type(wallpaper) == "function" then
wallpaper = wallpaper(s)
end
gears.wallpaper.maximized(wallpaper, s, true)
end
end
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
screen.connect_signal("property::geometry", set_wallpaper)
awful.screen.connect_for_each_screen(function(s)
-- Wallpaper
set_wallpaper(s)
env.wallpaper(s)
-- Each screen has its own tag taawful.util.terminable.
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[3])
awful.tag({ "1", "2", "3", "4","5" }, s, awful.layout.layouts[3])
-- Create a promptbox for each screen
s.mypromptbox = awful.widget.prompt()
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
-- We need one layoutbox per screen.
s.mylayoutbox = awful.widget.layoutbox(s)
s.mylayoutbox:buttons(gears.table.join(
awful.button({ }, 1, function () awful.layout.inc( 1) end),
awful.button({ }, 3, function () awful.layout.inc(-1) end),
awful.button({ }, 4, function () awful.layout.inc( 1) end),
awful.button({ }, 5, function () awful.layout.inc(-1) end)))
-- Create a taglist widget
s.mytaglist = awful.widget.taglist(s, awful.widget.taglist.filter.noempty, taglist_buttons)
-- layoutbox widget
layoutbox[s] = redflat.widget.layoutbox({ screen = s })
-- taglist widget
taglist[s] = redflat.widget.taglist({ screen = s, buttons = taglist.buttons, hint = env.tagtip }, taglist.style)
-- tasklist widget
tasklist[s] = redflat.widget.tasklist({ screen = s, buttons = tasklist.buttons }, tasklist.style)
-- Create the wibox
s.mywibox = awful.wibar({ position = "top", screen = s })
s.mywibox = awful.wibar({ position = "top", screen = s, height = beautiful.panel_height or 36 })
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
s.mytaglist,
s.mypromptbox,
env.wrapper(layoutbox[s], "layoutbox", layoutbox.buttons),
spr_right,
env.wrapper(taglist[s], "taglist"),
spr_right,
env.wrapper(kbindicator.widget, "keyboard", kbindicator.buttons),
spr_right,
mpdicon,
mpd.widget
},
nil -- Middle widget
,{ -- Right widgets
{ -- middle widget
layout = wibox.layout.align.horizontal,
expand = "outside",
nil,
env.wrapper(tasklist[s], "tasklist"),
},
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
spr_right,
netdownicon,
netdowninfo,
netupicon,
netupinfo.widget,
cpuicon,
cpu ,
mymemicon,
mymem,
env.wrapper(sysmon.widget.network, "network"),
spr_right,
env.wrapper(sysmon.widget.cpu, "cpu", sysmon.buttons.cpu),
spr_right,
env.wrapper(sysmon.widget.ram, "ram", sysmon.buttons.ram),
spr_right,
env.wrapper(sysmon.widget.battery, "battery"),
spr_right,
baticon,
bat,
env.wrapper(volume.widget, "volume", volume.buttons),
spr_right,
mykeyboardlayout,
env.wrapper(textclock.widget, "textclock"),
spr_right,
wibox.widget.systray(),
spr_right,
mytextclock,
s.mylayoutbox,
env.wrapper(tray.widget, "tray", tray.buttons),
},
}
end)
-- }}}
-- {{{ Mouse bindings
root.buttons(gears.table.join(
awful.button({ }, 3, function () mainmenu.mainmenu:toggle() end),
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
))
-- }}}
-- {{{ Key bindings
globalkeys = gears.table.join(
awful.key({ env.mod }, "b", function ()
mouse.screen.mywibox.visible = not mouse.screen.mywibox.visible
end,{description="togle wibox",group="awesome"}),
awful.key({ env.mod, }, "s", hotkeys_popup.show_help,
{description="show help", group="awesome"}),
awful.key({ env.mod, }, "e", revelation,
{description="revelation shortcut",group="awesome"}),
awful.key({ env.mod, }, "Left", awful.tag.viewprev,
{description = "view previous", group = "tag"}),
awful.key({ env.mod, }, "Right", awful.tag.viewnext,
{description = "view next", group = "tag"}),
awful.key({ env.mod, }, "Escape", awful.tag.history.restore,
{description = "go back", group = "tag"}),
awful.key({ "Shift" }, "Alt_L", function() mykeyboardlayout.next_layout(); end),
awful.key({ env.mod, }, "j",
function ()
awful.client.focus.byidx( 1)
end,
{description = "focus next by index", group = "client"}
),
awful.key({ env.mod, }, "k",
function ()
awful.client.focus.byidx(-1)
end,
{description = "focus previous by index", group = "client"}
),
awful.key({env.mod,"Shift"},"o" , function() xrandr.xrandr() end,
{description = "xrandr shortcut", group = "awesome"}),
awful.key({ env.mod, }, "w", function () mainmenu.mainmenu:show() end,
{description = "show main menu", group = "awesome"}),
-- Layout manipulation
awful.key({ env.mod, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
{description = "swap with next client by index", group = "client"}),
awful.key({ env.mod, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
{description = "swap with previous client by index", group = "client"}),
awful.key({ env.mod, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
{description = "focus the next screen", group = "screen"}),
awful.key({ env.mod, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
{description = "focus the previous screen", group = "screen"}),
awful.key({ env.mod, }, "u", awful.client.urgent.jumpto,
{description = "jump to urgent client", group = "client"}),
awful.key({ env.mod, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end,
{description = "go back", group = "client"}),
-- Standard program
-- Dropdown application
awful.key({ env.mod, }, "Return", function () awful.spawn(terminal) end,
{description = "open a terminal", group = "launcher"}),
awful.key({ env.mod, "Control" }, "r", awesome.restart,
{description = "reload awesome", group = "awesome"}),
awful.key({ env.mod, "Shift" }, "q", awesome.quit,
{description = "quit awesome", group = "awesome"}),
awful.key({ env.mod, }, "l", function () awful.tag.incmwfact( 0.05) end,
{description = "increase master width factor", group = "layout"}),
awful.key({ env.mod, }, "h", function () awful.tag.incmwfact(-0.05) end,
{description = "decrease master width factor", group = "layout"}),
awful.key({ env.mod, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
{description = "increase the number of master clients", group = "layout"}),
awful.key({ env.mod, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
{description = "decrease the number of master clients", group = "layout"}),
awful.key({ env.mod, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
{description = "increase the number of columns", group = "layout"}),
awful.key({ env.mod, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
{description = "decrease the number of columns", group = "layout"}),
awful.key({ env.mod, }, "space", function () awful.layout.inc( 1) end,
{description = "select next", group = "layout"}),
awful.key({ env.mod, "Shift" }, "space", function () awful.layout.inc(-1) end,
{description = "select previous", group = "layout"}),
awful.key({ env.mod, "Control" }, "n",
function ()
local c = awful.client.restore()
-- Focus restored client
if c then
client.focus = c
c:raise()
end
end,
{description = "restore minimized", group = "client"}),
-- Prompt
awful.key({ env.mod }, "r", function () awful.screen.focused().mypromptbox:run() end,
{description = "run prompt", group = "launcher"}),
awful.key({ env.mod }, "x",
function ()
awful.prompt.run {
prompt = "Run Lua code: ",
textbox = awful.screen.focused().mypromptbox.widget,
exe_callback = awful.util.eval,
history_path = awful.util.get_cache_dir() .. "/history_eval"
}
end,
{description = "lua execute prompt", group = "awesome"}),
-- Menubar
awful.key({ env.mod }, "p", function() menubar.show() end,
{description = "show the menubar", group = "launcher"}),
awful.key({ },"XF86AudioRaiseVolume", function() awful.spawn("pamixer -i 5") end),
awful.key({ }, "XF86AudioLowerVolume", function () awful.spawn("pamixer -d 5") end),
--multimedia keys
awful.key({ }, "XF86MonBrightnessUp", function () awful.spawn("light -A 10") end),
awful.key({ }, "XF86MonBrightnessDown", function () awful.spawn("light -U 10") end),
awful.key({ }, "XF86AudioMute", function () awful.spawn("pamixer -t") end),
awful.key({ }, "XF86AudioPlay", function () awful.spawn("mpc toggle") end),
awful.key({ }, "XF86AudioStop", function () awful.spawn("mpc stop") end),
awful.key({ }, "XF86AudioNext", function () awful.spawn("mpc next") end),
awful.key({ }, "XF86AudioPrev", function () awful.spawn("mpc prev") end),
--application hotkeys (logitech keyboard g710+)
awful.key({ }, "XF86LaunchA", function () awful.spawn(terminal) end,
{description = "open a terminal", group = "launcher"}),
awful.key({ }, "XF86Launch9", function () awful.spawn("keepassxc") end,
{description = "open keepass", group = "launcher"}),
awful.key({ }, "XF86Launch8", function () awful.spawn("firefox") end,
{description = "open a Firefox", group = "launcher"}),
awful.key({ }, "XF86Launch7", function () awful.spawn("code") end,
{description = "open VScode", group = "launcher"})
)
clientkeys = gears.table.join(
awful.key({ env.mod, }, "f",
function (c)
c.fullscreen = not c.fullscreen
c:raise()
end,
{description = "toggle fullscreen", group = "client"}),
awful.key({ env.mod, "Shift" }, "c", function (c) c:kill() end,
{description = "close", group = "client"}),
awful.key({ env.mod, "Control" }, "space", awful.client.floating.toggle ,
{description = "toggle floating", group = "client"}),
awful.key({ env.mod, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end,
{description = "move to master", group = "client"}),
awful.key({ env.mod, }, "o", function (c) c:move_to_screen() end,
{description = "move to screen", group = "client"}),
awful.key({ env.mod, }, "t", function (c) c.ontop = not c.ontop end,
{description = "toggle keep on top", group = "client"}),
awful.key({ env.mod, }, "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 ,
{description = "minimize", group = "client"}),
awful.key({ env.mod, }, "m",
function (c)
c.maximized = not c.maximized
c:raise()
end ,
{description = "(un)maximize", group = "client"}),
awful.key({ env.mod, "Control" }, "m",
function (c)
c.maximized_vertical = not c.maximized_vertical
c:raise()
end ,
{description = "(un)maximize vertically", group = "client"}),
awful.key({ env.mod, "Shift" }, "m",
function (c)
c.maximized_horizontal = not c.maximized_horizontal
c:raise()
end ,
{description = "(un)maximize horizontally", group = "client"})
)
-- Bind all key numbers to tags.
-- Be careful: we use keycodes to make it work on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
globalkeys = gears.table.join(globalkeys,
-- View tag only.
awful.key({ env.mod }, "#" .. i + 9,
function ()
local screen = awful.screen.focused()
local tag = screen.tags[i]
if tag then
tag:view_only()
end
end,
{description = "view tag #"..i, group = "tag"}),
-- Toggle tag display.
awful.key({ env.mod, "Control" }, "#" .. i + 9,
function ()
local screen = awful.screen.focused()
local tag = screen.tags[i]
if tag then
awful.tag.viewtoggle(tag)
end
end,
{description = "toggle tag #" .. i, group = "tag"}),
-- Move client to tag.
awful.key({ env.mod, "Shift" }, "#" .. i + 9,
function ()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:move_to_tag(tag)
end
end
end,
{description = "move focused client to tag #"..i, group = "tag"}),
-- Toggle tag on focused client.
awful.key({ env.mod, "Control", "Shift" }, "#" .. i + 9,
function ()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:toggle_tag(tag)
end
end
end,
{description = "toggle focused client on tag #" .. i, group = "tag"})
)
end
clientbuttons = gears.table.join(
awful.button({ }, 1, function (c) client.focus = c; c:raise() end),
awful.button({ env.mod }, 1, awful.mouse.client.move),
awful.button({ env.mod }, 3, awful.mouse.client.resize))
-- Active screen edges
@ -487,10 +297,10 @@ local edges = require("edges-config") -- load file with edges configuration
edges:init()
-- Set keys
root.keys(globalkeys)
-- }}}
local hotkeys = require("keys-config") -- load file with hotkeys configuration
hotkeys:init({ env = env, menu = mainmenu.mainmenu })
hotkeys:init({ env = env, menu = mainmenu.mainmenu,appkeys={}, volume = volume.widget })
-- {{{ Rules
-- Rules to apply to new clients (through the "manage" signal).
local rules = require("rules-config") -- load file with rules configuration

View File

@ -355,7 +355,6 @@ end
function player:action(args)
if not awful.util.table.hasitem(self._actions, args) then return end
if not self.wibox then self:init() end
awful.spawn.with_shell(self.command.action .. args)
self:update()
end

View File

@ -119,17 +119,18 @@ end
-----------------------------------------------------------------------------------------------------------------------
function system.net_speed(interface, storage)
local up, down = 0, 0
local state = 0
-- Get network info
--------------------------------------------------------------------------------
for line in io.lines("/proc/net/dev") do
-- Match wmaster0 as well as rt0 (multiple leading spaces)
local name = string.match(line, "^[%s]?[%s]?[%s]?[%s]?([%w]+):")
-- Calculate speed for given interface
------------------------------------------------------------
if name == interface then
state = 1
-- received bytes, first value after the name
local recv = tonumber(string.match(line, ":[%s]*([%d]+)"))
-- transmited bytes, 7 fields from end of the line
@ -144,7 +145,7 @@ function system.net_speed(interface, storage)
-- net stats are absolute, substract our last reading
local interval = now - storage[interface].time
if interval <= 0 then interval = 1 end
down = (recv - storage[interface].recv) / interval
up = (send - storage[interface].send) / interval
end
@ -157,7 +158,7 @@ function system.net_speed(interface, storage)
end
--------------------------------------------------------------------------------
return { up, down }
return { up, down,state }
end
-- Get disk speed

View File

@ -62,7 +62,6 @@ function battery.new(args, style)
--------------------------------------------------------------------------------
widg._update = function()
local state = args.func(args.arg)
widg:set_value(state.value)
widg:set_alert(state.alert)
widg._tp:set_text(state.text)

View File

@ -53,7 +53,7 @@ function minitray:init(style)
bg = style.color.wibox,
border_width = style.border_width,
border_color = style.color.border,
shape = style.shape
shape = style.shape,
}
self.wibox = wibox(wargs)

View File

@ -1,165 +0,0 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View File

@ -1,169 +0,0 @@
# revelation.lua
Provides Mac OSX like 'Expose' view of all clients.
This is a fork from [revelation](https://github.com/bioe007/awesome-revelation)
It is modified from the original revelation.lua for incorporating with awesome 3.5 or later.
It also have some features.
**Now master branch works for both master and stable awesome WM**
## Changes since 2015-09-26
When all clients are exposing, you can zoom (__Modkey + Shift + hintbox charater__ or __right button__ of the mouse)
or kill a client (__middle button__ of the mouse) and the position of hintboxes will be updated accordingly.
## Changes since 2014-02-19
* Now the revlation is able to handle the special clients(float, fullscreen or maximized etc.)
* When you select an minimized client, the revelation will un-minimized it and then focuse on it.
* Added an option to change character ordering
## Changes after 2013-12-30
* Now it is possible, in revelation.init({...}), to change the default settings of
revelation module.
* Function `revelation(...)` now accept the parameter as a table `{rule={...}, is_excluded=...,
curr_tag_only=...}`.
1. To add specify rules `revelation({rule={...},...})`.
2. To exclude the clients matched by the rules instead of including `revelation({rule={...},
is_excluded=true})`.
3. `{...,curr_tag_only=true}` make the revelation only collect the client from current
tags.
## Changes from the original revelation
* Support awesome 3.5 or later
* Add the support of multiple screens. Now multiple 'Expose' views will be shown
on the multiple screens at the same time.
* The way of selecting and focusing the client was changed. The old way that is
navigating clients by pressing the keys "j, h, k, l" and then selecting the
client by pressing key "Enter" was deprecated. Now each client in the 'Expose'
views come with a letter surrounding by a hint box, you can select the client
by pressing the corresponding letter in the hint box. The idea and codes of this method
was copied from the module [hint](https://github.com/zackpete/hints).
* Add zoom mode. Add the function of zooming the client by pressing the right
button of the mouse.
* The unwanted clients can be excluded by the parameter`{rule={...}....}`.
## Screenshot
![screenshot](./screenshot.png)
## Usage
### Installation
(From user's awesome configuration directory, usually ~/.config/awesome)
1. Clone the repository:
git clone https://github.com/guotsuan/awesome-revelation revelation
2. Include it at the top of your rc.lua file:
`local revelation=require("revelation")`
3. **Important: Add `revelation.init()` after `beautiful.init()`**
3. Define a global keybinding (e. g. `ModKey + e`) for revelation in your rc.lua:
globalkeys = awful.util.table.join(
awful.key({ modkey, }, "Left", awful.tag.viewprev ),
awful.key({ modkey, }, "Right", awful.tag.viewnext ),
awful.key({ modkey, }, "Escape", awful.tag.history.restore),
awful.key({ modkey, }, "e", revelation),
awful.key({ modkey, }, "j",
function ()
awful.client.focus.byidx( 1)
if client.focus then client.focus:raise() end
end),
**NOTE:** Always double check the key binding syntax against the version of
Awesome which you are using.
4. Restart Awesome (usually __Modkey + Control + r__) and try the keybinding __Modkey + e__.
It should bring up all clients from the current tags on all screens and set the layout to fair.
You can focus clients with the __cursor__ keys, and then press the __left__ button to select,
or you can directly focus a client by pressing the corresponding key shown in the hint box.
Press the right mouse button to zoom the client or __Escape__ to abort.
### Configuration
Revelation's configuration is done through the init() function
There are three basic settings, shown with default values:
-- The name of the tag created for the 'exposed' view
revelation.tag_name = 'Revelation'
-- A table of matcher functions (used in client filtering)
revelation.exact = awful.rules.match
revelation.any = awful.rules.match_any
-- Character order for selecting clients
revelation.charorder = "jkluiopyhnmfdsatgvcewqzx1234567890",
The rule matching functions must conform to `awful.rules.match` prototypes.
For client matching rules, we follow the same syntax as awful.rules expects.
If `rule.any == true`, then we call the `config.match.any` function.
to change the settings, use:
revelation.init({tag_name = ..., match = {...}, charorder = ...})
### Examples
All clients:
awful.key({modkey}, "e", revelation)
To match all urxvt terminals:
awful.key({modkey}, "e", function()
revelation({rule={class="URxvt"}})
end)
To match clients with class 'foo' or 'bar':
awful.key({modkey}, "e", function()
revelation({
rule{class={"foo", "bar"},
any=true}
})
end)
To exclude the clients, we set:
awful.key({modkey}, "e", function()
revelation({rule={class="conky"}, is_excluded=true})
end)
To set only collect clients from current tag
awful.key({modkey}, "e", function()
revelation({rule={class="conky"}, is_excluded=true,
curr_tag_only=true})
end)
## Credits
### Maintenance
* Quan Guo <guotsuan@gmail.com>
* Perry Hargrave <resixian@gmail.com>
### Contributions, many thanks!
* Daniel Hahler <github@thequod.de>
* Yauhen Kirylau
* Nikola Petrov <nikolavp@gmail.com>
### Original authors
* Espen Wiborg <espenhw@grumblesmurf.org>
* Julien Danjou <julien@danjou.info>
(c) 20013-2014 Quan Guo
(c) 2009-12 Perry Hargrave
(c) 2008 Espen Wiborg, Julien Danjou

View File

@ -1,508 +0,0 @@
-- revelation.lua
--
-- Library that implements Expose like behavior.
--
-- @author Perry Hargrave resixian@gmail.com
-- @author Espen Wiborg espenhw@grumblesmurf.org
-- @author Julien Danjou julien@danjou.info
-- @auther Quan Guo guotsuan@gmail.com
--
-- @copyright 2008 Espen Wiborg, Julien Danjou
-- @copyright 2015 Quan Guo
--
local beautiful = require("beautiful")
local wibox = require("wibox")
local awful = require('awful')
local aw_rules = require('awful.rules')
local pairs = pairs
local setmetatable = setmetatable
local naughty = require("naughty")
local table = table
local clock = os.clock
local tostring = tostring
local capi = {
awesome = awesome,
tag = tag,
client = client,
keygrabber = keygrabber,
mousegrabber = mousegrabber,
mouse = mouse,
screen = screen
}
-- disable for now.
-- It seems there is not way to pass err handling function into the delayed_call()
local function debuginfo(message)
message = message or "No information available"
nid = naughty.notify({ text = tostring(message), timeout = 10 })
end
local delayed_call = (type(timer) ~= 'table' and require("gears.timer").delayed_call)
local view_only_func
local toggle_tag_func
local jump_to_func
if type(awful.client.object) == 'table' then
view_only_func = function (tag) tag:view_only() end
toggle_tag_func = function (t, c) c:toggle_tag(t) end
jump_to_func = function(c) c:jump_to() end
else
view_only_func = function (tag) awful.tag.viewonly(tag) end
toggle_tag_func = function (t, c) awful.client.toggletag(t, c) end
jump_to_func = function(c) awful.client.jumpto(c) end
end
local hintbox = {} -- Table of letter wiboxes with characters as the keys
local hintindex = {} -- Table of visible clients with the hint letter as the keys
local clients = {} --Table of clients to be exposed after fitlering
local clientData = {} -- table that holds the positions and sizes of floating clients
local revelation = {
-- Name of expose tag.
tag_name = "Revelation",
charorder = "jkluiopyhnmfdsatgvcewqzx1234567890",
-- Match function can be defined by user.
-- Must accept a `rule` and `client` and return `boolean`.
-- The rule forms follow `awful.rules` syntax except we also check the
-- special `rule.any` key. If its true, then we use the `match.any` function
-- for comparison.
match = {
exact = aw_rules.match,
any = aw_rules.match_any
},
property_to_watch={
minimized = false,
fullscreen = false,
maximized_horizontal = false,
maximized_vertical = false,
sticky = false,
ontop = false,
above = false,
below = false,
},
tags_status = {},
is_excluded = false,
curr_tag_only = false,
font = "monospace 20",
fg = beautiful.revelation_fg_normal or beautiful.fg_normal or "#DCDCCC",
bg = beautiful.revelation_bg_normal or beautiful.bg_normal or "#000000",
border_color = beautiful.revelation_border_color or beautiful.border_focus or "#DCDCCC",
border_width = beautiful.revelation_border_width or beautiful.border_width or 2,
hintsize = (type(beautiful.xresources) == 'table' and beautiful.xresources.apply_dpi(beautiful.revelation_hintsize or 50) or 60)
}
-- Executed when user selects a client from expose view.
--
-- @param restore Function to reset the current tags view.
local function selectfn(_, t, zt)
return function(c)
revelation.restore(t, zt)
-- Focus and raise
--
if type(delayed_call) == 'function' then
capi.awesome.emit_signal("refresh")
end
if awful.util.table.hasitem(hintindex, c) then
if c.minimized then
c.minimized = false
end
jump_to_func(c)
end
end
end
-- Tags all matching clients with tag t
-- @param rule The rule. Conforms to awful.rules syntax.
-- @param clients A table of clients to check.
-- @param t The tag to give matching clients.
local function match_clients(rule, _clients, t, is_excluded)
local mfc = rule.any and revelation.match.any or revelation.match.exact
local mf = is_excluded and function(c,_rule) return not mfc(c,_rule) end or mfc
local flt
for _, c in pairs(_clients) do
if mf(c, rule) then
-- Store geometry before setting their tags
clientData[c] = {}
clientData[c]["geometry"] = c:geometry()
flt = awful.client.property.get(c, "floating")
if flt ~= nil then
clientData[c]["floating"] = flt
awful.client.property.set(c, "floating", false)
end
for k,v in pairs(revelation.property_to_watch) do
clientData[c][k] = c[k]
c[k] = v
end
toggle_tag_func(t, c)
if c:isvisible() then
table.insert(clients, c)
end
end
end
end
-- Implement Exposé (ala Mac OS X).
--
-- @param rule A table with key and value to match. [{class=""}]
function revelation.expose(args)
args = args or {}
local rule = args.rule or {}
local is_excluded = args.is_excluded or revelation.is_excluded
local curr_tag_only = args.curr_tag_only or revelation.curr_tag_only
local t={}
local zt={}
clients = {}
clientData = {}
for scr=1,capi.screen.count() do
t[scr] = awful.tag.new({revelation.tag_name},
scr, awful.layout.suit.fair)[1]
zt[scr] = awful.tag.new({revelation.tag_name.."_zoom"},
scr, awful.layout.suit.fair)[1]
if curr_tag_only then
match_clients(rule, awful.client.visible(scr), t[scr], is_excluded)
else
match_clients(rule, capi.client.get(scr), t[scr], is_excluded)
end
view_only_func(t[scr])
end
if type(delayed_call) == 'function' then
capi.awesome.emit_signal("refresh")
end
-- No need for awesome WM 3.5.6: capi.awesome.emit_signal("refresh")
--
local status, err=pcall(revelation.expose_callback, t, zt, clients)
--revelation.expose_callback(t, zt)
if not status then
debuginfo('Oops!, something is wrong in revelation.expose_callback!')
if err.msg then
debuginfo(err.msg)
end
if err.code then
debuginfo('error code is '.. tostring(err.code))
end
revelation.restore(t, zt)
end
end
function revelation.restore(t, zt)
for scr=1, capi.screen.count() do
awful.tag.history.restore(scr)
t[scr].screen = nil
end
capi.keygrabber.stop()
capi.mousegrabber.stop()
for _, c in pairs(clients) do
if clientData[c] then
for k,v in pairs(clientData[c]) do
if v ~= nil then
if k== "geometry" then
c:geometry(v)
elseif k == "floating" then
awful.client.property.set(c, "floating", v)
else
c[k]=v
end
end
end
end
end
for scr=1, capi.screen.count() do
t[scr].activated = false
zt[scr].activated = false
end
for i,j in pairs(hintindex) do
hintbox[i].visible = false
end
end
local function hintbox_display_toggle(c, show)
for char, thisclient in pairs(hintindex) do
if char and char ~= c then
hintindex[char] = thisclient
if show then
hintbox[char].visible = true
else
hintbox[char].visible = false
end
end
end
end
local function hintbox_pos(char)
local client = hintindex[char]
local geom = client:geometry()
hintbox[char].x = math.floor(geom.x + geom.width/2 - revelation.hintsize/2)
hintbox[char].y = math.floor(geom.y + geom.height/2 - revelation.hintsize/2)
end
function revelation.expose_callback(t, zt, clientlist)
hintindex = {}
for i,thisclient in pairs(clientlist) do
-- Move wiboxes to center of visible windows and populate hintindex
local char = revelation.charorder:sub(i,i)
if char and char ~= '' then
hintindex[char] = thisclient
hintbox_pos(char)
hintbox[char].visible = true
hintbox[char].screen = thisclient.screen
end
end
local zoomed = false
local zoomedClient = nil
local key_char_zoomed = nil
capi.keygrabber.run(function (mod, key, event)
local c
if event == "release" then return true end
if awful.util.table.hasitem(mod, "Shift") then
key_char = string.lower(key)
c = hintindex[key_char]
if not zoomed and c ~= nil then
--debuginfo(c.screen)
view_only_func(zt[c.screen.index or c.screen])
toggle_tag_func(zt[c.screen.index or c.screen], c)
zoomedClient = c
key_char_zoomed = key_char
zoomed = true
-- update the position of this hintbox, since it is zoomed
if type(delayed_call) == 'function' then
capi.awesome.emit_signal("refresh")
end
hintbox_pos(key_char)
hintbox_display_toggle(key_char, false)
elseif zoomedClient ~= nil then
awful.tag.history.restore(zoomedClient.screen.index or zoomedClient.screen)
toggle_tag_func(zt[zoomedClient.screen.index or zoomedClient.screen], zoomedClient)
hintbox_display_toggle(key_char_zoomed, true)
if type(delayed_call) == 'function' then
capi.awesome.emit_signal("refresh")
end
hintbox_pos(key_char_zoomed)
zoomedClient = nil
zoomed = false
key_char_zoomed = nil
end
end
if hintindex[key] then
--client.focus = hintindex[key]
--hintindex[key]:raise()
selectfn(restore,t, zt)(hintindex[key])
for i,j in pairs(hintindex) do
hintbox[i].visible = false
end
return false
end
if key == "Escape" then
if zoomedClient ~= nil then
awful.tag.history.restore(zoomedClient.screen)
toggle_tag_func(zt[zoomedClient.screen.index or zoomedClient.screen], zoomedClient)
hintbox_display_toggle(string.lower(key), true)
if type(delayed_call) == 'function' then
capi.awesome.emit_signal("refresh")
end
hintbox_pos(key_char_zoomed)
zoomedClient = nil
zoomed = false
else
for i,j in pairs(hintindex) do
hintbox[i].visible = false
end
revelation.restore(t, zt)
return false
end
end
return true
end)
local pressedMiddle = false
local lastClient = nil
capi.mousegrabber.run(function(mouse)
local c
if type(awful.client.object) == 'table' then
c = capi.mouse.current_client
else
c = awful.mouse.client_under_pointer()
end
if c then
lastClient = c
else
local current_wibox = capi.mouse.current_wibox
if current_wibox then
for i = 1, #revelation.charorder do
local char = revelation.charorder:sub(i,i)
if hintbox[char] == current_wibox then
c = lastClient
break
end
end
end
end
local key_char = awful.util.table.hasitem(hintindex, c)
if mouse.buttons[1] == true then
if c ~= nil then
selectfn(restore, t, zt)(c)
for i,j in pairs(hintindex) do
hintbox[i].visible = false
end
return false
else
return true
end
elseif mouse.buttons[2] == true and pressedMiddle == false and c ~= nil then
-- is true whenever the button is down.
pressedMiddle = true
-- extra variable needed to prevent script from spam-closing windows
--
if zoomed == true and zoomedClient ~=nil then
awful.tag.history.restore(zoomedClient.screen.index or zoomedClient.screen)
toggle_tag_func(zt[zoomedClient.screen.index or zoomedClient.screen], zoomedClient)
end
c:kill()
hintbox[key_char].visible = false
hintindex[key_char] = nil
local pos = awful.util.table.hasitem(clients, c)
table.remove(clients, pos)
if zoomed == true and zoomedClient ~=nil then
hintbox_display_toggle(key_char_zoomed, true)
zoomedClient = nil
zoomed = false
key_char_zoomed = nil
end
return true
elseif mouse.buttons[2] == false and pressedMiddle == true then
pressedMiddle = false
for key, _ in pairs(hintindex) do
hintbox_pos(key)
end
elseif mouse.buttons[3] == true then
if not zoomed and c ~= nil then
view_only_func(zt[c.screen.index or c.screen])
toggle_tag_func(zt[c.screen.index or c.screen], c)
if key_char ~= nil then
hintbox_display_toggle(key_char, false)
if type(delayed_call) == 'function' then
capi.awesome.emit_signal("refresh")
end
hintbox_pos(key_char)
end
zoomedClient = c
zoomed = true
key_char_zoomed = key_char
elseif zoomedClient ~= nil then
awful.tag.history.restore(zoomedClient.screen.index or zoomedClient.screen)
toggle_tag_func(zt[zoomedClient.screen.index or zoomedClient.screen], zoomedClient)
hintbox_display_toggle(key_char_zoomed, true)
if type(delayed_call) == 'function' then
capi.awesome.emit_signal("refresh")
end
hintbox_pos(key_char_zoomed)
zoomedClient = nil
zoomed = false
key_char_zoomed = nil
end
end
return true
--Strange but on my machine only fleur worked as a string.
--stole it from
--https://github.com/Elv13/awesome-configs/blob/master/widgets/layout/desktopLayout.lua#L175
end,"fleur")
end
-- Create the wiboxes, but don't show them
--
function revelation.init(args)
local letterbox = {}
args = args or {}
revelation.tag_name = args.tag_name or revelation.tag_name
if args.match then
revelation.match.exact = args.match.exact or revelation.match.exact
revelation.match.any = args.match.any or revelation.match.any
end
revelation.charorder = args.charorder or revelation.charorder
for i = 1, #revelation.charorder do
local char = revelation.charorder:sub(i,i)
hintbox[char] = wibox({
fg=revelation.fg,
bg=revelation.bg,
border_color=revelation.border_color,
border_width=revelation.border_width
})
hintbox[char].ontop = true
hintbox[char].width = revelation.hintsize
hintbox[char].height = revelation.hintsize
letterbox[char] = wibox.widget.textbox()
letterbox[char]:set_markup(char.upper(char))
letterbox[char]:set_font(revelation.font)
letterbox[char]:set_align("center")
hintbox[char]:set_widget(letterbox[char])
end
end
setmetatable(revelation, { __call = function(_, ...) return revelation.expose(...) end })
return revelation

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -0,0 +1,228 @@
-----------------------------------------------------------------------------------------------------------------------
-- Shared settings for colored themes --
-----------------------------------------------------------------------------------------------------------------------
local awful = require("awful")
-- This theme was inherited from another with overwriting some values
-- Check parent theme to find full settings list and its description
local theme = require("themes/colorless/theme")
-- Common
-----------------------------------------------------------------------------------------------------------------------
theme.path = awful.util.get_configuration_dir() .. "themes/colored"
-- Main config
------------------------------------------------------------
theme.panel_height = 36 -- panel height
theme.border_width = 4 -- window border width
theme.useless_gap = 4 -- useless gap
-- Fonts
------------------------------------------------------------
theme.fonts = {
main = "Roboto 13", -- main font
menu = "Roboto 13", -- main menu font
tooltip = "Roboto 13", -- tooltip font
notify = "Play bold 14", -- redflat notify popup font
clock = "Play bold 12", -- textclock widget font
qlaunch = "Play bold 14", -- quick launch key label font
keychain = "Play bold 16", -- key sequence tip font
title = "Roboto bold 13", -- widget titles font
tiny = "Roboto bold 10", -- smallest font for widgets
titlebar = "Roboto bold 13", -- client titlebar font
hotkeys = {
main = "Roboto 14", -- hotkeys helper main font
key = "Iosevka Term Light 14", -- hotkeys helper key font (use monospace for align)
title = "Roboto bold 16", -- hotkeys helper group title font
},
player = {
main = "Play bold 13", -- player widget main font
time = "Play bold 15", -- player widget current time font
},
}
theme.cairo_fonts = {
tag = { font = "Play", size = 16, face = 1 }, -- tag widget font
appswitcher = { font = "Play", size = 20, face = 1 }, -- appswitcher widget font
navigator = {
title = { font = "Play", size = 28, face = 1, slant = 0 }, -- window navigation title font
main = { font = "Play", size = 22, face = 1, slant = 0 } -- window navigation main font
},
desktop = {
textbox = { font = "prototype", size = 24, face = 0 },
},
}
-- Widget icons
--------------------------------------------------------------------------------
theme.wicon = {
battery = theme.path .. "/widget/battery.svg",
wireless = theme.path .. "/widget/wireless.svg",
monitor = theme.path .. "/widget/monitor.svg",
audio = theme.path .. "/widget/audio.svg",
headphones = theme.path .. "/widget/headphones.svg",
brightness = theme.path .. "/widget/brightness.svg",
keyboard = theme.path .. "/widget/keyboard.svg",
mail = theme.path .. "/widget/mail.svg",
package = theme.path .. "/widget/package.svg",
search = theme.path .. "/widget/search.svg",
mute = theme.path .. "/widget/mute.svg",
up = theme.path .. "/widget/up.svg",
down = theme.path .. "/widget/down.svg",
onscreen = theme.path .. "/widget/onscreen.svg",
resize = {
full = theme.path .. "/widget/resize/full.svg",
horizontal = theme.path .. "/widget/resize/horizontal.svg",
vertical = theme.path .. "/widget/resize/vertical.svg",
},
updates = {
normal = theme.path .. "/widget/updates/normal.svg",
silent = theme.path .. "/widget/updates/silent.svg",
weekly = theme.path .. "/widget/updates/weekly.svg",
daily = theme.path .. "/widget/updates/daily.svg",
},
}
-- Main theme settings
-- Make it updatabele since it may depends on common and ancestor theme settings
-----------------------------------------------------------------------------------------------------------------------
-- overwrite ancestor update settings with current theme values
function theme:update()
-- setup parent theme settings
self:init()
-- Set hotkey helper size according current fonts and keys scheme
--------------------------------------------------------------------------------
self.service.navigator.keytip["fairv"] = { geometry = { width = 600 }, exit = true }
self.service.navigator.keytip["fairh"] = self.service.navigator.keytip["fairv"]
self.service.navigator.keytip["tile"] = { geometry = { width = 600 }, exit = true }
self.service.navigator.keytip["tileleft"] = self.service.navigator.keytip["tile"]
self.service.navigator.keytip["tiletop"] = self.service.navigator.keytip["tile"]
self.service.navigator.keytip["tilebottom"] = self.service.navigator.keytip["tile"]
self.service.navigator.keytip["grid"] = { geometry = { width = 1400 }, column = 2, exit = true }
self.service.navigator.keytip["usermap"] = { geometry = { width = 1400 }, column = 2, exit = true }
-- Desktop file parser
--------------------------------------------------------------------------------
self.service.dfparser.icons.theme = self.homedir .. "/.icons/ACYLS"
self.service.dfparser.icons.custom_only = true
self.service.dfparser.icons.scalable_only = true
-- Menu config
--------------------------------------------------------------------------------
self.menu.icon_margin = { 4, 7, 7, 8 }
self.menu.keytip = { geometry = { width = 400 } }
-- Panel widgets
--------------------------------------------------------------------------------
-- Double icon indicator
------------------------------------------------------------
self.gauge.icon.double.icon1 = self.wicon.down
self.gauge.icon.double.icon2 = self.wicon.up
self.gauge.icon.double.igap = -6
-- Volume control
------------------------------------------------------------
self.gauge.audio.red.icon = { volume = self.wicon.audio, mute = self.wicon.mute }
self.gauge.audio.blue.icon = self.wicon.headphones
-- Pulseaudio volume control
------------------------------------------------------------
self.widget.pulse.notify = { icon = self.wicon.audio }
-- Keyboard layout indicator
------------------------------------------------------------
self.widget.keyboard.icon = self.wicon.keyboard
-- Mail indicator
------------------------------------------------------------
self.widget.mail.icon = self.wicon.mail
self.widget.mail.notify = { icon = self.wicon.mail }
-- System updates indicator
------------------------------------------------------------
self.widget.updates.notify = { icon = self.wicon.package }
self.widget.updates.wibox.icon.package = self.wicon.package
self.widget.updates.wibox.icon.normal = self.wicon.updates.normal
self.widget.updates.wibox.icon.silent = self.wicon.updates.silent
self.widget.updates.wibox.icon.weekly = self.wicon.updates.weekly
self.widget.updates.wibox.icon.daily = self.wicon.updates.daily
-- Layoutbox
------------------------------------------------------------
self.widget.layoutbox.menu.icon_margin = { 8, 12, 9, 9 }
self.widget.layoutbox.menu.width = 200
-- Tasklist
------------------------------------------------------------
self.widget.tasklist.winmenu.hide_action = { min = false, move = false }
self.widget.tasklist.tasktip.margin = { 8, 8, 4, 4 }
self.widget.tasklist.winmenu.tagmenu.width = 150
-- Floating widgets
--------------------------------------------------------------------------------
-- Top processes
------------------------------------------------------------
self.float.top.set_position = function(wibox)
local geometry = { x = mouse.screen.workarea.x + mouse.screen.workarea.width,
y = mouse.screen.workarea.y + mouse.screen.workarea.height }
wibox:geometry(geometry)
end
-- Application runner
------------------------------------------------------------
self.float.apprunner.title_icon = self.wicon.search
self.float.apprunner.keytip = { geometry = { width = 400 } }
-- Application switcher
------------------------------------------------------------
self.float.appswitcher.keytip = { geometry = { width = 400 }, exit = true }
-- Quick launcher
------------------------------------------------------------
self.float.qlaunch.keytip = { geometry = { width = 600 } }
-- Hotkeys helper
------------------------------------------------------------
self.float.hotkeys.geometry = { width = 1800 }
self.float.hotkeys.heights = { key = 26, title = 32 }
-- Key sequence tip
------------------------------------------------------------
self.float.keychain.border_width = 0
self.float.keychain.keytip = { geometry = { width = 1200 }, column = 2 }
-- Brightness control
------------------------------------------------------------
self.float.brightness.notify = { icon = self.wicon.brightness }
-- Floating window control helper
------------------------------------------------------------
self.float.control.icon = {
onscreen = self.wicon.onscreen,
resize = {
self.wicon.resize.full,
self.wicon.resize.horizontal,
self.wicon.resize.vertical,
},
}
-- Default awesome theme vars
--------------------------------------------------------------------------------
self.enable_spawn_cursor = false
end
-- End
-----------------------------------------------------------------------------------------------------------------------
theme:update()
return theme

View File

@ -0,0 +1,8 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(1.0666667 0 0 1.0666667 -7.655467 -379.42721)">
<path d="m26.103 394.151-9.961-9.962h-8.965v-11.953h8.965l9.961-9.962z"/>
<path d="m34.567 369.749-2.816 2.816c1.447 1.446 2.344 3.444 2.344 5.647s-.896 4.201-2.344 5.646l2.816 2.816c2.168-2.168 3.512-5.161 3.512-8.463s-1.344-6.293-3.512-8.462z"/>
<path d="m39.704 365.025-2.816 2.816c2.645 2.645 4.283 6.297 4.283 10.324s-1.639 7.68-4.283 10.324l2.816 2.816c3.365-3.367 5.451-8.015 5.451-13.141 0-5.123-2.086-9.771-5.451-13.139z"/>
<path d="m44.56 359.854-2.816 2.816c3.982 3.982 6.449 9.48 6.449 15.543s-2.467 11.561-6.447 15.543l2.814 2.816c4.705-4.704 7.617-11.197 7.617-18.359s-2.914-13.655-7.617-18.359z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 793 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m32 4h-4v-2c0-1.098-.898-2-2-2h-24c-1.102 0-2 .902-2 2v12c0 1.102.898 2 2 2h24c1.102 0 2-.898 2-2v-2h4z" fill="#a0a0a0" transform="matrix(0 -1.5 2 0 8 48)"/>
</svg>

After

Width:  |  Height:  |  Size: 240 B

View File

@ -0,0 +1,3 @@
<svg height="48" viewBox="0 0 48 48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m24 0c-1.3 0-2.3 1-2.3 2.3v4.7c0 1.3 1 2.3 2.3 2.3s2.3-1 2.3-2.3v-4.7c0-1.3-1-2.3-2.3-2.3zm-15.3 6.4c-.6 0-1.2.2-1.7.6-.9.9-.9 2.4 0 3.3l3.3 3.3c.5.5 1.1.7 1.7.7s1.1-.2 1.6-.7c.9-.9.9-2.4 0-3.3l-3.3-3.3c-.4-.4-1-.6-1.6-.6zm30.6 0c-.6 0-1.2.2-1.6.6l-3.3 3.3c-.9.9-.9 2.4 0 3.3.5.5 1 .7 1.6.7s1.2-.2 1.7-.7l3.3-3.3c.9-.9.9-2.4 0-3.3-.5-.4-1.1-.6-1.7-.6zm-15.3 7.5c-5.6 0-10.1 4.6-10.1 10.1 0 5.6 4.5 10.1 10.1 10.1 5.5 0 10.1-4.5 10.1-10.1 0-5.5-4.6-10.1-10.1-10.1zm-21.7 7.8c-1.3 0-2.3 1-2.3 2.3s1 2.3 2.3 2.3h4.7c1.2 0 2.3-1 2.3-2.3s-1.1-2.3-2.3-2.3zm38.7 0c-1.3 0-2.3 1-2.3 2.3s1 2.3 2.3 2.3h4.7c1.3 0 2.3-1 2.3-2.3s-1-2.3-2.3-2.3zm-29 12c-.6 0-1.2.2-1.7.7l-3.3 3.3c-.9.9-.9 2.4 0 3.3.5.4 1.1.7 1.7.7s1.2-.3 1.6-.7l3.3-3.3c.9-.9.9-2.4 0-3.3-.5-.5-1-.7-1.6-.7zm24 0c-.6 0-1.1.2-1.6.7-.9.9-.9 2.4 0 3.3l3.3 3.3c.4.4 1 .7 1.6.7s1.2-.3 1.7-.7c.9-.9.9-2.4 0-3.3l-3.3-3.3c-.5-.5-1.1-.7-1.7-.7zm-12 5c-1.3 0-2.3 1.1-2.3 2.3v4.7c0 1.3 1 2.3 2.3 2.3s2.3-1 2.3-2.3v-4.7c0-1.2-1-2.3-2.3-2.3z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,8 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" fill-rule="evenodd">
<path d="m24 48-13-9v-5l13 9 13-9v5z"/>
<path d="m24 36.6667-13-9v-5l13 9 13-9v5z"/>
<path d="m24 25.3333-13-9v-5l13 9 13-9v5z"/>
<path d="m24 14-13-9v-5l13 9 13-9v5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 305 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m30 16h-2v-4c0-6.625-5.375-12-12-12s-12 5.375-12 12v4h-2c-1.105 0-2 .895-2 2v8c0 1.105.895 2 2 2h6v-12-4c0-4.414 3.586-8 8-8s8 3.586 8 8v4 12h6c1.105 0 2-.895 2-2v-8c0-1.105-.895-2-2-2z" fill="#a0a0a0" transform="matrix(1.5 0 0 1.5 0 3)"/>
</svg>

After

Width:  |  Height:  |  Size: 322 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m4.2630208 9.875c-1.2414899 0-2.2630208 1.088475-2.2630208 2.463542v23.947916c0 1.375067 1.021531 2.463544 2.2630208 2.463542h39.4739582c1.24149 0 2.26302-1.088476 2.263021-2.463542v-23.947916c0-1.375067-1.021532-2.463542-2.263021-2.463542zm1.0598959 4.841146h4.3828125v3.666667h-4.3828125zm6.5885413 0h4.382813v3.666667h-4.382813zm6.588542 0h4.411458v3.666667h-4.411458zm6.588542 0h4.411458v3.666667h-4.411458zm6.617187 0h4.382813v3.666667h-4.382813zm6.588542 0h4.382812v3.666667h-4.382812zm-29.6770835 7.763021h4.3828125v3.666666h-4.3828125zm6.5885415 0h4.382813v3.666666h-4.382813zm6.588542 0h4.411458v3.666666h-4.411458zm6.617187 0h4.382813v3.666666h-4.382813zm6.588542 0h4.382812v3.666666h-4.382812zm-29.6770833 7.763021h5.4713543v3.666666h-5.4713543zm7.6770833 0h20.882812v3.666666h-20.882812zm23.088542 0h6.588541v3.666666h-6.588541z" fill="#a0a0a0" transform="matrix(1.0909091 0 0 1.1774892 -2.181818 -4.627706)"/>
</svg>

After

Width:  |  Height:  |  Size: 1005 B

View File

@ -0,0 +1,8 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(1.066643 0 0 1.0990077 -392.68889 -194.82397)">
<path d="m412.51 211.853c.354.375.645.26.645-.256v-24.754c0-.516-.321-.664-.714-.329l-12.536 10.671c-.394.334-.425.914-.07 1.289z"/>
<path d="m410.761 184.249c.394-.334.292-.607-.223-.607h-40.092c-.515 0-.614.271-.219.602l19.701 16.524c.396.331 1.041.329 1.434-.006z"/>
<path d="m368.154 211.597c0 .516.29.631.645.256l12.625-13.326c.354-.375.321-.951-.074-1.283l-12.477-10.465c-.396-.332-.719-.181-.719.335z"/>
<path d="m392.28 203.674c-.393.335-.979.759-1.302.943 0 0 0 0-.324 0-.321 0-.321 0-.321 0-.32-.181-.905-.6-1.301-.931l-4.086-3.428c-.396-.332-1.009-.297-1.363.078l-12.847 13.561c-.354.375-.223.682.293.682h39.25c.516 0 .647-.307.293-.682l-12.883-13.599c-.354-.374-.966-.407-1.358-.073z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 879 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m7.2708333 4.6313875c-2.9176155 0-5.2708333 2.2969107-5.2708333 5.1276047v28.3307288c0 2.830694 2.3532178 5.098958 5.2708333 5.098958h33.4583337c2.917615 0 5.270833-2.268263 5.270833-5.098958v-28.3307288c0-2.8306944-2.353216-5.1276047-5.270833-5.1276047zm2.40625 4.2968747h28.6458337c1.872792 0 3.380208 1.4920968 3.380208 3.3515628v23.260416c.000001 1.859466-1.507414 3.351563-3.380208 3.351563h-28.6458337c-1.872794-.000001-3.3802083-1.492097-3.3802083-3.351563v-23.260416c0-1.859466 1.5074148-3.3515628 3.3802083-3.3515628zm19.0494787.34375c-1.049495.097-1.934293.8229868-2.234375 1.8333338l-5.84375 19.049479-1.947916-2.835938c-.480134-.698051-1.272561-1.11568-2.119792-1.117187h-7.4192707c-.9297575-.01314-1.794308.485987-2.2630208 1.289062-.4687129.803076-.4687129 1.77505 0 2.578125.4687128.803075 1.3332633 1.302201 2.2630208 1.289063h6.0729167l4.153646 6.130208c.558717.828544 1.533342 1.270525 2.520833 1.117188.987491-.153338 1.809991-.874375 2.091146-1.833334l5.15625-16.815104 3.552083 9.710938c.370753 1.010343 1.330046 1.684133 2.40625 1.690104h3.723959c.929757.01314 1.794308-.485987 2.26302-1.289063.468714-.803076.468714-1.77505 0-2.578125-.468712-.803074-1.333263-1.302201-2.26302-1.289062h-1.919271l-5.557292-15.239583c-.396752-1.0932728-1.476305-1.7855958-2.635417-1.6901048z" fill="#a0a0a0" transform="matrix(1.0909091 0 0 1.0909091 -2.181818 -2.083673)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,6 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(1.0666311 0 0 1.0666311 -7.654145 -316.52731)">
<path d="m27.534 302.112v34.286l-10.714-10.714h-9.644v-12.857h9.644z"/>
<path d="m47.081 319.255 4.918-4.917c.238-.24.238-.631 0-.87l-2.607-2.606c-.237-.238-.629-.238-.866 0l-4.919 4.918-4.92-4.918c-.236-.238-.629-.238-.867 0l-2.605 2.606c-.239.239-.239.63 0 .87l4.917 4.917-4.917 4.917c-.239.24-.239.632 0 .87l2.607 2.607c.236.236.629.236.867 0l4.918-4.919 4.916 4.919c.24.236.632.236.869 0l2.607-2.607c.236-.237.236-.63 0-.87z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 604 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m5.006 3.996c-2.773 0-5.006 2.231-5.006 5v30.004c0 2.78 2.233 5 5.006 5h37.984c2.78 0 5.01-2.22 5.01-5v-30.004c0-2.769-2.23-5-5.01-5zm4.33 6.004h29.324c1.85 0 3.34 1.49 3.34 3.34v21.32c0 1.85-1.49 3.34-3.34 3.34h-29.324c-1.848 0-3.336-1.49-3.336-3.34v-21.32c0-1.85 1.488-3.34 3.336-3.34zm7.664 7-7 7 7 7v-4h6v-6h-6zm14 0v4h-6v6h6v4l7-7z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 437 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m24.306453 10.754002-17.2642905 3.823024c-.1844549.04197-.3403576.164469-.4247805.333756l-4.551219 8.829365c-.0973.197298-.087362.420981.030342.606829.1177036.185848.3261907.307045.5461463.303414h4.2177057v11.590438c.00335.289729-.2819262.539962 0 .606829l17.870878 4.278146c.11873.03577.245366.03577.364097 0l17.567704-6.098633c.257881-.08919.429247-.333998.424781-.606829v-11.761814h2.275609c.201509.0014.395859-.0808.515805-.242731.119947-.161928.15107-.384128.09103-.576488l-3.276878-8.081502c-.08071-.208058-.26529-.358028-.485463-.394439l-17.719418-2.609365c-.06036-.0088-.121684-.0088-.182049 0zm-.910244 2.396975v25.244095l-15.261754-3.51961v-18.2959zm2.214927 2.27561 2.761073 6.432389c.09079.225767.303282.379232.546146.394439l11.924194.364098v10.831901l-15.231413 5.188389zm-18.7510223 1.790146.0002428 6.235291h-3.1860961zm10.9532673 1.45639-5.704195.819219v7.221268l-2.184585.09102 5.158048 8.374243 6.493073-8.859706-3.762341.121366v-7.767414z" fill="#a0a0a0" transform="matrix(1.090909 0 0 1.090909 -2.181817 -4.309106)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m40.96 7.022h-15.55l4.95 4.951-7.77 7.78 5.65 5.65 7.77-7.77 4.95 4.95zm-20.5.715-12.723 12.723 4.243 4.25 12.73-12.73zm15.56 15.553-12.73 12.73 4.25 4.24 12.72-12.72zm-16.27-.7-7.77 7.77-4.951-4.95v15.57h15.551l-4.95-4.95 7.78-7.78z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 334 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m48 23.99-11-10.99v7h-11v8h10.99v7zm-15-13.99h-18v6h18zm0 22h-18v6h18zm-11.01-12h-10.99v-7l-11 11.01 10.99 10.99v-7h11z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 220 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m23.99 0-10.99 11h7v11h8v-10.99l7-.01zm-13.99 15v18h6v-18zm22 0v18h6v-18zm-12 11.01v10.99h-7l11.01 11 10.99-10.99h-7v-11z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 222 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m28.417332 2.3030281c-9.711053 0-17.61212 7.8820939-17.61212 17.5698269 0 4.31388 1.586616 8.25685 4.182142 11.311678l-4.182142 1.292764-8.2464781 7.668436c-.5864158.546007-1.0897131 3.290669.5595824 4.936005 1.9437135 1.939046 4.4173942 1.125259 4.9478866.558239l7.6868951-8.226675 1.295875-4.1721c3.072454 2.596703 7.031164 4.1721 11.368359 4.1721 9.711052.000001 17.582668-7.852714 17.582668-17.540447-.000001-9.687733-7.871616-17.5698269-17.582668-17.5698269zm0 4.4071474c7.283289 0 13.194364 5.8968805 13.194364 13.1626795 0 7.2658-5.911076 13.162679-13.194364 13.16268-7.283289 0-13.194364-5.89688-13.194364-13.16268 0-7.265799 5.911074-13.1626794 13.194364-13.1626795z" fill="#a0a0a0" transform="matrix(1.0909091 0 0 1.0909091 -2.181818 -2.512394)"/>
</svg>

After

Width:  |  Height:  |  Size: 840 B

View File

@ -0,0 +1,8 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" fill-rule="evenodd">
<path d="m24 0 13 9v5l-13-9-13 9v-5z"/>
<path d="m24 11.3333 13 9v5l-13-9-13 9v-5z"/>
<path d="m24 22.6667 13 9v5l-13-9-13 9v-5z"/>
<path d="m24 34 13 9v5l-13-9-13 9v-5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 308 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m24-.009766c-13.25-.0001-23.990134 10.739766-23.990234 23.989766 0 13.25 10.740234 23.99 23.990234 23.99s23.99-10.74 23.99-23.99-10.74-23.989766-23.99-23.989766zm0 5.001766c10.5 0 19.01 8.508 19.01 19.008s-8.51 19.01-19.01 19.01-19.008-8.51-19.008-19.01c.001-10.5 8.508-19.007 19.008-19.008zm0 4.008-2 1.88v8.54a5.008 5.008 0 0 0 -3 4.59 5.008 5.008 0 0 0 5.01 5.01 5.008 5.008 0 0 0 4.35-2.54h7.64l1.78-2.5-1.78-2.5h-7.67a5.008 5.008 0 0 0 -2.33-2.06v-8.54zm-15 13v4h5v-4zm15 0a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2-2 2 2 0 0 1 2-2zm-2 12v5h4v-5z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 652 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m24-.0098c-13.25-.0001-23.9901 10.7398-23.9902 23.9898 0 13.25 10.7402 23.99 23.9902 23.99s23.99-10.74 23.99-23.99-10.74-23.9898-23.99-23.9898zm0 5.0018c10.5 0 19.01 8.508 19.01 19.008s-8.51 19.01-19.01 19.01-19.008-8.51-19.008-19.01c.001-10.5 8.508-19.007 19.008-19.008zm-5 8.008 2 14h6l2-14zm2 17v5h6v-5z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m24-.009766c-13.25-.0001-23.990134 10.739766-23.990234 23.989766 0 13.25 10.740234 23.99 23.990234 23.99s23.99-10.74 23.99-23.99-10.74-23.989766-23.99-23.989766zm0 5.001766c10.5 0 19.01 8.508 19.01 19.008s-8.51 19.01-19.01 19.01-19.008-8.51-19.008-19.01c.001-10.5 8.508-19.007 19.008-19.008zm-8 11.008v3.56l4.44 4.44-4.44 4.45v3.55h3.56l4.44-4.44 4.82 4.44h3.18v-3.55l-4.44-4.45 4.44-4.75v-3.25h-3.55l-4.45 4.44-4.44-4.44z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 523 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m24-.009766c-13.25-.0001-23.990134 10.739766-23.990234 23.989766 0 13.25 10.740234 23.99 23.990234 23.99s23.99-10.74 23.99-23.99-10.74-23.989766-23.99-23.989766zm0 5.001766c10.5 0 19.01 8.508 19.01 19.008s-8.51 19.01-19.01 19.01-19.008-8.51-19.008-19.01c.001-10.5 8.508-19.007 19.008-19.008zm-6.57 10.008-.13 6.7h1.65l.16-1.38c.05-.46.2-.8.45-1.03.26-.24.64-.36 1.14-.36l6.24.12-6.87 15.32 4.79.21 7.57-18.24v-1.34z" fill="#a0a0a0"/>
</svg>

After

Width:  |  Height:  |  Size: 516 B

View File

@ -0,0 +1,3 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m3.375 6.106245c-.7699099 0-1.375.6559947-1.375 1.4666666v31.2888884c0 .810672.6050902 1.466667 1.375 1.466667h10.938889c.76991 0 1.375-.655995 1.375-1.466667v-31.2888884c0-.8106719-.60509-1.4666666-1.375-1.4666666zm30.311111 0c-.76991 0-1.375.6559947-1.375 1.4666666v31.2888884c0 .810672.60509 1.466667 1.375 1.466667h10.938889c.76991 0 1.375-.655995 1.375-1.466667v-31.2888884c0-.8106719-.60509-1.4666666-1.375-1.4666666zm-9.502778 5.469444-.275.397223c-1.732934 2.461023-1.752771 4.82146-1.313889 6.538888.438883 1.717429 1.313889 2.841667 1.313889 2.841667l.305556.366667.763889-.611111-.305556-.366667s-.744438-.964051-1.130555-2.475c-.386118-1.510949-.405955-3.518978 1.161111-5.744444l.275-.397223zm4.705556.03056-.305556.427778c-1.732934 2.461023-1.752771 4.82146-1.313889 6.538888.438883 1.717429 1.344445 2.841667 1.344445 2.841667l.305555.366667.763889-.611111-.305555-.366667s-.774994-.964051-1.161111-2.475c-.386118-1.510949-.3754-3.518978 1.191666-5.744444l.275-.397223zm-9.594445.09167-.275.397223c-1.732934 2.461022-1.752771 4.821459-1.313888 6.538888.438882 1.717428 1.344444 2.841666 1.344444 2.841666l.305556.366667.763888-.611111-.305555-.366667s-.774994-.964051-1.161111-2.475c-.386118-1.510949-.405955-3.518978 1.161111-5.744444l.305555-.397222zm4.094445 13.2-.794445.55.275.397223c1.567066 2.225466 1.547229 4.26405 1.161112 5.775-.386118 1.510941-1.130556 2.444436-1.130556 2.444436l-.305556.397222.733334.611111.305555-.397222s.905562-1.093682 1.344445-2.811111c.438882-1.717428.419045-4.108421-1.313889-6.569444l-.275-.397223zm-4.705556.06111-.794444.55.275.397222c1.567066 2.225466 1.547229 4.264051 1.161111 5.775s-1.130556 2.444444-1.130556 2.444444l-.305555.397222.763889.611112.305555-.397223s.875007-1.093682 1.313889-2.811111c.438883-1.717428.419045-4.108421-1.313889-6.569444zm9.563889.06111-.794444.55.305555.397222c1.567066 2.225466 1.547229 4.264051 1.161111 5.775-.386117 1.510949-1.161111 2.444444-1.161111 2.444444l-.305555.397223.763889.611111.305555-.397223s.905562-1.093682 1.344445-2.811111c.438882-1.717428.419045-4.10842-1.313889-6.569444z" fill="#a0a0a0" transform="matrix(1.0909091 0 0 1.0909091 -2.181818 -1.328025)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -529,14 +529,14 @@ function theme:init()
dotcount = {}, -- redflat dotcount style (see theme.gauge.graph.dots)
border_width = 0, -- floating widget border width
geometry = { height = 40 }, -- floating widget size
screen_gap = 2 * self.useless_gap, -- minimal space from screen edge on floating widget placement
screen_gap = self.useless_gap, -- minimal space from screen edge on floating widget placement
shape = nil, -- wibox shape
color = { wibox = self.color.wibox, border = self.color.wibox },
-- function to define floating widget position when shown
set_position = function(wibox)
local geometry = { x = mouse.screen.workarea.x + mouse.screen.workarea.width,
y = mouse.screen.workarea.y + mouse.screen.workarea.height }
y = mouse.screen.workarea.y }
wibox:geometry(geometry)
end,
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 451 B

View File

@ -1,6 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(0 1 -1 0 48 0)">
<path d="m0 20h20v-20h-20z"/>
<path d="m28 0v28h-28v20h28 20v-20-28zm6 10h8v24 4 4h-32v-8h24z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 B

View File

@ -1,4 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m0 20h20v-20h-20z" fill="#a0a0a0"/>
<path d="m28 0v28h-28v20h28 20v-20-28zm6 10h8v24 4 4h-32v-8h24z" fill="#a0a0a0"/>
</svg>

Before

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

View File

@ -1,6 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(-1 0 0 -1 48 48)">
<path d="m0 20h20v-20h-20z"/>
<path d="m28 0v28h-28v20h28 20v-20-28zm6 10h8v24 4 4h-32v-8h24z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 B

View File

@ -1,6 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(0 -1 1 0 0 48)">
<path d="m0 20h20v-20h-20z"/>
<path d="m28 0v28h-28v20h28 20v-20-28zm6 10h8v24 4 4h-32v-8h24z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 423 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

View File

@ -1,8 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0">
<path d="m0 48h20v-20h-20z"/>
<path d="m28 48h20v-20h-20z"/>
<path d="m0 20h20v-20h-20z"/>
<path d="m28 20h20v-20h-20z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 B

View File

@ -1,3 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m50.709 94.781.979-1.957-18.588-18.587s0-8.346 0-11.25-3.424-5.87-3.424-5.87-3.424 2.965-3.424 5.87v11.25l-18.586 18.587.979 1.957 17.607-8.315v9.783l-5.869 5.87h9.293 9.293l-5.869-5.87v-9.783z" fill="#a0a0a0" transform="matrix(1.0666193 0 0 1.0666193 -7.654061 -60.922095)"/>
</svg>

Before

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 866 B

View File

@ -1,6 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(1.0666667 0 0 1.0666667 -200.07467 -444.79148)">
<path d="m229.236 420.325v38.333h-38.332v-38.333zm3.334-3.333h-45v45h45z"/>
<path d="m226.755 456.162v-12.5l-6.681-4.896-7.266 4.101-10.281-7.512-9.105 7.069v13.738z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 865 B

View File

@ -1,10 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0">
<path d="m10 0h8v48h-8z"/>
<path d="m30 0h8v48h-8z"/>
<g transform="rotate(90)">
<path d="m10-48h8v48h-8z"/>
<path d="m30-48h8v48h-8z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -1,9 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0">
<path d="m0 0v20h10v-10h10v-10z"/>
<path d="m28 10h10v10h10v-20h-20z"/>
<path d="m38 28v10h-10v10h20v-20z"/>
<path d="m20 38h-10v-10h-10v20h20z"/>
<path d="m17 31h14v-14h-14z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -1,3 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<path d="m.03125.007812v48.002188h47.99875v-48.002188zm3.55875 3.556188h17.44v9.266l-8.18 8.18h-9.26zm23.44 0h17.44v17.446h-9.32l-8.12-8.12zm-23.44 23.446h9.28l8.16 8.16v9.28h-17.44zm31.54 0h9.34v17.44h-17.44v-9.34z" fill="#a0a0a0" stroke-width="1.0667" transform="matrix(1.00000003 0 0 1.00000003 .032003 .008534)"/>
</svg>

Before

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 574 B

View File

@ -1,8 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(1.0666193 0 0 1.0666667 -583.93887 -124.2592)">
<path d="m564.624 117.671c.646-.647.428-1.178-.488-1.178h-15.834c-.459 0-.834.375-.834.833v15.833c0 .917.531 1.136 1.18.488l5.041-5.042 8.721 8.721 5.893-5.892-8.721-8.721z"/>
<path d="m564.136 161.493c.916 0 1.135-.531.488-1.178l-5.043-5.042 8.721-8.721-5.893-5.892-8.721 8.721-5.041-5.042c-.648-.648-1.18-.428-1.18.488v15.833c0 .459.375.833.834.833z"/>
<path d="m592.468 117.326c0-.459-.373-.833-.832-.833h-15.834c-.916 0-1.137.531-.488 1.178l5.043 5.042-8.721 8.721 5.891 5.892 8.721-8.721 5.043 5.042c.648.648 1.178.428 1.178-.488v-15.833z"/>
<path d="m591.636 161.493c.459 0 .832-.375.832-.833v-15.833c0-.917-.529-1.136-1.178-.488l-5.043 5.042-8.721-8.721-5.891 5.892 8.721 8.721-5.043 5.042c-.648.647-.428 1.178.488 1.178z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 B

View File

@ -1,10 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0">
<path d="m0 0v48h10v-38h20v-10z"/>
<g fill-rule="evenodd">
<path d="m18 18v12h12v-12z"/>
<path d="m38 0v30h10v-30z"/>
<path d="m18 38v10h30v-10z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

View File

@ -1,7 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0">
<path d="m0 48h20v-48h-20z"/>
<path d="m28 48h20v-20h-20z"/>
<path d="m28 20h20v-20h-20z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

View File

@ -1,7 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(0 1 -1 0 48 0)">
<path d="m0 48h20v-48h-20z"/>
<path d="m28 48h20v-20h-20z"/>
<path d="m28 20h20v-20h-20z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B

View File

@ -1,7 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(-1 0 0 -1 48 48)">
<path d="m0 48h20v-48h-20z"/>
<path d="m28 48h20v-20h-20z"/>
<path d="m28 20h20v-20h-20z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

View File

@ -1,7 +0,0 @@
<svg height="48" width="48" xmlns="http://www.w3.org/2000/svg">
<g fill="#a0a0a0" transform="matrix(0 -1 1 0 0 48)">
<path d="m0 48h20v-48h-20z"/>
<path d="m28 48h20v-20h-20z"/>
<path d="m28 20h20v-20h-20z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 B

View File

@ -10,119 +10,39 @@ local gfs = require("gears.filesystem")
local themes_path =os.getenv("HOME") .. "/.config/awesome/themes/"
local icon_dir = themes_path .. "default/icons/"
local theme = require("themes/colorless/theme")
local theme = require("themes/colored/theme")
theme.color.main = "#A30817"
theme.color.urgent = "#016B84"
theme:update()
theme.gauge.audio.blue.dash.plain = true
theme.gauge.audio.blue.dash.bar.num = 8
theme.gauge.audio.blue.dash.bar.width = 3
theme.gauge.audio.blue.dmargin = { 5, 0, 9, 9 }
theme.gauge.audio.blue.width = 86
theme.gauge.audio.blue.icon = theme.path .. "/widget/audio.svg"
theme.widget.tasklist.task = theme.gauge.task.ruby
theme.font = "Roboto Bold 10"
theme.bg_normal = "#242424"
theme.bg_focus = "#535d6c"
theme.bg_urgent = "#ff0000"
theme.bg_minimize = "#444444"
theme.bg_systray = theme.bg_normal
theme.cellnum = { x = 80, y = 43 } -- grid layout property
theme.fg_normal = "#aaaaaa"
theme.fg_focus = "#ffffff"
theme.fg_urgent = "#ffffff"
theme.fg_minimize = "#ffffff"
theme.useless_gap = dpi(0)
theme.border_width = dpi(1)
theme.border_normal = "#000000"
theme.border_focus = "#535d6c"
theme.border_marked = "#91231c"
theme.wibar_height = dpi(28)
-- There are other variable sets
-- overriding the default one when
-- defined, the sets are:
-- taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile]
-- tasklist_[bg|fg]_[focus|urgent]
-- titlebar_[bg|fg]_[normal|focus]
-- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
-- mouse_finder_[color|timeout|animate_timeout|radius|factor]
-- prompt_[fg|bg|fg_cursor|bg_cursor|font]
-- hotkeys_[bg|fg|border_width|border_color|shape|opacity|modifiers_fg|label_bg|label_fg|group_margin|font|description_font]
-- Example:
--theme.taglist_bg_focus = "#ff0000"
-- Generate taglist squares:
local taglist_square_size = dpi(4)
theme.taglist_squares_sel = theme_assets.taglist_squares_sel(
taglist_square_size, theme.fg_normal
)
theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
taglist_square_size, theme.fg_normal
)
-- Variables set for theming notifications:
-- notification_font
-- notification_[bg|fg]
-- notification_[width|height|margin]
-- notification_[border_color|border_width|shape|opacity]
-- Variables set for theming the menu:
-- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width]
theme.menu_submenu_icon = themes_path.."default/submenu.png"
theme.menu_height = dpi(30)
theme.menu_width = dpi(100)
-- You can add as many variables as
-- you wish and access them by using
-- beautiful.variable in your rc.lua
--theme.bg_widget = "#cc0000"
-- Define the image to load
theme.titlebar_close_button_normal = themes_path.."default/titlebar/close_normal.png"
theme.titlebar_close_button_focus = themes_path.."default/titlebar/close_focus.png"
theme.titlebar_minimize_button_normal = themes_path.."default/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus = themes_path.."default/titlebar/minimize_focus.png"
theme.titlebar_ontop_button_normal_inactive = themes_path.."default/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = themes_path.."default/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = themes_path.."default/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = themes_path.."default/titlebar/ontop_focus_active.png"
theme.titlebar_sticky_button_normal_inactive = themes_path.."default/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive = themes_path.."default/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = themes_path.."default/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active = themes_path.."default/titlebar/sticky_focus_active.png"
theme.titlebar_floating_button_normal_inactive = themes_path.."default/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = themes_path.."default/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = themes_path.."default/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = themes_path.."default/titlebar/floating_focus_active.png"
theme.titlebar_maximized_button_normal_inactive = themes_path.."default/titlebar/maximized_normal_inactive.png"
theme.titlebar_maximized_button_focus_inactive = themes_path.."default/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_active = themes_path.."default/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_active = themes_path.."default/titlebar/maximized_focus_active.png"
--theme.wallpaper = themes_path.."default/background.png"
theme.wallpaper = "~/Images/wallpaper.jpg"
-- You can use your own layout icons like this:
theme.layout_fairv = themes_path.."default/layouts/fair.svg"
theme.layout_floating = themes_path.."default/layouts/floating.svg"
theme.layout_magnifier = themes_path.."default/layouts/magnifier.svg"
theme.layout_max = themes_path.."default/layouts/max.svg"
theme.layout_grid = themes_path.."default/layouts/grid.svg"
theme.layout_usermap = themes_path.."default/layouts/map.svg"
theme.layout_fullscreen = themes_path.."default/layouts/fullscreen.svg"
theme.layout_tilebottom = themes_path.."default/layouts/tilebottom.svg"
theme.layout_tileleft = themes_path.."default/layouts/tileleft.svg"
theme.layout_tile = themes_path.."default/layouts/tile.svg"
theme.layout_tiletop = themes_path.."default/layouts/tiletop.svg"
theme.layout_spiral = themes_path.."default/layouts/spiral.svg"
theme.layout_dwindle = themes_path.."default/layouts/dwindle.svg"
theme.layout_cornernw = themes_path.."default/layouts/cornernw.svg"
theme.layout_cornerne = themes_path.."default/layouts/cornerne.svg"
theme.layout_cornersw = themes_path.."default/layouts/cornersw.svg"
theme.layout_cornerse = themes_path.."default/layouts/cornerse.svg"
theme.widget.wrapper = {
layoutbox = { 12, 10, 6, 6 },
textclock = { 10, 10, 0, 0 },
volume = { 4, 9, 3, 3 },
network = { 10, 10, 5, 5 },
cpuram = { 10, 10, 5, 5 },
keyboard = { 10, 10, 4, 4 },
mail = { 10, 10, 4, 4 },
battery = { 8, 10, 7, 7 },
tray = { 8, 8, 7, 7 },
tasklist = { 4, 0, 0, 0 }, -- centering tasklist widget
}
--icon
@ -132,14 +52,7 @@ theme.net_down = icon_dir .. "net_down.png"
theme.spr_right = icon_dir .. "spr_right.png"
theme.mpd_icon = icon_dir .. "audio.svg"
theme.ram_icon = icon_dir .. "ram.png"
-- Generate Awesome icon:
theme.awesome_icon = theme_assets.awesome_icon(
theme.menu_height, theme.bg_focus, theme.fg_focus
)
-- Define the icon theme for application icons. If not set then the icons
-- from /usr/share/icons and /usr/share/icons/hicolor will be used.
theme.icon_theme = nil
return theme

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 696 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 756 B

Some files were not shown because too many files have changed in this diff Show More