diff --git a/awesome/autorun.sh b/awesome/autorun.sh new file mode 100755 index 0000000..98fb1b1 --- /dev/null +++ b/awesome/autorun.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +run() { + if ! pgrep -f "$1" ; + then + "$@"& + fi +} + +run "cbatticon" +run "blueman-applet" +run "nm-applet --no-agent" +run "nextcloud --background" +run "pasystray" +run "keepassxc" +run "alacritty msg create-window --title bottom -e btm --battery || alacritty --title bottom -e btm --battery" +run "wmctrl -r bottom -t 1" +run "alacrity msg create-window || alacritty" +run "xscreensaver -no-splash" + diff --git a/awesome/mytheme.lua b/awesome/mytheme.lua new file mode 100644 index 0000000..2ce3fd6 --- /dev/null +++ b/awesome/mytheme.lua @@ -0,0 +1,131 @@ +--------------------------- +-- Default awesome theme -- +--------------------------- + +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 theme = {} + +theme.font = "Liberation Sans 8" + +theme.bg_normal = "#222222" +theme.bg_focus = "#535d6c" +theme.bg_urgent = "#ff0000" +theme.bg_minimize = "#444444" +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(1) +theme.border_normal = "#000000" +theme.border_focus = "#535d6c" +theme.border_marked = "#91231c" + +-- 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(4) +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(15) +theme.menu_width = dpi(100) + +-- 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 = themes_path.."default/titlebar/close_normal.png" +theme.titlebar_close_button_focus = themes_path.."default/titlebar/close_focus.png" + +theme.titlebar_minimize_button_normal = themes_path.."default/titlebar/minimize_normal.png" +theme.titlebar_minimize_button_focus = themes_path.."default/titlebar/minimize_focus.png" + +theme.titlebar_ontop_button_normal_inactive = themes_path.."default/titlebar/ontop_normal_inactive.png" +theme.titlebar_ontop_button_focus_inactive = themes_path.."default/titlebar/ontop_focus_inactive.png" +theme.titlebar_ontop_button_normal_active = themes_path.."default/titlebar/ontop_normal_active.png" +theme.titlebar_ontop_button_focus_active = themes_path.."default/titlebar/ontop_focus_active.png" + +theme.titlebar_sticky_button_normal_inactive = themes_path.."default/titlebar/sticky_normal_inactive.png" +theme.titlebar_sticky_button_focus_inactive = themes_path.."default/titlebar/sticky_focus_inactive.png" +theme.titlebar_sticky_button_normal_active = themes_path.."default/titlebar/sticky_normal_active.png" +theme.titlebar_sticky_button_focus_active = themes_path.."default/titlebar/sticky_focus_active.png" + +theme.titlebar_floating_button_normal_inactive = themes_path.."default/titlebar/floating_normal_inactive.png" +theme.titlebar_floating_button_focus_inactive = themes_path.."default/titlebar/floating_focus_inactive.png" +theme.titlebar_floating_button_normal_active = themes_path.."default/titlebar/floating_normal_active.png" +theme.titlebar_floating_button_focus_active = themes_path.."default/titlebar/floating_focus_active.png" + +theme.titlebar_maximized_button_normal_inactive = themes_path.."default/titlebar/maximized_normal_inactive.png" +theme.titlebar_maximized_button_focus_inactive = themes_path.."default/titlebar/maximized_focus_inactive.png" +theme.titlebar_maximized_button_normal_active = themes_path.."default/titlebar/maximized_normal_active.png" +theme.titlebar_maximized_button_focus_active = themes_path.."default/titlebar/maximized_focus_active.png" + +theme.wallpaper = themes_path.."default/background.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.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 + +return theme + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 diff --git a/awesome/rc.lua b/awesome/rc.lua index ac99949..f2e6303 100644 --- a/awesome/rc.lua +++ b/awesome/rc.lua @@ -13,6 +13,11 @@ local beautiful = require("beautiful") -- Notification library local naughty = require("naughty") local menubar = require("menubar") +-- local weather_widget = require("awesome-wm-widgets.weather-widget.weather") +local cpu_widget = require("awesome-wm-widgets.cpu-widget.cpu-widget") +local lain = require("lain") +-- local weather_widget = lain.widget.weather() +local ram_widget = require("awesome-wm-widgets.ram-widget.ram-widget") local hotkeys_popup = require("awful.hotkeys_popup") -- Enable hotkeys help widget for VIM and other apps -- when client with a matching name is opened: @@ -45,12 +50,21 @@ end -- {{{ Variable definitions -- Themes define colours, icons, font and wallpapers. -beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") +-- beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua") +beautiful.init(gears.filesystem.get_configuration_dir() .. "mytheme.lua") -- This is used later as the default terminal and editor to run. -terminal = "alacritty msg create-window" +-- terminal = "alacritty" +terminal = function() + local is_running = os.execute("pgrep alacritty") + if is_running == nil then + return "alacritty" + else + return "alacritty msg create-window" + end +end editor = os.getenv("EDITOR") or "nano" -editor_cmd = terminal .. " -e " .. editor +editor_cmd = terminal() .. " -e " .. editor -- Default modkey. -- Usually, Mod4 is the key with a logo between Control and Alt. @@ -62,6 +76,8 @@ modkey = "Mod4" -- Table of layouts to cover with awful.layout.inc, order matters. awful.layout.layouts = { awful.layout.suit.tile, + awful.layout.suit.max, + awful.layout.suit.max.fullscreen, awful.layout.suit.tile.left, awful.layout.suit.tile.bottom, awful.layout.suit.tile.top, @@ -69,8 +85,6 @@ awful.layout.layouts = { 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.floating, @@ -84,7 +98,7 @@ awful.layout.layouts = { -- Create a launcher widget and a main menu myawesomemenu = { { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end }, - { "manual", terminal .. " -e man awesome" }, + { "manual", terminal() .. " -e man awesome" }, { "edit config", editor_cmd .. " " .. awesome.conffile }, { "restart", awesome.restart }, -- { "quit", function() awesome.quit() end }, @@ -92,7 +106,7 @@ myawesomemenu = { } mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, - { "open terminal", terminal } + { "open terminal", terminal() } } }) @@ -100,7 +114,7 @@ mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, menu = mymainmenu }) -- Menubar configuration -menubar.utils.terminal = terminal -- Set the terminal for applications that require it +menubar.utils.terminal = terminal() -- Set the terminal for applications that require it -- }}} -- Keyboard map indicator and switcher @@ -159,7 +173,7 @@ local function set_wallpaper(s) if type(wallpaper) == "function" then wallpaper = wallpaper(s) end - gears.wallpaper.maximized(wallpaper, s, true) + gears.wallpaper.maximized(wallpaper, s, false) end end @@ -212,7 +226,26 @@ awful.screen.connect_for_each_screen(function(s) s.mytasklist, -- Middle widget { -- Right widgets layout = wibox.layout.fixed.horizontal, - mykeyboardlayout, + -- mykeyboardlayout, + -- weather_widget( + -- { + -- api_key = "f6497dd133dd22b541abc8bbe8360f3b", + -- APPID = "f6497dd133dd22b541abc8bbe8360f3b", + -- coordinates = {40.689, -73.983}, + -- city_id = 5110302, + -- } + -- ), + lain.widget.weather({ + APPID = "f6497dd133dd22b541abc8bbe8360f3b", + city_id = 5110302, + units = "imperial", + }).icon, + cpu_widget(), + ram_widget({ + widget_height = 48, + widget_width = 48, + color_buf = beautiful.fg_normal, + }), wibox.widget.systray(), mytextclock, s.mylayoutbox, @@ -276,7 +309,7 @@ globalkeys = gears.table.join( {description = "go back", group = "client"}), -- Standard program - awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end, + awful.key({ modkey, }, "Return", function () awful.spawn(terminal()) end, {description = "open a terminal", group = "launcher"}), awful.key({ modkey, "Control" }, "r", awesome.restart, {description = "reload awesome", group = "awesome"}), @@ -327,7 +360,7 @@ globalkeys = gears.table.join( end, {description = "lua execute prompt", group = "awesome"}), -- Menubar - awful.key({ modkey }, "p", function() menubar.show() end, + awful.key({ modkey }, "p", function() os.execute("dmenu_run") end, {description = "show the menubar", group = "launcher"}) ) @@ -498,6 +531,10 @@ awful.rules.rules = { -- Set Firefox to always map on the tag named "2" on screen 1. -- { rule = { class = "Firefox" }, -- properties = { screen = 1, tag = "2" } }, + { rule = { class = "KeePassXC" }, properties = { screen = 1, tag = "1" } }, + { rule = { class = "bottom" }, properties = { screen = 1, tag = "2" } }, + { rule = { class = "qutebrowser" }, properties = { screen = 1, tag = "3" } }, + { rule = { class = "Alacritty" }, properties = { screen = 1, tag = "4" } }, } -- }}} @@ -556,6 +593,9 @@ client.connect_signal("request::titlebars", function(c) } end) +-- Autostart items +awful.spawn.with_shell("~/.config/awesome/autorun.sh") + -- Enable sloppy focus, so that focus follows mouse. client.connect_signal("mouse::enter", function(c) c:emit_signal("request::activate", "mouse_enter", {raise = false})