mirror of
https://github.com/vincentbernat/i3wm-configuration.git
synced 2025-06-22 18:03:28 +02:00
icons: move icon lookup in a seperate module
This commit is contained in:
parent
52090d90ea
commit
335b80262d
8 changed files with 104 additions and 26 deletions
|
@ -6,6 +6,10 @@ local tonumber = tonumber
|
||||||
local string = string
|
local string = string
|
||||||
local os = os
|
local os = os
|
||||||
|
|
||||||
|
-- A bit odd, but...
|
||||||
|
require("lib/icons")
|
||||||
|
local icons = package.loaded["vbe/icons"]
|
||||||
|
|
||||||
module("vbe/brightness")
|
module("vbe/brightness")
|
||||||
|
|
||||||
local nid = nil
|
local nid = nil
|
||||||
|
@ -15,7 +19,8 @@ local function change(what)
|
||||||
if not out then return end
|
if not out then return end
|
||||||
|
|
||||||
out = tonumber(out)
|
out = tonumber(out)
|
||||||
local icon = "/usr/share/icons/HighContrast/32x32/status/display-brightness.png"
|
local icon = icons.lookup({name = "display-brightness",
|
||||||
|
type = "status"})
|
||||||
|
|
||||||
nid = naughty.notify({ text = string.format("%3d %%", out),
|
nid = naughty.notify({ text = string.format("%3d %%", out),
|
||||||
icon = icon,
|
icon = icon,
|
||||||
|
|
63
lib/icons.lua
Normal file
63
lib/icons.lua
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
-- Lookup function for icons
|
||||||
|
|
||||||
|
local paths = {
|
||||||
|
"/usr/share/icons/gnome-wine",
|
||||||
|
"/usr/share/icons/gnome",
|
||||||
|
"/usr/share/icons/hicolor",
|
||||||
|
"/usr/share/icons/HighContrast",
|
||||||
|
"/usr/share/fvwm-crystal/fvwm/icons/Default",
|
||||||
|
}
|
||||||
|
local sizes = {
|
||||||
|
'32x32',
|
||||||
|
'24x24',
|
||||||
|
'22x22',
|
||||||
|
'16x16',
|
||||||
|
}
|
||||||
|
local types = {
|
||||||
|
'apps',
|
||||||
|
'actions',
|
||||||
|
'devices',
|
||||||
|
'status',
|
||||||
|
}
|
||||||
|
local formats = {
|
||||||
|
".png",
|
||||||
|
".xpm"
|
||||||
|
}
|
||||||
|
|
||||||
|
local assert = assert
|
||||||
|
local type = type
|
||||||
|
local pairs = pairs
|
||||||
|
local awful = require("awful")
|
||||||
|
|
||||||
|
module("vbe/icons")
|
||||||
|
|
||||||
|
-- Lookup for an icon. Return full path.
|
||||||
|
function lookup(arg)
|
||||||
|
local inames = assert(arg.name)
|
||||||
|
local isizes = arg.size or sizes
|
||||||
|
local itypes = arg.type or types
|
||||||
|
local ipaths = paths
|
||||||
|
local iformats = formats
|
||||||
|
if type(isizes) ~= "table" then isizes = { isizes } end
|
||||||
|
if type(itypes) ~= "table" then itypes = { itypes } end
|
||||||
|
if type(inames) ~= "table" then inames = { inames } end
|
||||||
|
|
||||||
|
for _, path in pairs(ipaths) do
|
||||||
|
for _, size in pairs(isizes) do
|
||||||
|
for _, t in pairs(itypes) do
|
||||||
|
for _, name in pairs(inames) do
|
||||||
|
if name then
|
||||||
|
for _, name in pairs({name, name:lower()}) do
|
||||||
|
for _, ext in pairs(iformats) do
|
||||||
|
local icon = path .. "/" .. size .. "/" .. t .. "/" .. name .. ext
|
||||||
|
if awful.util.file_readable(icon) then
|
||||||
|
return icon
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -6,6 +6,10 @@ local tonumber = tonumber
|
||||||
local string = string
|
local string = string
|
||||||
local os = os
|
local os = os
|
||||||
|
|
||||||
|
-- A bit odd, but...
|
||||||
|
require("lib/icons")
|
||||||
|
local icons = package.loaded["vbe/icons"]
|
||||||
|
|
||||||
module("vbe/volume")
|
module("vbe/volume")
|
||||||
|
|
||||||
local volid = nil
|
local volid = nil
|
||||||
|
@ -25,7 +29,8 @@ local function change(what)
|
||||||
elseif vol < 60 then
|
elseif vol < 60 then
|
||||||
icon = "medium"
|
icon = "medium"
|
||||||
end
|
end
|
||||||
icon = "/usr/share/icons/gnome/32x32/status/audio-volume-" .. icon .. ".png"
|
icon = icons.lookup({name = "audio-volume-" .. icon,
|
||||||
|
type = "status"})
|
||||||
|
|
||||||
volid = naughty.notify({ text = string.format("%3d %%", vol),
|
volid = naughty.notify({ text = string.format("%3d %%", vol),
|
||||||
icon = icon,
|
icon = icon,
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
-- Keyboard configuration with kbdd
|
-- Keyboard configuration with kbdd
|
||||||
|
|
||||||
|
local icons = loadrc("icons", "vbe/icons")
|
||||||
|
|
||||||
-- Global configuration
|
-- Global configuration
|
||||||
if config.hostname == "guybrush" then
|
if config.hostname == "guybrush" then
|
||||||
os.execute("setxkbmap us,fr '' compose:rctrl ctrl:nocaps")
|
os.execute("setxkbmap us,fr '' compose:rctrl ctrl:nocaps")
|
||||||
|
@ -38,7 +40,8 @@ dbus.add_signal("ru.gentoo.kbdd",
|
||||||
nid = naughty.notify({ title = "Keyboard layout changed",
|
nid = naughty.notify({ title = "Keyboard layout changed",
|
||||||
text = "New layout is <i>" .. layout .. "</i>",
|
text = "New layout is <i>" .. layout .. "</i>",
|
||||||
replaces_id = nid,
|
replaces_id = nid,
|
||||||
icon = "/usr/share/icons/gnome/32x32/devices/keyboard.png",
|
icon = icons.lookup({ name = "keyboard",
|
||||||
|
type = "devices" }),
|
||||||
screen = client.focus.screen }).id
|
screen = client.focus.screen }).id
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
local icons = loadrc("icons", "vbe/icons")
|
||||||
|
|
||||||
-- Signal function to execute when a new client appears.
|
-- Signal function to execute when a new client appears.
|
||||||
client.add_signal("manage",
|
client.add_signal("manage",
|
||||||
function (c, startup)
|
function (c, startup)
|
||||||
|
@ -9,6 +11,15 @@ client.add_signal("manage",
|
||||||
client.focus = c
|
client.focus = c
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
-- Setup icon if none exists
|
||||||
|
if not c.icon then
|
||||||
|
local icon = icons.lookup({ name = { c.class, c.instance },
|
||||||
|
type = "apps" })
|
||||||
|
if icon then
|
||||||
|
c.icon = image(icon)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
if not startup then
|
if not startup then
|
||||||
-- Put windows in a smart way, only if they does not set an initial position.
|
-- Put windows in a smart way, only if they does not set an initial position.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
-- Widgets
|
-- Widgets
|
||||||
|
|
||||||
require("vicious")
|
require("vicious")
|
||||||
|
local icons = loadrc("icons", "vbe/icons")
|
||||||
|
|
||||||
-- Separator
|
-- Separator
|
||||||
local separator = widget({ type = "textbox" })
|
local separator = widget({ type = "textbox" })
|
||||||
|
@ -38,8 +39,8 @@ if config.hostname == "guybrush" then
|
||||||
text = "Battery level is currently " ..
|
text = "Battery level is currently " ..
|
||||||
current .. "%.\n" .. args[3] ..
|
current .. "%.\n" .. args[3] ..
|
||||||
" left before running out of power.",
|
" left before running out of power.",
|
||||||
icon = "/usr/share/icons/gnome/32x32" ..
|
icon = icons.lookup({name = "battery-caution",
|
||||||
"/status/battery-caution.png",
|
type = "status"}),
|
||||||
replaces_id = batwidget.lastid }).id
|
replaces_id = batwidget.lastid }).id
|
||||||
batwidget.lastwarn = current
|
batwidget.lastwarn = current
|
||||||
end
|
end
|
||||||
|
@ -174,27 +175,11 @@ for s = 1, screen.count() do
|
||||||
fn = awful.widget.tasklist.label.alltags
|
fn = awful.widget.tasklist.label.alltags
|
||||||
end
|
end
|
||||||
local title, color, _, icon = fn(c, s)
|
local title, color, _, icon = fn(c, s)
|
||||||
-- Try to search for an alternative icon if none is available
|
|
||||||
for _, name in pairs({c.class, c.instance}) do
|
|
||||||
if not icon and title and name then
|
|
||||||
for _, n in pairs({name, name:lower()}) do
|
|
||||||
icon = awful.util.geticonpath(name,
|
|
||||||
nil,
|
|
||||||
{"/usr/share/fvwm-crystal/fvwm/icons/Default/16x16/apps/",
|
|
||||||
"/usr/share/fvwm-crystal/fvwm/icons/Default/22x22/apps/",
|
|
||||||
"/usr/share/icons/hicolor/16x16/apps/"})
|
|
||||||
if icon then
|
|
||||||
-- This is our new icon. And we set it for the client to not search again
|
|
||||||
icon = image(icon)
|
|
||||||
c.icon = icon
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
-- Use our icon and don't set the status image.
|
|
||||||
if screen.count() > 1 then
|
if screen.count() > 1 then
|
||||||
|
-- title, color and icon
|
||||||
return title, color, nil, icon
|
return title, color, nil, icon
|
||||||
elseif icon then
|
elseif icon then
|
||||||
|
-- just color and icon
|
||||||
return "", color, nil, icon
|
return "", color, nil, icon
|
||||||
end
|
end
|
||||||
end, tasklist.buttons)
|
end, tasklist.buttons)
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
-- Lockscreen
|
-- Lockscreen
|
||||||
|
|
||||||
|
local icons = loadrc("icons", "vbe/icons")
|
||||||
|
|
||||||
xrun("xautolock",
|
xrun("xautolock",
|
||||||
"xautolock -notify 10 -notifier " ..
|
"xautolock -notify 10 -notifier " ..
|
||||||
" 'notify-send Lock\\ screen -i /usr/share/icons/gnome/32x32/actions/system-lock-screen.png -t 10000 " ..
|
" 'notify-send Lock\\ screen -i " ..
|
||||||
|
icons.lookup({name = "system-lock-screen", type = "actions" }) ..
|
||||||
|
" -t 10000 " ..
|
||||||
" Lock\\ screen\\ will\\ be\\ started\\ in\\ 10\\ seconds...' " ..
|
" Lock\\ screen\\ will\\ be\\ started\\ in\\ 10\\ seconds...' " ..
|
||||||
" -time 3 -locker " ..
|
" -time 3 -locker " ..
|
||||||
" 'i3lock -n -i " .. awful.util.getdir("cache") .. "/current-wallpaper.png'")
|
" 'i3lock -n -i " .. awful.util.getdir("cache") .. "/current-wallpaper.png'")
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
-- Menu with xrandr choices
|
-- Menu with xrandr choices
|
||||||
|
|
||||||
|
local icons = loadrc("icons", "vbe/icons")
|
||||||
|
|
||||||
-- Get active outputs
|
-- Get active outputs
|
||||||
local function outputs()
|
local function outputs()
|
||||||
local outputs = {}
|
local outputs = {}
|
||||||
|
@ -76,7 +78,7 @@ local function menu()
|
||||||
|
|
||||||
menu[#menu + 1] = { label,
|
menu[#menu + 1] = { label,
|
||||||
cmd,
|
cmd,
|
||||||
"/usr/share/icons/gnome/32x32/devices/display.png" }
|
icons.lookup({ name = "display", type = "devices" }) }
|
||||||
end
|
end
|
||||||
|
|
||||||
return menu
|
return menu
|
||||||
|
@ -103,7 +105,7 @@ local function xrandr()
|
||||||
local next = state.iterator()
|
local next = state.iterator()
|
||||||
local label, action, icon
|
local label, action, icon
|
||||||
if not next then
|
if not next then
|
||||||
label, icon = "Keep the current configuration", "/usr/share/icons/gnome/32x32/devices/display.png"
|
label, icon = "Keep the current configuration", icons.lookup({ name = "display", type = "devices" })
|
||||||
state.iterator = nil
|
state.iterator = nil
|
||||||
else
|
else
|
||||||
label, action, icon = unpack(next)
|
label, action, icon = unpack(next)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue