many many changes
[ AWESOMEWM ] - set up better theme config somewhat - start some work on new theme (currently nicknamed 'neo'. i don't even remember what i was doing here) - add new global key combos for ames (and change existing ones to accomodate this) - spawn ibus on load - change tags [ BETTERDISCORD ] - include my settings.json for BetterDiscord - start including my config for plugin CollapsibleUI - include custom CSS (in the form of the .scss file only. i don't like committing the full CSS files if i don't need to) [ THUNDERBIRD ] - add filters for sorting aliexpress emails - add filters for deleting spammy marketing emails from aliexpress - add filters for sorting etsy emails - add filters for deleting spammy marketing emails from etsy - add filters for sorting myus emails
|
@ -24,12 +24,13 @@ fish/channel
|
||||||
rofi/theme.rasi
|
rofi/theme.rasi
|
||||||
|
|
||||||
# ---> BetterDiscord
|
# ---> BetterDiscord
|
||||||
# generalistic
|
discord/data/betterdiscord.asar
|
||||||
discord/data/
|
discord/data/stable/*
|
||||||
|
!discord/data/stable/custom.scss
|
||||||
|
!discord/data/stable/settings.json
|
||||||
discord/plugins/*
|
discord/plugins/*
|
||||||
|
!discord/plugins/CollapsibleUI.config.json
|
||||||
discord/themes/*
|
discord/themes/*
|
||||||
# specific
|
|
||||||
### there's actually nothing here yet lol
|
|
||||||
|
|
||||||
# ---> status.cafe
|
# ---> status.cafe
|
||||||
miscellany/websites/status cafe/*.css
|
miscellany/websites/status cafe/*.css
|
||||||
|
|
|
@ -212,7 +212,7 @@ function _M.get()
|
||||||
group = "awesome" }),
|
group = "awesome" }),
|
||||||
|
|
||||||
--- open the run prompt [global::mod+r]
|
--- open the run prompt [global::mod+r]
|
||||||
awful.key({ modkey }, "r",
|
awful.key({ modkey, "Shift" }, "r",
|
||||||
function()
|
function()
|
||||||
awful.screen.focused().mypromptbox:run()
|
awful.screen.focused().mypromptbox:run()
|
||||||
end,
|
end,
|
||||||
|
@ -256,7 +256,47 @@ function _M.get()
|
||||||
awful.util.spawn("rofi -show drun")
|
awful.util.spawn("rofi -show drun")
|
||||||
end,
|
end,
|
||||||
{ description = "open rofi launcher",
|
{ description = "open rofi launcher",
|
||||||
group = "launcher" })
|
group = "launcher" }),
|
||||||
|
|
||||||
|
--- ames: start/stop audio recording [global::mod+alt+r]
|
||||||
|
awful.key({ modkey, "Mod1" }, "r",
|
||||||
|
function()
|
||||||
|
awful.util.spawn("bash /home/nu/opt/ames/ames.sh -r")
|
||||||
|
end,
|
||||||
|
{ description = "start/stop audio recording",
|
||||||
|
group = "ames" }),
|
||||||
|
|
||||||
|
--- ames: screenshot selection [global::mod+alt+s]
|
||||||
|
awful.key({ modkey, "Mod1" }, "s",
|
||||||
|
function()
|
||||||
|
awful.util.spawn("bash /home/nu/opt/ames/ames.sh -s")
|
||||||
|
end,
|
||||||
|
{ description = "screenshot selection",
|
||||||
|
group = "ames" }),
|
||||||
|
|
||||||
|
--- ames: repeat previous screenshot selection [global::mod+alt+a]
|
||||||
|
awful.key({ modkey, "Mod1" }, "a",
|
||||||
|
function()
|
||||||
|
awful.util.spawn("bash /home/nu/opt/ames/ames.sh -a")
|
||||||
|
end,
|
||||||
|
{ description = "repeat previous screenshot selection",
|
||||||
|
group = "ames" }),
|
||||||
|
|
||||||
|
--- ames: screenshot active window [global::mod+alt+w]
|
||||||
|
awful.key({ modkey, "Mod1" }, "w",
|
||||||
|
function()
|
||||||
|
awful.util.spawn("bash /home/nu/opt/ames/ames.sh -w")
|
||||||
|
end,
|
||||||
|
{ description = "screenshot active window",
|
||||||
|
group = "ames" }),
|
||||||
|
|
||||||
|
--- ames: export copied text to card [global::mod+alt+c]
|
||||||
|
awful.key({ modkey, "Mod1" }, "c",
|
||||||
|
function()
|
||||||
|
awful.util.spawn("bash /home/nu/opt/ames/ames.sh -c")
|
||||||
|
end,
|
||||||
|
{ description = "export copied text to card",
|
||||||
|
group = "ames" })
|
||||||
)
|
)
|
||||||
|
|
||||||
return global_keys
|
return global_keys
|
||||||
|
|
|
@ -52,7 +52,8 @@ function _M.get(clientkeys, clientbuttons)
|
||||||
"Picture-in-picture",
|
"Picture-in-picture",
|
||||||
"review files to import", -- Hydrus import window
|
"review files to import", -- Hydrus import window
|
||||||
"Spotify",
|
"Spotify",
|
||||||
"Calculator"
|
"Calculator",
|
||||||
|
"Steam Games List"
|
||||||
},
|
},
|
||||||
role = {
|
role = {
|
||||||
"AlarmWindow", -- Thunderbird's calendar.
|
"AlarmWindow", -- Thunderbird's calendar.
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
local awful = require("awful")
|
local awful = require("awful")
|
||||||
|
|
||||||
awful.spawn.single_instance("picom --config /home/nu/.config/picom/picom.conf")
|
awful.spawn.single_instance("picom --config /home/nu/.config/picom/picom.conf")
|
||||||
|
--- TODO: fix reloads spawning an additional instance of caffeine
|
||||||
|
--- adding `killall -9 caffeine-ng` before doesn't work for some reason?
|
||||||
|
--- awful.spawn.single_instance("caffeine")
|
||||||
|
awful.spawn.single_instance("ibus-daemon -drxR")
|
|
@ -8,18 +8,15 @@ local _M = {}
|
||||||
function _M.get ()
|
function _M.get ()
|
||||||
local tags = {}
|
local tags = {}
|
||||||
|
|
||||||
awful.tag.add("➊ home",
|
awful.tag.add("1",
|
||||||
{ layout = awful.layout.suit.floating, })
|
{ layout = awful.layout.suit.floating, })
|
||||||
|
|
||||||
awful.tag.add("➋ code",
|
awful.tag.add("2",
|
||||||
{ layout = awful.layout.suit.tile, })
|
|
||||||
|
|
||||||
awful.tag.add("➌ art",
|
|
||||||
{ layout = awful.layout.suit.floating, })
|
{ layout = awful.layout.suit.floating, })
|
||||||
|
|
||||||
awful.tag.add("➍ games",
|
awful.tag.add("3",
|
||||||
{ layout = awful.layout.suit.floating, })
|
{ layout = awful.layout.suit.floating, })
|
||||||
|
|
||||||
return tags
|
return tags
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,7 @@ local home = os.getenv("HOME")
|
||||||
local _M = {
|
local _M = {
|
||||||
terminal = "alacritty",
|
terminal = "alacritty",
|
||||||
file_manager = "Thunar",
|
file_manager = "Thunar",
|
||||||
modkey = "Mod4",
|
modkey = "Mod4"
|
||||||
wallpaper = "/usr/share/backgrounds/custom/space_station.jpg"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return _M
|
return _M
|
||||||
|
|
|
@ -16,10 +16,12 @@ RC.vars = require("main.user_vars")
|
||||||
require("main.errors")
|
require("main.errors")
|
||||||
|
|
||||||
------ theme stuff
|
------ theme stuff
|
||||||
--- TODO: implement a not-shitty way of handling multiple themes
|
local themename = "spacestation"
|
||||||
--local theme = require("themes.spacestation")
|
local style = {
|
||||||
beautiful.init("~/.config/awesome/themes/spacestation/theme.lua")
|
vars = require("themes." .. themename .. ".vars")
|
||||||
beautiful.wallpaper = RC.vars.wallpaper
|
}
|
||||||
|
beautiful.init("~/.config/awesome/themes/" .. themename .. "/theme.lua")
|
||||||
|
beautiful.wallpaper = style.vars.wallpaper
|
||||||
|
|
||||||
------- custom Local Library
|
------- custom Local Library
|
||||||
--- main
|
--- main
|
||||||
|
@ -69,7 +71,7 @@ root.keys(RC.global_keys)
|
||||||
mykeyboardlayout = awful.widget.keyboardlayout()
|
mykeyboardlayout = awful.widget.keyboardlayout()
|
||||||
|
|
||||||
------ statusbar
|
------ statusbar
|
||||||
require("deco.statusbar")
|
require("themes."..themename..".statusbar")
|
||||||
|
|
||||||
------ rules
|
------ rules
|
||||||
--- rules to apply to new clients
|
--- rules to apply to new clients
|
||||||
|
|
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 263 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 263 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 320 B |
After Width: | Height: | Size: 320 B |
After Width: | Height: | Size: 245 B |
After Width: | Height: | Size: 245 B |
After Width: | Height: | Size: 246 B |
After Width: | Height: | Size: 246 B |
After Width: | Height: | Size: 282 B |
After Width: | Height: | Size: 282 B |
After Width: | Height: | Size: 866 B |
After Width: | Height: | Size: 865 B |
After Width: | Height: | Size: 345 B |
After Width: | Height: | Size: 345 B |
After Width: | Height: | Size: 574 B |
After Width: | Height: | Size: 581 B |
After Width: | Height: | Size: 328 B |
After Width: | Height: | Size: 328 B |
After Width: | Height: | Size: 265 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 266 B |
After Width: | Height: | Size: 266 B |
After Width: | Height: | Size: 260 B |
After Width: | Height: | Size: 265 B |
After Width: | Height: | Size: 265 B |
|
@ -0,0 +1,84 @@
|
||||||
|
-- Standard awesome library
|
||||||
|
local gears = require("gears")
|
||||||
|
local awful = require("awful")
|
||||||
|
|
||||||
|
-- Wibox handling library
|
||||||
|
local wibox = require("wibox")
|
||||||
|
|
||||||
|
-- Custom Local Library: Common Functional Decoration
|
||||||
|
local deco = {
|
||||||
|
wallpaper = require("deco.wallpaper"),
|
||||||
|
taglist = require("deco.taglist"),
|
||||||
|
tasklist = require("deco.tasklist"),
|
||||||
|
borders = require("deco.borders")
|
||||||
|
}
|
||||||
|
|
||||||
|
local taglist_buttons = deco.taglist()
|
||||||
|
local tasklist_buttons = deco.tasklist()
|
||||||
|
|
||||||
|
local _M = {}
|
||||||
|
|
||||||
|
-- Custom Local Library: widgets
|
||||||
|
local volume_widget = require('awesome-wm-widgets.pactl-widget.volume')
|
||||||
|
|
||||||
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
||||||
|
|
||||||
|
-- Create a textclock widget
|
||||||
|
text_clock = wibox.widget.textclock('%l:%M %p :: %b. %e, %Y ')
|
||||||
|
|
||||||
|
awful.screen.connect_for_each_screen(function(s)
|
||||||
|
-- Wallpaper
|
||||||
|
set_wallpaper(s)
|
||||||
|
|
||||||
|
-- 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({ }, 1, function () awful.layout.inc( 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)
|
||||||
|
))
|
||||||
|
|
||||||
|
-- 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, height = 25 })
|
||||||
|
|
||||||
|
-- Add widgets to the wibox
|
||||||
|
s.mywibox:setup {
|
||||||
|
layout = wibox.layout.align.horizontal,
|
||||||
|
{ -- Left widgets
|
||||||
|
layout = wibox.layout.fixed.horizontal,
|
||||||
|
-- RC.launcher,
|
||||||
|
s.mytaglist,
|
||||||
|
s.mypromptbox,
|
||||||
|
},
|
||||||
|
s.mytasklist, -- Middle widget
|
||||||
|
{ -- Right widgets
|
||||||
|
layout = wibox.layout.fixed.horizontal,
|
||||||
|
wibox.widget.systray(),
|
||||||
|
volume_widget{
|
||||||
|
widget_type = 'arc',
|
||||||
|
tooltip = 'true'
|
||||||
|
},
|
||||||
|
text_clock,
|
||||||
|
s.mylayoutbox
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end)
|
After Width: | Height: | Size: 440 B |
After Width: | Height: | Size: 187 B |
After Width: | Height: | Size: 193 B |
|
@ -0,0 +1,153 @@
|
||||||
|
------------------------------
|
||||||
|
--- spacestation - ngoomie ---
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
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 = {
|
||||||
|
color = {
|
||||||
|
transparent = "#00000000",
|
||||||
|
dark = "#3b3b3b",
|
||||||
|
white = "#fbfbfb",
|
||||||
|
black = "#191919",
|
||||||
|
},
|
||||||
|
fonts = {
|
||||||
|
main = "Noto Sans CJK JP "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
theme.font = theme.fonts.main .. "Medium 9"
|
||||||
|
|
||||||
|
theme.bg_normal = theme.color.dark .. "70"
|
||||||
|
theme.bg_focus = theme.color.white
|
||||||
|
theme.bg_urgent = theme.color.dark
|
||||||
|
theme.bg_minimize = theme.color.transparent
|
||||||
|
theme.bg_systray = theme.color.transparent
|
||||||
|
|
||||||
|
theme.fg_normal = theme.color.white
|
||||||
|
theme.fg_focus = theme.color.black
|
||||||
|
theme.fg_urgent = theme.color.white
|
||||||
|
theme.fg_minimize = theme.color.white
|
||||||
|
|
||||||
|
theme.border_width = 0
|
||||||
|
theme.border_normal = theme.color.dark
|
||||||
|
theme.border_focus = theme.color.dark
|
||||||
|
theme.border_marked = theme.color.dark
|
||||||
|
|
||||||
|
theme.notification_font = theme.fonts.main .. "10"
|
||||||
|
|
||||||
|
theme.notification_bg = theme.bg_normal
|
||||||
|
theme.notification_fg = theme.fg_normal
|
||||||
|
theme.notification_border_color = theme.border_normal
|
||||||
|
|
||||||
|
theme.tooltip_fg_color = theme.color.white
|
||||||
|
theme.tooltip_bg_color = theme.color.dark .. 38
|
||||||
|
theme.tooltip_border_color = theme.color.dark
|
||||||
|
|
||||||
|
theme.prompt_bg = theme.bg_normal
|
||||||
|
|
||||||
|
theme.tasklist_bg_normal = theme.bg_minimize
|
||||||
|
|
||||||
|
-- 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(17)
|
||||||
|
theme.menu_width = dpi(100)
|
||||||
|
theme.menu_bg_normal = theme.bg_normal
|
||||||
|
theme.menu_bg_focus = theme.bg_focus
|
||||||
|
theme.menu_border_color = theme.fg_normal
|
||||||
|
|
||||||
|
-- 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"
|
||||||
|
|
||||||
|
-- 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
|
After Width: | Height: | Size: 966 B |
After Width: | Height: | Size: 966 B |
After Width: | Height: | Size: 386 B |
After Width: | Height: | Size: 237 B |
After Width: | Height: | Size: 386 B |
After Width: | Height: | Size: 237 B |
After Width: | Height: | Size: 480 B |
After Width: | Height: | Size: 452 B |
After Width: | Height: | Size: 480 B |
After Width: | Height: | Size: 452 B |
After Width: | Height: | Size: 234 B |
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 467 B |
After Width: | Height: | Size: 604 B |
After Width: | Height: | Size: 467 B |
After Width: | Height: | Size: 604 B |
After Width: | Height: | Size: 654 B |
After Width: | Height: | Size: 758 B |
After Width: | Height: | Size: 654 B |
After Width: | Height: | Size: 758 B |
|
@ -0,0 +1,5 @@
|
||||||
|
local _M = {
|
||||||
|
wallpaper = "/usr/share/backgrounds/custom/space_station.jpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
return _M
|
|
@ -81,4 +81,4 @@ awful.screen.connect_for_each_screen(function(s)
|
||||||
s.mylayoutbox
|
s.mylayoutbox
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end)
|
end)
|
|
@ -0,0 +1,27 @@
|
||||||
|
// --- SQUARE ICONS
|
||||||
|
// -- border radius vars
|
||||||
|
$small: 4px;
|
||||||
|
$medium: $small;
|
||||||
|
$large: 6px;
|
||||||
|
|
||||||
|
// -- clear mask that makes icons round in various spots
|
||||||
|
foreignObject[mask*="url(#"] {
|
||||||
|
mask: none;
|
||||||
|
//! SIDENOTE: while this removes the rounding, it also removes any cutout for the status icon. i'm going to be frank and say i think this looks like shit. i will look into crafting my own SVG instead at some point if i can, as an alternative to just entirely clearing it (but i'll still be using border rads for custom icon rounding)
|
||||||
|
}
|
||||||
|
|
||||||
|
// -- now apply border rads
|
||||||
|
// - user list icons (DM list, server member list)
|
||||||
|
.wrapper_edb6e0 svg foreignObject {
|
||||||
|
border-radius: $small;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - user icons in chat
|
||||||
|
.avatar__08316 {
|
||||||
|
border-radius: $medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - profile modal icons
|
||||||
|
.clickable__35918 svg foreignObject {
|
||||||
|
border-radius: $large;
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
"general": {
|
||||||
|
"voiceDisconnect": false,
|
||||||
|
"showToasts": true,
|
||||||
|
"mediaKeys": true
|
||||||
|
},
|
||||||
|
"addons": {
|
||||||
|
"addonErrors": true,
|
||||||
|
"editAction": "detached"
|
||||||
|
},
|
||||||
|
"customcss": {
|
||||||
|
"customcss": true,
|
||||||
|
"liveUpdate": true,
|
||||||
|
"openAction": "system"
|
||||||
|
},
|
||||||
|
"editor": {
|
||||||
|
"lineNumbers": true,
|
||||||
|
"minimap": true,
|
||||||
|
"hover": true,
|
||||||
|
"quickSuggestions": true,
|
||||||
|
"fontSize": 14,
|
||||||
|
"renderWhitespace": "selection"
|
||||||
|
},
|
||||||
|
"window": {
|
||||||
|
"transparency": false,
|
||||||
|
"removeMinimumSize": true,
|
||||||
|
"frame": false
|
||||||
|
},
|
||||||
|
"developer": {
|
||||||
|
"debugLogs": false,
|
||||||
|
"devTools": true,
|
||||||
|
"debuggerHotkey": false,
|
||||||
|
"reactDevTools": false,
|
||||||
|
"inspectElement": true,
|
||||||
|
"devToolsWarning": true
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
{
|
||||||
|
"currentVersionInfo": {
|
||||||
|
"version": "7.4.2",
|
||||||
|
"hasShownChangelog": true
|
||||||
|
},
|
||||||
|
"cuiSettingsVersion": "10",
|
||||||
|
"disableTransitions": "false",
|
||||||
|
"transitionSpeed": "250",
|
||||||
|
"disableToolbarCollapse": "false",
|
||||||
|
"disableSettingsCollapse": "false",
|
||||||
|
"disableMsgBarBtnCollapse": "false",
|
||||||
|
"enableFullToolbarCollapse": "false",
|
||||||
|
"dynamicUncollapse": "true",
|
||||||
|
"dynamicUncollapseDistance": "30,30,30,30,30,30,30,30",
|
||||||
|
"dynamicUncollapseCloseDistance": "30,30,30,30,30,30,30,30",
|
||||||
|
"dynamicUncollapseDelay": "15",
|
||||||
|
"autoCollapse": "true",
|
||||||
|
"autoCollapseThreshold": "500,600,400,200,950,0,550,1000",
|
||||||
|
"conditionalAutoCollapse": "false",
|
||||||
|
"autoCollapseConditionals": ",,,,,,,",
|
||||||
|
"resizableChannelList": "true",
|
||||||
|
"resizableMembersList": "true",
|
||||||
|
"channelListWidth": "0",
|
||||||
|
"buttonsOrder": "1,2,4,6,7,3,5,8",
|
||||||
|
"dynamicUncollapseEnabled": "true,true,true,true,true,false,true,false",
|
||||||
|
"disabledButtonsStayCollapsed": "false",
|
||||||
|
"keyBindsEnabled": "true",
|
||||||
|
"keyStringList": "Alt+S,Alt+C,Alt+T,Alt+W,Alt+M,Alt+U,Alt+P,Alt+I",
|
||||||
|
"settingsButtonsMaxWidth": "100",
|
||||||
|
"messageBarButtonsMaxWidth": "200",
|
||||||
|
"messageBarButtonsMinWidth": "40",
|
||||||
|
"toolbarIconMaxWidth": "300",
|
||||||
|
"profilePanelMaxWidth": "340",
|
||||||
|
"toolbarMaxWidth": "800",
|
||||||
|
"userAreaMaxHeight": "300",
|
||||||
|
"msgBarMaxHeight": "400",
|
||||||
|
"windowBarHeight": "18",
|
||||||
|
"collapsedDistance": "0",
|
||||||
|
"buttonCollapseFudgeFactor": "10",
|
||||||
|
"serverListButtonActive": "true",
|
||||||
|
"channelListButtonActive": "true",
|
||||||
|
"msgBarButtonActive": "true",
|
||||||
|
"userAreaButtonActive": "true",
|
||||||
|
"profilePanelButtonActive": "false",
|
||||||
|
"membersListButtonActive": "true"
|
||||||
|
}
|
11
linkdir.pl
|
@ -14,12 +14,21 @@ my %confDirs = (
|
||||||
"omf" => "fish",
|
"omf" => "fish",
|
||||||
"picom" => "picom",
|
"picom" => "picom",
|
||||||
"rofi" => "rofi",
|
"rofi" => "rofi",
|
||||||
"BetterDiscord" => "discord",
|
|
||||||
"Thunar" => "thunar",
|
"Thunar" => "thunar",
|
||||||
|
"polybar" => "polybar"
|
||||||
|
);
|
||||||
|
my %otherDirs = (
|
||||||
|
"/home/nu/.var/app/com.discordapp.Discord/config/BetterDiscord/"
|
||||||
|
=> "discord"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
# mount from %confDirs
|
||||||
while (my ($key, $value) = each %confDirs) {
|
while (my ($key, $value) = each %confDirs) {
|
||||||
`mount --bind "/home/nu/.config\/$key" "/mnt/Storage/(500) Programming/598. Groups of smaller projects/dotfiles\/$value"`
|
`mount --bind "/home/nu/.config\/$key" "/mnt/Storage/(500) Programming/598. Groups of smaller projects/dotfiles\/$value"`
|
||||||
}
|
}
|
||||||
|
# mount from %otherDirs
|
||||||
|
while (my ($key, $value) = each %otherDirs) {
|
||||||
|
`mount --bind "$key" "/mnt/Storage/(500) Programming/598. Groups of smaller projects/dotfiles\/$value"`
|
||||||
|
}
|
||||||
|
|
||||||
print("Done!");
|
print("Done!");
|
|
@ -0,0 +1,53 @@
|
||||||
|
#! /usr/bin/env perl
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
use utf8;
|
||||||
|
use YAML::Syck;
|
||||||
|
use File::Slurp;
|
||||||
|
|
||||||
|
# vars with static values during runtime
|
||||||
|
my $skip = " Skipping...\n";
|
||||||
|
my $conf = LoadFile('yt-dlp.yml');
|
||||||
|
# declare empty vars for use later
|
||||||
|
my $site;
|
||||||
|
my $type;
|
||||||
|
|
||||||
|
foreach my ($url) (@ARGV) {
|
||||||
|
if ($url =~ /^(https?:?\/\/)?((www|m)\.)?(youtube(-nocookie)?\.com|youtu\.be)/g ) {
|
||||||
|
|
||||||
|
$site = "yout";
|
||||||
|
print "[".$url."] YouTube URL";
|
||||||
|
|
||||||
|
if ( $url =~ /((watch\?v=)([0-9A-Za-z_-]{10}[048AEIMQUYcgkosw])|playlist|watch)(&|\?)(list=)(PL)([A-Z0-9]{16}|[0-9A-Za-z_-]{32})((&v=)([0-9A-Za-z_-]{10}[048AEIMQUYcgkosw]))?&?$/g ) {
|
||||||
|
|
||||||
|
$type = "lst";
|
||||||
|
print ": playlist\n";
|
||||||
|
|
||||||
|
} elsif ( $url =~ /((channel\/)(UC)?[0-9A-Za-z_-]{21}[AQgw]|(@|\/c\/|\/user\/).{1,})$/g ) {
|
||||||
|
|
||||||
|
$type = "usr";
|
||||||
|
print ": channel\n";
|
||||||
|
|
||||||
|
} elsif ( $url =~ /(watch\?v=)([0-9A-Za-z_-]{10}[048AEIMQUYcgkosw])(\?t=\d{3,5})?$/g ) {
|
||||||
|
|
||||||
|
$type = "vid";
|
||||||
|
print ": video\n";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
print "\nCannot determine whether this is a video, playlist, or channel.".$skip;
|
||||||
|
}
|
||||||
|
|
||||||
|
} elsif ($url =~ /^(https?:\/\/)?((www)\.)?(bilibili\.com)/g ) {
|
||||||
|
|
||||||
|
$site = "bili";
|
||||||
|
print "[".$url."] Bilibili URL\n";
|
||||||
|
|
||||||
|
} elsif ($url =~ /^(https?:\/\/)?((www)\.)?(nicovideo\.jp)/g ) {
|
||||||
|
|
||||||
|
$site = "nico";
|
||||||
|
print "[".$url."] niconico URL\n";
|
||||||
|
|
||||||
|
} else {
|
||||||
|
print "Unknown or invalid URL: `".$url."`".$skip;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
default:
|
||||||
|
video: --write-thumbnail --write-link --write-info-json
|
||||||
|
|
||||||
|
youtube:
|
||||||
|
video: --write-thumbnail --write-link --sponsorblock-mark=all --write-info-json
|
|
@ -0,0 +1,172 @@
|
||||||
|
;==========================================================
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||||
|
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||||
|
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||||
|
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||||
|
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||||
|
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||||
|
;
|
||||||
|
;
|
||||||
|
; To learn more about how to configure Polybar
|
||||||
|
; go to https://github.com/polybar/polybar
|
||||||
|
;
|
||||||
|
; The README contains a lot of information
|
||||||
|
;
|
||||||
|
;==========================================================
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
background = #282A2E
|
||||||
|
background-alt = #373B41
|
||||||
|
foreground = #C5C8C6
|
||||||
|
primary = #F0C674
|
||||||
|
secondary = #8ABEB7
|
||||||
|
alert = #A54242
|
||||||
|
disabled = #707880
|
||||||
|
|
||||||
|
[bar/example]
|
||||||
|
width = 100%
|
||||||
|
height = 24pt
|
||||||
|
radius = 6
|
||||||
|
|
||||||
|
; dpi = 96
|
||||||
|
|
||||||
|
background = ${colors.background}
|
||||||
|
foreground = ${colors.foreground}
|
||||||
|
|
||||||
|
line-size = 3pt
|
||||||
|
|
||||||
|
border-size = 4pt
|
||||||
|
border-color = #00000000
|
||||||
|
|
||||||
|
padding-left = 0
|
||||||
|
padding-right = 1
|
||||||
|
|
||||||
|
module-margin = 1
|
||||||
|
|
||||||
|
separator = |
|
||||||
|
separator-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
font-0 = monospace;2
|
||||||
|
|
||||||
|
modules-left = xworkspaces xwindow
|
||||||
|
modules-right = filesystem pulseaudio xkeyboard memory cpu wlan eth date
|
||||||
|
|
||||||
|
cursor-click = pointer
|
||||||
|
cursor-scroll = ns-resize
|
||||||
|
|
||||||
|
enable-ipc = true
|
||||||
|
|
||||||
|
; tray-position = right
|
||||||
|
|
||||||
|
; wm-restack = generic
|
||||||
|
; wm-restack = bspwm
|
||||||
|
; wm-restack = i3
|
||||||
|
|
||||||
|
; override-redirect = true
|
||||||
|
|
||||||
|
[module/xworkspaces]
|
||||||
|
type = internal/xworkspaces
|
||||||
|
|
||||||
|
label-active = %name%
|
||||||
|
label-active-background = ${colors.background-alt}
|
||||||
|
label-active-underline= ${colors.primary}
|
||||||
|
label-active-padding = 1
|
||||||
|
|
||||||
|
label-occupied = %name%
|
||||||
|
label-occupied-padding = 1
|
||||||
|
|
||||||
|
label-urgent = %name%
|
||||||
|
label-urgent-background = ${colors.alert}
|
||||||
|
label-urgent-padding = 1
|
||||||
|
|
||||||
|
label-empty = %name%
|
||||||
|
label-empty-foreground = ${colors.disabled}
|
||||||
|
label-empty-padding = 1
|
||||||
|
|
||||||
|
[module/xwindow]
|
||||||
|
type = internal/xwindow
|
||||||
|
label = %title:0:60:...%
|
||||||
|
|
||||||
|
[module/filesystem]
|
||||||
|
type = internal/fs
|
||||||
|
interval = 25
|
||||||
|
|
||||||
|
mount-0 = /
|
||||||
|
|
||||||
|
label-mounted = %{F#F0C674}%mountpoint%%{F-} %percentage_used%%
|
||||||
|
|
||||||
|
label-unmounted = %mountpoint% not mounted
|
||||||
|
label-unmounted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/pulseaudio]
|
||||||
|
type = internal/pulseaudio
|
||||||
|
|
||||||
|
format-volume-prefix = "VOL "
|
||||||
|
format-volume-prefix-foreground = ${colors.primary}
|
||||||
|
format-volume = <label-volume>
|
||||||
|
|
||||||
|
label-volume = %percentage%%
|
||||||
|
|
||||||
|
label-muted = muted
|
||||||
|
label-muted-foreground = ${colors.disabled}
|
||||||
|
|
||||||
|
[module/xkeyboard]
|
||||||
|
type = internal/xkeyboard
|
||||||
|
blacklist-0 = num lock
|
||||||
|
|
||||||
|
label-layout = %layout%
|
||||||
|
label-layout-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
label-indicator-padding = 2
|
||||||
|
label-indicator-margin = 1
|
||||||
|
label-indicator-foreground = ${colors.background}
|
||||||
|
label-indicator-background = ${colors.secondary}
|
||||||
|
|
||||||
|
[module/memory]
|
||||||
|
type = internal/memory
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "RAM "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage_used:2%%
|
||||||
|
|
||||||
|
[module/cpu]
|
||||||
|
type = internal/cpu
|
||||||
|
interval = 2
|
||||||
|
format-prefix = "CPU "
|
||||||
|
format-prefix-foreground = ${colors.primary}
|
||||||
|
label = %percentage:2%%
|
||||||
|
|
||||||
|
[network-base]
|
||||||
|
type = internal/network
|
||||||
|
interval = 5
|
||||||
|
format-connected = <label-connected>
|
||||||
|
format-disconnected = <label-disconnected>
|
||||||
|
label-disconnected = %{F#F0C674}%ifname%%{F#707880} disconnected
|
||||||
|
|
||||||
|
[module/wlan]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wireless
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %essid% %local_ip%
|
||||||
|
|
||||||
|
[module/eth]
|
||||||
|
inherit = network-base
|
||||||
|
interface-type = wired
|
||||||
|
label-connected = %{F#F0C674}%ifname%%{F-} %local_ip%
|
||||||
|
|
||||||
|
[module/date]
|
||||||
|
type = internal/date
|
||||||
|
interval = 1
|
||||||
|
|
||||||
|
date = %H:%M
|
||||||
|
date-alt = %Y-%m-%d %H:%M:%S
|
||||||
|
|
||||||
|
label = %date%
|
||||||
|
label-foreground = ${colors.primary}
|
||||||
|
|
||||||
|
[settings]
|
||||||
|
screenchange-reload = true
|
||||||
|
pseudo-transparency = true
|
||||||
|
|
||||||
|
; vim:ft=dosini
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Thunderbird filters for AliExpress emails
|
||||||
|
|
||||||
|
## `sort.dat`
|
||||||
|
|
||||||
|
Moves all AliExpress emails to a folder of your choice
|
||||||
|
|
||||||
|
## `[SPAM] ae-news.dat`
|
||||||
|
|
||||||
|
Deletes emails sent from domains like `ae-news.a*@mail.aliexpress.com` since these seem to all be promotional mumbo jumbo that fills your inbox
|
||||||
|
|
||||||
|
## `[SPAM] promotion.dat`
|
||||||
|
|
||||||
|
Deletes emails sent from domain `promotion@aliexpress.com` UNLESS their subject matches `Price drop on your Wish List`, as all of these other emails are promotional mumbo jumbo that fills your inbox (other people might want to edit this filter so it even deletes the wishlist price drop notifications, I'd imagine)
|
|
@ -0,0 +1,5 @@
|
||||||
|
name="SPAM: AliExpress (ae-news)"
|
||||||
|
enabled="yes"
|
||||||
|
type="17"
|
||||||
|
action="Delete"
|
||||||
|
condition="AND (from,begins with,ae-news.a) AND (from,ends with,@mail.aliexpress.com)"
|
|
@ -0,0 +1,5 @@
|
||||||
|
name="SPAM: AliExpress (promotion@aliexpress.com minus wishlist price reductions)"
|
||||||
|
enabled="yes"
|
||||||
|
type="17"
|
||||||
|
action="Delete"
|
||||||
|
condition="AND (from,is,promotion@aliexpress.com) AND (subject,isn't,Price drop on your Wish List)"
|
|
@ -0,0 +1,6 @@
|
||||||
|
name="AliExpress"
|
||||||
|
enabled="yes"
|
||||||
|
type="17"
|
||||||
|
action="Move to folder"
|
||||||
|
actionValue="imap://{YOUREMAIL}@{YOURPROVIDER}/INBOX/Shopping/AliExpress"
|
||||||
|
condition="OR (from,ends with,.aliexpress.com) OR (from,ends with,@aliexpress.com)"
|
|
@ -0,0 +1,5 @@
|
||||||
|
name="SPAM: Etsy"
|
||||||
|
enabled="yes"
|
||||||
|
type="17"
|
||||||
|
action="Delete"
|
||||||
|
condition="AND (from,is,email@email.etsy.com)"
|
|
@ -0,0 +1,6 @@
|
||||||
|
name="Etsy"
|
||||||
|
enabled="yes"
|
||||||
|
type="17"
|
||||||
|
action="Move to folder"
|
||||||
|
actionValue="imap://{YOUREMAIL}@{YOURPROVIDER}/INBOX/Shopping/Etsy"
|
||||||
|
condition="OR (from,ends with,.etsy.com) OR (from,ends with,@etsy.com)"
|
|
@ -0,0 +1,6 @@
|
||||||
|
name="MyUS"
|
||||||
|
enabled="yes"
|
||||||
|
type="48"
|
||||||
|
action="Move to folder"
|
||||||
|
actionValue="imap://{YOUREMAIL}@{YOURPROVIDER}/INBOX/Shopping/MyUS"
|
||||||
|
condition="OR (from,ends with,.myus.com) OR (from,ends with,@myus.com)"
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Thunderbird filters
|
||||||
|
|
||||||
|
Here are my Thunderbird email filters. These are individual filters for things like sorting inbox content or deleting stuff that amounts to spam from otherwise okay senders (i.e. promotional emails from shopping sites or whatever)
|
||||||
|
|
||||||
|
You're meant to paste them into your `msgFilterRules.dat` for a given email account (after the header, which I have excluded from any individual filters saved here because they're basically just fragments of one of those files anyways)
|
||||||
|
|
||||||
|
## subfolder README.md contents
|
||||||
|
|
||||||
|
If there's more than a `sort.dat` in a given folder, it will have its own `README.md` which provides information on what each individual filter does.
|
||||||
|
|
||||||
|
If a filter is for sorting emails into folders, you'll need to edit it to replace the `actionValue` in the file with the imap URL to the folder you want to move it to. by default all of mine here have my actual email replaced with `{YOUREMAIL}@{YOURPROVIDER}` (partially because a lot of these are for my irl personal email which I just don't want to share here lol).
|
||||||
|
|
||||||
|
For the filters marked `[SPAM]`, if you have any sorting filters for the same domain you'll want to make sure the spam-deleting filters are listed above the sorting filters inside Thunderbird.
|