forked from ashpie/simple-awesome
Compare commits
19 Commits
ashpie-edi
...
develop
Author | SHA1 | Date | |
---|---|---|---|
b39eac91a5 | |||
2d79eb8a5e | |||
ecbf661115 | |||
00533c13f6 | |||
e36d42dfeb | |||
|
16772da504 | ||
|
7ed0fc7522 | ||
662a816dd0 | |||
957452c55b | |||
6e94e368ed | |||
fbc13ab63f | |||
5961d734b5 | |||
93a3caf5a4 | |||
4b93a05fa5 | |||
c8409703e1 | |||
3908cb4058 | |||
f3b9ffcaf9 | |||
37a94eb5ed | |||
e3cbb2f987 |
58
config.lua
58
config.lua
@ -1,61 +1,3 @@
|
|||||||
local config = require("default_config")
|
local config = require("default_config")
|
||||||
|
|
||||||
local awful = require("awful")
|
|
||||||
local gears = require("gears")
|
|
||||||
|
|
||||||
config.awesome.tiling.layouts = {
|
|
||||||
awful.layout.suit.tile,
|
|
||||||
awful.layout.suit.floating,
|
|
||||||
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,
|
|
||||||
}
|
|
||||||
|
|
||||||
config.autostart = gears.table.join(config.autostart,
|
|
||||||
{
|
|
||||||
"nextcloud",
|
|
||||||
"discord-canary",
|
|
||||||
"/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1",
|
|
||||||
"tabs-app",
|
|
||||||
"/usr/lib/kdeconnectd",
|
|
||||||
"kdeconnect-indicator",
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
config.widgets.system_resources.bars.screens = { 1, 2, 3 }
|
|
||||||
|
|
||||||
config.keys.custom_keys = {
|
|
||||||
{
|
|
||||||
hotkey = {
|
|
||||||
{ config.keys.modkey, },
|
|
||||||
"e"
|
|
||||||
},
|
|
||||||
action = function()
|
|
||||||
awful.spawn('pcmanfm')
|
|
||||||
end,
|
|
||||||
identity = { description = "pcmanfm", group = "utilities" }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
hotkey = {
|
|
||||||
{ config.keys.modkey, },
|
|
||||||
'Print'
|
|
||||||
},
|
|
||||||
action = function()
|
|
||||||
awful.spawn('sh -c ~/scripts/flameshot_upload.sh')
|
|
||||||
end,
|
|
||||||
identity = { description = "Upload screeshot", group = "utilities" }
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
@ -171,7 +171,8 @@ config.widgets = {
|
|||||||
battery = {
|
battery = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
screens = { 1, 2 },
|
screens = { 1, 2 },
|
||||||
refresh_interval = 30, -- In seconds
|
refresh_interval = 15, -- In seconds
|
||||||
|
list_refresh_interval = 2, -- In seconds
|
||||||
precision = 0, -- How many decimals
|
precision = 0, -- How many decimals
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
139
simple/init.lua
139
simple/init.lua
@ -132,9 +132,6 @@ if config.widgets.keyboard_layout.enabled then
|
|||||||
end
|
end
|
||||||
hotkey.registerKeys(keyboard_layout.getKeys(config.keys.global_keys.keyboard_layout))
|
hotkey.registerKeys(keyboard_layout.getKeys(config.keys.global_keys.keyboard_layout))
|
||||||
|
|
||||||
-- Force set default keyboard layout
|
|
||||||
awful.spawn(config.widgets.keyboard_layout.layout_switch_command .. ' ' .. config.widgets.keyboard_layout.layouts[1])
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Auto start
|
-- Auto start
|
||||||
@ -200,24 +197,23 @@ os_menu = awful.widget.launcher({
|
|||||||
|
|
||||||
-- {{{ Wibar
|
-- {{{ Wibar
|
||||||
-- Create a textclock widget
|
-- Create a textclock widget
|
||||||
main_clock = wibox.widget.textclock(" %F · %R ")
|
mytextclock = wibox.widget.textclock()
|
||||||
utc_clock = wibox.widget.textclock(" %T UTC ¤ ", 1, "Z")
|
|
||||||
|
|
||||||
-- Create a wibox for each screen and add it
|
-- Create a wibox for each screen and add it
|
||||||
-- local taglist_buttons = gears.table.join(awful.button({}, 1, function(t) t:view_only() end),
|
local taglist_buttons = gears.table.join(awful.button({}, 1, function(t) t:view_only() end),
|
||||||
-- awful.button({ config.keys.modkey }, 1, function(t)
|
awful.button({ config.keys.modkey }, 1, function(t)
|
||||||
-- if client.focus then
|
if client.focus then
|
||||||
-- client.focus:move_to_tag(t)
|
client.focus:move_to_tag(t)
|
||||||
-- end
|
end
|
||||||
-- end),
|
end),
|
||||||
-- awful.button({}, 3, awful.tag.viewtoggle),
|
awful.button({}, 3, awful.tag.viewtoggle),
|
||||||
-- awful.button({ config.keys.modkey }, 3, function(t)
|
awful.button({ config.keys.modkey }, 3, function(t)
|
||||||
-- if client.focus then
|
if client.focus then
|
||||||
-- client.focus:toggle_tag(t)
|
client.focus:toggle_tag(t)
|
||||||
-- end
|
end
|
||||||
-- end),
|
end),
|
||||||
-- awful.button({}, 4, function(t) awful.tag.viewnext(t.screen) end),
|
awful.button({}, 4, function(t) awful.tag.viewnext(t.screen) end),
|
||||||
-- awful.button({}, 5, function(t) awful.tag.viewprev(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)
|
local tasklist_buttons = gears.table.join(awful.button({}, 1, function(c)
|
||||||
if c == client.focus then
|
if c == client.focus then
|
||||||
@ -270,11 +266,11 @@ awful.screen.connect_for_each_screen(function(s)
|
|||||||
awful.button({}, 4, function() awful.layout.inc(1) end),
|
awful.button({}, 4, function() awful.layout.inc(1) end),
|
||||||
awful.button({}, 5, function() awful.layout.inc(-1) end)))
|
awful.button({}, 5, function() awful.layout.inc(-1) end)))
|
||||||
-- Create a taglist widget
|
-- Create a taglist widget
|
||||||
-- s.mytaglist = awful.widget.taglist {
|
s.mytaglist = awful.widget.taglist {
|
||||||
-- screen = s,
|
screen = s,
|
||||||
-- filter = awful.widget.taglist.filter.all,
|
filter = awful.widget.taglist.filter.all,
|
||||||
-- buttons = taglist_buttons
|
buttons = taglist_buttons
|
||||||
-- }
|
}
|
||||||
|
|
||||||
-- Create a tasklist widget
|
-- Create a tasklist widget
|
||||||
s.mytasklist = awful.widget.tasklist {
|
s.mytasklist = awful.widget.tasklist {
|
||||||
@ -334,7 +330,7 @@ awful.screen.connect_for_each_screen(function(s)
|
|||||||
-- Left widgets
|
-- Left widgets
|
||||||
layout = wibox.layout.fixed.horizontal,
|
layout = wibox.layout.fixed.horizontal,
|
||||||
launcher,
|
launcher,
|
||||||
-- s.mytaglist,
|
s.mytaglist,
|
||||||
s.mypromptbox,
|
s.mypromptbox,
|
||||||
},
|
},
|
||||||
s.mytasklist, -- Middle widget
|
s.mytasklist, -- Middle widget
|
||||||
@ -345,8 +341,7 @@ awful.screen.connect_for_each_screen(function(s)
|
|||||||
matchesScreen(config.widgets.system_resources.battery.screens) and system_resources_widget.battery or nil,
|
matchesScreen(config.widgets.system_resources.battery.screens) and system_resources_widget.battery or nil,
|
||||||
keyboard_layout_widget,
|
keyboard_layout_widget,
|
||||||
wibox.widget.systray(),
|
wibox.widget.systray(),
|
||||||
utc_clock,
|
mytextclock,
|
||||||
main_clock,
|
|
||||||
s.mylayoutbox,
|
s.mylayoutbox,
|
||||||
os_menu,
|
os_menu,
|
||||||
},
|
},
|
||||||
@ -551,50 +546,50 @@ clientkeys = gears.table.join(-- tiling
|
|||||||
-- Bind all key numbers to tags.
|
-- Bind all key numbers to tags.
|
||||||
-- Be careful: we use keycodes to make it work on any keyboard layout.
|
-- 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.
|
-- This should map on the top row of your keyboard, usually 1 to 9.
|
||||||
-- for i = 1, 9 do
|
for i = 1, 9 do
|
||||||
-- hotkey.registerKeys(-- View tag only.
|
hotkey.registerKeys(-- View tag only.
|
||||||
-- awful.key({ config.keys.modkey }, "#" .. i + 9,
|
awful.key({ config.keys.modkey }, "#" .. i + 9,
|
||||||
-- function()
|
function()
|
||||||
-- local screen = awful.screen.focused()
|
local screen = awful.screen.focused()
|
||||||
-- local tag = screen.tags[i]
|
local tag = screen.tags[i]
|
||||||
-- if tag then
|
if tag then
|
||||||
-- tag:view_only()
|
tag:view_only()
|
||||||
-- end
|
end
|
||||||
-- end,
|
end,
|
||||||
-- { description = "view tag #" .. i, group = "tag" }),
|
{ description = "view tag #" .. i, group = "tag" }),
|
||||||
-- -- Toggle tag display.
|
-- Toggle tag display.
|
||||||
-- awful.key({ config.keys.modkey, "Control" }, "#" .. i + 9,
|
awful.key({ config.keys.modkey, "Control" }, "#" .. i + 9,
|
||||||
-- function()
|
function()
|
||||||
-- local screen = awful.screen.focused()
|
local screen = awful.screen.focused()
|
||||||
-- local tag = screen.tags[i]
|
local tag = screen.tags[i]
|
||||||
-- if tag then
|
if tag then
|
||||||
-- awful.tag.viewtoggle(tag)
|
awful.tag.viewtoggle(tag)
|
||||||
-- end
|
end
|
||||||
-- end,
|
end,
|
||||||
-- { description = "toggle tag #" .. i, group = "tag" }),
|
{ description = "toggle tag #" .. i, group = "tag" }),
|
||||||
-- -- Move client to tag.
|
-- Move client to tag.
|
||||||
-- awful.key({ config.keys.modkey, "Shift" }, "#" .. i + 9,
|
awful.key({ config.keys.modkey, "Shift" }, "#" .. i + 9,
|
||||||
-- function()
|
function()
|
||||||
-- if client.focus then
|
if client.focus then
|
||||||
-- local tag = client.focus.screen.tags[i]
|
local tag = client.focus.screen.tags[i]
|
||||||
-- if tag then
|
if tag then
|
||||||
-- client.focus:move_to_tag(tag)
|
client.focus:move_to_tag(tag)
|
||||||
-- end
|
end
|
||||||
-- end
|
end
|
||||||
-- end,
|
end,
|
||||||
-- { description = "move focused client to tag #" .. i, group = "tag" }),
|
{ description = "move focused client to tag #" .. i, group = "tag" }),
|
||||||
-- -- Toggle tag on focused client.
|
-- Toggle tag on focused client.
|
||||||
-- awful.key({ config.keys.modkey, "Control", "Shift" }, "#" .. i + 9,
|
awful.key({ config.keys.modkey, "Control", "Shift" }, "#" .. i + 9,
|
||||||
-- function()
|
function()
|
||||||
-- if client.focus then
|
if client.focus then
|
||||||
-- local tag = client.focus.screen.tags[i]
|
local tag = client.focus.screen.tags[i]
|
||||||
-- if tag then
|
if tag then
|
||||||
-- client.focus:toggle_tag(tag)
|
client.focus:toggle_tag(tag)
|
||||||
-- end
|
end
|
||||||
-- end
|
end
|
||||||
-- end,
|
end,
|
||||||
-- { description = "toggle focused client on tag #" .. i, group = "tag" }))
|
{ description = "toggle focused client on tag #" .. i, group = "tag" }))
|
||||||
-- end
|
end
|
||||||
|
|
||||||
clientbuttons = gears.table.join(awful.button({}, 1, function(c)
|
clientbuttons = gears.table.join(awful.button({}, 1, function(c)
|
||||||
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
c:emit_signal("request::activate", "mouse_click", { raise = true })
|
||||||
@ -674,7 +669,7 @@ awful.rules.rules = {
|
|||||||
rule_any = {
|
rule_any = {
|
||||||
type = { "normal", "dialog" }
|
type = { "normal", "dialog" }
|
||||||
},
|
},
|
||||||
properties = { titlebars_enabled = false }
|
properties = { titlebars_enabled = true }
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Set Firefox to always map on the tag named "2" on screen 1.
|
-- Set Firefox to always map on the tag named "2" on screen 1.
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
local awful = require("awful")
|
||||||
local beautiful = require("beautiful")
|
local beautiful = require("beautiful")
|
||||||
local gears = require("gears")
|
local gears = require("gears")
|
||||||
local naughty = require("naughty")
|
local naughty = require("naughty")
|
||||||
@ -34,6 +35,15 @@ local bars = wibox.widget {
|
|||||||
layout = wibox.layout.flex.horizontal
|
layout = wibox.layout.flex.horizontal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function fileExists(name)
|
||||||
|
local f = io.open(name, "r")
|
||||||
|
if f ~= nil then
|
||||||
|
io.close(f)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
function readCommand(command)
|
function readCommand(command)
|
||||||
local handle = io.popen(command, "r")
|
local handle = io.popen(command, "r")
|
||||||
local r = handle:read("*a")
|
local r = handle:read("*a")
|
||||||
@ -41,6 +51,13 @@ function readCommand(command)
|
|||||||
return r
|
return r
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function readFile(file)
|
||||||
|
local handle = io.open(file, "r")
|
||||||
|
local r = handle:read("*a")
|
||||||
|
handle:close()
|
||||||
|
return r
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
local cpuBar = bars:get_children()[1]:get_children()[1]:get_children()[1]
|
local cpuBar = bars:get_children()[1]:get_children()[1]:get_children()[1]
|
||||||
function getCpuData()
|
function getCpuData()
|
||||||
@ -122,8 +139,62 @@ gears.timer {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
--- Batteries
|
||||||
|
---
|
||||||
|
rawBatteries = {}
|
||||||
|
function refreshRawBatteries()
|
||||||
|
rawBatteries = readCommand("ls -A1 /sys/class/power_supply")
|
||||||
|
end
|
||||||
|
|
||||||
local battery = wibox.widget {
|
function getBatteryLevel(battery)
|
||||||
|
local charge = 0
|
||||||
|
local capacity = 0
|
||||||
|
if fileExists(battery .. "/energy_now") then
|
||||||
|
charge = charge + readFile(battery .. "/energy_now")
|
||||||
|
capacity = capacity + readFile(battery .. "/energy_full")
|
||||||
|
elseif fileExists(battery .. "/charge_now") then
|
||||||
|
charge = charge + readFile(battery .. "/charge_now")
|
||||||
|
capacity = capacity + readFile(battery .. "/charge_full")
|
||||||
|
elseif fileExists(battery .. "/capacity_level") then
|
||||||
|
return readFile(battery .. "/capacity_level")
|
||||||
|
else
|
||||||
|
return "Unsupported"
|
||||||
|
end
|
||||||
|
return string.format("%." .. config.battery.precision .. "f", (charge / capacity) * 100) .. "%"
|
||||||
|
end
|
||||||
|
|
||||||
|
function isCharging(battery)
|
||||||
|
return readFile(battery .. "/status") == "Charging\n"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local batteryContainer = wibox.widget {
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
}
|
||||||
|
local timers = {}
|
||||||
|
function refreshBatteries()
|
||||||
|
-- refresh raw batteries and check for change
|
||||||
|
local oldBatteries = rawBatteries
|
||||||
|
refreshRawBatteries()
|
||||||
|
if rawBatteries == oldBatteries then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- clear timers
|
||||||
|
for i,v in ipairs(timers) do
|
||||||
|
v:stop()
|
||||||
|
end
|
||||||
|
timers = {};
|
||||||
|
|
||||||
|
-- clear layout
|
||||||
|
batteryContainer:set_children({})
|
||||||
|
|
||||||
|
for battery in rawBatteries:gmatch("([^\n]+)") do
|
||||||
|
local path = "/sys/class/power_supply/" .. battery
|
||||||
|
if readFile(path .. "/type"):match("Battery") then
|
||||||
|
-- widget
|
||||||
|
local widget = wibox.widget {
|
||||||
{
|
{
|
||||||
markup = "-- %",
|
markup = "-- %",
|
||||||
align = "center",
|
align = "center",
|
||||||
@ -132,57 +203,42 @@ local battery = wibox.widget {
|
|||||||
},
|
},
|
||||||
margins = beautiful.system_resources_widget_battery_margin,
|
margins = beautiful.system_resources_widget_battery_margin,
|
||||||
widget = wibox.container.margin,
|
widget = wibox.container.margin,
|
||||||
}
|
}
|
||||||
|
|
||||||
local batteryText = battery:get_children()[1]
|
-- tooltip
|
||||||
|
local name = readFile(path .. "/model_name")
|
||||||
|
local tooltip = awful.tooltip {
|
||||||
|
text = name
|
||||||
|
}
|
||||||
|
tooltip:add_to_object(widget)
|
||||||
|
|
||||||
local rawBatteries = readCommand("ls -A1 /sys/class/power_supply")
|
-- update battery level
|
||||||
|
local batteryText = widget:get_children()[1]
|
||||||
function getBatteries()
|
local timer = gears.timer {
|
||||||
return rawBatteries:gmatch("([^\n]+)")
|
|
||||||
end
|
|
||||||
|
|
||||||
function hasBattery()
|
|
||||||
return rawBatteries:len() > 0
|
|
||||||
end
|
|
||||||
|
|
||||||
function getBatteryCapacity()
|
|
||||||
local charge = 0
|
|
||||||
local capacity = 0
|
|
||||||
for b in getBatteries() do
|
|
||||||
if b:sub(1,3) ~= 'hid' and readCommand("cat /sys/class/power_supply/" .. b .. "/type"):match("Battery") then
|
|
||||||
charge = charge + readCommand("cat /sys/class/power_supply/" .. b .. "/energy_now")
|
|
||||||
capacity = capacity + readCommand("cat /sys/class/power_supply/" .. b .. "/energy_full")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return charge / capacity
|
|
||||||
end
|
|
||||||
|
|
||||||
function isCharging()
|
|
||||||
for b in getBatteries() do
|
|
||||||
if readCommand("cat /sys/class/power_supply/" .. b .. "/type"):match("Battery") then
|
|
||||||
return readCommand("cat /sys/class/power_supply/" .. b .. "/status") ~= "Discharging"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return nil
|
|
||||||
end
|
|
||||||
|
|
||||||
if hasBattery() then
|
|
||||||
gears.timer {
|
|
||||||
timeout = config.battery.refresh_interval,
|
timeout = config.battery.refresh_interval,
|
||||||
call_now = true,
|
call_now = true,
|
||||||
autostart = true,
|
autostart = true,
|
||||||
callback = function()
|
callback = function()
|
||||||
batteryText.markup = string.format("%." .. config.battery.precision .. "f", getBatteryCapacity() * 100) .. "%"
|
batteryText.markup = (isCharging(path) and "+" or "") .. getBatteryLevel(path)
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
else
|
table.insert(timers, timer)
|
||||||
battery = nil
|
|
||||||
|
batteryContainer:add(widget)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
gears.timer {
|
||||||
|
timeout = config.battery.list_refresh_interval,
|
||||||
|
call_now = true,
|
||||||
|
autostart = true,
|
||||||
|
callback = function()
|
||||||
|
refreshBatteries()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
bars = bars,
|
bars = bars,
|
||||||
battery = battery,
|
battery = batteryContainer,
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user