From 2bf35924b82378bf9c6a55adc352c0f71b2e04ac Mon Sep 17 00:00:00 2001 From: Yessiest Date: Tue, 30 Aug 2022 11:00:35 +0400 Subject: [PATCH] Pre-release rush --- .gitignore | 1 + extras/udev/README | 5 + extras/udev/backlight.rules | 3 + libs/awmtk2.lua | 57 +- libs/pager.lua | 36 ++ libs/parsers.lua | 57 ++ libs/syscontrol.lua | 109 ++++ libs/syscontrol_test.lua | 22 + rc_dynamic_tags.lua | 571 ------------------ themes/reno98/config/wibar_top.json | 7 + themes/reno98/icons/ac-adapter-symbolic.png | Bin 0 -> 550 bytes themes/reno98/icons/backlight-symbolic.png | Bin 0 -> 1206 bytes .../battery-caution-charging-symbolic.png | Bin 0 -> 515 bytes .../reno98/icons/battery-caution-symbolic.png | Bin 0 -> 392 bytes .../icons/battery-empty-charging-symbolic.png | Bin 0 -> 480 bytes .../reno98/icons/battery-empty-symbolic.png | Bin 0 -> 366 bytes .../icons/battery-full-charged-symbolic.png | Bin 0 -> 374 bytes .../icons/battery-full-charging-symbolic.png | Bin 0 -> 510 bytes themes/reno98/icons/battery-full-symbolic.png | Bin 0 -> 374 bytes .../icons/battery-good-charging-symbolic.png | Bin 0 -> 541 bytes themes/reno98/icons/battery-good-symbolic.png | Bin 0 -> 396 bytes .../icons/battery-low-charging-symbolic.png | Bin 0 -> 538 bytes themes/reno98/icons/battery-low-symbolic.png | Bin 0 -> 403 bytes .../reno98/icons/battery-missing-symbolic.png | Bin 0 -> 446 bytes themes/reno98/icons/battery.png | Bin 0 -> 374 bytes themes/reno98/icons/battery.svg | 194 ++++++ .../icons/notifications-area-symbolic.png | Bin 0 -> 455 bytes themes/reno98/icons/wallpapers.png | Bin 0 -> 682 bytes themes/reno98/theme.lua | 52 ++ widgets/battery.lua | 213 +++++++ widgets/notifications.lua | 69 +++ widgets/rootmenu.lua | 1 - widgets/wallpapers.lua | 113 ++++ 33 files changed, 936 insertions(+), 574 deletions(-) create mode 100644 .gitignore create mode 100644 extras/udev/README create mode 100644 extras/udev/backlight.rules create mode 100644 libs/pager.lua create mode 100644 libs/parsers.lua create mode 100644 libs/syscontrol.lua create mode 100644 libs/syscontrol_test.lua delete mode 100644 rc_dynamic_tags.lua create mode 100644 themes/reno98/icons/ac-adapter-symbolic.png create mode 100644 themes/reno98/icons/backlight-symbolic.png create mode 100644 themes/reno98/icons/battery-caution-charging-symbolic.png create mode 100644 themes/reno98/icons/battery-caution-symbolic.png create mode 100644 themes/reno98/icons/battery-empty-charging-symbolic.png create mode 100644 themes/reno98/icons/battery-empty-symbolic.png create mode 100644 themes/reno98/icons/battery-full-charged-symbolic.png create mode 100644 themes/reno98/icons/battery-full-charging-symbolic.png create mode 100644 themes/reno98/icons/battery-full-symbolic.png create mode 100644 themes/reno98/icons/battery-good-charging-symbolic.png create mode 100644 themes/reno98/icons/battery-good-symbolic.png create mode 100644 themes/reno98/icons/battery-low-charging-symbolic.png create mode 100644 themes/reno98/icons/battery-low-symbolic.png create mode 100644 themes/reno98/icons/battery-missing-symbolic.png create mode 100644 themes/reno98/icons/battery.png create mode 100644 themes/reno98/icons/battery.svg create mode 100644 themes/reno98/icons/notifications-area-symbolic.png create mode 100644 themes/reno98/icons/wallpapers.png create mode 100644 widgets/battery.lua create mode 100644 widgets/notifications.lua create mode 100644 widgets/wallpapers.lua diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b2b4805 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/wallpaper.txt diff --git a/extras/udev/README b/extras/udev/README new file mode 100644 index 0000000..59acb2d --- /dev/null +++ b/extras/udev/README @@ -0,0 +1,5 @@ +# How to enable backlight brightness controls +1. Create "video" group if it doesn't exist +2. Add your users to the "video" group +3. Place the backlight.rules file into /etc/udev/rules.d +4. Reboot diff --git a/extras/udev/backlight.rules b/extras/udev/backlight.rules new file mode 100644 index 0000000..7330687 --- /dev/null +++ b/extras/udev/backlight.rules @@ -0,0 +1,3 @@ +# Rules to make backlight writable by Video group +ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness" +ACTION=="add", SUBSYSTEM=="backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness" diff --git a/libs/awmtk2.lua b/libs/awmtk2.lua index e50b111..a92cb3f 100644 --- a/libs/awmtk2.lua +++ b/libs/awmtk2.lua @@ -145,6 +145,14 @@ awmtk.proto_style.wibar = awmtk.create_delta("wibar", { awmtk.proto_style.menu = awmtk.create_delta("menu", { margins = 1 }, awmtk.proto_style,awmtk.proto_style.base) + +awmtk.proto_style.center = awmtk.create_delta("center", { + margins = 1 +}, awmtk.proto_style,awmtk.proto_style.base) + +awmtk.proto_style.slider = awmtk.create_delta("slider", { + margins = 1 +}, awmtk.proto_style,awmtk.proto_style.base) -- }}} -- {{{ Generic templates @@ -258,7 +266,8 @@ awmtk.proto_templates = { font = style.article.font, align = options.font_align or style.article.font_align, - valign = "center" + valign = style.article.title_valign or "center", + align = style.article.title_align or "left" }, (options.description and { markup = options.description or "", @@ -267,7 +276,8 @@ awmtk.proto_templates = { font = style.article.small_font, align = options.small_font_align or style.article.small_font_align, - valign = "center" + valign = style.article.desc_valign or "center", + align = style.article.desc_align or "left" }), spacing = style.article.spacing, layout = wibox.layout.flex.vertical @@ -278,6 +288,26 @@ awmtk.proto_templates = { end end, + center = function(style) + return function(layout,options) + options = options or {} + return awmtk.merge({ + { + layout, + strategy = "exact", + height = options.height or + style.center.height, + width = options.width or + style.center.width, + widget = wibox.container.constraint + }, + widget = wibox.container.place, + valign = "center", + halign = "center" + },options or {}) + end + end, + popup = function(style) -- Popup is a distinct template designed to accomodate the "root" of -- a popup, allowing one to add titlebars to popups, for example. @@ -343,6 +373,29 @@ awmtk.proto_templates = { top = style.wibar.top },options or {}) end + end, + + slider = function(style) + -- Slider widget but wired to work with the AWMTK2 namespace system + return function(args) + return awmtk.merge({ + handle_shape = style.slider.handle_shape or style.slider.shape, + handle_color = style.slider.bg_normal, + handle_margins = style.slider.handle_margins, + handle_width = style.slider.handle_width, + handle_border_color = style.slider.handle_border_color, + handle_border_width = style.slider.handle_border_width, + bar_shape = style.slider.bar_shape or style.slider.shape, + bar_height = style.slider.bar_height, + bar_color = style.slider.bg_focus, + bar_margins = style.slider.bar_margins, + bar_border_width = style.slider.bar_border_width, + bar_border_color = style.slider.bar_border_color, + forced_width = style.slider.width, + forced_height = style.slider.height, + widget = wibox.widget.slider + },args or {}) + end end } diff --git a/libs/pager.lua b/libs/pager.lua new file mode 100644 index 0000000..f614875 --- /dev/null +++ b/libs/pager.lua @@ -0,0 +1,36 @@ +local awful = require("awful") +local wibox = require("wibox") + +return function(widget,list,max_elements) + if not tostring(widget):match("wibox.layout") then + error("Cannot attach pager to widget that isn't a layout") + end + local new_pager = { + page = widget, + list = list, + index = 0, + max = max_elements + } + function new_pager:update() + self.page:reset() + for i = 1+(self.max*self.index),self.max+(self.max*self.index) do + if self.list[i] then + self.page:add(self.list[i]) + end + end + end + function new_pager:next() + if #list >= (self.index+1)*self.max then + self.index = self.index + 1 + new_pager:update() + end + end + function new_pager:prev() + if self.index > 0 then + self.index = self.index - 1 + new_pager:update() + end + end + new_pager:update() + return new_pager +end diff --git a/libs/parsers.lua b/libs/parsers.lua new file mode 100644 index 0000000..97c1aeb --- /dev/null +++ b/libs/parsers.lua @@ -0,0 +1,57 @@ +-- General collection of parsers for various linux utilities +local parsers = {} +parsers.upower = function(data) + -- this shit was born in a fever dream, that's the only reasonable explanation i can give to this. + local struct = {} + local layer = 1 + local leaf = struct + local history = {} + data:gsub("\n?\r?([%s]*)([^\n]*)",function(block,line) + if block == "" then block = " " end + block = block:len() + if line:match("%S") then + if block > layer then + history[layer] = leaf + local pos = #leaf + local key = leaf[pos] + table.remove(leaf,pos) + leaf[key] = {} + leaf = leaf[key] + layer = block + end + if block < layer then + leaf = history[block] + layer = block + end + table.insert(leaf,line) + end + end) + local function prettify(t) + for k,v in ipairs(t) do + if v:find(":") then + t[v:match("^(.-):")] = v:match("^.-:%s*(.*)") + t[k] = nil + end + end + for k,v in pairs(t) do + if type(v) == "table" then + t[k] = prettify(v) + end + end + return t + end + return prettify(struct) +end +return parsers + + + + + + + + + + + + diff --git a/libs/syscontrol.lua b/libs/syscontrol.lua new file mode 100644 index 0000000..2cea2c6 --- /dev/null +++ b/libs/syscontrol.lua @@ -0,0 +1,109 @@ +-- Pure lua module for controlling, reading and enumerating devices through sysfs +-- Because in Linux we trust. +local syscontrol = { + power_supply = {}, + backlight = {}, + hwmon = {} +} +syscontrol.backlight.enumerate = function() + local lshandler = io.popen("ls -1 /sys/class/backlight","r") + if lshandler then + local out = lshandler:read("*a") + lshandler:close() + local devices = {} + out:gsub("(%S*)\n",function(a) + table.insert(devices,a) + end) + return devices + else + return nil, "Unable to ls /sys/class/backlight" + end +end +syscontrol.backlight.read_attribs = function(dev_name) + local fhandler,err = io.open("/sys/class/backlight/"..dev_name.."/brightness","r") + if fhandler then + local bhandler = io.open("/sys/class/backlight/"..dev_name.."/max_brightness","r") + local device = { + name = dev_name, + full_path = "/sys/class/backlight/"..dev_name, + brightness = tonumber(fhandler:read("*a")), + max_brightness = tonumber(bhandler:read("*a")), + writable = false + } + fhandler:close() + local wfhandler = io.open("/sys/class/backlight/"..dev_name.."/brightness","w") + if wfhandler then + wfhandler:close() + device.writable = true + end + return device + else + return nil, err + end +end +syscontrol.backlight.set_brightness = function(device,brightness) + if device.writable then + brightness = tonumber(brightness) + if (brightness < 0) or (brightness > device.max_brightness) then + return nil, "Brightness exceeds given limits" + end + local fhandler = io.open(device.full_path.."/brightness","w") + fhandler:write(tostring(brightness)) + fhandler:close() + return true + else + return nil, "Device is not writable" + end +end +syscontrol.power_supply.enumerate = function() + local lshandler = io.popen("ls -1 /sys/class/power_supply","r") + if lshandler then + local out = lshandler:read("*a") + lshandler:close() + local devices = {} + out:gsub("(%S*)\n",function(a) + table.insert(devices,a) + end) + return devices + else + return nil, "Unable to ls /sys/class/power_supply" + end +end +syscontrol.power_supply.read_attribs = function(dev_name) + local fhandler,err = io.open("/sys/class/power_supply/"..dev_name.."/type","r") + if fhandler then + local dtype = fhandler:read("*a"):match("%S*") + fhandler:close() + local full_path = "/sys/class/power_supply/"..dev_name + local device = { + type = dtype, + full_path = full_path, + name = dev_name + } + if dtype == "Mains" then + local online_f = io.open(full_path.."/online","r") + device.online = (online_f:read("*a"):match("%S*") == "1") + online_f:close() + elseif dtype == "Battery" then + local capacity_f = io.open(full_path.."/capacity","r") + local model_f = io.open(full_path.."/model_name","r") + local energy_full_design_f = io.open(full_path.."/energy_full_design","r") + local energy_full_f = io.open(full_path.."/energy_full","r") + local charging_f = io.open(full_path.."/status","r") + device.model = model_f:read("*a"):match("[^\n]*") + device.energy_full_design = tonumber(energy_full_design_f:read("*a")) + device.energy_full = tonumber(energy_full_f:read("*a")) + device.quality = (device.energy_full/device.energy_full_design)*100 + device.capacity = tonumber(capacity_f:read("*a")) + device.charging = (charging_f:read("*a"):match("%S*") == "Charging") + capacity_f:close() + model_f:close() + energy_full_design_f:close() + energy_full_f:close() + end + return device + else + return nil, err + end +end +return syscontrol diff --git a/libs/syscontrol_test.lua b/libs/syscontrol_test.lua new file mode 100644 index 0000000..c04255c --- /dev/null +++ b/libs/syscontrol_test.lua @@ -0,0 +1,22 @@ +-- Who needs upower and xbacklight anyways? +local syscontrol = require("syscontrol") +local devices = syscontrol.power_supply.enumerate() +for k,v in pairs(devices) do + local data = syscontrol.power_supply.read_attribs(v) + print("Device: ") + for kk,vv in pairs(data) do + print(kk,vv) + end +end +local backlight_devices = syscontrol.backlight.enumerate() +for k,v in pairs(backlight_devices) do + local data = syscontrol.backlight.read_attribs(v) + print("Backlight device: ") + for kk,vv in pairs(data) do + print(kk,vv) + end + if data.writable then + syscontrol.backlight.set_brightness(data,data.max_brightness) + end +end + diff --git a/rc_dynamic_tags.lua b/rc_dynamic_tags.lua deleted file mode 100644 index 7848e31..0000000 --- a/rc_dynamic_tags.lua +++ /dev/null @@ -1,571 +0,0 @@ --- If LuaRocks is installed, make sure that packages installed through it are --- found (e.g. lgi). If LuaRocks is not installed, do nothing. -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") -local menubar = require("menubar") -local hotkeys_popup = require("awful.hotkeys_popup") --- Enable hotkeys help widget for VIM and other apps --- when client with a matching name is opened: -require("awful.hotkeys_popup.keys") - --- {{{ 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 --- }}} - --- {{{ Variable definitions --- Themes define colours, icons, font and wallpapers. -beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") - --- This is used later as the default terminal and editor to run. -terminal = "xterm" -editor = os.getenv("EDITOR") or "nano" -editor_cmd = terminal .. " -e " .. editor - --- Default modkey. --- Usually, Mod4 is the key with a logo between Control and Alt. --- If you do not like this or do not have such a key, --- 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. -modkey = "Mod4" - --- Table of layouts to cover with awful.layout.inc, order matters. -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, -} --- }}} - --- {{{ Menu --- Create a launcher widget and a main menu -myawesomemenu = { - { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, - { "manual", terminal .. " -e man awesome" }, - { "edit config", editor_cmd .. " " .. awesome.conffile }, - { "restart", awesome.restart }, - { "quit", function() awesome.quit() end }, -} - -mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, - { "open terminal", terminal } - } - }) - -mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, - menu = mymainmenu }) - --- Menubar configuration -menubar.utils.terminal = terminal -- Set the terminal for applications that require it --- }}} - --- Keyboard map indicator and switcher -mykeyboardlayout = awful.widget.keyboardlayout() - --- {{{ Wibar --- Create a textclock widget -mytextclock = wibox.widget.textclock() - --- 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({ modkey }, 1, function(t) - if client.focus then - client.focus:move_to_tag(t) - end - end), - awful.button({ }, 3, awful.tag.viewtoggle), - awful.button({ 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) - ) - -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)) - -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) - - -- Each screen has its own tag table. - awful.tag({ "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1]) - - -- 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 { - screen = s, - filter = awful.widget.taglist.filter.all, - buttons = taglist_buttons - } - - -- Create a tasklist widget - s.mytasklist = awful.widget.tasklist { - screen = s, - filter = awful.widget.tasklist.filter.currenttags, - buttons = tasklist_buttons - } - - -- Create the wibox - s.mywibox = awful.wibar({ position = "top", screen = s }) - - -- Add widgets to the wibox - s.mywibox:setup { - layout = wibox.layout.align.horizontal, - { -- Left widgets - layout = wibox.layout.fixed.horizontal, - mylauncher, - s.mytaglist, - s.mypromptbox, - }, - s.mytasklist, -- Middle widget - { -- Right widgets - layout = wibox.layout.fixed.horizontal, - mykeyboardlayout, - wibox.widget.systray(), - mytextclock, - s.mylayoutbox, - }, - } -end) --- }}} - --- {{{ Mouse bindings -root.buttons(gears.table.join( - awful.button({ }, 3, function () mymainmenu:toggle() end), - awful.button({ }, 4, awful.tag.viewnext), - awful.button({ }, 5, awful.tag.viewprev) -)) --- }}} - --- {{{ Key bindings -globalkeys = gears.table.join( - awful.key({ modkey, }, "s", hotkeys_popup.show_help, - {description="show help", group="awesome"}), - awful.key({ modkey, }, "Left", awful.tag.viewprev, - {description = "view previous", group = "tag"}), - awful.key({ modkey, }, "Right", awful.tag.viewnext, - {description = "view next", group = "tag"}), - awful.key({ modkey, }, "Escape", awful.tag.history.restore, - {description = "go back", group = "tag"}), - - awful.key({ modkey, }, "j", - function () - awful.client.focus.byidx( 1) - end, - {description = "focus next by index", group = "client"} - ), - awful.key({ modkey, }, "k", - function () - awful.client.focus.byidx(-1) - end, - {description = "focus previous by index", group = "client"} - ), - awful.key({ modkey, }, "w", function () mymainmenu:show() end, - {description = "show main menu", group = "awesome"}), - - -- Layout manipulation - awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end, - {description = "swap with next client by index", group = "client"}), - awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end, - {description = "swap with previous client by index", group = "client"}), - awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end, - {description = "focus the next screen", group = "screen"}), - awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end, - {description = "focus the previous screen", group = "screen"}), - awful.key({ modkey, }, "u", awful.client.urgent.jumpto, - {description = "jump to urgent client", group = "client"}), - awful.key({ 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({ modkey, }, "Return", function () awful.spawn(terminal) end, - {description = "open a terminal", group = "launcher"}), - awful.key({ modkey, "Control" }, "r", awesome.restart, - {description = "reload awesome", group = "awesome"}), - awful.key({ modkey, "Shift" }, "q", awesome.quit, - {description = "quit awesome", group = "awesome"}), - - awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end, - {description = "increase master width factor", group = "layout"}), - awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end, - {description = "decrease master width factor", group = "layout"}), - awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end, - {description = "increase the number of master clients", group = "layout"}), - awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end, - {description = "decrease the number of master clients", group = "layout"}), - awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end, - {description = "increase the number of columns", group = "layout"}), - awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end, - {description = "decrease the number of columns", group = "layout"}), - awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end, - {description = "select next", group = "layout"}), - awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end, - {description = "select previous", group = "layout"}), - - awful.key({ 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"}), - - -- Prompt - awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, - {description = "run prompt", group = "launcher"}), - - awful.key({ modkey }, "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({ modkey }, "p", function() menubar.show() end, - {description = "show the menubar", group = "launcher"}) -) - -clientkeys = gears.table.join( - awful.key({ modkey, }, "f", - function (c) - c.fullscreen = not c.fullscreen - c:raise() - end, - {description = "toggle fullscreen", group = "client"}), - awful.key({ modkey, "Shift" }, "c", function (c) c:kill() end, - {description = "close", group = "client"}), - awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle , - {description = "toggle floating", group = "client"}), - awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end, - {description = "move to master", group = "client"}), - awful.key({ modkey, }, "o", function (c) c:move_to_screen() end, - {description = "move to screen", group = "client"}), - awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end, - {description = "toggle keep on top", group = "client"}), - awful.key({ modkey, }, "n", - function (c) - -- The client currently has the input focus, so it cannot be - -- minimized, since minimized clients can't have the focus. - c.minimized = true - end , - {description = "minimize", group = "client"}), - awful.key({ modkey, }, "m", - function (c) - c.maximized = not c.maximized - c:raise() - end , - {description = "(un)maximize", group = "client"}), - awful.key({ modkey, "Control" }, "m", - function (c) - c.maximized_vertical = not c.maximized_vertical - c:raise() - end , - {description = "(un)maximize vertically", group = "client"}), - awful.key({ modkey, "Shift" }, "m", - function (c) - c.maximized_horizontal = not c.maximized_horizontal - c:raise() - end , - {description = "(un)maximize horizontally", group = "client"}) -) - -awful.screen.connect_for_each_screen(function(s) - for _, t in pairs(s.tags) do - t:delete() - end - awful.tag({ "1", "2", "3", "4", "5" }, s, awful.layout.layouts[1]) -end) --- 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, 5 do - globalkeys = gears.table.join(globalkeys, - -- View tag only. - awful.key({ 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({ 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({ 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({ 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 - -clientbuttons = gears.table.join( - awful.button({ }, 1, function (c) - c:emit_signal("request::activate", "mouse_click", {raise = true}) - end), - awful.button({ modkey }, 1, function (c) - c:emit_signal("request::activate", "mouse_click", {raise = true}) - awful.mouse.client.move(c) - end), - awful.button({ modkey }, 3, function (c) - c:emit_signal("request::activate", "mouse_click", {raise = true}) - awful.mouse.client.resize(c) - end) -) - --- Set keys -root.keys(globalkeys) --- }}} - --- {{{ 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 = clientkeys, - buttons = clientbuttons, - screen = awful.screen.preferred, - placement = awful.placement.no_overlap+awful.placement.no_offscreen - } - }, - - -- 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" } }, -} --- }}} - --- {{{ 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 -end) - --- Add a titlebar if titlebars_enabled is set to true in the rules. -client.connect_signal("request::titlebars", function(c) - -- buttons for the titlebar - 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) - ) - - awful.titlebar(c) : setup { - { -- Left - awful.titlebar.widget.iconwidget(c), - buttons = buttons, - 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.floatingbutton (c), - awful.titlebar.widget.maximizedbutton(c), - awful.titlebar.widget.stickybutton (c), - awful.titlebar.widget.ontopbutton (c), - awful.titlebar.widget.closebutton (c), - layout = wibox.layout.fixed.horizontal() - }, - layout = wibox.layout.align.horizontal - } -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) --- }}} - diff --git a/themes/reno98/config/wibar_top.json b/themes/reno98/config/wibar_top.json index d1d6c26..d121107 100644 --- a/themes/reno98/config/wibar_top.json +++ b/themes/reno98/config/wibar_top.json @@ -7,9 +7,16 @@ ], "right": [ + { "widget": "widgets.notifications", + "screen": true + }, + { "widget": "widgets.wallpapers", + "screen": true + }, { "widget": "widgets.base.subpanel", "layout": { "list": [ + { "widget": "widgets.battery" }, { "widget": "widgets.base.systray" }, { "widget": "widgets.base.clock" } ] diff --git a/themes/reno98/icons/ac-adapter-symbolic.png b/themes/reno98/icons/ac-adapter-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf53b7202e2b32e8183e174508d8a3c9514e69f GIT binary patch literal 550 zcmV+>0@?kEP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10kcU& zK~!jg?U?P6gCG!wcW=^!)`XS;Wn3(Slwnenma+FEM}~_=zy()td}jEO3?KUf%Znfp z!IAlr4uH!kK$=s4G^YS*E}X_~+XhXf?|bBo5rQQk247?eF}T)=U0_P7#d?p&WAa~4 zA;oh*DfKFjn5`Gfrb+AzK}14CwvgEzFvb+U;VGrye!pkwYa+lHLt5)#!>;Q90AL)) z=)tP0N(e2EkEc*dV6nJ9tEvKPEf`|}5s8RaC$)%?<(!EIc<2Zt~mfKBvCyrt6)U(z`O%hwcFbvUk>$?8)+vURTcAKkC0AV4Uu7EH0UCcX9 zRA`%tU8jd(cnMm{F+{vB^&{fMF=(ybDtrUL^;12z6La{m_mkMviA(VRJ}I|yVz+&` zrYPpbxe(bxIg;10sge1C=UT<$0_J9WDR}2WUc1HfdiARW!1KE{rG8@I!8WeK>H^OT z*J6q3M{B*R9TD-iP>Ithxlhgt5-xn!U`0VBJRdz~Phl2gzk{^~-iJWB>pF07*qoM6N<$f`lpe!~g&Q literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/backlight-symbolic.png b/themes/reno98/icons/backlight-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..828f5713912ef677d658c9425ec961e22caeec62 GIT binary patch literal 1206 zcmV;n1WEgeP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11Vc$g zK~!jg?V3+$6jvO_KX3NmB+(k|P6COfwh$O-dT0|GX;}|~hf;S$@K%vtYCH%%8w3v( za;cPFy?7}?&B3ylN^fQ&3O1kzaiBpl6|!cMRyH%)%3z3Ym?m_NVd)Q^k&{~ z=J&qL_xF46{oW`Mp`8(r>P41i4OFXDV=FsN)1KsVxs|B=Mn*tHE@_(f%~p2RYIOvd ziOO$F1hU!eDW%jUfXkO3%nc4|Q>oPPo_e-H(7BLG4fPy5_QQ8dsa^mP8E(Ztv_K%6 z&7K+^efhCzzVZS3`wb2pIJgSRt!J<6vI>DaHg<$;_9GuaDRmB*5)r4_aj0g4*s`pd zvu7Ru^yxn`Yj?i1;oZ#EPmVeeGXa!34=^So*P0pxO%OP7;>56~X}{mR`KzPrWpnNB z*#_OdXG4DmU}EC7JwE``nt5n9p`jSCENh^*w>Z$#6F8O1Cas%|xvf+I2jI}5 z1OAaCA9zZsVc>~~G?Zc+l2A6Ay*4!TcV=SZ?i&McUP1t#7dZR(e`^9GBGOQbZF>pr z5!h*LI|eMvlB-v3dvNg8hFt%N4MW?={cpo(o31jM@15!CSzAQTZTAgr{{{94>@@ZW z>@?b*z;0Md*q#>{drOIS#s76_lq0^GRqpm_ZFkI#S+ z;7Oy;H$)(p%gw!f*)jL{@j){d6N9ylOoN-5&3OKNspJ0rr@bOF)97Xf{sR(f`>I6S ze}O#$JB?OqqhH;*)Az;9Oph@!aTl0M!=Wkov~Fz_x)$KW9*FVi(Vw?3T=@Aga0YnZ z!Wfz-kjv$qlP6Ce6%o^Q58D9ca+fcXtXmr`l@h*4-~!ycm#$43E;Ya*-`j~hzRuc^#LFvD5dJ!Z0w8jRH!8aA~L0v8hiNg z;hFya{^dj>(Ip~o5Cp|?x!kdC7lz?-u~_U{Sy^#sXJ?BqUc7h;{M7R3X<;JU2+Oi0 zlga#M7{&m=;^N{$sZ^>3bD>ap=KKEp0F#rG2yarov!IW48vMG zl}fp~uA8shEiL}uL}UaO7Z;04Dd%;2p;Ri>`U-`D=li|`5ClO~E`bOM#N+XjuIny< zuIs+0X|;5!>v~u&mt6p*R5~i35Fvr??(TQ??c0|DSY2IpHcAMvfeb)0ncSTca$T2o z*(@zB5r$!{&+|MAg#xgPCDhs3xojB5`UK^LVOWz;GMQXTCX+URrfIuVLa|sZ9*@V3 z*KJ88617wNL?Yp>U%zdlYZj3aSYBT4n4h0Fp(deP40xXB777Iupi-&qz8I)ht0UL1 zU;nyNsTi=P^YxSp5QbrT{V?12{c$4v)gY3Y7(gj?1~|G6(<>q}7l~6MB(PKX2WCI$ Uj0Vc0_W%F@07*qoM6N<$f;>V&Pyhe` literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-caution-charging-symbolic.png b/themes/reno98/icons/battery-caution-charging-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..be0746bfcb390340ce45c0dcc1023abf0be769dd GIT binary patch literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4j!ywFfJby(BP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_s6no-U3d8I5meSQj-L2(*S8L4UG->Jo>xWSEkgd1b?IjuIXT_xi^d1!X7FWYI(+~HC4Gh_DUYpErfkN^0K$}X>u z7V(WR2{XPR{w`|1q|utK+qP}K!Ju?4my!8vPt)w8bMv>QoHsK_JtBDV*T>{_1;;WT z{4RK5vw!JJ?&VX1uHWZ7&Qkh*Ta{A>4}(JP*Nf_>jiM)3v*aB5{eF#r(&JrfzYa}* zl;WUSy4BYxTrrzFeU7q0_<>o6rUsQ)x-rM^wVW`=Z_;I#FRw01a{Etm@%wo{!>CD>@J{)%Or z64R9q22&-6UXB1|rYm!j8<%BHl9;q=RZ#ZF|F0X?)`VW)?|bB`)|<|2Qj83{)^R^O zu#b73!-ij-lWW-DT)Y^yxb{xPCnm)yL6cd$8K=J}S5WOSyeRRTZ-Y38+`{r{m9L`% zWB5+0IYmx`h$eg#+r)Et!wqh(J!$0(g6n@T*&=J{pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10c}Y{ zK~!jg?U>PRgD?<=@2W0=vqkAl^%#gT+%=dZYuL|BaDAvw1;W7va1SDX5=y`Z{?9hp z2@(-pnK$bIdnp3e6aj0BfHg(Hnj&D$yHwD&?I{*XP1E2~`RnxnxBQyt@bBJ~hHOkf&Z zTc24HPAQ4k*)4#G{V>2nz1hHj<$PS<`T#owo@sGJ6#x9#8l0IGxZQ3a(g`uf`|l0c z0*ybVdd|6e?VfdAOGWw~kb+OgtaGmBx^ql}??ojLW4ucbnKsDL!5MWAYz=T^@EGI6 zu~`8k`W)_8Rpq5J2@cNZYR`L?!zVI;v2bp(2pmn literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-empty-symbolic.png b/themes/reno98/icons/battery-empty-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..7b88252ec2efb613049cf2e54c8797db6b9fe7db GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4j!ywFfJby(BP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IXprYTNE{-7?jc;chyubhYV~^gB_lI}icHnr(8Xzw4 zpGQZ?qctbx>5^@qC%#rwVExF6I)?s7MqR!{$=Jvn&Q?~tGafmNG4wisIBB|nRZCiT*r&~A5Wk_Wfa2l};y)Nn*j&WU@ZS~zh8csWtDnm{ Hr-UW|f{&Fo literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-full-charging-symbolic.png b/themes/reno98/icons/battery-full-charging-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..c299736b1ddb3e8c29847b7f41f331f93dc2126a GIT binary patch literal 510 zcmVpF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10gFjQ zK~!jg?U*}K!!QtrcNyHIp(D4*SvUnchH*`iE`w=v0cLy>k~`QWR18DqLKJ2lKeUeG z2Ww^YRZb+?|EHB5IjFS;m${J+FcdE!jTex{3rOPyr11jM+;R<36wP9j6ow&owO?Na zXy%{7&Htw{kg8Mz0K{=@tc3Fws0qw%_HAHq;<@k|zrmw=0Hsv+h2I@b5& zo*GeWtr1`ffxqDNriz^p!S=Xfu)Xkj0*&Cd{fRE&EX&x_3>UcjtOa0U0+-Dc{KDnd zU*M7%$0OUXZ*amW5bXJdo39SV_09yM_H+G$-Lg2?cL(LLt^gOjxn_givg~W36?`C8 z0{QB|-ek5x#tu$cSDl3(J*cHCvs z#q9S&002pn)IQTT0>A|U^$h^^&{eSc_d0E<*FP^)N3-JV`2zrW0q0+6S`{c85NGjH z&&@n>y%lf;=PTd^r11jMcmZj=fHYn}8s`Om0k=YcOPx>M$p8QV07*qoM6N<$f-4l@ AQUCw| literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-full-symbolic.png b/themes/reno98/icons/battery-full-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..47352836db685cbf54021a4c453d8b9e9d0a16d9 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4j!ywFfJby(BP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_nlEPZ!6KjK;S!9Qh6@2)Nq2 zy??IxMB>I)?s7MqR!{$=Jvn&Q?~tGafmNG4wisIBB|nRZCiT*r&~A5Wk_Wfa2l};y)Nn*j&WU@ZS~zh8csWtDnm{ Hr-UW|f{&Fo literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-good-charging-symbolic.png b/themes/reno98/icons/battery-good-charging-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..364fc94c576318e4f7a1a5d091890bcb90140c60 GIT binary patch literal 541 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4j!ywFfJby(BP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_s7eo-U3d8I5me7zQ;vh_v0e zy0m2Drbm35M~qYUIOILpaooW#q4$!-MsLrF!W9gUd1czyYOc|k=NiMtp}!{aWb>Ii zyYnbMg}2)iW3`xy7u_xGp`Td{ax>&r*njH+!RiO z^L7sW%>PeTD81N`+?pN5`((ac<)Ny$KfX6qIeH#Vi{`)gejW4u@A)e%n-vtkN`yBE z-HX|LdTsczZGobB%*xEKD;?iyEpy7@zAh2|AcE1XH9d0M_t@XI9|Gs+Z2Y8^tQIV~ z^uy7tYn5_J_h!Xx?RA`YBDM*Jcl3Wy{U&*W+h%ci{egq!67>l@w#6Uz%PkLu*R<_Eugl!A4{5 zS1ikvn67j%m?}B+as((dUD0uF+@v#EVp7+lfaH%qOAmzoi0~xor+IPc2k1pvUoF2e^9QV+GBW7;y2$0@eg_nzwPUq z<+AOxS@K7l^Ua3eWE1ocJkm|coRwB^c0YSw;dch5y!zU(X#qU1cDgTe~DWM4fJ_ekN literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-low-charging-symbolic.png b/themes/reno98/icons/battery-low-charging-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..f1a7544e0a8dca0fdd9057dfddf74259f484ae4e GIT binary patch literal 538 zcmV+#0_FXQP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10jEhs zK~!jg?U*rAgfJ9_UmRCwY^=5b?y!aN5H?=JoWTk?fi*T3I(q@mv4yK=NNUEh+9DSE zTwr++0vOoIH^a=r3orkl2T53_wT3x!;#xpoyaCsE1FrD~T;mP6#v5?WDHTYPWD=XC zIF4CU{P-$>BYz)1bV_svx^bjz5khDHfHX~O^UuBlB?Gpj?~=(^03RJ8gvO&7AI$(` zOye;|Zv0J7qkWU(mnt)SwTq&(HlGj%Gf)+7+8${#tdt`2^fs`(EDNBZ1n=W`z1wtb zZQ%T`!}hj}G4jt3Tj5BpfsgkEc>`bVemiUv1V-(`FysILQ50Q~eR59fF|Gh5y!y*G} zq7bW3uC=}{o}=&}2t-|cC{T#rvUUiaj?SRmiqJS zu~SFu*NZ1RiOndb?f_^5liyCaL9X#*Y=doR+hQDV1?Ix+E8q>d#v5>rH{cp?z%|~0 cYi4iY8*aXkP%#rroB#j-07*qoM6N<$f(Y>BzW@LL literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-low-symbolic.png b/themes/reno98/icons/battery-low-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..5f26e8332563cc1a07ae1a60c8eb82d7bc178b37 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4j!ywFfJby(BP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_nk2PZ!6KjK;S!y!o081RR#T z#a6K9E6N?}y}lv6Ak?xkJ4Ranfajk%jq5rKZP#@vOj$C)Le^M6k#X{rN@G?v4HuSk zJ}ZPJx;X-rnXYs&m?}B+as(KEWxZt5o8)11Y{kAG|4R>q*5&g#a-U_a);1McYs$os z5_xT>-ETeTY1ayZ(jNpjDF+Gy{(RmhIroUTc1AAM+bltL+ya z+i}Nb?2cULmi}1LQz*Zumi-3zh6--Wu0bdJ`o*=o(OpW%1M0n(A0A4Bhb n+%Nlp={FzD3lQJDVZHY_D`0KtG0`SqfHHWx`njxgN@xNAEJ&Pc literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery-missing-symbolic.png b/themes/reno98/icons/battery-missing-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..37d01b3aa7300bee18986199413bdb6c8e14c639 GIT binary patch literal 446 zcmV;v0YUzWP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10ZU0l zK~!jg?U>7PgfI+-rOY;A(?v*4aTyF{C~Z*3wt>%7pq!jxS-d15qnOcmGH6EDFUb!; zW`>%1(+=P$CO{h#pp6O8#sp|%0<^j141M4Ki%U}1b@JokrDBfHI!Y%dsqgYo|$=fLWl@M2%K6ey-Q=U7Mcgo%y=Z|zsx1R2IhgM zamjWPYoU@Ek1=L#*V=_@WVMBwrg@ieK91uZ0Kj|S9`V_>ZPr$-0x9^?6mKE#eLj5x zh#q8#dFu%KeR{VlfSEreCY18?ifisdM{&*tNq@sIJUq`2%_0I~j07MfWSS-d$e;AM z{Joy8)I{{PchVT+CjfwRZnux6ubhBVEp#~W-||#}AHzu>BwK7<606^ZvK6R>>MLLZ ov@rqNm;h}|fHo#To9YF81B%Le=hB;yBLDyZ07*qoM6N<$f*aDe;{X5v literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery.png b/themes/reno98/icons/battery.png new file mode 100644 index 0000000000000000000000000000000000000000..47352836db685cbf54021a4c453d8b9e9d0a16d9 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4j!ywFfJby(BP*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IX1_nlEPZ!6KjK;S!9Qh6@2)Nq2 zy??IxMB>I)?s7MqR!{$=Jvn&Q?~tGafmNG4wisIBB|nRZCiT*r&~A5Wk_Wfa2l};y)Nn*j&WU@ZS~zh8csWtDnm{ Hr-UW|f{&Fo literal 0 HcmV?d00001 diff --git a/themes/reno98/icons/battery.svg b/themes/reno98/icons/battery.svg new file mode 100644 index 0000000..07cce1d --- /dev/null +++ b/themes/reno98/icons/battery.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/themes/reno98/icons/notifications-area-symbolic.png b/themes/reno98/icons/notifications-area-symbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb057847d5510eb938978db72f488fe5e41eeab GIT binary patch literal 455 zcmV;&0XY7NP)pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10aQsu zK~!jg?U>P#gCG!w;pSeGcWgszvJGMxSchfAHb?>bzIn+q=O&7WC?VNzhMAxS-2X!+ zQ38P2lcs4lO`x@wOXq*K4E_$t*am3gTI3nvdZ`Ov~pTm;xS5+m1IM9G93ZaT3`nbQo3%0EB(}o+PiO;dCft$6PmyVAo z14r*F$lAmy+3!Nm047fp@49YrfU+!uCJs%U@;L?&U*eR$?TZy+dFqb%m z4a8z?;uJOzN@(H~Hn0|&xG_f5bsd!YU$QqK06;w6P{W?>F^y}+7pF8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10yjxS zK~z|U&6u%{>M#&R$16lfN5c>B1JEPdm5`A5htO}o0<`_>&4;|69{Lp(9ZebpE%G)m zewV~Io&+Q9l@P-qG!LgEveC8){z% zS^-39U>P8T#az~acCbOe-+$#u!%%_-fe6Wa91VbSl=`N}D*~mxz2m2g}6TV7ZC|e%4>sz#a|4E9>luiO8s6$V7HoMMqmynT%W zvYbjBsj}AVwK(TY91tVbv_7^}0Vkq~AV#WO??V13g>WKez&?Bzwx-@CDlKKWDqsPZ z|NE51>K#jihAP8}gaAWeegp!=(jbB2If!EQj-^2YJ!}^8@BCqbACJepC#!dfSCUSa zWoEft;<1LmxZm%+T?>n9uz%F3BO+q0^+P@ln|LLu><5#=CQ$8`|2M$ao^CNQSSI{4 zbid!dJ)h6L9jbw?0Z|%Q1f0!gQK+PVC