mirror of
https://github.com/vincentbernat/i3wm-configuration.git
synced 2025-06-23 10:18:34 +02:00
volume: move volume functions into a lib
Also add some notification when changing the volume. Also move sharetags to the `lib/` directory. And modify `loadrc` to be able to load modules.
This commit is contained in:
parent
5d55609657
commit
3415d39992
6 changed files with 79 additions and 11 deletions
52
lib/volume.lua
Normal file
52
lib/volume.lua
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
-- Handle volume (through pulseaudio)
|
||||||
|
|
||||||
|
local awful = require("awful")
|
||||||
|
local naughty = require("naughty")
|
||||||
|
local tonumber = tonumber
|
||||||
|
local string = string
|
||||||
|
local os = os
|
||||||
|
local setmetatable = setmetatable
|
||||||
|
|
||||||
|
module("volume")
|
||||||
|
|
||||||
|
local volid = nil
|
||||||
|
local function change(what)
|
||||||
|
os.execute("amixer -q sset Master " .. what, false)
|
||||||
|
-- Read the current value
|
||||||
|
local out = awful.util.pread("amixer sget Master")
|
||||||
|
local vol, mute = out:match("([%d]+)%%.*%[([%l]*)")
|
||||||
|
if not mute or not vol then return end
|
||||||
|
|
||||||
|
vol = tonumber(vol)
|
||||||
|
local icon = "high"
|
||||||
|
if mute ~= "on" or vol == 0 then
|
||||||
|
icon = "muted"
|
||||||
|
elseif vol < 30 then
|
||||||
|
icon = "low"
|
||||||
|
elseif vol < 60 then
|
||||||
|
icon = "medium"
|
||||||
|
end
|
||||||
|
icon = "/usr/share/icons/gnome/32x32/status/audio-volume-" .. icon .. ".png"
|
||||||
|
|
||||||
|
volid = naughty.notify({ text = string.format("%3d %%", vol),
|
||||||
|
icon = icon,
|
||||||
|
font = "Free Sans Bold 24",
|
||||||
|
replaces_id = volid }).id
|
||||||
|
end
|
||||||
|
|
||||||
|
function increase()
|
||||||
|
change("5%+")
|
||||||
|
end
|
||||||
|
|
||||||
|
function decrease()
|
||||||
|
change("5%-")
|
||||||
|
end
|
||||||
|
|
||||||
|
function toggle()
|
||||||
|
change("toggle")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- run pavucontrol
|
||||||
|
function mixer()
|
||||||
|
awful.util.spawn("pavucontrol", false)
|
||||||
|
end
|
19
rc.lua
19
rc.lua
|
@ -5,10 +5,19 @@ require("beautiful")
|
||||||
require("naughty")
|
require("naughty")
|
||||||
|
|
||||||
-- Simple function to load additional LUA files from rc/.
|
-- Simple function to load additional LUA files from rc/.
|
||||||
function loadrc(name)
|
function loadrc(name, mod)
|
||||||
local success
|
local success
|
||||||
local result
|
local result
|
||||||
local path = awful.util.getdir("config") .. "/rc/" .. name .. ".lua"
|
|
||||||
|
-- Which file? In rc/ or in lib/?
|
||||||
|
local path = awful.util.getdir("config") .. "/" ..
|
||||||
|
(mod and "lib" or "rc") ..
|
||||||
|
"/" .. name .. ".lua"
|
||||||
|
|
||||||
|
-- If the module is already loaded, don't load it again
|
||||||
|
if mod and package.loaded[mod] then return package.loaded[mod] end
|
||||||
|
|
||||||
|
-- Execute the RC/module file
|
||||||
success, result = pcall(function() return dofile(path) end)
|
success, result = pcall(function() return dofile(path) end)
|
||||||
if not success then
|
if not success then
|
||||||
naughty.notify({ title = "Error while loading an RC file",
|
naughty.notify({ title = "Error while loading an RC file",
|
||||||
|
@ -18,6 +27,12 @@ function loadrc(name)
|
||||||
})
|
})
|
||||||
return print("E: error loading RC file '" .. name .. "': " .. result)
|
return print("E: error loading RC file '" .. name .. "': " .. result)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Is it a module?
|
||||||
|
if mod then
|
||||||
|
return package.loaded[mod]
|
||||||
|
end
|
||||||
|
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
config.keys = {}
|
config.keys = {}
|
||||||
config.mouse = {}
|
config.mouse = {}
|
||||||
|
local volume = loadrc("volume", "volume")
|
||||||
|
|
||||||
local function client_info()
|
local function client_info()
|
||||||
local v = ""
|
local v = ""
|
||||||
|
@ -79,9 +80,9 @@ config.keys.global = awful.util.table.join(
|
||||||
awful.key({ modkey, "Control" }, "r", awesome.restart),
|
awful.key({ modkey, "Control" }, "r", awesome.restart),
|
||||||
|
|
||||||
-- Multimedia keys
|
-- Multimedia keys
|
||||||
awful.key({ }, "XF86AudioRaiseVolume", function () awful.util.spawn("amixer -q -c 0 set Master 2dB+", false) end),
|
awful.key({ }, "XF86AudioRaiseVolume", volume.increase),
|
||||||
awful.key({ }, "XF86AudioLowerVolume", function () awful.util.spawn("amixer -q -c 0 set Master 2dB-", false) end),
|
awful.key({ }, "XF86AudioLowerVolume", volume.decrease),
|
||||||
awful.key({ }, "XF86AudioMute", function () awful.util.spawn("amixer -q -c 0 set Master toggle", false) end)
|
awful.key({ }, "XF86AudioMute", volume.toggle)
|
||||||
)
|
)
|
||||||
|
|
||||||
config.keys.client = awful.util.table.join(
|
config.keys.client = awful.util.table.join(
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
-- Tags
|
-- Tags
|
||||||
|
|
||||||
loadrc("sharetags")
|
sharetags = loadrc("sharetags", "sharetags")
|
||||||
|
|
||||||
local otags = config.tags
|
local otags = config.tags
|
||||||
config.tags = {}
|
config.tags = {}
|
||||||
|
|
|
@ -105,12 +105,12 @@ local volwidget = widget({ type = "textbox" })
|
||||||
vicious.register(volwidget, vicious.widgets.volume,
|
vicious.register(volwidget, vicious.widgets.volume,
|
||||||
'<span font="Terminus 8" color="' .. beautiful.fg_widget_value .. '">$2 $1%</span>',
|
'<span font="Terminus 8" color="' .. beautiful.fg_widget_value .. '">$2 $1%</span>',
|
||||||
2, "Master")
|
2, "Master")
|
||||||
|
volume = loadrc("volume", "volume")
|
||||||
volwidget:buttons(awful.util.table.join(
|
volwidget:buttons(awful.util.table.join(
|
||||||
awful.button({ }, 1, function () awful.util.spawn("pavucontrol", false) end),
|
awful.button({ }, 1, volume.mixer),
|
||||||
awful.button({ }, 3, function () awful.util.spawn("amixer -q sset Master toggle", false) end),
|
awful.button({ }, 3, volume.toggle),
|
||||||
awful.button({ }, 4, function () awful.util.spawn("amixer -q sset Master 5%+", false) end),
|
awful.button({ }, 4, volume.increase),
|
||||||
awful.button({ }, 5, function () awful.util.spawn("amixer -q sset Master 5%-", false) end)
|
awful.button({ }, 5, volume.decrease)))
|
||||||
))
|
|
||||||
|
|
||||||
-- File systems
|
-- File systems
|
||||||
local fs = { ["/"] = "root",
|
local fs = { ["/"] = "root",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue