Compare commits

..

5 Commits

22 changed files with 127 additions and 521 deletions

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
# IDEs # IDEs
.idea/ .idea/
.vscode/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-lock"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-lock"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>

Before

Width:  |  Height:  |  Size: 313 B

After

Width:  |  Height:  |  Size: 313 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-log-out"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1="21" y1="12" x2="9" y2="12"></line></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-log-out"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><polyline points="16 17 21 12 16 7"></polyline><line x1="21" y1="12" x2="9" y2="12"></line></svg>

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 359 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-maximize"><path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-maximize"><path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"></path></svg>

Before

Width:  |  Height:  |  Size: 323 B

After

Width:  |  Height:  |  Size: 323 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-minus"><line x1="5" y1="12" x2="19" y2="12"></line></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-minus"><line x1="5" y1="12" x2="19" y2="12"></line></svg>

Before

Width:  |  Height:  |  Size: 253 B

After

Width:  |  Height:  |  Size: 253 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-power"><path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-power"><path d="M18.36 6.64a9 9 0 1 1-12.73 0"></path><line x1="12" y1="2" x2="12" y2="12"></line></svg>

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 300 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-refresh-cw"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-refresh-cw"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"></path></svg>

Before

Width:  |  Height:  |  Size: 392 B

After

Width:  |  Height:  |  Size: 392 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-minimize"><path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-minimize"><path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"></path></svg>

Before

Width:  |  Height:  |  Size: 323 B

After

Width:  |  Height:  |  Size: 323 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-1"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-1"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M15.54 8.46a5 5 0 0 1 0 7.07"></path></svg>

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 320 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-2"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-2"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path></svg>

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 351 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-x"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume-x"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><line x1="23" y1="9" x2="17" y2="15"></line><line x1="17" y1="9" x2="23" y2="15"></line></svg>

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 362 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-volume"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon></svg>

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 272 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-x"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-x"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>

Before

Width:  |  Height:  |  Size: 291 B

After

Width:  |  Height:  |  Size: 291 B

View File

@ -5,7 +5,6 @@
* Copyright: Dave Davenport * Copyright: Dave Davenport
*/ */
* { * {
font: "Source Code Pro 11";
background: #222222; background: #222222;
active-background: #0005; active-background: #0005;
active-background-selected: #fff1; active-background-selected: #fff1;
@ -18,13 +17,11 @@
spacing: 2; spacing: 2;
background-color: #00000000; background-color: #00000000;
border-color: #fff2; border-color: #fff2;
anchor: center; anchor: north;
location: center; location: center;
highlight: bold #fff; highlight: bold #fff;
sidebar-mode: true;
} }
#window { #window {
transparency: "screenshot"; transparency: "screenshot";
background-color: #00000000; background-color: #00000000;
@ -33,26 +30,22 @@
x-offset: 0; x-offset: 0;
y-offset: -10%; y-offset: -10%;
} }
#mainbox { #mainbox {
padding: 0px; padding: 0px;
border: 0; border: 0;
spacing: 1%; spacing: 1%;
} }
#message { #message {
border: 2px; border: 2px;
padding: 1em; padding: 1em;
background-color: @background; background-color: @background;
text-color: @text; text-color: @text;
} }
#textbox normal { #textbox normal {
text-color: @text; text-color: @text;
padding: 0; padding: 0;
border: 0; border: 0;
} }
#listview { #listview {
fixed-height: 1; fixed-height: 1;
border: 2px; border: 2px;
@ -62,62 +55,50 @@
columns: 1; columns: 1;
background-color: @background; background-color: @background;
} }
#element { #element {
border: 0; border: 0;
padding: 2px; padding: 2px;
} }
#element normal.normal { #element normal.normal {
text-color: @text; text-color: @text;
background-color: @background; background-color: @background;
} }
#element normal.urgent { #element normal.urgent {
text-color: @text; text-color: @text;
background-color: @background; background-color: @background;
} }
#element normal.active { #element normal.active {
text-color: @text; text-color: @text;
background-color: @active-background; background-color: @active-background;
} }
#element selected.normal { #element selected.normal {
text-color: @text; text-color: @text;
background-color: #fff1; background-color: #fff1;
} }
#element selected.urgent { #element selected.urgent {
text-color: @text; text-color: @text;
background-color: @background; background-color: @background;
} }
#element selected.active { #element selected.active {
text-color: @text; text-color: @text;
background-color: @active-background-selected; background-color: @active-background-selected;
} }
#element alternate.normal { #element alternate.normal {
text-color: @text; text-color: @text;
background-color: @background; background-color: @background;
} }
#element alternate.urgent { #element alternate.urgent {
text-color: @text; text-color: @text;
background-color: @background; background-color: @background;
} }
#element alternate.active { #element alternate.active {
text-color: @text; text-color: @text;
background-color: @active-background; background-color: @active-background;
} }
#scrollbar { #scrollbar {
border: 0; border: 0;
padding: 0; padding: 0;
} }
#inputbar { #inputbar {
spacing: 0; spacing: 0;
border: 2px; border: 2px;
@ -125,7 +106,6 @@
background-color: @background; background-color: @background;
index: 0; index: 0;
} }
#inputbar normal { #inputbar normal {
foreground-color: @text; foreground-color: @text;
background-color: @background; background-color: @background;
@ -137,27 +117,21 @@
background-color: @background; background-color: @background;
index: 10; index: 10;
} }
#button selected { #button selected {
text-color: @text; text-color: @text;
} }
#inputbar { #inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
} }
#prompt { #prompt {
text-color: @text; text-color: @text;
} }
#entry { #entry {
text-color: @text; text-color: @text;
} }
#case-indicator { #case-indicator {
text-color: @text; text-color: @text;
} }
#textbox-prompt-colon { #textbox-prompt-colon {
expand: false; expand: false;
str: ":"; str: ":";

View File

@ -1,211 +1,3 @@
-- Default configuration file local config = require("default_config")
-- This file will be overridden on update.
-- Copy to `~/.config/awesome/config.lua` to avoid losing your changes.
local awful = require("awful")
local naughty = require("naughty")
local config = {}
local rofi_modes = "drun,window,run"
--
-- Awesome WM
--
config.awesome = {
-- Enable window autofocus on mouse hover
autofocus = true,
-- Enable hotkeys help widget for VIM and other apps
-- when client with a matching name is opened:
hotkeys_popup = true,
-- Application launcher
application_launcher_check = "rofi -version",
application_launcher = "rofi -modi \"" .. rofi_modes .. "\" -show-icons -show drun",
application_launcher_cmd = "rofi -modi \"" .. rofi_modes .. "\" -show run",
-- Screen locker
lock_command = "i3lock --blur=5 -f -k --time-color=ffffffff --date-color=ffffffff --indicator --ring-color=aaaaaaaa",
-- lock_command = "xscreensaver-command -lock",
-- Terminal
terminal = "terminator",
-- Window tiling
tiling = {
-- Available window layouts - order matters
layouts = {
awful.layout.suit.floating,
awful.layout.suit.tile,
awful.layout.suit.tile.left,
awful.layout.suit.tile.bottom,
awful.layout.suit.tile.top,
awful.layout.suit.fair,
awful.layout.suit.fair.horizontal,
-- awful.layout.suit.spiral,
-- awful.layout.suit.spiral.dwindle,
-- awful.layout.suit.max,
-- awful.layout.suit.max.fullscreen,
-- awful.layout.suit.magnifier,
-- awful.layout.suit.corner.nw,
-- awful.layout.suit.corner.ne,
-- awful.layout.suit.corner.sw,
-- awful.layout.suit.corner.se,
},
},
}
-- Default text editor
-- config.awesome.editor = os.getenv("EDITOR") or "nano"
-- config.awesome.editor = "vi"
config.awesome.editor = "code"
--
-- Keys / Hotkeys / Shortcuts
--
-- To disable a shortcut, simply remove it (tip: comment it out with a leading "--")
--
config.keys = {
-- Main modifier key for meta hotkeys like moving windows or locking the session
-- Usually, Mod4 is the key with a logo between Control and Alt.
modkey = "Mod4",
}
-- Hotkeys globally available (through the entire OS, regardless of what's focused)
config.keys.global_keys = {
-- Application launcher
launcher = { { config.keys.modkey }, "space", },
launcher_cmd = { { "Ctrl", config.keys.modkey }, "space", },
-- Screen locker
lock_screen = { { config.keys.modkey }, "l" },
--
-- Media and volume controls
-- See media_control.lua
--
media_control = {
-- Raise volume
raiseVolume = { {}, "XF86AudioRaiseVolume" },
-- Lower volume
lowerVolume = { {}, "XF86AudioLowerVolume" },
-- Toggle mute
toggleMute = { {}, "XF86AudioMute" },
-- Toggle Play / Pause
playPause = { {}, "XF86AudioPlay" },
-- Next track
nextTrack = { {}, "XF86AudioNext" },
-- Previous track
previousTrack = { {}, "XF86AudioPrev" },
-- Brightness up
brightnessUp = { {}, "XF86MonBrightnessUp" },
-- Brightness down
brightnessDown = { {}, "XF86MonBrightnessDown" },
},
-- Keyboard layout
keyboard_layout = {
-- Switch between layouts
switch = { { "Mod1" }, "Shift_R" },
-- Switch between layouts (alternative)
-- switch_alt = { { "Al" }, "Alt_R" },
}
}
-- Custom global hotkeys
config.keys.custom_keys = {
-- Example:
-- {
-- hotkey = {
-- { config.keys.modkey, },
-- "t"
-- },
-- action = function()
-- awful.spawn('terminator')
-- end,
-- identity = { description = "open terminator", group = "utilities" }
-- }
};
--
-- Audio
--
config.audio = {
card = '-D pulse',
device = 'Master',
};
--
-- Widgets
--
config.widgets = {
-- Keyboard layout widget
keyboard_layout = {
enabled = true,
layouts = { "us(intl)", "latam" },
layout_switch_command = "setxkbmap",
},
-- Enable/disable the system resources monitoring widget
system_resources = {
bars = {
enabled = true,
screens = { 1, 2 },
refresh_interval = 1.5, -- In seconds
},
battery = {
enabled = true,
screens = { 1, 2 },
refresh_interval = 30, -- In seconds
precision = 0, -- How many decimals
},
},
}
--
-- Auto start custom applications
--
config.autostart = {
-- Network manager widget
{
"nm-applet --help", -- Verification command that will be checked before spawning the next command
"nm-applet", -- The app
},
-- Screenshot utility
"flameshot",
}
-- Theme
-- Change to gears.filesystem.get_themes_dir() .. "default/theme.lua" to use default awesome theme
config.theme = awful.util.getdir("config") .. "/theme.lua"
-- Screenshot utility
config.screenshot_utility_command = "flameshot gui"
-- Run menu
config.windowSwitcher = "rofi -modi \"" .. rofi_modes .. "\" -show-icons -show window"
-- Media control
config.volume_osd_timeout = 2
-- Awesome tweaks
naughty.config.defaults.timeout = 15
return config return config

View File

@ -171,7 +171,8 @@ config.widgets = {
battery = { battery = {
enabled = true, enabled = true,
screens = { 1, 2 }, screens = { 1, 2 },
refresh_interval = 30, -- In seconds refresh_interval = 15, -- In seconds
list_refresh_interval = 2, -- In seconds
precision = 0, -- How many decimals precision = 0, -- How many decimals
}, },
}, },

