Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
|
8d0abe603d | ||
|
2401cfcee2 |
57 changed files with 2053 additions and 863 deletions
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "home/.config/awesome/libs/revelation"]
|
||||
path = home/.config/awesome/libs/revelation
|
||||
url = https://github.com/thiru/awesome-revelation
|
|
@ -21,7 +21,8 @@ xset r rate 300 50 &
|
|||
clipmenud &
|
||||
|
||||
# Wallpaper :
|
||||
nitrogen --restore &
|
||||
# nitrogen --restore &
|
||||
$HOME/.fehbg
|
||||
|
||||
# conky
|
||||
#conky -c ~/.config/conky/otis-forest.conkyrc\ &
|
||||
|
@ -35,6 +36,13 @@ nitrogen --restore &
|
|||
# pidof -s "$program" || setsid -f "$program"
|
||||
#done >/dev/null 2>&1
|
||||
|
||||
setxkbmap -option compose:ralt
|
||||
setxkbmap -option caps:escape
|
||||
|
||||
# Updates :
|
||||
#notify-send -t 8000 "You have $(checkupdates | wc -l) update 📦" &
|
||||
|
||||
killall -9 kdeconnect-indicator
|
||||
picom -b --dbus
|
||||
gwe --hide-window &
|
||||
kdeconnect-indicator &
|
||||
nvidia-settings
|
||||
|
|
|
@ -5,41 +5,44 @@
|
|||
-- ~~~~~~~~~~~~~~
|
||||
local awful = require("awful")
|
||||
local hotkeys_popup = require("awful.hotkeys_popup")
|
||||
local revelation = require("libs.revelation")
|
||||
local switcher = require("libs.awesome_switcher")
|
||||
local gfs = require "gears".filesystem.get_configuration_dir()
|
||||
|
||||
-- vars
|
||||
-- ~~~~~~~~~
|
||||
|
||||
-- modkey
|
||||
local modkey = "Mod4"
|
||||
local modkey = "Mod4"
|
||||
-- modifer keys
|
||||
local shift = "Shift"
|
||||
local ctrl = "Control"
|
||||
local alt = "Mod1"
|
||||
local shift = "Shift"
|
||||
local ctrl = "Control"
|
||||
local alt = "Mod1"
|
||||
|
||||
-- Default Applications :
|
||||
--terminal = "alacritty"
|
||||
terminal = "kitty"
|
||||
web_browser = "brave"
|
||||
editor = os.getenv("EDITOR") or "nano"
|
||||
editor_cmd = terminal .. " -e " .. editor
|
||||
terminal = "kitty"
|
||||
web_browser = "librewolf"
|
||||
editor = os.getenv("EDITOR") or "nano"
|
||||
editor_cmd = terminal .. " -e " .. editor
|
||||
|
||||
-- Configurations
|
||||
-- ~~~~~~~~~~~~~~
|
||||
|
||||
-- # Mouse bindings :
|
||||
awful.mouse.append_global_mousebindings({
|
||||
awful.button({ }, 3, function () mymainmenu:toggle() end)
|
||||
awful.button({}, 3, function() mymainmenu:toggle() end)
|
||||
})
|
||||
|
||||
client.connect_signal("request::default_mousebindings", function()
|
||||
awful.mouse.append_client_mousebindings({ awful.button({ }, 1, function (c)
|
||||
awful.mouse.append_client_mousebindings({ awful.button({}, 1, function(c)
|
||||
c:activate { context = "mouse_click" }
|
||||
end),
|
||||
awful.button({ modkey }, 1, function(c)
|
||||
c:activate { context = "mouse_click", action = "mouse_move" }
|
||||
end),
|
||||
awful.button({ modkey }, 1, function (c)
|
||||
c:activate { context = "mouse_click", action = "mouse_move" }
|
||||
end),
|
||||
awful.button({ modkey }, 3, function (c)
|
||||
c:activate { context = "mouse_click", action = "mouse_resize"}
|
||||
awful.button({ modkey }, 3, function(c)
|
||||
c:activate { context = "mouse_click", action = "mouse_resize" }
|
||||
end),
|
||||
})
|
||||
end)
|
||||
|
@ -52,81 +55,88 @@ end)
|
|||
-- # Key bindings :
|
||||
-- General Awesome keys
|
||||
awful.keyboard.append_global_keybindings({
|
||||
awful.key({ modkey, }, "s", hotkeys_popup.show_help, {description="show help", group="awesome"}),
|
||||
|
||||
awful.key({ modkey, }, "w", function () mymainmenu:show() end, {description = "show main menu", group = "awesome"}),
|
||||
|
||||
awful.key({ modkey, ctrl }, "r", awesome.restart, {description = "reload awesome", group = "awesome"}),
|
||||
|
||||
awful.key({ modkey, shift }, "q", awesome.quit, {description = "quit awesome", group = "awesome"}),
|
||||
|
||||
awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end, {description = "open a terminal", group = "launcher"}),
|
||||
|
||||
awful.key({ modkey, }, "b", function () awful.spawn(web_browser) end, {description = "Open Web Browser", group = "launcher"}),
|
||||
|
||||
awful.key({ modkey, shift }, "Return", function () awful.spawn("xterm") end, {description = "open a terminal", group = "launcher"}),
|
||||
awful.key({ modkey, }, "s", hotkeys_popup.show_help, { description = "show help", group = "awesome" }),
|
||||
--awful.key({ modkey, }, "w", function() mymainmenu:show() end, { description = "show main menu", group = "awesome" }),
|
||||
awful.key({ modkey, shift }, "r", awesome.restart, { description = "reload awesome", group = "awesome" }),
|
||||
awful.key({ modkey, shift }, "q", awesome.quit, { description = "quit awesome", group = "awesome" }),
|
||||
awful.key({ modkey, }, "Return", function() awful.spawn(terminal) end, { description = "open a terminal", group = "launcher" }),
|
||||
awful.key({ modkey, }, "b", function() awful.spawn(web_browser) end, { description = "Open Web Browser", group = "launcher" }),
|
||||
awful.key({ modkey, shift }, "Return", function() awful.spawn("xterm") end, { description = "open a terminal", group = "launcher" }),
|
||||
-- awful.key({ modkey }, "p", function() menubar.show() end,
|
||||
-- {description = "show the menubar", group = "launcher"}),
|
||||
-- {description = "show the menubar", group = "launcher"}),
|
||||
})
|
||||
|
||||
-- Tags related keybindings
|
||||
awful.keyboard.append_global_keybindings({
|
||||
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, }, "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" }),
|
||||
})
|
||||
|
||||
-- Focus related keybindings
|
||||
awful.keyboard.append_global_keybindings({
|
||||
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, }, "Tab", function () awful.client.focus.history.previous()
|
||||
if client.focus then
|
||||
client.focus:raise()
|
||||
end
|
||||
end, {description = "go back", group = "client"}),
|
||||
|
||||
awful.key({ modkey, ctrl }, "j", function () awful.screen.focus_relative( 1) end, {description = "focus the next screen", group = "screen"}),
|
||||
|
||||
awful.key({ modkey, ctrl }, "k", function () awful.screen.focus_relative(-1) end, {description = "focus the previous screen", group = "screen"}),
|
||||
|
||||
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({ alt, }, "Tab", function()
|
||||
awesome.emit_signal("bling::window_switcher::turn_on")
|
||||
end, { description = "Switch tab", group = "client" }),
|
||||
--awful.key({ alt, }, "Tab", function()
|
||||
-- awful.client.focus.history.previous()
|
||||
-- if client.focus then
|
||||
-- client.focus:raise()
|
||||
-- end
|
||||
--end, { description = "go back", group = "client" }),
|
||||
--awful.key(
|
||||
-- { alt },
|
||||
-- 'Tab',
|
||||
-- function()
|
||||
-- switcher.switch(1, "Mod1", "Alt_L", "Shift", "Tab")
|
||||
-- end
|
||||
--),
|
||||
awful.key(
|
||||
{ alt, shift },
|
||||
'Tab',
|
||||
function()
|
||||
switcher.switch(1, "Mod1", "Alt_L", "Shift", "Tab")
|
||||
end
|
||||
),
|
||||
awful.key({ modkey, ctrl }, "j", function() awful.screen.focus_relative(1) end, { description = "focus the next screen", group = "screen" }),
|
||||
awful.key({ modkey, ctrl }, "k", function() awful.screen.focus_relative( -1) end, { description = "focus the previous screen", group = "screen" }),
|
||||
awful.key({ modkey, ctrl }, "n",
|
||||
function ()
|
||||
local c = awful.client.restore()
|
||||
-- Focus restored client
|
||||
if c then
|
||||
c:activate { raise = true, context = "key.unminimize" }
|
||||
end
|
||||
end, {description = "restore minimized", group = "client"}),
|
||||
function()
|
||||
local c = awful.client.restore()
|
||||
-- Focus restored client
|
||||
if c then
|
||||
c:activate { raise = true, context = "key.unminimize" }
|
||||
end
|
||||
end, { description = "restore minimized", group = "client" }),
|
||||
awful.key(
|
||||
{ modkey, "Control" },
|
||||
"Tab",
|
||||
awful.client.movetoscreen,
|
||||
{ description = "Move focused client to other screen", group = "client" }
|
||||
),
|
||||
})
|
||||
|
||||
-- Layout related keybindings
|
||||
awful.keyboard.append_global_keybindings({
|
||||
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, }, "u", awful.client.urgent.jumpto, {description = "jump to urgent client", group = "client"}),
|
||||
|
||||
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, ctrl }, "h", function () awful.tag.incncol( 1, nil, true) end, {description = "increase the number of columns", group = "layout"}),
|
||||
|
||||
awful.key({ modkey, ctrl }, "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, 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, }, "u", awful.client.urgent.jumpto, { description = "jump to urgent client", group = "client" }),
|
||||
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, ctrl }, "h", function() awful.tag.incncol(1, nil, true) end, { description = "increase the number of columns", group = "layout" }),
|
||||
awful.key({ modkey, ctrl }, "l", function() awful.tag.incncol( -1, nil, true) end, { description = "decrease the number of columns", group = "layout" }),
|
||||
awful.key({ modkey, }, "Tab", function() awful.layout.inc(1) end, { description = "select next", group = "layout" }),
|
||||
awful.key(
|
||||
{ modkey, 'Shift' },
|
||||
'w',
|
||||
revelation,
|
||||
{ description = "Overview", group = "layout" }
|
||||
),
|
||||
awful.key({ modkey, shift }, "Tab", function() awful.layout.inc( -1) end, { description = "select previous", group = "layout" }),
|
||||
})
|
||||
|
||||
-- Tags related keybindings
|
||||
|
@ -136,7 +146,7 @@ awful.keyboard.append_global_keybindings({
|
|||
keygroup = "numrow",
|
||||
description = "only view tag",
|
||||
group = "tag",
|
||||
on_press = function (index)
|
||||
on_press = function(index)
|
||||
local screen = awful.screen.focused()
|
||||
local tag = screen.tags[index]
|
||||
if tag then
|
||||
|
@ -149,7 +159,7 @@ awful.keyboard.append_global_keybindings({
|
|||
keygroup = "numrow",
|
||||
description = "toggle tag",
|
||||
group = "tag",
|
||||
on_press = function (index)
|
||||
on_press = function(index)
|
||||
local screen = awful.screen.focused()
|
||||
local tag = screen.tags[index]
|
||||
if tag then
|
||||
|
@ -158,11 +168,11 @@ awful.keyboard.append_global_keybindings({
|
|||
end,
|
||||
},
|
||||
awful.key {
|
||||
modifiers = { modkey, shift },
|
||||
modifiers = { modkey, shift },
|
||||
keygroup = "numrow",
|
||||
description = "move focused client to tag",
|
||||
group = "tag",
|
||||
on_press = function (index)
|
||||
on_press = function(index)
|
||||
if client.focus then
|
||||
local tag = client.focus.screen.tags[index]
|
||||
if tag then
|
||||
|
@ -176,7 +186,7 @@ awful.keyboard.append_global_keybindings({
|
|||
keygroup = "numrow",
|
||||
description = "toggle focused client on tag",
|
||||
group = "tag",
|
||||
on_press = function (index)
|
||||
on_press = function(index)
|
||||
if client.focus then
|
||||
local tag = client.focus.screen.tags[index]
|
||||
if tag then
|
||||
|
@ -190,7 +200,7 @@ awful.keyboard.append_global_keybindings({
|
|||
keygroup = "numpad",
|
||||
description = "select layout directly",
|
||||
group = "layout",
|
||||
on_press = function (index)
|
||||
on_press = function(index)
|
||||
local t = awful.screen.focused().selected_tag
|
||||
if t then
|
||||
t.layout = t.layouts[index] or t.layout
|
||||
|
@ -201,47 +211,46 @@ awful.keyboard.append_global_keybindings({
|
|||
|
||||
-- Media Control :
|
||||
awful.keyboard.append_global_keybindings({
|
||||
-- Volume Keys :
|
||||
awful.key({}, "XF86AudioLowerVolume", function () awful.spawn("amixer -q -D pulse sset Master 5%-", false) end),
|
||||
|
||||
awful.key({}, "XF86AudioRaiseVolume", function () awful.spawn("amixer -q -D pulse sset Master 5%+", false) end),
|
||||
|
||||
awful.key({}, "XF86AudioMute", function () awful.spawn("amixer -D pulse set Master 1+ toggle", false) end),
|
||||
|
||||
-- Media Keys :
|
||||
awful.key({}, "XF86AudioPlay", function() awful.spawn("playerctl play-pause", false) end),
|
||||
|
||||
awful.key({}, "XF86AudioNext", function() awful.spawn("playerctl next", false) end),
|
||||
|
||||
awful.key({}, "XF86AudioPrev", function() awful.spawn("playerctl previous", false) end),
|
||||
|
||||
-- Brightness Keys :
|
||||
awful.key({}, "XF86MonBrightnessUp", function() awful.spawn("brightnessctl set 5%+", false) end),
|
||||
|
||||
awful.key({}, "XF86MonBrightnessDown", function() awful.spawn("brightnessctl set 5%-", false) end),
|
||||
-- Volume Keys :
|
||||
awful.key({}, "XF86AudioLowerVolume", function() awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ -2%", false) end),
|
||||
awful.key({}, "XF86AudioRaiseVolume", function() awful.spawn("pactl set-sink-volume @DEFAULT_SINK@ +2%", false) end),
|
||||
awful.key({}, "XF86AudioMute", function() awful.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle", false) end),
|
||||
|
||||
-- Media Keys :
|
||||
awful.key({}, "XF86AudioPlay", function() awful.spawn("playerctl play-pause", false) end),
|
||||
awful.key({}, "XF86AudioNext", function() awful.spawn("playerctl next", false) end),
|
||||
awful.key({}, "XF86AudioPrev", function() awful.spawn("playerctl previous", false) end),
|
||||
|
||||
-- Brightness Keys :
|
||||
awful.key({}, "XF86MonBrightnessUp", function() awful.spawn("brightnessctl set 5%+", false) end),
|
||||
awful.key({}, "XF86MonBrightnessDown", function() awful.spawn("brightnessctl set 5%-", false) end),
|
||||
})
|
||||
|
||||
-- Standard program :
|
||||
awful.keyboard.append_global_keybindings({
|
||||
-- File Manager :
|
||||
awful.key({ ctrl, shift }, "f", function () awful.spawn(string.format("pcmanfm")) end, {description = "pcmanfm", group = "file manager"}),
|
||||
|
||||
-- File Manager :
|
||||
awful.key({ modkey }, "e", function() awful.spawn(string.format("xdg-open .")) end, { description = "file manager", group = "file manager" }),
|
||||
|
||||
-- Screenshots Keys :
|
||||
awful.key({ }, "Print", function () awful.spawn("screenshot")end, {description = "Maim", group = "screenshot"}),
|
||||
awful.key({ modkey }, "Print", function () awful.spawn("screenshot-select")end, {description = "Maim", group = "screenshot"}),
|
||||
|
||||
-- Rofi :
|
||||
awful.key({ modkey }, "p", function () awful.spawn("rofi -show drun -show-icons &>> /tmp/rofi.log") end, {description = "rofi launcher", group = "launcher"}),
|
||||
|
||||
awful.key({}, "Print", function() awful.spawn("screenshot") end, { description = "Maim", group = "screenshot" }),
|
||||
awful.key({ modkey }, "Print", function() awful.spawn("screenshot-select") end, { description = "Maim", group = "screenshot" }),
|
||||
|
||||
-- Rofi :
|
||||
--awful.key({ modkey }, "d", function() awful.spawn("rofi -show drun -theme ~/.config/rofi/rofi.rasi") end, { description = "rofi launcher", group = "launcher" }),
|
||||
--awful.key({ modkey }, "w", function() awful.spawn("rofi -show window -theme ~/.config/rofi/window.rasi") end, { description = "rofi launcher", group = "launcher" }),
|
||||
awful.key({ modkey }, "d", function() awful.spawn("rofi -show drun -theme " .. gfs .. "/libs/misc/rofi/config.rasi") end, { description = "rofi launcher", group = "launcher" }),
|
||||
awful.key({ modkey }, "w", function() awful.spawn("rofi -show window -theme " .. gfs .. "/libs/misc/rofi/config.rasi") end, { description = "rofi launcher", group = "launcher" }),
|
||||
|
||||
-- Main Menu :
|
||||
-- awful.key({ modkey }, "r", function () awful.spawn("rofi -show drun -show-icons -theme ~/.config/awesome/libs/misc/rofi/config.rasi &>> /tmp/rofi.log") end, {description = "rofi launcher", group = "launcher"}),
|
||||
|
||||
|
||||
-- ClipMenu :
|
||||
awful.key({ modkey}, "Insert", function () awful.spawn("clipmenu") end,{description = "clipboard history by rofi/clipmenud", group = "awesome"}),
|
||||
|
||||
-- Center Window :
|
||||
awful.key({ modkey }, "y", awful.placement.centered)
|
||||
|
||||
awful.key({ modkey }, "Insert", function() awful.spawn("clipmenu") end, { description = "clipboard history by rofi/clipmenud", group = "awesome" }),
|
||||
|
||||
-- Center Window :
|
||||
awful.key({ modkey }, "y", awful.placement.centered),
|
||||
awful.key({ modkey }, "l", function() awful.spawn("betterlockscreen -l") end, { description = "lockscreen", group = "lockscreen" }),
|
||||
|
||||
})
|
||||
|
||||
-- Systray :
|
||||
|
@ -251,42 +260,50 @@ awful.keyboard.append_global_keybindings({
|
|||
|
||||
-- Bar :
|
||||
awful.keyboard.append_global_keybindings({
|
||||
awful.key({ modkey }, "=", function ()
|
||||
for s in screen do
|
||||
s.mywibar.visible = not s.mywibar.visible
|
||||
end
|
||||
end,
|
||||
{description = "toggle wibox", group = "awesome"}),
|
||||
awful.key({ modkey }, "=", function()
|
||||
for s in screen do
|
||||
s.mywibar.visible = not s.mywibar.visible
|
||||
end
|
||||
end,
|
||||
{ description = "toggle wibox", group = "awesome" }),
|
||||
})
|
||||
|
||||
awful.keyboard.append_global_keybindings({
|
||||
awful.key({ alt }, "Tab", function() awesome.emit_signal("sidebar::toggle") end), -- Sidebar
|
||||
awful.key({ alt }, "t", function() awful.titlebar.toggle(client.focus) end),
|
||||
awful.key({ modkey }, "Escape", function() awesome.emit_signal("sidebar::toggle") end), -- Sidebar
|
||||
awful.key({ modkey }, "t", function() awesome.emit_signal("notifications_list::toggle") end), -- Sidebar
|
||||
awful.key({ alt }, "t", function() awful.titlebar.toggle(client.focus) end),
|
||||
})
|
||||
|
||||
-- Client :
|
||||
client.connect_signal("request::default_keybindings", function()
|
||||
awful.keyboard.append_client_keybindings({
|
||||
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"}),
|
||||
-- The client currently has the input focus, so it cannot be
|
||||
-- minimized, since minimized clients can't have the focus.
|
||||
awful.key({ modkey, }, "n", function (c) 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.key({ modkey, }, "f", function(c)
|
||||
c.fullscreen = not c.fullscreen
|
||||
c:raise()
|
||||
end, { description = "toggle fullscreen", group = "client" }),
|
||||
awful.key({ modkey, shift }, "f", function(c)
|
||||
c.maximized = not c.maximized
|
||||
c:raise()
|
||||
end, { description = "toggle maximized", group = "client" }),
|
||||
awful.key({ modkey }, "c", function(c) c:kill() end, { description = "close", group = "client" }),
|
||||
awful.key({ modkey }, "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" }),
|
||||
-- The client currently has the input focus, so it cannot be
|
||||
-- minimized, since minimized clients can't have the focus.
|
||||
awful.key({ modkey, }, "n", function(c) 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" }),
|
||||
})
|
||||
end)
|
||||
|
||||
|
|
|
@ -31,9 +31,9 @@ tag.connect_signal("request::default_layouts", function()
|
|||
--awful.layout.suit.fair.horizontal,
|
||||
--awful.layout.suit.spiral,
|
||||
awful.layout.suit.spiral.dwindle,
|
||||
--awful.layout.suit.max,
|
||||
awful.layout.suit.max,
|
||||
awful.layout.suit.max.fullscreen,
|
||||
--awful.layout.suit.magnifier,
|
||||
awful.layout.suit.magnifier,
|
||||
--awful.layout.suit.corner.nw,
|
||||
centered,
|
||||
equal,
|
||||
|
|
|
@ -19,61 +19,62 @@ ruled.client.connect_signal("request::rules", function()
|
|||
-- All clients will match this rule.
|
||||
ruled.client.append_rule {
|
||||
id = "global",
|
||||
rule = { },
|
||||
rule = {},
|
||||
properties = {
|
||||
focus = awful.client.focus.filter,
|
||||
raise = true,
|
||||
screen = awful.screen.preferred,
|
||||
placement = awful.placement.no_overlap+awful.placement.no_offscreen+awful.placement.centered
|
||||
placement = awful.placement.no_overlap + awful.placement.no_offscreen + awful.placement.centered
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-- Floating clients.
|
||||
ruled.client.append_rule {
|
||||
id = "floating",
|
||||
rule_any = {
|
||||
id = "floating",
|
||||
rule_any = {
|
||||
instance = { "copyq", "pinentry" },
|
||||
class = {
|
||||
"Arandr",
|
||||
"Steam",
|
||||
"XTerm",
|
||||
"Virt-manager",
|
||||
"VirtualBox Manager",
|
||||
"Nm-connection-editor",
|
||||
"Xfce4-power-manager-settings",
|
||||
"Pavucontrol",
|
||||
"Qalculate-gtk",
|
||||
"Engrampa",
|
||||
"Lxappearance",
|
||||
"Gnome-disks",
|
||||
"Nitrogen",
|
||||
"Viewnior",
|
||||
"Audacious",
|
||||
"qt5ct",
|
||||
"qt6ct",
|
||||
"Kvantum Manager",
|
||||
"Blueman-manager",
|
||||
"Gpick",
|
||||
"Kruler",
|
||||
"MessageWin", -- kalarm.
|
||||
"Sxiv",
|
||||
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
|
||||
"Wpa_gui",
|
||||
"veromix",
|
||||
"alsamixer",
|
||||
"xtightvncviewer",
|
||||
"Gufw Firewall",
|
||||
"VPN4Test"
|
||||
},
|
||||
class = {
|
||||
"Arandr",
|
||||
"Steam",
|
||||
"XTerm",
|
||||
"Virt-manager",
|
||||
"VirtualBox Manager",
|
||||
"Nm-connection-editor",
|
||||
"Xfce4-power-manager-settings",
|
||||
"Pavucontrol",
|
||||
"Qalculate-gtk",
|
||||
"Engrampa",
|
||||
"Lxappearance",
|
||||
"Gnome-disks",
|
||||
"Nitrogen",
|
||||
"Viewnior",
|
||||
"Audacious",
|
||||
"qt5ct",
|
||||
"qt6ct",
|
||||
"Kvantum Manager",
|
||||
"Blueman-manager",
|
||||
"Gpick",
|
||||
"Kruler",
|
||||
"MessageWin", -- kalarm.
|
||||
"Sxiv",
|
||||
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
|
||||
"Wpa_gui",
|
||||
"veromix",
|
||||
"alsamixer",
|
||||
"xtightvncviewer",
|
||||
"Gufw Firewall",
|
||||
"VPN4Test",
|
||||
"xdg-desktop-portal-gnome"
|
||||
},
|
||||
-- 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.
|
||||
name = {
|
||||
"Event Tester", -- xev.
|
||||
},
|
||||
role = {
|
||||
"AlarmWindow", -- Thunderbird's calendar.
|
||||
"ConfigManager", -- Thunderbird's about:config.
|
||||
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
|
||||
role = {
|
||||
"AlarmWindow", -- Thunderbird's calendar.
|
||||
"ConfigManager", -- Thunderbird's about:config.
|
||||
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
|
||||
}
|
||||
},
|
||||
properties = { floating = true }
|
||||
|
@ -83,19 +84,19 @@ ruled.client.connect_signal("request::rules", function()
|
|||
ruled.client.append_rule {
|
||||
id = "center_placement",
|
||||
rule_any = {
|
||||
type = {"dialog"},
|
||||
class = {"Steam", "discord", "markdown_input", "nemo", "thunar", "pcmanfm" },
|
||||
instance = {"markdown_input",},
|
||||
role = {"GtkFileChooserDialog"}
|
||||
type = { "dialog" },
|
||||
class = { "Steam", "discord", "markdown_input", "nemo", "thunar", "pcmanfm" },
|
||||
instance = { "markdown_input", },
|
||||
role = { "GtkFileChooserDialog" }
|
||||
},
|
||||
properties = {placement = awful.placement.center}
|
||||
properties = { placement = awful.placement.center }
|
||||
}
|
||||
|
||||
|
||||
-- Add titlebars to normal clients and dialogs
|
||||
ruled.client.append_rule {
|
||||
id = "titlebars",
|
||||
rule_any = { type = { "normal", "dialog" } },
|
||||
properties = { titlebars_enabled = false }
|
||||
properties = { titlebars_enabled = false }
|
||||
}
|
||||
|
||||
-- Set Firefox to always map on the tag named "2" on screen 1.
|
||||
|
@ -103,16 +104,29 @@ ruled.client.connect_signal("request::rules", function()
|
|||
-- rule = { class = "Firefox" },
|
||||
-- properties = { screen = 1, tag = "2" }
|
||||
-- }
|
||||
|
||||
ruled.client.append_rule {
|
||||
id = 'sandbox',
|
||||
rule_any = {
|
||||
class = {
|
||||
'nvidia-settings',
|
||||
'Nvidia-settings'
|
||||
}
|
||||
},
|
||||
properties = {
|
||||
tag = '8'
|
||||
}
|
||||
}
|
||||
end)
|
||||
|
||||
ruled.notification.connect_signal('request::rules', function()
|
||||
-- All notifications will match this rule.
|
||||
ruled.notification.append_rule {
|
||||
rule = { },
|
||||
rule = {},
|
||||
properties = {
|
||||
screen = awful.screen.preferred,
|
||||
implicit_timeout = 5,
|
||||
position = "top_right",
|
||||
position = "bottom_right",
|
||||
}
|
||||
}
|
||||
end)
|
||||
|
@ -130,12 +144,12 @@ end)
|
|||
|
||||
-- Window opacity
|
||||
client.connect_signal("focus", function(c)
|
||||
c.border_color = beautiful.border_focus
|
||||
c.opacity = 1
|
||||
c.border_color = beautiful.border_focus
|
||||
c.opacity = 1
|
||||
end)
|
||||
client.connect_signal("unfocus", function(c)
|
||||
c.border_color = beautiful.border_normal
|
||||
c.opacity = 0.9
|
||||
c.border_color = beautiful.border_normal
|
||||
c.opacity = 1
|
||||
end)
|
||||
|
||||
client.connect_signal("property::fullscreen", function(c)
|
||||
|
@ -147,7 +161,7 @@ client.connect_signal("property::fullscreen", function(c)
|
|||
end)
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
-- # Round Corners :
|
||||
--local function enable_rounding()
|
||||
-- client.connect_signal("manage", function (c)
|
||||
|
|
532
home/.config/awesome/libs/awesome_switcher.lua
Normal file
532
home/.config/awesome/libs/awesome_switcher.lua
Normal file
|
@ -0,0 +1,532 @@
|
|||
local cairo = require("lgi").cairo
|
||||
local mouse = mouse
|
||||
local screen = screen
|
||||
local wibox = require('wibox')
|
||||
local table = table
|
||||
local keygrabber = keygrabber
|
||||
local math = require('math')
|
||||
local awful = require('awful')
|
||||
local gears = require("gears")
|
||||
local timer = gears.timer
|
||||
local client = client
|
||||
awful.client = require('awful.client')
|
||||
|
||||
local naughty = require("naughty")
|
||||
local string = string
|
||||
local tostring = tostring
|
||||
local tonumber = tonumber
|
||||
local debug = debug
|
||||
local pairs = pairs
|
||||
local unpack = unpack or table.unpack
|
||||
|
||||
local surface = cairo.ImageSurface(cairo.Format.RGB24,20,20)
|
||||
local cr = cairo.Context(surface)
|
||||
|
||||
local _M = {}
|
||||
|
||||
-- settings
|
||||
|
||||
_M.settings = {
|
||||
preview_box = true,
|
||||
preview_box_bg = "#18192611",
|
||||
preview_box_border = "#18192611",
|
||||
preview_box_fps = 30,
|
||||
preview_box_delay = 100,
|
||||
preview_box_title_font = {"Ubuntu","italic","normal"},
|
||||
preview_box_title_font_size_factor = 0.8,
|
||||
preview_box_title_color = {202,211,245,1},
|
||||
|
||||
client_opacity = true,
|
||||
client_opacity_value_selected = 1,
|
||||
client_opacity_value_in_focus = 0.5,
|
||||
client_opacity_value = 0.5,
|
||||
|
||||
cycle_raise_client = true,
|
||||
}
|
||||
|
||||
-- Create a wibox to contain all the client-widgets
|
||||
_M.preview_wbox = wibox({ width = screen[mouse.screen].geometry.width })
|
||||
_M.preview_wbox.border_width = 3
|
||||
_M.preview_wbox.ontop = true
|
||||
_M.preview_wbox.visible = false
|
||||
|
||||
_M.preview_live_timer = timer({ timeout = 1/_M.settings.preview_box_fps })
|
||||
_M.preview_widgets = {}
|
||||
|
||||
_M.altTabTable = {}
|
||||
_M.altTabIndex = 1
|
||||
|
||||
_M.source = string.sub(debug.getinfo(1,'S').source, 2)
|
||||
_M.path = string.sub(_M.source, 1, string.find(_M.source, "/[^/]*$"))
|
||||
_M.noicon = _M.path .. "noicon.png"
|
||||
|
||||
-- simple function for counting the size of a table
|
||||
function _M.tableLength(T)
|
||||
local count = 0
|
||||
for _ in pairs(T) do count = count + 1 end
|
||||
return count
|
||||
end
|
||||
|
||||
-- this function returns the list of clients to be shown.
|
||||
function _M.getClients()
|
||||
local clients = {}
|
||||
|
||||
-- Get focus history for current tag
|
||||
local s = mouse.screen;
|
||||
local idx = 0
|
||||
local c = awful.client.focus.history.get(s, idx)
|
||||
|
||||
while c do
|
||||
table.insert(clients, c)
|
||||
|
||||
idx = idx + 1
|
||||
c = awful.client.focus.history.get(s, idx)
|
||||
end
|
||||
|
||||
-- Minimized clients will not appear in the focus history
|
||||
-- Find them by cycling through all clients, and adding them to the list
|
||||
-- if not already there.
|
||||
-- This will preserve the history AND enable you to focus on minimized clients
|
||||
|
||||
local t = s.selected_tag
|
||||
local all = client.get(s)
|
||||
|
||||
for i = 1, #all do
|
||||
local c = all[i]
|
||||
local ctags = c:tags();
|
||||
|
||||
-- check if the client is on the current tag
|
||||
local isCurrentTag = false
|
||||
for j = 1, #ctags do
|
||||
if t == ctags[j] then
|
||||
isCurrentTag = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if isCurrentTag then
|
||||
-- check if client is already in the history
|
||||
-- if not, add it
|
||||
local addToTable = true
|
||||
for k = 1, #clients do
|
||||
if clients[k] == c then
|
||||
addToTable = false
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if addToTable then
|
||||
table.insert(clients, c)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return clients
|
||||
end
|
||||
|
||||
-- here we populate altTabTable using the list of clients taken from
|
||||
-- _M.getClients(). In case we have altTabTable with some value, the list of the
|
||||
-- old known clients is restored.
|
||||
function _M.populateAltTabTable()
|
||||
local clients = _M.getClients()
|
||||
|
||||
if _M.tableLength(_M.altTabTable) then
|
||||
for ci = 1, #clients do
|
||||
for ti = 1, #_M.altTabTable do
|
||||
if _M.altTabTable[ti].client == clients[ci] then
|
||||
_M.altTabTable[ti].client.opacity = _M.altTabTable[ti].opacity
|
||||
_M.altTabTable[ti].client.minimized = _M.altTabTable[ti].minimized
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
_M.altTabTable = {}
|
||||
|
||||
for i = 1, #clients do
|
||||
table.insert(_M.altTabTable, {
|
||||
client = clients[i],
|
||||
minimized = clients[i].minimized,
|
||||
opacity = clients[i].opacity
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-- If the length of list of clients is not equal to the length of altTabTable,
|
||||
-- we need to repopulate the array and update the UI. This function does this
|
||||
-- check.
|
||||
function _M.clientsHaveChanged()
|
||||
local clients = _M.getClients()
|
||||
return _M.tableLength(clients) ~= _M.tableLength(_M.altTabTable)
|
||||
end
|
||||
|
||||
function _M.createPreviewText(client)
|
||||
if client.class then
|
||||
return " " .. client.class
|
||||
else
|
||||
return " " .. client.name
|
||||
end
|
||||
end
|
||||
|
||||
-- Preview is created here.
|
||||
function _M.clientOpacity()
|
||||
if not _M.settings.client_opacity then return end
|
||||
|
||||
local opacity = _M.settings.client_opacity_value
|
||||
if opacity > 1 then opacity = 1 end
|
||||
for i,data in pairs(_M.altTabTable) do
|
||||
data.client.opacity = opacity
|
||||
end
|
||||
|
||||
if client.focus == _M.altTabTable[_M.altTabIndex].client then
|
||||
-- Let's normalize the value up to 1.
|
||||
local opacityFocusSelected = _M.settings.client_opacity_value_selected + _M.settings.client_opacity_value_in_focus
|
||||
if opacityFocusSelected > 1 then opacityFocusSelected = 1 end
|
||||
client.focus.opacity = opacityFocusSelected
|
||||
else
|
||||
-- Let's normalize the value up to 1.
|
||||
local opacityFocus = _M.settings.client_opacity_value_in_focus
|
||||
if opacityFocus > 1 then opacityFocus = 1 end
|
||||
local opacitySelected = _M.settings.client_opacity_value_selected
|
||||
if opacitySelected > 1 then opacitySelected = 1 end
|
||||
|
||||
client.focus.opacity = opacityFocus
|
||||
_M.altTabTable[_M.altTabIndex].client.opacity = opacitySelected
|
||||
end
|
||||
end
|
||||
|
||||
-- This is called any _M.settings.preview_box_fps milliseconds. In case the list
|
||||
-- of clients is changed, we need to redraw the whole preview box. Otherwise, a
|
||||
-- simple widget::updated signal is enough
|
||||
function _M.updatePreview()
|
||||
if _M.clientsHaveChanged() then
|
||||
_M.populateAltTabTable()
|
||||
_M.preview()
|
||||
end
|
||||
|
||||
for i = 1, #_M.preview_widgets do
|
||||
_M.preview_widgets[i]:emit_signal("widget::updated")
|
||||
end
|
||||
end
|
||||
|
||||
function _M.cycle(dir)
|
||||
-- Switch to next client
|
||||
_M.altTabIndex = _M.altTabIndex + dir
|
||||
if _M.altTabIndex > #_M.altTabTable then
|
||||
_M.altTabIndex = 1 -- wrap around
|
||||
elseif _M.altTabIndex < 1 then
|
||||
_M.altTabIndex = #_M.altTabTable -- wrap around
|
||||
end
|
||||
|
||||
_M.updatePreview()
|
||||
|
||||
_M.altTabTable[_M.altTabIndex].client.minimized = false
|
||||
|
||||
if not _M.settings.preview_box and not _M.settings.client_opacity then
|
||||
client.focus = _M.altTabTable[_M.altTabIndex].client
|
||||
end
|
||||
|
||||
if _M.settings.client_opacity and _M.preview_wbox.visible then
|
||||
_M.clientOpacity()
|
||||
end
|
||||
|
||||
if _M.settings.cycle_raise_client == true then
|
||||
_M.altTabTable[_M.altTabIndex].client:raise()
|
||||
end
|
||||
end
|
||||
|
||||
function _M.preview()
|
||||
if not _M.settings.preview_box then return end
|
||||
|
||||
-- Apply settings
|
||||
_M.preview_wbox:set_bg(_M.settings.preview_box_bg)
|
||||
_M.preview_wbox.border_color = _M.settings.preview_box_border
|
||||
|
||||
-- Make the wibox the right size, based on the number of clients
|
||||
local n = math.max(7, #_M.altTabTable)
|
||||
local W = screen[mouse.screen].geometry.width -- + 2 * _M.preview_wbox.border_width
|
||||
local w = W / n -- widget width
|
||||
local h = w * 0.75 -- widget height
|
||||
local textboxHeight = w * 0.125
|
||||
|
||||
local x = screen[mouse.screen].geometry.x - _M.preview_wbox.border_width
|
||||
local y = screen[mouse.screen].geometry.y + (screen[mouse.screen].geometry.height - h - textboxHeight) / 2
|
||||
_M.preview_wbox:geometry({x = x, y = y, width = W, height = h + textboxHeight})
|
||||
|
||||
-- create a list that holds the clients to preview, from left to right
|
||||
local leftRightTab = {}
|
||||
local leftRightTabToAltTabIndex = {} -- save mapping from leftRightTab to altTabTable as well
|
||||
local nLeft
|
||||
local nRight
|
||||
if #_M.altTabTable == 2 then
|
||||
nLeft = 0
|
||||
nRight = 2
|
||||
else
|
||||
nLeft = math.floor(#_M.altTabTable / 2)
|
||||
nRight = math.ceil(#_M.altTabTable / 2)
|
||||
end
|
||||
|
||||
for i = 1, nLeft do
|
||||
table.insert(leftRightTab, _M.altTabTable[#_M.altTabTable - nLeft + i].client)
|
||||
table.insert(leftRightTabToAltTabIndex, #_M.altTabTable - nLeft + i)
|
||||
end
|
||||
for i = 1, nRight do
|
||||
table.insert(leftRightTab, _M.altTabTable[i].client)
|
||||
table.insert(leftRightTabToAltTabIndex, i)
|
||||
end
|
||||
|
||||
-- determine fontsize -> find maximum classname-length
|
||||
local text, textWidth, textHeight, maxText
|
||||
local maxTextWidth = 0
|
||||
local maxTextHeight = 0
|
||||
local bigFont = textboxHeight / 2
|
||||
cr:set_font_size(fontSize)
|
||||
for i = 1, #leftRightTab do
|
||||
text = _M.createPreviewText(leftRightTab[i])
|
||||
textWidth = cr:text_extents(text).width
|
||||
textHeight = cr:text_extents(text).height
|
||||
if textWidth > maxTextWidth or textHeight > maxTextHeight then
|
||||
maxTextHeight = textHeight
|
||||
maxTextWidth = textWidth
|
||||
maxText = text
|
||||
end
|
||||
end
|
||||
|
||||
while true do
|
||||
cr:set_font_size(bigFont)
|
||||
textWidth = cr:text_extents(maxText).width
|
||||
textHeight = cr:text_extents(maxText).height
|
||||
|
||||
if textWidth < w - textboxHeight and textHeight < textboxHeight then
|
||||
break
|
||||
end
|
||||
|
||||
bigFont = bigFont - 1
|
||||
end
|
||||
local smallFont = bigFont * _M.settings.preview_box_title_font_size_factor
|
||||
|
||||
_M.preview_widgets = {}
|
||||
|
||||
-- create all the widgets
|
||||
for i = 1, #leftRightTab do
|
||||
_M.preview_widgets[i] = wibox.widget.base.make_widget()
|
||||
_M.preview_widgets[i].fit = function(preview_widget, width, height)
|
||||
return w, h
|
||||
end
|
||||
local c = leftRightTab[i]
|
||||
_M.preview_widgets[i].draw = function(preview_widget, preview_wbox, cr, width, height)
|
||||
if width ~= 0 and height ~= 0 then
|
||||
|
||||
local a = 0.8
|
||||
local overlay = 0.6
|
||||
local fontSize = smallFont
|
||||
if c == _M.altTabTable[_M.altTabIndex].client then
|
||||
a = 0.9
|
||||
overlay = 0
|
||||
fontSize = bigFont
|
||||
end
|
||||
|
||||
local sx, sy, tx, ty
|
||||
|
||||
-- Icons
|
||||
local icon
|
||||
if c.icon == nil then
|
||||
icon = gears.surface(gears.surface.load(_M.noicon))
|
||||
else
|
||||
icon = gears.surface(c.icon)
|
||||
end
|
||||
|
||||
local iconboxWidth = 0.9 * textboxHeight
|
||||
local iconboxHeight = iconboxWidth
|
||||
|
||||
-- Titles
|
||||
cr:select_font_face(unpack(_M.settings.preview_box_title_font))
|
||||
cr:set_font_face(cr:get_font_face())
|
||||
cr:set_font_size(fontSize)
|
||||
|
||||
text = _M.createPreviewText(c)
|
||||
textWidth = cr:text_extents(text).width
|
||||
textHeight = cr:text_extents(text).height
|
||||
|
||||
local titleboxWidth = textWidth + iconboxWidth
|
||||
local titleboxHeight = textboxHeight
|
||||
|
||||
-- Draw icons
|
||||
tx = (w - titleboxWidth) / 2
|
||||
ty = h
|
||||
sx = iconboxWidth / icon.width
|
||||
sy = iconboxHeight / icon.height
|
||||
|
||||
cr:translate(tx, ty)
|
||||
cr:scale(sx, sy)
|
||||
cr:set_source_surface(icon, 0, 0)
|
||||
cr:paint()
|
||||
cr:scale(1/sx, 1/sy)
|
||||
cr:translate(-tx, -ty)
|
||||
|
||||
-- Draw titles
|
||||
tx = tx + iconboxWidth
|
||||
ty = h + (textboxHeight + textHeight) / 2
|
||||
|
||||
cr:set_source_rgba(unpack(_M.settings.preview_box_title_color))
|
||||
cr:move_to(tx, ty)
|
||||
cr:show_text(text)
|
||||
cr:stroke()
|
||||
|
||||
-- Draw previews
|
||||
local cg = c:geometry()
|
||||
if cg.width > cg.height then
|
||||
sx = a * w / cg.width
|
||||
sy = math.min(sx, a * h / cg.height)
|
||||
else
|
||||
sy = a * h / cg.height
|
||||
sx = math.min(sy, a * h / cg.width)
|
||||
end
|
||||
|
||||
tx = (w - sx * cg.width) / 2
|
||||
ty = (h - sy * cg.height) / 2
|
||||
|
||||
local tmp = gears.surface(c.content)
|
||||
cr:translate(tx, ty)
|
||||
cr:scale(sx, sy)
|
||||
cr:set_source_surface(tmp, 0, 0)
|
||||
cr:paint()
|
||||
tmp:finish()
|
||||
|
||||
-- Overlays
|
||||
cr:scale(1/sx, 1/sy)
|
||||
cr:translate(-tx, -ty)
|
||||
cr:set_source_rgba(0,0,0,overlay)
|
||||
cr:rectangle(tx, ty, sx * cg.width, sy * cg.height)
|
||||
cr:fill()
|
||||
end
|
||||
end
|
||||
|
||||
-- Add mouse handler
|
||||
_M.preview_widgets[i]:connect_signal("mouse::enter", function()
|
||||
_M.cycle(leftRightTabToAltTabIndex[i] - _M.altTabIndex)
|
||||
end)
|
||||
end
|
||||
|
||||
-- Spacers left and right
|
||||
local spacer = wibox.widget.base.make_widget()
|
||||
spacer.fit = function(leftSpacer, width, height)
|
||||
return (W - w * #_M.altTabTable) / 2, _M.preview_wbox.height
|
||||
end
|
||||
spacer.draw = function(preview_widget, preview_wbox, cr, width, height) end
|
||||
|
||||
--layout
|
||||
preview_layout = wibox.layout.fixed.horizontal()
|
||||
|
||||
preview_layout:add(spacer)
|
||||
for i = 1, #leftRightTab do
|
||||
preview_layout:add(_M.preview_widgets[i])
|
||||
end
|
||||
preview_layout:add(spacer)
|
||||
|
||||
_M.preview_wbox:set_widget(preview_layout)
|
||||
end
|
||||
|
||||
|
||||
-- This starts the timer for updating and it shows the preview UI.
|
||||
function _M.showPreview()
|
||||
_M.preview_live_timer.timeout = 1 / _M.settings.preview_box_fps
|
||||
_M.preview_live_timer:connect_signal("timeout", _M.updatePreview)
|
||||
_M.preview_live_timer:start()
|
||||
|
||||
_M.preview()
|
||||
_M.preview_wbox.visible = true
|
||||
|
||||
_M.clientOpacity()
|
||||
end
|
||||
|
||||
function _M.switch(dir, mod_key1, release_key, mod_key2, key_switch)
|
||||
_M.populateAltTabTable()
|
||||
|
||||
if #_M.altTabTable == 0 then
|
||||
return
|
||||
elseif #_M.altTabTable == 1 then
|
||||
_M.altTabTable[1].client.minimized = false
|
||||
_M.altTabTable[1].client:raise()
|
||||
return
|
||||
end
|
||||
|
||||
-- reset index
|
||||
_M.altTabIndex = 1
|
||||
|
||||
-- preview delay timer
|
||||
local previewDelay = _M.settings.preview_box_delay / 1000
|
||||
_M.previewDelayTimer = timer({timeout = previewDelay})
|
||||
_M.previewDelayTimer:connect_signal("timeout", function()
|
||||
_M.previewDelayTimer:stop()
|
||||
_M.showPreview()
|
||||
end)
|
||||
_M.previewDelayTimer:start()
|
||||
|
||||
-- Now that we have collected all windows, we should run a keygrabber
|
||||
-- as long as the user is alt-tabbing:
|
||||
keygrabber.run(
|
||||
function (mod, key, event)
|
||||
-- Stop alt-tabbing when the alt-key is released
|
||||
if gears.table.hasitem(mod, mod_key1) then
|
||||
if (key == release_key or key == "Escape") and event == "release" then
|
||||
if _M.preview_wbox.visible == true then
|
||||
_M.preview_wbox.visible = false
|
||||
_M.preview_live_timer:stop()
|
||||
else
|
||||
_M.previewDelayTimer:stop()
|
||||
end
|
||||
|
||||
if key == "Escape" then
|
||||
for i = 1, #_M.altTabTable do
|
||||
_M.altTabTable[i].client.opacity = _M.altTabTable[i].opacity
|
||||
_M.altTabTable[i].client.minimized = _M.altTabTable[i].minimized
|
||||
end
|
||||
else
|
||||
-- Raise clients in order to restore history
|
||||
local c
|
||||
for i = 1, _M.altTabIndex - 1 do
|
||||
c = _M.altTabTable[_M.altTabIndex - i].client
|
||||
if not _M.altTabTable[i].minimized then
|
||||
c:raise()
|
||||
client.focus = c
|
||||
end
|
||||
end
|
||||
|
||||
-- raise chosen client on top of all
|
||||
c = _M.altTabTable[_M.altTabIndex].client
|
||||
c:raise()
|
||||
client.focus = c
|
||||
|
||||
-- restore minimized clients
|
||||
for i = 1, #_M.altTabTable do
|
||||
if i ~= _M.altTabIndex and _M.altTabTable[i].minimized then
|
||||
_M.altTabTable[i].client.minimized = true
|
||||
end
|
||||
_M.altTabTable[i].client.opacity = _M.altTabTable[i].opacity
|
||||
end
|
||||
end
|
||||
|
||||
keygrabber.stop()
|
||||
|
||||
elseif key == key_switch and event == "press" then
|
||||
if gears.table.hasitem(mod, mod_key2) then
|
||||
-- Move to previous client on Shift-Tab
|
||||
_M.cycle(-1)
|
||||
else
|
||||
-- Move to next client on each Tab-press
|
||||
_M.cycle( 1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
)
|
||||
|
||||
-- switch to next client
|
||||
_M.cycle(dir)
|
||||
|
||||
end -- function altTab
|
||||
|
||||
return {switch = _M.switch, settings = _M.settings}
|
|
@ -14,6 +14,7 @@
|
|||
- [Playerctl](signals/pctl.md)
|
||||
|
||||
- Widgets
|
||||
- [App Launcher](widgets/app_launcher.md)
|
||||
- [Tag Preview](widgets/tag_preview.md)
|
||||
- [Task Preview](widgets/task_preview.md)
|
||||
- [Tabbed Misc](widgets/tabbed_misc.md)
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
|
||||
[AwesomeWM](https://awesomewm.org/) is literally what it stands for, an awesome window manager.
|
||||
|
||||
Its unique selling point has always been the widget system, which allows for fancy buttons, sliders, bars, dashboards and anything you can imagine. But that feature can be a curse. Most modules focus on the widget side of things which leave the actual window managing part of AwesomeWM underdeveloped compared to, for example, [xmonad](https://xmonad.org/) even though it's probably just as powerfull in that area.
|
||||
Its unique selling point has always been the widget system, which allows for fancy buttons, sliders, bars, dashboards, and anything you can imagine. But that feature can be a curse. Most modules focus on the widget side of things, which leaves the actual window managing part of AwesomeWM underdeveloped compared to, for example, [xmonad](https://xmonad.org/), even though it's probably just as powerful in that area.
|
||||
|
||||
This project focuses on that problem - adding new layouts and modules that make use of the widget system, but primarily focus on the new window managing features.
|
||||
This project aims to fix that problem, adding new layouts and modules that make use of the widget system but primarily focusing on window managing features.
|
||||
|
||||
## Installation
|
||||
- clone this repo into your `~/.config/awesome` folder
|
||||
- Clone this repo into your `~/.config/awesome` folder
|
||||
- `git clone https://github.com/BlingCorp/bling.git ~/.config/awesome/bling`
|
||||
- require the module in your `rc.lua`, and make sure it's under the beautiful module initialization
|
||||
- Require the `bling` module in your `rc.lua`, making sure it's under the `beautiful` module initialization
|
||||
|
||||
```lua
|
||||
-- other imports
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Choose layouts from the list below and add them to to your `awful.layouts` list in your `rc.lua`.
|
||||
|
||||
Everyone of them supports multiple master clients and master width factor making them easy to use.
|
||||
Each layout supports multiple master clients and master width factors, making them easy to use.
|
||||
|
||||
The mstab layout uses the tab theme from the tabbed module.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## 🔦 Flash Focus <!-- {docsify-ignore} -->
|
||||
|
||||
Flash focus does an opacity animation effect on a client when it is focused.
|
||||
Flash focus creates an opacity flash animation when a client is focused.
|
||||
|
||||
|
||||
### Usage
|
||||
|
@ -9,7 +9,7 @@ There are two ways in which you can use this module. You can enable it by callin
|
|||
```lua
|
||||
bling.module.flash_focus.enable()
|
||||
```
|
||||
This connects to the focus signal of a client, which means that the flash focus will activate however you focus the client.
|
||||
This connects to the focus signal of a client, which means that the flash focus will activate with whatever method you use to focus the client.
|
||||
|
||||
The other way is to call the function itself like this: `bling.module.flash_focus.flashfocus(someclient)`. This allows you to activate on certain keybinds like so:
|
||||
```lua
|
||||
|
|
|
@ -61,7 +61,7 @@ term_scratch:turn_on() -- turns the scratchpads visibility on
|
|||
term_scratch:turn_off() -- turns the scratchpads visibility off
|
||||
```
|
||||
|
||||
You can also connect to signals as you are used to for further customization. For example like that:
|
||||
You can also connect to signals for further customization. For example:
|
||||
|
||||
```lua
|
||||
term_scratch:connect_signal("turn_on", function(c) naughty.notify({title = "Turned on!"}) end)
|
||||
|
@ -69,7 +69,7 @@ term_scratch:connect_signal("turn_on", function(c) naughty.notify({title = "Turn
|
|||
|
||||
The following signals are currently available. `turn_on`, `turn_off` and `inital_apply` pass the client on which they operated as an argument:
|
||||
|
||||
- `turn_on` fires when the scratchpad is turned on on a tag that it wasn't present on before
|
||||
- `turn_off` fires when the scratchpad is turned off on a tag
|
||||
- `spawn` fires when the scratchpad is launched with the given command
|
||||
- `inital_apply` fires after `spawn`, when a corresponding client has been found and the properties have been applied
|
||||
- `turn_on` fires when the scratchpad is turned on on a tag that it wasn't present on before.
|
||||
- `turn_off` fires when the scratchpad is turned off on a tag.
|
||||
- `spawn` fires when the scratchpad is launched with the given command.
|
||||
- `inital_apply` fires after `spawn`, when a corresponding client has been found and the properties have been applied.
|
||||
|
|
|
@ -4,7 +4,7 @@ Can your window manager swallow? It probably can...
|
|||
|
||||
### Usage
|
||||
|
||||
To activate and deactivate window swallowing here are the following functions. If you want to activate it, just call the `start` function once in your `rc.lua`.
|
||||
To activate and deactivate window swallowing use the following functions. If you only want to activate it, call the `start` function once in your `rc.lua`.
|
||||
```lua
|
||||
bling.module.window_swallowing.start() -- activates window swallowing
|
||||
bling.module.window_swallowing.stop() -- deactivates window swallowing
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## 📑 Tabbed <!-- {docsify-ignore} -->
|
||||
|
||||
Tabbed implements a tab container. There are also different themes for the tabs.
|
||||
Tabbed implements a tab container. There are several different themes for the tabs as well.
|
||||
|
||||
### Usage
|
||||
|
||||
|
@ -8,7 +8,7 @@ You should bind these functions to keys in order to use the tabbed module effect
|
|||
```lua
|
||||
bling.module.tabbed.pick() -- picks a client with your cursor to add to the tabbing group
|
||||
bling.module.tabbed.pop() -- removes the focused client from the tabbing group
|
||||
bling.module.tabbed.iter() -- iterates through the currently focused tabbing group
|
||||
bling.module.tabbed.iter() -- iterates through the currently focused tabbing group
|
||||
bling.module.tabbed.pick_with_dmenu() -- picks a client with a dmenu application (defaults to rofi, other options can be set with a string parameter like "dmenu")
|
||||
bling.module.tabbed.pick_by_direction(dir) -- picks a client based on direction ("up", "down", "left" or "right")
|
||||
```
|
||||
|
@ -51,7 +51,7 @@ Modern theme:
|
|||
*screenshot by [JavaCafe01](https://github.com/JavaCafe01)*
|
||||
|
||||
### Signals
|
||||
The tabbed module emits a few signals for the purpose of integration,
|
||||
The tabbed module emits a few signals for the purpose of integration:
|
||||
```lua
|
||||
-- bling::tabbed::update -- triggered whenever a tabbed object is updated
|
||||
-- tabobj -- the object that caused the update
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
### Usage
|
||||
|
||||
The function to set an automatically created tiled wallpaper can be called the following way (you don't need to set every option in the table):
|
||||
The function to set a tiled wallpaper can be called by the following (not every option is necessary):
|
||||
```lua
|
||||
awful.screen.connect_for_each_screen(function(s) -- that way the wallpaper is applied to every screen
|
||||
bling.module.tiled_wallpaper("x", s, { -- call the actual function ("x" is the string that will be tiled)
|
||||
|
@ -20,7 +20,7 @@ end)
|
|||
|
||||
### Preview
|
||||
|
||||

|
||||

|
||||
|
||||
*screenshots by [Nooo37](https://github.com/Nooo37)*
|
||||
|
||||
|
|
|
@ -62,9 +62,9 @@ bling.module.wallpaper.setup {
|
|||
|
||||
The setup function will do 2 things: call the set-function when awesome requests a wallpaper, and manage a timer to call `set_function` periodically.
|
||||
|
||||
Its argument is a args table that is passed to ohter functions (setters and wallpaper functions), so you define everything with setup.
|
||||
Its argument is an args table that is passed to other functions (setters and wallpaper functions), so you define everything with setup.
|
||||
|
||||
The `set_function` is a function called every times a wallpaper is needed.
|
||||
The `set_function` is a function called every time a wallpaper is needed.
|
||||
|
||||
The module provides some setters:
|
||||
|
||||
|
@ -83,8 +83,8 @@ A wallpaper is one of the following elements:
|
|||
* a list containing any of the elements above
|
||||
|
||||
To set up for multiple screens, two possible methods are:
|
||||
* Call the `setup` function for each screen, passing the appropriate configuration and `screen` arg
|
||||
* Call the `setup` function once, passing a table of screens as the `screen` arg. This applies the same configuration to all screens in the table
|
||||
* Call the `setup` function for each screen, passing the appropriate configuration and `screen` arg.
|
||||
* Call the `setup` function once, passing a table of screens as the `screen` arg. This applies the same configuration to all screens in the table.
|
||||
_Note_: Multiple screen setup only works for the `simple` and `random` setters
|
||||
|
||||
```lua
|
||||
|
@ -105,8 +105,8 @@ bling.module.wallpaper.setup {
|
|||
```
|
||||
The provided setters `simple` and `random` will use 2 internal functions that you can use to write your own setter:
|
||||
|
||||
* `bling.module.wallpaper.prepare_list`: return a list of wallpapers directly usable by `apply` (for now, it just explores folders)
|
||||
* `bling.module.wallpaper.apply`: a wrapper for gears.wallpaper functions, using the args table of setup
|
||||
* `bling.module.wallpaper.prepare_list`: return a list of wallpapers directly usable by `apply` (for now, it just explores folders).
|
||||
* `bling.module.wallpaper.apply`: a wrapper for gears.wallpaper functions, using the args table of setup.
|
||||
|
||||
Here are the defaults:
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ This is a signal module in which you can connect to certain bling signals to gra
|
|||
- Song length
|
||||
- If there are no players on
|
||||
|
||||
This module relies on `playerctl` and `curl`. If you have this module disabled, you won't need those programs. With this module, you can create a widget like below without worrying about the backend.
|
||||
This module relies on `playerctl` and `curl`. If you have this module disabled, you won't need those programs. With this module, you can create a widget like the one below without worrying about the backend.
|
||||
|
||||

|
||||
|
||||
|
@ -157,7 +157,7 @@ end)
|
|||
|
||||
Thats all! You don't even have to worry about updating the widgets, the signals will handle that for you.
|
||||
|
||||
Here's another example in which you get a notification with the album art, title, and artist whenever the song changes.
|
||||
Here's another example in which you get a notification with the album art, title, and artist whenever the song changes:
|
||||
|
||||
```lua
|
||||
local naughty = require("naughty")
|
||||
|
@ -184,7 +184,7 @@ button:buttons(gears.table.join(
|
|||
|
||||
### Theme Variables and Configuration
|
||||
|
||||
By default, this module will output signals from the most recently active player. If you wish to customize the behavior furthur, the following configuration options are available depending on the selected backend. Here is a summary of the two backends and which configuration options they support.
|
||||
By default, this module will output signals from the most recently active player. If you wish to customize the behavior furthur, the following configuration options are available depending on the selected backend. Here is a summary of the two backends and which configuration options they support:
|
||||
|
||||
| Option | playerctl_cli | playerctl_lib |
|
||||
| ------------------- | ------------------ | ------------------ |
|
||||
|
|
129
home/.config/awesome/libs/bling/docs/widgets/app_launcher.md
Normal file
129
home/.config/awesome/libs/bling/docs/widgets/app_launcher.md
Normal file
|
@ -0,0 +1,129 @@
|
|||
## 🎨 App Launcher <!-- {docsify-ignore} -->
|
||||
|
||||
A popup application launcher similar to Rofi.
|
||||
|
||||

|
||||
|
||||
_image by [JavaCafe01](https://github.com/JavaCafe01)_
|
||||
|
||||
### Usage
|
||||
|
||||
To enable:
|
||||
|
||||
```lua
|
||||
local app_launcher = bling.widget.app_launcher()
|
||||
```
|
||||
|
||||
To run the app launcher, call `:toggle()` on the launcher:
|
||||
|
||||
```lua
|
||||
app_launcher:toggle()
|
||||
```
|
||||
|
||||
### Example Implementation:
|
||||
|
||||
```lua
|
||||
local args = {
|
||||
apps_per_column = 1,
|
||||
sort_alphabetically = false,
|
||||
reverse_sort_alphabetically = true,
|
||||
}
|
||||
local app_launcher = bling.widget.app_launcher(args)
|
||||
```
|
||||
|
||||
### Available Options:
|
||||
|
||||
```lua
|
||||
local args = {
|
||||
terminal = "alacritty" -- Set default terminal
|
||||
favorites = { "firefox", "wezterm" } -- Favorites are given priority and are bubbled to top of the list
|
||||
search_commands = true -- Search by app name AND commandline command
|
||||
skip_names = { "Discord" } -- List of apps to omit from launcher
|
||||
skip_commands = { "thunar" } -- List of commandline commands to omit from launcher
|
||||
skip_empty_icons = true -- Skip applications without icons
|
||||
sort_alphabetically = true -- Sorts applications alphabetically
|
||||
reverse_sort_alphabetically = false -- Sort in reverse alphabetical order (NOTE: must set `sort_alphabetically = false` to take effect)
|
||||
select_before_spawn = true -- When selecting by mouse, click once to select app, click once more to open the app.
|
||||
hide_on_left_clicked_outside = true -- Hide launcher on left click outside the launcher popup
|
||||
hide_on_right_clicked_outside = true -- Hide launcher on right click outside the launcher popup
|
||||
hide_on_launch = true -- Hide launcher when spawning application
|
||||
try_to_keep_index_after_searching = false -- After a search, reselect the previously selected app
|
||||
reset_on_hide = true -- When you hide the launcher, reset search query
|
||||
save_history = true -- Save search history
|
||||
wrap_page_scrolling = true -- Allow scrolling to wrap back to beginning/end of launcher list
|
||||
wrap_app_scrolling = true -- Set app scrolling
|
||||
|
||||
default_app_icon_name = "standard.svg" -- Sets default app icon name for apps without icon names
|
||||
default_app_icon_path = "~/icons/" -- Sets default app icon path for apps without icon paths
|
||||
icon_theme = "application" -- Set icon theme
|
||||
icon_size = 24 -- Set icon size
|
||||
|
||||
type = "dock" -- awful.popup type ("dock", "desktop", "normal"...). See awesomewm docs for more detail
|
||||
show_on_focused_screen = true -- Should app launcher show on currently focused screen
|
||||
screen = awful.screen -- Screen you want the launcher to launch to
|
||||
placement = awful.placement.top_left -- Where launcher should be placed ("awful.placement.centered").
|
||||
rubato = { x = rubato_animation_x, y = rubato_animation_y } -- Rubato animation to apply to launcher
|
||||
shrink_width = true -- Automatically shrink width of launcher to fit varying numbers of apps in list (works on apps_per_column)
|
||||
shrink_height = true -- Automatically shrink height of launcher to fit varying numbers of apps in list (works on apps_per_row)
|
||||
background = "#FFFFFF" -- Set bg color
|
||||
border_width = dpi(0) -- Set border width of popup
|
||||
border_color = "#FFFFFF" -- Set border color of popup
|
||||
shape = function(cr, width, height)
|
||||
gears.shape.rectangle(cr, width, height)
|
||||
end -- Set shape for launcher
|
||||
prompt_height = dpi(50) -- Prompt height
|
||||
prompt_margins = dpi(30) -- Prompt margins
|
||||
prompt_paddings = dpi(15) -- Prompt padding
|
||||
shape = function(cr, width, height)
|
||||
gears.shape.rectangle(cr, width, height)
|
||||
end -- Set shape for prompt
|
||||
prompt_color = "#000000" -- Prompt background color
|
||||
prompt_border_width = dpi(0) -- Prompt border width
|
||||
prompt_border_color = "#000000" -- Prompt border color
|
||||
prompt_text_halign = "center" -- Prompt text horizontal alignment
|
||||
prompt_text_valign = "center" -- Prompt text vertical alignment
|
||||
prompt_icon_text_spacing = dpi(10) -- Prompt icon text spacing
|
||||
prompt_show_icon = true -- Should prompt show icon (?)
|
||||
prompt_icon_font = "Comic Sans" -- Prompt icon font
|
||||
prompt_icon_color = "#000000" -- Prompt icon color
|
||||
prompt_icon = "" -- Prompt icon
|
||||
prompt_icon_markup = string.format(
|
||||
"<span size='xx-large' foreground='%s'>%s</span>",
|
||||
args.prompt_icon_color, args.prompt_icon
|
||||
) -- Prompt icon markup
|
||||
prompt_text = "<b>Search</b>:" -- Prompt text
|
||||
prompt_start_text = "manager" -- Set string for prompt to start with
|
||||
prompt_font = "Comic Sans" -- Prompt font
|
||||
prompt_text_color = "#FFFFFF" -- Prompt text color
|
||||
prompt_cursor_color = "#000000" -- Prompt cursor color
|
||||
|
||||
apps_per_row = 3 -- Set how many apps should appear in each row
|
||||
apps_per_column = 3 -- Set how many apps should appear in each column
|
||||
apps_margin = {left = dpi(40), right = dpi(40), bottom = dpi(30)} -- Margin between apps
|
||||
apps_spacing = dpi(10) -- Spacing between apps
|
||||
|
||||
expand_apps = true -- Should apps expand to fill width of launcher
|
||||
app_width = dpi(400) -- Width of each app
|
||||
app_height = dpi(40) -- Height of each app
|
||||
app_shape = function(cr, width, height)
|
||||
gears.shape.rectangle(cr, width, height)
|
||||
end -- Shape of each app
|
||||
app_normal_color = "#000000" -- App normal color
|
||||
app_normal_hover_color = "#111111" -- App normal hover color
|
||||
app_selected_color = "#FFFFFF" -- App selected color
|
||||
app_selected_hover_color = "#EEEEEE" -- App selected hover color
|
||||
app_content_padding = dpi(10) -- App content padding
|
||||
app_content_spacing = dpi(10) -- App content spacing
|
||||
app_show_icon = true -- Should show icon?
|
||||
app_icon_halign = "center" -- App icon horizontal alignment
|
||||
app_icon_width = dpi(70) -- App icon wigth
|
||||
app_icon_height = dpi(70) -- App icon height
|
||||
app_show_name = true -- Should show app name?
|
||||
app_name_generic_name_spacing = dpi(0) -- Generic name spacing (If show_generic_name)
|
||||
app_name_halign = "center" -- App name horizontal alignment
|
||||
app_name_font = "Comic Sans" -- App name font
|
||||
app_name_normal_color = "#FFFFFF" -- App name normal color
|
||||
app_name_selected_color = "#000000" -- App name selected color
|
||||
app_show_generic_name = true -- Should show generic app name?
|
||||
}
|
||||
```
|
|
@ -28,7 +28,7 @@ bling.widget.tabbed_misc.titlebar_indicator(client, {
|
|||
})
|
||||
```
|
||||
|
||||
a widget_template option is also available:
|
||||
A `widget_template` option is also available:
|
||||
```lua
|
||||
bling.widget.tabbed_misc.titlebar_indicator(client, {
|
||||
widget_template = {
|
||||
|
@ -50,7 +50,7 @@ bling.widget.tabbed_misc.titlebar_indicator(client, {
|
|||
|
||||
### Example Implementation
|
||||
|
||||
You normally embed the widget in your titlebar...
|
||||
The widget is typically embedded in a titlebar:
|
||||
```lua
|
||||
awful.titlebar(c).widget = {
|
||||
{ -- Left
|
||||
|
@ -75,7 +75,7 @@ awful.titlebar(c).widget = {
|
|||
```
|
||||
|
||||
## Tasklist
|
||||
The module exports a function that can be added to your tasklist as a `update_callback`
|
||||
This module exports a function that can be added to your tasklist as an `update_callback`.
|
||||
|
||||
### Usage
|
||||
```lua
|
||||
|
@ -108,7 +108,7 @@ awful.widget.tasklist({
|
|||
})
|
||||
```
|
||||
|
||||
If you need to do something else, it can be used like so
|
||||
If you need to do something else, it can be used like so:
|
||||
```lua
|
||||
update_callback = function(self, client, index, clients)
|
||||
require("bling.widget.tabbed_misc").custom_tasklist(self, client, index, clients)
|
||||
|
|
|
@ -49,7 +49,7 @@ By default, the widget is not visible. You must implement when it will update an
|
|||
|
||||
### Example Implementation
|
||||
|
||||
We can trigger the widget to show the specific tag when hovering over it in the taglist. The code shown below is the example taglist from the [AwesomeWM docs](https://awesomewm.org/doc/api/classes/awful.widget.taglist.html). Basically, we are going to update the widget and toggle it through the taglist's `create_callback`. (The bling addons are commented)
|
||||
We can trigger the widget to show the specific tag when hovering over it in the taglist. The code shown below is the example taglist from the [AwesomeWM docs](https://awesomewm.org/doc/api/classes/awful.widget.taglist.html). We are going to update the widget and toggle it through the taglist's `create_callback` (bling addons are commented).
|
||||
```lua
|
||||
s.mytaglist = awful.widget.taglist {
|
||||
screen = s,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## 🔍 Task Preview <!-- {docsify-ignore} -->
|
||||
|
||||
This is a popup widget that will show a preview of the specified client. It is supposed to mimic the small popup that Windows has when hovering over the application icon.
|
||||
This is a popup widget that will show a preview of the specified client. It intends to mimic the small popup when hovering over an application icon on Windows.
|
||||
|
||||

|
||||
|
||||
|
@ -26,7 +26,7 @@ bling.widget.task_preview.enable {
|
|||
}
|
||||
```
|
||||
|
||||
To allow for more customization, there is also a `widget_structure` property (as seen in some default awesome widgets) which is optional. An example is as follows -
|
||||
To allow for more customization, there is also a `widget_structure` property (as seen in some default awesome widgets) which is optional. An example is as follows:
|
||||
```lua
|
||||
bling.widget.task_preview.enable {
|
||||
x = 20, -- The x-coord of the popup
|
||||
|
@ -82,7 +82,7 @@ By default, the widget is not visible. You must implement when it will update an
|
|||
|
||||
### Example Implementation
|
||||
|
||||
We can trigger the widget to show the specific client when hovering over it in the tasklist. The code shown below is the example icon only tasklist from the [AwesomeWM docs](https://awesomewm.org/doc/api/classes/awful.widget.tasklist.html). Basically, we are going to toggle the widget through the tasklist's `create_callback`. (The bling addons are commented)
|
||||
We can trigger the widget to show the specific client when hovering over it in the tasklist. The code shown below is the example icon only tasklist from the [AwesomeWM docs](https://awesomewm.org/doc/api/classes/awful.widget.tasklist.html). We are going to toggle the widget through the tasklist's `create_callback` (bling addons are commented).
|
||||
```lua
|
||||
s.mytasklist = awful.widget.tasklist {
|
||||
screen = s,
|
||||
|
|
|
@ -30,7 +30,7 @@ bling.widget.window_switcher.enable {
|
|||
}
|
||||
```
|
||||
|
||||
To run the window swicher you have to emit this signal from within your configuration (usually using a keybind).
|
||||
To run the window swicher, emit this signal (usually with a keybind):
|
||||
|
||||
```lua
|
||||
awesome.emit_signal("bling::window_switcher::turn_on")
|
||||
|
|
|
@ -16,9 +16,9 @@ function mylayout.arrange(p)
|
|||
local slave_width = 0.5 * (area.width - master_area_width)
|
||||
local master_area_x = area.x + slave_width
|
||||
|
||||
|
||||
-- Special case: few slaves -> make masters take more space - unless requested otherwise!
|
||||
if nslaves < 2 and t.master_fill_policy ~= "master_width_factor" then
|
||||
if nslaves < 2 and t.master_fill_policy ~= "master_width_factor" and
|
||||
t.centered_layout_master_fill_policy ~= "master_width_factor" then
|
||||
master_area_x = area.x
|
||||
|
||||
if nslaves == 1 then
|
||||
|
|
|
@ -170,8 +170,8 @@ function playerctl:get_active_player()
|
|||
end
|
||||
|
||||
function playerctl:get_player_of_name(name)
|
||||
for _, player in ipairs(self._private.manager.players[1]) do
|
||||
if player.name == name then
|
||||
for _, player in ipairs(self._private.manager.players) do
|
||||
if player.player_name == name then
|
||||
return player
|
||||
end
|
||||
end
|
||||
|
@ -521,8 +521,11 @@ local function new(args)
|
|||
-- Grab settings from beautiful variables if not set explicitly
|
||||
args.ignore = args.ignore or beautiful.playerctl_ignore
|
||||
args.player = args.player or beautiful.playerctl_player
|
||||
ret.update_on_activity = args.update_on_activity or
|
||||
beautiful.playerctl_update_on_activity or true
|
||||
if args.update_on_activity ~= nil then
|
||||
ret.update_on_activity = args.update_on_activity
|
||||
else
|
||||
ret.update_on_activity = beautiful.playerctl_update_on_activity ~= false
|
||||
end
|
||||
ret.interval = args.interval or beautiful.playerctl_position_update_interval or 1
|
||||
ret.debounce_delay = args.debounce_delay or beautiful.playerctl_debounce_delay or 0.35
|
||||
parse_args(ret, args)
|
||||
|
|
|
@ -143,7 +143,7 @@ local function create_app_widget(self, entry)
|
|||
widget = wibox.widget.textbox,
|
||||
id = "name",
|
||||
font = self.app_name_font,
|
||||
markup = entry.name
|
||||
markup = string.format("<span foreground='%s'>%s</span>", self.app_name_normal_color, entry.name)
|
||||
} or nil
|
||||
|
||||
local generic_name = entry.generic_name ~= nil and self.app_show_generic_name == true and
|
||||
|
@ -770,16 +770,18 @@ local function new(args)
|
|||
args.default_app_icon_name = args.default_app_icon_name or nil
|
||||
args.default_app_icon_path = args.default_app_icon_path or nil
|
||||
args.icon_theme = args.icon_theme or nil
|
||||
args.icons_size = args.icons_size or nil
|
||||
args.icon_size = args.icon_size or nil
|
||||
|
||||
args.type = args.type or "dock"
|
||||
args.show_on_focused_screen = args.show_on_focused_screen == nil and true or args.show_on_focused_screen
|
||||
args.screen = args.screen or capi.screen.primary
|
||||
args.placement = args.placement or awful.placement.centered
|
||||
args.rubato = args.rubato or nil
|
||||
args.shirnk_width = args.shirnk_width ~= nil and args.shirnk_width or false
|
||||
args.shrink_width = args.shrink_width ~= nil and args.shrink_width or false
|
||||
args.shrink_height = args.shrink_height ~= nil and args.shrink_height or false
|
||||
args.background = args.background or "#000000"
|
||||
args.border_width = args.border_width or beautiful.border_width or dpi(0)
|
||||
args.border_color = args.border_color or beautiful.border_color or "#FFFFFF"
|
||||
args.shape = args.shape or nil
|
||||
|
||||
args.prompt_height = args.prompt_height or dpi(100)
|
||||
|
@ -842,7 +844,7 @@ local function new(args)
|
|||
gtable.crush(ret, args)
|
||||
|
||||
-- Calculate the grid width and height
|
||||
local grid_width = ret.shirnk_width == false
|
||||
local grid_width = ret.shrink_width == false
|
||||
and dpi((ret.app_width * ret.apps_per_column) + ((ret.apps_per_column - 1) * ret.apps_spacing))
|
||||
or nil
|
||||
local grid_height = ret.shrink_height == false
|
||||
|
@ -923,6 +925,8 @@ local function new(args)
|
|||
visible = false,
|
||||
ontop = true,
|
||||
placement = ret.placement,
|
||||
border_width = ret.border_width,
|
||||
border_color = ret.border_color,
|
||||
shape = ret.shape,
|
||||
bg = ret.background,
|
||||
widget =
|
||||
|
|
|
@ -18,6 +18,7 @@ local position = beautiful.tabbar_position or "top"
|
|||
local function create(c, focused_bool, buttons, inactive_bool)
|
||||
local flexlist = wibox.layout.flex.horizontal()
|
||||
local title_temp = c.name or c.class or "-"
|
||||
title_temp = gears.string.xml_escape(title_temp)
|
||||
local bg_temp = inactive_bool and bg_normal_inactive or bg_normal
|
||||
local fg_temp = inactive_bool and fg_normal_inactive or fg_normal
|
||||
if focused_bool then
|
||||
|
|
|
@ -73,6 +73,7 @@ end
|
|||
local function create(c, focused_bool, buttons, inactive_bool)
|
||||
-- local flexlist = wibox.layout.flex.horizontal()
|
||||
local title_temp = c.name or c.class or "-"
|
||||
title_temp = gears.string.xml_escape(title_temp)
|
||||
local bg_temp = inactive_bool and bg_normal_inactive or bg_normal
|
||||
local fg_temp = inactive_bool and fg_normal_inactive or fg_normal
|
||||
if focused_bool then
|
||||
|
|
|
@ -10,25 +10,6 @@ local window_switcher_first_client -- The client that was focused when the windo
|
|||
local window_switcher_minimized_clients = {} -- The clients that were minimized when the window switcher was activated
|
||||
local window_switcher_grabber
|
||||
|
||||
local get_num_clients = function()
|
||||
local minimized_clients_in_tag = 0
|
||||
local matcher = function(c)
|
||||
return awful.rules.match(
|
||||
c,
|
||||
{
|
||||
minimized = true,
|
||||
skip_taskbar = false,
|
||||
hidden = false,
|
||||
first_tag = awful.screen.focused().selected_tag,
|
||||
}
|
||||
)
|
||||
end
|
||||
for c in awful.client.iterate(matcher) do
|
||||
minimized_clients_in_tag = minimized_clients_in_tag + 1
|
||||
end
|
||||
return minimized_clients_in_tag + #awful.screen.focused().clients
|
||||
end
|
||||
|
||||
local window_switcher_hide = function(window_switcher_box)
|
||||
-- Add currently focused client to history
|
||||
if client.focus then
|
||||
|
@ -367,20 +348,19 @@ local enable = function(opts)
|
|||
}
|
||||
|
||||
window_switcher_box:connect_signal("property::width", function()
|
||||
if window_switcher_box.visible and get_num_clients() == 0 then
|
||||
if window_switcher_box.visible and #awful.screen.focused().selected_tag:clients() == 0 then
|
||||
window_switcher_hide(window_switcher_box)
|
||||
end
|
||||
end)
|
||||
|
||||
window_switcher_box:connect_signal("property::height", function()
|
||||
if window_switcher_box.visible and get_num_clients() == 0 then
|
||||
if window_switcher_box.visible and #awful.screen.focused().selected_tag:clients() == 0 then
|
||||
window_switcher_hide(window_switcher_box)
|
||||
end
|
||||
end)
|
||||
|
||||
awesome.connect_signal("bling::window_switcher::turn_on", function()
|
||||
local number_of_clients = get_num_clients()
|
||||
if number_of_clients == 0 then
|
||||
if #awful.screen.focused().selected_tag:clients() == 0 then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* AUTHOR: Luca
|
||||
*/
|
||||
|
||||
* {
|
||||
background: #1e2030;
|
||||
background-alt: #24273a;
|
||||
brdr: #181926;
|
||||
foreground: #cad3f5;
|
||||
foresel: #67AFC1;
|
||||
selected: #f4dbd6;
|
||||
urgent: #ed8796;
|
||||
on: #a6da95;
|
||||
off: #ee99a0;
|
||||
}
|
|
@ -24,15 +24,15 @@ configuration{
|
|||
}
|
||||
|
||||
* {
|
||||
background: #262626;
|
||||
background-alt: #333333;
|
||||
brdr: #191F21;
|
||||
foreground: #D8D8D8;
|
||||
foresel: #67AFC1;
|
||||
selected: #458588;
|
||||
urgent: #E06C75;
|
||||
on: #87A181;
|
||||
off: #D88B9F;
|
||||
background: #1e2030;
|
||||
background-alt: #24273a;
|
||||
brdr: #181926;
|
||||
foreground: #cad3f5;
|
||||
foresel: #67AFC1;
|
||||
selected: #f4dbd6;
|
||||
urgent: #ed8796;
|
||||
on: #a6da95;
|
||||
off: #ee99a0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -48,11 +48,11 @@ window {
|
|||
border-color: @background-alt;
|
||||
width: 400px;
|
||||
height: 500px;
|
||||
location: south west;
|
||||
anchor: south west;
|
||||
orientation: horizontal;
|
||||
x-offset: 11px;
|
||||
y-offset: -52px;
|
||||
location: south west;
|
||||
anchor: south west;
|
||||
orientation: horizontal;
|
||||
x-offset: 11px;
|
||||
y-offset: -52px;
|
||||
}
|
||||
|
||||
prompt {
|
||||
|
@ -147,12 +147,16 @@ element selected.normal {
|
|||
border-color: @selected;
|
||||
}
|
||||
element selected.urgent {
|
||||
background-color: @background;
|
||||
text-color: @off;
|
||||
background-color: @off;
|
||||
border: 0px;
|
||||
border-radius: 8px;
|
||||
text-color: @background;
|
||||
}
|
||||
element selected.active {
|
||||
background-color: @background;
|
||||
text-color: @on;
|
||||
background-color: @on;
|
||||
border: 0px;
|
||||
border-radius: 8px;
|
||||
text-color: @background;
|
||||
}
|
||||
element alternate.normal {
|
||||
background-color: @background;
|
||||
|
@ -160,11 +164,11 @@ element alternate.normal {
|
|||
}
|
||||
element alternate.urgent {
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
text-color: @off;
|
||||
}
|
||||
element alternate.active {
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
text-color: @on;
|
||||
}
|
||||
|
||||
sidebar {
|
||||
|
@ -179,7 +183,7 @@ button {
|
|||
vertical-align: 0.5;
|
||||
padding: 8px;
|
||||
background-color: @background-alt;
|
||||
text-color: @background;
|
||||
text-color: @foreground;
|
||||
border: 0px;
|
||||
border-radius: 8px;
|
||||
border-color: @selected;
|
||||
|
@ -187,7 +191,7 @@ button {
|
|||
|
||||
button selected {
|
||||
background-color: @selected;
|
||||
text-color: @foreground;
|
||||
text-color: @background;
|
||||
border: 0px;
|
||||
border-radius: 8px;
|
||||
border-color: @selected;
|
||||
|
|
1
home/.config/awesome/libs/revelation
Submodule
1
home/.config/awesome/libs/revelation
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 852f95f38247aedb3e4b0ca8167380bb0016c57e
|
|
@ -5,11 +5,14 @@ local awful = require("awful")
|
|||
-- Theme handling library
|
||||
local beautiful = require("beautiful")
|
||||
|
||||
-- # Themes :
|
||||
-- # Themes :
|
||||
local theme = require("themes")
|
||||
beautiful.init(theme)
|
||||
|
||||
-- ### Configurations ### --
|
||||
local revelation = require("libs.revelation")
|
||||
revelation.init()
|
||||
|
||||
-- ### Configurations ### --
|
||||
|
||||
-- # Keybindings :
|
||||
require("configurations.keybindings")
|
||||
|
@ -21,7 +24,7 @@ require("configurations.layouts")
|
|||
require("configurations.rules")
|
||||
|
||||
|
||||
-- ### UI ### --
|
||||
-- ### UI ### --
|
||||
|
||||
-- # Notifications :
|
||||
require("ui.notifications")
|
||||
|
@ -37,10 +40,14 @@ require("signals")
|
|||
|
||||
-- # Sidebar :
|
||||
require("ui.sidebar")
|
||||
require("ui.notifications-list")
|
||||
|
||||
-- # Bar :
|
||||
require("ui.bar")
|
||||
|
||||
require("ui.widgets.window-switcher")
|
||||
require("ui.widgets.task-preview")
|
||||
require("ui.widgets.tag-preview")
|
||||
|
||||
-- Autorun at startup
|
||||
awful.spawn.with_shell("bash ~/.config/awesome/configurations/autorun")
|
||||
|
|
|
@ -19,15 +19,15 @@ local net_cmd = [[
|
|||
]]
|
||||
|
||||
awful.widget.watch(net_cmd, update_interval, function(_, stdout)
|
||||
local net_ssid = stdout
|
||||
net_ssid = string.gsub(net_ssid, '^%s*(.-)%s*$', '%1')
|
||||
local net_status = true
|
||||
local net_ssid = stdout
|
||||
net_ssid = string.gsub(net_ssid, '^%s*(.-)%s*$', '%1')
|
||||
local net_status = true
|
||||
|
||||
-- update networks status
|
||||
if net_ssid == "disabled" then
|
||||
net_status = false
|
||||
end
|
||||
-- update networks status
|
||||
if net_ssid == "disabled" then
|
||||
net_status = false
|
||||
end
|
||||
|
||||
-- emit (true or false)
|
||||
awesome.emit_signal("signal::airplane", net_status)
|
||||
-- emit (true or false)
|
||||
awesome.emit_signal("signal::airplane", net_status)
|
||||
end)
|
||||
|
|
|
@ -29,7 +29,7 @@ local emit_brightness_info = function()
|
|||
stdout = function(value)
|
||||
awful.spawn.with_line_callback(brightness_max, {
|
||||
stdout = function(max)
|
||||
percentage = tonumber(value)/tonumber(max) * 100
|
||||
local percentage = tonumber(value)/tonumber(max) * 100
|
||||
percentage = tonumber(percentage) or 0
|
||||
awesome.emit_signal("signal::brightness", percentage)
|
||||
end})
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
|
||||
local which_disk = "/dev/sda2"
|
||||
local which_disk = "/dev/nvme0n1p5"
|
||||
|
||||
local function get_disk()
|
||||
local script = [[
|
||||
|
|
|
@ -11,5 +11,5 @@ req = {
|
|||
}
|
||||
|
||||
for _, x in pairs(req) do
|
||||
require("signals."..x)
|
||||
require("signals." .. x)
|
||||
end
|
||||
|
|
|
@ -6,25 +6,25 @@
|
|||
local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
|
||||
local city = "" -- Ex. London or Salt+Lake+City
|
||||
local city = "Toulouse" -- Ex. London or Salt+Lake+City
|
||||
|
||||
local get_weather = function()
|
||||
local script = [[
|
||||
bash -c "$HOME/.config/awesome/signals/weather_script.sh ]] .. city.. [["
|
||||
]]
|
||||
--local get_weather = function()
|
||||
-- local script = [[
|
||||
-- bash -c "$HOME/.config/awesome/signals/weather_script.sh ]] .. city .. [["
|
||||
-- ]]
|
||||
|
||||
awful.spawn.easy_async_with_shell(script, function(stdout)
|
||||
local weather = stdout:match("(.+):")
|
||||
local feels_like = stdout:match(".+[:](.+)")
|
||||
awesome.emit_signal('signal::weather', weather, feels_like)
|
||||
end)
|
||||
end
|
||||
-- awful.spawn.easy_async_with_shell(script, function(stdout)
|
||||
-- local weather = stdout:match("(.+):")
|
||||
-- local feels_like = stdout:match(".+[:](.+)")
|
||||
-- awesome.emit_signal('signal::weather', weather, feels_like)
|
||||
-- end)
|
||||
--end
|
||||
|
||||
gears.timer {
|
||||
timeout = 1200,
|
||||
call_now = true,
|
||||
autostart = true,
|
||||
callback = function()
|
||||
get_weather()
|
||||
end
|
||||
}
|
||||
--gears.timer {
|
||||
-- timeout = 1200,
|
||||
-- call_now = true,
|
||||
-- autostart = true,
|
||||
-- callback = function()
|
||||
-- get_weather()
|
||||
-- end
|
||||
--}
|
||||
|
|
|
@ -14,207 +14,248 @@ local dpi = xresources.apply_dpi
|
|||
|
||||
|
||||
-- Theme Dir :
|
||||
local themes_path = os.getenv("HOME") .. "/.config/awesome/themes/"
|
||||
local themes_path = os.getenv("HOME") .. "/.config/awesome/themes/"
|
||||
|
||||
-- Titlebar Dir :
|
||||
local titlebar_theme = "mac"
|
||||
local titlebar_icon_path = os.getenv("HOME") .. "/.config/awesome/themes/icons/titlebar/" .. titlebar_theme .. "/"
|
||||
local tip = titlebar_icon_path
|
||||
local titlebar_theme = "mac"
|
||||
local titlebar_icon_path = os.getenv("HOME") .. "/.config/awesome/themes/icons/titlebar/" .. titlebar_theme .. "/"
|
||||
local tip = titlebar_icon_path
|
||||
|
||||
-- Layout Dir :
|
||||
local layout_icons = "base"
|
||||
local layout_icon_path = os.getenv("HOME") .. "/.config/awesome/themes/icons/layouts/" .. layout_icons .. "/"
|
||||
local lip = layout_icon_path
|
||||
local layout_icons = "base"
|
||||
local layout_icon_path = os.getenv("HOME") .. "/.config/awesome/themes/icons/layouts/" .. layout_icons .. "/"
|
||||
local lip = layout_icon_path
|
||||
|
||||
-- others Icons :
|
||||
local other_icon_path = os.getenv("HOME") .. "/.config/awesome/themes/icons/other/"
|
||||
local oip = other_icon_path
|
||||
local other_icon_path = os.getenv("HOME") .. "/.config/awesome/themes/icons/other/"
|
||||
local oip = other_icon_path
|
||||
|
||||
|
||||
local otis_forest = require ("themes.schemes.otis-forest")
|
||||
local doom = require ("themes.schemes.doom-one")
|
||||
local gruvbox = require ("themes.schemes.gruvbox-dark")
|
||||
local berry = require ("themes.schemes.berry")
|
||||
local matcha_sea = require ("themes.schemes.matcha-sea")
|
||||
local matcha_azul = require ("themes.schemes.matcha-azul")
|
||||
local matcha_aliz = require ("themes.schemes.matcha-aliz")
|
||||
|
||||
local otis_forest = require("themes.schemes.otis-forest")
|
||||
local doom = require("themes.schemes.doom-one")
|
||||
local gruvbox = require("themes.schemes.gruvbox-dark")
|
||||
local berry = require("themes.schemes.berry")
|
||||
local matcha_sea = require("themes.schemes.matcha-sea")
|
||||
local matcha_azul = require("themes.schemes.matcha-azul")
|
||||
local matcha_aliz = require("themes.schemes.matcha-aliz")
|
||||
local catppuccin_macchiato = require("themes.schemes.catppuccin-macchiato")
|
||||
-- ## Don''t change the line number 😊
|
||||
colors = gruvbox
|
||||
colors = catppuccin_macchiato
|
||||
-- #############
|
||||
|
||||
theme = {}
|
||||
theme = {}
|
||||
|
||||
-- # Fonts :
|
||||
--theme.font = "iosevka Extended Bold 11"
|
||||
--theme.font = "JetBrains Mono Bold 10"
|
||||
--theme.font = "JetBrainsMono Nerd Font Bold 10"
|
||||
--theme.font = "RobotoMono Nerd Font Bold 11"
|
||||
theme.font = "Roboto Regular 11"
|
||||
theme.taglist_font = "Font Awesome 6 Free Solid 16"
|
||||
theme.icon_font = "Font Awesome 6 Free Solid 11"
|
||||
theme.sidebar_font = "Font Awesome 6 Free Solid 16"
|
||||
theme.ui_font = "RobotoMono Nerd Font Medium 16"
|
||||
theme.menu_font = "RobotoMono Nerd Font Bold 11"
|
||||
theme.font = "Google Sans Bold 11"
|
||||
theme.switcher_font = "Google Sans Bold 12"
|
||||
theme.taglist_font = "Font Awesome 6 Free Solid 16"
|
||||
theme.icon_font = "Font Awesome 6 Free Solid 11"
|
||||
theme.sidebar_font = "Font Awesome 6 Free Solid 16"
|
||||
theme.ui_font = "RobotoMono Nerd Font Medium 16"
|
||||
theme.menu_font = "RobotoMono Nerd Font Bold 11"
|
||||
|
||||
|
||||
-- # Background Colors :
|
||||
theme.bg_normal = colors.black
|
||||
theme.bg_focus = colors.brightblack
|
||||
theme.bg_urgent = colors.black
|
||||
theme.bg_minimize = colors.black
|
||||
theme.bg_normal = colors.black
|
||||
theme.bg_focus = colors.brightblack
|
||||
theme.bg_urgent = colors.black
|
||||
theme.bg_minimize = colors.black
|
||||
|
||||
-- # Foreground Colors :
|
||||
theme.fg_normal = colors.brightwhite
|
||||
theme.fg_focus = colors.brightwhite
|
||||
theme.fg_urgent = colors.brightred
|
||||
theme.fg_minimize = colors.brightblack
|
||||
theme.fg_normal = colors.brightwhite
|
||||
theme.fg_focus = colors.brightwhite
|
||||
theme.fg_urgent = colors.brightred
|
||||
theme.fg_minimize = colors.brightblack
|
||||
|
||||
--- Systray
|
||||
--theme.bg_systray = colors.container
|
||||
theme.systray_icon_spacing = dpi(12)
|
||||
theme.systray_icon_spacing = dpi(12)
|
||||
|
||||
-- Taglist :
|
||||
theme.taglist_spacing = dpi(8)
|
||||
theme.taglist_bg_focus = colors.container
|
||||
theme.taglist_bg_urgent = colors.container
|
||||
theme.taglist_bg_empty = colors.container
|
||||
theme.taglist_fg_focus = colors.main_scheme
|
||||
theme.taglist_fg_empty = colors.brightblack
|
||||
theme.taglist_fg_urgent = colors.brightred
|
||||
theme.taglist_spacing = dpi(8)
|
||||
theme.taglist_bg_focus = colors.container
|
||||
theme.taglist_bg_urgent = colors.container
|
||||
theme.taglist_bg_empty = colors.container
|
||||
theme.taglist_fg_focus = colors.main_scheme
|
||||
theme.taglist_fg_empty = colors.brightblack
|
||||
theme.taglist_fg_urgent = colors.brightred
|
||||
|
||||
|
||||
-- Clients :
|
||||
theme.useless_gap = dpi(4)
|
||||
theme.gap_single_client = true
|
||||
theme.rounded = dpi(8)
|
||||
theme.border_width = dpi(2)
|
||||
theme.border_normal = colors.black
|
||||
theme.border_focus = colors.main_scheme
|
||||
theme.border_marked = colors.brightblack
|
||||
theme.useless_gap = dpi(4)
|
||||
theme.gap_single_client = true
|
||||
theme.rounded = dpi(8)
|
||||
theme.border_width = dpi(2)
|
||||
theme.border_normal = colors.black
|
||||
theme.border_focus = colors.main_scheme
|
||||
theme.border_marked = colors.brightblack
|
||||
|
||||
-- Tasklist :
|
||||
theme.tasklist_bg_normal = colors.black
|
||||
theme.tasklist_bg_focus = colors.black
|
||||
theme.tasklist_bg_urgent = colors.green
|
||||
theme.tasklist_plain_task_name = true
|
||||
theme.tasklist_disable_task_name = false
|
||||
theme.tasklist_disable_icon = true
|
||||
theme.tasklist_bg_normal = colors.black
|
||||
theme.tasklist_bg_focus = colors.black
|
||||
theme.tasklist_bg_urgent = colors.green
|
||||
theme.tasklist_plain_task_name = true
|
||||
theme.tasklist_disable_task_name = false
|
||||
theme.tasklist_disable_icon = true
|
||||
|
||||
-- Notification :
|
||||
theme.notification_spacing = 20
|
||||
theme.notification_spacing = 20
|
||||
|
||||
-- Menu :
|
||||
theme.submenu = " "
|
||||
theme.menu_bg_normal = colors.black
|
||||
theme.menu_bg_focus = colors.brightblack
|
||||
theme.menu_border_color = colors.black
|
||||
theme.menu_height = dpi(30)
|
||||
theme.menu_width = dpi(180)
|
||||
theme.submenu = " "
|
||||
theme.menu_bg_normal = colors.black
|
||||
theme.menu_bg_focus = colors.brightblack
|
||||
theme.menu_border_color = colors.black
|
||||
theme.menu_height = dpi(30)
|
||||
theme.menu_width = dpi(180)
|
||||
|
||||
-- Icons :
|
||||
theme.icon_theme = "/usr/share/icons/Papirus-Dark/16x16/apps"
|
||||
theme.awesome_icon = oip .."logoarch.png"
|
||||
theme.pfp = oip .. "pfp.jpg"
|
||||
theme.album_art = oip .. "album-art.png"
|
||||
theme.user = string.gsub(os.getenv('USER'), '^%l', string.upper)
|
||||
theme.hostname = "@Neptune"
|
||||
theme.weather_icon = oip .."weather_icon.png"
|
||||
theme.icon_theme = "/usr/share/icons/Papirus-Dark/16x16/apps"
|
||||
theme.awesome_icon = oip .. "logoarch.png"
|
||||
theme.pfp = oip .. "pfp.jpg"
|
||||
theme.album_art = oip .. "album-art.png"
|
||||
theme.user = string.gsub(os.getenv('USER'), '^%l', string.upper)
|
||||
theme.hostname = "@Neptune"
|
||||
theme.weather_icon = oip .. "weather_icon.png"
|
||||
|
||||
-- Titlebar :
|
||||
theme.titlebar_size = dpi(20)
|
||||
theme.titlebar_position = "left"
|
||||
theme.titlebar_bg_focus = colors.black
|
||||
theme.titlebar_bg_normal = colors.black
|
||||
theme.titlebar_fg_normal = colors.white
|
||||
theme.titlebar_fg_focus = colors.brightwhite
|
||||
theme.titlebar_size = dpi(20)
|
||||
theme.titlebar_position = "left"
|
||||
theme.titlebar_bg_focus = colors.black
|
||||
theme.titlebar_bg_normal = colors.black
|
||||
theme.titlebar_fg_normal = colors.white
|
||||
theme.titlebar_fg_focus = colors.brightwhite
|
||||
|
||||
-- Close Button :
|
||||
theme.titlebar_close_button_normal = tip.."close_normal.svg"
|
||||
theme.titlebar_close_button_focus = tip.."close_focus.svg"
|
||||
theme.titlebar_close_button_normal = tip .. "close_normal.svg"
|
||||
theme.titlebar_close_button_focus = tip .. "close_focus.svg"
|
||||
|
||||
-- Minimize Button :
|
||||
theme.titlebar_minimize_button_normal = tip.."minimize_normal.svg"
|
||||
theme.titlebar_minimize_button_focus = tip.."minimize_focus.svg"
|
||||
theme.titlebar_minimize_button_normal = tip .. "minimize_normal.svg"
|
||||
theme.titlebar_minimize_button_focus = tip .. "minimize_focus.svg"
|
||||
|
||||
-- Ontop Button :
|
||||
theme.titlebar_ontop_button_normal_inactive = tip.."ontop_normal_inactive.svg"
|
||||
theme.titlebar_ontop_button_focus_inactive = tip.."ontop_focus_inactive.svg"
|
||||
theme.titlebar_ontop_button_normal_active = tip.."ontop_normal_active.svg"
|
||||
theme.titlebar_ontop_button_focus_active = tip.."ontop_focus_active.svg"
|
||||
theme.titlebar_ontop_button_normal_inactive = tip .. "ontop_normal_inactive.svg"
|
||||
theme.titlebar_ontop_button_focus_inactive = tip .. "ontop_focus_inactive.svg"
|
||||
theme.titlebar_ontop_button_normal_active = tip .. "ontop_normal_active.svg"
|
||||
theme.titlebar_ontop_button_focus_active = tip .. "ontop_focus_active.svg"
|
||||
|
||||
-- Sticky Button :
|
||||
theme.titlebar_sticky_button_normal_inactive = tip.."sticky_normal_inactive.svg"
|
||||
theme.titlebar_sticky_button_focus_inactive = tip.."sticky_focus_inactive.svg"
|
||||
theme.titlebar_sticky_button_normal_active = tip.."sticky_normal_active.svg"
|
||||
theme.titlebar_sticky_button_focus_active = tip.."sticky_focus_active.svg"
|
||||
theme.titlebar_sticky_button_normal_inactive = tip .. "sticky_normal_inactive.svg"
|
||||
theme.titlebar_sticky_button_focus_inactive = tip .. "sticky_focus_inactive.svg"
|
||||
theme.titlebar_sticky_button_normal_active = tip .. "sticky_normal_active.svg"
|
||||
theme.titlebar_sticky_button_focus_active = tip .. "sticky_focus_active.svg"
|
||||
|
||||
-- Floating Button :
|
||||
theme.titlebar_floating_button_normal_inactive = tip.."floating_normal_inactive.svg"
|
||||
theme.titlebar_floating_button_focus_inactive = tip.."floating_focus_inactive.svg"
|
||||
theme.titlebar_floating_button_normal_active = tip.."floating_normal_active.svg"
|
||||
theme.titlebar_floating_button_focus_active = tip.."titlebar/stoplight/floating_focus_active.svg"
|
||||
theme.titlebar_floating_button_normal_inactive = tip .. "floating_normal_inactive.svg"
|
||||
theme.titlebar_floating_button_focus_inactive = tip .. "floating_focus_inactive.svg"
|
||||
theme.titlebar_floating_button_normal_active = tip .. "floating_normal_active.svg"
|
||||
theme.titlebar_floating_button_focus_active = tip .. "titlebar/stoplight/floating_focus_active.svg"
|
||||
|
||||
-- Maximized Button :
|
||||
theme.titlebar_maximized_button_normal_inactive = tip.."maximized_normal_inactive.svg"
|
||||
theme.titlebar_maximized_button_focus_inactive = tip.."maximized_focus_inactive.svg"
|
||||
theme.titlebar_maximized_button_normal_active = tip.."maximized_normal_active.svg"
|
||||
theme.titlebar_maximized_button_focus_active = tip.."maximized_focus_active.svg"
|
||||
theme.titlebar_maximized_button_normal_inactive = tip .. "maximized_normal_inactive.svg"
|
||||
theme.titlebar_maximized_button_focus_inactive = tip .. "maximized_focus_inactive.svg"
|
||||
theme.titlebar_maximized_button_normal_active = tip .. "maximized_normal_active.svg"
|
||||
theme.titlebar_maximized_button_focus_active = tip .. "maximized_focus_active.svg"
|
||||
|
||||
-- Hovered Close Button
|
||||
theme.titlebar_close_button_normal_hover = tip.. "close_normal_hover.svg"
|
||||
theme.titlebar_close_button_focus_hover = tip.. "close_focus_hover.svg"
|
||||
theme.titlebar_close_button_normal_hover = tip .. "close_normal_hover.svg"
|
||||
theme.titlebar_close_button_focus_hover = tip .. "close_focus_hover.svg"
|
||||
|
||||
-- Hovered Minimize Buttin
|
||||
theme.titlebar_minimize_button_normal_hover = tip.. "minimize_normal_hover.svg"
|
||||
theme.titlebar_minimize_button_focus_hover = tip.. "minimize_focus_hover.svg"
|
||||
theme.titlebar_minimize_button_normal_hover = tip .. "minimize_normal_hover.svg"
|
||||
theme.titlebar_minimize_button_focus_hover = tip .. "minimize_focus_hover.svg"
|
||||
|
||||
-- Hovered Ontop Button
|
||||
theme.titlebar_ontop_button_normal_inactive_hover = tip.. "ontop_normal_inactive_hover.svg"
|
||||
theme.titlebar_ontop_button_focus_inactive_hover = tip.. "ontop_focus_inactive_hover.svg"
|
||||
theme.titlebar_ontop_button_normal_active_hover = tip.. "ontop_normal_active_hover.svg"
|
||||
theme.titlebar_ontop_button_focus_active_hover = tip.. "ontop_focus_active_hover.svg"
|
||||
theme.titlebar_ontop_button_normal_inactive_hover = tip .. "ontop_normal_inactive_hover.svg"
|
||||
theme.titlebar_ontop_button_focus_inactive_hover = tip .. "ontop_focus_inactive_hover.svg"
|
||||
theme.titlebar_ontop_button_normal_active_hover = tip .. "ontop_normal_active_hover.svg"
|
||||
theme.titlebar_ontop_button_focus_active_hover = tip .. "ontop_focus_active_hover.svg"
|
||||
|
||||
-- Hovered Sticky Button
|
||||
theme.titlebar_sticky_button_normal_inactive_hover = tip.. "sticky_normal_inactive_hover.svg"
|
||||
theme.titlebar_sticky_button_focus_inactive_hover = tip.. "sticky_focus_inactive_hover.svg"
|
||||
theme.titlebar_sticky_button_normal_active_hover = tip.. "sticky_normal_active_hover.svg"
|
||||
theme.titlebar_sticky_button_focus_active_hover = tip.. "sticky_focus_active_hover.svg"
|
||||
theme.titlebar_sticky_button_normal_inactive_hover = tip .. "sticky_normal_inactive_hover.svg"
|
||||
theme.titlebar_sticky_button_focus_inactive_hover = tip .. "sticky_focus_inactive_hover.svg"
|
||||
theme.titlebar_sticky_button_normal_active_hover = tip .. "sticky_normal_active_hover.svg"
|
||||
theme.titlebar_sticky_button_focus_active_hover = tip .. "sticky_focus_active_hover.svg"
|
||||
|
||||
-- Hovered Floating Button
|
||||
theme.titlebar_floating_button_normal_inactive_hover = tip.. "floating_normal_inactive_hover.svg"
|
||||
theme.titlebar_floating_button_focus_inactive_hover = tip.. "floating_focus_inactive_hover.svg"
|
||||
theme.titlebar_floating_button_normal_active_hover = tip.. "floating_normal_active_hover.svg"
|
||||
theme.titlebar_floating_button_focus_active_hover = tip.. "floating_focus_active_hover.svg"
|
||||
theme.titlebar_floating_button_normal_inactive_hover = tip .. "floating_normal_inactive_hover.svg"
|
||||
theme.titlebar_floating_button_focus_inactive_hover = tip .. "floating_focus_inactive_hover.svg"
|
||||
theme.titlebar_floating_button_normal_active_hover = tip .. "floating_normal_active_hover.svg"
|
||||
theme.titlebar_floating_button_focus_active_hover = tip .. "floating_focus_active_hover.svg"
|
||||
|
||||
-- Hovered Maximized Button
|
||||
theme.titlebar_maximized_button_normal_inactive_hover = tip.. "maximized_normal_inactive_hover.svg"
|
||||
theme.titlebar_maximized_button_focus_inactive_hover = tip.. "maximized_focus_inactive_hover.svg"
|
||||
theme.titlebar_maximized_button_normal_active_hover = tip.. "maximized_normal_active_hover.svg"
|
||||
theme.titlebar_maximized_button_focus_active_hover = tip.. "maximized_focus_active_hover.svg"
|
||||
theme.titlebar_maximized_button_normal_inactive_hover = tip .. "maximized_normal_inactive_hover.svg"
|
||||
theme.titlebar_maximized_button_focus_inactive_hover = tip .. "maximized_focus_inactive_hover.svg"
|
||||
theme.titlebar_maximized_button_normal_active_hover = tip .. "maximized_normal_active_hover.svg"
|
||||
theme.titlebar_maximized_button_focus_active_hover = tip .. "maximized_focus_active_hover.svg"
|
||||
|
||||
-- Layoutbox icons :
|
||||
theme.layout_fairh = gcolor.recolor_image(lip.. "fairh.png", colors.main_scheme)
|
||||
theme.layout_fairv = gcolor.recolor_image(lip.. "fairv.png", colors.main_scheme)
|
||||
theme.layout_floating = gcolor.recolor_image(lip.. "floating.png", colors.main_scheme)
|
||||
theme.layout_magnifier = gcolor.recolor_image(lip.. "magnifier.png", colors.main_scheme)
|
||||
theme.layout_max = gcolor.recolor_image(lip.. "max.png", colors.main_scheme)
|
||||
theme.layout_fullscreen = gcolor.recolor_image(lip.. "fullscreen.png", colors.main_scheme)
|
||||
theme.layout_tilebottom = gcolor.recolor_image(lip.. "tilebottom.png", colors.main_scheme)
|
||||
theme.layout_tileleft = gcolor.recolor_image(lip.. "tileleft.png", colors.main_scheme)
|
||||
theme.layout_tile = gcolor.recolor_image(lip.. "tile.png", colors.main_scheme)
|
||||
theme.layout_tiletop = gcolor.recolor_image(lip.. "tiletop.png", colors.main_scheme)
|
||||
theme.layout_spiral = gcolor.recolor_image(lip.. "spiral.png", colors.main_scheme)
|
||||
theme.layout_dwindle = gcolor.recolor_image(lip.. "dwindle.png", colors.main_scheme)
|
||||
theme.layout_cornernw = gcolor.recolor_image(lip.. "cornernw.png", colors.main_scheme)
|
||||
theme.layout_cornerne = gcolor.recolor_image(lip.. "cornerne.png", colors.main_scheme)
|
||||
theme.layout_cornersw = gcolor.recolor_image(lip.. "cornersw.png", colors.main_scheme)
|
||||
theme.layout_fairh = gcolor.recolor_image(lip .. "fairh.png", colors.main_scheme)
|
||||
theme.layout_fairv = gcolor.recolor_image(lip .. "fairv.png", colors.main_scheme)
|
||||
theme.layout_floating = gcolor.recolor_image(lip .. "floating.png", colors.main_scheme)
|
||||
theme.layout_magnifier = gcolor.recolor_image(lip .. "magnifier.png", colors.main_scheme)
|
||||
theme.layout_max = gcolor.recolor_image(lip .. "max.png", colors.main_scheme)
|
||||
theme.layout_fullscreen = gcolor.recolor_image(lip .. "fullscreen.png", colors.main_scheme)
|
||||
theme.layout_tilebottom = gcolor.recolor_image(lip .. "tilebottom.png", colors.main_scheme)
|
||||
theme.layout_tileleft = gcolor.recolor_image(lip .. "tileleft.png", colors.main_scheme)
|
||||
theme.layout_tile = gcolor.recolor_image(lip .. "tile.png", colors.main_scheme)
|
||||
theme.layout_tiletop = gcolor.recolor_image(lip .. "tiletop.png", colors.main_scheme)
|
||||
theme.layout_spiral = gcolor.recolor_image(lip .. "spiral.png", colors.main_scheme)
|
||||
theme.layout_dwindle = gcolor.recolor_image(lip .. "dwindle.png", colors.main_scheme)
|
||||
theme.layout_cornernw = gcolor.recolor_image(lip .. "cornernw.png", colors.main_scheme)
|
||||
theme.layout_cornerne = gcolor.recolor_image(lip .. "cornerne.png", colors.main_scheme)
|
||||
theme.layout_cornersw = gcolor.recolor_image(lip .. "cornersw.png", colors.main_scheme)
|
||||
-- Bling :
|
||||
theme.layout_mstab = gcolor.recolor_image(lip.. "mstab.png", colors.main_scheme)
|
||||
theme.layout_vertical = gcolor.recolor_image(lip.. "vertical.png", colors.main_scheme)
|
||||
theme.layout_horizontal = gcolor.recolor_image(lip.. "horizontal.png", colors.main_scheme)
|
||||
theme.layout_centered = gcolor.recolor_image(lip.. "centered.png", colors.main_scheme)
|
||||
theme.layout_equalarea = gcolor.recolor_image(lip.. "equalarea.png", colors.main_scheme)
|
||||
theme.layout_deck = gcolor.recolor_image(lip.. "deck.png", colors.main_scheme)
|
||||
theme.layout_mstab = gcolor.recolor_image(lip .. "mstab.png", colors.main_scheme)
|
||||
theme.layout_vertical = gcolor.recolor_image(lip .. "vertical.png", colors.main_scheme)
|
||||
theme.layout_horizontal = gcolor.recolor_image(lip .. "horizontal.png", colors.main_scheme)
|
||||
theme.layout_centered = gcolor.recolor_image(lip .. "centered.png", colors.main_scheme)
|
||||
theme.layout_equalarea = gcolor.recolor_image(lip .. "equalarea.png", colors.main_scheme)
|
||||
theme.layout_deck = gcolor.recolor_image(lip .. "deck.png", colors.main_scheme)
|
||||
|
||||
-- Bling window switcher :
|
||||
theme.window_switcher_widget_bg = colors.container -- The bg color of the widget
|
||||
theme.window_switcher_widget_border_width = 3 -- The border width of the widget
|
||||
theme.window_switcher_widget_border_radius = 0 -- The border radius of the widget
|
||||
theme.window_switcher_widget_border_color = colors.main_scheme -- The border color of the widget
|
||||
theme.window_switcher_clients_spacing = 10 -- The space between each client item
|
||||
theme.window_switcher_client_icon_horizontal_spacing = 5 -- The space between client icon and text
|
||||
theme.window_switcher_client_width = 250 -- The width of one client widget
|
||||
theme.window_switcher_client_height = 250 -- The height of one client widget
|
||||
theme.window_switcher_client_margins = 10 -- The margin between the content and the border of the widget
|
||||
theme.window_switcher_thumbnail_margins = 10 -- The margin between one client thumbnail and the rest of the widget
|
||||
theme.thumbnail_scale = true -- If set to true, the thumbnails fit policy will be set to "fit" instead of "auto"
|
||||
theme.window_switcher_name_margins = 10 -- The margin of one clients title to the rest of the widget
|
||||
theme.window_switcher_name_valign = "center" -- How to vertically align one clients title
|
||||
theme.window_switcher_name_forced_width = 200 -- The width of one title
|
||||
theme.window_switcher_name_font = theme.switcher_font -- The font of all titles
|
||||
theme.window_switcher_name_normal_color = colors
|
||||
.white -- The color of one title if the client is unfocused
|
||||
theme.window_switcher_name_focus_color = colors
|
||||
.main_scheme -- The color of one title if the client is focused
|
||||
theme.window_switcher_icon_valign = "center" -- How to vertically align the one icon
|
||||
theme.window_switcher_icon_width = 0 --
|
||||
|
||||
theme.task_preview_widget_border_radius = 5 -- Border radius of the widget (With AA)
|
||||
theme.task_preview_widget_bg = colors.container -- The bg color of the widget
|
||||
theme.task_preview_widget_border_color = colors.container -- The border color of the widget
|
||||
theme.task_preview_widget_border_width = 3 -- The border width of the widget
|
||||
theme.task_preview_widget_margin = 10
|
||||
|
||||
theme.tag_preview_widget_border_radius = 5 -- Border radius of the widget (With AA)
|
||||
theme.tag_preview_client_border_radius = 5 -- Border radius of each client in the widget (With AA)
|
||||
theme.tag_preview_client_opacity = 0.5 -- Opacity of each client
|
||||
theme.tag_preview_client_bg = colors.container -- The bg color of each client
|
||||
theme.tag_preview_client_border_color = colors.main_scheme -- The border color of each client
|
||||
theme.tag_preview_client_border_width = 3 -- The border width of each client
|
||||
theme.tag_preview_widget_bg = colors.container -- The bg color of the widget
|
||||
theme.tag_preview_widget_border_color = "#ffffff" -- The border color of the widget
|
||||
theme.tag_preview_widget_border_width = 2 -- The border width of the widget
|
||||
theme.tag_preview_widget_margin = 10 -- The margin of the widget
|
||||
|
||||
return theme
|
||||
|
|
27
home/.config/awesome/themes/schemes/catppuccin-macchiato.lua
Normal file
27
home/.config/awesome/themes/schemes/catppuccin-macchiato.lua
Normal file
|
@ -0,0 +1,27 @@
|
|||
-- Colors :
|
||||
colors = {}
|
||||
-- Dark colors
|
||||
colors.black = "#181926"
|
||||
colors.red = "#ed8796"
|
||||
colors.green = "#a6da95"
|
||||
colors.yellow = "#f5a97f"
|
||||
colors.blue = "#8aadf4"
|
||||
colors.magenta = "#c6a0f6"
|
||||
colors.cyan = "#91d7e3"
|
||||
colors.white = "#cad3f5"
|
||||
-- Bright colors
|
||||
colors.brightblack = "#24273a"
|
||||
colors.brightred = "#ee99a0"
|
||||
colors.brightgreen = "#8bd5ca"
|
||||
colors.brightyellow = "#eed49f"
|
||||
colors.brightblue = "#b7bdf8"
|
||||
colors.brightmagenta = "#f5bde6"
|
||||
colors.brightcyan = "#7dc4e4"
|
||||
colors.brightwhite = "#a5adcb"
|
||||
-- Other
|
||||
colors.transparent = "#00000000"
|
||||
colors.container = "#1e2030"
|
||||
colors.main_scheme = "#f4dbd6"
|
||||
colors.main_transparent = "#262626CC"
|
||||
|
||||
return colors
|
|
@ -1,27 +1,27 @@
|
|||
-- Colors :
|
||||
colors = {}
|
||||
colors = {}
|
||||
-- Dark colors
|
||||
colors.black = "#222222"
|
||||
colors.red = "#cc241d"
|
||||
colors.green = "#98971a"
|
||||
colors.yellow = "#d79921"
|
||||
colors.blue = "#458588"
|
||||
colors.magenta = "#b16286"
|
||||
colors.cyan = "#689d6a"
|
||||
colors.white = "#acacac"
|
||||
colors.black = "#222222"
|
||||
colors.red = "#cc241d"
|
||||
colors.green = "#98971a"
|
||||
colors.yellow = "#d79921"
|
||||
colors.blue = "#458588"
|
||||
colors.magenta = "#b16286"
|
||||
colors.cyan = "#689d6a"
|
||||
colors.white = "#acacac"
|
||||
-- Bright colors
|
||||
colors.brightblack = "#333333"
|
||||
colors.brightred = "#fb4934"
|
||||
colors.brightgreen = "#b8bb26"
|
||||
colors.brightyellow = "#fabd2f"
|
||||
colors.brightblue = "#83a598"
|
||||
colors.brightmagenta = "#d3869b"
|
||||
colors.brightcyan = "#8ec07c"
|
||||
colors.brightwhite = "#dfdfdf"
|
||||
colors.brightblack = "#333333"
|
||||
colors.brightred = "#fb4934"
|
||||
colors.brightgreen = "#b8bb26"
|
||||
colors.brightyellow = "#fabd2f"
|
||||
colors.brightblue = "#83a598"
|
||||
colors.brightmagenta = "#d3869b"
|
||||
colors.brightcyan = "#8ec07c"
|
||||
colors.brightwhite = "#dfdfdf"
|
||||
-- Other
|
||||
colors.transparent = "#00000000"
|
||||
colors.container = "#303030"
|
||||
colors.main_scheme = "#458588"
|
||||
colors.main_transparent = "#262626CC"
|
||||
colors.transparent = "#00000000"
|
||||
colors.container = "#303030"
|
||||
colors.main_scheme = "#458588"
|
||||
colors.main_transparent = "#303030CC"
|
||||
|
||||
return colors
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
-- Colors :
|
||||
colors = {}
|
||||
colors = {}
|
||||
-- Dark colors
|
||||
colors.black = "#1B2224"
|
||||
colors.red = "#a54242"
|
||||
colors.green = "#8c9440"
|
||||
colors.yellow = "#de935f"
|
||||
colors.blue = "#548D91"
|
||||
colors.magenta = "#85678f"
|
||||
colors.cyan = "#5e8d87"
|
||||
colors.white = "#acacac"
|
||||
colors.black = "#1B2224"
|
||||
colors.red = "#a54242"
|
||||
colors.green = "#8c9440"
|
||||
colors.yellow = "#de935f"
|
||||
colors.blue = "#548D91"
|
||||
colors.magenta = "#85678f"
|
||||
colors.cyan = "#5e8d87"
|
||||
colors.white = "#acacac"
|
||||
-- Bright colors
|
||||
colors.brightblack = "#263033"
|
||||
colors.brightred = "#cc6666"
|
||||
colors.brightgreen = "#b5bd68"
|
||||
colors.brightyellow = "#f0c674"
|
||||
colors.brightblue = "#81a2be"
|
||||
colors.brightmagenta = "#b294bb"
|
||||
colors.brightcyan = "#8abeb7"
|
||||
colors.brightwhite = "#c5c8c6"
|
||||
colors.brightblack = "#263033"
|
||||
colors.brightred = "#cc6666"
|
||||
colors.brightgreen = "#b5bd68"
|
||||
colors.brightyellow = "#f0c674"
|
||||
colors.brightblue = "#81a2be"
|
||||
colors.brightmagenta = "#b294bb"
|
||||
colors.brightcyan = "#8abeb7"
|
||||
colors.brightwhite = "#c5c8c6"
|
||||
-- Other
|
||||
colors.transparent = "#00000000"
|
||||
colors.container = "#222B2E"
|
||||
colors.main_scheme = "#2F9B85"
|
||||
colors.main_transparent = "#1A2123CC"
|
||||
colors.transparent = "#00000000"
|
||||
colors.container = "#222B2E"
|
||||
colors.main_scheme = "#2F9B85"
|
||||
colors.main_transparent = "#1A2123CC"
|
||||
|
||||
return colors
|
||||
|
|
|
@ -25,6 +25,8 @@ mylauncher = wibox.container.margin(mylauncher, dpi(0), dpi(0), dpi(6), dpi(6))
|
|||
-- ~~~~~~~~~~~
|
||||
-- # Sidebar button :
|
||||
local sidebar_button = require('ui.widgets.sidebar_button')
|
||||
-- # notifications_list button :
|
||||
local notifications_list_button = require('ui.widgets.notifications_list_button')
|
||||
-- # Systray :
|
||||
local systray = require('ui.widgets.systray')
|
||||
-- # Clock :
|
||||
|
@ -109,6 +111,7 @@ local function get_bar(s)
|
|||
systray,
|
||||
sidebar_button,
|
||||
layoutbox(s),
|
||||
notifications_list_button,
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = dpi(10)
|
||||
},
|
||||
|
@ -140,8 +143,8 @@ local function get_bar(s)
|
|||
c.screen.mywibar.visible = true
|
||||
end
|
||||
end
|
||||
client.connect_signal("property::fullscreen", remove_wibar)
|
||||
client.connect_signal("request::unmanage", add_wibar)
|
||||
--client.connect_signal("property::fullscreen", remove_wibar)
|
||||
--client.connect_signal("request::unmanage", add_wibar)
|
||||
|
||||
end
|
||||
|
||||
|
|
|
@ -9,15 +9,16 @@ local wibox = require("wibox")
|
|||
local beautiful = require("beautiful")
|
||||
local xresources = require("beautiful.xresources")
|
||||
local dpi = xresources.apply_dpi
|
||||
local naughty = require("naughty")
|
||||
|
||||
-- # Libs :
|
||||
-- ~~~~~~~~
|
||||
local helpers = require("libs.helpers")
|
||||
|
||||
-- Tags :
|
||||
--awful.util.tagnames = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }
|
||||
awful.util.tagnames = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }
|
||||
--awful.util.tagnames = { "", "", "", "", "", "", "", "", ""} -- font size : 14
|
||||
awful.util.tagnames = {"", "", "", "", "", "", "", "", ""}
|
||||
--awful.util.tagnames = { "", "", "", "", "", "", "", "", "" }
|
||||
|
||||
-- Each screen has its own tag table.
|
||||
screen.connect_signal("request::desktop_decoration", function(s)
|
||||
|
@ -25,68 +26,85 @@ screen.connect_signal("request::desktop_decoration", function(s)
|
|||
end)
|
||||
|
||||
local function update_tag(item, tag, index)
|
||||
if tag.selected then
|
||||
item.markup = helpers.colorize_text(" ", colors.main_scheme)
|
||||
elseif tag.urgent then
|
||||
item.markup = helpers.colorize_text(" ", colors.red)
|
||||
elseif #tag:clients() > 0 then
|
||||
item.markup = helpers.colorize_text(" ", colors.white)
|
||||
else
|
||||
item.markup = helpers.colorize_text(" ", colors.white)
|
||||
end
|
||||
if tag.selected then
|
||||
item.markup = helpers.colorize_text(" ", colors.main_scheme)
|
||||
elseif tag.urgent then
|
||||
item.markup = helpers.colorize_text(" ", colors.red)
|
||||
elseif #tag:clients() > 0 then
|
||||
item.markup = helpers.colorize_text(" ", colors.white)
|
||||
else
|
||||
item.markup = helpers.colorize_text(" ", colors.white)
|
||||
end
|
||||
end
|
||||
|
||||
local modkey = "Mod4"
|
||||
return function(s)
|
||||
|
||||
-- Taglist buttons
|
||||
local taglist_buttons = gears.table.join(
|
||||
awful.button({ }, 1, function(t) t:view_only() end),
|
||||
-- Taglist buttons
|
||||
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({}, 3, awful.tag.viewtoggle),
|
||||
awful.button({ modkey }, 3, function(t)
|
||||
if client.focus then
|
||||
client.focus:toggle_tag(t)
|
||||
end
|
||||
end)
|
||||
end),
|
||||
|
||||
--awful.button({ }, 4, function(t) awful.tag.viewprev(t.screen) end),
|
||||
--awful.button({ }, 5, function(t) awful.tag.viewnext(t.screen) end),
|
||||
awful.button({ }, 4, function(t) awful.tag.viewprev(t.screen) end),
|
||||
awful.button({ }, 5, function(t) awful.tag.viewnext(t.screen) end)
|
||||
)
|
||||
|
||||
-- Create a taglist widget
|
||||
local taglist = awful.widget.taglist {
|
||||
screen = s,
|
||||
--filter = awful.widget.taglist.filter.all,
|
||||
filter = function (t) return t.selected or #t:clients() > 0 end, -- Show only used Tags
|
||||
buttons = taglist_buttons,
|
||||
layout = {
|
||||
screen = s,
|
||||
filter = awful.widget.taglist.filter.all,
|
||||
--filter = function(t) return t.selected or #t:clients() > 0 end, -- Show only used Tags
|
||||
buttons = taglist_buttons,
|
||||
layout = {
|
||||
spacing = dpi(8),
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
},
|
||||
style = {
|
||||
style = {
|
||||
spacing = dpi(-4),
|
||||
},
|
||||
widget_template = {
|
||||
id = "tag",
|
||||
font = theme.ui_font,
|
||||
widget = wibox.widget.textbox,
|
||||
|
||||
create_callback = function(self, c3, index, object)
|
||||
update_tag(self, c3, index)
|
||||
end,
|
||||
|
||||
update_callback = function(self, c3, index, object)
|
||||
self:connect_signal('mouse::enter', function()
|
||||
-- BLING: Update the widget with the new tag
|
||||
awesome.emit_signal("bling::tag_preview::update", c3)
|
||||
-- BLING: Show the widget
|
||||
awesome.emit_signal("bling::tag_preview::visibility", s, true)
|
||||
|
||||
if self.bg ~= '#ff0000' then
|
||||
self.backup = self.bg
|
||||
self.has_backup = true
|
||||
end
|
||||
self.bg = '#ff0000'
|
||||
end)
|
||||
self:connect_signal('mouse::leave', function()
|
||||
-- BLING: Turn the widget off
|
||||
--awesome.emit_signal("bling::tag_preview::visibility", s, false)
|
||||
|
||||
if self.has_backup then self.bg = self.backup end
|
||||
end)
|
||||
end,
|
||||
update_callback = function(self, c3, index, object)
|
||||
update_tag(self, c3, index)
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
tags = wibox.widget{
|
||||
|
||||
tags = wibox.widget {
|
||||
{
|
||||
{
|
||||
taglist,
|
||||
|
@ -99,7 +117,7 @@ return function(s)
|
|||
bg = colors.container,
|
||||
shape = helpers.rrect(theme.rounded - 4),
|
||||
widget = wibox.container.background
|
||||
},
|
||||
},
|
||||
top = dpi(4),
|
||||
bottom = dpi(4),
|
||||
left = dpi(0),
|
||||
|
@ -107,7 +125,11 @@ return function(s)
|
|||
widget = wibox.container.margin
|
||||
}
|
||||
|
||||
--return taglist
|
||||
return tags
|
||||
end
|
||||
tags:connect_signal('mouse::leave', function()
|
||||
-- BLING: Turn the widget off
|
||||
awesome.emit_signal("bling::tag_preview::visibility", s, false)
|
||||
end)
|
||||
|
||||
--return taglist
|
||||
return tags
|
||||
end
|
||||
|
|
|
@ -14,78 +14,93 @@ local dpi = xresources.apply_dpi
|
|||
-- ~~~~~~~~
|
||||
local helpers = require("libs.helpers")
|
||||
|
||||
return function(s)
|
||||
|
||||
-- Tasklist buttons
|
||||
local tasklist_buttons = gears.table.join(
|
||||
awful.button({ }, 1, function (c) c:activate { context = "tasklist", action = "toggle_minimization" } 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)
|
||||
-- Tasklist buttons
|
||||
local tasklist_buttons = gears.table.join(
|
||||
awful.button({}, 1, function(c) c:activate { context = "tasklist", action = "toggle_minimization" } 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)
|
||||
)
|
||||
|
||||
-- Create a tasklist widget
|
||||
local tasklist = awful.widget.tasklist
|
||||
{
|
||||
screen = s,
|
||||
filter = awful.widget.tasklist.filter.currenttags,
|
||||
buttons = tasklist_buttons,
|
||||
style = {
|
||||
font = theme.font,
|
||||
bg_normal = colors.container,
|
||||
bg_focus = colors.container,
|
||||
bg_minimize = colors.black ,
|
||||
shape = helpers.rrect(dpi(4)),
|
||||
},
|
||||
layout = {
|
||||
spacing = dpi(8),
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
},
|
||||
widget_template = {
|
||||
local tasklist = awful.widget.tasklist
|
||||
{
|
||||
{
|
||||
{
|
||||
{
|
||||
awful.widget.clienticon,
|
||||
forced_height = dpi(15),
|
||||
forced_width = dpi(15),
|
||||
halign = "center",
|
||||
valign = "center",
|
||||
widget = wibox.container.place,
|
||||
},
|
||||
margins = dpi(2),
|
||||
widget = wibox.container.margin,
|
||||
},
|
||||
{
|
||||
nil,
|
||||
nil,
|
||||
{
|
||||
nil,
|
||||
{
|
||||
widget = wibox.container.background,
|
||||
id = "pointer",
|
||||
bg = colors.main_scheme,
|
||||
shape = gears.shape.rounded_bar,
|
||||
forced_height = dpi(2),
|
||||
forced_width = dpi(20)
|
||||
},
|
||||
expand = "none",
|
||||
layout = wibox.layout.align.horizontal
|
||||
},
|
||||
layout = wibox.layout.align.vertical
|
||||
},
|
||||
layout = wibox.layout.stack,
|
||||
screen = s,
|
||||
filter = awful.widget.tasklist.filter.currenttags,
|
||||
buttons = tasklist_buttons,
|
||||
style = {
|
||||
font = theme.font,
|
||||
bg_normal = colors.container,
|
||||
bg_focus = colors.container,
|
||||
bg_minimize = colors.black,
|
||||
shape = helpers.rrect(dpi(4)),
|
||||
},
|
||||
forced_width = dpi(40),
|
||||
id = "background_role",
|
||||
widget = wibox.container.background,
|
||||
},
|
||||
top = dpi(4),
|
||||
bottom = dpi(4),
|
||||
left = dpi(2),
|
||||
right = dpi(2),
|
||||
widget = wibox.container.margin
|
||||
}
|
||||
}
|
||||
layout = {
|
||||
spacing = dpi(8),
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
},
|
||||
widget_template = {
|
||||
create_callback = function(self, c, index, objects) --luacheck: no unused args
|
||||
--self:get_children_by_id('clienticon')[1].client = c
|
||||
|
||||
-- BLING: Toggle the popup on hover and disable it off hover
|
||||
self:connect_signal('mouse::enter', function()
|
||||
awesome.emit_signal("bling::task_preview::visibility", s,
|
||||
true, c)
|
||||
end)
|
||||
self:connect_signal('mouse::leave', function()
|
||||
awesome.emit_signal("bling::task_preview::visibility", s,
|
||||
false, c)
|
||||
end)
|
||||
end,
|
||||
{
|
||||
{
|
||||
{
|
||||
{
|
||||
id = 'clienticon',
|
||||
awful.widget.clienticon,
|
||||
forced_height = dpi(15),
|
||||
forced_width = dpi(15),
|
||||
halign = "center",
|
||||
valign = "center",
|
||||
widget = wibox.container.place,
|
||||
},
|
||||
margins = dpi(2),
|
||||
widget = wibox.container.margin,
|
||||
},
|
||||
{
|
||||
nil,
|
||||
nil,
|
||||
{
|
||||
nil,
|
||||
{
|
||||
widget = wibox.container.background,
|
||||
id = "pointer",
|
||||
bg = colors.main_scheme,
|
||||
shape = gears.shape.rounded_bar,
|
||||
forced_height = dpi(2),
|
||||
forced_width = dpi(20)
|
||||
},
|
||||
expand = "none",
|
||||
layout = wibox.layout.align.horizontal
|
||||
},
|
||||
layout = wibox.layout.align.vertical
|
||||
},
|
||||
nil,
|
||||
layout = wibox.layout.stack,
|
||||
},
|
||||
forced_width = dpi(40),
|
||||
id = "background_role",
|
||||
widget = wibox.container.background,
|
||||
},
|
||||
top = dpi(4),
|
||||
bottom = dpi(4),
|
||||
left = dpi(2),
|
||||
right = dpi(2),
|
||||
widget = wibox.container.margin
|
||||
},
|
||||
}
|
||||
return tasklist
|
||||
end
|
||||
|
|
108
home/.config/awesome/ui/notifications-list/init.lua
Normal file
108
home/.config/awesome/ui/notifications-list/init.lua
Normal file
|
@ -0,0 +1,108 @@
|
|||
-- ## Sidebar ##
|
||||
-- ~~~~~~~~~~~~~
|
||||
|
||||
-- Requirements :
|
||||
-- ~~~~~~~~~~~~~~
|
||||
local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
local beautiful = require ("beautiful")
|
||||
local dpi = beautiful.xresources.apply_dpi
|
||||
|
||||
-- # Libs :
|
||||
-- ~~~~~~~~
|
||||
local helpers = require("libs.helpers")
|
||||
local rubato = require("libs.rubato")
|
||||
|
||||
local function box_widget(widgets, width, height)
|
||||
return wibox.widget {
|
||||
{
|
||||
{
|
||||
widgets,
|
||||
margins = dpi(16),
|
||||
widget = wibox.container.margin,
|
||||
},
|
||||
forced_width = dpi(width),
|
||||
forced_height = dpi(height),
|
||||
shape = helpers.rrect(theme.rounded),
|
||||
bg = colors.container,
|
||||
widget = wibox.container.background,
|
||||
},
|
||||
margins = {left = dpi(20), right = dpi(20)},
|
||||
widget = wibox.container.margin,
|
||||
}
|
||||
end
|
||||
|
||||
-- Get widgets
|
||||
local notifications_list_core = require("ui.notifications-list.list")
|
||||
local notifications_widget = notifications_list_core.widget
|
||||
|
||||
-- Combine some widgets
|
||||
local notifications = box_widget(notifications_widget, 380, 150)
|
||||
|
||||
-- Sidebar
|
||||
local notifications_list = wibox {
|
||||
type = "dock",
|
||||
visible = false,
|
||||
ontop = true,
|
||||
width = dpi(420),
|
||||
height = dpi(836),
|
||||
y = dpi(8),
|
||||
bg = theme.bg,
|
||||
shape = helpers.rrect(18),
|
||||
|
||||
}
|
||||
|
||||
-- Sidebar widget setup
|
||||
notifications_list : setup {
|
||||
{
|
||||
notifications,
|
||||
spacing = dpi(20),
|
||||
layout = wibox.layout.flex.vertical,
|
||||
},
|
||||
margins = { top = dpi(20), bottom = dpi(20)},
|
||||
widget = wibox.container.margin,
|
||||
}
|
||||
|
||||
-- Slide animation
|
||||
local slide = rubato.timed {
|
||||
pos = helpers.screen.geometry.height,
|
||||
rate = 60,
|
||||
intro = 0.05,
|
||||
duration = 0.2,
|
||||
easing = rubato.quadratic,
|
||||
subscribed = function(pos)
|
||||
notifications_list.y = helpers.screen.geometry.y + pos
|
||||
end
|
||||
}
|
||||
|
||||
-- Timer of sidebar's death
|
||||
notifications_list.timer = gears.timer {
|
||||
timeout = 0.5,
|
||||
single_shot = true,
|
||||
callback = function()
|
||||
notifications_list.visible = not notifications_list.visible
|
||||
end
|
||||
}
|
||||
|
||||
-- Toggle function
|
||||
notifications_list.toggle = function()
|
||||
if notifications_list.visible then
|
||||
slide.target = helpers.screen.geometry.y - notifications_list.height
|
||||
notifications_list.timer:start()
|
||||
else
|
||||
slide.target = helpers.screen.geometry.y + dpi(10)
|
||||
notifications_list.visible = not notifications_list.visible
|
||||
end
|
||||
|
||||
end
|
||||
awful.placement.top_right(notifications_list, {honor_workarea = true, margins = beautiful.useless_gap * 3})
|
||||
|
||||
notifications_list.core = notifications_list_core
|
||||
|
||||
-- Get signal to execute the function (if that makes sense)
|
||||
awesome.connect_signal("notifications_list::toggle", function()
|
||||
notifications_list.toggle()
|
||||
end)
|
||||
|
||||
return notifications_list
|
147
home/.config/awesome/ui/notifications-list/list.lua
Normal file
147
home/.config/awesome/ui/notifications-list/list.lua
Normal file
|
@ -0,0 +1,147 @@
|
|||
-- ## Clock ##
|
||||
-- ~~~~~~~~~~~
|
||||
|
||||
-- Requirements :
|
||||
-- ~~~~~~~~~~~~~~
|
||||
local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
local naughty = require("naughty")
|
||||
local beautiful = require("beautiful")
|
||||
local dpi = beautiful.xresources.apply_dpi
|
||||
|
||||
local notifbox_layout = wibox.widget {
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
spacing = dpi(7)
|
||||
}
|
||||
|
||||
local function create_notifcation(n)
|
||||
local icon_visibility
|
||||
|
||||
if n.icon == nil then
|
||||
icon_visibility = false
|
||||
else
|
||||
icon_visibility = true
|
||||
end
|
||||
|
||||
-- Action widget
|
||||
local action_widget = {
|
||||
{
|
||||
{
|
||||
id = "text_role",
|
||||
align = "center",
|
||||
font = "Roboto Mono 10",
|
||||
widget = wibox.widget.textbox,
|
||||
},
|
||||
margins = { left = dpi(6), right = dpi(6) },
|
||||
widget = wibox.container.margin,
|
||||
},
|
||||
widget = wibox.container.background,
|
||||
}
|
||||
|
||||
-- Apply action widget ^
|
||||
local actions = wibox.widget {
|
||||
notification = n,
|
||||
base_layout = wibox.widget {
|
||||
spacing = dpi(8),
|
||||
layout = wibox.layout.flex.horizontal,
|
||||
},
|
||||
widget_template = action_widget,
|
||||
widget = naughty.list.actions,
|
||||
}
|
||||
|
||||
local function space_h(length, circumstances)
|
||||
return wibox.widget {
|
||||
forced_width = length,
|
||||
visible = circumstances,
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
}
|
||||
end
|
||||
|
||||
-- Make other widgets
|
||||
local title = wibox.widget.textbox()
|
||||
title.font = "Roboto bold 14"
|
||||
title.align = 'left'
|
||||
title.markup = n.title
|
||||
|
||||
local message = wibox.widget.textbox()
|
||||
message.font = "Roboto Medium 11"
|
||||
message.align = 'left'
|
||||
message.markup = n.message
|
||||
|
||||
local icon = wibox.widget {
|
||||
nil,
|
||||
{
|
||||
{
|
||||
image = n.icon or n.app_icon,
|
||||
visible = icon_visibility,
|
||||
widget = wibox.widget.imagebox,
|
||||
},
|
||||
strategy = "max",
|
||||
width = dpi(30),
|
||||
height = dpi(30),
|
||||
widget = wibox.container.constraint,
|
||||
},
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.vertical,
|
||||
}
|
||||
|
||||
local container = wibox.widget {
|
||||
{
|
||||
title,
|
||||
{
|
||||
icon,
|
||||
space_h(dpi(10), icon_visibility),
|
||||
message,
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
},
|
||||
actions,
|
||||
spacing = dpi(10),
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
},
|
||||
margins = dpi(20),
|
||||
widget = wibox.container.margin,
|
||||
}
|
||||
|
||||
notifbox_layout:insert(
|
||||
1,
|
||||
container
|
||||
)
|
||||
end
|
||||
|
||||
naughty.connect_signal("request::display", function(n)
|
||||
create_notifcation(n)
|
||||
end)
|
||||
|
||||
local notif_core = {}
|
||||
|
||||
notif_core.is_read = true
|
||||
|
||||
notif_core.widget = wibox.widget {
|
||||
{
|
||||
{
|
||||
text = "Dismiss all",
|
||||
halign = "center",
|
||||
valign = "center",
|
||||
widget = wibox.widget.textbox
|
||||
},
|
||||
buttons = gears.table.join(
|
||||
awful.button({}, 1, function()
|
||||
notifbox_layout:reset()
|
||||
end)
|
||||
),
|
||||
forced_width = 75,
|
||||
shape = gears.shape.rounded_bar,
|
||||
shape_border_width = 1,
|
||||
shape_border_color = beautiful.bg_highlight,
|
||||
widget = wibox.container.background
|
||||
},
|
||||
{
|
||||
notifbox_layout,
|
||||
layout = wibox.layout.flex.vertical
|
||||
},
|
||||
spacing = dpi(4),
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
}
|
||||
|
||||
return notif_core
|
|
@ -22,11 +22,11 @@ naughty.config.defaults.title = "Notification"
|
|||
naughty.config.defaults.position = "top_right"
|
||||
naughty.config.defaults.border_width = 0
|
||||
|
||||
local function create_notifcation(n)
|
||||
local function create_notifcation(n)
|
||||
local time = os.date "%H:%M"
|
||||
local icon_visibility
|
||||
|
||||
if n.icon == nil then
|
||||
if n.icon == nil then
|
||||
icon_visibility = false
|
||||
else
|
||||
icon_visibility = true
|
||||
|
@ -41,7 +41,7 @@ local function create_notifcation(n)
|
|||
font = "Roboto Mono 10",
|
||||
widget = wibox.widget.textbox,
|
||||
},
|
||||
margins = {left = dpi(6), right = dpi(6)},
|
||||
margins = { left = dpi(6), right = dpi(6) },
|
||||
widget = wibox.container.margin,
|
||||
},
|
||||
widget = wibox.container.background,
|
||||
|
@ -81,7 +81,7 @@ local function create_notifcation(n)
|
|||
nil,
|
||||
{
|
||||
{
|
||||
image = n.icon,
|
||||
image = n.icon or n.app_icon,
|
||||
visible = icon_visibility,
|
||||
widget = wibox.widget.imagebox,
|
||||
},
|
||||
|
@ -133,22 +133,20 @@ local function create_notifcation(n)
|
|||
widget = wibox.container.constraint,
|
||||
},
|
||||
bg = colors.container,
|
||||
widget = wibox.container.background,
|
||||
widget = wibox.container.background,
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
-- # Error handling :
|
||||
naughty.connect_signal("request::display_error", function(message, startup)
|
||||
naughty.notification {
|
||||
urgency = "critical",
|
||||
title = "Oops, an error happened"..(startup and " during startup!" or "!"),
|
||||
message = message
|
||||
}
|
||||
naughty.notification {
|
||||
urgency = "critical",
|
||||
title = "Oops, an error happened" .. (startup and " during startup!" or "!"),
|
||||
message = message
|
||||
}
|
||||
end)
|
||||
|
||||
naughty.connect_signal("request::display", function(n)
|
||||
naughty.connect_signal("request::display", function(n)
|
||||
create_notifcation(n)
|
||||
end)
|
||||
|
||||
|
||||
|
|
|
@ -109,8 +109,9 @@ sidebar : setup {
|
|||
local slide = rubato.timed {
|
||||
pos = helpers.screen.geometry.height,
|
||||
rate = 60,
|
||||
intro = 0.2,
|
||||
duration = 0.4,
|
||||
intro = 0.05,
|
||||
duration = 0.2,
|
||||
easing = rubato.quadratic,
|
||||
subscribed = function(pos)
|
||||
sidebar.y = helpers.screen.geometry.y + pos
|
||||
end
|
||||
|
@ -146,8 +147,8 @@ awful.placement.top_right(sidebar, {honor_workarea = true, margins = beautiful.u
|
|||
--})
|
||||
|
||||
-- Get signal to execute the function (if that makes sense)
|
||||
awesome.connect_signal("sidebar::toggle", function(s)
|
||||
sidebar.toggle(s)
|
||||
awesome.connect_signal("sidebar::toggle", function()
|
||||
sidebar.toggle()
|
||||
end)
|
||||
|
||||
return sidebar
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
local beautiful = require ("beautiful")
|
||||
local beautiful = require("beautiful")
|
||||
local dpi = beautiful.xresources.apply_dpi
|
||||
|
||||
|
||||
|
@ -20,18 +20,18 @@ local playerctl = require("libs.bling").signal.playerctl.lib()
|
|||
-- widgets
|
||||
----------
|
||||
-- gradientee music album art
|
||||
-- - - - - - - - - - - - - -
|
||||
-- - - - - - - - - - - - - -
|
||||
local music_art_filter = wibox.widget({
|
||||
{
|
||||
bg = {
|
||||
type = "linear",
|
||||
from = { 0, 30 },
|
||||
to = { 0, 200},
|
||||
stops = {
|
||||
{ 0, colors.transparent},
|
||||
{ 1, colors.container }
|
||||
},
|
||||
type = "linear",
|
||||
from = { 0, 30 },
|
||||
to = { 0, 200 },
|
||||
stops = {
|
||||
{ 0, colors.transparent },
|
||||
{ 1, colors.container }
|
||||
},
|
||||
},
|
||||
forced_height = dpi(85),
|
||||
forced_width = dpi(85),
|
||||
widget = wibox.container.background,
|
||||
|
@ -43,42 +43,42 @@ local music_art_filter = wibox.widget({
|
|||
|
||||
|
||||
-- the different music elements
|
||||
-- - - - - - - - - - - - - - -
|
||||
-- - - - - - - - - - - - - - -
|
||||
|
||||
-- album art
|
||||
local album_art = wibox.widget{
|
||||
widget = wibox.widget.imagebox,
|
||||
clip_shape = helpers.rrect(theme.rounded),
|
||||
forced_height = dpi(85),
|
||||
forced_width = dpi(85),
|
||||
image = theme.album_art
|
||||
local album_art = wibox.widget {
|
||||
widget = wibox.widget.imagebox,
|
||||
clip_shape = helpers.rrect(theme.rounded),
|
||||
forced_height = dpi(85),
|
||||
forced_width = dpi(85),
|
||||
image = theme.album_art
|
||||
}
|
||||
|
||||
-- playing yeah?
|
||||
local playing_or = wibox.widget{
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("Now playing", colors.white),
|
||||
font = theme.font,
|
||||
align = "left",
|
||||
valign = "center"
|
||||
local playing_or = wibox.widget {
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("Now playing", colors.white),
|
||||
font = theme.font,
|
||||
align = "left",
|
||||
valign = "center"
|
||||
}
|
||||
|
||||
-- song artist
|
||||
local song_artist = wibox.widget{
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("Unknown", colors.white),
|
||||
font = theme.font,
|
||||
align = "left",
|
||||
valign = "center"
|
||||
local song_artist = wibox.widget {
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("Unknown", colors.white),
|
||||
font = theme.font,
|
||||
align = "left",
|
||||
valign = "center"
|
||||
}
|
||||
|
||||
-- song name
|
||||
local song_name = wibox.widget{
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("None", colors.white),
|
||||
font = theme.font,
|
||||
align = "left",
|
||||
valign = "center"
|
||||
local song_name = wibox.widget {
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("None", colors.white),
|
||||
font = theme.font,
|
||||
align = "left",
|
||||
valign = "center"
|
||||
}
|
||||
|
||||
---------------------------------------- eo.Widgets
|
||||
|
@ -87,30 +87,30 @@ local song_name = wibox.widget{
|
|||
----------
|
||||
|
||||
-- toggle button
|
||||
local toggle_button = wibox.widget{
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("", colors.white),
|
||||
font = theme.sidebar_font,
|
||||
align = "right",
|
||||
valign = "center"
|
||||
local toggle_button = wibox.widget {
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("", colors.white),
|
||||
font = theme.sidebar_font,
|
||||
align = "right",
|
||||
valign = "center"
|
||||
}
|
||||
|
||||
-- next button
|
||||
local next_button = wibox.widget{
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("", colors.white),
|
||||
font = theme.sidebar_font,
|
||||
align = "right",
|
||||
valign = "center"
|
||||
local next_button = wibox.widget {
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("", colors.white),
|
||||
font = theme.sidebar_font,
|
||||
align = "right",
|
||||
valign = "center"
|
||||
}
|
||||
|
||||
-- prev button
|
||||
local prev_button = wibox.widget{
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("", colors.white),
|
||||
font = theme.sidebar_font,
|
||||
align = "right",
|
||||
valign = "center"
|
||||
local prev_button = wibox.widget {
|
||||
widget = wibox.widget.textbox,
|
||||
markup = helpers.colorize_text("", colors.white),
|
||||
font = theme.sidebar_font,
|
||||
align = "right",
|
||||
valign = "center"
|
||||
}
|
||||
|
||||
local music_bar = wibox.widget({
|
||||
|
@ -139,13 +139,13 @@ local next_command = function() playerctl:next() end
|
|||
|
||||
-- make it functional!
|
||||
toggle_button:buttons(gears.table.join(
|
||||
awful.button({}, 1, function() toggle_command() end)))
|
||||
awful.button({}, 1, function() toggle_command() end)))
|
||||
|
||||
next_button:buttons(gears.table.join(
|
||||
awful.button({}, 1, function() next_command() end)))
|
||||
awful.button({}, 1, function() next_command() end)))
|
||||
|
||||
prev_button:buttons(gears.table.join(
|
||||
awful.button({}, 1, function() prev_command() end)))
|
||||
awful.button({}, 1, function() prev_command() end)))
|
||||
|
||||
|
||||
|
||||
|
@ -165,77 +165,75 @@ playerctl:connect_signal("metadata", function(_, title, artist, album_path, __,
|
|||
end
|
||||
|
||||
album_art:set_image(gears.surface.load_uncached(album_path))
|
||||
song_name:set_markup_silently(helpers.colorize_text(title, colors.white))
|
||||
song_name:set_markup_silently(helpers.colorize_text(title, colors.white))
|
||||
song_artist:set_markup_silently(helpers.colorize_text(artist, colors.white))
|
||||
|
||||
|
||||
end)
|
||||
|
||||
-- playing/paused/{N/A}
|
||||
playerctl:connect_signal("playback_status", function(_, playing, __)
|
||||
if playing then
|
||||
toggle_button.markup = helpers.colorize_text("", colors.white)
|
||||
toggle_button.markup = helpers.colorize_text("", colors.white)
|
||||
else
|
||||
toggle_button.markup = helpers.colorize_text("", colors.white)
|
||||
toggle_button.markup = helpers.colorize_text("", colors.white)
|
||||
end
|
||||
end)
|
||||
|
||||
-- time elapsed
|
||||
playerctl:connect_signal("position", function(_, interval_sec, length_sec)
|
||||
music_bar.value = (interval_sec / length_sec) * 100
|
||||
music_length = length_sec
|
||||
music_bar.value = (interval_sec / length_sec) * 100
|
||||
music_length = length_sec
|
||||
end)
|
||||
|
||||
|
||||
-- mainbox
|
||||
-- too messy
|
||||
------------
|
||||
local music_box = wibox.widget {
|
||||
local music_box = wibox.widget {
|
||||
{
|
||||
{
|
||||
album_art,
|
||||
music_art_filter,
|
||||
layout = wibox.layout.stack,
|
||||
},
|
||||
{
|
||||
{
|
||||
{
|
||||
album_art,
|
||||
music_art_filter,
|
||||
layout = wibox.layout.stack,
|
||||
},
|
||||
{
|
||||
playing_or,
|
||||
nil,
|
||||
{
|
||||
{
|
||||
playing_or,
|
||||
nil,
|
||||
{
|
||||
{
|
||||
step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth,
|
||||
widget = wibox.container.scroll.horizontal,
|
||||
forced_width = dpi(250),
|
||||
speed = 30,
|
||||
song_name,
|
||||
},
|
||||
{
|
||||
step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth,
|
||||
widget = wibox.container.scroll.horizontal,
|
||||
forced_width = dpi(250),
|
||||
speed = 30,
|
||||
song_artist,
|
||||
},
|
||||
spacing = dpi(2),
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
},
|
||||
layout = wibox.layout.align.vertical,
|
||||
expand = "none"
|
||||
},
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = dpi(10)
|
||||
step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth,
|
||||
widget = wibox.container.scroll.horizontal,
|
||||
forced_width = dpi(250),
|
||||
speed = 30,
|
||||
song_name,
|
||||
},
|
||||
{
|
||||
step_function = wibox.container.scroll.step_functions.waiting_nonlinear_back_and_forth,
|
||||
widget = wibox.container.scroll.horizontal,
|
||||
forced_width = dpi(250),
|
||||
speed = 30,
|
||||
song_artist,
|
||||
},
|
||||
spacing = dpi(2),
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
},
|
||||
widget = wibox.container.margin,
|
||||
margins = {top = dpi(20), bottom = dpi(20), left = dpi(20), right = dpi(20)},
|
||||
layout = wibox.layout.align.vertical,
|
||||
expand = "none"
|
||||
},
|
||||
layout = wibox.layout.stack,
|
||||
},
|
||||
widget = wibox.container.background,
|
||||
forced_height = dpi(150),
|
||||
bg = colors.container,
|
||||
border_color = colors.container,
|
||||
shape = helpers.rrect(theme.rounded)
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = dpi(10)
|
||||
},
|
||||
widget = wibox.container.margin,
|
||||
margins = { top = dpi(20), bottom = dpi(20), left = dpi(20), right = dpi(20) },
|
||||
},
|
||||
layout = wibox.layout.stack,
|
||||
},
|
||||
widget = wibox.container.background,
|
||||
forced_height = dpi(150),
|
||||
bg = colors.container,
|
||||
border_color = colors.container,
|
||||
shape = helpers.rrect(theme.rounded)
|
||||
}
|
||||
|
||||
|
||||
|
@ -245,26 +243,26 @@ return wibox.widget {
|
|||
{
|
||||
music_box,
|
||||
{
|
||||
{
|
||||
music_bar,
|
||||
direction = "east",
|
||||
widget = wibox.container.rotate,
|
||||
forced_width = dpi(2)
|
||||
},
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = dpi(20),
|
||||
{
|
||||
music_bar,
|
||||
direction = "east",
|
||||
widget = wibox.container.rotate,
|
||||
forced_width = dpi(2)
|
||||
},
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
spacing = dpi(20),
|
||||
},
|
||||
{
|
||||
{
|
||||
{
|
||||
nil,
|
||||
{
|
||||
prev_button,
|
||||
toggle_button,
|
||||
next_button,
|
||||
{
|
||||
prev_button,
|
||||
toggle_button,
|
||||
next_button,
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
spacing = dpi(22)
|
||||
},
|
||||
spacing = dpi(22)
|
||||
},
|
||||
layout = wibox.layout.align.vertical,
|
||||
expand = "none"
|
||||
},
|
||||
|
@ -285,5 +283,3 @@ return wibox.widget {
|
|||
|
||||
-- eof
|
||||
------
|
||||
|
||||
|
||||
|
|
|
@ -113,13 +113,13 @@ local mic = wibox.widget {
|
|||
}
|
||||
|
||||
local update_mic = function()
|
||||
awful.spawn.easy_async_with_shell("pamixer --source 5891 --get-volume", function(stdout)
|
||||
awful.spawn.easy_async_with_shell("pactl get-source-volume 0 | awk '{print $5}' | cut -d '%' -f 1", function(stdout)
|
||||
mic_slider.value = tonumber(stdout:match("%d+"))
|
||||
end)
|
||||
end
|
||||
|
||||
mic_slider:connect_signal("property::value", function(_, mic_vol)
|
||||
awful.spawn("pamixer --source 5891 --set-volume ".. mic_vol, false)
|
||||
awful.spawn("pactl set-source-volume 0 ".. mic_vol .. "%", false)
|
||||
-- Update textbox widget text
|
||||
mic_osd_value.text = mic_vol .. "%"
|
||||
awesome.emit_signal("module::mic_osd_value", mic_vol)
|
||||
|
|
|
@ -6,48 +6,49 @@
|
|||
local awful = require("awful")
|
||||
local gears = require("gears")
|
||||
local wibox = require("wibox")
|
||||
local beautiful = require ("beautiful")
|
||||
local beautiful = require("beautiful")
|
||||
local naughty = require("naughty")
|
||||
local dpi = beautiful.xresources.apply_dpi
|
||||
|
||||
-- Helper
|
||||
-----------
|
||||
local function round_widget(radius)
|
||||
return function(cr,w,h)
|
||||
gears.shape.rounded_rect(cr,w,h,radius)
|
||||
end
|
||||
return function(cr, w, h)
|
||||
gears.shape.rounded_rect(cr, w, h, radius)
|
||||
end
|
||||
end
|
||||
|
||||
local function grouping_widget(w1,w2)
|
||||
local container = wibox.widget {
|
||||
w1,
|
||||
{
|
||||
nil,
|
||||
w2,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.vertical,
|
||||
},
|
||||
spacing = dpi(18),
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
}
|
||||
local function grouping_widget(w1, w2)
|
||||
local container = wibox.widget {
|
||||
w1,
|
||||
{
|
||||
nil,
|
||||
w2,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.vertical,
|
||||
},
|
||||
spacing = dpi(18),
|
||||
layout = wibox.layout.fixed.horizontal,
|
||||
}
|
||||
|
||||
return container
|
||||
return container
|
||||
end
|
||||
|
||||
local function center_widget(widget)
|
||||
return wibox.widget {
|
||||
nil,
|
||||
{
|
||||
nil,
|
||||
widget,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.horizontal,
|
||||
},
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.vertical,
|
||||
}
|
||||
return wibox.widget {
|
||||
nil,
|
||||
{
|
||||
nil,
|
||||
widget,
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.horizontal,
|
||||
},
|
||||
expand = 'none',
|
||||
layout = wibox.layout.align.vertical,
|
||||
}
|
||||
end
|
||||
|
||||
-- Create_widgets
|
||||
-- Create_widgets
|
||||
-------------------
|
||||
|
||||
-- Disk
|
||||
|
@ -57,15 +58,15 @@ d_icon.align = "left"
|
|||
d_icon.markup = " "
|
||||
|
||||
local d_slider = wibox.widget {
|
||||
forced_width = dpi(220),
|
||||
forced_height = dpi(10),
|
||||
color = beautiful.red,
|
||||
background_color = "#663D3D",
|
||||
shape = round_widget(12),
|
||||
bar_shape = round_widget(12),
|
||||
max_value = 100,
|
||||
value = 20,
|
||||
widget = wibox.widget.progressbar,
|
||||
forced_width = dpi(220),
|
||||
forced_height = dpi(10),
|
||||
color = beautiful.red,
|
||||
background_color = "#663D3D",
|
||||
shape = round_widget(12),
|
||||
bar_shape = round_widget(12),
|
||||
max_value = 100,
|
||||
value = 20,
|
||||
widget = wibox.widget.progressbar,
|
||||
}
|
||||
|
||||
local disk = grouping_widget(d_icon, d_slider)
|
||||
|
@ -77,14 +78,14 @@ v_icon.align = "left"
|
|||
v_icon.markup = ""
|
||||
|
||||
local v_slider = wibox.widget {
|
||||
forced_width = dpi(220),
|
||||
forced_height = dpi(10),
|
||||
color = beautiful.blue,
|
||||
background_color = "#3D4B66",
|
||||
shape = round_widget(12),
|
||||
bar_shape = round_widget(12),
|
||||
max_value = 100,
|
||||
widget = wibox.widget.progressbar,
|
||||
forced_width = dpi(220),
|
||||
forced_height = dpi(10),
|
||||
color = beautiful.blue,
|
||||
background_color = "#3D4B66",
|
||||
shape = round_widget(12),
|
||||
bar_shape = round_widget(12),
|
||||
max_value = 100,
|
||||
widget = wibox.widget.progressbar,
|
||||
}
|
||||
|
||||
local volume = grouping_widget(v_icon, v_slider)
|
||||
|
@ -96,14 +97,14 @@ b_icon.align = "left"
|
|||
b_icon.markup = " "
|
||||
|
||||
local b_slider = wibox.widget {
|
||||
forced_width = dpi(220),
|
||||
forced_height = dpi(10),
|
||||
color = beautiful.yellow,
|
||||
background_color = "#66523D",
|
||||
shape = round_widget(12),
|
||||
bar_shape = round_widget(12),
|
||||
max_value = 100,
|
||||
widget = wibox.widget.progressbar,
|
||||
forced_width = dpi(220),
|
||||
forced_height = dpi(10),
|
||||
color = beautiful.yellow,
|
||||
background_color = "#66523D",
|
||||
shape = round_widget(12),
|
||||
bar_shape = round_widget(12),
|
||||
max_value = 100,
|
||||
widget = wibox.widget.progressbar,
|
||||
}
|
||||
|
||||
local brightness = grouping_widget(b_icon, b_slider)
|
||||
|
@ -112,28 +113,30 @@ local brightness = grouping_widget(b_icon, b_slider)
|
|||
------------------------------------
|
||||
|
||||
local function get_val()
|
||||
awesome.connect_signal("signal::volume", function(vol, muted)
|
||||
if muted then v_slider.value = 0 else
|
||||
v_slider.color = beautiful.blue
|
||||
v_slider.value = tonumber(vol)
|
||||
end
|
||||
end)
|
||||
awesome.connect_signal("signal::volume", function(vol, muted)
|
||||
if muted then
|
||||
v_slider.value = 0
|
||||
else
|
||||
v_slider.color = beautiful.blue
|
||||
v_slider.value = tonumber(vol)
|
||||
end
|
||||
end)
|
||||
|
||||
awesome.connect_signal("signal::brightness", function(bri)
|
||||
b_slider.value = tonumber(bri)
|
||||
end)
|
||||
awesome.connect_signal("signal::brightness", function(bri)
|
||||
b_slider.value = tonumber(bri)
|
||||
end)
|
||||
|
||||
awesome.connect_signal("signal::disk", function(disk_perc)
|
||||
d_slider.value = tonumber(disk_perc)
|
||||
end)
|
||||
awesome.connect_signal("signal::disk", function(disk_perc)
|
||||
d_slider.value = tonumber(disk_perc)
|
||||
end)
|
||||
end
|
||||
|
||||
get_val()
|
||||
|
||||
return center_widget(wibox.widget {
|
||||
disk,
|
||||
volume,
|
||||
brightness,
|
||||
spacing = dpi(18),
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
disk,
|
||||
volume,
|
||||
brightness,
|
||||
spacing = dpi(18),
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
})
|
||||
|
|
|
@ -7,6 +7,7 @@ local beautiful = require("beautiful")
|
|||
local dpi = beautiful.xresources.apply_dpi
|
||||
local filesystem = gears.filesystem
|
||||
local icon_dir = filesystem.get_configuration_dir() .. "themes/icons/weather/"
|
||||
local naughty = require("naughty")
|
||||
|
||||
-- # Libs :
|
||||
-- ~~~~~~~~
|
||||
|
@ -85,7 +86,7 @@ local current_weather_widget = wibox.widget({
|
|||
font = "Roboto Medium 10",
|
||||
widget = wibox.widget.textbox,
|
||||
},
|
||||
spacing = dpi(-6),
|
||||
spacing = dpi( -6),
|
||||
layout = wibox.layout.fixed.vertical,
|
||||
},
|
||||
widget = wibox.container.place,
|
||||
|
@ -132,8 +133,9 @@ local hourly_widget = function()
|
|||
local time = widget:get_children_by_id("time")[1]
|
||||
local icon = widget:get_children_by_id("icon")[1]
|
||||
local temp = widget:get_children_by_id("tempareture")[1]
|
||||
temp:set_markup(math.floor(result.temp) .. "<sup><span>°</span></sup>")
|
||||
time:set_text(os.date("%I%p", tonumber(result.dt)))
|
||||
|
||||
temp:set_markup(math.floor(result.main.temp) .. "<sup><span>°</span></sup>")
|
||||
time:set_text(os.date("%H", tonumber(result.dt)))
|
||||
icon.image = icon_dir .. icon_map[result.weather[1].icon] .. ".svg"
|
||||
icon:emit_signal("widget::redraw_needed")
|
||||
end
|
||||
|
@ -169,27 +171,19 @@ local weather_widget = wibox.widget({
|
|||
layout = wibox.layout.fixed.vertical,
|
||||
})
|
||||
|
||||
local api_key = ""
|
||||
local coordinates = {"", ""}
|
||||
|
||||
local show_hourly_forecast = true
|
||||
local show_daily_forecast = true
|
||||
local api_key = "7641c17cda8ed75684ed55704226c565"
|
||||
local city_id = "2972315"
|
||||
local units = "metric"
|
||||
|
||||
local url = (
|
||||
"https://api.openweathermap.org/data/2.5/onecall"
|
||||
.. "?lat="
|
||||
.. coordinates[1]
|
||||
.. "&lon="
|
||||
.. coordinates[2]
|
||||
.. "&appid="
|
||||
.. api_key
|
||||
.. "&units="
|
||||
.. units
|
||||
.. "&exclude=minutely"
|
||||
.. (show_hourly_forecast == false and ",hourly" or "")
|
||||
.. (show_daily_forecast == false and ",daily" or "")
|
||||
)
|
||||
"https://api.openweathermap.org/data/2.5/forecast"
|
||||
.. "?appid="
|
||||
.. api_key
|
||||
.. "&id="
|
||||
.. city_id
|
||||
.. "&units="
|
||||
.. units
|
||||
)
|
||||
|
||||
awful.widget.watch(string.format(GET_FORECAST_CMD, url), 600, function(_, stdout, stderr)
|
||||
if stderr == "" then
|
||||
|
@ -200,19 +194,27 @@ awful.widget.watch(string.format(GET_FORECAST_CMD, url), 600, function(_, stdout
|
|||
local humidity = current_weather_widget:get_children_by_id("humidity")[1]
|
||||
local temp_current = current_weather_widget:get_children_by_id("tempareture_current")[1]
|
||||
local feels_like = current_weather_widget:get_children_by_id("feels_like")[1]
|
||||
icon.image = icon_dir .. icon_map[result.current.weather[1].icon] .. ".svg"
|
||||
|
||||
local current = result.list[1]
|
||||
icon.image = icon_dir .. icon_map[current.weather[1].icon] .. ".svg"
|
||||
icon:emit_signal("widget::redraw_needed")
|
||||
description:set_text(result.current.weather[1].description:gsub("^%l", string.upper))
|
||||
humidity:set_text("Humidity: " .. result.current.humidity .. "%")
|
||||
temp_current:set_markup(math.floor(result.current.temp) .. "<sup><span>°</span></sup>")
|
||||
feels_like:set_markup("Feels like: " .. math.floor(result.current.feels_like) .. "<sup><span>°</span></sup>")
|
||||
description:set_text(current.weather[1].description:gsub("^%l", string.upper))
|
||||
humidity:set_text("Humidity: " .. current.main.humidity .. "%")
|
||||
temp_current:set_markup(math.floor(current.main.temp) .. "<sup><span>°</span></sup>")
|
||||
feels_like:set_markup("Feels like: " .. math.floor(current.main.feels_like) .. "<sup><span>°</span></sup>")
|
||||
|
||||
-- Hourly widget setup
|
||||
hourly_widget_1.update(result.hourly[1])
|
||||
hourly_widget_2.update(result.hourly[2])
|
||||
hourly_widget_3.update(result.hourly[3])
|
||||
hourly_widget_4.update(result.hourly[4])
|
||||
hourly_widget_5.update(result.hourly[5])
|
||||
hourly_widget_6.update(result.hourly[6])
|
||||
hourly_widget_1.update(result.list[1])
|
||||
hourly_widget_2.update(result.list[2])
|
||||
hourly_widget_3.update(result.list[3])
|
||||
hourly_widget_4.update(result.list[4])
|
||||
hourly_widget_5.update(result.list[5])
|
||||
hourly_widget_6.update(result.list[6])
|
||||
else
|
||||
naughty.notify({
|
||||
title = "Weather error",
|
||||
text = stderr
|
||||
})
|
||||
end
|
||||
end)
|
||||
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
-- ## Sidebar button ##
|
||||
-- ~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
-- Requirements :
|
||||
-- ~~~~~~~~~~~~~~
|
||||
local gears = require("gears")
|
||||
local awful = require("awful")
|
||||
local wibox = require("wibox")
|
||||
local beautiful = require('beautiful')
|
||||
local dpi = require('beautiful').xresources.apply_dpi
|
||||
local notifications_list = require("ui.notifications-list")
|
||||
|
||||
|
||||
local notifications_list_icon = wibox.widget{
|
||||
markup = "",
|
||||
font = theme.taglist_font,
|
||||
valign = "center",
|
||||
align = "center",
|
||||
widget = wibox.widget.textbox
|
||||
}
|
||||
|
||||
notifications_list_icon:connect_signal(
|
||||
"button::press",
|
||||
function()
|
||||
notifications_list_icon.opacity = 0.6
|
||||
notifications_list.toggle()
|
||||
end)
|
||||
|
||||
notifications_list_icon:connect_signal(
|
||||
"button::release",
|
||||
function()
|
||||
notifications_list_icon.opacity = 1
|
||||
end)
|
||||
|
||||
--return sidebar_icon
|
||||
return awful.widget.only_on_screen(notifications_list_icon, 'primary')
|
|
@ -29,7 +29,7 @@ sidebar_icon:connect_signal(
|
|||
"button::press",
|
||||
function()
|
||||
sidebar_icon.opacity = 0.6
|
||||
sidebar.toggle(s)
|
||||
sidebar.toggle()
|
||||
end)
|
||||
sidebar_icon:connect_signal(
|
||||
"button::release",
|
||||
|
|
29
home/.config/awesome/ui/widgets/tag-preview.lua
Normal file
29
home/.config/awesome/ui/widgets/tag-preview.lua
Normal file
|
@ -0,0 +1,29 @@
|
|||
local awful = require "awful"
|
||||
local wibox = require "wibox"
|
||||
local beautiful = require "beautiful"
|
||||
local bling = require "libs.bling"
|
||||
|
||||
bling.widget.tag_preview.enable {
|
||||
show_client_content = true, -- Whether or not to show the client content
|
||||
x = 10, -- The x-coord of the popup
|
||||
y = 10, -- The y-coord of the popup
|
||||
scale = 0.25, -- The scale of the previews compared to the screen
|
||||
honor_padding = true, -- Honor padding when creating widget size
|
||||
honor_workarea = true, -- Honor work area when creating widget size
|
||||
placement_fn = function(c) -- Place the widget using awful.placement (this overrides x & y)
|
||||
awful.placement.bottom_left(c, {
|
||||
margins = {
|
||||
bottom = 45,
|
||||
left = 5
|
||||
},
|
||||
parent = awful.screen.focused()
|
||||
})
|
||||
end,
|
||||
background_widget = wibox.widget { -- Set a background image (like a wallpaper) for the widget
|
||||
image = "/home/eric/Pictures/wallpapers/96300930_p0_x4_esrgan.jpg",
|
||||
horizontal_fit_policy = "fit",
|
||||
vertical_fit_policy = "fit",
|
||||
widget = wibox.widget.imagebox
|
||||
}
|
||||
}
|
||||
|
17
home/.config/awesome/ui/widgets/task-preview.lua
Normal file
17
home/.config/awesome/ui/widgets/task-preview.lua
Normal file
|
@ -0,0 +1,17 @@
|
|||
local awful = require "awful"
|
||||
local bling = require "libs.bling"
|
||||
|
||||
bling.widget.task_preview.enable {
|
||||
x = 20, -- The x-coord of the popup
|
||||
y = 20, -- The y-coord of the popup
|
||||
height = 200, -- The height of the popup
|
||||
width = 200, -- The width of the popup
|
||||
placement_fn = function(c) -- Place the widget using awful.placement (this overrides x & y)
|
||||
awful.placement.bottom(c, {
|
||||
margins = {
|
||||
bottom = 45
|
||||
},
|
||||
parent = awful.screen.focused()
|
||||
})
|
||||
end
|
||||
}
|
|
@ -15,25 +15,29 @@ local helpers = require("libs.helpers")
|
|||
local temprature = wibox.widget.textbox()
|
||||
temprature.font = theme.font
|
||||
|
||||
watch('bash -c "sensors | awk \'/Core 0/ {print substr($3, 2) }\'"', 30, function(_, stdout)
|
||||
temprature.text = stdout
|
||||
watch([[ bash -c "sensors | grep 'Tctl:' | awk '{print $2}'" ]], 30, function(_, stdout)
|
||||
local temp_num = tonumber(stdout:match("%d+"))
|
||||
if temp_num == nil then
|
||||
temp_num = -1
|
||||
end
|
||||
temprature.text = math.floor(temp_num) .. "°C"
|
||||
end)
|
||||
|
||||
|
||||
-- Icon :
|
||||
local widget_icon = " "
|
||||
local icon = wibox.widget{
|
||||
font = theme.icon_font,
|
||||
markup = helpers.colorize_text(widget_icon, colors.main_scheme),
|
||||
widget = wibox.widget.textbox,
|
||||
valign = "center",
|
||||
align = "center"
|
||||
local icon = wibox.widget {
|
||||
font = theme.icon_font,
|
||||
markup = helpers.colorize_text(widget_icon, colors.main_scheme),
|
||||
widget = wibox.widget.textbox,
|
||||
valign = "center",
|
||||
align = "center"
|
||||
}
|
||||
|
||||
return wibox.widget {
|
||||
icon,
|
||||
wibox.widget{
|
||||
temprature,
|
||||
icon,
|
||||
wibox.widget {
|
||||
temprature,
|
||||
fg = colors.brightwhite,
|
||||
widget = wibox.container.background
|
||||
},
|
||||
|
|
20
home/.config/awesome/ui/widgets/window-switcher.lua
Normal file
20
home/.config/awesome/ui/widgets/window-switcher.lua
Normal file
|
@ -0,0 +1,20 @@
|
|||
local awful = require "awful"
|
||||
local bling = require "libs.bling"
|
||||
|
||||
bling.widget.window_switcher.enable {
|
||||
type = "thumbnail", -- set to anything other than "thumbnail" to disable client previews
|
||||
|
||||
-- keybindings (the examples provided are also the default if kept unset)
|
||||
hide_window_switcher_key = "Escape", -- The key on which to close the popup
|
||||
minimize_key = "n", -- The key on which to minimize the selected client
|
||||
unminimize_key = "N", -- The key on which to unminimize all clients
|
||||
kill_client_key = "q", -- The key on which to close the selected client
|
||||
cycle_key = "Tab", -- The key on which to cycle through all clients
|
||||
previous_key = "Left", -- The key on which to select the previous client
|
||||
next_key = "Right", -- The key on which to select the next client
|
||||
vim_previous_key = "h", -- Alternative key on which to select the previous client
|
||||
vim_next_key = "l", -- Alternative key on which to select the next client
|
||||
|
||||
cycleClientsByIdx = awful.client.focus.byidx, -- The function to cycle the clients
|
||||
filterClients = awful.widget.tasklist.filter.currenttags, -- The function to filter the viewed clients
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue