Browse Source

Initial commit

master
Yessiest 2 years ago
commit
4cacdd9bd7
  1. 12
      README.txt
  2. 27
      core/README.txt
  3. 10
      core/binds.lua
  4. 17
      core/binds/clientbuttons.lua
  5. 47
      core/binds/clientkeys.lua
  6. 8
      core/binds/globalbuttons.lua
  7. 132
      core/binds/globalkeys.lua
  8. 14
      core/binds/titlebar.lua
  9. 10
      core/client.lua
  10. 26
      core/error.lua
  11. 114
      core/layout.lua
  12. 61
      core/rules.lua
  13. 35
      core/signals.lua
  14. 3
      core/style.lua
  15. 109
      core/titlebar.lua
  16. 30
      core/vars.lua
  17. 8
      core/widgets/hotkeys_popup.lua
  18. 12
      core/widgets/layout_box.lua
  19. 91
      core/widgets/menu.lua
  20. 5
      core/widgets/menu_launcher.lua
  21. 11
      core/widgets/menubar.lua
  22. 25
      core/widgets/prompt.lua
  23. 27
      core/widgets/taglist.lua
  24. 31
      core/widgets/tasklist.lua
  25. 6
      libs/README.txt
  26. 343
      libs/awmtk.lua
  27. BIN
      libs/pam.so
  28. 7
      libs/pam/LICENSE
  29. 1
      libs/pam/README
  30. 52
      libs/simplepam.lua
  31. 7
      modules/README.txt
  32. 68
      modules/awesomerc.lua
  33. 31
      modules/custom_binds.lua
  34. 125
      modules/powerman.lua
  35. 44
      rc.lua
  36. BIN
      themes/alt-icons/layouts/cornerne.png
  37. BIN
      themes/alt-icons/layouts/cornernw.png
  38. BIN
      themes/alt-icons/layouts/cornerse.png
  39. BIN
      themes/alt-icons/layouts/cornersw.png
  40. BIN
      themes/alt-icons/layouts/dwindle.png
  41. BIN
      themes/alt-icons/layouts/fairh.png
  42. BIN
      themes/alt-icons/layouts/fairv.png
  43. BIN
      themes/alt-icons/layouts/floating.png
  44. BIN
      themes/alt-icons/layouts/fullscreen.png
  45. BIN
      themes/alt-icons/layouts/magnifier.png
  46. BIN
      themes/alt-icons/layouts/max.png
  47. BIN
      themes/alt-icons/layouts/spiral.png
  48. BIN
      themes/alt-icons/layouts/tile.png
  49. BIN
      themes/alt-icons/layouts/tilebottom.png
  50. BIN
      themes/alt-icons/layouts/tileleft.png
  51. BIN
      themes/alt-icons/layouts/tiletop.png
  52. BIN
      themes/alt-icons/taglist/squarefz.png
  53. BIN
      themes/alt-icons/taglist/squarez.png
  54. BIN
      themes/alt-icons/titlebar/close_focus.png
  55. BIN
      themes/alt-icons/titlebar/close_normal.png
  56. BIN
      themes/alt-icons/titlebar/floating_focus_active.png
  57. BIN
      themes/alt-icons/titlebar/floating_focus_inactive.png
  58. BIN
      themes/alt-icons/titlebar/floating_normal_active.png
  59. BIN
      themes/alt-icons/titlebar/floating_normal_inactive.png
  60. BIN
      themes/alt-icons/titlebar/maximized_focus_active.png
  61. BIN
      themes/alt-icons/titlebar/maximized_focus_inactive.png
  62. BIN
      themes/alt-icons/titlebar/maximized_normal_active.png
  63. BIN
      themes/alt-icons/titlebar/maximized_normal_inactive.png
  64. BIN
      themes/alt-icons/titlebar/ontop_focus_active.png
  65. BIN
      themes/alt-icons/titlebar/ontop_focus_inactive.png
  66. BIN
      themes/alt-icons/titlebar/ontop_normal_active.png
  67. BIN
      themes/alt-icons/titlebar/ontop_normal_inactive.png
  68. BIN
      themes/alt-icons/titlebar/sticky_focus_active.png
  69. BIN
      themes/alt-icons/titlebar/sticky_focus_inactive.png
  70. BIN
      themes/alt-icons/titlebar/sticky_normal_active.png
  71. BIN
      themes/alt-icons/titlebar/sticky_normal_inactive.png
  72. 204
      themes/redmond98/assets/redmond98borders.svg
  73. 71
      themes/redmond98/assets/win98bordersv1.svg
  74. 71
      themes/redmond98/assets/win98bordersv1layer2.svg
  75. 12
      themes/redmond98/icons/battery-caution-charging-symbolic.svg
  76. 9
      themes/redmond98/icons/battery-caution-symbolic.svg
  77. 12
      themes/redmond98/icons/battery-empty-charging-symbolic.svg
  78. 9
      themes/redmond98/icons/battery-empty-symbolic.svg
  79. 70
      themes/redmond98/icons/battery-full-charged-symbolic.svg
  80. 69
      themes/redmond98/icons/battery-full-charging-symbolic.svg
  81. 62
      themes/redmond98/icons/battery-full-symbolic.svg
  82. 69
      themes/redmond98/icons/battery-good-charging-symbolic.svg
  83. 62
      themes/redmond98/icons/battery-good-symbolic.svg
  84. 71
      themes/redmond98/icons/battery-low-charging-symbolic.svg
  85. 62
      themes/redmond98/icons/battery-low-symbolic.svg
  86. 69
      themes/redmond98/icons/battery-missing-symbolic.svg
  87. 12
      themes/redmond98/icons/lock.svg
  88. 12
      themes/redmond98/icons/shutdown.svg
  89. 13
      themes/redmond98/icons/suspend.svg
  90. 15
      themes/redmond98/icons/volume-high.svg
  91. 14
      themes/redmond98/icons/volume-low.svg
  92. 15
      themes/redmond98/icons/volume-medium.svg
  93. 23
      themes/redmond98/icons/volume-muted.svg
  94. BIN
      themes/redmond98/layouts/cornerne.png
  95. BIN
      themes/redmond98/layouts/cornernew.png
  96. BIN
      themes/redmond98/layouts/cornernw.png
  97. BIN
      themes/redmond98/layouts/cornernww.png
  98. BIN
      themes/redmond98/layouts/cornerse.png
  99. BIN
      themes/redmond98/layouts/cornersew.png
  100. BIN
      themes/redmond98/layouts/cornersw.png

12
README.txt

@ -0,0 +1,12 @@
This folder is the root of awesomewm configuration.
The layout is as follows:
/core - original rc.lua, split into components for convenience.
/core/widgets - self-contained widgets from original awesomewm rc.lua.
/modules - small self-contained plug-ins to be required in rc.lua.
/libs - libraries, for various purposes.
/widgets - custom widgets
/various-scripts - scripts for clearing up desktop files, installing pam, etc.
/docs
/themes - themes compatible with this config or awesomewm in general.
Each folder contains a readme, describing what it contains and some additional details that one might need.

27
core/README.txt

@ -0,0 +1,27 @@
These are the core modules of this desktop.
There are currently the following modules, in the order of loading:
1) error.lua - Error handling
2) vars.lua - Variable definitions
3) style.lua - ``beautiful`` theme and style definitions
4) binds.lua - Binds
5) layout.lua - Wibar layout
6) rules.lua - Rules
7) signals.lua - Signals
Notice that Error handling and Variable definitions come before beautiful
initialization. That is normal. Those modules don't depend on any of the
above, therefore they are loaded before anything else.
Additionally, notice that Binds come before Wibar. That is not exactly how it
was in the default rc.lua, but it is important to load them in exactly that
order. Widgets, which are called from layout.lua, override the global bindings
table. If you load binds after the layout is loaded, the bindings are reset to
defaults.
Everything else is kept in exactly the same order as it was in the default
rc.lua
Additionally, it should be noted that all widgets in this config are entirely
independent. Simply not loading them will not load any keybindings or break
the config. Therefore, if you want to change any keybindings for the widgets,
you would want to search for them in their respective modules.

10
core/binds.lua

@ -0,0 +1,10 @@
local awful = require("awful")
local gears = require("gears")
local keys = require("core.binds.globalkeys")
local buttons = require("core.binds.globalbuttons")
-- Set keys
root.buttons(buttons)
root.keys(keys)
-- }}}

17
core/binds/clientbuttons.lua

@ -0,0 +1,17 @@
local awful = require("awful")
local gears = require("gears")
local clientbuttons = gears.table.join(
awful.button({ }, 1, function (c)
c:emit_signal("request::activate", "mouse_click", {raise = true})
end),
awful.button({ global.modkey }, 1, function (c)
c:emit_signal("request::activate", "mouse_click", {raise = true})
awful.mouse.client.move(c)
end),
awful.button({ global.modkey }, 3, function (c)
c:emit_signal("request::activate", "mouse_click", {raise = true})
awful.mouse.client.resize(c)
end)
)
return clientbuttons

47
core/binds/clientkeys.lua

@ -0,0 +1,47 @@
local awful = require("awful")
local gears = require("gears")
local clientkeys = gears.table.join(
awful.key({ global.modkey, }, "f",
function (c)
c.fullscreen = not c.fullscreen
c:raise()
end,
{description = "toggle fullscreen", group = "client"}),
awful.key({ global.modkey, "Shift" }, "c", function (c) c:kill() end,
{description = "close", group = "client"}),
awful.key({ global.modkey, "Control" }, "space", awful.client.floating.toggle ,
{description = "toggle floating", group = "client"}),
awful.key({ global.modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end,
{description = "move to master", group = "client"}),
awful.key({ global.modkey, }, "o", function (c) c:move_to_screen() end,
{description = "move to screen", group = "client"}),
awful.key({ global.modkey, }, "t", function (c) c.ontop = not c.ontop end,
{description = "toggle keep on top", group = "client"}),
awful.key({ global.modkey, }, "n",
function (c)
-- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus.
c.minimized = true
end ,
{description = "minimize", group = "client"}),
awful.key({ global.modkey, }, "m",
function (c)
c.maximized = not c.maximized
c:raise()
end ,
{description = "(un)maximize", group = "client"}),
awful.key({ global.modkey, "Control" }, "m",
function (c)
c.maximized_vertical = not c.maximized_vertical
c:raise()
end ,
{description = "(un)maximize vertically", group = "client"}),
awful.key({ global.modkey, "Shift" }, "m",
function (c)
c.maximized_horizontal = not c.maximized_horizontal
c:raise()
end ,
{description = "(un)maximize horizontally", group = "client"})
)
return clientkeys

8
core/binds/globalbuttons.lua

@ -0,0 +1,8 @@
local awful = require("awful")
local gears = require("gears")
return gears.table.join(
awful.button({ }, 3, function () require("core.widgets.menu"):toggle() end),
awful.button({ }, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev)
)

132
core/binds/globalkeys.lua

@ -0,0 +1,132 @@
local awful = require("awful")
local gears = require("gears")
local globalkeys = gears.table.join(
awful.key({ global.modkey, }, "Left", awful.tag.viewprev,
{description = "view previous", group = "tag"}),
awful.key({ global.modkey, }, "Right", awful.tag.viewnext,
{description = "view next", group = "tag"}),
awful.key({ global.modkey, }, "Escape", awful.tag.history.restore,
{description = "go back", group = "tag"}),
awful.key({ global.modkey, }, "j",
function ()
awful.client.focus.byidx( 1)
end,
{description = "focus next by index", group = "client"}
),
awful.key({ global.modkey, }, "k",
function ()
awful.client.focus.byidx(-1)
end,
{description = "focus previous by index", group = "client"}
),
-- Layout manipulation
awful.key({ global.modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end,
{description = "swap with next client by index", group = "client"}),
awful.key({ global.modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end,
{description = "swap with previous client by index", group = "client"}),
awful.key({ global.modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
{description = "focus the next screen", group = "screen"}),
awful.key({ global.modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
{description = "focus the previous screen", group = "screen"}),
awful.key({ global.modkey, }, "u", awful.client.urgent.jumpto,
{description = "jump to urgent client", group = "client"}),
awful.key({ global.modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end,
{description = "go back", group = "client"}),
-- Standard program
awful.key({ global.modkey, }, "Return", function () awful.spawn(global.terminal) end,
{description = "open a terminal", group = "launcher"}),
awful.key({ global.modkey, "Control" }, "r", awesome.restart,
{description = "reload awesome", group = "awesome"}),
awful.key({ global.modkey, "Shift" }, "q", awesome.quit,
{description = "quit awesome", group = "awesome"}),
awful.key({ global.modkey, }, "l", function () awful.tag.incmwfact( 0.05) end,
{description = "increase master width factor", group = "layout"}),
awful.key({ global.modkey, }, "h", function () awful.tag.incmwfact(-0.05) end,
{description = "decrease master width factor", group = "layout"}),
awful.key({ global.modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end,
{description = "increase the number of master clients", group = "layout"}),
awful.key({ global.modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end,
{description = "decrease the number of master clients", group = "layout"}),
awful.key({ global.modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end,
{description = "increase the number of columns", group = "layout"}),
awful.key({ global.modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end,
{description = "decrease the number of columns", group = "layout"}),
awful.key({ global.modkey, }, "space", function () awful.layout.inc( 1) end,
{description = "select next", group = "layout"}),
awful.key({ global.modkey, "Shift" }, "space", function () awful.layout.inc(-1) end,
{description = "select previous", group = "layout"}),
awful.key({ global.modkey, "Control" }, "n",
function ()
local c = awful.client.restore()
-- Focus restored client
if c then
c:emit_signal(
"request::activate", "key.unminimize", {raise = true}
)
end
end,
{description = "restore minimized", 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({ global.modkey }, "#" .. 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({ global.modkey, "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({ global.modkey, "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({ global.modkey, "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
return globalkeys

14
core/binds/titlebar.lua

@ -0,0 +1,14 @@
local awful = require("awful")
local gears = require("gears")
local buttons = gears.table.join(
awful.button({ }, 1, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.move(c)
end),
awful.button({ }, 3, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.resize(c)
end)
)
return buttons

10
core/client.lua

@ -0,0 +1,10 @@
--{{{ Additional client setup
local gears = require("gears")
return function(c)
local shape = function(cr, width, height)
return gears.shape.partially_rounded_rect(cr, width, height,
true,true,false,false,require("beautiful").titlebar_rounding)
end
c.shape = shape
end
--}}}

26
core/error.lua

@ -0,0 +1,26 @@
local naughty = require("naughty")
-- {{{ Error handling
-- Check if awesome encountered an error during startup and fell back to
-- another config (This code will only ever execute for the fallback config)
if awesome.startup_errors then
naughty.notify({ preset = naughty.config.presets.critical,
title = "Oops, there were errors during startup!",
text = awesome.startup_errors })
end
-- Handle runtime errors after startup
do
local in_error = false
awesome.connect_signal("debug::error", function (err)
-- Make sure we don't go into an endless error loop
if in_error then return end
in_error = true
naughty.notify({ preset = naughty.config.presets.critical,
title = "Oops, an error happened!",
text = tostring(err) })
in_error = false
end)
end
-- }}}

114
core/layout.lua

@ -0,0 +1,114 @@
local beautiful = require("beautiful")
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
-- {{{ Wibar
-- Create a wibox for each screen and add it
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)
-- {{{ Non-widget modules
-- The following modules are not exactly widgets, however they are part of the ui.
-- Load the keybindings list
require("core.widgets.hotkeys_popup")
-- Load the menubar
require("core.widgets.menubar")
-- }}}
awful.screen.connect_for_each_screen(function(s)
-- Wallpaper
set_wallpaper(s)
-- Each screen has its own tag table.
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- Create a promptbox for each screen
s.mypromptbox = require("core.widgets.prompt")()
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
-- Create the taglist
s.mytaglist = require("core.widgets.taglist")(s)
-- We need one layoutbox per screen.
s.mylayoutbox = require("core.widgets.layout_box")(s)
-- Create a tasklist widget
s.mytasklist = require("core.widgets.tasklist")(s)
-- Create the wibox
s.mywibox = awful.wibar({
position = "top",
screen = s,
bg = beautiful.topbar_bg
})
-- Add screen lock
require("widgets.lock")({screen = s,obscure = false})
require("widgets.unitybar")(s,{
top_widgets = {
require("widgets.polytasklist")({
vertical = true,
stretch = false,
--constraint = 180,
names = false,
margins = 5
})(s),
},
bottom_widgets = {
require("widgets.polylauncher")({vertical = true})
}
})
-- Add widgets to the wibox
s.mywibox:setup {
layout = wibox.layout.align.horizontal,
{ -- Left widgets
layout = wibox.layout.fixed.horizontal,
require("core.widgets.menu_launcher"),
--require("widgets.polylauncher")({vertical = false}),
s.mytaglist,
s.mypromptbox,
},
-- Middle widget
{
--[[require("widgets.polytasklist")({
vertical = false,
stretch = false,
constraint = 180,
names = true,
margins = 5
})(s),]]
layout = wibox.layout.fixed.horizontal
},
{ -- Right widgets
layout = wibox.layout.fixed.horizontal,
awful.widget.keyboardlayout(),
require("widgets.wallpapers")({
screen = s,
path = os.getenv("HOME").."/Pictures/Wallpapers/"
}),
require("widgets.mailbox")({
screen = s,
style = {
rounding = 1
}
}),
wibox.widget.systray(),
require("widgets.volume")({}),
require("widgets.battery")({percentage = true}),
wibox.widget.textclock(),
s.mylayoutbox,
},
}
end)
-- }}}

61
core/rules.lua

@ -0,0 +1,61 @@
local awful = require("awful")
local gears = require("gears")
local beautiful = require("beautiful")
-- {{{ Rules
-- Rules to apply to new clients (through the "manage" signal).
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { },
properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal,
focus = awful.client.focus.filter,
raise = true,
keys = require("core.binds.clientkeys"),
buttons = require("core.binds.clientbuttons"),
screen = awful.screen.preferred,
placement = awful.placement.no_overlap+awful.placement.no_offscreen,
requests_no_titlebar = false
}
},
-- Floating clients.
{ rule_any = {
instance = {
"DTA", -- Firefox addon DownThemAll.
"copyq", -- Includes session name in class.
"pinentry",
},
class = {
"Arandr",
"Blueman-manager",
"Gpick",
"Kruler",
"MessageWin", -- kalarm.
"Sxiv",
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
"Wpa_gui",
"veromix",
"xtightvncviewer"},
-- Note that the name property shown in xprop might be set slightly after creation of the client
-- and the name shown there might not match defined rules here.
name = {
"Event Tester", -- xev.
},
role = {
"AlarmWindow", -- Thunderbird's calendar.
"ConfigManager", -- Thunderbird's about:config.
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
}
}, properties = { floating = true }},
-- Add titlebars to normal clients and dialogs
{ rule_any = {type = { "normal", "dialog" }
}, properties = { titlebars_enabled = true }
},
-- Set Firefox to always map on the tag named "2" on screen 1.
-- { rule = { class = "Firefox" },
-- properties = { screen = 1, tag = "2" } },
}
-- }}}

35
core/signals.lua

@ -0,0 +1,35 @@
local awful = require('awful')
local gears = require('gears')
local beautiful = require("beautiful")
-- {{{ Signals
-- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c)
-- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master.
-- if not awesome.startup then awful.client.setslave(c) end
if awesome.startup
and not c.size_hints.user_position
and not c.size_hints.program_position then
-- Prevent clients from being unreachable after screen count changes.
awful.placement.no_offscreen(c)
end
local s, preprocess = pcall(require,"core.client")
if s then
preprocess(c)
end
end)
-- Add a titlebar if titlebars_enabled is set to true in the rules.
client.connect_signal("request::titlebars", function(c)
require("core.titlebar")(c)
end)
-- Enable sloppy focus, so that focus follows mouse.
client.connect_signal("mouse::enter", function(c)
c:emit_signal("request::activate", "mouse_enter", {raise = false})
end)
client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}

3
core/style.lua

@ -0,0 +1,3 @@
local beautiful = require("beautiful")
beautiful.init(global.theme)

109
core/titlebar.lua

@ -0,0 +1,109 @@
local awful = require("awful")
local gears = require("gears")
local wibox = require("wibox")
local menu = require("widgets.polymenu")
local move_screentags = {}
local toggle_screentags = {}
awful.screen.connect_for_each_screen(function(s)
local move_tags = {}
local toggle_tags = {}
for _,tag in pairs(s.tags) do
table.insert(move_tags,{
tag.name,
function()
if client.focus then
client.focus:tags({tag})
end
end
})
table.insert(toggle_tags,{
tag.name,
function()
if client.focus then
local tags = client.focus:tags()
for k,v in pairs(tags) do
if v == tag then
table.remove(tags,k)
client.focus:tags(tags)
return
end
end
table.insert(tags,tag)
client.focus:tags(tags)
end
end
})
end
table.insert(move_screentags,{
"Screen "..tostring(s.index),
move_tags
})
table.insert(toggle_screentags,{
"Screen "..tostring(s.index),
toggle_tags
})
end)
return function(c)
local buttons = gears.table.join(
awful.button({ }, 1, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.move(c)
end),
awful.button({ }, 3, function()
c:emit_signal("request::activate", "titlebar", {raise = true})
awful.mouse.client.resize(c)
end)
)
c.menu = menu({
before = {
{
awful.titlebar.widget.floatingbutton (c),
awful.titlebar.widget.stickybutton (c),
awful.titlebar.widget.ontopbutton (c),
forced_width = 72,
forced_height = 24,
layout = wibox.layout.fixed.horizontal,
}
},
items = {
{ "Move to tag" ,
move_screentags
},
{ "Toggle on tag",
toggle_screentags
}
},
vertical = true
})
c.menu_button = awful.titlebar.widget.iconwidget(c)
c.menu_button:connect_signal("button::press", function()
c.menu.toggle()
c:emit_signal("request::activate", "titlebar", {raise = true})
end)
c:connect_signal("unfocus",function()
if c.menu.visible then
c.menu.toggle(0,0)
end
end)
return awful.titlebar(c) : setup {
{ -- Left
c.menu_button,
layout = wibox.layout.fixed.horizontal
},
{ -- Middle
{ -- Title
align = "center",
widget = awful.titlebar.widget.titlewidget(c)
},
buttons = buttons,
layout = wibox.layout.flex.horizontal
},
{ -- Right
awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.minimizebutton (c),
awful.titlebar.widget.closebutton (c),
layout = wibox.layout.fixed.horizontal()
},
layout = wibox.layout.align.horizontal,
}
end

30
core/vars.lua

@ -0,0 +1,30 @@
local awful = require("awful")
local gears = require("gears")
-- {{{ Variable definitions
global = {}
global.awesome_dir = os.getenv("HOME").."/.config/awesome/"
global.config_dir = os.getenv("HOME").."/.awesome/"
global.theme = global.awesome_dir .. "themes/unity2/theme.lua"
global.terminal = "xterm"
global.editor = os.getenv("EDITOR") or "vim"
global.editor_cmd = global.terminal .. " -e ".. global.editor
global.modkey = "Mod4"
awful.layout.layouts = {
awful.layout.suit.floating,
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
awful.layout.suit.spiral,
awful.layout.suit.spiral.dwindle,
awful.layout.suit.max,
awful.layout.suit.max.fullscreen,
awful.layout.suit.magnifier,
awful.layout.suit.corner.nw,
-- awful.layout.suit.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,
}
-- }}}

8
core/widgets/hotkeys_popup.lua

@ -0,0 +1,8 @@
local awful = require("awful")
local gears = require("gears")
local hotkeys_popup = require("awful.hotkeys_popup")
root.keys(gears.table.join(
root.keys(),
awful.key({ global.modkey, }, "s", hotkeys_popup.show_help,
{description="show help", group="awesome"})))
return hotkeys_popup

12
core/widgets/layout_box.lua

@ -0,0 +1,12 @@
local awful = require("awful")
local gears = require("gears")
-- (Layout list is in vars.lua because it functions without this widget)
return function(s)
local layoutbox = awful.widget.layoutbox(s)
layoutbox: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)))
return layoutbox
end

91
core/widgets/menu.lua

@ -0,0 +1,91 @@
local awful = require('awful')
local gears = require("gears")
local beautiful = require('beautiful')
local polymenu = require("widgets.polymenu")
local wibox = require("wibox")
local awmtk = require("awmtk")
local style = awmtk.style(awmtk.defaults,{},"powercontrol_")
local awesome_menu = {
{ "hotkeys", function() require("core.widgets.hotkeys_popup").show_help(nil, awful.screen.focused()) end },
{ "manual", global.terminal .. " -e man awesome" },
{ "edit config", global.editor_cmd .. " " .. awesome.conffile },
{ "restart", awesome.restart },
{ "quit", function() awesome.quit() end },
}
local before_table = {
{
widget = wibox.widget.textbox,
markup = "AwesomeWM"
}
}
local after_table = {}
awful.screen.connect_for_each_screen(function(s)
table.insert(before_table,{
{
widget = wibox.widget.textbox,
markup = "Screen "..tostring(s.index)
},
require("core.widgets.taglist")(s),
layout = wibox.layout.fixed.vertical
})
end)
table.insert(after_table,{
style.icon({
widget = wibox.widget.imagebox,
image = gears.color.recolor_image(style.powercontrol_icon_shutdown,style.powercontrol_button_fg_normal),
resize = true
},{
bg = style.powercontrol_button_bg_focus,
forced_width = 24,
forced_height = 24
},{
function()
awful.spawn("loginctl poweroff")
end
}),
style.icon({
widget = wibox.widget.imagebox,
image = gears.color.recolor_image(style.powercontrol_icon_suspend,style.powercontrol_button_fg_normal),
resize = true,
},{
bg = style.powercontrol_button_bg_focus,
forced_width = 24,
forced_height = 24
},{
function()
awful.spawn("loginctl suspend")
end
}),
style.icon({
widget = wibox.widget.imagebox,
image = gears.color.recolor_image(style.powercontrol_icon_lock,style.powercontrol_button_fg_normal),
resize = true,
},{
bg = style.powercontrol_button_bg_focus,
forced_width = 24,
forced_height = 24
},{
function()
awesome.emit_signal("lock_screen")
end
}),
spacing = style.powercontrol_container_spacing_horizontal,
layout = wibox.layout.fixed.horizontal
})
local items = require("widgets.xdg-menu") {
before = {{ "awesome", awesome_menu, beautiful.awesome_icon }},
after = {{ "open terminal", global.terminal }},
}
local menu_template = {
before = before_table,
items = items,
after = after_table,
vertical = true,
inverse = true
}
local menu = polymenu(menu_template)
root.keys(gears.table.join(
root.keys(),
awful.key({ global.modkey, }, "w", function () menu:show() end,
{description = "show main menu", group = "awesome"})))
return menu

5
core/widgets/menu_launcher.lua

@ -0,0 +1,5 @@
local awful = require('awful')
local beautiful = require('beautiful')
return awful.widget.launcher({ image = beautiful.awesome_icon,
menu = require("core.widgets.menu") })

11
core/widgets/menubar.lua

@ -0,0 +1,11 @@
local awful = require("awful")
local gears = require("gears")
local menubar = require("menubar")
root.keys(gears.table.join(
root.keys(),
-- Menubar
awful.key({ global.modkey }, "p", function() menubar.show() end,
{description = "show the menubar", group = "launcher"})
))
menubar.utils.terminal = global.terminal
return menubar

25
core/widgets/prompt.lua

@ -0,0 +1,25 @@
--This widget is now entirely portable. Bindings are loaded and always reference the new object, not an object named "mypromptbox" attached to the screen.
local gears = require("gears")
local awful = require("awful")
return function()
local new_prompt = awful.widget.prompt()
root.keys(gears.table.join(
root.keys(),
-- Prompt
awful.key({ global.modkey }, "r", function () new_prompt:run() end,
{description = "run prompt", group = "launcher"}),
awful.key({ global.modkey }, "x",
function ()
awful.prompt.run {
prompt = "Run Lua code: ",
textbox = new_prompt.widget,
exe_callback = awful.util.eval,
history_path = awful.util.get_cache_dir() .. "/history_eval"
}
end,
{description = "lua execute prompt", group = "awesome"})))
return new_prompt
end

27
core/widgets/taglist.lua

@ -0,0 +1,27 @@
local awful = require("awful")
local gears = require("gears")
local taglist_buttons = gears.table.join(
awful.button({ }, 1, function(t) t:view_only() end),
awful.button({ global.modkey }, 1, function(t)
if client.focus then
client.focus:move_to_tag(t)
end
end),
awful.button({ }, 3, awful.tag.viewtoggle),
awful.button({ global.modkey }, 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)
)
return function(s)
return awful.widget.taglist {
screen = s,
filter = awful.widget.taglist.filter.all,
buttons = taglist_buttons
}
end

31
core/widgets/tasklist.lua

@ -0,0 +1,31 @@
local awful = require("awful")
local gears = require("gears")
local tasklist_buttons = gears.table.join(
awful.button({ }, 1, function (c)
if c == client.focus then
c.minimized = true
else
c:emit_signal(
"request::activate",
"tasklist",
{raise = true}
)
end
end),
awful.button({ }, 3, function()
awful.menu.client_list({ theme = { width = 250 } })
end),
awful.button({ }, 4, function ()
awful.client.focus.byidx(1)
end),
awful.button({ }, 5, function ()
awful.client.focus.byidx(-1)
end))
return function(s)
return awful.widget.tasklist {
screen = s,
filter = awful.widget.tasklist.filter.currenttags,
buttons = tasklist_buttons
}
end

6
libs/README.txt

@ -0,0 +1,6 @@
This folder contains various shared libraries, either in lua or in C.
If the libraries are written in C, they could be installed using scripts that
could be found in various-scripts/
The documentation for each library is provided in docs/libs/libraryname.md

343
libs/awmtk.lua

@ -0,0 +1,343 @@
-- AWMTK isn't exactly a toolkit as much as it is
-- an addon on top of awesome's native widget capabilities.
-- What it provides primarily is the ability to sub-theme
-- various parts of the ui.
-- Features:
-- - Many new non-standard beautiful variables,
-- - Hierarchic defaults,
-- - Quick widget generators,
-- - Variable prefix generators (like titlebar_bg_normal, etc),
-- - Nightmares,
-- - Why does this exist,
-- - Please don't use it.
local beautiful = require("beautiful")
local wibox = require("wibox")
local awful = require("awful")
local gears = require("gears")
local awmtk = {}
--Global class names
local classes = {
"container_",
"button_",
"inputbox_",
"textbox_",
"icon_"
}
-- Utility functions
local get_child_by_id = function(widget,id,limit)
local children = {}
local function _get_child(widget,id)
for k,v in pairs(widget) do
if type(v) == "table" then
if v.id == id then
children[#children+1] = v
end
_get_child(v,id)
end
end
end
_get_child({widget},id)
return children
end
local function key_union(...)
local tables = {...}
local keys_lookup = {}
local keys = {}
for _,v in pairs(tables) do
for k,whocareslol in pairs(v) do
if not keys_lookup[k] then
keys_lookup[k] = k
table.insert(keys,k)
end
end
end
return keys
end
-- Preprocessable boilerplates
local preprocess = {}
preprocess.button = function(style)
return function(widget,args,callbacks)
local args = args or {}
local callbacks = callbacks or {}
local new_widget = style.button_widget(style)
local background = get_child_by_id(new_widget,"widget_background")[1]
for k,v in pairs(args) do
background[k] = v
end
local container = get_child_by_id(new_widget,"widget_container")[1]
container[#container+1] = widget
new_widget = wibox.widget(new_widget)
awmtk.connect_buttons(new_widget,callbacks)
return new_widget
end
end
preprocess.icon = function(style)
return function(widget,args,callbacks)
local args = args or {}
local callbacks = callbacks or {}
local new_widget = style.icon_widget(style)
local background = get_child_by_id(new_widget,"widget_background")[1]
for k,v in pairs(args) do
background[k] = v
end
local container = get_child_by_id(new_widget,"widget_container")[1]
container[#container+1] = widget
new_widget = wibox.widget(new_widget)
awmtk.connect_buttons(new_widget,callbacks)
return new_widget
end
end
preprocess.inputbox = function(style)
return function(ps1,args,prompt_args)
local args = args or {}
local new_widget = style.inputbox_widget(style,ps1)
local background = get_child_by_id(new_widget,"widget_background")[1]
for k,v in pairs(args) do
background[k] = v
end
new_widget = wibox.widget(new_widget)
local textbox = new_widget:get_children_by_id("widget_prompt")[1]
awmtk.connect_buttons(new_widget,{function()
if prompt_args.pre_callback then
prompt_args.pre_callback(textbox)
end
local prompt_options = {
textbox = textbox,
}
for k,v in pairs(prompt_args) do
if k ~= "textbox" then
prompt_options[k] = v
end
end
prompt_options.exe_callback = function(input)
prompt_args.exe_callback(input,textbox)
textbox:set_markup_silently(ps1)
end
awful.prompt.run(prompt_options)
end})
return new_widget
end
end
preprocess.container = function(style)
return function(widget,args)
local args = args or {}
local new_widget = style.container_widget(style)
local background = get_child_by_id(new_widget,"widget_background")[1]
for k,v in pairs(args) do
background[k] = v
end
local container = get_child_by_id(new_widget,"widget_container")[1]
container[#container+1] = widget
new_widget = wibox.widget(new_widget)
return new_widget
end
end
preprocess.shape = function(style)
return function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, style.rounding)
end
end
preprocess.container_shape = function(style)
return function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, style.container_rounding or style.rounding)
end
end
preprocess.button_shape = function(style)
return function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, style.button_rounding or style.rounding)
end
end
preprocess.icon_shape = function(style)
return function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, style.icon_rounding or style.rounding)
end
end
preprocess.inputbox_shape = function(style)
return function(cr, width, height)
gears.shape.rounded_rect(cr, width, height, style.inputbox_rounding or style.rounding)
end
end
-- AWMTK functions
awmtk.connect_buttons = function(new_widget,callbacks)
new_widget:buttons (
awful.util.table.join(
(callbacks[1] and awful.button({},1,callbacks[1],callbacks.release_1)),
(callbacks[2] and awful.button({},2,callbacks[2],callbacks.release_2)),
(callbacks[3] and awful.button({},3,callbacks[3],callbacks.release_3))
)
)
return new_widget
end
awmtk._create_preprocess_style = function(style,prefix)
-- We use this function to force templates to favor prefix values
new_style = setmetatable({}, {
__index = function(t,k)
if type(k) == "string" and style[prefix..k] then
return style[prefix..k]
end
return style[k]
end
})
return new_style
end
awmtk.create_prefix = function(style,prefix,index)
-- Create a prefix for new widgets to use
local keys = index
for _,k in pairs(keys) do
style[prefix..k] = style[prefix..k] or style[k] or parent[k]
end
return style
end
awmtk.style = function(parent,delta,prefix)
local new_style = setmetatable({},{
__index = function(t,k)
return rawget(t,k) or
delta[k] or
parent[k]
end
})
if prefix then
new_style = awmtk.create_prefix(new_style,prefix,key_union(parent,delta))
end
local _new_style = awmtk._create_preprocess_style(new_style,prefix)
_new_style.button_shape = preprocess.button_shape(_new_style)
_new_style.icon_shape = preprocess.icon_shape(_new_style)
_new_style.container_shape = preprocess.container_shape(_new_style)
_new_style.inputbox_shape = preprocess.inputbox_shape(_new_style)
new_style.button = preprocess.button(_new_style)
new_style.icon = preprocess.icon(_new_style)
new_style.container = preprocess.container(_new_style)
new_style.inputbox = preprocess.inputbox(_new_style)
return new_style
end
-- Default variables table
defaults = setmetatable({},{
__index = beautiful
})
defaults.bg_normal = defaults.bg_normal
defaults.bg_focus = defaults.bg_focus
defaults.bg_urgent = defaults.bg_urgent
defaults.bg_marked = defaults.bg_marked
defaults.fg_normal = defaults.fg_normal
defaults.fg_focus = defaults.fg_focus
defaults.fg_urgent = defaults.fg_urgent
defaults.fg_marked = defaults.fg_marked
defaults.border_width = defaults.border_width
defaults.border_normal = defaults.border_normal
defaults.border_focus = defaults.border_focus
defaults.border_marked = defaults.border_marked
defaults.shape_border_width = defaults.shape_border_width or 0
defaults.shape_border_color = defaults.shape_border_color or defaults.bg_normal
-- Extra variables
defaults.inner_margin = defaults.inner_margin or 5
defaults.rounding = defaults.rounding or 0
local new_defaults = {}
-- Generate classes variables
for _,class in pairs(classes) do
for parameter,value in pairs(defaults) do
new_defaults[class..parameter] = (
defaults[class..parameter] or
value
)
end
end
for parameter,value in pairs(defaults) do
new_defaults[parameter] = value
end
defaults = setmetatable(new_defaults,{
__index = beautiful
})
--make icons look less weird
defaults.icon_inner_margin = beautiful.icon_inner_margin or 0
--add spacing for lists
defaults.container_spacing = defaults.container_spacing or 2
defaults.container_spacing_vertical = defaults.container_spacing_vertical or defaults.container_spacing
defaults.container_spacing_horizontal = defaults.container_spacing_horizontal or defaults.container_spacing
-- Templates for quick widget generation
defaults.button_widget = defaults.button_widget or function(style)
return {
{
id = "widget_container",
widget = wibox.container.margin,
margins = style.button_inner_margin,
},
bg = style.button_bg_normal,
id = "widget_background",
widget = wibox.container.background,
shape = style.button_shape,
shape_border_width = style.button_shape_border_width,
shape_border_color = style.button_shape_border_color,
fg = style.button_fg_normal
}
end
defaults.icon_widget = defaults.icon_widget or function(style)
return {
{
id = "widget_container",
widget = wibox.container.margin,
margins = style.icon_inner_margin,
},
bg = style.icon_bg_normal,
id = "widget_background",
widget = wibox.container.background,
shape = style.icon_shape,
shape_border_width = style.icon_shape_border_width,
shape_border_color = style.icon_shape_border_color,
fg = style.icon_fg_normal
}
end
defaults.container_widget = defaults.container_widget or function(style)
return {
{
id = "widget_container",
widget = wibox.container.margin,
margins = style.container_inner_margin,
},
bg = style.container_bg_normal,
id = "widget_background",
widget = wibox.container.background,
shape = style.container_shape,
shape_border_width = style.container_shape_border_width,
shape_border_color = style.container_shape_border_color,
fg = style.container_fg_normal
}
end
defaults.inputbox_widget = defaults.inputbox_widget or function(style,prompt)
return {
{
{
id = "widget_prompt",
markup = prompt or "",
widget = wibox.widget.textbox,
fg = style.inputbox_fg_normal
},
id = "widget_container",
widget = wibox.container.margin,
margins = style.inputbox_inner_margin,
},
bg = style.inputbox_bg_normal,
id = "widget_background",
widget = wibox.container.background,
shape = style.inputbox_shape,
shape_border_width = style.inputbox_shape_border_width,
shape_border_color = style.inputbox_shape_border_color
}
end
defaults.button_shape = defaults.button_shape or preprocess.button_shape(defaults)
defaults.icon_shape = defaults.icon_shape or preprocess.icon_shape(defaults)
defaults.container_shape = defaults.container_shape or preprocess.container_shape(defaults)
defaults.button = preprocess.button(defaults)
defaults.icon = preprocess.icon(defaults)
defaults.container = preprocess.container(defaults)
defaults.inputbox = preprocess.inputbox(defaults)
awmtk.defaults = defaults
awmtk.preprocess = preprocess
awmtk.utils = {
key_union = key_union,
get_child_by_id = get_child_by_id
}
return awmtk

BIN
libs/pam.so

7
libs/pam/LICENSE

@ -0,0 +1,7 @@
Copyright (c) 2012 Dennis Schridde
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

1
libs/pam/README

@ -0,0 +1 @@
https://github.com/devurandom/lua-pam

52
libs/simplepam.lua

@ -0,0 +1,52 @@
-- If you experience errors on the next line,
-- that means that you did not install lua-pam.
-- Run install_luapam.sh from the various-scripts directory.
local pam = require('pam')
local naughty = require("naughty")
local function check_password(pw,username)
local function conversation(messages)
local responses = {}
for i, message in ipairs(messages) do
local msg_style, msg = message[1], message[2]
if msg_style == pam.PROMPT_ECHO_OFF then
-- Assume PAM asks us for the password
print("PAM Message: ",msg)
responses[i] = {pw, 0}
elseif msg_style == pam.PROMPT_ECHO_ON then
-- Assume PAM asks us for the username
print("PAM Message: ",msg)
responses[i] = {username or os.getenv("USER"), 0}
elseif msg_style == pam.ERROR_MSG then
print("PAM Error: ",msg)
responses[i] = {"", 0}
elseif msg_style == pam.TEXT_INFO then
print("PAM Info message: ",msg)
responses[i] = {"", 0}
else
print("Unsupported conversation message style for PAM: " .. msg_style)
print("PAM Message: ",msg)
end
end
return responses
end
local handler,err = pam.start("system-auth", nil, {conversation, nil})
if not handler then
naughty.notify({title="PAM session start error: ",text=err,bg="#AA0000"})
print("PAM session start error: ",err)
return false
end
local auth,err = pam.authenticate(handler)
if not auth then
print("PAM authentication error: ",err)
return false
end
local s_end,err = pam.endx(handler, pam.SUCCESS)
if not s_end then
naughty.notify({title="PAM session end error: ",text=err,bg="#AA0000"})
print("PAM session end error: ",err)
return false
end
return true
end
return check_password

7
modules/README.txt

@ -0,0 +1,7 @@
Modules are self-contained plugins that change the behaviour of awesomewm.
Their config files are usually located either in ~/.awesome, or in the
folder specified by the varioable global.config_dir in core/vars.lua.
The configuration format is described in docs/modules/modulename.md

68
modules/awesomerc.lua

@ -0,0 +1,68 @@
---AwesomeWM autorun system
-- This module provides a way to start up applications on desktop boot
-- It's like cron's @reboot but with additional awesomewm specific features
local awful = require("awful")
local rcfile = io.open(global.config_dir.."rc.lua")
local execd = {}
-- load persistent file for "o" tag
local execd_file = io.open("/tmp/awesomerc.started","r")
if execd_file then
execd_file:read("*a"):gsub("[^\n]+",function(prg)
execd[prg] = true
end)
execd_file:close()
end
execd_file = io.open("/tmp/awesomerc.started","w")
local function check_pid(prg)
local args = {}
prg:gsub("[^%s ]+",function(name)
args[#args+1] = name
end)
local prgname
for _,prgn in pairs(args) do
if prgn:match("^[^=]+$") then
prgname = prgn:match("[^/]+$"):sub(1,15)
break
end
end
if os.execute("pgrep "..prgname) == 0 then
return true
else
return false
end
end
local function check_once(prg)
if not execd[prg] then
execd[prg] = true
execd_file:write(tostring(prg).."\n")
return true
end
end
local function apply_tags(k,prg)
if k:match("n") and (check_pid(prg)) then
return false
end
if k:match("o") and (not check_once(prg)) then
return false
end
awful.spawn(prg)
return true
end
if rcfile then
local rc,err = load(rcfile:read("*a"))
rcfile:close()
local rcdata
if not err then
rcdata = rc()
else
require("naughty").notify({
title = "Error reading rc.lua",
text = err
})
end
for entry,command in pairs(rcdata or {}) do
apply_tags(entry,command)
end
end
execd_file:close()

31
modules/custom_binds.lua

@ -0,0 +1,31 @@
--This module allows loading in custom keybindings that launch programs.
local gears = require("gears")
local awful = require("awful")
local keys = root.keys()
local bindsfile = io.open(global.config_dir.."binds.lua")
if bindsfile then
local binds = {}
local rc,err = load(bindsfile:read("*a"))
bindsfile:close()
if not err then
binds = rc()
else
require("naughty").notify({
title = "Error reading binds.lua",
text = err
})
return
end
local keys = root.keys()
for _,bind in pairs(binds) do
keys = gears.table.join(keys,awful.key(bind[1],bind[2],
function()
awful.spawn.with_shell(bind[3])
end,{
description = bind.description,
group = bind.group
}))
end
root.keys(keys)
end

125
modules/powerman.lua

@ -0,0 +1,125 @@
--This module is an attempt to add the functionality of automatic suspension to awesome.
--Although it is not supported nor is advised, it should probably work as long as awful.spawn and gears.timer functions don't change
--A known issue: there is a memory leak that is hard to trace
local awful = require("awful")
local gears = require("gears")
local naughty = require("naughty")
local rcfile = io.open(global.config_dir.."powerman.lua")
G_PowerManPIDs = {}
G_PowerManSleepTimer = os.time()
G_PowerManSuspendTimer = os.time()
G_PowerManSleepNotify = os.time()
G_PowerManSuspendNotify = os.time()
G_PowerManTracker = {
MouseCoords = {}
}
local function pgrep(prg)
awful.spawn.easy_async("pgrep "..prg,function(out,err,r,code)
if out ~= "" then
G_PowerManPIDs[prg] = true
else
G_PowerManPIDs[prg] = nil
end
end)
end
if rcfile then
local sleep_activated,suspend_activated = false,false
local sleep_notified,suspend_notified = false,false
--rc file loading
local rc,err = load(rcfile:read("*a"))
rcfile:close()
local rcdata
if not err then
rcdata = rc()
else
require("naughty").notify({
title = "Error reading rc.lua",
text = err
})
end
--disable builtin x11 screensaver timer and dpms timer
awful.spawn("xset -dpms s off")
--defaults
rcdata.sleep_rules = rcdata.sleep_rules or {}
rcdata.suspend_rules = rcdata.suspend_rules or {}
rcdata.sleep_time = rcdata.sleep_time or
((type(rcdata.sleep_time) == "nil") and 900)
rcdata.suspend_time = rcdata.suspend_time or
((type(rcdata.suspend_time) == "nil") and 1800)
rcdata.sleep = rcdata.sleep or ((type(rcdata.sleep) == "nil") and true)
rcdata.suspend = rcdata.suspend
rcdata.sleep_notify = rcdata.sleep_notify or
((type(rcdata.sleep_notify) == "nil") and 600)
rcdata.suspend_notify = rcdata.suspend_notify
--main timer
gears.timer {
timeout = 10,
call_now = true,
autostart = true,
callback = function()
if mouse.coords() and
mouse.coords().x ~= G_PowerManTracker.MouseCoords.x or
mouse.coords().y ~= G_PowerManTracker.MouseCoords.y then
G_PowerManSleepTimer = os.time()
G_PowerManSuspendTimer = os.time()
G_PowerManSleepNotify = os.time()
G_PowerManSuspendNotify = os.time()
sleep_activated = false
suspend_activated = false
sleep_notified = false
suspend_notified = false
end
for flags,progname in pairs(rcdata.sleep_rules) do
pgrep(progname)
if G_PowerManPIDs[progname] then
G_PowerManSleepTimer = os.time()
G_PowerManSleepNotify = os.time()
end
end
for flags,progname in pairs(rcdata.suspend_rules) do
pgrep(progname)
if G_PowerManPIDs[progname] then
G_PowerManSuspendTimer = os.time()
G_PowerManSuspendNotify = os.time()
end
end
if rcdata.sleep_notify and (not sleep_notified) and
(rcdata.sleep_notify+10 < rcdata.sleep_time) then
if os.time()-G_PowerManSleepNotify > rcdata.sleep_notify then
sleep_notified = true
naughty.notify({text="screen will turn off in "..tostring(
math.floor((rcdata.sleep_time-rcdata.sleep_notify)/60)
).." minutes"})
end
end
if rcdata.suspend_notify and (not suspend_notified) and
(rcdata.suspend_notify+10 < rcdata.suspend_time) then
if os.time()-G_PowerManSuspendNotify>rcdata.suspend_notify then
suspend_notified = true
naughty.notify({text="Computer will suspend in"..tostring(
math.floor((rcdata.suspend_time-rcdata.suspend_notify)/60)
).."minutes"})
end
end
if rcdata.sleep and (not sleep_activated) then
if os.time()-G_PowerManSleepTimer > rcdata.sleep_time then
if rcdata.sleep_lock then
rcdata.sleep_lock()
end
sleep_activated = true
awful.spawn("xset s activate dpms suspend")
end
end
if rcdata.suspend and (not suspend_activated) then
if os.time()-G_PowerManSuspendTimer > rcdata.suspend_time then
if rcdata.suspend_lock then
rcdata.suspend_lock()
end
suspend_activated = true
awful.spawn.with_shell("systemctl suspend || loginctl suspend")
end
end
G_PowerManTracker.MouseCoords = mouse.coords() or {}
end
}
end

44
rc.lua

@ -0,0 +1,44 @@
-- If LuaRocks is installed, make sure that packages installed through it are
-- found (e.g. lgi). If LuaRocks is not installed, do nothing.
package.path = os.getenv("HOME").."/.config/awesome/libs/?.lua;"
..os.getenv("HOME").."/.config/awesome/libs/?/init.lua;"
..os.getenv("HOME").."/.config/awesome/modules/?/init.lua;"
..os.getenv("HOME").."/.config/awesome/modules/?.lua;"
..package.path
package.cpath = os.getenv("HOME").."/.config/awesome/libs/?.so;"..package.cpath
pcall(require, "luarocks.loader")
-- Standard awesome library
local gears = require("gears")
local awful = require("awful")
require("awful.autofocus")
-- Widget and layout library
local wibox = require("wibox")
-- Theme handling library
local beautiful = require("beautiful")
-- Notification library
local naughty = require("naughty")
-- Enable hotkeys help widget for VIM and other apps
-- when client with a matching name is opened:
require("awful.hotkeys_popup.keys")
-- {{{ Default modules
-- WARNING: Order matters. Don't change it unless you know what you're doing. Read ./core/README.txt
require("core.error")
require("core.vars")
require("core.style")
require("core.binds")
require("core.layout")
require("core.rules")
require("core.signals")
-- }}}
-- This is a questionable decision, considering that lua has automatic garbage collection, however, it might potentially improve memory usage while not using up much cpu or memory either.
require("gears").timer.start_new(60,function()
collectgarbage("collect")
end)
require("custom_binds")
require("awesomerc")
require("powerman")

BIN
themes/alt-icons/layouts/cornerne.png

After

Width: 64  |  Height: 64  |  Size: 154 B

BIN
themes/alt-icons/layouts/cornernw.png

After

Width: 64  |  Height: 64  |  Size: 154 B

BIN
themes/alt-icons/layouts/cornerse.png

After

Width: 64  |  Height: 64  |  Size: 157 B

BIN
themes/alt-icons/layouts/cornersw.png

After

Width: 64  |  Height: 64  |  Size: 153 B

BIN
themes/alt-icons/layouts/dwindle.png

After

Width: 64  |  Height: 64  |  Size: 147 B

BIN
themes/alt-icons/layouts/fairh.png

After

Width: 64  |  Height: 64  |  Size: 145 B

BIN
themes/alt-icons/layouts/fairv.png

After

Width: 64  |  Height: 64  |  Size: 148 B

BIN
themes/alt-icons/layouts/floating.png

After

Width: 64  |  Height: 64  |  Size: 140 B

BIN
themes/alt-icons/layouts/fullscreen.png

After

Width: 64  |  Height: 64  |  Size: 147 B

BIN
themes/alt-icons/layouts/magnifier.png

After

Width: 64  |  Height: 64  |  Size: 145 B

BIN
themes/alt-icons/layouts/max.png

After

Width: 64  |  Height: 64  |  Size: 224 B

BIN
themes/alt-icons/layouts/spiral.png

After

Width: 64  |  Height: 64  |  Size: 148 B

BIN
themes/alt-icons/layouts/tile.png

After

Width: 64  |  Height: 64  |  Size: 142 B

BIN
themes/alt-icons/layouts/tilebottom.png

After

Width: 64  |  Height: 64  |  Size: 140 B

BIN
themes/alt-icons/layouts/tileleft.png

After

Width: 64  |  Height: 64  |  Size: 142 B

BIN
themes/alt-icons/layouts/tiletop.png

After

Width: 64  |  Height: 64  |  Size: 140 B

BIN
themes/alt-icons/taglist/squarefz.png

After

Width: 4  |  Height: 19  |  Size: 103 B

BIN
themes/alt-icons/taglist/squarez.png

After

Width: 4  |  Height: 19  |  Size: 109 B

BIN
themes/alt-icons/titlebar/close_focus.png

After

Width: 19  |  Height: 19  |  Size: 124 B

BIN
themes/alt-icons/titlebar/close_normal.png

After

Width: 19  |  Height: 19  |  Size: 122 B

BIN
themes/alt-icons/titlebar/floating_focus_active.png

After

Width: 19  |  Height: 19  |  Size: 124 B

BIN
themes/alt-icons/titlebar/floating_focus_inactive.png

After

Width: 19  |  Height: 19  |  Size: 133 B

BIN
themes/alt-icons/titlebar/floating_normal_active.png

After

Width: 19  |  Height: 19  |  Size: 122 B

BIN
themes/alt-icons/titlebar/floating_normal_inactive.png

After

Width: 19  |  Height: 19  |  Size: 111 B

BIN
themes/alt-icons/titlebar/maximized_focus_active.png

After

Width: 19  |  Height: 19  |  Size: 132 B

BIN
themes/alt-icons/titlebar/maximized_focus_inactive.png

After

Width: 19  |  Height: 19  |  Size: 131 B

BIN
themes/alt-icons/titlebar/maximized_normal_active.png

After

Width: 19  |  Height: 19  |  Size: 130 B

BIN
themes/alt-icons/titlebar/maximized_normal_inactive.png

After

Width: 19  |  Height: 19  |  Size: 133 B

BIN
themes/alt-icons/titlebar/ontop_focus_active.png

After

Width: 19  |  Height: 19  |  Size: 95 B

BIN
themes/alt-icons/titlebar/ontop_focus_inactive.png

After

Width: 19  |  Height: 19  |  Size: 127 B

BIN
themes/alt-icons/titlebar/ontop_normal_active.png

After

Width: 19  |  Height: 19  |  Size: 123 B

BIN
themes/alt-icons/titlebar/ontop_normal_inactive.png

After

Width: 19  |  Height: 19  |  Size: 128 B

BIN
themes/alt-icons/titlebar/sticky_focus_active.png

After

Width: 19  |  Height: 19  |  Size: 123 B

BIN
themes/alt-icons/titlebar/sticky_focus_inactive.png

After

Width: 19  |  Height: 19  |  Size: 124 B

BIN
themes/alt-icons/titlebar/sticky_normal_active.png

After

Width: 19  |  Height: 19  |  Size: 121 B

BIN
themes/alt-icons/titlebar/sticky_normal_inactive.png

After

Width: 19  |  Height: 19  |  Size: 107 B

204
themes/redmond98/assets/redmond98borders.svg

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg5"
sodipodi:docname="redmond98borders.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.057805"
inkscape:cx="174.21476"
inkscape:cy="197.78356"
inkscape:window-width="1861"
inkscape:window-height="1036"
inkscape:window-x="57"
inkscape:window-y="21"
inkscape:window-maximized="1"
inkscape:current-layer="layer3" />
<defs
id="defs2">
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"
id="filter1980"
x="0"
y="0"
width="1.01"
height="1.01">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1970" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite1972" />
<feGaussianBlur
in="composite1"
stdDeviation="0"
result="blur"
id="feGaussianBlur1974" />
<feOffset
dx="0.5"
dy="0.5"
result="offset"
id="feOffset1976" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="fbSourceGraphic"
id="feComposite1978" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix2000" />
<feFlood
id="feFlood2002"
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
in="fbSourceGraphic" />
<feComposite
in2="fbSourceGraphic"
id="feComposite2004"
in="flood"
operator="in"
result="composite1" />
<feGaussianBlur
id="feGaussianBlur2006"
in="composite1"
stdDeviation="0"
result="blur" />
<feOffset
id="feOffset2008"
dx="0.5"
dy="0.5"
result="offset" />
<feComposite
in2="offset"
id="feComposite2010"
in="fbSourceGraphic"
operator="over"
result="composite2" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter1980-6"
x="0"
y="0"
width="1.01"
height="1.01">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood1970-7" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite1972-5" />
<feGaussianBlur
in="composite1"
stdDeviation="0"
result="blur"
id="feGaussianBlur1974-3" />
<feOffset
dx="0.5"
dy="0.5"
result="offset"
id="feOffset1976-5" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="fbSourceGraphic"
id="feComposite1978-6" />
<feColorMatrix
result="fbSourceGraphicAlpha"
in="fbSourceGraphic"
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
id="feColorMatrix2000-2" />
<feFlood
id="feFlood2002-9"
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
in="fbSourceGraphic" />
<feComposite
in2="fbSourceGraphic"
id="feComposite2004-1"
in="flood"
operator="in"
result="composite1" />
<feGaussianBlur
id="feGaussianBlur2006-2"
in="composite1"
stdDeviation="0"
result="blur" />
<feOffset
id="feOffset2008-7"
dx="0.5"
dy="0.5"
result="offset" />
<feComposite
in2="offset"
id="feComposite2010-0"
in="fbSourceGraphic"
operator="over"
result="composite2" />
</filter>
</defs>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Layer 3">
<rect
style="fill:#c2c6ca;fill-opacity:1;stroke:none;stroke-width:0.264584;paint-order:markers fill stroke"
id="rect31-3"
width="100"
height="100"
x="0"
y="0" />
<rect
style="fill:#efefef;fill-opacity:1;stroke:none;stroke-width:0.264584;paint-order:markers fill stroke;filter:url(#filter1980)"
id="rect31-3-3"
width="100"
height="100"
x="0"
y="0"
transform="scale(0.99501243,0.99502488)" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2" />
</svg>

71
themes/redmond98/assets/win98bordersv1.svg

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg5"
sodipodi:docname="win98bordersv1.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.4550879"
inkscape:cx="13.401253"
inkscape:cy="118.20592"
inkscape:window-width="1861"
inkscape:window-height="1036"
inkscape:window-x="57"
inkscape:window-y="21"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Layer 3">
<rect
style="fill:#dcdcdc;fill-opacity:1;stroke:none;stroke-width:0.263886;paint-order:markers fill stroke"
id="rect31-3"
width="99.736115"
height="99.736115"
x="0.13194287"
y="0.13194287" />
<path
id="rect31-3-6"
style="fill:#646565;fill-opacity:1;stroke:none;stroke-width:0.263886;paint-order:markers fill stroke"
d="M 99.868057,0.13194125 V 99.868057 H 0.13194289 Z"
sodipodi:nodetypes="cccc" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
id="rect31"
style="opacity:1;fill:#646565;stroke:none;stroke-width:0.263886;paint-order:markers fill stroke;fill-opacity:1"
sodipodi:type="inkscape:offset"
inkscape:radius="0"
inkscape:original="M 0.1328125 0.1328125 L 0.1328125 99.867188 L 99.867188 99.867188 L 99.867188 0.1328125 L 0.1328125 0.1328125 z "
d="M 0.1328125,0.1328125 V 99.867188 H 99.867188 V 0.1328125 Z"
transform="matrix(1.0026633,0,0,1.0026633,-0.13316622,-0.13316622)" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2" />
</svg>

71
themes/redmond98/assets/win98bordersv1layer2.svg

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg5"
sodipodi:docname="win98bordersv1layer2.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.057805"
inkscape:cx="178.58835"
inkscape:cy="243.94926"
inkscape:window-width="1861"
inkscape:window-height="1036"
inkscape:window-x="57"
inkscape:window-y="21"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Layer 3">
<rect
style="fill:#dcdcdc;fill-opacity:1;stroke:none;stroke-width:0.263886;paint-order:markers fill stroke"
id="rect31-3"
width="99.736115"
height="99.736115"
x="0.13194287"
y="0.13194287" />
<path
id="rect31-3-6"
style="fill:#646565;fill-opacity:1;stroke:none;stroke-width:0.263886;paint-order:markers fill stroke"
d="M 99.868057,0.13194125 V 99.868057 H 0.13194289 Z"
sodipodi:nodetypes="cccc" />
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
id="rect31"
style="opacity:1;fill:#747575;stroke:none;stroke-width:0.263886;paint-order:markers fill stroke;fill-opacity:1"
sodipodi:type="inkscape:offset"
inkscape:radius="0"
inkscape:original="M 0.1328125 0.1328125 L 0.1328125 99.867188 L 99.867188 99.867188 L 99.867188 0.1328125 L 0.1328125 0.1328125 z "
d="M 0.1328125,0.1328125 V 99.867188 H 99.867188 V 0.1328125 Z"
transform="matrix(1.0026633,0,0,1.0026633,-0.13316622,-0.13316622)" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2" />
</svg>

12
themes/redmond98/icons/battery-caution-charging-symbolic.svg

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
<defs id="defs1">
<style type="text/css" id="current-color-scheme">
.ColorScheme-NegativeText {
color:#da4453;
}
.ColorScheme-PositiveText {
color:#27ae60;
}
</style>
</defs>
<path style="fill:currentColor;fill-opacity:1;stroke:none" class="ColorScheme-NegativeText" d="M3 4l1 8H2V4zM0 2v12h15v-4h.5c.277 0 .5-.223.5-.5v-3c0-.277-.223-.5-.5-.5H15V2zm1 1h13v10H1z"/><path d="M9 5a3 3 0 0 0-2.826 2H5v2h1.176A3 3 0 0 0 9 11v-1h2V9H9V7h2V6H9z" class="ColorScheme-PositiveText" fill="currentColor"/></svg>

9
themes/redmond98/icons/battery-caution-symbolic.svg

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
<defs id="defs1">
<style type="text/css" id="current-color-scheme">
.ColorScheme-NegativeText {
color:#da4453;
}
</style>
</defs>
<path style="fill:currentColor;fill-opacity:1;stroke:none" class="ColorScheme-NegativeText" d="M3 4l1 8H2V4zM0 2v12h15v-4h.5c.277 0 .5-.223.5-.5v-3c0-.277-.223-.5-.5-.5H15V2zm1 1h13v10H1z"/></svg>

12
themes/redmond98/icons/battery-empty-charging-symbolic.svg

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
<defs id="defs1">
<style type="text/css" id="current-color-scheme">
.ColorScheme-NegativeText {
color:#da4453;
}
.ColorScheme-PositiveText {
color:#27ae60;
}
</style>
</defs>
<path style="fill:currentColor;fill-opacity:1;stroke:none" class="ColorScheme-NegativeText" d="M0 2v12h15v-4h.5c.277 0 .5-.223.5-.5v-3c0-.277-.223-.5-.5-.5H15V2zm1 1h13v10H1z"/><path d="M9 5a3 3 0 0 0-2.826 2H5v2h1.176A3 3 0 0 0 9 11v-1h2V9H9V7h2V6H9z" class="ColorScheme-PositiveText" fill="currentColor"/></svg>

9
themes/redmond98/icons/battery-empty-symbolic.svg

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16">
<defs id="defs1">
<style type="text/css" id="current-color-scheme">
.ColorScheme-NegativeText {
color:#da4453;
}
</style>
</defs>
<path style="fill:currentColor;fill-opacity:1;stroke:none" class="ColorScheme-NegativeText" d="M0 2v12h15v-4h.5c.277 0 .5-.223.5-.5v-3c0-.277-.223-.5-.5-.5H15V2zm1 1h13v10H1z"/></svg>

70
themes/redmond98/icons/battery-full-charged-symbolic.svg

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg2037"
sodipodi:docname="battery-full-charged-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata2041">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1036"
id="namedview2039"
showgrid="false"
inkscape:zoom="55.625"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2037" />
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
.ColorScheme-PositiveText {
color:#27ae60;
}
</style>
</defs>
<path
id="path2033"
style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 0 2 L 0 14 L 15 14 L 15 10 L 15.5 10 C 15.777 10 16 9.777 16 9.5 L 16 6.5 C 16 6.223 15.777 6 15.5 6 L 15 6 L 15 2 L 0 2 z M 1 3 L 14 3 L 14 13 L 1 13 L 1 3 z M 2 4 L 2 12 L 13 12 L 13 4 L 2 4 z M 9 4.5 L 9.5 4.5 L 9.5 5.5 L 11.5 5.5 L 11.5 7.5 L 9.5 7.5 L 9.5 8.5 L 11.5 8.5 L 11.5 10.5 L 9.5 10.5 L 9.5 11.5 L 9 11.5 C 7.666557 11.498032 6.5431396 10.671338 5.9570312 9.5 L 4.5 9.5 L 4.5 6.5 L 5.9550781 6.5 C 6.5415944 5.3280543 7.6657892 4.5010796 9 4.5 z M 8.5 5.6601562 C 7.6694626 5.8434029 6.9366841 6.3396817 6.6445312 7.1660156 L 6.5273438 7.5 L 5.5 7.5 L 5.5 8.5 L 6.5292969 8.5 L 6.6464844 8.8339844 C 6.9384669 9.6598387 7.6700159 10.156243 8.5 10.339844 L 8.5 9.5 L 8.5 6.5 L 8.5 5.6601562 z " />
<path
d="M9 5a3 3 0 0 0-2.826 2H5v2h1.176A3 3 0 0 0 9 11v-1h2V9H9V7h2V6H9z"
class="ColorScheme-PositiveText"
fill="currentColor"
id="path2035"
style="fill:#27ae60;stroke:none;stroke-opacity:1;fill-opacity:1" />
</svg>

69
themes/redmond98/icons/battery-full-charging-symbolic.svg

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg942"
sodipodi:docname="battery-full-charging-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata946">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1036"
id="namedview944"
showgrid="false"
inkscape:zoom="48.6875"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg942" />
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
.ColorScheme-PositiveText {
color:#27ae60;
}
</style>
</defs>
<path
id="path938"
style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 0 2 L 0 14 L 15 14 L 15 10 L 15.5 10 C 15.777 10 16 9.777 16 9.5 L 16 6.5 C 16 6.223 15.777 6 15.5 6 L 15 6 L 15 2 L 0 2 z M 1 3 L 14 3 L 14 13 L 1 13 L 1 3 z M 2 4 L 2 12 L 13 12 L 13 4 L 2 4 z M 9 4.5 L 9.5 4.5 L 9.5 5.5 L 11.5 5.5 L 11.5 7.5 L 9.5 7.5 L 9.5 8.5 L 11.5 8.5 L 11.5 10.5 L 9.5 10.5 L 9.5 11.5 L 9 11.5 C 7.666557 11.498032 6.5431396 10.671338 5.9570312 9.5 L 4.5 9.5 L 4.5 6.5 L 5.9550781 6.5 C 6.5415944 5.3280543 7.6657892 4.5010796 9 4.5 z M 8.5 5.6601562 C 7.6694626 5.8434029 6.9366841 6.3396817 6.6445312 7.1660156 L 6.5273438 7.5 L 5.5 7.5 L 5.5 8.5 L 6.5292969 8.5 L 6.6464844 8.8339844 C 6.9384669 9.6598387 7.6700159 10.156243 8.5 10.339844 L 8.5 9.5 L 8.5 6.5 L 8.5 5.6601562 z " />
<path
d="M9 5a3 3 0 0 0-2.826 2H5v2h1.176A3 3 0 0 0 9 11v-1h2V9H9V7h2V6H9z"
class="ColorScheme-PositiveText"
fill="currentColor"
id="path940" />
</svg>

62
themes/redmond98/icons/battery-full-symbolic.svg

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg1375"
sodipodi:docname="battery-full-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata1379">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1036"
id="namedview1377"
showgrid="false"
inkscape:zoom="55.625"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1375" />
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
</style>
</defs>
<path
style="fill:#000000;fill-opacity:1;stroke:none"
class="ColorScheme-Text"
d="M2 4h11v8H2zM0 2v12h15v-4h.5c.277 0 .5-.223.5-.5v-3c0-.277-.223-.5-.5-.5H15V2zm1 1h13v10H1z"
id="path1373" />
</svg>

69
themes/redmond98/icons/battery-good-charging-symbolic.svg

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg1149"
sodipodi:docname="battery-good-charging-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata1153">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1036"
id="namedview1151"
showgrid="false"
inkscape:zoom="55.625"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1149" />
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
.ColorScheme-PositiveText {
color:#27ae60;
}
</style>
</defs>
<path
id="path1145"
style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 0 2 L 0 14 L 15 14 L 15 10 L 15.5 10 C 15.777 10 16 9.777 16 9.5 L 16 6.5 C 16 6.223 15.777 6 15.5 6 L 15 6 L 15 2 L 0 2 z M 1 3 L 14 3 L 14 13 L 1 13 L 1 3 z M 2 4 L 2 12 L 10 12 L 9.8125 10.5 L 9.5 10.5 L 9.5 11.5 L 9 11.5 C 7.666557 11.498032 6.5431396 10.671338 5.9570312 9.5 L 4.5 9.5 L 4.5 6.5 L 5.9550781 6.5 C 6.5415944 5.3280543 7.6657892 4.5010796 9 4.5 L 9.0625 4.5 L 9 4 L 2 4 z M 8.5 5.6601562 C 7.6694626 5.8434029 6.9366841 6.3396817 6.6445312 7.1660156 L 6.5273438 7.5 L 5.5 7.5 L 5.5 8.5 L 6.5292969 8.5 L 6.6464844 8.8339844 C 6.9384669 9.6598387 7.6700159 10.156243 8.5 10.339844 L 8.5 9.5 L 8.5 6.5 L 8.5 5.6601562 z M 9.5 8 L 9.5 8.5 L 9.5625 8.5 L 9.5 8 z " />
<path
d="M9 5a3 3 0 0 0-2.826 2H5v2h1.176A3 3 0 0 0 9 11v-1h2V9H9V7h2V6H9z"
class="ColorScheme-PositiveText"
fill="currentColor"
id="path1147" />
</svg>

62
themes/redmond98/icons/battery-good-symbolic.svg

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg2062"
sodipodi:docname="battery-good-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata2066">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1036"
id="namedview2064"
showgrid="false"
inkscape:zoom="55.625"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2062" />
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
</style>
</defs>
<path
style="fill:#000000;fill-opacity:1;stroke:none"
class="ColorScheme-Text"
d="M2 4h7l1 8H2zM0 2v12h15v-4h.5c.277 0 .5-.223.5-.5v-3c0-.277-.223-.5-.5-.5H15V2zm1 1h13v10H1z"
id="path2060" />
</svg>

71
themes/redmond98/icons/battery-low-charging-symbolic.svg

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg186"
sodipodi:docname="battery-low-charging-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata190">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1036"
id="namedview188"
showgrid="false"
inkscape:zoom="55.625"
inkscape:cx="4.8629213"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg186"
inkscape:document-rotation="0" />
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
.ColorScheme-PositiveText {
color:#27ae60;
}
</style>
</defs>
<path
id="path182"
style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 0 2 L 0 14 L 15 14 L 15 10 L 15.5 10 C 15.777 10 16 9.777 16 9.5 L 16 6.5 C 16 6.223 15.777 6 15.5 6 L 15 6 L 15 2 L 0 2 z M 1 3 L 14 3 L 14 13 L 1 13 L 1 3 z M 2 4 L 2 12 L 7 12 L 6.9023438 11.216797 C 6.3121937 10.79667 5.8272405 10.219642 5.5019531 9.5390625 L 3.8105469 9.5390625 L 3.8105469 6.1386719 L 5.5 6.1386719 C 5.6724011 5.7776582 5.8893752 5.4445919 6.1425781 5.1484375 L 6 4 L 2 4 z M 6.3164062 6.5195312 C 6.2712485 6.6120311 6.2247627 6.704817 6.1894531 6.8046875 L 6.0722656 7.1386719 L 4.8105469 7.1386719 L 4.8105469 8.5390625 L 6.0742188 8.5390625 L 6.1933594 8.8710938 C 6.3129661 9.2093939 6.4966297 9.5009695 6.71875 9.7539062 L 6.3164062 6.5195312 z " />
<path
d="M 9.1101126,4.2382021 A 3.6000002,3.6000001 0 0 0 5.7189123,6.6382022 H 4.3101122 v 2.4000001 h 1.4112001 a 3.6000002,3.6000001 0 0 0 3.3888003,2.3999997 v -1.2 H 11.510112 V 9.0382023 H 9.1101126 V 6.6382022 H 11.510112 V 5.4382021 H 9.1101126 Z"
class="ColorScheme-PositiveText"
fill="currentColor"
id="path184"
style="color:#27ae60;stroke-width:1.2;stroke-miterlimit:4;stroke-dasharray:none;fill:#44ae60;fill-opacity:1;paint-order:markers fill stroke" />
</svg>

62
themes/redmond98/icons/battery-low-symbolic.svg

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg2762"
sodipodi:docname="battery-low-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata2766">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1036"
id="namedview2764"
showgrid="false"
inkscape:zoom="55.625"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2762" />
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
</style>
</defs>
<path
style="fill:#000000;fill-opacity:1;stroke:none"
class="ColorScheme-Text"
d="M2 4h4l1 8H2zM0 2v12h15v-4h.5c.277 0 .5-.223.5-.5v-3c0-.277-.223-.5-.5-.5H15V2zm1 1h13v10H1z"
id="path2760" />
</svg>

69
themes/redmond98/icons/battery-missing-symbolic.svg

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="16"
width="16"
version="1.1"
id="svg258"
sodipodi:docname="battery-missing-symbolic.svg"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
<metadata
id="metadata262">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1026"
inkscape:window-height="856"
id="namedview260"
showgrid="true"
inkscape:zoom="32"
inkscape:cx="5.2458034"
inkscape:cy="7.7083638"
inkscape:window-x="49"
inkscape:window-y="143"
inkscape:window-maximized="0"
inkscape:current-layer="svg258"
showguides="true">
<inkscape:grid
type="xygrid"
id="grid348" />
</sodipodi:namedview>
<defs
id="defs1">
<style
type="text/css"
id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
.ColorScheme-NegativeText {
color:#da4453;
}
</style>
</defs>
<path
id="path252"
style="fill:currentColor;fill-opacity:1;stroke:none"
d="M 0 2 L 0 14 L 15 14 L 15 10 L 15.5 10 C 15.777 10 16 9.777 16 9.5 L 16 6.5 C 16 6.223 15.777 6 15.5 6 L 15 6 L 15 2 L 3 2 L 0 2 z M 1 3 L 14 3 L 14 13 L 1 13 L 1 3 z M 2 4 L 2 12 L 13 12 L 13 4 L 2 4 z M 5.4140625 5 L 7.7070312 7.2929688 L 10 5 L 10.707031 5.7070312 L 8.4140625 8 L 10.707031 10.292969 L 10 11 L 7.7070312 8.7070312 L 5.4140625 11 L 4.7070312 10.292969 L 7 8 L 4.7070312 5.7070312 L 5.4140625 5 z " />
</svg>

12
themes/redmond98/icons/lock.svg

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
</style>
</defs>
<g transform="translate(1,1)">
<path style="fill:currentColor;fill-opacity:1;stroke:none" d="M 11 3 C 6.568 3 3 6.568 3 11 C 3 15.432 6.568 19 11 19 C 15.432 19 19 15.432 19 11 C 19 6.568 15.432 3 11 3 z M 11 4 C 14.878 4 18 7.122 18 11 C 18 14.878 14.878 18 11 18 C 7.122 18 4 14.878 4 11 C 4 7.122 7.122 4 11 4 z M 11 6 A 2.0000021 2.0000014 0 0 0 9 8 L 9 10 L 7 10 L 7 15 L 15 15 L 15 10 L 13 10 L 13 8 A 2.0000021 2.0000014 0 0 0 11 6 z M 11 7 A 1 1 0 0 1 12 8 L 12 10 L 10 10 L 10 8 A 1 1 0 0 1 11 7 z M 8 11 L 9 11 L 10 11 L 12 11 L 13 11 L 14 11 L 14 14 L 8 14 L 8 11 z " class="ColorScheme-Text"/>
</g>
</svg>

12
themes/redmond98/icons/shutdown.svg

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<defs id="defs3051">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
</style>
</defs>
<g transform="translate(1,1)">
<path style="fill:currentColor;fill-opacity:1;stroke:none" d="M 10 3 L 10 10 L 12 10 L 12 3 L 10 3 z M 9 3.265625 C 5.5444518 4.1502188 3 7.2610109 3 11 C 3 15.432 6.568 19 11 19 C 15.432 19 19 15.432 19 11 C 19 7.2610109 16.455548 4.1502188 13 3.265625 L 13 4.3027344 C 15.895041 5.15992 18 7.819625 18 11 C 18 14.878 14.878 18 11 18 C 7.122 18 4 14.878 4 11 C 4 7.819625 6.1049587 5.15992 9 4.3027344 L 9 3.265625 z " class="ColorScheme-Text"/>
</g>
</svg>

13
themes/redmond98/icons/suspend.svg

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<style type="text/css" id="current-color-scheme">
.ColorScheme-Text {
color:#232629;
}
</style>
<g transform="translate(1,1)">
<g class="ColorScheme-Text" fill="currentColor">
<path d="M7.047 4.049A7.995 8 0 0 0 3 11a7.995 8 0 0 0 7.994 8 7.995 8 0 0 0 6.938-4.043 7.995 8 0 0 0 .01-.006l-.739-.738a6.996 7 0 0 1-.004.006 6.996 7 0 0 1-3.207.781 6.996 7 0 0 1-6.994-7 6.996 7 0 0 1 .785-3.213zM6.303 5.82A7.995 8 0 0 0 5.998 8a7.995 8 0 0 0 7.994 8 7.995 8 0 0 0 2.188-.313A6.996 7 0 0 1 10.994 18 6.996 7 0 0 1 4 11a6.996 7 0 0 1 2.303-5.18z"/>
<path d="M10 6v1h2.293l-2 2-.293.293V10h4V9h-2.293l2-2L14 6.707V6h-.707zm5-3v1h2.293l-2 2-.293.293V7h4V6h-2.293l2-2L19 3.707V3h-.707z"/>
</g>
</g>
</svg>

15
themes/redmond98/icons/volume-high.svg

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text {
color:#232629;
}
</style>
<g transform="translate(1,1)">
<g class="ColorScheme-Text" fill="currentColor">
<path d="m14.324219 7.28125-.539063.8613281a4 4 0 0 1 1.214844 2.8574219 4 4 0 0 1 -1.210938 2.861328l.539063.863281a5 5 0 0 0 1.671875-3.724609 5 5 0 0 0 -1.675781-3.71875z"/>
<path d="m13.865234 3.5371094-.24414.9765625a7 7 0 0 1 4.378906 6.4863281 7 7 0 0 1 -4.380859 6.478516l.24414.974609a8 8 0 0 0 5.136719-7.453125 8 8 0 0 0 -5.134766-7.4628906z"/>
<path d="m3 8h2v6h-2z" fill-rule="evenodd"/>
<path d="m6 14 5 5h1v-16h-1l-5 5z"/>
</g>
</g>
</svg>

14
themes/redmond98/icons/volume-low.svg

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text {
color:#232629;
}
</style>
<g transform="translate(1,1)">
<g class="ColorScheme-Text" fill="currentColor">
<path d="m13.865234 3.5371094-.24414.9765625a7 7 0 0 1 4.378906 6.4863281 7 7 0 0 1 -4.380859 6.478516l.24414.974609a8 8 0 0 0 5.136719-7.453125 8 8 0 0 0 -5.134766-7.4628906zm.458985 3.7441406-.539063.8613281a4 4 0 0 1 1.214844 2.8574219 4 4 0 0 1 -1.210938 2.861328l.539063.863281a5 5 0 0 0 1.671875-3.724609 5 5 0 0 0 -1.675781-3.71875z" fill-opacity=".35"/>
<path d="m3 8h2v6h-2z" fill-rule="evenodd"/>
<path d="m6 14 5 5h1v-16h-1l-5 5z"/>
</g>
</g>
</svg>

15
themes/redmond98/icons/volume-medium.svg

@ -0,0 +1,15 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text {
color:#232629;
}
</style>
<g transform="translate(1,1)">
<g class="ColorScheme-Text" fill="currentColor">
<path d="m14.324219 7.28125-.539063.8613281a4 4 0 0 1 1.214844 2.8574219 4 4 0 0 1 -1.210938 2.861328l.539063.863281a5 5 0 0 0 1.671875-3.724609 5 5 0 0 0 -1.675781-3.71875z"/>
<path d="m13.865234 3.5371094-.24414.9765625a7 7 0 0 1 4.378906 6.4863281 7 7 0 0 1 -4.380859 6.478516l.24414.974609a8 8 0 0 0 5.136719-7.453125 8 8 0 0 0 -5.134766-7.4628906z" fill-opacity=".35"/>
<path d="m3.0000005 8h2v6h-2z" fill-rule="evenodd"/>
<path d="m6.0000005 14 5.0000005 5h.999999v-16h-1l-4.9999995 5z"/>
</g>
</g>
</svg>

23
themes/redmond98/icons/volume-muted.svg

@ -0,0 +1,23 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text {
color:#232629;
}
.ColorScheme-NegativeText {
color:#da4453;
}
</style>
<g transform="translate(1,1)">
<g class="ColorScheme-Text" fill="currentColor">
<path d="m3 8v6h2v-6z"/>
<path d="m6 8v6l5 5h1v-5z"/>
<path d="m11 3-3 3 4 4v-7z"/>
<g opacity=".35">
<path d="m14.832031 16.832031a7 7 0 0 1 -1.21289.646485l.24414.974609a8 8 0 0 0 1.681641-.908203z"/>
<path d="m14.324219 7.28125-.539063.8613281a4 4 0 0 1 1.214844 2.8574219 4 4 0 0 1 -.371094 1.628906l.75.75a5 5 0 0 0 .621094-2.378906 5 5 0 0 0 -1.675781-3.71875z"/>
<path d="m13.865234 3.5371094-.24414.9765625a7 7 0 0 1 4.378906 6.4863281 7 7 0 0 1 -1.166016 3.833984l.716797.716797a8 8 0 0 0 1.449219-4.550781 8 8 0 0 0 -5.134766-7.4628906z"/>
</g>
</g>
<path d="m-.50000006 4.7426407 1-.0000001v21.6274174h-1z" class="ColorScheme-NegativeText" fill="currentColor" transform="matrix(.70710678 -.70710678 .70710678 .70710678 0 0)"/>
</g>
</svg>

BIN
themes/redmond98/layouts/cornerne.png

After

Width: 64  |  Height: 64  |  Size: 272 B

BIN
themes/redmond98/layouts/cornernew.png

After

Width: 64  |  Height: 64  |  Size: 272 B

BIN
themes/redmond98/layouts/cornernw.png

After

Width: 64  |  Height: 64  |  Size: 263 B

BIN
themes/redmond98/layouts/cornernww.png

After

Width: 64  |  Height: 64  |  Size: 264 B

BIN
themes/redmond98/layouts/cornerse.png

After

Width: 64  |  Height: 64  |  Size: 264 B

BIN
themes/redmond98/layouts/cornersew.png

After

Width: 64  |  Height: 64  |  Size: 264 B

BIN
themes/redmond98/layouts/cornersw.png

After

Width: 64  |  Height: 64  |  Size: 263 B

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

Loading…
Cancel
Save