View File

@ -180,7 +180,8 @@ os_menu = awful.widget.launcher({
menu = awful.menu({ menu = awful.menu({
items = { items = {
{ "Hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, { "Hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
{ "Edit config", config.awesome.editor .. " .config/awesome/" }, { "Manual", config.awesome.terminal .. " -e man awesome" },
{ "Edit config", config.awesome.editor_cmd .. " " .. awesome.conffile },
{ "Open terminal", config.awesome.terminal }, { "Open terminal", config.awesome.terminal },
{ "Lock", lockScreen, lock_icon }, { "Lock", lockScreen, lock_icon },
{ "Logout", function() awesome.quit() end, logout_icon }, { "Logout", function() awesome.quit() end, logout_icon },
@ -197,8 +198,6 @@ os_menu = awful.widget.launcher({
-- {{{ Wibar -- {{{ Wibar
-- Create a textclock widget -- Create a textclock widget
mytextclock = wibox.widget.textclock() mytextclock = wibox.widget.textclock()
mytextclock.format = " %H:%M:%S "
mytextclock.refresh = 0.5
-- Create a wibox for each screen and add it -- Create a wibox for each screen and add it
local taglist_buttons = gears.table.join(awful.button({}, 1, function(t) t:view_only() end), local taglist_buttons = gears.table.join(awful.button({}, 1, function(t) t:view_only() end),
@ -255,7 +254,7 @@ awful.screen.connect_for_each_screen(function(s)
set_wallpaper(s) set_wallpaper(s)
-- Each screen has its own tag table. -- Each screen has its own tag table.
awful.tag({ "1", "2", "3", "4", "5", "6" }, s, awful.layout.layouts[2]) awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- Create a promptbox for each screen -- Create a promptbox for each screen
s.mypromptbox = awful.widget.prompt() s.mypromptbox = awful.widget.prompt()
@ -352,8 +351,8 @@ end)
-- {{{ Mouse bindings -- {{{ Mouse bindings
root.buttons(gears.table.join(awful.button({}, 3, function() mymainmenu:toggle() end), root.buttons(gears.table.join(awful.button({}, 3, function() mymainmenu:toggle() end),
awful.button({}, 4, awful.tag.viewprev), awful.button({}, 4, awful.tag.viewnext),
awful.button({}, 5, awful.tag.viewnext))) awful.button({}, 5, awful.tag.viewprev)))
-- }}} -- }}}
-- {{{ Key bindings -- {{{ Key bindings
@ -383,8 +382,8 @@ hotkey.registerKeys(
awful.client.focus.byidx(-1) awful.client.focus.byidx(-1)
end, end,
{ description = "focus previous by index", group = "client" }), { description = "focus previous by index", group = "client" }),
-- awful.key({ config.keys.modkey, }, "w", function() mymainmenu:show() end, awful.key({ config.keys.modkey, }, "w", function() mymainmenu:show() end,
-- { description = "show main menu", group = "awesome" }), { description = "show main menu", group = "awesome" }),
-- Layout manipulation -- Layout manipulation
awful.key({ config.keys.modkey, "Shift" }, "j", function() awful.client.swap.byidx(1) end, awful.key({ config.keys.modkey, "Shift" }, "j", function() awful.client.swap.byidx(1) end,

View File

@ -49,13 +49,13 @@ end
function increaseBrightness(callback) function increaseBrightness(callback)
callback = callback or function() callback = callback or function()
end end
awful.spawn.easy_async("xbacklight -inc 10", callback) awful.spawn.easy_async("xbacklight -inc 2", callback)
end end
function decreaseBrightness(callback) function decreaseBrightness(callback)
callback = callback or function() callback = callback or function()
end end
awful.spawn.easy_async("xbacklight -dec 10", callback) awful.spawn.easy_async("xbacklight -dec 2", callback)
end end

View File

@ -1,3 +1,4 @@
local awful = require("awful")
local beautiful = require("beautiful") local beautiful = require("beautiful")
local gears = require("gears") local gears = require("gears")
local naughty = require("naughty") local naughty = require("naughty")
@ -50,6 +51,13 @@ function readCommand(command)
return r return r
end end
function readFile(file)
local handle = io.open(file, "r")
local r = handle:read("*a")
handle:close()
return r
end
local cpuBar = bars:get_children()[1]:get_children()[1]:get_children()[1] local cpuBar = bars:get_children()[1]:get_children()[1]:get_children()[1]
function getCpuData() function getCpuData()
@ -131,72 +139,106 @@ gears.timer {
---
local battery = wibox.widget { --- Batteries
{ ---
markup = "-- %", rawBatteries = {}
align = "center", function refreshRawBatteries()
valign = "center", rawBatteries = readCommand("ls -A1 /sys/class/power_supply")
widget = wibox.widget.textbox,
},
margins = beautiful.system_resources_widget_battery_margin,
widget = wibox.container.margin,
}
local batteryText = battery:get_children()[1]
local rawBatteries = readCommand("ls -A1 /sys/class/power_supply")
function getBatteries()
return rawBatteries:gmatch("([^\n]+)")
end end
function hasBattery() function getBatteryLevel(battery)
return rawBatteries:len() > 0
end
function getBatteryCapacity()
local charge = 0 local charge = 0
local capacity = 0 local capacity = 0
for b in getBatteries() do if fileExists(battery .. "/energy_now") then
if b:sub(1,3) ~= 'hid' and readCommand("cat /sys/class/power_supply/" .. b .. "/type"):match("Battery") then charge = charge + readFile(battery .. "/energy_now")
if fileExists("/sys/class/power_supply/" .. b .. "/energy_now") then capacity = capacity + readFile(battery .. "/energy_full")
charge = charge + readCommand("cat /sys/class/power_supply/" .. b .. "/energy_now") elseif fileExists(battery .. "/charge_now") then
capacity = capacity + readCommand("cat /sys/class/power_supply/" .. b .. "/energy_full") charge = charge + readFile(battery .. "/charge_now")
else capacity = capacity + readFile(battery .. "/charge_full")
charge = charge + readCommand("cat /sys/class/power_supply/" .. b .. "/charge_now") elseif fileExists(battery .. "/capacity_level") then
capacity = capacity + readCommand("cat /sys/class/power_supply/" .. b .. "/charge_full") return readFile(battery .. "/capacity_level")
end else
end return "Unsupported"
end end
return charge / capacity return string.format("%." .. config.battery.precision .. "f", (charge / capacity) * 100) .. "%"
end end
function isCharging() function isCharging(battery)
for b in getBatteries() do return readFile(battery .. "/status") == "Charging\n"
if readCommand("cat /sys/class/power_supply/" .. b .. "/type"):match("Battery") then end
return readCommand("cat /sys/class/power_supply/" .. b .. "/status") ~= "Discharging"
end
local batteryContainer = wibox.widget {
layout = wibox.layout.fixed.horizontal
}
local timers = {}
function refreshBatteries()
-- refresh raw batteries and check for change
local oldBatteries = rawBatteries
refreshRawBatteries()
if rawBatteries == oldBatteries then
return
end
-- clear timers
for i,v in ipairs(timers) do
v:stop()
end
timers = {};
-- clear layout
batteryContainer:set_children({})
for battery in rawBatteries:gmatch("([^\n]+)") do
local path = "/sys/class/power_supply/" .. battery
if readFile(path .. "/type"):match("Battery") then
-- widget
local widget = wibox.widget {
{
markup = "-- %",
align = "center",
valign = "center",
widget = wibox.widget.textbox,
},
margins = beautiful.system_resources_widget_battery_margin,
widget = wibox.container.margin,
}
-- tooltip
local name = readFile(path .. "/model_name")
local tooltip = awful.tooltip {
text = name
}
tooltip:add_to_object(widget)
-- update battery level
local batteryText = widget:get_children()[1]
local timer = gears.timer {
timeout = config.battery.refresh_interval,
call_now = true,
autostart = true,
callback = function()
batteryText.markup = (isCharging(path) and "+" or "") .. getBatteryLevel(path)
end
}
table.insert(timers, timer)
batteryContainer:add(widget)
end
end
end
gears.timer {
timeout = config.battery.list_refresh_interval,
call_now = true,
autostart = true,
callback = function()
refreshBatteries()
end end
return nil }
end
if hasBattery() then
gears.timer {
timeout = config.battery.refresh_interval,
call_now = true,
autostart = true,
callback = function()
batteryText.markup = string.format("%." .. config.battery.precision .. "f", getBatteryCapacity() * 100) .. "%"
end
}
else
battery = nil
end
return { return {
bars = bars, bars = bars,
battery = battery, battery = batteryContainer,
} }

203
theme.lua
View File

@ -1,204 +1,3 @@
--------------------------- local theme = require("default_theme")
-- Default awesome theme --
---------------------------
local awful = require("awful")
local naughty = require("naughty")
local gears = require("gears")
local theme_assets = require("beautiful.theme_assets")
local xresources = require("beautiful.xresources")
local dpi = xresources.apply_dpi
local gfs = require("gears.filesystem")
local themes_path = gfs.get_themes_dir()
local simple_awesome_path = awful.util.getdir("config")
local theme = {}
theme.font = "Noto Sans 12"
theme.mono_font = "Source Code Pro 11"
theme.bg_normal = "#222222"
theme.bg_focus = "#282828"
theme.bg_urgent = "#bf221c"
theme.bg_minimize = "#111111"
theme.bg_systray = theme.bg_normal
theme.fg_normal = "#aaaaaa"
theme.fg_focus = "#ffffff"
theme.fg_urgent = "#ffffff"
theme.fg_minimize = "#ffffff"
theme.useless_gap = dpi(0)
theme.border_width = dpi(0)
theme.border_normal = "#555555"
theme.border_focus = "#555555"
theme.border_marked = "#91231c"
-- Tasklist
theme.tasklist_bg_focus = theme.bg_minimize
theme.tasklist_bg_minimize = theme.bg_normal
-- Notifications
naughty.config.padding = dpi(8)
naughty.config.defaults.position = "top_right"
naughty.config.defaults.margin = dpi(16)
naughty.config.defaults.border_width = dpi(0)
naughty.config.presets.critical.bg = "#e82922"
theme.notification_shape = function(cr, width, height)
return gears.shape.rounded_rect(cr, width, height, 5)
end
theme.notification_margin = dpi(16)
theme.notification_width = dpi(512)
theme.notification_border_color = theme.border_focus
theme.notification_border_width = dpi(0)
theme.notification_bg = theme.bg_focus
theme.notification_fg = theme.fg_focus
-- Hotkeys (awesome help menu)
theme.hotkeys_border_color = theme.border_normal
-- System resources widget
theme.system_resources_widget_bar_bg = theme.bg_focus
theme.system_resources_widget_bar_color = "#ffffff"
theme.system_resources_widget_border_color = theme.fg_normal
theme.system_resources_widget_border_width = 1
theme.system_resources_widget_bar_width = dpi(8)
theme.system_resources_widget_bar_margin = dpi(2)
theme.system_resources_widget_bar_shape = function(cr, width, height)
return gears.shape.rounded_rect (cr, width, height, 2)
end
theme.system_resources_widget_battery_margin = theme.system_resources_widget_bar_width
-- There are other variable sets
-- overriding the default one when
-- defined, the sets are:
-- taglist_[bg|fg]_[focus|urgent|occupied|empty|volatile]
-- tasklist_[bg|fg]_[focus|urgent]
-- titlebar_[bg|fg]_[normal|focus]
-- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
-- mouse_finder_[color|timeout|animate_timeout|radius|factor]
-- prompt_[fg|bg|fg_cursor|bg_cursor|font]
-- hotkeys_[bg|fg|border_width|border_color|shape|opacity|modifiers_fg|label_bg|label_fg|group_margin|font|description_font]
-- Example:
--theme.taglist_bg_focus = "#ff0000"
-- Generate taglist squares:
local taglist_square_size = dpi(8)
theme.taglist_squares_sel = theme_assets.taglist_squares_sel(
taglist_square_size, theme.fg_normal
)
theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
taglist_square_size, theme.fg_normal
)
-- Variables set for theming notifications:
-- notification_font
-- notification_[bg|fg]
-- notification_[width|height|margin]
-- notification_[border_color|border_width|shape|opacity]
-- Variables set for theming the menu:
-- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width]
theme.menu_submenu_icon = themes_path.."default/submenu.png"
theme.menu_height = dpi(32)
theme.menu_width = dpi(256)
-- You can add as many variables as
-- you wish and access them by using
-- beautiful.variable in your rc.lua
--theme.bg_widget = "#cc0000"
-- Define the image to load
theme.titlebar_close_button_normal = simple_awesome_path .. "/assets/icons/x.svg"
theme.titlebar_close_button_focus = theme.titlebar_close_button_normal
theme.titlebar_close_button_hover_bg_color = '#800'
theme.titlebar_maximized_button_normal_inactive = simple_awesome_path .. "/assets/icons/maximize.svg"
theme.titlebar_maximized_button_focus_inactive = theme.titlebar_maximized_button_normal_inactive
theme.titlebar_maximized_button_normal_active = simple_awesome_path .. "/assets/icons/unmaximize.svg"
theme.titlebar_maximized_button_focus_active = theme.titlebar_maximized_button_normal_active
theme.titlebar_maximized_button_hover_bg_color = '#555'
theme.titlebar_minimize_button_normal = simple_awesome_path .. "/assets/icons/minus.svg"
theme.titlebar_minimize_button_focus = theme.titlebar_minimize_button_normal
theme.titlebar_minimize_button_hover_bg_color = '#555'
theme.titlebar_ontop_button_normal_inactive = themes_path.."default/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = theme.titlebar_ontop_button_normal_inactive
theme.titlebar_ontop_button_normal_active = themes_path.."default/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = theme.titlebar_ontop_button_normal_active
theme.titlebar_ontop_button_hover_bg_color = '#555'
theme.titlebar_floating_button_normal_inactive = themes_path.."default/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = theme.titlebar_floating_button_normal_inactive
theme.titlebar_floating_button_normal_active = themes_path.."default/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = theme.titlebar_floating_button_normal_active
theme.titlebar_floating_button_hover_bg_color = '#555'
theme.wallpaper = simple_awesome_path.."/assets/art/wall_secondary.png"
-- You can use your own layout icons like this:
theme.layout_fairh = themes_path.."default/layouts/fairhw.png"
theme.layout_fairv = themes_path.."default/layouts/fairvw.png"
theme.layout_floating = themes_path.."default/layouts/floatingw.png"
theme.layout_magnifier = themes_path.."default/layouts/magnifierw.png"
theme.layout_max = themes_path.."default/layouts/maxw.png"
theme.layout_fullscreen = themes_path.."default/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path.."default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path.."default/layouts/tileleftw.png"
theme.layout_tile = themes_path.."default/layouts/tilew.png"
theme.layout_tiletop = themes_path.."default/layouts/tiletopw.png"
theme.layout_spiral = themes_path.."default/layouts/spiralw.png"
theme.layout_dwindle = themes_path.."default/layouts/dwindlew.png"
theme.layout_cornernw = themes_path.."default/layouts/cornernww.png"
theme.layout_cornerne = themes_path.."default/layouts/cornernew.png"
theme.layout_cornersw = themes_path.."default/layouts/cornersww.png"
theme.layout_cornerse = themes_path.."default/layouts/cornersew.png"
-- Generate Awesome icon:
theme.start_menu_icon = simple_awesome_path .. "/assets/icons/material-tux-dark-keen.svg"
theme.awesome_icon = theme_assets.awesome_icon(
theme.menu_height, theme.bg_focus, theme.fg_focus
)
-- Define the icon theme for application icons. If not set then the icons
-- from /usr/share/icons and /usr/share/icons/hicolor will be used.
theme.icon_theme = nil
-- Volume OSD
theme.volume_osd_width = dpi(48)
theme.volume_osd_bar_height = dpi(196)
theme.volume_osd_padding = dpi(8)
theme.volume_osd_shape = function(cr, width, height)
return gears.shape.rounded_rect(cr, width, height, 5)
end
theme.volume_osd_position = function(screen_width, screen_height, osd_width, osd_height)
return {
dpi(8),
theme.menu_height + dpi(8)
}
end
theme.volume_osd_bg = theme.bg_normal
theme.volume_osd_border_color = theme.border_normal
theme.volume_osd_border_width = dpi(0)
theme.volume_osd_progress_bg = theme.bg_minimize
theme.volume_osd_progress_color = "#ffffff"
theme.volume_osd_progress_color_muted = "#555555"
theme.volume_osd_progress_border_color = theme.volume_osd_border_color
theme.volume_osd_progress_border_width = dpi(0)
theme.volume_osd_image_color = "#ffffff"
theme.volume_osd_icon_0 = simple_awesome_path .. "/assets/icons/volume-x.svg"
theme.volume_osd_icon_1 = simple_awesome_path .. "/assets/icons/volume.svg"
theme.volume_osd_icon_2 = simple_awesome_path .. "/assets/icons/volume-1.svg"
theme.volume_osd_icon_3 = simple_awesome_path .. "/assets/icons/volume-2.svg"
-- Power Menu
theme.power_menu_icon_color = "#ffffff"
return theme return theme