Compare commits

...

3 Commits

Author SHA1 Message Date
ngoomie 30c989b3f2 mainly css to hide discord things i find annoying 2023-12-07 19:40:05 -07:00
ngoomie 1fafaf8765 CollapsibleUI conf 2023-11-29 04:41:37 -07:00
ngoomie 0a330f3379 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
2023-11-29 04:08:54 -07:00
81 changed files with 744 additions and 24 deletions

9
.gitignore vendored
View File

@ -24,12 +24,13 @@ fish/channel
rofi/theme.rasi
# ---> BetterDiscord
# generalistic
discord/data/
discord/data/betterdiscord.asar
discord/data/stable/*
!discord/data/stable/custom.scss
!discord/data/stable/settings.json
discord/plugins/*
!discord/plugins/CollapsibleUI.config.json
discord/themes/*
# specific
### there's actually nothing here yet lol
# ---> status.cafe
miscellany/websites/status cafe/*.css

View File

@ -212,7 +212,7 @@ function _M.get()
group = "awesome" }),
--- open the run prompt [global::mod+r]
awful.key({ modkey }, "r",
awful.key({ modkey, "Shift" }, "r",
function()
awful.screen.focused().mypromptbox:run()
end,
@ -256,7 +256,47 @@ function _M.get()
awful.util.spawn("rofi -show drun")
end,
{ 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

View File

@ -52,7 +52,8 @@ function _M.get(clientkeys, clientbuttons)
"Picture-in-picture",
"review files to import", -- Hydrus import window
"Spotify",
"Calculator"
"Calculator",
"Steam Games List"
},
role = {
"AlarmWindow", -- Thunderbird's calendar.

View File

@ -1,3 +1,7 @@
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")

View File

@ -8,18 +8,15 @@ local _M = {}
function _M.get ()
local tags = {}
awful.tag.add("➊ home",
awful.tag.add("1",
{ layout = awful.layout.suit.floating, })
awful.tag.add("➋ code",
{ layout = awful.layout.suit.tile, })
awful.tag.add("➌ art",
awful.tag.add("2",
{ layout = awful.layout.suit.floating, })
awful.tag.add("➍ games",
awful.tag.add("3",
{ layout = awful.layout.suit.floating, })
return tags
end

View File

@ -3,8 +3,7 @@ local home = os.getenv("HOME")
local _M = {
terminal = "alacritty",
file_manager = "Thunar",
modkey = "Mod4",
wallpaper = "/usr/share/backgrounds/custom/space_station.jpg"
modkey = "Mod4"
}
return _M

View File

@ -16,10 +16,12 @@ RC.vars = require("main.user_vars")
require("main.errors")
------ theme stuff
--- TODO: implement a not-shitty way of handling multiple themes
--local theme = require("themes.spacestation")
beautiful.init("~/.config/awesome/themes/spacestation/theme.lua")
beautiful.wallpaper = RC.vars.wallpaper
local themename = "spacestation"
local style = {
vars = require("themes." .. themename .. ".vars")
}
beautiful.init("~/.config/awesome/themes/" .. themename .. "/theme.lua")
beautiful.wallpaper = style.vars.wallpaper
------- custom Local Library
--- main
@ -69,7 +71,7 @@ root.keys(RC.global_keys)
mykeyboardlayout = awful.widget.keyboardlayout()
------ statusbar
require("deco.statusbar")
require("themes."..themename..".statusbar")
------ rules
--- rules to apply to new clients

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

View File

@ -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)

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 758 B

View File

@ -0,0 +1,5 @@
local _M = {
wallpaper = "/usr/share/backgrounds/custom/space_station.jpg"
}
return _M

View File

@ -81,4 +81,4 @@ awful.screen.connect_for_each_screen(function(s)
s.mylayoutbox
},
}
end)
end)

View File

@ -0,0 +1,52 @@
// --- hide nitro and other nonsense
// -- "Send a gift!" chat window button
button[aria-label="Send a gift"],
// -- literally any super reacts ever, hopefully
div.reactionInner__4135b[aria-label*="press to super react"],
// -- stuff encouraging buying avatar frames
.container_d6bff4,
// -- hide "select avatar decoration" in profile edit
div.sectionsContainer_a37883 > div.customizationSection__16fec:nth-child(4),
// -- hide "change profile effect"
div.sectionsContainer_a37883 > div.customizationSection__16fec:nth-child(5),
// -- hide "try out nitro!"
div.tryItOutSection__0f9fb {
display: none;
width: 0;
height: 0;
}
// --- hide other shit i find annoying
// -- snowsgiving snow animation and etc on DMs button
.childWrapper__01b9c:before, .childWrapper__01b9c:after {
background-image: none !important;
animation: none !important;
}
// --- 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)
//! NOTE 2: check the SVG masks for avatar frames! they might help
}
// -- 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;
}

View File

@ -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
}
}

View File

@ -0,0 +1,47 @@
{
"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,1200,300,550,0",
"conditionalAutoCollapse": "false",
"autoCollapseConditionals": ",,,,,,,",
"resizableChannelList": "true",
"resizableMembersList": "true",
"channelListWidth": "0",
"buttonsOrder": "1,2,4,6,7,3,5,8",
"dynamicUncollapseEnabled": "true,true,true,true,false,true,true,false",
"disabledButtonsStayCollapsed": "true",
"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": "0",
"toolbarMaxWidth": "800",
"userAreaMaxHeight": "300",
"msgBarMaxHeight": "400",
"windowBarHeight": "18",
"collapsedDistance": "0",
"buttonCollapseFudgeFactor": "10",
"serverListButtonActive": "true",
"channelListButtonActive": "true",
"msgBarButtonActive": "true",
"userAreaButtonActive": "true",
"profilePanelButtonActive": "false",
"membersListButtonActive": "true",
"callContainerButtonActive": "true"
}

View File

@ -14,12 +14,21 @@ my %confDirs = (
"omf" => "fish",
"picom" => "picom",
"rofi" => "rofi",
"BetterDiscord" => "discord",
"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) {
`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!");

53
miscellany/yt-dlp.pl Executable file
View File

@ -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;
}
}

5
miscellany/yt-dlp.yml Normal file
View File

@ -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

172
polybar/config.ini Normal file
View File

@ -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

View File

@ -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)

View File

@ -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)"

View File

@ -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)"

View File

@ -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)"

View File

@ -0,0 +1,5 @@
name="SPAM: Etsy"
enabled="yes"
type="17"
action="Delete"
condition="AND (from,is,email@email.etsy.com)"

View File

@ -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)"

View File

@ -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)"

View File

@ -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.