Initial Commit
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 25b7e94a34ed854697d61e3cbb0a3ebd9745dbd4
|
|
@ -0,0 +1,62 @@
|
||||||
|
local filesystem = require('gears.filesystem')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
|
||||||
|
-- Thanks to jo148 on github for making rofi dpi aware!
|
||||||
|
local with_dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
local get_dpi = require('beautiful').xresources.get_dpi
|
||||||
|
local rofi_command = 'env /usr/bin/rofi -show drun -display-drun -run-command "/bin/bash -c -i \'shopt -s expand_aliases; {cmd}\'"'
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- List of apps to start by default on some actions
|
||||||
|
default = {
|
||||||
|
terminal = 'env alacritty',
|
||||||
|
rofi = rofi_command,
|
||||||
|
lock = 'i3lock -c 000000',
|
||||||
|
quake = 'alacritty',
|
||||||
|
screenshot = 'flameshot full -p ~/Pictures',
|
||||||
|
region_screenshot = 'flameshot gui -p ~/Pictures',
|
||||||
|
delayed_screenshot = 'flameshot gui -p ~/Pictures',
|
||||||
|
|
||||||
|
-- Editing these also edits the default program
|
||||||
|
-- associated with each tag/workspace
|
||||||
|
browser = 'env brave',
|
||||||
|
editor = 'code', -- gui text editor
|
||||||
|
social = 'telegram-desktop',
|
||||||
|
game = rofi_command,
|
||||||
|
files = 'nautilus',
|
||||||
|
music = 'clementine',
|
||||||
|
video = 'vlc',
|
||||||
|
appmng = 'alacritty -e htop',
|
||||||
|
vmapp = 'virtualbox',
|
||||||
|
power_command = 'i3lock-fancy',
|
||||||
|
audiomng = 'pavucontrol',
|
||||||
|
obs = 'obs',
|
||||||
|
},
|
||||||
|
-- List of apps to start once on start-up
|
||||||
|
run_on_start_up = {
|
||||||
|
-- Add applications that need to be killed between reloads
|
||||||
|
-- to avoid multipled instances, inside the autostart script
|
||||||
|
'~/.config/awesome/configuration/autostart', -- Spawn "dirty" apps that can linger between sessions
|
||||||
|
--'compton',
|
||||||
|
'picom --config ' .. filesystem.get_configuration_dir() .. '/configuration/picom.conf',
|
||||||
|
'nitrogen --restore',
|
||||||
|
'nm-applet --indicator', -- wifi
|
||||||
|
'xfce4-power-manager', -- Power manager
|
||||||
|
'pamac-tray',
|
||||||
|
-- 'ibus-daemon --xim --daemonize', -- Ibus daemon for keyboard
|
||||||
|
'scream-start', -- scream audio sink
|
||||||
|
-- 'flameshot', -- screenshots
|
||||||
|
-- 'numlockx on', -- enable numlock
|
||||||
|
'/usr/lib/xfce-polkit/xfce-polkit & eval $(gnome-keyring-daemon -s --components=pkcs11,secrets,ssh,gpg)', -- credential manager
|
||||||
|
'blueman-tray', -- bluetooth tray
|
||||||
|
--'copyq',
|
||||||
|
'dropbox',
|
||||||
|
'megasync',
|
||||||
|
'~/.config/awesome/configuration/awspawn', -- Spawn "dirty" apps that can linger between sessions
|
||||||
|
-- '/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 &")',
|
||||||
|
'keepassxc',
|
||||||
|
'kdeconnect-indicator',
|
||||||
|
'planner',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/bash
|
||||||
|
## This configuration file is meant for applications that
|
||||||
|
# still run in the background when a reload is triggered
|
||||||
|
# for awesome, this script just kills the running instance
|
||||||
|
# and starts a new one.
|
||||||
|
# Only add applications/scripts without parameters here
|
||||||
|
# (if you want to apply parameters then use a script file!)
|
||||||
|
|
||||||
|
# List of applications to run
|
||||||
|
# the script $HOME/.config/awesomestart
|
||||||
|
# is intended to be a copy of this file
|
||||||
|
# to allow out of tree autostart programs
|
||||||
|
APPS=(
|
||||||
|
# keepassxc
|
||||||
|
# kdeconnect-indicator
|
||||||
|
radeon-profile
|
||||||
|
$HOME/.config/awesomestart
|
||||||
|
)
|
||||||
|
# Some applications start child applications that need to be killed on reload
|
||||||
|
KILL=(
|
||||||
|
synergyc
|
||||||
|
nextcloud
|
||||||
|
)
|
||||||
|
# Some applications need to be started without GUI
|
||||||
|
SILENT=(
|
||||||
|
gnome-clocks
|
||||||
|
)
|
||||||
|
|
||||||
|
#Kill the polkit
|
||||||
|
killall xfce-polkit
|
||||||
|
|
||||||
|
# First kill lingering apps
|
||||||
|
for app in "${APPS[@]}"
|
||||||
|
do
|
||||||
|
kill -9 $(pidof $app)
|
||||||
|
done
|
||||||
|
for app in "${KILL[@]}"
|
||||||
|
do
|
||||||
|
kill -9 $(pidof $app)
|
||||||
|
done
|
||||||
|
|
||||||
|
# Start new instances
|
||||||
|
for app in "${APPS[@]}"
|
||||||
|
do
|
||||||
|
env $app ${@:2} &
|
||||||
|
done
|
||||||
|
|
||||||
|
# Run silent apps
|
||||||
|
Xvfb :99 &
|
||||||
|
for silentapp in "${SILENT[@]}"
|
||||||
|
do
|
||||||
|
DISPLAY=:99 $silentapp &
|
||||||
|
done
|
|
@ -0,0 +1,13 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
|
||||||
|
local modkey = require('configuration.keys.mod').modKey
|
||||||
|
|
||||||
|
return awful.util.table.join(awful.button({}, 1, function(c)
|
||||||
|
_G.client.focus = c
|
||||||
|
c:raise()
|
||||||
|
end), awful.button({modkey}, 1, awful.mouse.client.move), awful.button({modkey, 'Shift'}, 1, awful.mouse.client.resize),
|
||||||
|
awful.button({modkey}, 4, function()
|
||||||
|
awful.layout.inc(1)
|
||||||
|
end), awful.button({modkey}, 5, function()
|
||||||
|
awful.layout.inc(-1)
|
||||||
|
end))
|
|
@ -0,0 +1 @@
|
||||||
|
require('configuration.client.rules')
|
|
@ -0,0 +1,27 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
require('awful.autofocus')
|
||||||
|
local modkey = require('configuration.keys.mod').modKey
|
||||||
|
local altkey = require('configuration.keys.mod').altKey
|
||||||
|
|
||||||
|
local clientKeys =
|
||||||
|
awful.util.table.join(
|
||||||
|
awful.key(
|
||||||
|
{modkey},
|
||||||
|
'f',
|
||||||
|
function(c)
|
||||||
|
c.fullscreen = not c.fullscreen
|
||||||
|
c:raise()
|
||||||
|
end,
|
||||||
|
{description = 'toggle fullscreen', group = 'client'}
|
||||||
|
),
|
||||||
|
awful.key(
|
||||||
|
{modkey},
|
||||||
|
'q',
|
||||||
|
function(c)
|
||||||
|
c:kill()
|
||||||
|
end,
|
||||||
|
{description = 'close', group = 'client'}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return clientKeys
|
|
@ -0,0 +1,74 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local gears = require('gears')
|
||||||
|
local client_keys = require('configuration.client.keys')
|
||||||
|
local client_buttons = require('configuration.client.buttons')
|
||||||
|
|
||||||
|
-- Rules
|
||||||
|
awful.rules.rules = {{
|
||||||
|
rule = {},
|
||||||
|
properties = {
|
||||||
|
focus = awful.client.focus.filter,
|
||||||
|
raise = true,
|
||||||
|
keys = client_keys,
|
||||||
|
buttons = client_buttons,
|
||||||
|
screen = awful.screen.preferred,
|
||||||
|
placement = awful.placement.no_offscreen,
|
||||||
|
floating = false,
|
||||||
|
maximized = false,
|
||||||
|
above = false,
|
||||||
|
below = false,
|
||||||
|
ontop = false,
|
||||||
|
sticky = false,
|
||||||
|
maximized_horizontal = false,
|
||||||
|
maximized_vertical = false
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
rule_any = {
|
||||||
|
type = {'dialog'},
|
||||||
|
class = {'Wicd-client.py', 'calendar.google.com'}
|
||||||
|
},
|
||||||
|
properties = {
|
||||||
|
placement = awful.placement.centered,
|
||||||
|
ontop = true,
|
||||||
|
floating = true,
|
||||||
|
drawBackdrop = true,
|
||||||
|
shape = function()
|
||||||
|
return function(cr, w, h)
|
||||||
|
gears.shape.rounded_rect(cr, w, h, 8)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
skip_decoration = true
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
rule_any = {
|
||||||
|
type = {'modal'}
|
||||||
|
},
|
||||||
|
properties = {
|
||||||
|
titlebars_enabled = true,
|
||||||
|
floating = true,
|
||||||
|
above = true,
|
||||||
|
skip_decoration = true,
|
||||||
|
placement = awful.placement.centered
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
rule_any = {
|
||||||
|
type = {'utility'}
|
||||||
|
},
|
||||||
|
properties = {
|
||||||
|
titlebars_enabled = false,
|
||||||
|
floating = true,
|
||||||
|
skip_decoration = true,
|
||||||
|
placement = awful.placement.centered
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
rule_any = {
|
||||||
|
type = {'splash'},
|
||||||
|
name = {'Discord Updater'}
|
||||||
|
},
|
||||||
|
properties = {
|
||||||
|
floating = true,
|
||||||
|
above = true,
|
||||||
|
skip_decoration = true,
|
||||||
|
placement = awful.placement.centered
|
||||||
|
}
|
||||||
|
}}
|
|
@ -0,0 +1,4 @@
|
||||||
|
return {
|
||||||
|
keys = require('configuration.keys'),
|
||||||
|
apps = require('configuration.apps')
|
||||||
|
}
|
|
@ -0,0 +1,274 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
require('awful.autofocus')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local hotkeys_popup = require('awful.hotkeys_popup').widget
|
||||||
|
|
||||||
|
local modkey = require('configuration.keys.mod').modKey
|
||||||
|
local altkey = require('configuration.keys.mod').altKey
|
||||||
|
local apps = require('configuration.apps')
|
||||||
|
|
||||||
|
function poweroff_command()
|
||||||
|
awful.spawn.with_shell('poweroff')
|
||||||
|
awful.keygrabber.stop(_G.exit_screen_grabber)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Key bindings
|
||||||
|
local globalKeys = awful.util.table.join( -- Hotkeys
|
||||||
|
awful.key({modkey}, 'F1', hotkeys_popup.show_help,
|
||||||
|
{description = 'show help', group = 'awesome'}), -- Tag browsing
|
||||||
|
awful.key({modkey}, 'w', awful.tag.viewprev,
|
||||||
|
{description = 'view previous', group = 'tag'}),
|
||||||
|
awful.key({modkey}, 's', awful.tag.viewnext,
|
||||||
|
{description = 'view next', group = 'tag'}),
|
||||||
|
awful.key({altkey, 'Control'}, 'Left', awful.tag.viewprev,
|
||||||
|
{description = 'view previous', group = 'tag'}),
|
||||||
|
awful.key({altkey, 'Control'}, 'Right', awful.tag.viewnext,
|
||||||
|
{description = 'view next', group = 'tag'}),
|
||||||
|
awful.key({modkey}, 'Escape', awful.tag.history.restore,
|
||||||
|
{description = 'go back', group = 'tag'}), -- Default client focus
|
||||||
|
awful.key({modkey}, 'r', function() _G.awesome.spawn(apps.default.rofi) end,
|
||||||
|
{description = 'show rofi menu', group = 'awesome'}),
|
||||||
|
awful.key({modkey}, 'd', function()
|
||||||
|
local flag = false
|
||||||
|
for _, c in ipairs(mouse.screen.selected_tag:clients()) do
|
||||||
|
if c.minimized == true then flag = true end
|
||||||
|
c.minimized = true
|
||||||
|
end
|
||||||
|
for _, c in ipairs(mouse.screen.selected_tag:clients()) do
|
||||||
|
if flag == true then c.minimized = false end
|
||||||
|
end
|
||||||
|
end, {description = 'minimize all clients', group = 'awesome'}),
|
||||||
|
awful.key({modkey}, 'u', awful.client.urgent.jumpto,
|
||||||
|
{description = 'jump to urgent client', group = 'client'}),
|
||||||
|
awful.key({modkey}, 'Tab', function()
|
||||||
|
-- awful.client.focus.history.previous()
|
||||||
|
awful.client.focus.byidx(1)
|
||||||
|
if _G.client.focus then _G.client.focus:raise() end
|
||||||
|
end, {description = 'Switch to next window', group = 'client'}),
|
||||||
|
awful.key({modkey, 'Shift'}, 'Tab', function()
|
||||||
|
-- awful.client.focus.history.previous()
|
||||||
|
awful.client.focus.byidx(-1)
|
||||||
|
if _G.client.focus then _G.client.focus:raise() end
|
||||||
|
end, {description = 'Switch to previous window', group = 'client'}),
|
||||||
|
-- Programms
|
||||||
|
awful.key({modkey}, 'l', function() awful.spawn(apps.default.lock) end,
|
||||||
|
{description = 'Lock the screen', group = 'awesome'}),
|
||||||
|
awful.key({modkey, 'Shift'}, 'z', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.delayed_screenshot)
|
||||||
|
end, {
|
||||||
|
description = 'Mark an area and screenshot it (clipboard)',
|
||||||
|
group = 'screenshots (clipboard)'
|
||||||
|
}),
|
||||||
|
--[[ awful.key({modkey}, 'z', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.screenshot)
|
||||||
|
end, {
|
||||||
|
description = 'Take a screenshot of your active monitor and copy it to clipboard',
|
||||||
|
group = 'screenshots (clipboard)'
|
||||||
|
}), awful.key({'Control'}, 'Print', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.region_screenshot)
|
||||||
|
end, {
|
||||||
|
description = 'Mark an area and screenshot it to your clipboard',
|
||||||
|
group = 'screenshots (clipboard)'
|
||||||
|
}),]]
|
||||||
|
awful.key({modkey}, 'c', function() awful.util.spawn(apps.default.editor) end,
|
||||||
|
{description = 'open a text/code editor', group = 'launcher'}),
|
||||||
|
awful.key({modkey}, 'b', function() awful.util.spawn(apps.default.browser) end,
|
||||||
|
{description = 'open a browser', group = 'launcher'}),
|
||||||
|
-- Open private browser/brave
|
||||||
|
--[[awful.key({modkey}, 'b',
|
||||||
|
function() awful.util.spawn_with_shell('firefox') end,
|
||||||
|
{description = 'Open Firefox', group = 'launcher'}),
|
||||||
|
--]]
|
||||||
|
awful.key({modkey, 'Shift'}, 'e', function()
|
||||||
|
awful.util.spawn(apps.default.files)
|
||||||
|
end, {
|
||||||
|
description = 'open a file explorer',
|
||||||
|
group = 'launcher'
|
||||||
|
}),
|
||||||
|
awful.key({modkey, 'Shift'}, 'a', function()
|
||||||
|
awful.util.spawn(apps.default.audiomng)
|
||||||
|
end, {
|
||||||
|
description = 'open a pavucontrol window',
|
||||||
|
group = 'launcher'
|
||||||
|
}),
|
||||||
|
awful.key({modkey, 'Shift'}, 'h', function()
|
||||||
|
awful.util.spawn(apps.default.appmng)
|
||||||
|
end, {
|
||||||
|
description = 'open a process manager',
|
||||||
|
group = 'launcher'
|
||||||
|
}),
|
||||||
|
awful.key({modkey, 'Shift'}, 's', function()
|
||||||
|
awful.util.spawn(apps.default.obs)
|
||||||
|
end, {
|
||||||
|
description = 'open obs',
|
||||||
|
group = 'launcher'
|
||||||
|
}),
|
||||||
|
-- Standard program
|
||||||
|
awful.key({modkey}, 'x',
|
||||||
|
function() awful.util.spawn_with_shell(apps.default.terminal) end,
|
||||||
|
{description = 'open a terminal', group = 'launcher'}),
|
||||||
|
awful.key({modkey, 'Control'}, 'r', _G.awesome.restart,
|
||||||
|
{description = 'reload awesome', group = 'awesome'}),
|
||||||
|
awful.key({modkey, 'Control'}, 'q', _G.awesome.quit,
|
||||||
|
{description = 'quit awesome', group = 'awesome'}),
|
||||||
|
awful.key({modkey}, 'm', function() _G.dashboard_show() end,
|
||||||
|
{description = 'toggle main menu', group = 'awesome'}),
|
||||||
|
awful.key({modkey, 'Shift'}, 'p', function() _G.exit_screen_show() end,
|
||||||
|
{description = 'end session menu', group = 'awesome'}),
|
||||||
|
awful.key({altkey, 'Shift'}, 'Right', function() awful.tag.incmwfact(0.05) end,
|
||||||
|
{description = 'increase master width factor', group = 'layout'}),
|
||||||
|
awful.key({altkey, 'Shift'}, 'Left', function() awful.tag.incmwfact(-0.05) end,
|
||||||
|
{description = 'decrease master width factor', group = 'layout'}),
|
||||||
|
awful.key({altkey, 'Shift'}, 'Down', function() awful.client.incwfact(0.05) end,
|
||||||
|
{description = 'decrease master height factor', group = 'layout'}),
|
||||||
|
awful.key({altkey, 'Shift'}, 'Up', function() awful.client.incwfact(-0.05) end,
|
||||||
|
{description = 'increase master height factor', group = 'layout'}),
|
||||||
|
awful.key({modkey, 'Shift'}, 'Left',
|
||||||
|
function() awful.tag.incnmaster(1, nil, true) end, {
|
||||||
|
description = 'increase the number of master clients',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Shift'}, 'Right',
|
||||||
|
function() awful.tag.incnmaster(-1, nil, true) end, {
|
||||||
|
description = 'decrease the number of master clients',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'Left',
|
||||||
|
function() awful.tag.incncol(1, nil, true) end, {
|
||||||
|
description = 'increase the number of columns',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'Right',
|
||||||
|
function() awful.tag.incncol(-1, nil, true) end, {
|
||||||
|
description = 'decrease the number of columns',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey}, 'space', function() awful.layout.inc(1) end,
|
||||||
|
{description = 'select next', group = 'layout'}),
|
||||||
|
awful.key({modkey, 'Shift'}, 'space', function() awful.layout.inc(-1) end,
|
||||||
|
{description = 'select previous', group = 'layout'}),
|
||||||
|
awful.key({modkey, 'Control'}, 'n', function()
|
||||||
|
local c = awful.client.restore()
|
||||||
|
-- Focus restored client
|
||||||
|
if c then
|
||||||
|
_G.client.focus = c
|
||||||
|
c:raise()
|
||||||
|
end
|
||||||
|
end, {description = 'restore minimized', group = 'client'}),
|
||||||
|
-- Dropdown application
|
||||||
|
awful.key({modkey}, 'z', function() _G.toggle_quake() end,
|
||||||
|
{description = 'dropdown application', group = 'launcher'}),
|
||||||
|
-- Widgets popups
|
||||||
|
--[[awful.key(
|
||||||
|
{altkey},
|
||||||
|
'h',
|
||||||
|
function()
|
||||||
|
if beautiful.fs then
|
||||||
|
beautiful.fs.show(7)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
{description = 'show filesystem', group = 'widgets'}
|
||||||
|
),
|
||||||
|
awful.key(
|
||||||
|
{altkey},
|
||||||
|
'w',
|
||||||
|
function()
|
||||||
|
if beautiful.weather then
|
||||||
|
beautiful.weather.show(7)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
{description = 'show weather', group = 'widgets'}
|
||||||
|
),--]]
|
||||||
|
-- Brightness
|
||||||
|
awful.key({}, 'XF86MonBrightnessUp',
|
||||||
|
function() awful.spawn('xbacklight -inc 10') end,
|
||||||
|
{description = '+10%', group = 'hotkeys'}),
|
||||||
|
awful.key({}, 'XF86MonBrightnessDown',
|
||||||
|
function() awful.spawn('xbacklight -dec 10') end,
|
||||||
|
{description = '-10%', group = 'hotkeys'}), -- ALSA volume control
|
||||||
|
awful.key({}, 'XF86AudioRaiseVolume', function()
|
||||||
|
awful.spawn.easy_async('amixer -D pulse set Master 5%+', function()
|
||||||
|
_G.update_volume()
|
||||||
|
end)
|
||||||
|
end, {description = 'volume up', group = 'hotkeys'}),
|
||||||
|
awful.key({}, 'XF86AudioLowerVolume', function()
|
||||||
|
awful.spawn.easy_async('amixer -D pulse set Master 5%-', function()
|
||||||
|
_G.update_volume()
|
||||||
|
end)
|
||||||
|
end, {description = 'volume down', group = 'hotkeys'}),
|
||||||
|
awful.key({}, 'XF86AudioMute', function()
|
||||||
|
awful.spawn('amixer -D pulse set Master 1+ toggle')
|
||||||
|
_G.update_volume()
|
||||||
|
end, {description = 'toggle mute', group = 'hotkeys'}),
|
||||||
|
awful.key({}, 'XF86AudioNext', function()
|
||||||
|
--
|
||||||
|
end, {description = 'toggle mute', group = 'hotkeys'}),
|
||||||
|
awful.key({}, 'XF86PowerDown', function()
|
||||||
|
--
|
||||||
|
end, {description = 'toggle mute', group = 'hotkeys'}),
|
||||||
|
awful.key({}, 'XF86PowerOff', function() _G.exit_screen_show() end,
|
||||||
|
{description = 'toggle mute', group = 'hotkeys'}),
|
||||||
|
-- Screen management
|
||||||
|
awful.key({modkey}, 'o', awful.client.movetoscreen,
|
||||||
|
{description = 'move window to next screen', group = 'client'}),
|
||||||
|
-- Open default program for tag
|
||||||
|
awful.key({modkey}, 't', function()
|
||||||
|
awful.spawn(awful.screen.focused().selected_tag.defaultApp, {
|
||||||
|
tag = _G.mouse.screen.selected_tag,
|
||||||
|
placement = awful.placement.bottom_right
|
||||||
|
})
|
||||||
|
end, {description = 'open default program for tag/workspace', group = 'tag'}),
|
||||||
|
-- Custom hotkeys
|
||||||
|
-- vfio integration
|
||||||
|
awful.key({'Control', altkey}, 'space',
|
||||||
|
function() awful.util.spawn_with_shell('vm-attach attach') end),
|
||||||
|
-- Emoji typing
|
||||||
|
-- setup info at https://gist.github.com/HikariKnight/8562837d28dec3674dba027c7892e6a5
|
||||||
|
awful.key({modkey}, 'e',
|
||||||
|
function() awful.util.spawn_with_shell('emoji-toggle') end, {
|
||||||
|
description = 'Toggle the ibus unimoji engine for writing emojis',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}))
|
||||||
|
|
||||||
|
-- Bind all key numbers to tags.
|
||||||
|
-- Be careful: we use keycodes to make it works on any keyboard layout.
|
||||||
|
-- This should map on the top row of your keyboard, usually 1 to 9.
|
||||||
|
for i = 1, 9 do
|
||||||
|
-- Hack to only show tags 1 and 9 in the shortcut window (mod+s)
|
||||||
|
local descr_view, descr_toggle, descr_move, descr_toggle_focus
|
||||||
|
if i == 1 or i == 9 then
|
||||||
|
descr_view = {description = 'view tag #', group = 'tag'}
|
||||||
|
descr_toggle = {description = 'toggle tag #', group = 'tag'}
|
||||||
|
descr_move = {
|
||||||
|
description = 'move focused client to tag #',
|
||||||
|
group = 'tag'
|
||||||
|
}
|
||||||
|
descr_toggle_focus = {
|
||||||
|
description = 'toggle focused client on tag #',
|
||||||
|
group = 'tag'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
globalKeys = awful.util.table.join(globalKeys, -- View tag only.
|
||||||
|
awful.key({modkey}, '#' .. i + 9, function()
|
||||||
|
local screen = awful.screen.focused()
|
||||||
|
local tag = screen.tags[i]
|
||||||
|
if tag then tag:view_only() end
|
||||||
|
end, descr_view), -- Toggle tag display.
|
||||||
|
awful.key({modkey, 'Control'}, '#' .. i + 9, function()
|
||||||
|
local screen = awful.screen.focused()
|
||||||
|
local tag = screen.tags[i]
|
||||||
|
if tag then awful.tag.viewtoggle(tag) end
|
||||||
|
end, descr_toggle), -- Move client to tag.
|
||||||
|
awful.key({modkey, 'Shift'}, '#' .. i + 9, function()
|
||||||
|
if _G.client.focus then
|
||||||
|
local tag = _G.client.focus.screen.tags[i]
|
||||||
|
if tag then _G.client.focus:move_to_tag(tag) end
|
||||||
|
end
|
||||||
|
end, descr_move), -- Toggle tag on focused client.
|
||||||
|
awful.key({modkey, 'Control', 'Shift'}, '#' .. i + 9, function()
|
||||||
|
if _G.client.focus then
|
||||||
|
local tag = _G.client.focus.screen.tags[i]
|
||||||
|
if tag then _G.client.focus:toggle_tag(tag) end
|
||||||
|
end
|
||||||
|
end, descr_toggle_focus))
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return globalKeys
|
||||||
|
|
|
@ -0,0 +1,381 @@
|
||||||
|
require('awful.autofocus')
|
||||||
|
local awful = require('awful')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local hotkeys_popup = require('awful.hotkeys_popup').widget
|
||||||
|
local modkey = require('configuration.keys.mod').modKey
|
||||||
|
local altkey = require('configuration.keys.mod').altKey
|
||||||
|
local apps = require('configuration.apps')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
local theme = require('theme')
|
||||||
|
|
||||||
|
-- Key bindings
|
||||||
|
local globalKeys = awful.util.table.join( -- Hotkeys
|
||||||
|
awful.key({modkey}, 'h', hotkeys_popup.show_help, {
|
||||||
|
description = 'show help',
|
||||||
|
group = 'awesome'
|
||||||
|
}), awful.key({modkey}, 'F1', hotkeys_popup.show_help, {
|
||||||
|
description = 'show help',
|
||||||
|
group = 'awesome'
|
||||||
|
}), -- Tag browsing
|
||||||
|
awful.key({modkey}, 'Left', function()
|
||||||
|
awful.tag.viewprev()
|
||||||
|
_G._splash_to_current_tag()
|
||||||
|
end, {
|
||||||
|
description = 'go to previous workspace',
|
||||||
|
group = 'tag'
|
||||||
|
}), awful.key({modkey}, 'Right', function()
|
||||||
|
awful.tag.viewnext()
|
||||||
|
_G._splash_to_current_tag()
|
||||||
|
end, {
|
||||||
|
description = 'go to next workspace',
|
||||||
|
group = 'tag'
|
||||||
|
}), awful.key({modkey}, 'Escape', function()
|
||||||
|
awful.tag.history.restore()
|
||||||
|
_G._splash_to_current_tag()
|
||||||
|
end, {
|
||||||
|
description = 'go back',
|
||||||
|
group = 'tag'
|
||||||
|
}), -- Default client focus
|
||||||
|
awful.key({modkey}, 'd', function()
|
||||||
|
awful.client.focus.byidx(1)
|
||||||
|
end, {
|
||||||
|
description = 'focus next by index',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({modkey}, 'a', function()
|
||||||
|
awful.client.focus.byidx(-1)
|
||||||
|
end, {
|
||||||
|
description = 'focus previous by index',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({modkey}, 'r', function()
|
||||||
|
_G.awesome.spawn(apps.default.rofi)
|
||||||
|
end, {
|
||||||
|
description = 'show rofi menu',
|
||||||
|
group = 'awesome'
|
||||||
|
}), awful.key({modkey}, 'u', function()
|
||||||
|
awful.client.urgent.jumpto()
|
||||||
|
_G._splash_to_current_tag()
|
||||||
|
end, {
|
||||||
|
description = 'jump to urgent client',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({altkey}, 'Tab', function()
|
||||||
|
awful.client.focus.byidx(1)
|
||||||
|
if _G.client.focus then
|
||||||
|
_G.client.focus:raise()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
description = 'switch to next window',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({modkey}, 'm', function()
|
||||||
|
focus = not _G.client.focus
|
||||||
|
if not focus then
|
||||||
|
_G.client.focus.minimized = true
|
||||||
|
else
|
||||||
|
for _, c in ipairs(mouse.screen.selected_tag:clients()) do
|
||||||
|
c.minimized = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
description = 'minimize window in focus / unminimize all',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'Tab', function()
|
||||||
|
awful.client.focus.byidx(-1)
|
||||||
|
if _G.client.focus then
|
||||||
|
_G.client.focus:raise()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
description = 'switch to previous window',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({modkey}, 'l', function()
|
||||||
|
awful.spawn(apps.default.lock)
|
||||||
|
end, {
|
||||||
|
description = 'lock the screen',
|
||||||
|
group = 'awesome'
|
||||||
|
}), awful.key({'Control', 'Shift'}, 'Print', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.delayed_screenshot)
|
||||||
|
end, {
|
||||||
|
description = 'mark an area and screenshot it (clipboard)',
|
||||||
|
group = 'screenshots (clipboard)'
|
||||||
|
}), awful.key({altkey}, 'Print', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.screenshot)
|
||||||
|
end, {
|
||||||
|
description = 'take a screenshot of your active monitor and copy it to clipboard',
|
||||||
|
group = 'screenshots (clipboard)'
|
||||||
|
}), awful.key({'Control'}, 'Print', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.region_screenshot)
|
||||||
|
end, {
|
||||||
|
description = 'mark an area and screenshot it to your clipboard',
|
||||||
|
group = 'screenshots (clipboard)'
|
||||||
|
}), awful.key({modkey}, 'c', function()
|
||||||
|
awful.util.spawn(apps.default.editor)
|
||||||
|
end, {
|
||||||
|
description = 'open a text/code editor',
|
||||||
|
group = 'launcher'
|
||||||
|
}), awful.key({modkey}, 'b', function()
|
||||||
|
awful.util.spawn(apps.default.browser)
|
||||||
|
end, {
|
||||||
|
description = 'open a browser',
|
||||||
|
group = 'launcher'
|
||||||
|
}), awful.key({modkey}, 'Return', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.terminal)
|
||||||
|
end, {
|
||||||
|
description = 'open a terminal',
|
||||||
|
group = 'launcher'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'r', _G.awesome.restart, {
|
||||||
|
description = 'reload awesome',
|
||||||
|
group = 'awesome'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'q', _G.awesome.quit, {
|
||||||
|
description = 'quit awesome',
|
||||||
|
group = 'awesome'
|
||||||
|
}), awful.key({modkey, 'Shift'}, 'g', function(t)
|
||||||
|
t = t or awful.screen.focused().selected_tag
|
||||||
|
local current_gap = t.gap
|
||||||
|
local new_gap
|
||||||
|
if current_gap == 0 then
|
||||||
|
new_gap = beautiful.gaps
|
||||||
|
else
|
||||||
|
new_gap = 0
|
||||||
|
end
|
||||||
|
t.gap = new_gap
|
||||||
|
end, {
|
||||||
|
description = 'toggle gaps',
|
||||||
|
group = 'awesome'
|
||||||
|
}), awful.key({modkey}, 'p', function()
|
||||||
|
awful.util.spawn_with_shell(apps.default.power_command)
|
||||||
|
end, {
|
||||||
|
description = 'end session menu',
|
||||||
|
group = 'awesome'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'Right', function()
|
||||||
|
awful.tag.incmwfact(0.05)
|
||||||
|
end, {
|
||||||
|
description = 'increase master width factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'Left', function()
|
||||||
|
awful.tag.incmwfact(-0.05)
|
||||||
|
end, {
|
||||||
|
description = 'decrease master width factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'Down', function()
|
||||||
|
awful.client.incwfact(0.05)
|
||||||
|
end, {
|
||||||
|
description = 'decrease master height factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'Up', function()
|
||||||
|
awful.client.incwfact(-0.05)
|
||||||
|
end, {
|
||||||
|
description = 'increase master height factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Shift'}, 'Left', function()
|
||||||
|
awful.tag.incnmaster(1, nil, true)
|
||||||
|
end, {
|
||||||
|
description = 'increase the number of master clients',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Shift'}, 'Right', function()
|
||||||
|
awful.tag.incnmaster(-1, nil, true)
|
||||||
|
end, {
|
||||||
|
description = 'decrease the number of master clients',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'Left', function()
|
||||||
|
awful.tag.incncol(1, nil, true)
|
||||||
|
end, {
|
||||||
|
description = 'increase the number of columns',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'Right', 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 layout',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Shift'}, 'space', function()
|
||||||
|
awful.layout.inc(-1)
|
||||||
|
end, {
|
||||||
|
description = 'select previous layout',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'l', function()
|
||||||
|
awful.tag.incmwfact(0.05)
|
||||||
|
end, {
|
||||||
|
description = 'increase master width factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'h', function()
|
||||||
|
awful.tag.incmwfact(-0.05)
|
||||||
|
end, {
|
||||||
|
description = 'decrease master width factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'j', function()
|
||||||
|
awful.client.incwfact(0.05)
|
||||||
|
end, {
|
||||||
|
description = 'decrease master height factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({altkey, 'Shift'}, 'k', function()
|
||||||
|
awful.client.incwfact(-0.05)
|
||||||
|
end, {
|
||||||
|
description = 'increase master height factor',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Shift'}, 'h', function()
|
||||||
|
awful.tag.incnmaster(1, nil, true)
|
||||||
|
end, {
|
||||||
|
description = 'increase the number of master clients',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Shift'}, 'l', function()
|
||||||
|
awful.tag.incnmaster(-1, nil, true)
|
||||||
|
end, {
|
||||||
|
description = 'decrease the number of master clients',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'h', function()
|
||||||
|
awful.tag.incncol(1, nil, true)
|
||||||
|
end, {
|
||||||
|
description = 'increase the number of columns',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'l', function()
|
||||||
|
awful.tag.incncol(-1, nil, true)
|
||||||
|
end, {
|
||||||
|
description = 'decrease the number of columns',
|
||||||
|
group = 'layout'
|
||||||
|
}), awful.key({modkey, 'Control'}, 'n', function()
|
||||||
|
local c = awful.client.restore()
|
||||||
|
-- Focus restored client
|
||||||
|
if c then
|
||||||
|
_G.client.focus = c
|
||||||
|
c:raise()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
description = 'restore minimized',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({modkey}, 'k', function()
|
||||||
|
_G.toggle_splash()
|
||||||
|
end, {
|
||||||
|
description = 'toggle splash terminal',
|
||||||
|
group = 'launcher'
|
||||||
|
}), awful.key({modkey}, 'j', function()
|
||||||
|
_G.toggle_splash_height()
|
||||||
|
end, {
|
||||||
|
description = 'toggle splash terminal height',
|
||||||
|
group = 'launcher'
|
||||||
|
}), awful.key({}, 'XF86MonBrightnessUp', function()
|
||||||
|
awful.spawn('xbacklight -inc 10')
|
||||||
|
end, {
|
||||||
|
description = '+10%',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), awful.key({}, 'XF86MonBrightnessDown', function()
|
||||||
|
awful.spawn('xbacklight -dec 10')
|
||||||
|
end, {
|
||||||
|
description = '-10%',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), -- ALSA volume control
|
||||||
|
awful.key({altkey}, 'k', function()
|
||||||
|
awful.spawn.easy_async('amixer -D pulse sset Master 5%+', function()
|
||||||
|
_G.update_volume()
|
||||||
|
end)
|
||||||
|
end, {
|
||||||
|
description = 'volume up',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), awful.key({}, 'XF86AudioRaiseVolume', function()
|
||||||
|
awful.spawn.easy_async('amixer -D pulse sset Master 5%+', function()
|
||||||
|
_G.update_volume()
|
||||||
|
end)
|
||||||
|
end, {
|
||||||
|
description = 'volume up',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), awful.key({}, 'XF86AudioLowerVolume', function()
|
||||||
|
awful.spawn.easy_async('amixer -D pulse sset Master 5%-', function()
|
||||||
|
_G.update_volume()
|
||||||
|
end)
|
||||||
|
end, {
|
||||||
|
description = 'volume down',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), awful.key({altkey}, 'j', function()
|
||||||
|
awful.spawn.easy_async('amixer -D pulse sset Master 5%-', function()
|
||||||
|
_G.update_volume()
|
||||||
|
end)
|
||||||
|
end, {
|
||||||
|
description = 'volume down',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), awful.key({altkey}, 'm', function()
|
||||||
|
awful.spawn('amixer -D pulse set Master 1+ toggle')
|
||||||
|
_G.update_volume()
|
||||||
|
end, {
|
||||||
|
description = 'toggle mute',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), awful.key({}, 'XF86AudioMute', function()
|
||||||
|
awful.spawn('amixer -D pulse set Master 1+ toggle')
|
||||||
|
_G.update_volume()
|
||||||
|
end, {
|
||||||
|
description = 'toggle mute',
|
||||||
|
group = 'hotkeys'
|
||||||
|
}), awful.key({modkey}, 'o', awful.client.movetoscreen, {
|
||||||
|
description = 'move window to next screen',
|
||||||
|
group = 'client'
|
||||||
|
}), awful.key({modkey}, 'n', function()
|
||||||
|
awful.spawn(awful.screen.focused().selected_tag.defaultApp, {
|
||||||
|
tag = _G.mouse.screen.selected_tag,
|
||||||
|
placement = awful.placement.bottom_right
|
||||||
|
})
|
||||||
|
end, {
|
||||||
|
description = 'open default program for tag/workspace',
|
||||||
|
group = 'tag'
|
||||||
|
}), awful.key({'Control', altkey}, 'space', function()
|
||||||
|
awful.util.spawn_with_shell('vm-attach attach')
|
||||||
|
end))
|
||||||
|
|
||||||
|
-- Bind all key numbers to tags.
|
||||||
|
-- Be careful: we use keycodes to make it works on any keyboard layout.
|
||||||
|
-- This should map on the top row of your keyboard, usually 1 to 9.
|
||||||
|
for i = 1, 9 do
|
||||||
|
-- Hack to only show tags 1 and 9 in the shortcut window (mod+s)
|
||||||
|
local descr_view, descr_toggle, descr_move, descr_toggle_focus
|
||||||
|
if i == 1 or i == 9 then
|
||||||
|
descr_view = {
|
||||||
|
description = 'view tag #',
|
||||||
|
group = 'tag'
|
||||||
|
}
|
||||||
|
descr_toggle = {
|
||||||
|
description = 'toggle tag #',
|
||||||
|
group = 'tag'
|
||||||
|
}
|
||||||
|
descr_move = {
|
||||||
|
description = 'move focused client to tag #',
|
||||||
|
group = 'tag'
|
||||||
|
}
|
||||||
|
descr_toggle_focus = {
|
||||||
|
description = 'toggle focused client on tag #',
|
||||||
|
group = 'tag'
|
||||||
|
}
|
||||||
|
end
|
||||||
|
globalKeys = awful.util.table.join(globalKeys, -- View tag only.
|
||||||
|
awful.key({modkey}, '#' .. i + 9, function()
|
||||||
|
local screen = awful.screen.focused()
|
||||||
|
local tag = screen.tags[i]
|
||||||
|
if tag then
|
||||||
|
tag:view_only()
|
||||||
|
_G._splash_to_current_tag()
|
||||||
|
end
|
||||||
|
end, descr_view), -- Toggle tag display.
|
||||||
|
awful.key({modkey, 'Control'}, '#' .. i + 9, function()
|
||||||
|
local screen = awful.screen.focused()
|
||||||
|
local tag = screen.tags[i]
|
||||||
|
if tag then
|
||||||
|
awful.tag.viewtoggle(tag)
|
||||||
|
end
|
||||||
|
end, descr_toggle), -- Move client to tag.
|
||||||
|
awful.key({modkey, 'Shift'}, '#' .. i + 9, function()
|
||||||
|
if _G.client.focus then
|
||||||
|
local tag = _G.client.focus.screen.tags[i]
|
||||||
|
if tag then
|
||||||
|
_G.client.focus:move_to_tag(tag)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end, descr_move), -- Toggle tag on focused client.
|
||||||
|
awful.key({modkey, 'Control', 'Shift'}, '#' .. i + 9, function()
|
||||||
|
if _G.client.focus then
|
||||||
|
local tag = _G.client.focus.screen.tags[i]
|
||||||
|
if tag then
|
||||||
|
_G.client.focus:toggle_tag(tag)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end, descr_toggle_focus))
|
||||||
|
end
|
||||||
|
|
||||||
|
return globalKeys
|
|
@ -0,0 +1,4 @@
|
||||||
|
return {
|
||||||
|
mod = require('configuration.keys.mod'),
|
||||||
|
global = require('configuration.keys.global')
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
return {
|
||||||
|
modKey = 'Mod4',
|
||||||
|
altKey = 'Mod1'
|
||||||
|
}
|
|
@ -0,0 +1,422 @@
|
||||||
|
#################################
|
||||||
|
# Shadows #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Enabled client-side shadows on windows. Note desktop windows
|
||||||
|
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
|
||||||
|
# unless explicitly requested using the wintypes option.
|
||||||
|
#
|
||||||
|
# shadow = false
|
||||||
|
shadow = true;
|
||||||
|
|
||||||
|
# The blur radius for shadows, in pixels. (defaults to 12)
|
||||||
|
# shadow-radius = 12
|
||||||
|
shadow-radius = 7;
|
||||||
|
|
||||||
|
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
|
||||||
|
# shadow-opacity = .75
|
||||||
|
|
||||||
|
# The left offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-x = -15
|
||||||
|
shadow-offset-x = -7;
|
||||||
|
|
||||||
|
# The top offset for shadows, in pixels. (defaults to -15)
|
||||||
|
# shadow-offset-y = -15
|
||||||
|
shadow-offset-y = -7;
|
||||||
|
|
||||||
|
# Avoid drawing shadows on dock/panel windows. This option is deprecated,
|
||||||
|
# you should use the *wintypes* option in your config file instead.
|
||||||
|
#
|
||||||
|
# no-dock-shadow = false
|
||||||
|
|
||||||
|
# Don't draw shadows on drag-and-drop windows. This option is deprecated,
|
||||||
|
# you should use the *wintypes* option in your config file instead.
|
||||||
|
#
|
||||||
|
# no-dnd-shadow = false
|
||||||
|
|
||||||
|
# Red color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-red = 0
|
||||||
|
|
||||||
|
# Green color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-green = 0
|
||||||
|
|
||||||
|
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
|
||||||
|
# shadow-blue = 0
|
||||||
|
|
||||||
|
# Do not paint shadows on shaped windows. Note shaped windows
|
||||||
|
# here means windows setting its shape through X Shape extension.
|
||||||
|
# Those using ARGB background is beyond our control.
|
||||||
|
# Deprecated, use
|
||||||
|
# shadow-exclude = 'bounding_shaped'
|
||||||
|
# or
|
||||||
|
# shadow-exclude = 'bounding_shaped && !rounded_corners'
|
||||||
|
# instead.
|
||||||
|
#
|
||||||
|
# shadow-ignore-shaped = ''
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should have no shadow.
|
||||||
|
#
|
||||||
|
# examples:
|
||||||
|
# shadow-exclude = "n:e:Notification";
|
||||||
|
#
|
||||||
|
# shadow-exclude = []
|
||||||
|
shadow-exclude = [
|
||||||
|
"name = 'Notification'",
|
||||||
|
"class_g = 'Conky'",
|
||||||
|
"class_g ?= 'Notify-osd'",
|
||||||
|
"class_g = 'Cairo-clock'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Specify a X geometry that describes the region in which shadow should not
|
||||||
|
# be painted in, such as a dock window region. Use
|
||||||
|
# shadow-exclude-reg = "x10+0+0"
|
||||||
|
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
|
||||||
|
#
|
||||||
|
# shadow-exclude-reg = ""
|
||||||
|
|
||||||
|
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
|
||||||
|
# xinerama-shadow-crop = false
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Fading #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Fade windows in/out when opening/closing and when opacity changes,
|
||||||
|
# unless no-fading-openclose is used.
|
||||||
|
# fading = false
|
||||||
|
fading = true
|
||||||
|
|
||||||
|
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
|
||||||
|
# fade-in-step = 0.028
|
||||||
|
fade-in-step = 0.03;
|
||||||
|
|
||||||
|
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
|
||||||
|
# fade-out-step = 0.03
|
||||||
|
fade-out-step = 0.03;
|
||||||
|
|
||||||
|
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
|
||||||
|
# fade-delta = 10
|
||||||
|
fade-delta = 5
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should not be faded.
|
||||||
|
# fade-exclude = []
|
||||||
|
|
||||||
|
# Do not fade on window open/close.
|
||||||
|
# no-fading-openclose = false
|
||||||
|
|
||||||
|
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
|
||||||
|
# no-fading-destroyed-argb = false
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Transparency / Opacity #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
|
||||||
|
# inactive-opacity = 1
|
||||||
|
inactive-opacity = 1.0;
|
||||||
|
|
||||||
|
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
|
||||||
|
# frame-opacity = 1.0
|
||||||
|
frame-opacity = 0.95;
|
||||||
|
|
||||||
|
# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
|
||||||
|
# menu-opacity = 1.0
|
||||||
|
|
||||||
|
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
|
||||||
|
# inactive-opacity-override = true
|
||||||
|
inactive-opacity-override = true;
|
||||||
|
|
||||||
|
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
|
||||||
|
active-opacity = 1.0
|
||||||
|
|
||||||
|
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
|
||||||
|
# inactive-dim = 0.0
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should always be considered focused.
|
||||||
|
# focus-exclude = []
|
||||||
|
#focus-exclude = [ "class_g = 'Termite'" ];
|
||||||
|
|
||||||
|
# Use fixed inactive dim value, instead of adjusting according to window opacity.
|
||||||
|
# inactive-dim-fixed = 1.0
|
||||||
|
|
||||||
|
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
|
||||||
|
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
|
||||||
|
# Note we don't make any guarantee about possible conflicts with other
|
||||||
|
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
|
||||||
|
# example:
|
||||||
|
# opacity-rule = [ "80:class_g = 'URxvt'" ];
|
||||||
|
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# Background-Blurring #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
|
||||||
|
# Parameters for background blurring, see the *BLUR* section for more information.
|
||||||
|
# blur-method =
|
||||||
|
# blur-size = 12
|
||||||
|
#
|
||||||
|
# blur-deviation = false
|
||||||
|
|
||||||
|
# Blur background of semi-transparent / ARGB windows.
|
||||||
|
# Bad in performance, with driver-dependent behavior.
|
||||||
|
# The name of the switch may change without prior notifications.
|
||||||
|
#
|
||||||
|
# blur-background = false
|
||||||
|
|
||||||
|
# Blur background of windows when the window frame is not opaque.
|
||||||
|
# Implies:
|
||||||
|
# blur-background
|
||||||
|
# Bad in performance, with driver-dependent behavior. The name may change.
|
||||||
|
#
|
||||||
|
# blur-background-frame = false
|
||||||
|
|
||||||
|
|
||||||
|
# Use fixed blur strength rather than adjusting according to window opacity.
|
||||||
|
# blur-background-fixed = false
|
||||||
|
|
||||||
|
|
||||||
|
# Specify the blur convolution kernel, with the following format:
|
||||||
|
# example:
|
||||||
|
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
|
||||||
|
#
|
||||||
|
# blur-kern = ''
|
||||||
|
blur-kern = "3x3box";
|
||||||
|
|
||||||
|
|
||||||
|
# Exclude conditions for background blur.
|
||||||
|
# blur-background-exclude = []
|
||||||
|
blur-background-exclude = [
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'",
|
||||||
|
"_GTK_FRAME_EXTENTS@:c"
|
||||||
|
];
|
||||||
|
|
||||||
|
#################################
|
||||||
|
# General Settings #
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
|
||||||
|
# daemon = false
|
||||||
|
|
||||||
|
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
|
||||||
|
# `xrender` is the default one.
|
||||||
|
#
|
||||||
|
# backend = 'glx'
|
||||||
|
backend = "xrender";
|
||||||
|
|
||||||
|
# Enable/disable VSync.
|
||||||
|
# vsync = false
|
||||||
|
vsync = true
|
||||||
|
|
||||||
|
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
|
||||||
|
# dbus = false
|
||||||
|
|
||||||
|
# Try to detect WM windows (a non-override-redirect window with no
|
||||||
|
# child that has 'WM_STATE') and mark them as active.
|
||||||
|
#
|
||||||
|
# mark-wmwin-focused = false
|
||||||
|
mark-wmwin-focused = true;
|
||||||
|
|
||||||
|
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
|
||||||
|
# mark-ovredir-focused = false
|
||||||
|
mark-ovredir-focused = true;
|
||||||
|
|
||||||
|
# Try to detect windows with rounded corners and don't consider them
|
||||||
|
# shaped windows. The accuracy is not very high, unfortunately.
|
||||||
|
#
|
||||||
|
# detect-rounded-corners = false
|
||||||
|
detect-rounded-corners = true;
|
||||||
|
|
||||||
|
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
|
||||||
|
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
|
||||||
|
#
|
||||||
|
# detect-client-opacity = false
|
||||||
|
detect-client-opacity = true;
|
||||||
|
|
||||||
|
# Specify refresh rate of the screen. If not specified or 0, picom will
|
||||||
|
# try detecting this with X RandR extension.
|
||||||
|
#
|
||||||
|
# refresh-rate = 60
|
||||||
|
refresh-rate = 60
|
||||||
|
|
||||||
|
# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
|
||||||
|
# boost performance. This should not be used with
|
||||||
|
# vsync drm/opengl/opengl-oml
|
||||||
|
# as they essentially does sw-opti's job already,
|
||||||
|
# unless you wish to specify a lower refresh rate than the actual value.
|
||||||
|
#
|
||||||
|
# sw-opti =
|
||||||
|
|
||||||
|
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
|
||||||
|
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
|
||||||
|
# provided that the WM supports it.
|
||||||
|
#
|
||||||
|
# use-ewmh-active-win = false
|
||||||
|
|
||||||
|
# Unredirect all windows if a full-screen opaque window is detected,
|
||||||
|
# to maximize performance for full-screen windows. Known to cause flickering
|
||||||
|
# when redirecting/unredirecting windows.
|
||||||
|
#
|
||||||
|
# unredir-if-possible = false
|
||||||
|
|
||||||
|
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
|
||||||
|
# unredir-if-possible-delay = 0
|
||||||
|
|
||||||
|
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
|
||||||
|
# unredir-if-possible-exclude = []
|
||||||
|
|
||||||
|
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
|
||||||
|
# in the same group focused at the same time.
|
||||||
|
#
|
||||||
|
# detect-transient = false
|
||||||
|
detect-transient = true
|
||||||
|
|
||||||
|
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
|
||||||
|
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
|
||||||
|
# detect-transient is enabled, too.
|
||||||
|
#
|
||||||
|
# detect-client-leader = false
|
||||||
|
detect-client-leader = true
|
||||||
|
|
||||||
|
# Resize damaged region by a specific number of pixels.
|
||||||
|
# A positive value enlarges it while a negative one shrinks it.
|
||||||
|
# If the value is positive, those additional pixels will not be actually painted
|
||||||
|
# to screen, only used in blur calculation, and such. (Due to technical limitations,
|
||||||
|
# with use-damage, those pixels will still be incorrectly painted to screen.)
|
||||||
|
# Primarily used to fix the line corruption issues of blur,
|
||||||
|
# in which case you should use the blur radius value here
|
||||||
|
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
|
||||||
|
# with a 5x5 one you use `--resize-damage 2`, and so on).
|
||||||
|
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
|
||||||
|
#
|
||||||
|
# resize-damage = 1
|
||||||
|
|
||||||
|
# Specify a list of conditions of windows that should be painted with inverted color.
|
||||||
|
# Resource-hogging, and is not well tested.
|
||||||
|
#
|
||||||
|
# invert-color-include = []
|
||||||
|
|
||||||
|
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
|
||||||
|
# Might cause incorrect opacity when rendering transparent content (but never
|
||||||
|
# practically happened) and may not work with blur-background.
|
||||||
|
# My tests show a 15% performance boost. Recommended.
|
||||||
|
#
|
||||||
|
# glx-no-stencil = false
|
||||||
|
|
||||||
|
# GLX backend: Avoid rebinding pixmap on window damage.
|
||||||
|
# Probably could improve performance on rapid window content changes,
|
||||||
|
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
|
||||||
|
# Recommended if it works.
|
||||||
|
#
|
||||||
|
# glx-no-rebind-pixmap = false
|
||||||
|
|
||||||
|
# Disable the use of damage information.
|
||||||
|
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
|
||||||
|
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
|
||||||
|
# The opposing option is use-damage
|
||||||
|
#
|
||||||
|
# no-use-damage = false
|
||||||
|
use-damage = true
|
||||||
|
|
||||||
|
# Use X Sync fence to sync clients' draw calls, to make sure all draw
|
||||||
|
# calls are finished before picom starts drawing. Needed on nvidia-drivers
|
||||||
|
# with GLX backend for some users.
|
||||||
|
#
|
||||||
|
# xrender-sync-fence = false
|
||||||
|
|
||||||
|
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
|
||||||
|
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
|
||||||
|
# in the source tree for examples.
|
||||||
|
#
|
||||||
|
# glx-fshader-win = ''
|
||||||
|
|
||||||
|
# Force all windows to be painted with blending. Useful if you
|
||||||
|
# have a glx-fshader-win that could turn opaque pixels transparent.
|
||||||
|
#
|
||||||
|
# force-win-blend = false
|
||||||
|
|
||||||
|
# Do not use EWMH to detect fullscreen windows.
|
||||||
|
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
|
||||||
|
#
|
||||||
|
# no-ewmh-fullscreen = false
|
||||||
|
|
||||||
|
# Dimming bright windows so their brightness doesn't exceed this set value.
|
||||||
|
# Brightness of a window is estimated by averaging all pixels in the window,
|
||||||
|
# so this could comes with a performance hit.
|
||||||
|
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
|
||||||
|
#
|
||||||
|
# max-brightness = 1.0
|
||||||
|
|
||||||
|
# Make transparent windows clip other windows like non-transparent windows do,
|
||||||
|
# instead of blending on top of them.
|
||||||
|
#
|
||||||
|
# transparent-clipping = false
|
||||||
|
|
||||||
|
# Set the log level. Possible values are:
|
||||||
|
# "trace", "debug", "info", "warn", "error"
|
||||||
|
# in increasing level of importance. Case doesn't matter.
|
||||||
|
# If using the "TRACE" log level, it's better to log into a file
|
||||||
|
# using *--log-file*, since it can generate a huge stream of logs.
|
||||||
|
#
|
||||||
|
# log-level = "debug"
|
||||||
|
log-level = "warn";
|
||||||
|
|
||||||
|
# Set the log file.
|
||||||
|
# If *--log-file* is never specified, logs will be written to stderr.
|
||||||
|
# Otherwise, logs will to written to the given file, though some of the early
|
||||||
|
# logs might still be written to the stderr.
|
||||||
|
# When setting this option from the config file, it is recommended to use an absolute path.
|
||||||
|
#
|
||||||
|
# log-file = '/path/to/your/log/file'
|
||||||
|
|
||||||
|
# Show all X errors (for debugging)
|
||||||
|
# show-all-xerrors = false
|
||||||
|
|
||||||
|
# Write process ID to a file.
|
||||||
|
# write-pid-path = '/path/to/your/log/file'
|
||||||
|
|
||||||
|
# Window type settings
|
||||||
|
#
|
||||||
|
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
|
||||||
|
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
|
||||||
|
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
|
||||||
|
# "tooltip", "notification", "combo", and "dnd".
|
||||||
|
#
|
||||||
|
# Following per window-type options are available: ::
|
||||||
|
#
|
||||||
|
# fade, shadow:::
|
||||||
|
# Controls window-type-specific shadow and fade settings.
|
||||||
|
#
|
||||||
|
# opacity:::
|
||||||
|
# Controls default opacity of the window type.
|
||||||
|
#
|
||||||
|
# focus:::
|
||||||
|
# Controls whether the window of this type is to be always considered focused.
|
||||||
|
# (By default, all window types except "normal" and "dialog" has this on.)
|
||||||
|
#
|
||||||
|
# full-shadow:::
|
||||||
|
# Controls whether shadow is drawn under the parts of the window that you
|
||||||
|
# normally won't be able to see. Useful when the window has parts of it
|
||||||
|
# transparent, and you want shadows in those areas.
|
||||||
|
#
|
||||||
|
# redir-ignore:::
|
||||||
|
# Controls whether this type of windows should cause screen to become
|
||||||
|
# redirected again after been unredirected. If you have unredir-if-possible
|
||||||
|
# set, and doesn't want certain window to cause unnecessary screen redirection,
|
||||||
|
# you can set this to `true`.
|
||||||
|
#
|
||||||
|
wintypes:
|
||||||
|
{
|
||||||
|
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
|
||||||
|
dock = { shadow = false; }
|
||||||
|
dnd = { shadow = false; }
|
||||||
|
popup_menu = { opacity = 1.0; }
|
||||||
|
dropdown_menu = { opacity = 1.0; }
|
||||||
|
};
|
|
@ -0,0 +1,148 @@
|
||||||
|
/**
|
||||||
|
* User: deadguy
|
||||||
|
* Copyright: deadguy
|
||||||
|
*/
|
||||||
|
|
||||||
|
configuration {
|
||||||
|
display-drun: "Activate";
|
||||||
|
display-run: "Execute";
|
||||||
|
show-icons: true;
|
||||||
|
sidebar-mode: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: rgb(0, 0, 0, 0);
|
||||||
|
text-color: rgb(255, 255, 255);
|
||||||
|
selbg: rgb(255, 255, 255, 0.5);
|
||||||
|
urgbg: rgb(255, 255, 255);
|
||||||
|
actbg: rgb(255, 255, 255, 0.05);
|
||||||
|
winbg: rgb(255, 255, 255);
|
||||||
|
|
||||||
|
selected-normal-foreground: @winbg;
|
||||||
|
normal-foreground: @text-color;
|
||||||
|
selected-normal-background: @actbg;
|
||||||
|
normal-background: @background-color;
|
||||||
|
|
||||||
|
selected-urgent-foreground: @background-color;
|
||||||
|
urgent-foreground: @text-color;
|
||||||
|
selected-urgent-background: @urgbg;
|
||||||
|
urgent-background: @background-color;
|
||||||
|
|
||||||
|
selected-active-foreground: @winbg;
|
||||||
|
active-foreground: @text-color;
|
||||||
|
selected-active-background: @actbg;
|
||||||
|
active-background: @selbg;
|
||||||
|
|
||||||
|
line-margin: 2;
|
||||||
|
line-padding: 2;
|
||||||
|
separator-style: "none";
|
||||||
|
hide-scrollbar: "true";
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
font: "FiraCode Nerd Font Mono Medium 10";
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
location: west;
|
||||||
|
anchor: west;
|
||||||
|
x-offset: 0px;
|
||||||
|
height: 100%;
|
||||||
|
width: 30%;
|
||||||
|
padding: 0%;
|
||||||
|
orientation: horizontal;
|
||||||
|
children: [mainbox];
|
||||||
|
background-color: rgb(20, 20, 20, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {
|
||||||
|
spacing: 0em;
|
||||||
|
padding: 0px;
|
||||||
|
width: 100%;
|
||||||
|
children: [ inputbar, listview ];
|
||||||
|
expand: true;
|
||||||
|
}
|
||||||
|
|
||||||
|
button { padding: 5px 2px; }
|
||||||
|
|
||||||
|
button selected {
|
||||||
|
background-color: @active-background;
|
||||||
|
text-color: @background-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
children: [ entry ];
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox-prompt-colon {
|
||||||
|
text-color: inherit;
|
||||||
|
expand: false;
|
||||||
|
margin: 0 0.3em 0em 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
spacing: 0em;
|
||||||
|
dynamic: false;
|
||||||
|
cycle: false;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
padding: 16px;
|
||||||
|
border: 0 0 0 0 solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
expand: true;
|
||||||
|
text-color: @normal-foreground;
|
||||||
|
background-color: rgb(0, 0, 0, 0);
|
||||||
|
vertical-align: 1;
|
||||||
|
padding: 12px;
|
||||||
|
font: "FiraCode Nerd Font Mono Bold 18";
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.normal {
|
||||||
|
background-color: @normal-background;
|
||||||
|
text-color: @normal-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.urgent {
|
||||||
|
background-color: @urgent-background;
|
||||||
|
text-color: @urgent-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.active {
|
||||||
|
background-color: @active-background;
|
||||||
|
text-color: @active-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.normal {
|
||||||
|
background-color: @selected-normal-background;
|
||||||
|
text-color: @selected-normal-foreground;
|
||||||
|
padding: 16px;
|
||||||
|
border: 0 0 0 0 solid;
|
||||||
|
border-color: @active-background;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.urgent {
|
||||||
|
background-color: @selected-urgent-background;
|
||||||
|
text-color: @selected-urgent-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.active {
|
||||||
|
background-color: @selected-active-background;
|
||||||
|
text-color: @selected-active-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
element alternate.normal {
|
||||||
|
background-color: @normal-background;
|
||||||
|
text-color: @normal-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
element alternate.urgent {
|
||||||
|
background-color: @urgent-background;
|
||||||
|
text-color: @urgent-foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
element alternate.active {
|
||||||
|
background-color: @active-background;
|
||||||
|
text-color: @active-foreground;
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local gears = require('gears')
|
||||||
|
local apps = require('configuration.apps')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
local tags = {
|
||||||
|
{text = 'web', type = 'web', defaultApp = apps.default.browser, screen = 1},
|
||||||
|
{text = 'term', type = 'code', defaultApp = apps.default.terminal, screen = 1},
|
||||||
|
{text = 'social', type = 'social', defaultApp = apps.default.social, screen = 1},
|
||||||
|
{text = 'video', type = 'video', defaultApp = apps.default.video, screen = 1},
|
||||||
|
{text = 'file', type = 'file', defaultApp = apps.default.files, screen = 1},
|
||||||
|
{text = 'music', type = 'music', defaultApp = apps.default.music, screen = 1},
|
||||||
|
{text = 'misc', type = 'misc', defaultApp = apps.default.vmapp, screen = 1}
|
||||||
|
}
|
||||||
|
|
||||||
|
awful.layout.layouts = {
|
||||||
|
|
||||||
|
awful.layout.suit.tile,
|
||||||
|
awful.layout.suit.floating,
|
||||||
|
-- awful.layout.suit.tile.left,
|
||||||
|
-- awful.layout.suit.tile.bottom,
|
||||||
|
-- awful.layout.suit.tile.top,
|
||||||
|
--[[ awful.layout.suit.fair,
|
||||||
|
-- awful.layout.suit.fair.horizontal,
|
||||||
|
-- awful.layout.suit.spiral,
|
||||||
|
awful.layout.suit.spiral.dwindle,
|
||||||
|
--]] awful.layout.suit.max,
|
||||||
|
-- awful.layout.suit.max.fullscreen,
|
||||||
|
-- awful.layout.suit.magnifier,
|
||||||
|
-- awful.layout.suit.corner.nw,
|
||||||
|
}
|
||||||
|
|
||||||
|
awful.screen.connect_for_each_screen(function(s)
|
||||||
|
for i, tag in pairs(tags) do
|
||||||
|
awful.tag.add(tag.text, {
|
||||||
|
icon = tag.icon,
|
||||||
|
icon_only = false,
|
||||||
|
layout = awful.layout.suit.tile,
|
||||||
|
gap = beautiful.gaps,
|
||||||
|
screen = s,
|
||||||
|
defaultApp = tag.defaultApp,
|
||||||
|
selected = i == 1
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end)
|
|
@ -0,0 +1,35 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# rofi-power
|
||||||
|
# Use rofi to call systemctl for shutdown, reboot, etc
|
||||||
|
|
||||||
|
# 2016 Oliver Kraitschy - http://okraits.de
|
||||||
|
|
||||||
|
OPTIONS="Poweroff\nExit\nReboot\nSuspend\nHibernate"
|
||||||
|
|
||||||
|
config_path=$(dirname "$0")
|
||||||
|
|
||||||
|
LAUNCHER="rofi -dmenu -i"
|
||||||
|
USE_LOCKER="true"
|
||||||
|
LOCKER="i3lock -c 000000"
|
||||||
|
|
||||||
|
option=`echo -e $OPTIONS | $LAUNCHER | awk '{print $1}' | tr -d '\r\n'`
|
||||||
|
case $option in
|
||||||
|
Exit)
|
||||||
|
kill -9 -1
|
||||||
|
;;
|
||||||
|
Reboot)
|
||||||
|
systemctl reboot
|
||||||
|
;;
|
||||||
|
Poweroff)
|
||||||
|
systemctl poweroff
|
||||||
|
;;
|
||||||
|
Suspend)
|
||||||
|
$($USE_LOCKER) && "$LOCKER"; systemctl suspend
|
||||||
|
;;
|
||||||
|
Hibernate)
|
||||||
|
$($USE_LOCKER) && "$LOCKER"; systemctl hibernate
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
if [ $1 == "--delayed" ]; then
|
||||||
|
spectacle -b -n ${@:2} -o /tmp/screenshot.png ; xclip -selection clipboard -target image/png -i /tmp/screenshot.png ; paplay /usr/share/sounds/freedesktop/stereo/camera-shutter.oga
|
||||||
|
else
|
||||||
|
spectacle -b -n $@ -o /tmp/screenshot.png ; xclip -selection clipboard -target image/png -i /tmp/screenshot.png ; paplay /usr/share/sounds/freedesktop/stereo/camera-shutter.oga
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local TaskList = require('widget.task-list')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
local BottomBar = function(s, offset)
|
||||||
|
|
||||||
|
-- BOTTOM BAR
|
||||||
|
-- =======
|
||||||
|
local panel_height = dpi(16)
|
||||||
|
local panel = wibox({
|
||||||
|
ontop = false,
|
||||||
|
screen = s,
|
||||||
|
height = panel_height,
|
||||||
|
width = s.geometry.width,
|
||||||
|
x = s.geometry.x,
|
||||||
|
y = s.geometry.height - panel_height,
|
||||||
|
stretch = false,
|
||||||
|
bg = beautiful.primary.hue_100,
|
||||||
|
fg = beautiful.fg_normal,
|
||||||
|
})
|
||||||
|
|
||||||
|
panel:struts({
|
||||||
|
bottom = panel.height
|
||||||
|
})
|
||||||
|
|
||||||
|
panel:setup{
|
||||||
|
layout = wibox.layout.align.horizontal,
|
||||||
|
nil,
|
||||||
|
TaskList(s),
|
||||||
|
nil,
|
||||||
|
}
|
||||||
|
|
||||||
|
return panel
|
||||||
|
end
|
||||||
|
|
||||||
|
return BottomBar
|
|
@ -0,0 +1,44 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local top_bar = require('layout.top-bar')
|
||||||
|
local bottom_bar = require('layout.bottom-bar')
|
||||||
|
local left_panel = require('layout.left-panel')
|
||||||
|
|
||||||
|
local key_grabber
|
||||||
|
|
||||||
|
-- Create a wibox for each screen and add it
|
||||||
|
awful.screen.connect_for_each_screen(function(s)
|
||||||
|
if s.index == 1 then
|
||||||
|
s.top_bar = top_bar(s, true)
|
||||||
|
s.bottom_bar = bottom_bar(s, true)
|
||||||
|
else
|
||||||
|
s.top_bar = top_bar(s, false)
|
||||||
|
s.bottom_bar = bottom_bar(s, false)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Hide bars when app go fullscreen
|
||||||
|
function updateBarsVisibility()
|
||||||
|
for s in screen do
|
||||||
|
if s.selected_tag then
|
||||||
|
local fullscreen = s.selected_tag.fullscreenMode
|
||||||
|
s.top_bar.visible = not fullscreen
|
||||||
|
s.bottom_bar.visible = not fullscreen
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
_G.tag.connect_signal('property::selected', function(t)
|
||||||
|
updateBarsVisibility()
|
||||||
|
end)
|
||||||
|
|
||||||
|
_G.client.connect_signal('property::fullscreen', function(c)
|
||||||
|
c.screen.selected_tag.fullscreenMode = c.fullscreen
|
||||||
|
updateBarsVisibility()
|
||||||
|
end)
|
||||||
|
|
||||||
|
_G.client.connect_signal('unmanage', function(c)
|
||||||
|
if c.fullscreen then
|
||||||
|
c.screen.selected_tag.fullscreenMode = false
|
||||||
|
updateBarsVisibility()
|
||||||
|
end
|
||||||
|
end)
|
|
@ -0,0 +1,34 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local gears = require('gears')
|
||||||
|
local mat_icon = require('widget.material.icon')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
local icons = require('theme.icons')
|
||||||
|
local clickable_container = require('widget.material.clickable-container')
|
||||||
|
|
||||||
|
return function(screen, panel, action_bar_width)
|
||||||
|
local menu_icon = wibox.widget {
|
||||||
|
icon = icons.menu,
|
||||||
|
size = dpi(16),
|
||||||
|
widget = mat_icon
|
||||||
|
}
|
||||||
|
|
||||||
|
local home_button = wibox.widget {
|
||||||
|
wibox.widget {menu_icon, widget = clickable_container},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.primary.hue_700,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
home_button:buttons(gears.table.join(
|
||||||
|
awful.button({}, 1, nil,
|
||||||
|
function() _G.dashboard_show() end)))
|
||||||
|
|
||||||
|
return wibox.widget {
|
||||||
|
id = 'action_bar',
|
||||||
|
layout = wibox.layout.align.horizontal,
|
||||||
|
forced_width = action_bar_width,
|
||||||
|
{layout = wibox.layout.fixed.horizontal, home_button}
|
||||||
|
}
|
||||||
|
end
|
|
@ -0,0 +1,18 @@
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local mat_list_item = require('widget.material.list-item')
|
||||||
|
|
||||||
|
return wibox.widget {
|
||||||
|
-- wibox.widget {
|
||||||
|
-- wibox.widget {
|
||||||
|
-- text = 'Hardware monitor',
|
||||||
|
-- font = 'Roboto medium 12',
|
||||||
|
-- widget = wibox.widget.textbox
|
||||||
|
-- },
|
||||||
|
-- widget = mat_list_item
|
||||||
|
-- },
|
||||||
|
require('widget.cpu.cpu-meter'),
|
||||||
|
require('widget.ram.ram-meter'),
|
||||||
|
require('widget.temperature.temperature-meter'),
|
||||||
|
require('widget.harddrive.harddrive-meter'),
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local mat_list_item = require('widget.material.list-item')
|
||||||
|
local mat_icon = require('widget.material.icon')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
local icons = require('theme.icons')
|
||||||
|
|
||||||
|
return function(_, panel)
|
||||||
|
local search_button = wibox.widget {
|
||||||
|
wibox.widget {icon = icons.search, size = dpi(24), widget = mat_icon},
|
||||||
|
wibox.widget {
|
||||||
|
text = 'Search Applications',
|
||||||
|
font = 'Roboto medium 13',
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
clickable = true,
|
||||||
|
widget = mat_list_item
|
||||||
|
}
|
||||||
|
|
||||||
|
search_button:buttons(awful.util.table.join(
|
||||||
|
awful.button({}, 1,
|
||||||
|
function() panel:run_rofi() end)))
|
||||||
|
|
||||||
|
local exit_button = wibox.widget {
|
||||||
|
wibox.widget {icon = icons.logout, size = dpi(24), widget = mat_icon},
|
||||||
|
wibox.widget {
|
||||||
|
text = 'End work session',
|
||||||
|
font = 'Roboto medium 13',
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
clickable = true,
|
||||||
|
divider = true,
|
||||||
|
widget = mat_list_item
|
||||||
|
}
|
||||||
|
|
||||||
|
exit_button:buttons(awful.util.table.join(
|
||||||
|
awful.button({}, 1, function()
|
||||||
|
panel:toggle()
|
||||||
|
_G.exit_screen_show()
|
||||||
|
end)))
|
||||||
|
|
||||||
|
return wibox.widget {
|
||||||
|
layout = wibox.layout.align.vertical,
|
||||||
|
{
|
||||||
|
layout = wibox.layout.fixed.vertical,
|
||||||
|
{
|
||||||
|
search_button,
|
||||||
|
bg = beautiful.primary.hue_800,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
wibox.widget {
|
||||||
|
orientation = 'horizontal',
|
||||||
|
forced_height = 0.8,
|
||||||
|
opacity = 0.3,
|
||||||
|
widget = wibox.widget.separator
|
||||||
|
},
|
||||||
|
require('layout.left-panel.dashboard.quick-settings'),
|
||||||
|
require('layout.left-panel.dashboard.hardware-monitor')
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
{
|
||||||
|
layout = wibox.layout.fixed.vertical,
|
||||||
|
{
|
||||||
|
exit_button,
|
||||||
|
bg = beautiful.primary.hue_800,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
|
@ -0,0 +1,16 @@
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local mat_list_item = require('widget.material.list-item')
|
||||||
|
|
||||||
|
return wibox.widget {
|
||||||
|
-- wibox.widget {
|
||||||
|
-- wibox.widget {
|
||||||
|
-- text = 'Quick settings',
|
||||||
|
-- font = 'Roboto medium 12',
|
||||||
|
-- widget = wibox.widget.textbox
|
||||||
|
-- },
|
||||||
|
-- widget = mat_list_item
|
||||||
|
-- },
|
||||||
|
require('widget.volume.volume-slider'),
|
||||||
|
require('widget.brightness.brightness-slider'),
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local apps = require('configuration.apps')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
local left_panel = function(screen)
|
||||||
|
local action_bar_width = dpi(32)
|
||||||
|
local panel_content_width = dpi(400)
|
||||||
|
local offsety = dpi(12)
|
||||||
|
|
||||||
|
local panel = wibox {
|
||||||
|
screen = screen,
|
||||||
|
width = dpi(32),
|
||||||
|
height = dpi(32),
|
||||||
|
x = screen.geometry.x + 12,
|
||||||
|
y = screen.geometry.y + offsety,
|
||||||
|
ontop = false,
|
||||||
|
bg = beautiful.primary.hue_900,
|
||||||
|
fg = beautiful.fg_normal
|
||||||
|
}
|
||||||
|
|
||||||
|
panel.opened = false
|
||||||
|
|
||||||
|
panel:struts({left = dpi(0), top = dpi(48)})
|
||||||
|
|
||||||
|
local backdrop = wibox {
|
||||||
|
ontop = true,
|
||||||
|
screen = screen,
|
||||||
|
bg = '#00000000',
|
||||||
|
type = 'dock',
|
||||||
|
x = screen.geometry.x,
|
||||||
|
y = screen.geometry.y + offsety,
|
||||||
|
width = screen.geometry.width,
|
||||||
|
height = screen.geometry.height
|
||||||
|
}
|
||||||
|
|
||||||
|
function panel:run_rofi()
|
||||||
|
_G.awesome.spawn(apps.default.rofi, false, false, false, false,
|
||||||
|
function() panel:toggle() end)
|
||||||
|
end
|
||||||
|
|
||||||
|
local openPanel = function(should_run_rofi)
|
||||||
|
panel.width = panel_content_width
|
||||||
|
panel.height = screen.geometry.height
|
||||||
|
backdrop.visible = true
|
||||||
|
panel.visible = false
|
||||||
|
panel.visible = true
|
||||||
|
panel.x = screen.geometry.x
|
||||||
|
panel.y = screen.geometry.y
|
||||||
|
panel.ontop = true
|
||||||
|
panel:get_children_by_id('panel_content')[1].visible = true
|
||||||
|
if should_run_rofi then panel:run_rofi() end
|
||||||
|
panel:emit_signal('opened')
|
||||||
|
end
|
||||||
|
|
||||||
|
local closePanel = function()
|
||||||
|
panel.width = action_bar_width
|
||||||
|
panel.height = dpi(32)
|
||||||
|
panel:get_children_by_id('panel_content')[1].visible = false
|
||||||
|
backdrop.visible = false
|
||||||
|
panel.ontop = false
|
||||||
|
panel.x = screen.geometry.x + 12
|
||||||
|
panel.y = screen.geometry.y + offsety
|
||||||
|
panel:emit_signal('closed')
|
||||||
|
end
|
||||||
|
|
||||||
|
function panel:toggle(should_run_rofi)
|
||||||
|
self.opened = not self.opened
|
||||||
|
if self.opened then
|
||||||
|
openPanel(should_run_rofi)
|
||||||
|
else
|
||||||
|
closePanel()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
backdrop:buttons(awful.util.table.join(
|
||||||
|
awful.button({}, 1, function() panel:toggle() end)))
|
||||||
|
|
||||||
|
panel:setup{
|
||||||
|
require('layout.left-panel.action-bar')(screen, panel, action_bar_width),
|
||||||
|
layout = wibox.layout.align.vertical,
|
||||||
|
{
|
||||||
|
id = 'panel_content',
|
||||||
|
bg = beautiful.primary.hue_900,
|
||||||
|
widget = wibox.container.background,
|
||||||
|
visible = false,
|
||||||
|
forced_width = panel_content_width,
|
||||||
|
{
|
||||||
|
require('layout.left-panel.dashboard')(screen, panel),
|
||||||
|
layout = wibox.layout.stack
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return panel
|
||||||
|
end
|
||||||
|
|
||||||
|
return left_panel
|
|
@ -0,0 +1,165 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local clickable_container = require('widget.material.clickable-container')
|
||||||
|
local mat_icon_button = require('widget.material.icon-button')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local TagList = require('widget.tag-list')
|
||||||
|
local gears = require('gears')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
local theme = require "theme"
|
||||||
|
local table = awful.util.table or gears.table
|
||||||
|
|
||||||
|
local separator = wibox.container.margin(wibox.widget {
|
||||||
|
orientation = 'vertical',
|
||||||
|
forced_width = dpi(1),
|
||||||
|
opacity = 0.3,
|
||||||
|
widget = wibox.widget.separator
|
||||||
|
}, dpi(0), dpi(0), dpi(4), dpi(4))
|
||||||
|
|
||||||
|
local TopBar = function(s, offset)
|
||||||
|
|
||||||
|
-- LAYOUT BOX
|
||||||
|
-- ==========
|
||||||
|
local function update_txt_layoutbox(s)
|
||||||
|
-- Writes a string representation of the current layout in a textbox widget
|
||||||
|
local txt_l = theme["layout_txt_" .. awful.layout.getname(awful.layout.get(s))] or ""
|
||||||
|
s.layoutbox:set_text(txt_l)
|
||||||
|
end
|
||||||
|
|
||||||
|
s.layoutbox = wibox.widget.textbox(theme["layout_txt_" .. awful.layout.getname(awful.layout.get(s))])
|
||||||
|
s.layoutbox.font = beautiful.icon_font
|
||||||
|
awful.tag.attached_connect_signal(s, "property::selected", function () update_txt_layoutbox(s) end)
|
||||||
|
awful.tag.attached_connect_signal(s, "property::layout", function () update_txt_layoutbox(s) end)
|
||||||
|
s.layoutbox:buttons(table.join(
|
||||||
|
awful.button({}, 1, function() awful.layout.inc(1) end),
|
||||||
|
awful.button({}, 2, function () awful.layout.set( awful.layout.layouts[1] ) end),
|
||||||
|
awful.button({}, 3, function() awful.layout.inc(-1) end),
|
||||||
|
awful.button({}, 4, function() awful.layout.inc(1) end),
|
||||||
|
awful.button({}, 5, function() awful.layout.inc(-1) end)))
|
||||||
|
|
||||||
|
-- SYSTEM TRAY
|
||||||
|
-- ===========
|
||||||
|
local systray = wibox.widget.systray()
|
||||||
|
systray:set_horizontal(true)
|
||||||
|
|
||||||
|
-- SYSTEM DETAILS
|
||||||
|
-- ==============
|
||||||
|
local volume_widget = require('widget.volume')
|
||||||
|
local battery_widget = require('widget.battery')
|
||||||
|
local clock_widget = require('widget.clock')
|
||||||
|
local mem_widget = require('widget.memory')
|
||||||
|
local cpu_widget = require('widget.cpu')
|
||||||
|
local temprature_widget = require('widget.temprature')
|
||||||
|
local storage_widget = require('widget.storage')
|
||||||
|
local system_details = wibox.widget {
|
||||||
|
systray,
|
||||||
|
separator,
|
||||||
|
battery,
|
||||||
|
--separator,
|
||||||
|
wibox.widget{
|
||||||
|
wibox.widget{
|
||||||
|
text = 'mem',
|
||||||
|
font = beautiful.icon_font,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
fg = beautiful.accent.hue_600,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
mem_widget,
|
||||||
|
separator,
|
||||||
|
wibox.widget{
|
||||||
|
wibox.widget{
|
||||||
|
text = 'cpu',
|
||||||
|
font = beautiful.icon_font,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
fg = beautiful.accent.hue_500,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
cpu_widget,
|
||||||
|
separator,
|
||||||
|
wibox.widget{
|
||||||
|
wibox.widget{
|
||||||
|
text = 'temp',
|
||||||
|
font = beautiful.icon_font,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
fg = beautiful.accent.hue_400,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
temprature_widget,
|
||||||
|
separator,
|
||||||
|
wibox.widget{
|
||||||
|
wibox.widget{
|
||||||
|
text = 'disk',
|
||||||
|
font = beautiful.icon_font,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
fg = beautiful.accent.hue_200,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
storage_widget,
|
||||||
|
separator,
|
||||||
|
wibox.widget{
|
||||||
|
wibox.widget{
|
||||||
|
text = 'vol',
|
||||||
|
font = beautiful.icon_font,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
fg = beautiful.accent.hue_500,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
volume_widget,
|
||||||
|
separator,
|
||||||
|
wibox.widget{
|
||||||
|
wibox.widget{
|
||||||
|
text = 'date',
|
||||||
|
font = beautiful.icon_font,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
fg = beautiful.accent.hue_400,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
clock_widget,
|
||||||
|
wibox.widget{
|
||||||
|
s.layoutbox,
|
||||||
|
fg = beautiful.primary.hue_100,
|
||||||
|
bg = beautiful.accent.hue_200,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
spacing = dpi(4),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
}
|
||||||
|
|
||||||
|
local calendar = require('widget.calendar')
|
||||||
|
calendar:attach(clock_widget)
|
||||||
|
|
||||||
|
-- TOP BAR
|
||||||
|
-- =======
|
||||||
|
local panel = wibox({
|
||||||
|
ontop = false,
|
||||||
|
screen = s,
|
||||||
|
height = dpi(20),
|
||||||
|
width = s.geometry.width,
|
||||||
|
x = s.geometry.x,
|
||||||
|
y = s.geometry.y,
|
||||||
|
stretch = false,
|
||||||
|
bg = beautiful.primary.hue_100,
|
||||||
|
fg = beautiful.fg_normal,
|
||||||
|
})
|
||||||
|
|
||||||
|
panel:struts({
|
||||||
|
top = panel.height - panel.y
|
||||||
|
})
|
||||||
|
|
||||||
|
panel:setup{
|
||||||
|
layout = wibox.layout.align.horizontal,
|
||||||
|
TagList(s),
|
||||||
|
nil,
|
||||||
|
system_details,
|
||||||
|
}
|
||||||
|
|
||||||
|
return panel
|
||||||
|
end
|
||||||
|
|
||||||
|
return TopBar
|
|
@ -0,0 +1,19 @@
|
||||||
|
-- MODULE AUTO-START
|
||||||
|
-- Run all the apps listed in configuration/apps.lua as run_on_start_up only once when awesome start
|
||||||
|
|
||||||
|
local awful = require('awful')
|
||||||
|
local apps = require('configuration.apps')
|
||||||
|
|
||||||
|
local function run_once(cmd)
|
||||||
|
local findme = cmd
|
||||||
|
local firstspace = cmd:find(' ')
|
||||||
|
if firstspace then
|
||||||
|
findme = cmd:sub(0, firstspace - 1)
|
||||||
|
end
|
||||||
|
awful.spawn.with_shell(string.format('pgrep -u $USER -x %s > /dev/null || (%s)', findme, cmd))
|
||||||
|
--This broke compton ===> awful.spawn.single_instance(string.format('pgrep -u $USER -x %s > /dev/null || (%s)', findme, cmd))
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, app in ipairs(apps.run_on_start_up) do
|
||||||
|
run_once(app)
|
||||||
|
end
|
|
@ -0,0 +1,545 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local gears = require('gears')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local icons = require('theme.icons')
|
||||||
|
local mat_list_item = require('widget.material.list-item')
|
||||||
|
local mat_icon = require('widget.material.icon')
|
||||||
|
local clickable_container = require('widget.material.clickable-container')
|
||||||
|
local apps = require('configuration.apps')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
local icon_size = beautiful.dashboard_icon_size or dpi(140)
|
||||||
|
local username = os.getenv("USER")
|
||||||
|
local panel_style = gears.shape.rounded_rect
|
||||||
|
|
||||||
|
local buildButton = function(icon, name)
|
||||||
|
local button_text = wibox.widget {
|
||||||
|
text = name,
|
||||||
|
font = beautiful.font,
|
||||||
|
align = 'center',
|
||||||
|
valign = 'center',
|
||||||
|
bg = beautiful.primary.hue_900,
|
||||||
|
fg = beautiful.fg_normal,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
local a_button = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{image = icon, widget = wibox.widget.imagebox},
|
||||||
|
margins = dpi(16),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
bg = beautiful.groups_bg,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
shape = panel_style,
|
||||||
|
forced_width = dpi(60),
|
||||||
|
forced_height = dpi(60),
|
||||||
|
visible = true,
|
||||||
|
-- bg = beautiful.bg_normal,
|
||||||
|
widget = clickable_container
|
||||||
|
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
-- bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local build_a_button = wibox.widget {
|
||||||
|
layout = wibox.layout.fixed.horizontal,
|
||||||
|
spacing = dpi(5),
|
||||||
|
a_button
|
||||||
|
-- button_text
|
||||||
|
}
|
||||||
|
|
||||||
|
return build_a_button
|
||||||
|
end
|
||||||
|
|
||||||
|
local buildLabel = function(name)
|
||||||
|
local label_text = wibox.widget {
|
||||||
|
{
|
||||||
|
text = name,
|
||||||
|
font = beautiful.font_large,
|
||||||
|
align = 'center',
|
||||||
|
valign = 'center',
|
||||||
|
bg = beautiful.primary.hue_900,
|
||||||
|
fg = beautiful.fg_normal,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
shape = panel_style,
|
||||||
|
forced_height = dpi(56),
|
||||||
|
visible = true,
|
||||||
|
-- bg = beautiful.bg_normal,
|
||||||
|
widget = clickable_container
|
||||||
|
}
|
||||||
|
|
||||||
|
local build_a_label = wibox.widget {
|
||||||
|
layout = wibox.layout.flex.horizontal,
|
||||||
|
spacing = dpi(5),
|
||||||
|
label_text
|
||||||
|
}
|
||||||
|
|
||||||
|
return build_a_label
|
||||||
|
end
|
||||||
|
|
||||||
|
function suspend_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn.with_shell(apps.default.lock .. ' & systemctl suspend')
|
||||||
|
end
|
||||||
|
function exit_command() _G.awesome.quit() end
|
||||||
|
function lock_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn.with_shell('sleep 1 && ' .. apps.default.lock)
|
||||||
|
end
|
||||||
|
function poweroff_command()
|
||||||
|
awful.spawn.with_shell('poweroff')
|
||||||
|
awful.keygrabber.stop(_G.dashboard_grabber)
|
||||||
|
end
|
||||||
|
function reboot_command()
|
||||||
|
awful.spawn.with_shell('reboot')
|
||||||
|
awful.keygrabber.stop(_G.dashboard_grabber)
|
||||||
|
end
|
||||||
|
|
||||||
|
local poweroff = buildButton(icons.power, 'Shutdown')
|
||||||
|
poweroff:connect_signal('button::release', function() poweroff_command() end)
|
||||||
|
|
||||||
|
local reboot = buildButton(icons.restart, 'Restart')
|
||||||
|
reboot:connect_signal('button::release', function() reboot_command() end)
|
||||||
|
|
||||||
|
local suspend = buildButton(icons.sleep, 'Sleep')
|
||||||
|
suspend:connect_signal('button::release', function() suspend_command() end)
|
||||||
|
|
||||||
|
local exit = buildButton(icons.logout, 'Logout')
|
||||||
|
exit:connect_signal('button::release', function() exit_command() end)
|
||||||
|
|
||||||
|
local lock = buildButton(icons.lock, 'Lock')
|
||||||
|
lock:connect_signal('button::release', function() lock_command() end)
|
||||||
|
|
||||||
|
local search = buildButton(icons.search, 'Search')
|
||||||
|
search:connect_signal('button::release', function()
|
||||||
|
-- rofi_command()
|
||||||
|
dashboard_hide()
|
||||||
|
_G.awesome.spawn(apps.default.rofi)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local close = buildButton(icons.close_dark, 'Close')
|
||||||
|
close:connect_signal('button::release', function() dashboard_hide() end)
|
||||||
|
|
||||||
|
-- Get screen geometry
|
||||||
|
local screen_geometry = awful.screen.focused().geometry
|
||||||
|
|
||||||
|
-- Create the widget
|
||||||
|
dashboard = wibox({
|
||||||
|
x = screen_geometry.x,
|
||||||
|
y = screen_geometry.y,
|
||||||
|
visible = false,
|
||||||
|
ontop = true,
|
||||||
|
type = 'splash',
|
||||||
|
bg = beautiful.accent.hue_800 .. '66',
|
||||||
|
height = screen_geometry.height,
|
||||||
|
width = screen_geometry.width
|
||||||
|
})
|
||||||
|
|
||||||
|
local dashboard_grabber
|
||||||
|
|
||||||
|
function dashboard_hide()
|
||||||
|
awful.keygrabber.stop(dashboard_grabber)
|
||||||
|
dashboard.visible = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function dashboard_show()
|
||||||
|
dashboard_grabber = awful.keygrabber.run(
|
||||||
|
function(_, key, event)
|
||||||
|
if event == 'release' then return end
|
||||||
|
|
||||||
|
if key == 'Escape' or key == 'q' or key == 'x' or key == 'm' then
|
||||||
|
dashboard_hide()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
dashboard.visible = true
|
||||||
|
end
|
||||||
|
|
||||||
|
dashboard:buttons(gears.table.join( -- Middle click - Hide dashboard
|
||||||
|
awful.button({}, 2, function() dashboard_hide() end),
|
||||||
|
awful.button({}, 3, function() dashboard_hide() end)))
|
||||||
|
|
||||||
|
local profile_picture = os.getenv("HOME") ..
|
||||||
|
"/.face"
|
||||||
|
|
||||||
|
local profile = wibox.widget {
|
||||||
|
wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
image = profile_picture,
|
||||||
|
resize = true,
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
},
|
||||||
|
resize = true,
|
||||||
|
top = dpi(12),
|
||||||
|
right = dpi(12),
|
||||||
|
left = dpi(12),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
bg = beautiful.groups_bg,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
forced_width = dpi(244),
|
||||||
|
forced_height = dpi(244),
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
wibox.widget {
|
||||||
|
{
|
||||||
|
wibox.widget {
|
||||||
|
text = '@' .. username,
|
||||||
|
font = beautiful.font_large,
|
||||||
|
align = 'center',
|
||||||
|
valign = 'center',
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
},
|
||||||
|
bottom = dpi(8),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
fg = beautiful.primary.hue_500,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local power_options = wibox.widget {
|
||||||
|
{
|
||||||
|
poweroff,
|
||||||
|
reboot,
|
||||||
|
suspend,
|
||||||
|
exit,
|
||||||
|
lock,
|
||||||
|
layout = wibox.layout.flex.horizontal
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.primary.hue_900,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local search_button = wibox.widget {
|
||||||
|
{
|
||||||
|
search,
|
||||||
|
bg = beautiful.primary.hue_600,
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.primary.hue_200,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local close_button = wibox.widget {
|
||||||
|
{
|
||||||
|
close,
|
||||||
|
bg = beautiful.primary.hue_600,
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.primary.hue_350,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local quick_settings = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
require('layout.left-panel.dashboard.quick-settings'),
|
||||||
|
right = dpi(16),
|
||||||
|
bottom = dpi(12),
|
||||||
|
top = dpi(12),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local hardware_monitor = wibox.widget {
|
||||||
|
{
|
||||||
|
require('layout.left-panel.dashboard.hardware-monitor'),
|
||||||
|
right = dpi(16),
|
||||||
|
bottom = dpi(12),
|
||||||
|
top = dpi(12),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local cal = require('widget.calendar')
|
||||||
|
|
||||||
|
--[[local calwidget = wibox.widget {
|
||||||
|
{
|
||||||
|
nil,
|
||||||
|
{cal, margins = dpi(16), widget = wibox.container.margin},
|
||||||
|
nil,
|
||||||
|
layout = wibox.layout.flex.horizontal
|
||||||
|
},
|
||||||
|
resize = true,
|
||||||
|
shape = panel_style,
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}]]
|
||||||
|
|
||||||
|
-- Fortune widget Credits: u/EmpressNoodle, github/elenapan
|
||||||
|
local fortune_command = "fortune -n 140 -s"
|
||||||
|
local fortune_update_interval = 3600
|
||||||
|
-- local fortune_command = "fortune -n 140 -s computers"
|
||||||
|
local fortune = wibox.widget {
|
||||||
|
font = "Roboto 11",
|
||||||
|
text = "You so poor you don't even have a cookie yet...",
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
local update_fortune = function()
|
||||||
|
awful.spawn.easy_async_with_shell(fortune_command, function(out)
|
||||||
|
-- Remove trailing whitespaces
|
||||||
|
out = out:gsub('^%s*(.-)%s*$', '%1')
|
||||||
|
fortune.markup = "<i>" .. out .. "</i>"
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
gears.timer {
|
||||||
|
autostart = true,
|
||||||
|
timeout = fortune_update_interval,
|
||||||
|
single_shot = false,
|
||||||
|
call_now = true,
|
||||||
|
callback = update_fortune
|
||||||
|
}
|
||||||
|
|
||||||
|
local fortune_widget = wibox.widget {
|
||||||
|
{
|
||||||
|
{fortune, layout = wibox.layout.flex.horizontal},
|
||||||
|
margins = dpi(16),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
bg = beautiful.primary.hue_700,
|
||||||
|
fg = beautiful.primary.hue_900,
|
||||||
|
shape = panel_style,
|
||||||
|
forced_height = dpi(112),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local uptime_text = wibox.widget.textbox()
|
||||||
|
uptime_text.font = "Roboto 10"
|
||||||
|
uptime_text.valign = "center"
|
||||||
|
awful.widget.watch("uptime -p | sed 's/^...//'", 60, function(_, stdout)
|
||||||
|
local out = stdout:gsub('^%s*(.-)%s*up', '%1')
|
||||||
|
uptime_text.text = out
|
||||||
|
end)
|
||||||
|
|
||||||
|
local uptime_widget = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
image = icons.uptime,
|
||||||
|
resize = true,
|
||||||
|
forced_width = dpi(24),
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
},
|
||||||
|
uptime_text,
|
||||||
|
spacing = dpi(8),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
margins = dpi(16),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
forced_height = dpi(48),
|
||||||
|
forced_width = dpi(182),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Bookmarks
|
||||||
|
function reddit_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn(apps.default.browser .. " " .. "reddit.com")
|
||||||
|
end
|
||||||
|
|
||||||
|
function youtube_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn(apps.default.browser .. " " .. "youtube.com")
|
||||||
|
end
|
||||||
|
|
||||||
|
function linkedin_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn(apps.default.browser .. " " .. "linkedin.com")
|
||||||
|
end
|
||||||
|
|
||||||
|
function github_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn(apps.default.browser .. " " .. "github.com")
|
||||||
|
end
|
||||||
|
|
||||||
|
function deviantart_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn(apps.default.browser .. " " .. "deviantart.com")
|
||||||
|
end
|
||||||
|
|
||||||
|
function codeforces_command()
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn(apps.default.browser .. " " .. "codeforces.com")
|
||||||
|
end
|
||||||
|
|
||||||
|
function files_command(directory)
|
||||||
|
dashboard_hide()
|
||||||
|
awful.spawn(apps.default.files .. " " .. directory)
|
||||||
|
end
|
||||||
|
|
||||||
|
local reddit = buildButton(icons.reddit, 'Reddit')
|
||||||
|
reddit:connect_signal('button::release', function() reddit_command() end)
|
||||||
|
|
||||||
|
local youtube = buildButton(icons.youtube, 'Youtube')
|
||||||
|
youtube:connect_signal('button::release', function() youtube_command() end)
|
||||||
|
|
||||||
|
local linkedin = buildButton(icons.linkedin, 'Linkedin')
|
||||||
|
linkedin:connect_signal('button::release', function() linkedin_command() end)
|
||||||
|
|
||||||
|
local github = buildButton(icons.github, 'Github')
|
||||||
|
github:connect_signal('button::release', function() github_command() end)
|
||||||
|
|
||||||
|
local deviantart = buildButton(icons.deviantart, 'Deviantart')
|
||||||
|
deviantart:connect_signal('button::release', function() deviantart_command() end)
|
||||||
|
|
||||||
|
local codeforces = buildButton(icons.codeforces, 'Codeforces')
|
||||||
|
codeforces:connect_signal('button::release', function() codeforces_command() end)
|
||||||
|
|
||||||
|
local home = buildLabel('Home')
|
||||||
|
home:connect_signal('button::release', function() files_command(".") end)
|
||||||
|
|
||||||
|
local downloads = buildLabel('Downloads')
|
||||||
|
downloads:connect_signal('button::release',
|
||||||
|
function() files_command("Downloads") end)
|
||||||
|
|
||||||
|
local desktop = buildLabel('Desktop')
|
||||||
|
desktop:connect_signal('button::release',
|
||||||
|
function() files_command("Desktop") end)
|
||||||
|
|
||||||
|
local pictures = buildLabel('Pictures')
|
||||||
|
pictures:connect_signal('button::release',
|
||||||
|
function() files_command("Pictures") end)
|
||||||
|
|
||||||
|
local videos = buildLabel('Videos')
|
||||||
|
videos:connect_signal('button::release', function() files_command("Videos") end)
|
||||||
|
|
||||||
|
local documents = buildLabel('Documents')
|
||||||
|
documents:connect_signal('button::release',
|
||||||
|
function() files_command("Documents") end)
|
||||||
|
|
||||||
|
local bookmarks = wibox.widget {
|
||||||
|
{
|
||||||
|
{reddit, youtube, linkedin, layout = wibox.layout.flex.horizontal},
|
||||||
|
{github, deviantart, codeforces, layout = wibox.layout.ratio.horizontal},
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
forced_width = dpi(182),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
local places = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
home,
|
||||||
|
desktop,
|
||||||
|
downloads,
|
||||||
|
pictures,
|
||||||
|
documents,
|
||||||
|
videos,
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
visible = true,
|
||||||
|
bg = beautiful.bg_normal,
|
||||||
|
shape = panel_style,
|
||||||
|
forced_width = dpi(182),
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Item placement
|
||||||
|
dashboard:setup{
|
||||||
|
nil,
|
||||||
|
{
|
||||||
|
nil,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
search_button,
|
||||||
|
close_button,
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{
|
||||||
|
{
|
||||||
|
quick_settings,
|
||||||
|
hardware_monitor,
|
||||||
|
fortune_widget,
|
||||||
|
forced_width = dpi(300),
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
{
|
||||||
|
bookmarks,
|
||||||
|
places,
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
{
|
||||||
|
power_options,
|
||||||
|
uptime_widget,
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
{
|
||||||
|
profile,
|
||||||
|
calWidget,
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.vertical
|
||||||
|
},
|
||||||
|
spacing = dpi(10),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
expand = 'none',
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
},
|
||||||
|
{nil, expand = 'none', layout = wibox.layout.align.horizontal},
|
||||||
|
expand = 'none',
|
||||||
|
layout = wibox.layout.align.vertical
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local gears = require('gears')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
local function renderClient(client, mode)
|
||||||
|
if client.skip_decoration or (client.rendering_mode == mode) then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
client.rendering_mode = mode
|
||||||
|
client.floating = false
|
||||||
|
client.maximized = false
|
||||||
|
client.above = false
|
||||||
|
client.below = false
|
||||||
|
client.ontop = false
|
||||||
|
client.sticky = false
|
||||||
|
client.maximized_horizontal = false
|
||||||
|
client.maximized_vertical = false
|
||||||
|
|
||||||
|
client.border_width = beautiful.border_width
|
||||||
|
client.shape = function(cr, w, h)
|
||||||
|
gears.shape.rectangle(cr, w, h)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local changesOnScreenCalled = false
|
||||||
|
|
||||||
|
local function changesOnScreen(currentScreen)
|
||||||
|
local tagIsMax = currentScreen.selected_tag ~= nil and currentScreen.selected_tag.layout == awful.layout.suit.max
|
||||||
|
local clientsToManage = {}
|
||||||
|
|
||||||
|
for _, client in pairs(currentScreen.clients) do
|
||||||
|
if not client.skip_decoration and not client.hidden then
|
||||||
|
table.insert(clientsToManage, client)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if (tagIsMax or #clientsToManage == 1) then
|
||||||
|
currentScreen.client_mode = 'maximized'
|
||||||
|
else
|
||||||
|
currentScreen.client_mode = 'tiled'
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, client in pairs(clientsToManage) do
|
||||||
|
renderClient(client, currentScreen.client_mode)
|
||||||
|
end
|
||||||
|
changesOnScreenCalled = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function clientCallback(client)
|
||||||
|
if not changesOnScreenCalled then
|
||||||
|
if not client.skip_decoration and client.screen then
|
||||||
|
changesOnScreenCalled = true
|
||||||
|
local screen = client.screen
|
||||||
|
gears.timer.delayed_call(function()
|
||||||
|
changesOnScreen(screen)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function tagCallback(tag)
|
||||||
|
if not changesOnScreenCalled then
|
||||||
|
if tag.screen then
|
||||||
|
changesOnScreenCalled = true
|
||||||
|
local screen = tag.screen
|
||||||
|
gears.timer.delayed_call(function()
|
||||||
|
changesOnScreen(screen)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
_G.client.connect_signal('manage', clientCallback)
|
||||||
|
|
||||||
|
_G.client.connect_signal('unmanage', clientCallback)
|
||||||
|
|
||||||
|
_G.client.connect_signal('property::hidden', clientCallback)
|
||||||
|
|
||||||
|
_G.client.connect_signal('property::minimized', clientCallback)
|
||||||
|
|
||||||
|
_G.client.connect_signal('property::fullscreen', function(c)
|
||||||
|
if c.fullscreen then
|
||||||
|
renderClient(c, 'maximized')
|
||||||
|
else
|
||||||
|
clientCallback(c)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
_G.tag.connect_signal('property::selected', tagCallback)
|
||||||
|
|
||||||
|
_G.tag.connect_signal('property::layout', tagCallback)
|
|
@ -0,0 +1,201 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local gears = require('gears')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local icons = require('theme.icons')
|
||||||
|
local clickable_container = require('widget.material.clickable-container')
|
||||||
|
local apps = require('configuration.apps')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
-- Appearance
|
||||||
|
local icon_size = beautiful.exit_screen_icon_size or dpi(140)
|
||||||
|
|
||||||
|
local buildButton = function(icon)
|
||||||
|
local abutton =
|
||||||
|
wibox.widget {
|
||||||
|
wibox.widget {
|
||||||
|
wibox.widget {
|
||||||
|
wibox.widget {
|
||||||
|
image = icon,
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
},
|
||||||
|
top = dpi(16),
|
||||||
|
bottom = dpi(16),
|
||||||
|
left = dpi(16),
|
||||||
|
right = dpi(16),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
shape = gears.shape.circle,
|
||||||
|
forced_width = icon_size,
|
||||||
|
forced_height = icon_size,
|
||||||
|
widget = clickable_container
|
||||||
|
},
|
||||||
|
left = dpi(24),
|
||||||
|
right = dpi(24),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
}
|
||||||
|
|
||||||
|
return abutton
|
||||||
|
end
|
||||||
|
|
||||||
|
function suspend_command()
|
||||||
|
exit_screen_hide()
|
||||||
|
awful.spawn.with_shell(apps.default.lock .. ' & systemctl suspend')
|
||||||
|
end
|
||||||
|
function exit_command()
|
||||||
|
_G.awesome.quit()
|
||||||
|
end
|
||||||
|
function lock_command()
|
||||||
|
exit_screen_hide()
|
||||||
|
awful.spawn.with_shell('sleep 1 && ' .. apps.default.lock)
|
||||||
|
end
|
||||||
|
function poweroff_command()
|
||||||
|
awful.spawn.with_shell('poweroff')
|
||||||
|
awful.keygrabber.stop(_G.exit_screen_grabber)
|
||||||
|
end
|
||||||
|
function reboot_command()
|
||||||
|
awful.spawn.with_shell('reboot')
|
||||||
|
awful.keygrabber.stop(_G.exit_screen_grabber)
|
||||||
|
end
|
||||||
|
|
||||||
|
local poweroff = buildButton(icons.power, 'Shutdown')
|
||||||
|
poweroff:connect_signal(
|
||||||
|
'button::release',
|
||||||
|
function()
|
||||||
|
poweroff_command()
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
local reboot = buildButton(icons.restart, 'Restart')
|
||||||
|
reboot:connect_signal(
|
||||||
|
'button::release',
|
||||||
|
function()
|
||||||
|
reboot_command()
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
local suspend = buildButton(icons.sleep, 'Sleep')
|
||||||
|
suspend:connect_signal(
|
||||||
|
'button::release',
|
||||||
|
function()
|
||||||
|
suspend_command()
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
local exit = buildButton(icons.logout, 'Logout')
|
||||||
|
exit:connect_signal(
|
||||||
|
'button::release',
|
||||||
|
function()
|
||||||
|
exit_command()
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
local lock = buildButton(icons.lock, 'Lock')
|
||||||
|
lock:connect_signal(
|
||||||
|
'button::release',
|
||||||
|
function()
|
||||||
|
lock_command()
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Get screen geometry
|
||||||
|
local screen_geometry = awful.screen.focused().geometry
|
||||||
|
|
||||||
|
-- Create the widget
|
||||||
|
exit_screen =
|
||||||
|
wibox(
|
||||||
|
{
|
||||||
|
x = screen_geometry.x,
|
||||||
|
y = screen_geometry.y,
|
||||||
|
visible = false,
|
||||||
|
ontop = true,
|
||||||
|
type = 'splash',
|
||||||
|
height = screen_geometry.height,
|
||||||
|
width = screen_geometry.width
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
exit_screen.bg = '#212121CC'
|
||||||
|
--exit_screen.fg = beautiful.exit_screen_fg or beautiful.wibar_fg or '#FEFEFE'
|
||||||
|
|
||||||
|
local exit_screen_grabber
|
||||||
|
|
||||||
|
function exit_screen_hide()
|
||||||
|
awful.keygrabber.stop(exit_screen_grabber)
|
||||||
|
exit_screen.visible = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function exit_screen_show()
|
||||||
|
-- naughty.notify({text = "starting the keygrabber"})
|
||||||
|
exit_screen_grabber =
|
||||||
|
awful.keygrabber.run(
|
||||||
|
function(_, key, event)
|
||||||
|
if event == 'release' then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if key == 's' then
|
||||||
|
suspend_command()
|
||||||
|
elseif key == 'e' then
|
||||||
|
exit_command()
|
||||||
|
elseif key == 'l' then
|
||||||
|
lock_command()
|
||||||
|
elseif key == 'p' then
|
||||||
|
poweroff_command()
|
||||||
|
elseif key == 'r' then
|
||||||
|
reboot_command()
|
||||||
|
elseif key == 'Escape' or key == 'q' or key == 'x' then
|
||||||
|
-- naughty.notify({text = "Cancel"})
|
||||||
|
exit_screen_hide()
|
||||||
|
-- else awful.keygrabber.stop(exit_screen_grabber)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
)
|
||||||
|
exit_screen.visible = true
|
||||||
|
end
|
||||||
|
|
||||||
|
exit_screen:buttons(
|
||||||
|
gears.table.join(
|
||||||
|
-- Middle click - Hide exit_screen
|
||||||
|
awful.button(
|
||||||
|
{},
|
||||||
|
2,
|
||||||
|
function()
|
||||||
|
exit_screen_hide()
|
||||||
|
end
|
||||||
|
),
|
||||||
|
-- Right click - Hide exit_screen
|
||||||
|
awful.button(
|
||||||
|
{},
|
||||||
|
3,
|
||||||
|
function()
|
||||||
|
exit_screen_hide()
|
||||||
|
end
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Item placement
|
||||||
|
exit_screen:setup {
|
||||||
|
nil,
|
||||||
|
{
|
||||||
|
nil,
|
||||||
|
{
|
||||||
|
-- {
|
||||||
|
poweroff,
|
||||||
|
reboot,
|
||||||
|
suspend,
|
||||||
|
exit,
|
||||||
|
lock,
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
-- },
|
||||||
|
-- widget = exit_screen_box
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
expand = 'none',
|
||||||
|
layout = wibox.layout.align.horizontal
|
||||||
|
},
|
||||||
|
nil,
|
||||||
|
expand = 'none',
|
||||||
|
layout = wibox.layout.align.vertical
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
local naughty = require('naughty')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local gears = require('gears')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
-- Naughty presets
|
||||||
|
naughty.config.padding = 8
|
||||||
|
naughty.config.spacing = 8
|
||||||
|
|
||||||
|
naughty.config.defaults.timeout = 10
|
||||||
|
naughty.config.defaults.screen = 1
|
||||||
|
naughty.config.defaults.position = 'top_right'
|
||||||
|
naughty.config.defaults.margin = dpi(16)
|
||||||
|
naughty.config.defaults.ontop = true
|
||||||
|
naughty.config.defaults.font = beautiful.font
|
||||||
|
--naughty.config.defaults.icon = nil
|
||||||
|
naughty.config.defaults.icon_size = dpi(32)
|
||||||
|
naughty.config.defaults.shape = gears.shape.rounded_rect
|
||||||
|
naughty.config.defaults.border_width = dpi(0)
|
||||||
|
naughty.config.defaults.hover_timeout = nil
|
||||||
|
|
||||||
|
-- Error handling
|
||||||
|
if _G.awesome.startup_errors then
|
||||||
|
naughty.notify({
|
||||||
|
preset = naughty.config.presets.critical,
|
||||||
|
title = 'Oops, there were errors during startup!',
|
||||||
|
text = _G.awesome.startup_errors
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
do
|
||||||
|
local in_error = false
|
||||||
|
_G.awesome.connect_signal('debug::error', function(err)
|
||||||
|
if in_error then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
in_error = true
|
||||||
|
|
||||||
|
naughty.notify({
|
||||||
|
preset = naughty.config.presets.critical,
|
||||||
|
title = 'Oops, an error happened!',
|
||||||
|
text = tostring(err)
|
||||||
|
})
|
||||||
|
in_error = false
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
function log_this(title, txt)
|
||||||
|
naughty.notify({
|
||||||
|
title = 'log: ' .. title,
|
||||||
|
text = txt
|
||||||
|
})
|
||||||
|
end
|
|
@ -0,0 +1,79 @@
|
||||||
|
local awful = require('awful')
|
||||||
|
local app = require('configuration.apps').default.splash
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local screen = awful.screen.focused()
|
||||||
|
|
||||||
|
-- Theme
|
||||||
|
beautiful.init(require('theme'))
|
||||||
|
|
||||||
|
local splash_id = 'notnil'
|
||||||
|
local splash_client
|
||||||
|
local opened = false
|
||||||
|
|
||||||
|
function create_shell()
|
||||||
|
splash_id = awful.spawn.with_shell(app)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Dirty hack to prevent splash from showing up in occupied tags
|
||||||
|
function _splash_to_current_tag()
|
||||||
|
if splash_client then
|
||||||
|
splash_client:move_to_tag(screen.selected_tag)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function open_splash()
|
||||||
|
splash_client.hidden = false
|
||||||
|
end
|
||||||
|
|
||||||
|
function close_splash()
|
||||||
|
splash_client.hidden = true
|
||||||
|
end
|
||||||
|
|
||||||
|
toggle_splash_height = function()
|
||||||
|
if splash_client and opened then
|
||||||
|
splash_client.maximized_vertical = not splash_client.maximized_vertical
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
toggle_splash = function()
|
||||||
|
opened = not opened
|
||||||
|
if not splash_client then
|
||||||
|
create_shell()
|
||||||
|
else
|
||||||
|
if opened then
|
||||||
|
open_splash()
|
||||||
|
client.focus = splash_client
|
||||||
|
splash_client:raise()
|
||||||
|
else
|
||||||
|
close_splash()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
_G.client.connect_signal('manage', function(c)
|
||||||
|
if (c.pid == splash_id) then
|
||||||
|
splash_client = c
|
||||||
|
c.x = c.screen.geometry.x
|
||||||
|
c.height = (c.screen.geometry.height / 5) * 3
|
||||||
|
c.y = c.screen.geometry.height - c.height - beautiful.border_width - dpi(16)
|
||||||
|
c.floating = true
|
||||||
|
c.skip_taskbar = true
|
||||||
|
c.skip_decoration = true
|
||||||
|
c.ontop = true
|
||||||
|
c.floating = true
|
||||||
|
c.above = true
|
||||||
|
c.sticky = true
|
||||||
|
c.type = 'splash'
|
||||||
|
c.hidden = not opened
|
||||||
|
c.border_width = beautiful.border_width
|
||||||
|
c.maximized_horizontal = true
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
_G.client.connect_signal('unmanage', function(c)
|
||||||
|
if (c.pid == splash_id) then
|
||||||
|
opened = false
|
||||||
|
splash_client = nil
|
||||||
|
end
|
||||||
|
end)
|
|
@ -0,0 +1,53 @@
|
||||||
|
require('awful.autofocus')
|
||||||
|
local gears = require('gears')
|
||||||
|
local awful = require('awful')
|
||||||
|
local naughty = require('naughty')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
|
||||||
|
-- Theme
|
||||||
|
beautiful.init(require('theme'))
|
||||||
|
|
||||||
|
-- Layout
|
||||||
|
require('layout')
|
||||||
|
|
||||||
|
-- Init all modules
|
||||||
|
require('module.notifications')
|
||||||
|
require('module.auto-start')
|
||||||
|
require('module.decorate-client')
|
||||||
|
require('module.splash-terminal')
|
||||||
|
require('module.exit-screen')
|
||||||
|
require('module.dashboard')
|
||||||
|
|
||||||
|
-- Setup all configurations
|
||||||
|
require('configuration.client')
|
||||||
|
require('configuration.tags')
|
||||||
|
_G.root.keys(require('configuration.keys.global'))
|
||||||
|
|
||||||
|
-- Signal function to execute when a new client appears.
|
||||||
|
_G.client.connect_signal('manage', function(c)
|
||||||
|
-- Set the windows at the slave,
|
||||||
|
-- i.e. put it at the end of others instead of setting it master.
|
||||||
|
if not _G.awesome.startup then
|
||||||
|
awful.client.setslave(c)
|
||||||
|
end
|
||||||
|
|
||||||
|
if _G.awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then
|
||||||
|
-- Prevent clients from being unreachable after screen count changes.
|
||||||
|
awful.placement.no_offscreen(c)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
--[[ Enable sloppy focus, so that focus follows mouse.
|
||||||
|
_G.client.connect_signal('mouse::enter', function(c)
|
||||||
|
c:emit_signal('request::activate', 'mouse_enter', {raise = true})
|
||||||
|
end)
|
||||||
|
--]]
|
||||||
|
|
||||||
|
-- Make the focused window have a glowing border
|
||||||
|
_G.client.connect_signal('focus', function(c)
|
||||||
|
c.border_color = beautiful.border_focus
|
||||||
|
end)
|
||||||
|
_G.client.connect_signal('unfocus', function(c)
|
||||||
|
c.border_color = beautiful.border_normal
|
||||||
|
end)
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
return {
|
||||||
|
dracula = {
|
||||||
|
primary = {
|
||||||
|
hue_100 = '#282a36',
|
||||||
|
hue_200 = '#44475a'
|
||||||
|
},
|
||||||
|
accent = {
|
||||||
|
hue_100 = '#f1fa8c',
|
||||||
|
hue_200 = '#50fa7b',
|
||||||
|
hue_300 = '#8be9fd',
|
||||||
|
hue_400 = '#ff5555',
|
||||||
|
hue_500 = '#6272a4',
|
||||||
|
hue_600 = '#ff79c6',
|
||||||
|
hue_700 = '#ffb86c',
|
||||||
|
hue_800 = '#f8f8f2',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
gruvbox = {
|
||||||
|
primary = {
|
||||||
|
hue_100 = '#282828',
|
||||||
|
hue_200 = '#3c3c3c'
|
||||||
|
},
|
||||||
|
accent = {
|
||||||
|
hue_100 = '#fe8019',
|
||||||
|
hue_200 = '#fabd2f',
|
||||||
|
hue_300 = '#8ec07c',
|
||||||
|
hue_400 = '#fb4934',
|
||||||
|
hue_500 = '#d3869b',
|
||||||
|
hue_600 = '#b8bb26',
|
||||||
|
hue_700 = '#458588',
|
||||||
|
hue_800 = '#fbf1c7',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
gruvbox_material = {
|
||||||
|
primary = {
|
||||||
|
hue_100 = '#212121',
|
||||||
|
hue_200 = '#3c3c3c'
|
||||||
|
},
|
||||||
|
accent = {
|
||||||
|
hue_100 = '#e1be7f', -- orange-ish
|
||||||
|
hue_200 = '#92c96a', -- green - MAIN
|
||||||
|
hue_300 = '#66aeea', -- light blue
|
||||||
|
hue_400 = '#f35a5a', -- light red
|
||||||
|
hue_500 = '#4083bc', -- dark blue
|
||||||
|
hue_600 = '#c57cda', -- light magenta
|
||||||
|
hue_700 = '#cd996a', -- light brown
|
||||||
|
hue_800 = '#d6d6d6', -- light gray
|
||||||
|
}
|
||||||
|
},
|
||||||
|
flat_remix_teal = {
|
||||||
|
primary = {
|
||||||
|
hue_100 = '#212121',
|
||||||
|
hue_200 = '#3c3c3c'
|
||||||
|
},
|
||||||
|
accent = {
|
||||||
|
hue_100 = '#e1be7f', -- orange-ish
|
||||||
|
hue_200 = '#458ECC', -- green - MAIN
|
||||||
|
--hue_200 = '#06A284', -- green - MAIN
|
||||||
|
hue_300 = '#66aeea', -- light blue
|
||||||
|
hue_400 = '#f35a5a', -- light red
|
||||||
|
hue_500 = '#4083bc', -- dark blue
|
||||||
|
hue_600 = '#c57cda', -- light magenta
|
||||||
|
hue_700 = '#25B29B', -- light brown
|
||||||
|
hue_800 = '#d6d6d6', -- light gray
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 8.7 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M12,8A4,4 0 0,0 8,12A4,4 0 0,0 12,16A4,4 0 0,0 16,12A4,4 0 0,0 12,8M12,18A6,6 0 0,1 6,12A6,6 0 0,1 12,6A6,6 0 0,1 18,12A6,6 0 0,1 12,18M20,8.69V4H15.31L12,0.69L8.69,4H4V8.69L0.69,12L4,15.31V20H8.69L12,23.31L15.31,20H20V15.31L23.31,12L20,8.69Z" /></svg>
|
After Width: | Height: | Size: 554 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M17.45,15.18L22,7.31V19L22,21H2V3H4V15.54L9.5,6L16,9.78L20.24,2.45L21.97,3.45L16.74,12.5L10.23,8.75L4.31,19H6.57L10.96,11.44L17.45,15.18Z" /></svg>
|
After Width: | Height: | Size: 449 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" /></svg>
|
After Width: | Height: | Size: 421 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M8,3A2,2 0 0,0 6,5V9A2,2 0 0,1 4,11H3V13H4A2,2 0 0,1 6,15V19A2,2 0 0,0 8,21H10V19H8V14A2,2 0 0,0 6,12A2,2 0 0,0 8,10V5H10V3M16,3A2,2 0 0,1 18,5V9A2,2 0 0,0 20,11H21V13H20A2,2 0 0,0 18,15V19A2,2 0 0,1 16,21H14V19H16V14A2,2 0 0,1 18,12A2,2 0 0,1 16,10V5H14V3H16Z" /></svg>
|
After Width: | Height: | Size: 572 B |
|
@ -0,0 +1,52 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
viewBox="9.7 16.5 280 266"
|
||||||
|
version="1.1"
|
||||||
|
id="svg4"
|
||||||
|
sodipodi:docname="firefox.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)">
|
||||||
|
<metadata
|
||||||
|
id="metadata10">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs8" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1872"
|
||||||
|
inkscape:window-height="1032"
|
||||||
|
id="namedview6"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="3.1541353"
|
||||||
|
inkscape:cx="140"
|
||||||
|
inkscape:cy="133"
|
||||||
|
inkscape:window-x="48"
|
||||||
|
inkscape:window-y="48"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg4" />
|
||||||
|
<path
|
||||||
|
d="M288.9 113.8c-1.4 3.5-2.5 7.1-3.9 10.6-1-14.7-3.4-29.3-8.1-43.2-3.2-8.6-6.9-17.2-13.3-23.9.9 8.2 3 16.2 2.8 24.5-1.8-6.3-3.9-12.7-7.7-18.1-8.2-12.7-21.5-21.3-35.7-25.9-3.7-1.2-7.6-1.9-10.9-3.9-20.4-11.9-44.2-17.8-67.8-17.2-30.7.4-60.9 12.5-83.4 33.3-3.5 3.3-6.7 6.9-10.2 10.3-6.1-7.1-9.2-16.1-9.6-25.4-5.5 4.7-8.7 11.5-11 18.2-3.2 9.4-4.9 19.4-3.9 29.3.1 2.2.7 4.6-.8 6.5-7.8 11.4-14.1 24.4-15.6 38.3 2.5-1.7 4.9-3.5 7.4-5.2-1 5-2.4 10-3.2 15.1-3.5 24.5 1 50 12.7 71.9 12.8 23.6 32.6 43.1 55.9 56.4 26.2 14.9 57.5 20.4 87.3 15.6 26-4.3 51.2-15.7 69.8-34.6 13.2-13.4 24.7-28.5 33-45.4 13.6-26.8 19.3-57.5 16.2-87.2m-48.7 38.4c-2.7-5.5-4.1-12-9.3-15.8 1.3 13.8 1.9 27.8-1.2 41.4-1.9 9.2-6 18.1-12.7 24.8 1.2-6.6 2.3-13.3 1.9-20-9.7 13.1-21.4 25.2-36.3 32.3-12.6 6.1-27.5 5.8-40.7 1.7-12-3.9-22.4-11.3-31.6-19.7h3.2c9 .6 18.1-.7 26.7-3.2 8.6-2.5 15-8.9 22.5-13.4 3.5-2.1 7.9-1.2 11.7-2.3 2.4-1.3 3.2-4.8 1-6.7-5.6-6.1-13.7-11-22.2-10-8.2 1.2-14.9 6.8-23 8.7-5.8 1-11.7-.8-16.8-3.4-7.3-3.7-12.8-9.9-18-16l-2.3-1.9c0-.9 0-1.9.1-2.8.5-2.5 1.9-4.7 3.1-7l1.4-2.8c8.1.6 16.1 1.9 24 3.9-.1-7.5-.6-16-5.2-22.2l1.6-1.2c5.1-4 9.8-8.7 15.5-11.8 2.3-1.2 4.4-2.8 6.1-4.7l.4-3.4h-.1c.1-1.3-.1-2.7-.1-4-2.8-.3-5.6-.5-8.5-.5l-7.8-.5c-.6-.4-1.2-.8-1.8-1.1-5.3-3.3-9.9-7.7-14.9-11.4l-2-1.8.3-2.7c1.9-12.5 11.1-22.3 20.7-29.8-6.8 1-13.5 2.9-19.6 6C99.9 54 94.4 58.7 89 63.3c-10.9-2.8-22.6-1.1-33 2.9-5.1 2.3-9.7 5.7-14.7 8.3 3.2-3.2 6.9-5.7 10.5-8.5 3.2-2.4 5.6-5.7 8.4-8.5 20.8-21.4 49.9-34.3 79.6-35.8 19.7-1 40 2.1 57.8 10.8-4.8-.2-9.5-.5-14.3-.4 10.7 3.2 23.2 6.6 29.2 17-5.5.2-11.1.3-16.4 2.1 15.3 5.9 30.7 13.2 42.1 25.4 6.8 7.3 11.5 16.8 11.3 27-3.6-2.7-7.3-5.2-11.3-7.2 4.3 18.1 7 37.4 2 55.8"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#ffffff" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M6,22A3,3 0 0,1 3,19C3,18.4 3.18,17.84 3.5,17.37L9,7.81V6A1,1 0 0,1 8,5V4A2,2 0 0,1 10,2H14A2,2 0 0,1 16,4V5A1,1 0 0,1 15,6V7.81L20.5,17.37C20.82,17.84 21,18.4 21,19A3,3 0 0,1 18,22H6M5,19A1,1 0 0,0 6,20H18A1,1 0 0,0 19,19C19,18.79 18.93,18.59 18.82,18.43L16.53,14.47L14,17L8.93,11.93L5.18,18.43C5.07,18.59 5,18.79 5,19M13,10A1,1 0 0,0 12,11A1,1 0 0,0 13,12A1,1 0 0,0 14,11A1,1 0 0,0 13,10Z" /></svg>
|
After Width: | Height: | Size: 702 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z" /></svg>
|
After Width: | Height: | Size: 405 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z" /></svg>
|
After Width: | Height: | Size: 436 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M12,20L15.46,14H15.45C15.79,13.4 16,12.73 16,12C16,10.8 15.46,9.73 14.62,9H19.41C19.79,9.93 20,10.94 20,12A8,8 0 0,1 12,20M4,12C4,10.54 4.39,9.18 5.07,8L8.54,14H8.55C9.24,15.19 10.5,16 12,16C12.45,16 12.88,15.91 13.29,15.77L10.89,19.91C7,19.37 4,16.04 4,12M15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12M12,4C14.96,4 17.54,5.61 18.92,8H12C10.06,8 8.45,9.38 8.08,11.21L5.7,7.08C7.16,5.21 9.44,4 12,4M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" /></svg>
|
After Width: | Height: | Size: 807 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M7.97,16L5,19C4.67,19.3 4.23,19.5 3.75,19.5A1.75,1.75 0 0,1 2,17.75V17.5L3,10.12C3.21,7.81 5.14,6 7.5,6H16.5C18.86,6 20.79,7.81 21,10.12L22,17.5V17.75A1.75,1.75 0 0,1 20.25,19.5C19.77,19.5 19.33,19.3 19,19L16.03,16H7.97M7,8V10H5V11H7V13H8V11H10V10H8V8H7M16.5,8A0.75,0.75 0 0,0 15.75,8.75A0.75,0.75 0 0,0 16.5,9.5A0.75,0.75 0 0,0 17.25,8.75A0.75,0.75 0 0,0 16.5,8M14.75,9.75A0.75,0.75 0 0,0 14,10.5A0.75,0.75 0 0,0 14.75,11.25A0.75,0.75 0 0,0 15.5,10.5A0.75,0.75 0 0,0 14.75,9.75M18.25,9.75A0.75,0.75 0 0,0 17.5,10.5A0.75,0.75 0 0,0 18.25,11.25A0.75,0.75 0 0,0 19,10.5A0.75,0.75 0 0,0 18.25,9.75M16.5,11.5A0.75,0.75 0 0,0 15.75,12.25A0.75,0.75 0 0,0 16.5,13A0.75,0.75 0 0,0 17.25,12.25A0.75,0.75 0 0,0 16.5,11.5Z" /></svg>
|
After Width: | Height: | Size: 1023 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12,4A6,6 0 0,0 6,10C6,13.31 8.69,16 12.1,16L11.22,13.77C10.95,13.29 11.11,12.68 11.59,12.4L12.45,11.9C12.93,11.63 13.54,11.79 13.82,12.27L15.74,14.69C17.12,13.59 18,11.9 18,10A6,6 0 0,0 12,4M12,9A1,1 0 0,1 13,10A1,1 0 0,1 12,11A1,1 0 0,1 11,10A1,1 0 0,1 12,9M7,18A1,1 0 0,0 6,19A1,1 0 0,0 7,20A1,1 0 0,0 8,19A1,1 0 0,0 7,18M12.09,13.27L14.58,19.58L17.17,18.08L12.95,12.77L12.09,13.27Z" /></svg>
|
After Width: | Height: | Size: 771 B |
|
@ -0,0 +1,29 @@
|
||||||
|
local dir = os.getenv('HOME') .. '/.config/awesome/theme/icons'
|
||||||
|
|
||||||
|
return {
|
||||||
|
--tags
|
||||||
|
chrome = dir .. '/firefox.svg',
|
||||||
|
code = dir .. '/code-braces.svg',
|
||||||
|
social = dir .. '/forum.svg',
|
||||||
|
folder = dir .. '/folder.svg',
|
||||||
|
music = dir .. '/music.svg',
|
||||||
|
game = dir .. '/google-controller.svg',
|
||||||
|
lab = dir .. '/flask.svg',
|
||||||
|
play = dir .. '/play.svg',
|
||||||
|
--others
|
||||||
|
menu = dir .. '/menu.svg',
|
||||||
|
close = dir .. '/close.svg',
|
||||||
|
logout = dir .. '/logout.svg',
|
||||||
|
sleep = dir .. '/power-sleep.svg',
|
||||||
|
power = dir .. '/power.svg',
|
||||||
|
lock = dir .. '/lock.svg',
|
||||||
|
restart = dir .. '/restart.svg',
|
||||||
|
search = dir .. '/magnify.svg',
|
||||||
|
volume = dir .. '/volume-high.svg',
|
||||||
|
brightness = dir .. '/brightness-7.svg',
|
||||||
|
chart = dir .. '/chart-areaspline.svg',
|
||||||
|
memory = dir .. '/memory.svg',
|
||||||
|
harddisk = dir .. '/harddisk.svg',
|
||||||
|
thermometer = dir .. '/thermometer.svg',
|
||||||
|
plus = dir .. '/plus.svg'
|
||||||
|
}
|
After Width: | Height: | Size: 322 B |
After Width: | Height: | Size: 236 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M12,17A2,2 0 0,0 14,15C14,13.89 13.1,13 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V10C4,8.89 4.9,8 6,8H7V6A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,3A3,3 0 0,0 9,6V8H15V6A3,3 0 0,0 12,3Z" /></svg>
|
After Width: | Height: | Size: 547 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M16,17V14H9V10H16V7L21,12L16,17M14,2A2,2 0 0,1 16,4V6H14V4H5V20H14V18H16V20A2,2 0 0,1 14,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2H14Z" /></svg>
|
After Width: | Height: | Size: 440 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z" /></svg>
|
After Width: | Height: | Size: 569 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M17,17H7V7H17M21,11V9H19V7C19,5.89 18.1,5 17,5H15V3H13V5H11V3H9V5H7C5.89,5 5,5.89 5,7V9H3V11H5V13H3V15H5V17A2,2 0 0,0 7,19H9V21H11V19H13V21H15V19H17A2,2 0 0,0 19,17V15H21V13H19V11M13,13H11V11H13M15,9H9V15H15V9Z" /></svg>
|
After Width: | Height: | Size: 522 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z" /></svg>
|
After Width: | Height: | Size: 358 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M21,3V15.5A3.5,3.5 0 0,1 17.5,19A3.5,3.5 0 0,1 14,15.5A3.5,3.5 0 0,1 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L9,8.6V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V6L21,3Z" /></svg>
|
After Width: | Height: | Size: 532 B |
|
@ -0,0 +1,97 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
version="1.1"
|
||||||
|
id="Capa_1"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
width="163.861px"
|
||||||
|
height="163.861px"
|
||||||
|
viewBox="0 0 163.861 163.861"
|
||||||
|
style="enable-background:new 0 0 163.861 163.861;"
|
||||||
|
xml:space="preserve"
|
||||||
|
sodipodi:docname="play-button-arrowhead.svg"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"><metadata
|
||||||
|
id="metadata41"><rdf:RDF><cc:Work
|
||||||
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
||||||
|
id="defs39" /><sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="920"
|
||||||
|
inkscape:window-height="500"
|
||||||
|
id="namedview37"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.55861271"
|
||||||
|
inkscape:cx="105.18391"
|
||||||
|
inkscape:cy="152.94358"
|
||||||
|
inkscape:window-x="988"
|
||||||
|
inkscape:window-y="568"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="Capa_1" />
|
||||||
|
<g
|
||||||
|
id="g4"
|
||||||
|
style="fill:#ffffff">
|
||||||
|
<path
|
||||||
|
d="M34.857,3.613C20.084-4.861,8.107,2.081,8.107,19.106v125.637c0,17.042,11.977,23.975,26.75,15.509L144.67,97.275 c14.778-8.477,14.778-22.211,0-30.686L34.857,3.613z"
|
||||||
|
id="path2"
|
||||||
|
style="fill:#ffffff" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g6">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g8">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g10">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g12">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g14">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g16">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g18">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g20">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g22">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g24">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g26">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g28">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g30">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g32">
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g34">
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z" /></svg>
|
After Width: | Height: | Size: 353 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M18.73,18C15.4,21.69 9.71,22 6,18.64C2.33,15.31 2.04,9.62 5.37,5.93C6.9,4.25 9,3.2 11.27,3C7.96,6.7 8.27,12.39 12,15.71C13.63,17.19 15.78,18 18,18C18.25,18 18.5,18 18.73,18Z" /></svg>
|
After Width: | Height: | Size: 485 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13" /></svg>
|
After Width: | Height: | Size: 526 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z" /></svg>
|
After Width: | Height: | Size: 635 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M2,11L4.05,11.1C4.3,8.83 5.5,6.85 7.25,5.56L6.13,3.84C5.86,3.36 6,2.75 6.5,2.47C7,2.2 7.59,2.36 7.87,2.84L8.8,4.66C9.78,4.24 10.86,4 12,4C13.14,4 14.22,4.24 15.2,4.66L16.13,2.84C16.41,2.36 17,2.2 17.5,2.47C18,2.75 18.14,3.36 17.87,3.84L16.75,5.56C18.5,6.85 19.7,8.83 19.95,11.1L22,11A1,1 0 0,1 23,12A1,1 0 0,1 22,13L19.95,12.9C19.7,15.17 18.5,17.15 16.75,18.44L17.87,20.16C18.14,20.64 18,21.25 17.5,21.53C17,21.8 16.41,21.64 16.13,21.16L15.2,19.34C14.22,19.76 13.14,20 12,20C10.86,20 9.78,19.76 8.8,19.34L7.87,21.16C7.59,21.64 7,21.8 6.5,21.53C6,21.25 5.86,20.64 6.13,20.16L7.25,18.44C5.5,17.15 4.3,15.17 4.05,12.9L2,13A1,1 0 0,1 1,12A1,1 0 0,1 2,11M9.07,11.35C9.2,10.74 9.53,10.2 10,9.79L8.34,7.25C7.11,8.19 6.27,9.6 6.05,11.2L9.07,11.35M12,9C12.32,9 12.62,9.05 12.9,9.14L14.28,6.45C13.58,6.16 12.81,6 12,6C11.19,6 10.42,6.16 9.72,6.45L11.1,9.14C11.38,9.05 11.68,9 12,9M14.93,11.35L17.95,11.2C17.73,9.6 16.89,8.19 15.66,7.25L14,9.79C14.47,10.2 14.8,10.74 14.93,11.35M14.93,12.65C14.8,13.26 14.47,13.8 14,14.21L15.66,16.75C16.89,15.81 17.73,14.4 17.95,12.8L14.93,12.65M12,15C11.68,15 11.38,14.95 11.09,14.86L9.72,17.55C10.42,17.84 11.19,18 12,18C12.81,18 13.58,17.84 14.28,17.55L12.91,14.86C12.62,14.95 12.32,15 12,15M9.07,12.65L6.05,12.8C6.27,14.4 7.11,15.81 8.34,16.75L10,14.21C9.53,13.8 9.2,13.26 9.07,12.65Z" /></svg>
|
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 237 B |
After Width: | Height: | Size: 205 B |
After Width: | Height: | Size: 689 B |
After Width: | Height: | Size: 448 B |
After Width: | Height: | Size: 468 B |
After Width: | Height: | Size: 614 B |
After Width: | Height: | Size: 413 B |
After Width: | Height: | Size: 437 B |
After Width: | Height: | Size: 841 B |
After Width: | Height: | Size: 564 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 542 B |
After Width: | Height: | Size: 165 B |
After Width: | Height: | Size: 284 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M17,17A5,5 0 0,1 12,22A5,5 0 0,1 7,17C7,15.36 7.79,13.91 9,13V5A3,3 0 0,1 12,2A3,3 0 0,1 15,5V13C16.21,13.91 17,15.36 17,17M11,8V14.17C9.83,14.58 9,15.69 9,17A3,3 0 0,0 12,20A3,3 0 0,0 15,17C15,15.69 14.17,14.58 13,14.17V8H11Z" /></svg>
|
After Width: | Height: | Size: 538 B |
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="240" height="240" viewBox="0 0 24 24"><path fill="#ffffff" d="M14,3.23V5.29C16.89,6.15 19,8.83 19,12C19,15.17 16.89,17.84 14,18.7V20.77C18,19.86 21,16.28 21,12C21,7.72 18,4.14 14,3.23M16.5,12C16.5,10.23 15.5,8.71 14,7.97V16C15.5,15.29 16.5,13.76 16.5,12M3,9V15H7L12,20V4L7,9H3Z" /></svg>
|
After Width: | Height: | Size: 527 B |
|
@ -0,0 +1,10 @@
|
||||||
|
local gtable = require('gears.table')
|
||||||
|
local theme = require('theme.theme')
|
||||||
|
|
||||||
|
local final_theme = {}
|
||||||
|
gtable.crush(final_theme, theme.theme)
|
||||||
|
gtable.crush(final_theme, theme.theme)
|
||||||
|
theme.awesome_overrides(final_theme)
|
||||||
|
theme.awesome_overrides(final_theme)
|
||||||
|
|
||||||
|
return final_theme
|
|
@ -0,0 +1,317 @@
|
||||||
|
return {
|
||||||
|
-- Red
|
||||||
|
red = {
|
||||||
|
hue_50 = '#FFEBEE',
|
||||||
|
hue_100 = '#FFCDD2',
|
||||||
|
hue_200 = '#EF9A9A',
|
||||||
|
hue_300 = '#E57373',
|
||||||
|
hue_400 = '#EF5350',
|
||||||
|
hue_500 = '#F44336',
|
||||||
|
hue_600 = '#E53935',
|
||||||
|
hue_700 = '#D32F2F',
|
||||||
|
hue_800 = '#C62828',
|
||||||
|
hue_900 = '#B71C1C',
|
||||||
|
hue_A100 = '#FF8A80',
|
||||||
|
hue_A200 = '#FF5252',
|
||||||
|
hue_A400 = '#FF1744',
|
||||||
|
hue_A700 = '#D50000'
|
||||||
|
},
|
||||||
|
-- Pink
|
||||||
|
pink = {
|
||||||
|
hue_50 = '#FCE4EC',
|
||||||
|
hue_100 = '#F8BBD0',
|
||||||
|
hue_200 = '#F48FB1',
|
||||||
|
hue_300 = '#F06292',
|
||||||
|
hue_400 = '#EC407A',
|
||||||
|
hue_500 = '#E91E63',
|
||||||
|
hue_600 = '#D81B60',
|
||||||
|
hue_700 = '#C2185B',
|
||||||
|
hue_800 = '#AD1457',
|
||||||
|
hue_900 = '#880E4F',
|
||||||
|
hue_A100 = '#FF80AB',
|
||||||
|
hue_A200 = '#FF4081',
|
||||||
|
hue_A400 = '#F50057',
|
||||||
|
hue_A700 = '#C51162'
|
||||||
|
},
|
||||||
|
-- Purple
|
||||||
|
purle = {
|
||||||
|
hue_50 = '#F3E5F5',
|
||||||
|
hue_100 = '#E1BEE7',
|
||||||
|
hue_200 = '#CE93D8',
|
||||||
|
hue_300 = '#BA68C8',
|
||||||
|
hue_400 = '#AB47BC',
|
||||||
|
hue_500 = '#9C27B0',
|
||||||
|
hue_600 = '#8E24AA',
|
||||||
|
hue_700 = '#7B1FA2',
|
||||||
|
hue_800 = '#6A1B9A',
|
||||||
|
hue_900 = '#4A148C',
|
||||||
|
hue_A100 = '#EA80FC',
|
||||||
|
hue_A200 = '#E040FB',
|
||||||
|
hue_A400 = '#D500F9',
|
||||||
|
hue_A700 = '#AA00FF'
|
||||||
|
},
|
||||||
|
-- Deep Purple
|
||||||
|
hue_purple = {
|
||||||
|
hue_50 = '#EDE7F6',
|
||||||
|
hue_100 = '#D1C4E9',
|
||||||
|
hue_200 = '#B39DDB',
|
||||||
|
hue_300 = '#9575CD',
|
||||||
|
hue_400 = '#7E57C2',
|
||||||
|
hue_500 = '#673AB7',
|
||||||
|
hue_600 = '#5E35B1',
|
||||||
|
hue_700 = '#512DA8',
|
||||||
|
hue_800 = '#4527A0',
|
||||||
|
hue_900 = '#311B92',
|
||||||
|
hue_A100 = '#B388FF',
|
||||||
|
hue_A200 = '#7C4DFF',
|
||||||
|
hue_A400 = '#651FFF',
|
||||||
|
hue_A700 = '#6200EA'
|
||||||
|
},
|
||||||
|
-- Indigo
|
||||||
|
indigo = {
|
||||||
|
hue_50 = '#E8EAF6',
|
||||||
|
hue_100 = '#C5CAE9',
|
||||||
|
hue_200 = '#9FA8DA',
|
||||||
|
hue_300 = '#7986CB',
|
||||||
|
hue_400 = '#5C6BC0',
|
||||||
|
hue_500 = '#3F51B5',
|
||||||
|
hue_600 = '#3949AB',
|
||||||
|
hue_700 = '#303F9F',
|
||||||
|
hue_800 = '#283593',
|
||||||
|
hue_900 = '#1A237E',
|
||||||
|
hue_A100 = '#8C9EFF',
|
||||||
|
hue_A200 = '#536DFE',
|
||||||
|
hue_A400 = '#3D5AFE',
|
||||||
|
hue_A700 = '#304FFE'
|
||||||
|
},
|
||||||
|
-- Blue
|
||||||
|
blue = {
|
||||||
|
hue_50 = '#E3F2FD',
|
||||||
|
hue_100 = '#BBDEFB',
|
||||||
|
hue_200 = '#90CAF9',
|
||||||
|
hue_300 = '#64B5F6',
|
||||||
|
hue_400 = '#42A5F5',
|
||||||
|
hue_500 = '#2196F3',
|
||||||
|
hue_600 = '#1E88E5',
|
||||||
|
hue_700 = '#1976D2',
|
||||||
|
hue_800 = '#1565C0',
|
||||||
|
hue_900 = '#0D47A1',
|
||||||
|
hue_A100 = '#82B1FF',
|
||||||
|
hue_A200 = '#448AFF',
|
||||||
|
hue_A400 = '#2979FF',
|
||||||
|
hue_A700 = '#2962FF'
|
||||||
|
},
|
||||||
|
-- Light Blue
|
||||||
|
hue_blue = {
|
||||||
|
hue_50 = '#E1F5FE',
|
||||||
|
hue_100 = '#B3E5FC',
|
||||||
|
hue_200 = '#81D4FA',
|
||||||
|
hue_300 = '#4FC3F7',
|
||||||
|
hue_400 = '#29B6F6',
|
||||||
|
hue_500 = '#03A9F4',
|
||||||
|
hue_600 = '#039BE5',
|
||||||
|
hue_700 = '#0288D1',
|
||||||
|
hue_800 = '#0277BD',
|
||||||
|
hue_900 = '#01579B',
|
||||||
|
hue_A100 = '#80D8FF',
|
||||||
|
hue_A200 = '#40C4FF',
|
||||||
|
hue_A400 = '#00B0FF',
|
||||||
|
hue_A700 = '#0091EA'
|
||||||
|
},
|
||||||
|
-- Cyan
|
||||||
|
cyan = {
|
||||||
|
hue_50 = '#E0F7FA',
|
||||||
|
hue_100 = '#B2EBF2',
|
||||||
|
hue_200 = '#80DEEA',
|
||||||
|
hue_300 = '#4DD0E1',
|
||||||
|
hue_400 = '#26C6DA',
|
||||||
|
hue_500 = '#00BCD4',
|
||||||
|
hue_600 = '#00ACC1',
|
||||||
|
hue_700 = '#0097A7',
|
||||||
|
hue_800 = '#00838F',
|
||||||
|
hue_900 = '#006064',
|
||||||
|
hue_A100 = '#84FFFF',
|
||||||
|
hue_A200 = '#18FFFF',
|
||||||
|
hue_A400 = '#00E5FF',
|
||||||
|
hue_A700 = '#00B8D4'
|
||||||
|
},
|
||||||
|
-- Teal
|
||||||
|
teal = {
|
||||||
|
hue_50 = '#E0F2F1',
|
||||||
|
hue_100 = '#B2DFDB',
|
||||||
|
hue_200 = '#80CBC4',
|
||||||
|
hue_300 = '#4DB6AC',
|
||||||
|
hue_400 = '#26A69A',
|
||||||
|
hue_500 = '#009688',
|
||||||
|
hue_600 = '#00897B',
|
||||||
|
hue_700 = '#00796B',
|
||||||
|
hue_800 = '#00695C',
|
||||||
|
hue_900 = '#004D40',
|
||||||
|
hue_A100 = '#A7FFEB',
|
||||||
|
hue_A200 = '#64FFDA',
|
||||||
|
hue_A400 = '#1DE9B6',
|
||||||
|
hue_A700 = '#00BFA5'
|
||||||
|
},
|
||||||
|
-- Green
|
||||||
|
green = {
|
||||||
|
hue_50 = '#E8F5E9',
|
||||||
|
hue_100 = '#C8E6C9',
|
||||||
|
hue_200 = '#A5D6A7',
|
||||||
|
hue_300 = '#81C784',
|
||||||
|
hue_400 = '#66BB6A',
|
||||||
|
hue_500 = '#4CAF50',
|
||||||
|
hue_600 = '#43A047',
|
||||||
|
hue_700 = '#388E3C',
|
||||||
|
hue_800 = '#2E7D32',
|
||||||
|
hue_900 = '#1B5E20',
|
||||||
|
hue_A100 = '#B9F6CA',
|
||||||
|
hue_A200 = '#69F0AE',
|
||||||
|
hue_A400 = '#00E676',
|
||||||
|
hue_A700 = '#00C853'
|
||||||
|
},
|
||||||
|
-- Light Green
|
||||||
|
hue_green = {
|
||||||
|
hue_50 = '#F1F8E9',
|
||||||
|
hue_100 = '#DCEDC8',
|
||||||
|
hue_200 = '#C5E1A5',
|
||||||
|
hue_300 = '#AED581',
|
||||||
|
hue_400 = '#9CCC65',
|
||||||
|
hue_500 = '#8BC34A',
|
||||||
|
hue_600 = '#7CB342',
|
||||||
|
hue_700 = '#689F38',
|
||||||
|
hue_800 = '#558B2F',
|
||||||
|
hue_900 = '#33691E',
|
||||||
|
hue_A100 = '#CCFF90',
|
||||||
|
hue_A200 = '#B2FF59',
|
||||||
|
hue_A400 = '#76FF03',
|
||||||
|
hue_A700 = '#64DD17'
|
||||||
|
},
|
||||||
|
-- Lime
|
||||||
|
lime = {
|
||||||
|
hue_50 = '#F9FBE7',
|
||||||
|
hue_100 = '#F0F4C3',
|
||||||
|
hue_200 = '#E6EE9C',
|
||||||
|
hue_300 = '#DCE775',
|
||||||
|
hue_400 = '#D4E157',
|
||||||
|
hue_500 = '#CDDC39',
|
||||||
|
hue_600 = '#C0CA33',
|
||||||
|
hue_700 = '#AFB42B',
|
||||||
|
hue_800 = '#9E9D24',
|
||||||
|
hue_900 = '#827717',
|
||||||
|
hue_A100 = '#F4FF81',
|
||||||
|
hue_A200 = '#EEFF41',
|
||||||
|
hue_A400 = '#C6FF00',
|
||||||
|
hue_A700 = '#AEEA00'
|
||||||
|
},
|
||||||
|
-- Yellow
|
||||||
|
yellow = {
|
||||||
|
hue_50 = '#FFFDE7',
|
||||||
|
hue_100 = '#FFF9C4',
|
||||||
|
hue_200 = '#FFF59D',
|
||||||
|
hue_300 = '#FFF176',
|
||||||
|
hue_400 = '#FFEE58',
|
||||||
|
hue_500 = '#FFEB3B',
|
||||||
|
hue_600 = '#FDD835',
|
||||||
|
hue_700 = '#FBC02D',
|
||||||
|
hue_800 = '#F9A825',
|
||||||
|
hue_900 = '#F57F17',
|
||||||
|
hue_A100 = '#FFFF8D',
|
||||||
|
hue_A200 = '#FFFF00',
|
||||||
|
hue_A400 = '#FFEA00',
|
||||||
|
hue_A700 = '#FFD600'
|
||||||
|
},
|
||||||
|
-- Amber
|
||||||
|
amber = {
|
||||||
|
hue_50 = '#FFF8E1',
|
||||||
|
hue_100 = '#FFECB3',
|
||||||
|
hue_200 = '#FFE082',
|
||||||
|
hue_300 = '#FFD54F',
|
||||||
|
hue_400 = '#FFCA28',
|
||||||
|
hue_500 = '#FFC107',
|
||||||
|
hue_600 = '#FFB300',
|
||||||
|
hue_700 = '#FFA000',
|
||||||
|
hue_800 = '#FF8F00',
|
||||||
|
hue_900 = '#FF6F00',
|
||||||
|
hue_A100 = '#FFE57F',
|
||||||
|
hue_A200 = '#FFD740',
|
||||||
|
hue_A400 = '#FFC400',
|
||||||
|
hue_A700 = '#FFAB00'
|
||||||
|
},
|
||||||
|
-- Orange
|
||||||
|
orange = {
|
||||||
|
hue_50 = '#FFF3E0',
|
||||||
|
hue_100 = '#FFE0B2',
|
||||||
|
hue_200 = '#FFCC80',
|
||||||
|
hue_300 = '#FFB74D',
|
||||||
|
hue_400 = '#FFA726',
|
||||||
|
hue_500 = '#FF9800',
|
||||||
|
hue_600 = '#FB8C00',
|
||||||
|
hue_700 = '#F57C00',
|
||||||
|
hue_800 = '#EF6C00',
|
||||||
|
hue_900 = '#E65100',
|
||||||
|
hue_A100 = '#FFD180',
|
||||||
|
hue_A200 = '#FFAB40',
|
||||||
|
hue_A400 = '#FF9100',
|
||||||
|
hue_A700 = '#FF6D00'
|
||||||
|
},
|
||||||
|
-- Deep Orange
|
||||||
|
deep_orange = {
|
||||||
|
hue_50 = '#FBE9E7',
|
||||||
|
hue_100 = '#FFCCBC',
|
||||||
|
hue_200 = '#FFAB91',
|
||||||
|
hue_300 = '#FF8A65',
|
||||||
|
hue_400 = '#FF7043',
|
||||||
|
hue_500 = '#FF5722',
|
||||||
|
hue_600 = '#F4511E',
|
||||||
|
hue_700 = '#E64A19',
|
||||||
|
hue_800 = '#D84315',
|
||||||
|
hue_900 = '#BF360C',
|
||||||
|
hue_A100 = '#FF9E80',
|
||||||
|
hue_A200 = '#FF6E40',
|
||||||
|
hue_A400 = '#FF3D00',
|
||||||
|
hue_A700 = '#DD2C00'
|
||||||
|
},
|
||||||
|
-- Brown
|
||||||
|
brown = {
|
||||||
|
hue_50 = '#EFEBE9',
|
||||||
|
hue_100 = '#D7CCC8',
|
||||||
|
hue_200 = '#BCAAA4',
|
||||||
|
hue_300 = '#A1887F',
|
||||||
|
hue_400 = '#8D6E63',
|
||||||
|
hue_500 = '#795548',
|
||||||
|
hue_600 = '#6D4C41',
|
||||||
|
hue_700 = '#5D4037',
|
||||||
|
hue_800 = '#4E342E',
|
||||||
|
hue_900 = '#3E2723'
|
||||||
|
},
|
||||||
|
-- Grey
|
||||||
|
grey = {
|
||||||
|
hue_50 = '#FAFAFA',
|
||||||
|
hue_100 = '#F5F5F5',
|
||||||
|
hue_200 = '#EEEEEE',
|
||||||
|
hue_300 = '#E0E0E0',
|
||||||
|
hue_400 = '#BDBDBD',
|
||||||
|
hue_500 = '#9E9E9E',
|
||||||
|
hue_600 = '#757575',
|
||||||
|
hue_700 = '#616161',
|
||||||
|
hue_800 = '#424242',
|
||||||
|
hue_900 = '#212121'
|
||||||
|
},
|
||||||
|
-- Blue Grey
|
||||||
|
blue_grey = {
|
||||||
|
hue_50 = '#ECEFF1',
|
||||||
|
hue_100 = '#CFD8DC',
|
||||||
|
hue_200 = '#B0BEC5',
|
||||||
|
hue_300 = '#90A4AE',
|
||||||
|
hue_400 = '#78909C',
|
||||||
|
hue_500 = '#607D8B',
|
||||||
|
hue_600 = '#546E7A',
|
||||||
|
hue_700 = '#455A64',
|
||||||
|
hue_800 = '#37474F',
|
||||||
|
hue_900 = '#263238'
|
||||||
|
},
|
||||||
|
-- Black
|
||||||
|
black = '#000000',
|
||||||
|
-- White
|
||||||
|
white = '#FFFFFF'
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
local filesystem = require('gears.filesystem')
|
||||||
|
local color_schemes = require('theme.color-schemes')
|
||||||
|
local theme_dir = filesystem.get_configuration_dir() .. '/theme'
|
||||||
|
local gears = require('gears')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
local theme = {}
|
||||||
|
|
||||||
|
-- Color Scheme
|
||||||
|
theme.primary = color_schemes.flat_remix_teal.primary
|
||||||
|
theme.accent = color_schemes.flat_remix_teal.accent
|
||||||
|
|
||||||
|
local awesome_overrides = function(theme)
|
||||||
|
theme.dir = os.getenv('HOME') .. '/.config/awesome/theme'
|
||||||
|
|
||||||
|
theme.icons = theme.dir .. '/.config/awesome/theme/icons/'
|
||||||
|
theme.font = 'Product Sans Regular 9' -- Glyphs don't work properly with this (#442)
|
||||||
|
--theme.font = 'Robotomono nerd font 9' -- Glyphs don't work properly with this (#442)
|
||||||
|
theme.font_large = 'Product Sans Regular 11'
|
||||||
|
theme.icon_font = 'Product Sans Medium 10' -- Fira mono patched version
|
||||||
|
--theme.icon_font = 'firamono nerd font 11' -- Fira mono patched version
|
||||||
|
|
||||||
|
-- Layout icons
|
||||||
|
theme.layout_txt_tile = "|til|"
|
||||||
|
theme.layout_txt_max = "|max|"
|
||||||
|
theme.layout_txt_fair = "|fai|"
|
||||||
|
theme.layout_txt_spiral_dwindle = "|spi|"
|
||||||
|
theme.layout_txt_floating = "|flt|"
|
||||||
|
|
||||||
|
-- Taglist
|
||||||
|
theme.taglist_font = theme.font
|
||||||
|
theme.taglist_bg_empty = theme.primary.hue_100
|
||||||
|
theme.taglist_bg_occupied = 'linear:0,0:0,' .. dpi(32) .. ':0,' ..
|
||||||
|
theme.primary.hue_200 .. ':0.1,' ..
|
||||||
|
theme.primary.hue_200 .. ':0.1,' ..
|
||||||
|
theme.primary.hue_100 .. ':0.9,' ..
|
||||||
|
theme.primary.hue_100
|
||||||
|
theme.taglist_bg_urgent = 'linear:0,0:0,' .. dpi(48) .. ':0,' ..
|
||||||
|
theme.accent.hue_700 .. ':0.07,' ..
|
||||||
|
theme.accent.hue_700 .. ':0.07,' ..
|
||||||
|
theme.primary.hue_100 .. ':1,' ..
|
||||||
|
theme.primary.hue_100
|
||||||
|
theme.taglist_bg_focus = theme.accent.hue_200
|
||||||
|
theme.taglist_fg_focus = theme.primary.hue_100
|
||||||
|
|
||||||
|
-- Tasklist
|
||||||
|
theme.tasklist_font = theme.font
|
||||||
|
theme.tasklist_bg_normal = theme.primary.hue_200
|
||||||
|
theme.tasklist_bg_focus = theme.primary.hue_100
|
||||||
|
theme.tasklist_bg_urgent = theme.primary.hue_200
|
||||||
|
|
||||||
|
-- Icons
|
||||||
|
theme.icon_theme = 'Flat-Remix-Green-Dark'
|
||||||
|
|
||||||
|
-- Client
|
||||||
|
theme.gaps = dpi(2)
|
||||||
|
theme.border_width = dpi(2)
|
||||||
|
theme.border_focus = theme.accent.hue_200
|
||||||
|
theme.border_normal = theme.primary.hue_100
|
||||||
|
theme.gap_single_client = true
|
||||||
|
theme.bg_normal = theme.primary.hue_100
|
||||||
|
end
|
||||||
|
return {theme = theme, awesome_overrides = awesome_overrides}
|
After Width: | Height: | Size: 1.6 MiB |
After Width: | Height: | Size: 3.2 MiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 796 KiB |
After Width: | Height: | Size: 14 MiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 1.9 MiB |
After Width: | Height: | Size: 1.4 MiB |
After Width: | Height: | Size: 2.4 MiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 1.2 MiB |
|
@ -0,0 +1,124 @@
|
||||||
|
-------------------------------------------------
|
||||||
|
-- Battery Widget for Awesome Window Manager
|
||||||
|
-- Shows the battery status using the ACPI tool
|
||||||
|
-- More details could be found here:
|
||||||
|
-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/battery-widget
|
||||||
|
-- @author Pavel Makhov
|
||||||
|
-- @copyright 2017 Pavel Makhov
|
||||||
|
-------------------------------------------------
|
||||||
|
local awful = require('awful')
|
||||||
|
local watch = require('awful.widget.watch')
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local beautiful = require('beautiful')
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
-- acpi sample outputs
|
||||||
|
-- Battery 0: Discharging, 75%, 01:51:38 remaining
|
||||||
|
-- Battery 0: Charging, 53%, 00:57:43 until charged
|
||||||
|
|
||||||
|
local percentage = wibox.widget.textbox()
|
||||||
|
local battery_icon = wibox.widget.textbox()
|
||||||
|
battery_icon.font = beautiful.icon_font
|
||||||
|
|
||||||
|
local battery_popup = awful.tooltip({
|
||||||
|
objects = {percentage},
|
||||||
|
mode = 'outside',
|
||||||
|
align = 'left',
|
||||||
|
preferred_positions = {'right', 'left', 'top', 'bottom'}
|
||||||
|
})
|
||||||
|
|
||||||
|
watch('acpi -i', 10, function(_, stdout)
|
||||||
|
local battery_info = {}
|
||||||
|
local capacities = {}
|
||||||
|
for s in stdout:gmatch('[^\r\n]+') do
|
||||||
|
local status, charge_str, time = string.match(s, '.+: (%a+), (%d?%d?%d)%%,?.*')
|
||||||
|
if status ~= nil then
|
||||||
|
table.insert(battery_info, {
|
||||||
|
status = status,
|
||||||
|
charge = tonumber(charge_str)
|
||||||
|
})
|
||||||
|
else
|
||||||
|
local cap_str = string.match(s, '.+:.+last full capacity (%d+)')
|
||||||
|
table.insert(capacities, tonumber(cap_str))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local capacity = 0
|
||||||
|
for _, cap in ipairs(capacities) do
|
||||||
|
capacity = capacity + cap
|
||||||
|
end
|
||||||
|
|
||||||
|
local charge = 0
|
||||||
|
local status
|
||||||
|
for i, batt in ipairs(battery_info) do
|
||||||
|
if batt.charge >= charge then
|
||||||
|
status = batt.status -- use most charged battery status
|
||||||
|
-- this is arbitrary, and maybe another metric should be used
|
||||||
|
end
|
||||||
|
|
||||||
|
charge = charge + batt.charge * capacities[i]
|
||||||
|
end
|
||||||
|
charge = charge / capacity
|
||||||
|
|
||||||
|
battery_popup.text = string.gsub(stdout, '\n$', '')
|
||||||
|
percentage.text = math.floor(charge)
|
||||||
|
|
||||||
|
if status == 'Charging' then
|
||||||
|
battery_icon.text = ''
|
||||||
|
if math.floor(charge) <= 20 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 30 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 40 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 60 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 80 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 90 then
|
||||||
|
--battery_icon.text = ''
|
||||||
|
battery_icon.text = '90'
|
||||||
|
elseif math.floor(charge) <= 100 then
|
||||||
|
--battery_icon.text = ''
|
||||||
|
battery_icon.text = '90'
|
||||||
|
end
|
||||||
|
elseif status == 'Full' then
|
||||||
|
battery_icon.text = ''
|
||||||
|
else
|
||||||
|
if math.floor(charge) <= 10 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 20 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 30 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 40 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 50 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 60 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 60 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 80 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
elseif math.floor(charge) <= 90 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
battery_icon.text = '90'
|
||||||
|
elseif math.floor(charge) <= 100 then
|
||||||
|
battery_icon.text = ''
|
||||||
|
battery_icon.text = '90'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
collectgarbage('collect')
|
||||||
|
end)
|
||||||
|
|
||||||
|
return wibox.widget {
|
||||||
|
wibox.widget{
|
||||||
|
battery_icon,
|
||||||
|
fg = beautiful.accent.hue_300,
|
||||||
|
widget = wibox.container.background
|
||||||
|
},
|
||||||
|
percentage,
|
||||||
|
spacing = dpi(2),
|
||||||
|
layout = wibox.layout.fixed.horizontal
|
||||||
|
}
|
|
@ -0,0 +1,191 @@
|
||||||
|
-------------------------------------------------
|
||||||
|
-- Battery Widget for Awesome Window Manager
|
||||||
|
-- Shows the battery status using the ACPI tool
|
||||||
|
-- More details could be found here:
|
||||||
|
-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/battery-widget
|
||||||
|
|
||||||
|
-- @author Pavel Makhov
|
||||||
|
-- @copyright 2017 Pavel Makhov
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
local awful = require("awful")
|
||||||
|
local naughty = require("naughty")
|
||||||
|
local watch = require("awful.widget.watch")
|
||||||
|
local wibox = require("wibox")
|
||||||
|
local gfs = require("gears.filesystem")
|
||||||
|
local dpi = require('beautiful').xresources.apply_dpi
|
||||||
|
|
||||||
|
-- acpi sample outputs
|
||||||
|
-- Battery 0: Discharging, 75%, 01:51:38 remaining
|
||||||
|
-- Battery 0: Charging, 53%, 00:57:43 until charged
|
||||||
|
|
||||||
|
local HOME = os.getenv("HOME")
|
||||||
|
|
||||||
|
local battery_widget = {}
|
||||||
|
local function worker(args)
|
||||||
|
local args = args or {}
|
||||||
|
|
||||||
|
local bat_num = '1'
|
||||||
|
local font = args.font or 'Play 8'
|
||||||
|
local path_to_icons = args.path_to_icons or "/usr/share/icons/Arc/status/symbolic/"
|
||||||
|
local show_current_level = args.show_current_level or false
|
||||||
|
local margin_left = args.margin_left or 0
|
||||||
|
local margin_right = args.margin_right or 0
|
||||||
|
|
||||||
|
local display_notification = args.display_notification or false
|
||||||
|
local position = args.notification_position or "top_right"
|
||||||
|
local timeout = args.timeout or 10
|
||||||
|
|
||||||
|
local warning_msg_title = args.warning_msg_title or 'Huston, we have a problem'
|
||||||
|
local warning_msg_text = args.warning_msg_text or 'Battery is dying'
|
||||||
|
local warning_msg_position = args.warning_msg_position or 'bottom_right'
|
||||||
|
local warning_msg_icon = args.warning_msg_icon or HOME .. '/.config/awesome/awesome-wm-widgets/batteryarc-widget/spaceman.jpg'
|
||||||
|
local enable_battery_warning = args.enable_battery_warning
|
||||||
|
if enable_battery_warning == nil then
|
||||||
|
enable_battery_warning = true
|
||||||
|
end
|
||||||
|
|
||||||
|
local bat_expr = 'Battery ' .. bat_num
|
||||||
|
if not gfs.dir_readable(path_to_icons) then
|
||||||
|
naughty.notify{
|
||||||
|
title = "Battery Widget",
|
||||||
|
text = "Folder with icons doesn't exist: " .. path_to_icons,
|
||||||
|
preset = naughty.config.presets.critical
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
local icon_widget = wibox.widget {
|
||||||
|
{
|
||||||
|
id = "icon",
|
||||||
|
widget = wibox.widget.imagebox,
|
||||||
|
resize = false
|
||||||
|
},
|
||||||
|
layout = wibox.container.margin(_, 0, 0, 3)
|
||||||
|
}
|
||||||
|
local level_widget = wibox.widget {
|
||||||
|
font = font,
|
||||||
|
widget = wibox.widget.textbox
|
||||||
|
}
|
||||||
|
|
||||||
|
battery_widget = wibox.widget {
|
||||||
|
icon_widget,
|
||||||
|
level_widget,
|
||||||
|
layout = wibox.layout.fixed.horizontal,
|
||||||
|
}
|
||||||
|
-- Popup with battery info
|
||||||
|
-- One way of creating a pop-up notification - naughty.notify
|
||||||
|
local notification
|
||||||
|
local function show_battery_status(batteryType)
|
||||||
|
awful.spawn.easy_async('bash -c "acpi | grep \'' .. bat_expr .. '\'"',
|
||||||
|
function(stdout, _, _, _)
|
||||||
|
naughty.destroy(notification)
|
||||||
|
notification = naughty.notify{
|
||||||
|
text = stdout,
|
||||||
|
title = "Battery status",
|
||||||
|
icon = path_to_icons .. batteryType .. ".svg",
|
||||||
|
icon_size = dpi(16),
|
||||||
|
position = position,
|
||||||
|
timeout = 5, hover_timeout = 0.5,
|
||||||
|
width = 200,
|
||||||
|
screen = mouse.screen
|
||||||
|
}
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Alternative to naughty.notify - tooltip. You can compare both and choose the preferred one
|
||||||
|
--battery_popup = awful.tooltip({objects = {battery_widget}})
|
||||||
|
|
||||||
|
-- To use colors from beautiful theme put
|
||||||
|
-- following lines in rc.lua before require("battery"):
|
||||||
|
-- beautiful.tooltip_fg = beautiful.fg_normal
|
||||||
|
-- beautiful.tooltip_bg = beautiful.bg_normal
|
||||||
|
|
||||||
|
local function show_battery_warning()
|
||||||
|
naughty.notify {
|
||||||
|
icon = warning_msg_icon,
|
||||||
|
icon_size = 100,
|
||||||
|
text = warning_msg_text,
|
||||||
|
title = warning_msg_title,
|
||||||
|
timeout = 25, -- show the warning for a longer time
|
||||||
|
hover_timeout = 0.5,
|
||||||
|
position = warning_msg_position,
|
||||||
|
bg = "#F06060",
|
||||||
|
fg = "#EEE9EF",
|
||||||
|
width = 300,
|
||||||
|
screen = mouse.screen
|
||||||
|
}
|
||||||
|
end
|
||||||
|
local last_battery_check = os.time()
|
||||||
|
local batteryType = "battery-good-symbolic"
|
||||||
|
|
||||||
|
watch('bash -c "acpi -i | grep \'' .. bat_expr .. '\'"', timeout,
|
||||||
|
function(widget, stdout, stderr, exitreason, exitcode)
|
||||||
|
local battery_info = {}
|
||||||
|
local capacities = {}
|
||||||
|
for s in stdout:gmatch("[^\r\n]+") do
|
||||||
|
local status, charge_str, time = string.match(s, '.+: (%a+), (%d?%d?%d)%%,?(.*)')
|
||||||
|
if status ~= nil then
|
||||||
|
table.insert(battery_info, {status = status, charge = tonumber(charge_str)})
|
||||||
|
else
|
||||||
|
local cap_str = string.match(s, '.+:.+last full capacity (%d+)')
|
||||||
|
table.insert(capacities, tonumber(cap_str))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local capacity = 0
|
||||||
|
for i, cap in ipairs(capacities) do
|
||||||
|
capacity = capacity + cap
|
||||||
|
end
|
||||||
|
|
||||||
|
local charge = 0
|
||||||
|
local status
|
||||||
|
for i, batt in ipairs(battery_info) do
|
||||||
|
if batt.charge >= charge then
|
||||||
|
status = batt.status -- use most charged battery status
|
||||||
|
-- this is arbitrary, and maybe another metric should be used
|
||||||
|
end
|
||||||
|
|
||||||
|
charge = charge + batt.charge * capacities[i]
|
||||||
|
end
|
||||||
|
charge = charge / capacity
|
||||||
|
|
||||||
|
if show_current_level then
|
||||||
|
level_widget.text = string.format('%d%%', charge)
|
||||||
|
end
|
||||||
|
|
||||||
|
if (charge >= 0 and charge < 15) then
|
||||||
|
batteryType = "battery-empty%s-symbolic"
|
||||||
|
if enable_battery_warning and status ~= 'Charging' and os.difftime(os.time(), last_battery_check) > 300 then
|
||||||
|
-- if 5 minutes have elapsed since the last warning
|
||||||
|
last_battery_check = os.time()
|
||||||
|
|
||||||
|
show_battery_warning()
|
||||||
|
end
|
||||||
|
elseif (charge >= 15 and charge < 40) then batteryType = "battery-caution%s-symbolic"
|
||||||
|
elseif (charge >= 40 and charge < 60) then batteryType = "battery-low%s-symbolic"
|
||||||
|
elseif (charge >= 60 and charge < 80) then batteryType = "battery-good%s-symbolic"
|
||||||
|
elseif (charge >= 80 and charge <= 100) then batteryType = "battery-full%s-symbolic"
|
||||||
|
end
|
||||||
|
|
||||||
|
if status == 'Charging' then
|
||||||
|
batteryType = string.format(batteryType, '-charging')
|
||||||
|
else
|
||||||
|
batteryType = string.format(batteryType, '')
|
||||||
|
end
|
||||||
|
|
||||||
|
widget.icon:set_image(path_to_icons .. batteryType .. ".svg")
|
||||||
|
|
||||||
|
-- Update popup text
|
||||||
|
-- battery_popup.text = string.gsub(stdout, "\n$", "")
|
||||||
|
end,
|
||||||
|
icon_widget)
|
||||||
|
|
||||||
|
if display_notification then
|
||||||
|
battery_widget:connect_signal("mouse::enter", function() show_battery_status(batteryType) end)
|
||||||
|
battery_widget:connect_signal("mouse::leave", function() naughty.destroy(notification) end)
|
||||||
|
end
|
||||||
|
return wibox.container.margin(battery_widget, margin_left, margin_right)
|
||||||
|
end
|
||||||
|
|
||||||
|
return setmetatable(battery_widget, { __call = function(_, ...) return worker(...) end })
|
|
@ -0,0 +1,49 @@
|
||||||
|
local wibox = require('wibox')
|
||||||
|
local mat_list_item = require('widget.material.list-item')
|
||||||
|
local mat_slider = require('widget.material.slider')
|
||||||
|
local mat_icon_button = require('widget.material.icon-button')
|
||||||
|
local clickable_container = require('widget.material.clickable-container')
|
||||||
|
local icons = require('theme.icons')
|
||||||
|
local watch = require('awful.widget.watch')
|
||||||
|
local spawn = require('awful.spawn')
|
||||||
|
|
||||||
|
local slider =
|
||||||
|
wibox.widget {
|
||||||
|
read_only = false,
|
||||||
|
widget = mat_slider
|
||||||
|
}
|
||||||
|
|
||||||
|
slider:connect_signal(
|
||||||
|
'property::value',
|
||||||
|
function()
|
||||||
|
spawn('xbacklight -set ' .. math.max(slider.value, 5))
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
watch(
|
||||||
|
[[bash -c "xbacklight -get"]],
|
||||||
|
1,
|
||||||
|
function(widget, stdout, stderr, exitreason, exitcode)
|
||||||
|
local brightness = string.match(stdout, '(%d+)')
|
||||||
|
|
||||||
|
slider:set_value(tonumber(brightness))
|
||||||
|
collectgarbage('collect')
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
local icon =
|
||||||
|
wibox.widget {
|
||||||
|
image = icons.brightness,
|
||||||
|
widget = wibox.widget.imagebox
|
||||||
|
}
|
||||||
|
|
||||||
|
local button = mat_icon_button(icon)
|
||||||
|
|
||||||
|
local brightness_setting =
|
||||||
|
wibox.widget {
|
||||||
|
button,
|
||||||
|
slider,
|
||||||
|
widget = mat_list_item
|
||||||
|
}
|
||||||
|
|
||||||
|
return brightness_setting
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Calendar Widget
|
||||||
|
|
||||||
|
Calendar widget for Awesome WM - slightly improved version of the `wibox.widget.calendar`.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- mouse support: scroll up - shows next month, scroll down - previous
|
||||||
|
- themes:
|
||||||
|
|
||||||
|
| Name | Screenshot |
|
||||||
|
|---|---|
|
||||||
|
|nord (default) |  |
|
||||||
|
| outrun |  |
|
||||||
|
| light |  |
|
||||||
|
| dark |  |
|
||||||
|
|
||||||
|
- setup widget placement
|
||||||
|
|
||||||
|
top center - in case you clock is centered:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
top right - for default awesome config:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
bottom right - in case your wibar at the bottom:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## How to use
|
||||||
|
|
||||||
|
This widget needs an 'anchor' - another widget which triggers visibility of the calendar. Default `mytextclock` is the perfect candidate!
|
||||||
|
Just after mytextclock is instantiated, create the widget and add the mouse listener to it.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
local calendar_widget = require("awesome-wm-widgets.calendar-widget.calendar")
|
||||||
|
-- ...
|
||||||
|
-- Create a textclock widget
|
||||||
|
mytextclock = wibox.widget.textclock()
|
||||||
|
-- default
|
||||||
|
local cw = calendar_widget()
|
||||||
|
-- or customized
|
||||||
|
local cw = calendar_widget({
|
||||||
|
theme = 'outrun',
|
||||||
|
placement = 'bottom_right'
|
||||||
|
})
|
||||||
|
mytextclock:connect_signal("button::press",
|
||||||
|
function(_, _, _, button)
|
||||||
|
if button == 1 then cw.toggle() end
|
||||||
|
end)
|
||||||
|
```
|
|
@ -0,0 +1,235 @@
|
||||||
|
-------------------------------------------------
|
||||||
|
-- Calendar Widget for Awesome Window Manager
|
||||||
|
-- Shows the current month and supports scroll up/down to switch month
|
||||||
|
-- More details could be found here:
|
||||||
|
-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/calendar-widget
|
||||||
|
|
||||||
|
-- @author Pavel Makhov
|
||||||
|
-- @copyright 2019 Pavel Makhov
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
local awful = require("awful")
|
||||||
|
local beautiful = require("beautiful")
|
||||||
|
local wibox = require("wibox")
|
||||||
|
local gears = require("gears")
|
||||||
|
local naughty = require("naughty")
|
||||||
|
|
||||||
|
local calendar_widget = {}
|
||||||
|
|
||||||
|
local function worker(args)
|
||||||
|
|
||||||
|
local calendar_themes = {
|
||||||
|
nord = {
|
||||||
|
bg = '#2E3440',
|
||||||
|
fg = '#D8DEE9',
|
||||||
|
focus_date_bg = '#88C0D0',
|
||||||
|
focus_date_fg = '#000000',
|
||||||
|
weekend_day_bg = '#3B4252',
|
||||||
|
weekday_fg = '#88C0D0',
|
||||||
|
header_fg = '#E5E9F0',
|
||||||
|
border = '#4C566A'
|
||||||
|
},
|
||||||
|
outrun = {
|
||||||
|
bg = '#0d0221',
|
||||||
|
fg = '#D8DEE9',
|
||||||
|
focus_date_bg = '#650d89',
|
||||||
|
focus_date_fg = '#2de6e2',
|
||||||
|
weekend_day_bg = '#261447',
|
||||||
|
weekday_fg = '#2de6e2',
|
||||||
|
header_fg = '#f6019d',
|
||||||
|
border = '#261447'
|
||||||
|
},
|
||||||
|
dark = {
|
||||||
|
bg = '#000000',
|
||||||
|
fg = '#ffffff',
|
||||||
|
focus_date_bg = '#ffffff',
|
||||||
|
focus_date_fg = '#000000',
|
||||||
|
weekend_day_bg = '#444444',
|
||||||
|
weekday_fg = '#ffffff',
|
||||||
|
header_fg = '#ffffff',
|
||||||
|
border = '#333333'
|
||||||
|
},
|
||||||
|
light = {
|
||||||
|
bg = '#ffffff',
|
||||||
|
fg = '#000000',
|
||||||
|
focus_date_bg = '#000000',
|
||||||
|
focus_date_fg = '#ffffff',
|
||||||
|
weekend_day_bg = '#AAAAAA',
|
||||||
|
weekday_fg = '#000000',
|
||||||
|
header_fg = '#000000',
|
||||||
|
border = '#CCCCCC'
|
||||||
|
},
|
||||||
|
monokai = {
|
||||||
|
bg = '#272822',
|
||||||
|
fg = '#F8F8F2',
|
||||||
|
focus_date_bg = '#AE81FF',
|
||||||
|
focus_date_fg = '#ffffff',
|
||||||
|
weekend_day_bg = '#75715E',
|
||||||
|
weekday_fg = '#FD971F',
|
||||||
|
header_fg = '#F92672',
|
||||||
|
border = '#75715E'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local args = args or {}
|
||||||
|
|
||||||
|
if args.theme ~= nil and calendar_themes[args.theme] == nil then
|
||||||
|
naughty.notify({
|
||||||
|
preset = naughty.config.presets.critical,
|
||||||
|
title = 'Calendar Widget',
|
||||||
|
text = 'Theme "' .. args.theme .. '" not found, fallback to default'})
|
||||||
|
args.theme = 'nord'
|
||||||
|
end
|
||||||
|
|
||||||
|
local theme = args.theme or 'nord'
|
||||||
|
local placement = args.placement or 'top'
|
||||||
|
|
||||||
|
|
||||||
|
local styles = {}
|
||||||
|
local function rounded_shape(size)
|
||||||
|
return function(cr, width, height)
|
||||||
|
gears.shape.rounded_rect(cr, width, height, size)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
styles.month = {
|
||||||
|
padding = 4,
|
||||||
|
bg_color = calendar_themes[theme].bg,
|
||||||
|
border_width = 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
styles.normal = {
|
||||||
|
markup = function(t) return t end,
|
||||||
|
shape = rounded_shape(4)
|
||||||
|
}
|
||||||
|
|
||||||
|
styles.focus = {
|
||||||
|
fg_color = calendar_themes[theme].focus_date_fg,
|
||||||
|
bg_color = calendar_themes[theme].focus_date_bg,
|
||||||
|
markup = function(t) return '<b>' .. t .. '</b>' end,
|
||||||
|
shape = rounded_shape(4)
|
||||||
|
}
|
||||||
|
|
||||||
|
styles.header = {
|
||||||
|
fg_color = calendar_themes[theme].header_fg,
|
||||||
|
bg_color = calendar_themes[theme].bg,
|
||||||
|
markup = function(t) return '<b>' .. t .. '</b>' end
|
||||||
|
}
|
||||||
|
|
||||||
|
styles.weekday = {
|
||||||
|
fg_color = calendar_themes[theme].weekday_fg,
|
||||||
|
bg_color = calendar_themes[theme].bg,
|
||||||
|
markup = function(t) return '<b>' .. t .. '</b>' end,
|
||||||
|
}
|
||||||
|
|
||||||
|
local function decorate_cell(widget, flag, date)
|
||||||
|
if flag == 'monthheader' and not styles.monthheader then
|
||||||
|
flag = 'header'
|
||||||
|
end
|
||||||
|
|
||||||
|
-- highlight only today's day
|
||||||
|
if flag == 'focus' then
|
||||||
|
local today = os.date('*t')
|
||||||
|
if today.month ~= date.month then
|
||||||
|
flag = 'normal'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local props = styles[flag] or {}
|
||||||
|
if props.markup and widget.get_text and widget.set_markup then
|
||||||
|
widget:set_markup(props.markup(widget:get_text()))
|
||||||
|
end
|
||||||
|
-- Change bg color for weekends
|
||||||
|
local d = { year = date.year, month = (date.month or 1), day = (date.day or 1) }
|
||||||
|
local weekday = tonumber(os.date('%w', os.time(d)))
|
||||||
|
local default_bg = (weekday == 0 or weekday == 6) and calendar_themes[theme].weekend_day_bg or calendar_themes[theme].bg
|
||||||
|
local ret = wibox.widget {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
widget,
|
||||||
|
halign = 'center',
|
||||||
|
widget = wibox.container.place
|
||||||
|
},
|
||||||
|
margins = (props.padding or 2) + (props.border_width or 0),
|
||||||
|
widget = wibox.container.margin
|
||||||
|
},
|
||||||
|
shape = props.shape,
|
||||||
|
shape_border_color = props.border_color or '#000000',
|
||||||
|
shape_border_width = props.border_width or 0,
|
||||||
|
fg = props.fg_color or calendar_themes[theme].fg,
|
||||||
|
bg = props.bg_color or default_bg,
|
||||||
|
widget = wibox.container.background
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret
|
||||||
|
end
|
||||||
|
|
||||||
|
local cal = wibox.widget {
|
||||||
|
date = os.date('*t'),
|
||||||
|
font = beautiful.get_font(),
|
||||||
|
fn_embed = decorate_cell,
|
||||||
|
long_weekdays = true,
|
||||||
|
widget = wibox.widget.calendar.month
|
||||||
|
}
|
||||||
|
|
||||||
|
local popup = awful.popup {
|
||||||
|
ontop = true,
|
||||||
|
visible = false,
|
||||||
|
shape = gears.shape.rounded_rect,
|
||||||
|
offset = { y = 5 },
|
||||||
|
border_width = 1,
|
||||||
|
border_color = calendar_themes[theme].border,
|
||||||
|
widget = cal
|
||||||
|
}
|
||||||
|
|
||||||
|
popup:buttons(
|
||||||
|
awful.util.table.join(
|
||||||
|
awful.button({}, 4, function()
|
||||||
|
local a = cal:get_date()
|
||||||
|
a.month = a.month + 1
|
||||||
|
cal:set_date(nil)
|
||||||
|
cal:set_date(a)
|
||||||
|
popup:set_widget(cal)
|
||||||
|
end),
|
||||||
|
awful.button({}, 5, function()
|
||||||
|
local a = cal:get_date()
|
||||||
|
a.month = a.month - 1
|
||||||
|
cal:set_date(nil)
|
||||||
|
cal:set_date(a)
|
||||||
|
popup:set_widget(cal)
|
||||||
|
end)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
function calendar_widget.toggle()
|
||||||
|
|
||||||
|
if popup.visible then
|
||||||
|
-- to faster render the calendar refresh it and just hide
|
||||||
|
cal:set_date(nil) -- the new date is not set without removing the old one
|
||||||
|
cal:set_date(os.date('*t'))
|
||||||
|
popup:set_widget(nil) -- just in case
|
||||||
|
popup:set_widget(cal)
|
||||||
|
popup.visible = not popup.visible
|
||||||
|
else
|
||||||
|
if placement == 'top' then
|
||||||
|
awful.placement.top(popup, { margins = { top = 30 }, parent = awful.screen.focused() })
|
||||||
|
elseif placement == 'top_right' then
|
||||||
|
awful.placement.top_right(popup, { margins = { top = 30, right = 10}, parent = awful.screen.focused() })
|
||||||
|
elseif placement == 'bottom_right' then
|
||||||
|
awful.placement.bottom_right(popup, { margins = { bottom = 30, right = 10}, parent = awful.screen.focused() })
|
||||||
|
else
|
||||||
|
awful.placement.top(popup, { margins = { top = 30 }, parent = awful.screen.focused() })
|
||||||
|
end
|
||||||
|
|
||||||
|
popup.visible = true
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return calendar_widget
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return setmetatable(calendar_widget, { __call = function(_, ...)
|
||||||
|
return worker(...)
|
||||||
|
end })
|
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 130 KiB |