change everything -- go back to awesomewm

This commit is contained in:
Adam 2023-12-28 04:18:32 -05:00
parent 3a522c7caf
commit 335f620d8c
37 changed files with 1345 additions and 370 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "configs/awesome/awesome-wm-widgets"]
path = configs/awesome/awesome-wm-widgets
url = https://github.com/streetturtle/awesome-wm-widgets

View file

@ -1,15 +1,16 @@
#! /bin/bash
# pick a random wallpaper and save a copy
wal -i ~/Pictures/Wallpapers &&
# This is meant to be run by awesome with the set colors keybind,
# not by itself though it should work regardless
set -e
# Pick a random wallpaper and save a copy
wal -i ~/Pictures/Wallpapers
cp $(awk {print} ~/.cache/wal/wal) ~/.cache/wal/bg
# update themes for other stuff it it exists
# Update themes for other stuff it it exists
[[ -x "$(command -v pywalfox)" ]] && pywalfox update
[[ -x "$(command -v pywal-discord)" ]] && pywal-discord
[[ -x "$(command -v beautifuldiscord)" ]] && beautifuldiscord --css ~/.config/BetterDiscord/themes
[[ -x "$(command -v wal-telegram )" ]] && wal-telegram -g
# set wallpaper and reset waybar
swaybg -i ~/.cache/wal/bg &
killall waybar && waybar &

View file

@ -1,3 +1,7 @@
#!/bin/bash
# Simple update doors
set -e
cd $HOME/.doors && git pull && ./setup

17
bin/maimpick Executable file
View file

@ -0,0 +1,17 @@
#!/bin/sh
# Thank you Luke Smith
# https://lukesmith.xyz
# This is bound to Shift+PrintScreen by default, requires maim. It lets you
# choose the kind of screenshot to take, including copying the image or even
# highlighting an area to copy. scrotcucks on suicidewatch right now.
case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)" | dmenu -l 6 -i -p "Screenshot which area?")" in
"a selected area") maim -s pic-selected-"$(date '+%y%m%d-%H%M-%S').png" ;;
"current window") maim -i "$(xdotool getactivewindow)" pic-window-"$(date '+%y%m%d-%H%M-%S').png" ;;
"full screen") maim pic-full-"$(date '+%y%m%d-%H%M-%S').png" ;;
"a selected area (copy)") maim -s | xclip -selection clipboard -t image/png ;;
"current window (copy)") maim -i "$(xdotool getactivewindow)" | xclip -selection clipboard -t image/png ;;
"full screen (copy)") maim | xclip -selection clipboard -t image/png ;;
esac

View file

@ -0,0 +1,7 @@
import = ["/home/adam/.cache/wal/colors-alacritty.toml"]
[font]
size = 12
[window]
opacity = 0.8

View file

@ -1,5 +0,0 @@
import:
- ~/.cache/wal/colors-alacritty.yml
window:
opacity: 0.8

@ -0,0 +1 @@
Subproject commit fd9c62608ff253c44ae3c664f0eab683a569e909

View file

@ -0,0 +1,42 @@
-- Binds that affect awesome
globalkeys = Gears.table.join(
globalkeys,
Awful.key(
{ Modkey, "Shift" }, "e", awesome.quit,
{
description = "quit awesome",
group = "awesome"
}
),
Awful.key(
{ Modkey, }, "BackSpace",
awesome.restart,
{
description = "reload awesome",
group = "awesome"
}
),
Awful.key(
{ Modkey, }, "F1",
Hotkeys_popup.show_help,
{
description = "show help",
group = "awesome"
}
),
Awful.key(
{}, "Print",
function()
os.execute("maimpick")
end,
{
description = "run screenshot script",
group = "awesome"
}
)
)

View file

@ -0,0 +1,223 @@
-- Binds that affect the current window
-- Increment variable used by move and resize
inc = 50
clientkeys = Gears.table.join(
clientkeys,
Awful.key(
{ Modkey, }, "f",
function(c)
c.fullscreen = not c.fullscreen
c:raise()
end,
{
description = "toggle fullscreen",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1" }, "h",
function(c)
c:relative_move(-inc, 0, 0, 0)
end,
{
description = "move floating left",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1", "Shift" }, "h",
function(c)
c:relative_move(-inc, 0, inc, 0)
end,
{
description = "resize floating horizontal +",
group = "client"
}
),
Awful.key(
{ Modkey, }, "j",
function()
Awful.client.focus.byidx(1)
end,
{
description = "focus next by index",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1" }, "j",
function(c)
c:relative_move(0, inc, 0, 0)
end,
{
description = "move floating down",
group = "client"
}
),
Awful.key(
{ Modkey, "Shift" }, "j",
function()
Awful.client.swap.byidx(1)
end,
{
description = "swap next by index",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1", "Shift" }, "j",
function(c)
c:relative_move(0, inc, 0, -inc)
end,
{
description = "resize floating vertical -",
group = "client"
}
),
Awful.key(
{ Modkey, }, "k",
function()
Awful.client.focus.byidx(-1)
end,
{
description = "focus previous by index",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1" }, "k",
function(c)
c:relative_move(0, -inc, 0, 0)
end,
{
description = "move floating up",
group = "client"
}
),
Awful.key(
{ Modkey, "Shift" }, "k",
function()
Awful.client.swap.byidx(-1)
end,
{
description = "swap previous by index",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1", "Shift" }, "k",
function(c)
c:relative_move(0, -inc, 0, inc)
end,
{
description = "resize floating vertical +",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1" }, "l",
function(c)
c:relative_move(inc, 0, 0, 0)
end,
{
description = "move floating right",
group = "client"
}
),
Awful.key(
{ Modkey, "Mod1", "Shift" }, "l",
function(c)
c:relative_move(inc, 0, -inc, 0)
end,
{
description = "resize floating horizontal -",
group = "client"
}
),
Awful.key(
{ Modkey, "Shift" }, "n",
function(c)
c.maximized = not c.maximized
c:raise()
end,
{
description = "(un)maximize",
group = "client"
}
),
Awful.key(
{ Modkey, }, "o",
function(c) c:move_to_screen() end,
{
description = "move focused to next screen",
group = "client"
}
),
Awful.key(
{ Modkey, }, "q",
function(c) c:kill() end,
{
description = "close",
group = "client"
}
),
Awful.key(
{ Modkey, }, "t",
function(c) c.ontop = not c.ontop end,
{
description = "toggle keep on top",
group = "client"
}
),
Awful.key(
{ Modkey, "Shift" }, "Return",
function(c)
c:swap(Awful.client.getmaster())
end,
{
description = "move focused to master",
group = "client"
}
),
Awful.key(
{ Modkey, }, "space",
Awful.client.floating.toggle,
{
description = "toggle floating",
group = "client"
}
),
Awful.key(
{ Modkey, }, "Tab",
function()
Awful.client.focus.history.previous()
if client.focus then client.focus:raise() end
end,
{
description = "focus previous",
group = "client"
}
)
)

View file

@ -0,0 +1,12 @@
-- Group by appearance in help menu (Modkey + F1)
require('binds.awesome')
require('binds.client')
require('binds.launcher')
require('binds.layout')
require('binds.media')
require('binds.mouse')
require('binds.screen')
require('binds.tag')
-- Apply all above
root.keys(globalkeys)

View file

@ -0,0 +1,140 @@
-- Binds that launch programs
globalkeys = Gears.table.join(
globalkeys,
Awful.key(
{ Modkey, }, "c",
function() Awful.spawn("caprine") end,
{
description = "open caprine",
group = "launcher"
}
),
Awful.key(
{ Modkey, "Shift" }, "c",
function() Awful.spawn("telegram-desktop") end,
{
description = "open telegram-desktop",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "d",
function() Awful.spawn("discord") end,
{
description = "open discord",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "e",
function() Awful.spawn(Email) end,
{
description = "open editor",
group = "launcher"
}
),
Awful.key(
{ Modkey, "Shift" }, "e",
function() Awful.spawn("thunderbird") end,
{
description = "open thunderbird",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "g",
function() Awful.spawn("steam-native") end,
{
description = "open steam",
group = "launcher"
}
),
Awful.key(
{ Modkey, "Shift" }, "g",
function() Awful.spawn("lutris") end,
{
description = "open lutris",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "i",
function() Awful.spawn("gimp") end,
{
description = "open gimp",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "m",
function() Awful.spawn(Music) end,
{
description = "open spotify",
group = "launcher"
}
),
Awful.key(
{ Modkey, "Shift" }, "p",
function() Awful.spawn("doorsbg") end,
awesome.restart,
{
description = "set new random wallpaper/color scheme",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "r",
function() Awful.screen.focused().mypromptbox:run() end,
{
description = "run prompt",
group = "launcher"
}
),
Awful.key({ Modkey, }, "v",
function() Awful.spawn("virt-manager") end,
{
description = "open virt-manager",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "w",
function() Awful.spawn(Browser) end,
{
description = "open browser",
group = "launcher"
}
),
Awful.key(
{ Modkey, "Shift" }, "w",
function() Awful.spawn(Browser2) end,
{
description = "open browser2",
group = "launcher"
}
),
Awful.key(
{ Modkey, }, "Return",
function() Awful.spawn(Terminal) end,
{
description = "open a terminal",
group = "launcher"
}
)
)

View file

@ -0,0 +1,41 @@
-- Binds that affect layout
globalkeys = Gears.table.join(
globalkeys,
Awful.key(
{ Modkey, "Shift" }, "h",
function() Awful.tag.incmwfact(-0.05) end,
{
description = "resize split -",
group = "layout"
}
),
Awful.key(
{ Modkey, "Shift" }, "l",
function() Awful.tag.incmwfact(0.05) end,
{
description = "resize split +",
group = "layout"
}
),
Awful.key(
{ Modkey, }, "[",
function() Awful.layout.inc(1) end,
{
description = "select next",
group = "layout"
}
),
Awful.key(
{ Modkey, }, "]",
function() Awful.layout.inc(-1) end,
{
description = "select previous",
group = "layout"
}
)
)

View file

@ -0,0 +1,94 @@
-- Binds related to media
globalkeys = Gears.table.join(
globalkeys,
-- Media
Awful.key(
{}, "XF86AudioLowerVolume",
function()
os.execute("pamixer -d 3")
end,
{
description = "lower volume",
group = "media"
}
),
Awful.key(
{}, "XF86AudioMicMute",
function()
os.execute("pactl set-source-mute @DEFAULT_SOURCE@ toggle")
end,
{
description = "mute mic",
group = "media"
}
),
Awful.key(
{}, "XF86AudioMute",
function()
os.execute("pamixer -t")
end,
{
description = "mute audio",
group = "media"
}
),
Awful.key(
{}, "XF86AudioNext",
function()
os.execute("playerctl next")
end,
{
description = "next",
group = "media"
}
),
Awful.key(
{}, "XF86AudioPlay",
function()
os.execute("playerctl play-pause")
end,
{
description = "play/pause",
group = "media"
}
),
Awful.key(
{}, "XF86AudioPrev",
function()
os.execute("playerctl previous")
end,
{
description = "previous",
group = "media"
}
),
Awful.key(
{}, "XF86AudioRaiseVolume",
function()
os.execute("pamixer -i 3")
end,
{
description = "raise volume",
group = "media"
}
),
Awful.key(
{}, "XF86AudioStop",
function()
os.execute("playerctl stop")
end,
{
description = "stop",
group = "media"
}
)
)

View file

@ -0,0 +1,51 @@
-- Binds related to the mouse
root.buttons(
Gears.table.join(
Awful.button(
{}, 4,
Awful.tag.viewnext
),
Awful.button(
{}, 5,
Awful.tag.viewprev
)
)
)
clientbuttons = Gears.table.join(
Awful.button(
{}, 1,
function(c)
c:emit_signal(
"request::activate",
"mouse_click",
{ raise = true }
)
end
),
Awful.button(
{ Modkey }, 1,
function(c)
c:emit_signal(
"request::activate",
"mouse_click",
{ raise = true }
)
Awful.mouse.client.move(c)
end
),
Awful.button(
{ Modkey }, 3,
function(c)
c:emit_signal(
"request::activate",
"mouse_click",
{ raise = true }
)
Awful.mouse.client.resize(c)
end
)
)

View file

@ -0,0 +1,23 @@
-- Binds related to screens
globalkeys = Gears.table.join(
globalkeys,
Awful.key(
{ Modkey, }, "h",
function() Awful.screen.focus_relative(-1) end,
{
description = "focus previous screen",
group = "screen"
}
),
Awful.key(
{ Modkey, }, "l",
function() Awful.screen.focus_relative(1) end,
{
description = "focus next screen",
group = "screen"
}
)
)

View file

@ -0,0 +1,78 @@
-- Binds related to tags
-- Be careful: we use keycodes to make it work on any keyboard layout.
-- This should map on the top row of your keyboard, usually 1 to 9.
for i = 1, 9 do
globalkeys = Gears.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,
{
description = "view tag #" .. i,
group = "tag"
}
),
-- 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,
{
description = "toggle tag #" .. i,
group = "tag"
}
),
-- Move client to tag.
Awful.key(
{ Modkey, "Shift" }, "#" .. i + 9,
function()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:move_to_tag(tag)
end
end
end,
{
description = "move focused client to tag #" .. i,
group = "tag"
}
),
-- Toggle tag on focused client.
Awful.key(
{ Modkey, "Control", "Shift" }, "#" .. i + 9,
function()
if client.focus then
local tag = client.focus.screen.tags[i]
if tag then
client.focus:toggle_tag(tag)
end
end
end,
{
description = "toggle focused client on tag #" .. i,
group = "tag"
}
)
)
end

View file

@ -0,0 +1,47 @@
-- Handle startup errors
if awesome.startup_errors then
Naughty.notify(
{
preset = naughty.config.presets.critical,
title = "Oops, there were errors during startup!",
text = awesome.startup_errors
}
)
end
-- Handle runtime errors after startup
do
local in_error = false
awesome.connect_signal(
"debug::error",
function(err)
-- Make sure we don't go into an endless error loop
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
require("awful.autofocus")
require("awful.hotkeys_popup.keys")
Awful = require("awful")
Beautiful = require("beautiful")
Gears = require("gears")
Hotkeys_popup = require("awful.hotkeys_popup")
Menubar = require("menubar")
Naughty = require("naughty")
Wibox = require("wibox")

40
configs/awesome/rc.lua Normal file
View file

@ -0,0 +1,40 @@
require('core')
-- Set up key remaps
os.execute('setxkbmap -option "caps:escape,altwin:menu_win,altwin:meta_win"')
-- Some defaults
Browser = "firefox-developer-edition"
Browser2 = "chromium"
Editor = "nvim"
Email = "thunderbird"
Modkey = "Mod4"
Music = "spotify-launcher"
Terminal = "alacritty"
Beautiful.init(".config/awesome/theme.lua")
-- Define layouts
Awful.layout.layouts = {
Awful.layout.suit.tile.right,
Awful.layout.suit.tile.bottom,
Awful.layout.suit.tile.left,
Awful.layout.suit.tile.top,
}
-- Set the terminal for applications that require it
Menubar.utils.terminal = Terminal
-- Split up the rest for readability
require('binds') -- keyboard/mouse
require('rules') -- client specific rules
require('signals') -- client signals
require('wibar') -- bar/screen/wallpaper stuff
-- Collect garbage to prevent memory leaks from widgets
Gears.timer.start_new(
10,
function()
collectgarbage("step", 20000)
return true
end
)

View file

@ -0,0 +1,57 @@
Awful.rules.rules = {
-- All clients will match this rule.
{
rule = {},
properties = {
border_width = Beautiful.border_width,
border_color = Beautiful.border_normal,
focus = Awful.client.focus.filter,
raise = true,
keys = clientkeys,
buttons = clientbuttons,
screen = Awful.screen.preferred,
placement = Awful.placement.no_overlap + Awful.placement.no_offscreen
}
},
-- Floating clients.
{
rule_any = {
instance = {
"DTA", -- Firefox addon DownThemAll.
"copyq", -- Includes session name in class.
"pinentry",
},
class = {
"Arandr",
"Blueman-manager",
"Gpick",
"Kruler",
"MessageWin", -- kalarm.
"Sxiv",
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
"Wpa_gui",
"veromix",
"xtightvncviewer" },
-- Note that the name property shown in xprop might be set slightly after creation of the client
-- and the name shown there might not match defined rules here.
name = {
"Event Tester", -- xev.
},
role = {
"AlarmWindow", -- Thunderbird's calendar.
"ConfigManager", -- Thunderbird's about:config.
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
}
},
properties = { floating = true }
},
-- Add titlebars to normal clients and dialogs
{
rule_any = { type = { "normal", "dialog" }
},
properties = { titlebars_enabled = false }
},
}

View file

@ -0,0 +1,95 @@
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 awesome.startup then awful.client.setslave(c) end
if 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
)
-- Add a titlebar if titlebars_enabled is set to true in the rules.
client.connect_signal(
"request::titlebars",
function(c)
-- buttons for the titlebar
local buttons = Gears.table.join(
Awful.button(
{}, 1,
function()
c:emit_signal(
"request::activate", "titlebar",
{ raise = true }
)
Awful.mouse.client.move(c)
end
),
Awful.button(
{}, 3,
function()
c:emit_signal(
"request::activate", "titlebar",
{ raise = true }
)
Awful.mouse.client.resize(c)
end
)
)
Awful.titlebar(c):setup {
{ -- Left
Awful.titlebar.widget.iconwidget(c),
buttons = buttons,
layout = Wibox.layout.fixed.horizontal
},
{ -- Middle
{ -- Title
align = "center",
widget = Awful.titlebar.widget.titlewidget(c)
},
buttons = buttons,
layout = Wibox.layout.flex.horizontal
},
{ -- Right
Awful.titlebar.widget.floatingbutton(c),
Awful.titlebar.widget.maximizedbutton(c),
Awful.titlebar.widget.stickybutton(c),
Awful.titlebar.widget.ontopbutton(c),
Awful.titlebar.widget.closebutton(c),
layout = Wibox.layout.fixed.horizontal()
},
layout = Wibox.layout.align.horizontal
}
end
)
-- Enable sloppy focus, so that focus follows mouse.
-- client.connect_signal(
-- "mouse::enter",
-- function(c)
-- c:emit_signal(
-- "request::activate", "mouse_enter",
-- { raise = false }
-- )
-- end
-- )
client.connect_signal(
"focus",
function(c)
c.border_color = Beautiful.border_focus
end
)
client.connect_signal(
"unfocus",
function(c)
c.border_color = Beautiful.border_normal
end
)

70
configs/awesome/theme.lua Normal file
View file

@ -0,0 +1,70 @@
local xresources = require("beautiful.xresources")
local dpi = xresources.apply_dpi
local gfs = require("gears.filesystem")
local theme = {}
local theme_assets = require("beautiful.theme_assets")
local themes_path = gfs.get_themes_dir()
local xrdb = xresources.get_current_theme()
theme.font = "monospace 11"
theme.wallpaper = '.cache/wal/bg'
theme.useless_gap = dpi(8)
theme.border_width = dpi(1)
theme.menu_height = dpi(15)
theme.menu_width = dpi(100)
-- Colors
theme.bg_focus = xrdb.color4
theme.bg_minimize = xrdb.color4
theme.bg_normal = xrdb.background
theme.bg_systray = theme.bg_normal
theme.bg_urgent = xrdb.color1
theme.border_focus = xrdb.color4
theme.border_marked = xrdb.color10
theme.border_normal = xrdb.color5
theme.fg_focus = xrdb.foreground
theme.fg_minimize = xrdb.foreground
theme.fg_normal = xrdb.foreground
theme.fg_urgent = xrdb.foreground
-- 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
)
-- You can use your own layout icons like this:
theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
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_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
theme.layout_max = themes_path .. "default/layouts/maxw.png"
theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
theme.layout_tile = themes_path .. "default/layouts/tilew.png"
theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
-- 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

View file

@ -0,0 +1,116 @@
require('wibar.widgets')
require('wibar.taglist')
require('wibar.tasklist')
local function set_wallpaper(s)
-- Wallpaper
if Beautiful.wallpaper then
local wallpaper = Beautiful.wallpaper
-- If wallpaper is a function, call it with the screen
if type(wallpaper) == "function" then
wallpaper = wallpaper(s)
end
Gears.wallpaper.maximized(wallpaper, s, true)
end
end
-- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
screen.connect_signal(
"property::geometry",
set_wallpaper
)
Awful.screen.connect_for_each_screen(
function(s)
-- Each screen has its own tag table.
Awful.tag(
{ "1", "2", "3", "4", "5", "6", "7", "8", "9" },
s,
Awful.layout.layouts[1]
)
-- Create a promptbox for each screen
s.mypromptbox = Awful.widget.prompt()
-- Create an imagebox widget which will contain an icon indicating which layout we're using.
-- We need one layoutbox per screen.
s.mylayoutbox = Awful.widget.layoutbox(s)
s.mylayoutbox:buttons(
Gears.table.join(
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
)
)
)
-- Create a taglist widget
s.mytaglist = Awful.widget.taglist {
screen = s,
filter = Awful.widget.taglist.filter.all,
buttons = Taglist_buttons
}
-- Create a tasklist widget
s.mytasklist = Awful.widget.tasklist {
screen = s,
filter = Awful.widget.tasklist.filter.currenttags,
buttons = Tasklist_buttons
}
-- Create the Wibox
s.myWibox = Awful.wibar(
{
position = "top",
screen = s
}
)
-- Add widgets to the Wibox
s.myWibox:setup {
layout = Wibox.layout.align.horizontal,
-- Left
{
layout = Wibox.layout.fixed.horizontal,
s.mytaglist,
s.mypromptbox,
},
-- Middle
s.mytasklist,
-- Right
{
layout = Wibox.layout.fixed.horizontal,
Cpu_widget(),
Ram_widget(),
Batteryarc_widget(
{ enable_battery_warning = false }
),
Wibox.widget.systray(),
Mytextclock,
s.mylayoutbox,
},
}
end
)
os.execute('nitrogen --set-zoom-fill $(awk {print} ~/.cache/wal/wal)')

View file

@ -0,0 +1,44 @@
Taglist_buttons = Gears.table.join(
Awful.button(
{}, 1,
function(t)
t:view_only()
end
),
Awful.button(
{ Modkey }, 1,
function(t)
if client.focus then
client.focus:move_to_tag(t)
end
end
),
Awful.button(
{}, 3,
Awful.tag.viewtoggle
),
Awful.button(
{ Modkey }, 3,
function(t)
if client.focus then
client.focus:toggle_tag(t)
end
end
),
Awful.button({}, 4,
function(t)
Awful.tag.viewnext(t.screen)
end
),
Awful.button(
{}, 5,
function(t)
Awful.tag.viewprev(t.screen)
end
)
)

View file

@ -0,0 +1,37 @@
Tasklist_buttons = Gears.table.join(
Awful.button(
{}, 1,
function(c)
if c == client.focus then
c.minimized = true
else
c:emit_signal(
"request::activate",
"tasklist",
{ raise = true }
)
end
end
),
Awful.button(
{}, 3,
function()
Awful.menu.client_list(
{ theme = { width = 250 } }
)
end
),
Awful.button(
{}, 4,
function()
Awful.client.focus.byidx(1)
end
),
Awful.button(
{}, 5,
function()
Awful.client.focus.byidx(-1)
end
)
)

View file

@ -0,0 +1,28 @@
Calendar_widget = require("awesome-wm-widgets.calendar-widget.calendar")
Cpu_widget = require("awesome-wm-widgets.cpu-widget.cpu-widget")
Ram_widget = require("awesome-wm-widgets.ram-widget.ram-widget")
Batteryarc_widget = require("awesome-wm-widgets.batteryarc-widget.batteryarc")
Mytextclock = Wibox.widget {
format = ' %a %b %d, %I:%M%P ',
widget = Wibox.widget.textclock
}
local cw = Calendar_widget(
{
placement = 'top_right',
start_sunday = 'true',
previous_month_button = 4,
next_month_button = 5,
}
)
Mytextclock:connect_signal(
"button::press",
function(_, _, _, button)
if button == 1 then
cw.toggle()
end
end
)

View file

@ -1,54 +0,0 @@
# The status generator command.
# Optional: with no status generator the bar will display only tags and layout name.
command = "i3status-rs"
# Colors
background = "#04070A"
tag_bg = "#04070A"
tag_inactive_bg = "#04070A"
tag_urgent_fg = "#04070A"
tag_fg = "#dff1f2"
tag_inactive_fg = "#dff1f2"
tag_focused_fg = "#dff1f2"
color = "#dff1f2"
separator = "#9a8a62ff"
tag_focused_bg = "#3E758A"
tag_urgent_bg = "#9C994A"
# The font and various sizes
font = "monospace 10"
height = 24
margin_top = 0
margin_bottom = 0
margin_left = 0
margin_right = 0
separator_width = 2.0
tags_r = 0.0
tags_padding = 25.0
blocks_r = 0.0
blocks_overlap = 0.0
# Misc
position = "top" # either "top" or "bottom"
hide_inactive_tags = true
invert_touchpad_scrolling = true
show_layout_name = false
blend = true # whether tags/blocks colors should blend with bar's background
show_mode = true
# WM-specific options
[wm.river]
max_tag = 9 # Show only the first nine tags
# Per output overrides
# [output.your-output-name]
# right now only "enable" option is available
# enable = false
#
# You can have any number of overrides
# [output.eDP-1]
# enable = false

View file

@ -1,50 +0,0 @@
icons_format = "{icon}"
[theme]
theme = "native"
[icons]
icons = "awesome5"
[icons.overrides]
# bat = ["| |", "|¼|", "|½|", "|¾|", "|X|"]
# bat_charging = "|^| "
[[block]]
block = "cpu"
[[block]]
block = "memory"
format = " $icon $mem_used_percents.eng(w:2) $icon_swap $swap_used_percents.eng(w:2) "
interval = 5
warning_mem = 70
critical_mem = 90
[[block]]
block = "net"
format = " $icon {$signal_strength} "
[[block]]
block = "bluetooth"
mac = "40:2C:F4:B6:D9:B2"
disconnected_format = ""
format = " $icon "
[block.battery_state]
"0..20" = "critical"
"21..70" = "warning"
"71..100" = "good"
[[block]]
block = "sound"
[[block.click]]
button = "left"
cmd = "pavucontrol"
[[block]]
block = "battery"
format = "$icon $percentage "
missing_format = ""
[[block]]
block = "time"
interval = 5
format = " $timestamp.datetime(f:'%a %m/%d %I:%M%p') "

View file

@ -1,4 +0,0 @@
background_opacity 0.8
font_size 11
include ~/.cache/wal/colors-kitty.conf
enable_audio_bell no

View file

@ -1,2 +0,0 @@
ignore-timeout=1
default-timeout=5000

View file

@ -1,20 +0,0 @@
#!/bin/sh
. "${HOME}/.cache/wal/colors.sh"
conffile="~/.config/mako/config"
# Associative array, color name -> color code.
declare -A colors
colors=(
["background-color"]="${background}89"
["text-color"]="$foreground"
["border-color"]="$color13"
)
for color_name in "${!colors[@]}"; do
# replace first occurance of each color in config file
sed -i "0,/^$color_name.*/{s//$color_name=${colors[$color_name]}/}" $conffile
done
makoctl reload

View file

@ -1,189 +0,0 @@
#!/bin/sh
# Startup
swaybg -i ~/.cache/wal/bg &
mako &
# Terminal
riverctl map normal Super Return spawn "alacritty"
# Browsers
riverctl map normal Super W spawn "firefox-developer-edition"
riverctl map normal Super+Shift W spawn "chromium"
# Email
riverctl map normal Super E spawn "thunderbird"
# Runner
riverctl map normal Super R spawn "fuzzel"
# Chat stuff
riverctl map normal Super+Shift C spawn "telegram-desktop"
riverctl map normal Super C spawn "caprine"
riverctl map normal Super D spawn "discord"
# Games
riverctl map normal Super G spawn "steam-native"
riverctl map normal Super+Shift G spawn "lutris"
# Image editor
riverctl map normal Super I spawn "gimp"
# Music
riverctl map normal Super M spawn "spotify-launcher"
# Run script to set new random bg/colors
riverctl map normal Super+Shift P spawn "doorsbg"
# Screenshots
riverctl map normal None Print spawn "grim - | wl-copy"
riverctl map normal Shift Print spawn 'grim -g "$(slurp)" - | wl-copy'
# Super+Q to close the focused view
riverctl map normal Super Q close
# Super+Shift+E to exit river
riverctl map normal Super+Shift E exit
# Super+J and Super+K to focus the next/previous view in the layout stack
riverctl map normal Super J focus-view next
riverctl map normal Super K focus-view previous
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
# view in the layout stack
riverctl map normal Super+Shift J swap next
riverctl map normal Super+Shift K swap previous
# Super+Period and Super+Comma to focus the next/previous output
riverctl map normal Super Period focus-output next
riverctl map normal Super Comma focus-output previous
# Super+Shift+{Period,Comma} to send the focused view to the next/previous output
riverctl map normal Super+Shift Period send-to-output next
riverctl map normal Super+Shift Comma send-to-output previous
# Super+Return to bump the focused view to the top of the layout stack
riverctl map normal Super+Shift Return zoom
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
riverctl map normal Super H send-layout-cmd rivertile "main-ratio -0.05"
riverctl map normal Super L send-layout-cmd rivertile "main-ratio +0.05"
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
riverctl map normal Super+Shift H send-layout-cmd rivertile "main-count +1"
riverctl map normal Super+Shift L send-layout-cmd rivertile "main-count -1"
# Super+Alt+{H,J,K,L} to move views
riverctl map normal Super+Alt H move left 100
riverctl map normal Super+Alt J move down 100
riverctl map normal Super+Alt K move up 100
riverctl map normal Super+Alt L move right 100
# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
riverctl map normal Super+Alt+Control H snap left
riverctl map normal Super+Alt+Control J snap down
riverctl map normal Super+Alt+Control K snap up
riverctl map normal Super+Alt+Control L snap right
# Super+Alt+Shift+{H,J,K,L} to resize views
riverctl map normal Super+Alt+Shift H resize horizontal -100
riverctl map normal Super+Alt+Shift J resize vertical 100
riverctl map normal Super+Alt+Shift K resize vertical -100
riverctl map normal Super+Alt+Shift L resize horizontal 100
# Super + Left Mouse Button to move views
riverctl map-pointer normal Super BTN_LEFT move-view
# Super + Right Mouse Button to resize views
riverctl map-pointer normal Super BTN_RIGHT resize-view
# Super + Middle Mouse Button to toggle float
riverctl map-pointer normal Super BTN_MIDDLE toggle-float
for i in $(seq 1 9)
do
tags=$((1 << ($i - 1)))
# Super+[1-9] to focus tag [0-8]
riverctl map normal Super $i set-focused-tags $tags
# Super+Shift+[1-9] to tag focused view with tag [0-8]
riverctl map normal Super+Shift $i set-view-tags $tags
# Super+Control+[1-9] to toggle focus of tag [0-8]
riverctl map normal Super+Control $i toggle-focused-tags $tags
# Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
done
# Super+0 to focus all tags
# Super+Shift+0 to tag focused view with all tags
all_tags=$(((1 << 32) - 1))
riverctl map normal Super 0 set-focused-tags $all_tags
riverctl map normal Super+Shift 0 set-view-tags $all_tags
# Super+Space to toggle float
riverctl map normal Super Space toggle-float
# Super+F to toggle fullscreen
riverctl map normal Super F toggle-fullscreen
# Super+{Up,Right,Down,Left} to change layout orientation
riverctl map normal Super Up send-layout-cmd rivertile "main-location top"
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
riverctl map normal Super Down send-layout-cmd rivertile "main-location bottom"
riverctl map normal Super Left send-layout-cmd rivertile "main-location left"
# Declare a passthrough mode. This mode has only a single mapping to return to
# normal mode. This makes it useful for testing a nested wayland compositor
riverctl declare-mode passthrough
# Super+F11 to enter passthrough mode
riverctl map normal Super F11 enter-mode passthrough
# Super+F11 to return to normal mode
riverctl map passthrough Super F11 enter-mode normal
# Various media key mapping examples for both normal and locked mode which do
# not have a modifier
for mode in normal locked
do
# Eject the optical drive (well if you still have one that is)
riverctl map $mode None XF86Eject spawn 'eject -T'
# Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
riverctl map $mode None XF86AudioRaiseVolume spawn 'pamixer -i 5'
riverctl map $mode None XF86AudioLowerVolume spawn 'pamixer -d 5'
riverctl map $mode None XF86AudioMute spawn 'pamixer --toggle-mute'
# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
riverctl map $mode None XF86AudioNext spawn 'playerctl next'
# Control screen backlight brightness with light (https://github.com/haikarainen/light)
riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'
done
# Set background and border color
riverctl background-color 0x002b36
riverctl border-color-focused 0x93a1a1
riverctl border-color-unfocused 0x586e75
# Set keyboard repeat rate
riverctl set-repeat 50 300
# Make all views with an app-id that starts with "float" and title "foo" start floating.
riverctl rule-add float -app-id 'float*' -title 'foo'
# Make all views with app-id "bar" and any title use client-side decorations
riverctl rule-add csd -app-id "bar"
# Set the default layout generator to be rivertile and start it.
# River will send the process group of the init executable SIGTERM on exit.
riverctl default-layout rivertile
rivertile -view-padding 6 -outer-padding 6 &
riverctl spawn i3bar-river

View file

@ -3,13 +3,6 @@
# Keyboard lights
[ -x "$(command -v g610-led)" ] && g610-led -a ff
# The way life should be
export XKB_DEFAULT_OPTIONS=caps:escape,altwin:menu_win,altwin:meta_win
# Wayland stuff
export WLR_NO_HARDWARE_CURSORS=1 # thanks NVIDIA
export MOZ_ENABLE_WAYLAND=1
export PATH="$PATH:$(du "$HOME/.local/bin" | cut -f2 | paste -sd ':' -)"
unsetopt PROMPT_SP
@ -122,8 +115,3 @@ ex=🎯:\
*.jar=♨:\
*.java=♨:\
"
# Unsafe
# if [[ -z $WAYLAND_DISPLAY && $(tty) = "/dev/tty1" ]]; then
# exec river
# fi

View file

@ -1,2 +0,0 @@
[spotify]
extra_arguments = ["--enable-features=UseOzonePlatform", "--ozone-platform=wayland"]

View file

@ -0,0 +1,27 @@
[colors.primary]
background = "#0c050d"
foreground = "#d9d1da"
[colors.cursor]
cursor = "#d9d1da"
text = "CellForeground"
[colors.normal]
black = "#0c050d"
red = "#B8344C"
green = "#EC075B"
yellow = "#B58C70"
blue = "#12718A"
magenta = "#E05497"
cyan = "#28A6B8"
white = "#d9d1da"
[colors.bright]
black = "#979298"
red = "#B8344C"
green = "#EC075B"
yellow = "#B58C70"
blue = "#12718A"
magenta = "#E05497"
cyan = "#28A6B8"
white = "#d9d1da"

View file

@ -1,25 +0,0 @@
colors:
primary:
background: '{background}'
foreground: '{foreground}'
cursor:
text: CellForeground
cursor: '{cursor}'
normal:
black: '{color0}'
red: '{color1}'
green: '{color2}'
yellow: '{color3}'
blue: '{color4}'
magenta: '{color5}'
cyan: '{color6}'
white: '{color7}'
bright:
black: '{color8}'
red: '{color9}'
green: '{color10}'
yellow: '{color11}'
blue: '{color12}'
magenta: '{color13}'
cyan: '{color14}'
white: '{color15}'

24
configs/x11/xinitrc Executable file
View file

@ -0,0 +1,24 @@
#!/bin/sh
# startx/xinit run this script
set -e
# Run xprofile
if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile" ]; then
. "${XDG_CONFIG_HOME:-$HOME/.config}/x11/xprofile"
else
. "$HOME/.xprofile"
fi
# Set up optimus on some laptops if optimus-manager exists
if [ -x $(command -v optimus-manager) ]; then
sudo prime-switch
prime-offload
fi
# Set system colors
wal -R
# Start awesome
ssh-agent awesome

16
configs/x11/xprofile Executable file
View file

@ -0,0 +1,16 @@
#!/bin/sh
# This is called by xinitrc during x startup
set -e
# Run multi-monitor config if it exists
if [ -f ".screenlayout/default.sh" ]; then
. ".screenlayout/default.sh" &
fi
picom -b & # Compositor
xset r rate 150 50 & # Key repeat rate
unclutter & # Hide mouse cursor after inactivity
redshift -l 43:-70 & # Tint screen at night if you're in new england (should change)
xclip & # Make clipboard work