Compare commits

...

10 Commits

Author SHA1 Message Date
Jamie Albert
a76f8761dd mv: mount.sh dir 2025-11-12 02:02:04 +00:00
Jamie Albert
460f14c71b theme: update icons 2025-11-12 01:59:01 +00:00
Jamie Albert
772f11cfca rm: archive (that's what git is for) 2025-11-12 01:42:44 +00:00
Jamie Albert
b4ad7f77f2 fix: workspace 2025-11-12 01:41:41 +00:00
Jamie Albert
96fe400957 rm: unstowable configs 2025-11-12 01:41:28 +00:00
Jamie Albert
64a5e563c3 mv: kitty from shell to theme 2025-11-12 01:40:58 +00:00
Jamie Albert
494b47d9ac feat: .gitconfig 2025-11-12 01:40:30 +00:00
Jamie Albert
3ebb8c54f1 feat: reshuffle files 2025-11-12 01:11:54 +00:00
Jamie Albert
e58c120f62 perf: removal of firewall 2025-11-11 17:01:42 +00:00
Jamie Albert
4d7eca0765 archived: sshfs replaced 2025-11-11 17:01:14 +00:00
221 changed files with 499 additions and 1514 deletions

42
.vscode/dao.code-snippets vendored Normal file
View File

@@ -0,0 +1,42 @@
{
// Place your dao workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
// Placeholders with the same ids are connected.
// Example:
// "Print to console": {
// "scope": "javascript,typescript",
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }
"Bash Header": {
"prefix": "header_bash",
"body": [
"#!/usr/bin/env bash",
"# ---",
"# @file_name: ${1:filename}",
"# @description: ${2:description}",
"# @date: ${3:date}",
"# @version: ${4:version}",
"# @usage: ./${5:filename}.sh [-h|--help]",
"#",
"# @author: Jamie Albert",
"# @author_contact: <mailto:jamie.albert@flatmail.me",
"# @license: GNU Affero General Public License v3.0 (Included in LICENSE)",
"# Copyright (C) 2025, Jamie Albert",
"# ---",
"set -euo pipefail",
"${6:}",
""
],
"description": "Bash Header",
}
}

14
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,14 @@
{
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/Thumbs.db": true,
},
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.code-workspace": "*.code-workspace"
}
}

View File

@@ -1,65 +0,0 @@
#!/usr/bin/env bash
# ---
# @file_name: mullvad_tailscale.sh
# @version: 1.0.0
# @description: Installs mullvad nft rules
# @author: Jamie Albert (empty_produce)
# @author_contact: <mailto:empty.produce@flatmail.me>
# @license: GNU Affero General Public License v3.0 (Included in LICENSE)
# Copyright (C) 2025, Jamie Albert
# ---
# ---
# shellcheck disable=1091
# --
#!/usr/bin/env bash
set -euo pipefail
setup() {
. /usr/local/share/dao/config/dao.conf
}
wait_for_network() {
echo "[i] Waiting for network connectivity..."
local max_attempts=30
local attempt=1
while ! ping -c1 -W1 nasa.gov >/dev/null 2>&1; do
if [ $attempt -ge $max_attempts ]; then
echo "[e] Network not available after ${max_attempts} attempts"
exit 1
fi
echo "[i] Attempt $attempt/${max_attempts}: Network not ready, waiting 2 seconds..."
sleep 2
((attempt++))
done
echo "[i] Network connectivity confirmed"
}
nft_mullvad() {
echo "[i] Applying firewall rules..."
if sudo nft -f "$DAO_USER_HOME/.config/dao/firewall/mullvad_tailscale.conf"; then
echo "[i] Firewall rules applied successfully"
else
echo "[e] Failed to apply firewall rules"
exit 1
fi
}
main() {
setup
case "${1:-}" in
--enable)
wait_for_network
nft_mullvad
;;
*)
echo "Usage: $0 --enable"
exit 1
;;
esac
}
main "$@"

View File

@@ -1,98 +0,0 @@
#!/usr/bin/env bash
# ---
# @file_name: install_cradle.sh
# @version: 1.0.0
# @description: Install local scripts
# @author: Jamie Albert (empty_produce)
# @author_contact: <mailto:empty.produce@flatmail.me>
# @license: GNU Affero General Public License v3.0 (Included in LICENSE)
# Copyright (C) 2025, Jamie Albert
# ---
set -euo pipefail
declare -gr INSTALL_DIR="/usr/local/bin"
declare -g SCRIPTS_DIR; SCRIPTS_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)/scripts"
declare -g CONFIG_DIR; CONFIG_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)/config"
declare -g DICT_DIR; DICT_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)/dict"
declare -ga TOOLS=("pwgen.sh" "jade.sh" "jau.sh" "rclone_mount.sh")
declare -gr JADE_CONFIG_DIR="/usr/local/etc/jade.sh"
# ---
# @return_code: [2] Scripts directory not found.
# @return_code: [3] Config directory not found.
# @return_code: [4] Dict directory not found.
# shellcheck disable=1090,1091
# ---
setup() {
. /usr/local/share/dao/libs/libs_dao.sh
[[ -d $INSTALL_DIR ]] || sudo mkdir -p "$INSTALL_DIR" || dao::error 1 "Failed to create installation directory $INSTALL_DIR"
[[ -d "${SCRIPTS_DIR}" ]] || dao::error 2 "Scripts directory not found: ${SCRIPTS_DIR}"
[[ -d "${CONFIG_DIR}" ]] || dao::error 3 "Config directory not found: ${CONFIG_DIR}"
[[ -d "${DICT_DIR}" ]] || dao::error 4 "Dict directory not found: ${DICT_DIR}"
}
# ---
# @arg: $1 - The name of the tool/script to install.
# @return_code: [1] General dao::error (inherits from set -e).
# @return_code: [5] Source file not found.
# @return_code: [6] Copy failed for the tool.
# @return_code: [7] chmod failed for the tool.
# @return_code: [8] Failed to create jade config directory.
# @return_code: [9] Failed to copy config for jade.sh.
# @return_code: [10] Config template not found for jade.sh.
# @return_code: [11] Copy failed for pwgen.list.
# ---
install_tool() {
declare tool="$1"
declare src_path
src_path=$(realpath "${SCRIPTS_DIR}/${tool}")
[[ -f $src_path ]] || dao::error 5 "Source file not found: $tool"
sudo rm -f "${INSTALL_DIR}/${tool}"
sudo ln -s "$src_path" "$INSTALL_DIR/" || dao::error 6 "Copy failed for $tool"
sudo chmod 755 "$INSTALL_DIR/$tool" || dao::error 7 "chmod failed for $tool"
dao::info "Installed: $INSTALL_DIR/$tool"
case ${tool} in
pwgen.sh)
declare dict_src="${DICT_DIR}/pwgen.list"
if [[ -f "${dict_src}" ]]; then
sudo rm -f /usr/share/dict/pwgen.list
sudo ln -s "${dict_src}" /usr/share/dict/ || dao::error 11 "Copy failed for pwgen.list"
dao::info "Installed /usr/share/dict/pwgen.list"
else
dao::warn "Dict file not found at '${dict_src}', skipping installation of /usr/share/dict/pwgen.list"
fi
;;
jade.sh)
declare jade_config_src="${CONFIG_DIR}/jade.conf"
declare jade_config_dest="${JADE_CONFIG_DIR}/jade.conf"
if [[ -f "${jade_config_src}" ]]; then
if [[ ! -f "${jade_config_dest}" ]]; then
sudo mkdir -p "${JADE_CONFIG_DIR}" || dao::error 8 "Failed to create jade config directory"
sudo rm -f "${jade_config_dest}"
sudo ln -s "${jade_config_src}" "${jade_config_dest}" || dao::error 9 "Failed to copy config for jade.sh"
dao::info "Installed ${jade_config_dest} - manually set variables within this file."
else
dao::info "${jade_config_dest} already exists, not overwriting."
fi
else
dao::error 10 "Config template not found: '${jade_config_src}'"
fi
;;
esac
}
main() {
setup
declare tool
for tool in "${TOOLS[@]}"; do
install_tool "$tool"
done
dao::info "All tools installed successfully."
}
main "$@"

View File

@@ -1,286 +0,0 @@
[/]
accent-color=['0', '0.75', '0.75']
accent-override=false
apply-accent-shell=false
apply-all-shell=false
apply-flatpak=false
apply-gtk=false
apply-menu-notif=false
apply-menu-shell=false
auto-bgalpha=false
autofg-bar=false
autofg-menu=false
autohg-bar=false
autohg-menu=false
autotheme-dark='Select Theme'
autotheme-font=false
autotheme-light='Select Theme'
autotheme-refresh=false
balpha=1.0
bartype='Trilands'
bcolor=['1.0', '1.0', '1.0']
bg-change=false
bgalpha=1.0
bgalpha-wmax=1.0
bgalpha2=0.27000000000000002
bgcolor=['0.125', '0.125', '0.125']
bgcolor-wmax=['0.125', '0.125', '0.125']
bgcolor2=['0.663', '0.714', '0.396']
bgpalette=true
bguri='file:///home/jamie/.local/share/backgrounds/2025-10-29-03-48-51-wallhaven-m3kggk.jpg'
border-wmax=false
bordertype='solid'
bottom-margin=6.5
boxalpha=1.0
boxcolor=['0.125', '0.125', '0.125']
bradius=8.0
buttonbg-wmax=true
bwidth=0.0
candy1=['0', '0.61', '0.74']
candy10=['0.09', '0.19', '0.72']
candy11=['0.75', '0.49', '0.44']
candy12=['1', '0.92', '0.12']
candy13=['0.38', '0.63', '0.92']
candy14=['0.37', '0.36', '0.39']
candy15=['0.40', '0.23', '0.72']
candy16=['1', '0.32', '0.32']
candy2=['1', '0.41', '0.41']
candy3=['0.63', '0.16', '0.8']
candy4=['0.94', '0.60', '0.23']
candy5=['0.03', '0.41', '0.62']
candy6=['0.56', '0.18', '0.43']
candy7=['0.95', '0.12', '0.67']
candy8=['0.18', '0.76', '0.49']
candy9=['0.93', '0.20', '0.23']
candyalpha=1.0
candybar=false
card-hint=10
color-scheme='prefer-dark'
corner-radius=false
count1=401044
count10=1322
count11=21
count12=8
count2=90986
count3=75564
count4=73125
count5=8514
count6=8180
count7=2959
count8=2685
count9=1592
cust-margin-wmax=false
dark-accent-color=['0', '0.75', '0.75']
dark-bcolor=['1.0', '1.0', '1.0']
dark-bgcolor=['0.125', '0.125', '0.125']
dark-bgcolor-wmax=['0.125', '0.125', '0.125']
dark-bgcolor2=['0.663', '0.714', '0.396']
dark-bguri='file:///home/jamie/.local/share/backgrounds/2025-10-29-03-48-51-wallhaven-m3kggk.jpg'
dark-boxcolor=['0.125', '0.125', '0.125']
dark-candy1=['0', '0.61', '0.74']
dark-candy10=['0.09', '0.19', '0.72']
dark-candy11=['0.75', '0.49', '0.44']
dark-candy12=['1', '0.92', '0.12']
dark-candy13=['0.38', '0.63', '0.92']
dark-candy14=['0.37', '0.36', '0.39']
dark-candy15=['0.40', '0.23', '0.72']
dark-candy16=['1', '0.32', '0.32']
dark-candy2=['1', '0.41', '0.41']
dark-candy3=['0.63', '0.16', '0.8']
dark-candy4=['0.94', '0.60', '0.23']
dark-candy5=['0.03', '0.41', '0.62']
dark-candy6=['0.56', '0.18', '0.43']
dark-candy7=['0.95', '0.12', '0.67']
dark-candy8=['0.18', '0.76', '0.49']
dark-candy9=['0.93', '0.20', '0.23']
dark-dbgcolor=['0.125', '0.125', '0.125']
dark-fgcolor=['0.922', '0.859', '0.698']
dark-hcolor=['0.314', '0.286', '0.271']
dark-hscd-color=['0.663', '0.714', '0.396']
dark-iscolor=['0.235', '0.220', '0.212']
dark-mbcolor=['1.0', '1.0', '1.0']
dark-mbgcolor=['0.125', '0.125', '0.125']
dark-mfgcolor=['1.0', '1.0', '1.0']
dark-mhcolor=['0', '0.7', '0.9']
dark-mscolor=['0', '0.7', '0.75']
dark-mshcolor=['1.0', '1.0', '1.0']
dark-palette1=['41', '44', '47']
dark-palette10=['99', '100', '108']
dark-palette11=['164', '124', '97']
dark-palette12=['166', '133', '92']
dark-palette2=['85', '85', '84']
dark-palette3=['125', '121', '116']
dark-palette4=['200', '198', '189']
dark-palette5=['153', '158', '158']
dark-palette6=['68', '76', '76']
dark-palette7=['100', '108', '108']
dark-palette8=['173', '149', '123']
dark-palette9=['141', '148', '156']
dark-shcolor=['0', '0', '0']
dark-smbgcolor=['0.125', '0.125', '0.125']
dark-vw-color=['0.663', '0.714', '0.396']
dark-winbcolor=['0.663', '0.714', '0.396']
dashdock-style='Menu'
dbgalpha=0.0
dbgcolor=['0.125', '0.125', '0.125']
dborder=true
dbradius=24.0
default-font='Sans 12'
destruct-color=['0.75', '0.11', '0.16']
disize=48.0
dshadow=false
fgalpha=1.0
fgcolor=['0.922', '0.859', '0.698']
fitts-widgets=true
font='Liga SFMono Nerd Font Medium 11'
gradient=false
gradient-direction='vertical'
gtk-popover=false
gtk-shadow='Default'
gtk-transparency=1.0
halpha=0.10000000000000001
handle-border=3.0
hbar-gtk3only=false
hcolor=['0.314', '0.286', '0.271']
headerbar-hint=0
heffect=false
height=40.0
hpad=2.0
hscd-color=['0.663', '0.714', '0.396']
import-export=true
isalpha=0.34000000000000002
iscolor=['0.235', '0.220', '0.212']
light-accent-color=['0', '0.75', '0.75']
light-bcolor=['0.000', '0.700', '0.750']
light-bgcolor=['0.125', '0.125', '0.125']
light-bgcolor-wmax=['0.125', '0.125', '0.125']
light-bgcolor2=['0', '0.7', '0.75']
light-bguri='file:///home/jamie/.local/share/backgrounds/2025-10-29-03-48-51-wallhaven-m3kggk.jpg'
light-boxcolor=['0.078', '0.086', '0.090']
light-candy1=['0', '0.61', '0.74']
light-candy10=['0.09', '0.19', '0.72']
light-candy11=['0.75', '0.49', '0.44']
light-candy12=['1', '0.92', '0.12']
light-candy13=['0.38', '0.63', '0.92']
light-candy14=['0.37', '0.36', '0.39']
light-candy15=['0.40', '0.23', '0.72']
light-candy16=['1', '0.32', '0.32']
light-candy2=['1', '0.41', '0.41']
light-candy3=['0.63', '0.16', '0.8']
light-candy4=['0.94', '0.60', '0.23']
light-candy5=['0.03', '0.41', '0.62']
light-candy6=['0.56', '0.18', '0.43']
light-candy7=['0.95', '0.12', '0.67']
light-candy8=['0.18', '0.76', '0.49']
light-candy9=['0.93', '0.20', '0.23']
light-dbgcolor=['0.125', '0.125', '0.125']
light-fgcolor=['0.984', '0.945', '0.780']
light-hcolor=['0.114', '0.125', '0.129']
light-hscd-color=['0.514', '0.647', '0.596']
light-iscolor=['0.114', '0.122', '0.118']
light-mbcolor=['0.984', '0.945', '0.780']
light-mbgcolor=['0.114', '0.125', '0.129']
light-mfgcolor=['0.984', '0.945', '0.780']
light-mhcolor=['0.557', '0.753', '0.486']
light-mscolor=['0.557', '0.753', '0.486']
light-mshcolor=['0.000', '0.700', '0.750']
light-palette1=['41', '44', '47']
light-palette10=['99', '100', '108']
light-palette11=['164', '124', '97']
light-palette12=['166', '133', '92']
light-palette2=['85', '85', '84']
light-palette3=['125', '121', '116']
light-palette4=['200', '198', '189']
light-palette5=['153', '158', '158']
light-palette6=['68', '76', '76']
light-palette7=['100', '108', '108']
light-palette8=['173', '149', '123']
light-palette9=['141', '148', '156']
light-shcolor=['0', '0', '0']
light-smbgcolor=['0.973', '0.894', '0.361']
light-vw-color=['0.514', '0.647', '0.537']
light-winbcolor=['0.514', '0.647', '0.537']
margin=0.0
margin-wmax=2.0
mbalpha=0.0
mbcolor=['1.0', '1.0', '1.0']
mbg-gradient=false
mbgalpha=1.0
mbgcolor=['0.125', '0.125', '0.125']
menu-radius=24.0
menustyle=false
mfgalpha=1.0
mfgcolor=['1.0', '1.0', '1.0']
mhalpha=0.14999999999999999
mhcolor=['0', '0.7', '0.9']
monitor-height=1080
monitor-width=1920
monitors='all'
msalpha=1.0
mscolor=['0', '0.7', '0.75']
mshalpha=0.0
mshcolor=['1.0', '1.0', '1.0']
neon=false
neon-wmax=false
notif-radius=24.0
palette1=['41', '44', '47']
palette10=['99', '100', '108']
palette11=['164', '124', '97']
palette12=['166', '133', '92']
palette2=['85', '85', '84']
palette3=['125', '121', '116']
palette4=['200', '198', '189']
palette5=['153', '158', '158']
palette6=['68', '76', '76']
palette7=['100', '108', '108']
palette8=['173', '149', '123']
palette9=['141', '148', '156']
pause-reload=false
position='Top'
prominent1=['100', '100', '100']
prominent2=['100', '100', '100']
prominent3=['100', '100', '100']
prominent4=['100', '100', '100']
prominent5=['100', '100', '100']
prominent6=['100', '100', '100']
qtoggle-radius=24.0
radius-bottomleft=true
radius-bottomright=true
radius-topleft=true
radius-topright=true
reloadstyle=true
removestyle=false
sbar-gradient='none'
set-bottom-margin=false
set-fullscreen=true
set-notif-position=false
set-notifications=false
set-overview=true
set-yarutheme=false
shadow=false
shalpha=0.20000000000000001
shcolor=['0', '0', '0']
sidebar-hint=6
slider-height=4.0
smbgalpha=0.94999999999999996
smbgcolor=['0.125', '0.125', '0.125']
smbgoverride=true
success-color=['0.15', '0.635', '0.41']
traffic-light=false
trigger-autotheme=false
trigger-reload=false
view-hint=0
vpad=5.0
vw-color=['0.663', '0.714', '0.396']
warning-color=['0.96', '0.83', '0.17']
width-bottom=true
width-left=true
width-right=true
width-top=true
winbalpha=0.75
winbcolor=['0.663', '0.714', '0.396']
winbradius=25.0
winbwidth=0.0
window-hint=0
wmax-hbarhint=false
wmaxbar=false

View File

@@ -1,64 +0,0 @@
#!/usr/bin/env bash
################################################################################
# @file_name: iris.conf
# @version: 0.0.50
# @project_name: iris
# @brief: config file for iris
#
# @author: Jamie Dobbs (awildamnesiac)
# @author_contact: awildamnesiac@protonmail.ch
#
# @license: BSD-3 Clause (Included in LICENSE)
# Copyright (C) 2021-2024, Jamie Dobbs
# All rights reserved.
# shellcheck disable=2034
################################################################################
################################################################################
# @IMPORTANT: DO NOT UPDATE THIS FILE
# UPDATE COPIES LOCATED IN $HOME/.config/iris/iris.conf
################################################################################
################################################################################
# @description: iris configuration
################################################################################
_iris_modules=( "shopt" "git" "pyenv" "ssh" "readonly" "screen" ); # enabled modules
################################################################################
# @description: prompt configuration
################################################################################
_prompt_input_newline="true"; # console input on new line: true/false
_prompt_nerd_font="true"; # change to true if nerd font is installed and enabled in your terminal (supplied in fonts): true/false
_prompt_input_symbol=""; # console input symbol
_prompt_nerd_symbol="󰥭";
# _prompt_nerd_symbol=""; # console input symbol for nerd font
_prompt_username="true"; # show current user on prompt: true/false
_prompt_hostname="ssh"; # show hostname on prompt: ssh,all,none
_prompt_dir="true"; # show dir on prompt: true/false
_prompt_display_error="true"; # displays error codes on prompt
_prompt_seperator=" "; # seperator between prompt informations
_prompt_wrapper="[]"; # wrapper for prompt information: 2 chars max (LR)
_prompt_success_color="106" # changes prompt input symbol to green if previous command is return 0
_prompt_fail_color="203"; # changes prompt input symbol to red if previous command does not return 0
_prompt_user_color="109" # sets the user color in prompt
_prompt_sudo_color="72" # sets the sudo color in prompt
_prompt_info_color="172"; # sets the info color in prompt
_prompt_input_color="254"; # sets the input color in prompt
################################################################################
# @description: aliases
################################################################################
alias mkdir='mkdir -p'; # adds -p flag to mkdir as standard
alias ll="ls -laFh"; # ll as an easier alias for ls -laFh
alias la='ls -A'; # la as an easier alias for ls -A
alias hist='history|grep'; # search history with hist needle
alias count='find . -type f | wc -l'; # counts file list
alias nano='nano -W'; # adds -W flag to nano as standard
################################################################################
# @description: misc
################################################################################
declare -g HISTTIMEFORMAT='%F %T '; # time format for history
declare -g PROMPT_DIRTRIM="2"; # trims dir path after x dirs
[[ -z "$LC_CTYPE" && -z "$LC_ALL" ]] && declare -g LC_CTYPE="${LANG%%:*}"; # passes lang to lc_ctype
[[ -z "$HISTFILE" ]] && declare -g HISTFILE="$HOME/.bash_history"; # if no HISTFILE is set, sets it to $HOME/.bash_history

View File

@@ -1,6 +0,0 @@
table inet mullvad_tailscale {
chain output {
type route hook output priority 0; policy accept;
ip daddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
}
}

View File

@@ -1,13 +0,0 @@
# Default
Default look of Spotify with different color schemes.
## Screenshot
![screenshot](./ocean.png)
## Info
### Ocean
Part of material ocean themes, [checkout here](https://github.com/material-ocean) for the same theme for different applications. By @Blacksuan19

View File

@@ -1,33 +0,0 @@
[Ocean]
text = FFFFFF
subtext = F1F1F1
main = 0F111A
sidebar = 0F111A
player = 0F111A
card = 00010A
shadow = 0F111A
selected-row = F1F1F1
button = FF4151
button-active = F1F1F1
button-disabled = 434C5E
tab-active = FF4151
notification = 00010A
notification-error = FF4151
misc = 00010A
[gruvbox]
text = fbf1c7
subtext = ebdbb2
main = 1d2021
sidebar = 282828
player = 3c3836
card = 665c54
shadow = 1d2021
selected-row = d5c4a1
button = ebdbb2
button-active = 8ec07c
button-disabled = 535353
tab-active = 689d6a
notification = ebdbb2
notification-error = e2e2e2
misc = bdae93

View File

@@ -1,16 +0,0 @@
[gruvbox]
text = fbf1c7
subtext = ebdbb2
main = 1d2021
sidebar = 282828
player = 3c3836
card = 665c54
shadow = 1d2021
selected-row = d5c4a1
button = ebdbb2
button-active = 8ec07c
button-disabled = 535353
tab-active = 689d6a
notification = ebdbb2
notification-error = e2e2e2
misc = bdae93

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 KiB

View File

@@ -1,657 +0,0 @@
/**
* @name Gruvbox Dark
* @description Gruvbox Dark for Discord (new UI update)
* @author shved.
* @version 0.0.1
* @authorId 833767278969225266
* @website https://github.com/shvedes/discord-gruvbox
*/
* {
--gruv-dark-bg-hard: 29, 32, 33;
--gruv-dark-bg: 40 40 40;
--gruv-dark-bg-alt: 33, 33, 33;
--gruv-dark-bg-soft: 50, 48, 47;
--gruv-dark-bg1: 60, 56, 54;
--gruv-dark-bg2: 80, 73, 69;
--gruv-dark-bg3: 102, 92, 84;
--gruv-dark-bg4: 124, 111, 100;
--gruv-dark-fg-hard: 251, 241, 199;
--gruv-dark-fg: 235, 219, 178;
--gruv-dark-fg1: 213, 196, 161;
--gruv-dark-fg2: 189, 174, 147;
--gruv-dark-fg3: 168, 153, 132;
--gruv-dark-purple-dark: 177, 98, 134;
--gruv-dark-purple-light: 211, 134, 155;
--gruv-dark-yellow-dark: 215, 153, 33;
--gruv-dark-yellow-light: 250, 189, 47;
--gruv-dark-red-dark: 204, 36, 29;
--gruv-dark-red-light: 251, 73, 52;
--gruv-dark-orange-dark: 214, 93, 14;
--gruv-dark-orange-light: 254, 128, 25;
--gruv-dark-blue-dark: 69, 133, 136;
--gruv-dark-blue-light: 131, 165, 152;
--gruv-dark-green-dark: 104 157 106;
--gruv-dark-green-light: 142, 192, 124;
--gruv-dark-aqua-dark: 104, 157, 106;
--gruv-dark-aqua-light: 142, 192, 124;
--gruv-dark-gray-dark: 146, 131, 116;
--gruv-dark-gray-light: 168, 153, 132;
/* ============================================================== */
--gruv-dark-text-hard: var(--gruv-dark-fg-hard);
--gruv-dark-text-primary: var(--gruv-dark-fg);
--gruv-dark-text-secondary: var(--gruv-dark-fg1);
--gruv-dark-text-tertiary: var(--gruv-dark-fg2);
--gruv-dark-text-muted: var(--gruv-dark-fg3);
--gruv-dark-text-danger: var(--gruv-dark-red-light);
--gruv-dark-text-inverted-hard: var(--gruv-dark-text-hard);
--gruv-dark-text-inverted: var(--gruv-dark-bg);
--gruv-dark-background-positive: var(--gruv-dark-green-dark);
--gruv-dark-accent: var(--gruv-dark-green-light);
--gruv-dark-accent-hover: var(--gruv-dark-green-dark);
--gruv-dark-icon-color: var(--gruv-dark-fg2);
--gruv-dark-icon-color-hover: var(--gruv-dark-fg);
--gruv-dark-icon-color-hover-harder: var(--gruv-dark-fg-hard);
--gruv-dark-icon-color-muted: var(--gruv-dark-fg3);
--gruv-dark-link-color: var(--gruv-dark-blue-light);
--gruv-dark-border-default: var(--gruv-dark-bg2);
--gruv-dark-border-hover: var(--gruv-dark-bg3);
--gruv-dark-button-color-default: var(--gruv-dark-accent);
--gruv-dark-button-color-hover: rgba(var(--gruv-dark-button-color-default), 0.7);
--gruv-dark-button-text-default: var(--gruv-dark-bg);
--gruv-dark-button-text-dark: var(--gruv-dark-text-primary);
--gruv-dark-button-text-dark-muted: var(--gruv-dark-text-muted);
--gruv-dark-button-alt-default: var(--gruv-dark-bg-soft);
--gruv-dark-button-alt-hover: var(--gruv-dark-bg);
--gruv-dark-button-positive-default: var(--gruv-dark-green-dark);
--gruv-dark-button-positive-hover: rgba(var(--gruv-dark-green-dark), 0.8);
--gruv-dark-input-box-background: var(--gruv-dark-bg-soft);
--gruv-dark-scrollbar-color: var(--gruv-dark-bg3);
--gruv-dark-scrollbar-background: transparent;
--gruv-dark-selected-tab: var(--gruv-dark-bg1);
--gruv-dark-status-online: var(--gruv-dark-green-dark);
--gruv-dark-status-offline: var(--gruv-dark-text-muted);
--gruv-dark-status-idle: rgba(var(--gruv-dark-accent), 0.8);
--gruv-dark-status-dnd: var(--gruv-dark-red-dark);
--vc-spotify-green: rgba(var(--gruv-dark-green-dark));
--vc-spotify-green-90: rgba(var(--gruv-dark-green-dark), 0.2);
--vc-spotify-green-80: rgba(var(--gruv-dark-green-dark), 0.3);
}
.visual-refresh.theme-dark,
.visual-refresh .theme-dark,
[class*=vc-membercount-total], /* vesktop plugin */
.visual-refresh,
.theme-dark {
--__header-bar-background: rgba(var(--gruv-dark-bg-hard));
--autocomplete-bg: rgba(var(--gruv-dark-bg));
--background-primary: rgba(var(--gruv-dark-bg)); /* #282828 */
--background-secondary: rgba(var(--gruv-dark-bg-alt)) ; /* #212121 */
--background-secondary-alt: rgba(var(--gruv-dark-bg-soft));
--background-tertiary: rgba(var(--gruv-dark-bg-soft)); /* #32302f */
--background-base-lower: rgba(var(--gruv-dark-bg));
--background-base-low: rgba(var(--gruv-dark-bg));
--background-base-lowest: rgba(var(--gruv-dark-bg-hard));
--background-floating: rgba(var(--gruv-dark-bg-hard)); /* #1d2021 */
--background-surface-high: rgba(var(--gruv-dark-bg-soft));
--background-surface-higher: rgba(var(--gruv-dark-bg));
--background-surface-highest: rgba(var(--gruv-dark-bg));
--background-feedback-critical: rgba(var(--gruv-dark-red-dark), 0.08);
--background-feedback-positive: rgba(var(--gruv-dark-green-dark), 0.08);
--background-modifier-accent: rgba(var(--gruv-dark-border-default));
--background-modifier-selected: rgba(var(--gruv-dark-selected-tab));
--background-mentioned: rgba(var(--gruv-dark-accent), 0.1);
--background-mentioned-hover: rgba(var(--gruv-dark-accent), 0.15);
--background-message-automod: rgba(var(--gruv-dark-accent), 0.1);
--background-message-automod-hover: rgba(var(--gruv-dark-accent), 0.15);
--background-accent: rgba(var(--gruv-dark-bg1));
--bg-base-primary: rgba(var(--gruv-dark-bg));
--bg-base-secondary: rgba(var(--gruv-dark-bg));
--bg-base-tertiary: rgba(var(--gruv-dark-bg-hard));
--bg-surface-overlay: rgba(var(--gruv-dark-bg));
--card-primary-bg: rgba(var(--gruv-dark-bg-hard));
--bg-brand: rgba(var(--gruv-dark-accent), 0.8);
--bg-mod-faint: rgba(var(--gruv-dark-bg-soft));
--bg-mod-strong: rgba(var(--gruv-dark-bg2));
--bg-mod-subtle: rgba(var(--gruv-dark-bg1));
--border-normal: rgba(var(--gruv-dark-border-default));
--border-strong: rgba(var(--gruv-dark-border-default));
--border-faint: rgba(var(--gruv-dark-border-default));
--border-subtle: rgba(var(--gruv-dark-border-default));
--background-message-hover: rgba(var(--gruv-dark-bg1));
--text-primary: rgba(var(--gruv-dark-fg-hard)); /* #fbf1c7 */
--text-normal: rgba(var(--gruv-dark-fg)); /* #ebdbb2 */
--text-default: rgba(var(--gruv-dark-fg)); /* #ebdbb2 */
--text-secondary: rgba(var(--gruv-dark-fg1)); /* #d5c4a1 */
--text-tertiary: rgba(var(--gruv-dark-fg2)); /* #bdae93 */
--text-positive: rgba(var(--gruv-dark-green-dark));
--chat-text-muted: var(--text-tertiary);
--embed-title: rgba(var(--gruv-dark-text-hard));
--text-link: rgba(var(--gruv-dark-link-color));
--text-muted: rgba(var(--gruv-dark-text-muted));
--text-brand: rgba(var(--gruv-dark-accent));
--text-muted-on-default: rgba(var(--gruv-dark-text-muted));
--text-feedback-positive: rgba(var(--gruv-dark-green-dark));
--text-code-comment: rgba(var(--gruv-dark-gray-light));
--text-code-default: rgba(var(--gruv-dark-blue-light));
--text-code-keyword: rgba(var(--gruv-dark-purple-light));
--text-code-variable: rgba(var(--gruv-dark-blue-light));
--text-code-builtin: rgba(var(--gruv-dark-purple-light));
--text-code-string: rgba(var(--gruv-dark-aqua-light));
--header-primary: rgba(var(--gruv-dark-text-primary));
--header-secondary: rgba(var(--gruv-dark-text-tertiary));
--header-muted: rgba(var(--gruv-dark-text-muted));
--checkbox-border-default: rgba(var(--gruv-dark-border-default));
--checkbox-border-checked: rgba(var(--gruv-dark-border-default));
--checkbox-background-default: rgba(var(--gruv-dark-bg-soft));
--checkbox-background-checked: rgba(var(--gruv-dark-background-positive));
--channel-icon: rgba(var(--gruv-dark-icon-color));
--channels-default: rgba(var(--gruv-dark-fg3));
--custom-notice-background: rgba(var(--gruv-dark-green-dark));
--custom-notice-text: rgba(var(--gruv-dark-text-hard));
--notice-background-positive: rgba(var(--gruv-dark-green-dark));
--notice-background-warning: rgba(var(--gruv-dark-yellow-dark), 0.8);
--notice-background-critical: rgba(var(--gruv-dark-red-dark));
--notice-text-positive: rgba(var(--gruv-dark-text-inverted-hard));
--link-color: rgba(var(--gruv-dark-blue-dark));
--icon-primary: rgba(var(--gruv-dark-icon-color));
--icon-secondary: rgba(var(--gruv-dark-icon-color));
--icon-tertiary: rgba(var(--gruv-dark-icon-color));
--icon-default: rgba(var(--gruv-dark-icon-color));
--icon-muted: rgba(var(--gruv-dark-icon-color-muted));
--input-background: rgba(var(--gruv-dark-input-box-background));
--input-border: rgba(var(--gruv-dark-border-default));
--input-placeholder-text: rgba(var(--gruv-dark-text-tertiary));
--modal-background: rgba(var(--gruv-dark-bg-hard));
--modal-footer-background: rgba(var(--gruv-dark-bg));
--mention-foreground: rgba(var(--gruv-dark-fg-hard));
--mention-background: rgba(var(--gruv-dark-bg2));
--scrollbar-auto-thumb: rgba(var(--gruv-dark-scrollbar-color));
--scrollbar-auto-track: rgba(var(--gruv-dark-scrollbar-background));
--scrollbar-thin-thumb: rgba(var(--gruv-dark-scrollbar-color));
--scrollbar-auto-scrollbar-color-thumb: rgba(var(--gruv-dark-scrollbar-color));
--scrollbar-auto-scrollbar-color-track: rgba(var(--gruv-dark-scrollbar-color));
--button-filled-brand-text: rgba(var(--gruv-dark-button-text-default));
--button-filled-brand-border: rgba(var(--gruv-dark-button-color-default));
--button-filled-brand-background: rgba(var(--gruv-dark-button-color-default));
--button-filled-brand-background-active: rgba(var(--gruv-dark-button-color-default));
--button-filled-brand-background-hover: var(--gruv-dark-button-color-hover);
--button-danger-background: rgba(var(--gruv-dark-red-dark));
--button-danger-background-active: rgba(var(--gruv-dark-red-light));
--button-danger-background-disabled: rgba(var(--gruv-dark-red-dark), 0.8);
--button-danger-background-hover: rgba(var(--gruv-dark-red-dark), 0.7);
--button-danger-border: rgba(var(--gruv-dark-red-dark));
--button-outline-danger-background: rgba(var(--gruv-dark-button-alt-default));
--button-outline-danger-background-hover: rgba(var(--gruv-dark-button-alt-hover));
--button-outline-danger-border: rgba(var(--gruv-dark-border-default));
--button-outline-danger-border-hover: rgba(var(--gruv-dark-border-default));
--button-outline-danger-text: rgba(var(--gruv-dark-button-text-dark-muted));
--button-outline-danger-text-hover: rgba(var(--gruv-dark-text-danger));
--button-outline-positive-text: rgba(var(--gruv-dark-text-primary));
--button-positive-background: rgba(var(--gruv-dark-button-positive-default));
--button-positive-background-hover: var(--gruv-dark-button-positive-hover);
--button-positive-background-active: rgba(var(--gruv-dark-button-positive-default));
--button-positive-background-disabled: rgba(var(--gruv-dark-green-dark));
--button-positive-border: rgba(var(--gruv-dark-button-positive-default));
--button-secondary-background: rgba(var(--gruv-dark-bg-soft));
--button-secondary-background-hover: rgba(var(--gruv-dark-bg));
--button-secondary-text: rgba(var(--gruv-dark-button-text-dark-muted));
--button-transparent-background: rgba(var(--gruv-dark-button-alt-default));
--button-transparent-background-hover: rgba(var(--gruv-dark-button-alt-hover));
--button-transparent-text: rgba(var(--gruv-dark-button-text-dark));
--primary-630: rgba(var(--gruv-dark-button-alt-default));
--primary-700: rgba(var(--gruv-dark-button-alt-hover));
--background-code: rgba(var(--gruv-dark-bg-hard));
--status-online: rgba(var(--gruv-dark-status-online));
--status-offline: rgba(var(--gruv-dark-status-offline));
--status-idle: var(--gruv-dark-status-idle);
--status-dnd: rgba(var(--gruv-dark-status-dnd));
--status-positive: rgba(var(--gruv-dark-green-dark));
--status-positive-background: rgba(var(--gruv-dark-green-dark));
--status-positive-text: rgba(var(--gruv-dark-text-inverted-hard));
--status-danger: rgba(var(--gruv-dark-red-dark));
--status-danger-background: rgba(var(--gruv-dark-red-dark));
--status-danger-text: rgba(var(--gruv-dark-text-primary));
--status-warning: rgba(var(--gruv-dark-orange-dark));
--status-warning-background: rgba(var(--gruv-dark-orange-dark));
--status-warning-text: rgba(var(--gruv-dark-text-inverted-hard));
--status-speaking: rgba(var(--gruv-dark-green-light));
--info-danger-background: rgba(var(--gruv-dark-red-dark), 0.08);
--info-danger-text: rgba(rgba(gruv-dark-red-light));
--info-help-foreground: rgba(var(--gruv-dark-blue-light));
--info-help-background: rgba(var(--gruv-dark-blue-dark), 0.1);
--info-positive-background: rgba(var(--gruv-dark-green-dark), 0.08);
--info-positive-text: rgba(var(--gruv-dark-green-light));
--info-warning-background: rgba(var(--gruv-dark-orange-dark), 0.08);
--info-warning-text: rgba(var(--gruv-dark-text-primary));
--background-mod-normal: rgba(var(--gruv-dark-selected-tab));
--background-mod-strong: rgba(var(--gruv-dark-bg2));
--background-mod-subtle: rgba(var(--gruv-dark-bg-soft));
--interactive-normal: rgba(var(--gruv-dark-icon-color));
--interactive-hover: rgba(var(--gruv-dark-icon-color-hover-harder));
--interactive-active: rgba(var(--gruv-dark-icon-color-hover-harder));
--interactive-muted: rgba(var(--gruv-dark-bg3));
--message-reacted-text: rgba(var(--gruv-dark-text-hard));
--message-reacted-background: rgba(var(--gruv-dark-accent), 0.1);
--background-message-highlight: rgba(var(--gruv-dark-accent), 0.1);
--background-message-highlight-hover: rgba(var(--gruv-dark-accent), 0.15);
--spoiler-hidden-background: rgba(var(--gruv-dark-bg2));
--spoiler-hidden-background-hover: rgba(var(--gruv-dark-bg3));
--chat-background-default: rgba(var(--gruv-dark-bg-soft));
--premium-nitro-pink-text: rgba(var(--gruv-dark-purple-light));
--guild-boosting-pink: rgba(var(--gruv-dark-purple-light));
--spine-default: rgba(var(--gruv-dark-bg4));
--app-border-frame: rgba(var(--gruv-dark-border-default));
--twitch: rgba(var(--gruv-dark-purple-dark));
--opacity-blurple-12: rgba(var(--gruv-dark-bg));
--custom-store-colors-premium-gradient: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)));
--custom-premium-colors-premium-gradient-tier-0: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)));
--custom-premium-colors-premium-gradient-tier-1: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)));
--custom-premium-colors-premium-gradient-tier-2: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)));
--custom-premium-colors-premium-gradient-tier-2-transparent: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark), 0.3), rgba(var(--gruv-dark-purple-light), 0.3));
--custom-premium-colors-premium-gradient-tier-2-diagonal: linear-gradient(45deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)));
--custom-premium-colors-premium-gradient-tier-2-tri-color: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)), rgba(var(--gruv-dark-purple-dark)));
--custom-premium-colors-premium-gradient-tier-2-tri-color-reverse: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)), rgba(var(--gruv-dark-purple-dark)));
--custom-premium-colors-premium-gradient-tier-2-tri-color-vertical: linear-gradient(0deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)), rgba(var(--gruv-dark-purple-dark)));
--custom-premium-colors-premium-gradient-tier-2-old: linear-gradient(90deg, rgba(var(--gruv-dark-purple-dark)), rgba(var(--gruv-dark-purple-light)));
--premium-nitro-pink-dark: rgba(var(--gruv-dark-purple-dark));
--premium-nitro-pink-light: rgba(var(--gruv-dark-purple-light));
--premium-perk-blue: rgba(var(--gruv-dark-blue-dark));
--premium-perk-blue-alt: rgba(var(--gruv-dark-blue-dark));
--premium-perk-dark-blue: rgba(var(--gruv-dark-blue-dark));
--brand-260: rgba(var(--gruv-dark-accent-hover), 0.8);
--brand-360: rgba(var(--gruv-dark-accent));
--brand-500: rgba(var(--gruv-dark-accent-hover), 0.8);
--brand-05: rgba(var(--gruv-dark-accent-hover), 0.2);
--white-500: rgba(var(--gruv-dark-text-hard));
--blurple-50: rgba(var(--gruv-dark-accent));
--green-300: rgba(var(--gruv-dark-green-dark));
--green-360: rgba(var(--gruv-dark-green-dark));
--color-total: rgba(var(--gruv-dark-text-muted));
--primary-300: rgba(var(--gruv-dark-text-hard));
--primary-500: rgba(var(--gruv-dark-bg1));
--white: rgba(var(--gruv-dark-text-hard));
--badge-brand-text: rgba(var(--gruv-dark-text-inverted));
--badge-brand-bg: rgba(var(--gruv-dark-accent-hover), 0.8);
--redesign-button-positive-background: rgba(var(--gruv-dark-green-dark));
--redesign-button-positive-pressed-background: rgba(var(--gruv-dark-green-dark), 0.8);
--redesign-button-positive-text: rgba(var(--gruv-dark-text-hard));
--redesign-button-overlay-alpha-text: rgba(var(--gruv-dark-text-hard));
--redesign-button-overlay-alpha-background: rgba(0, 0, 0, 0.3);
--user-profile-overlay-background: rgba(var(--gruv-dark-bg));
}
.visual-refresh .textBadge__2b1f5 {
color: rgb(var(--gruv-dark-text-inverted)) !important
}
/* Invite button inside call box */
.buttonColor__7b3e8 {
color: rgba(var(--gruv-dark-text-primary))
}
.theme-dark .button_e131a9.buttonColor_e131a9.buttonActive_e131a9 {
background-color: rgba(var(--gruv-dark-button-positive-default), 0.1)
}
.theme-dark .button_e131a9.buttonColor_e131a9.buttonActive_e131a9:hover {
background-color: rgba(var(--gruv-dark-button-positive-default), 0.2)
}
/* Input / Output Volume slider (context menu) */
:where(.visual-refresh) .mini_a562c8 .grabber_a562c8, :where(.visual-refresh) .slider_a562c8 .grabber_a562c8 {
background-color: rgba(var(--gruv-dark-text-primary))
}
[class*=notches_] {
background-color: rgba(var(--gruv-dark-bg3))
}
[class^=control_] [class*=checked_],
#vc-spotify-player [class*=barFill_] {
background-color: rgba(var(--gruv-dark-accent-hover), 0.8) !important;
}
.slider__87bf1 > rect {
fill: rgba(var(--gruv-dark-text-hard));
}
.slider__87bf1 svg > path {
fill: rgba(var(--gruv-dark-bg))
}
.container__87bf1 {
background-color: rgba(var(--gruv-dark-bg2)) !important
}
.checked__87bf1 {
background-color: rgba(var(--gruv-dark-yellow-dark)) !important;
}
/* "Share your screen" button */
.theme-dark [class*="experimentButton_"][class*="buttonColor_"][class*="buttonActive_"] {
background-color: rgba(var(--gruv-dark-green-dark), 0.2);
border: 1px solid rgba(var(--gruv-dark-green-dark), 0.25);
}
.theme-dark [class*="experimentButton_"][class*="buttonColor_"][class*="buttonActive_"]:hover {
background-color: rgba(var(--gruv-dark-green-dark), 0.4);
border: 1px solid rgba(var(--gruv-dark-green-dark), 0.3);
}
/* call container bg */
[class^=callContainer],
[class^=callContainer] [class^=scroller_] {
background-color: rgba(var(--gruv-dark-bg-hard));
}
/* Room preview animation */
.gradientBackground__11664 {
background: rgba(var(--gruv-dark-bg)) !important
}
.backgroundDark__11664 {
background: rgba(var(--gruv-dark-bg)) !important
}
.foregroundRing__11664 {
background: rgba(var(--gruv-dark-accent-hover), 0.3) !important
}
.foregroundBase__11664 {
background: rgba(var(--gruv-dark-accent-hover), 1) !important
}
/* Online statuses */
[mask^="url(#svg-mask-status-online"] {
fill: rgba(var(--gruv-dark-status-online));
}
[mask^="url(#svg-mask-status-dnd"] {
fill: rgba(var(--gruv-dark-status-dnd));
}
[mask^="url(#svg-mask-status-idle"] {
fill: var(--gruv-dark-status-idle);
}
[mask^="url(#svg-mask-status-offline"] {
fill: rgba(var(--gruv-dark-status-offline));
}
[class^=avatarWrapper_] {
[aria-label*=online i] svg > svg > rect {
fill: rgba(var(--gruv-dark-status-online)) !important;
}
}
[class^=avatarWrapper_] {
[aria-label*=idle i] svg > svg > rect {
fill: rgba(var(--gruv-dark-status-idle)) !important;
}
}
[class^=avatarWrapper_] {
[aria-label*=dnd i] svg > svg > rect {
fill: rgba(var(--gruv-dark-status-dnd)) !important;
}
}
[class^=avatarWrapper_] {
[aria-label*=invisible i] svg > svg > rect {
fill: rgba(var(--gruv-dark-status-offline)) !important;
}
}
rect[fill="#43a25a"] {
fill: var(--status-online);
}
rect[fill="#ca9654"] {
fill: var(--status-idle);
}
rect[fill="#d83a42"] {
fill: var(--status-dnd);
}
rect[fill="#82838b"] {
fill: var(--status-offline);
}
div.status_a423bd {
background-color: var(--status-online) !important;
}
/* Screenshare icon */
.icon_c9d15c > path {
fill: rgba(var(--gruv-dark-accent))
}
[class^=callContainer] [class^=root] {
background-color: rgba(var(--gruv-dark-bg-hard)) !important
}
.flex__7c0ba .lineClamp1__4bd52 {
color: rgba(var(--gruv-dark-text-hard)) !important
}
/* Vesktop plugins / themes */
.vc-addon-card {
border: 1px solid rgba(var(--gruv-dark-border-default))
}
/* Use solid background for banners in the "Discover" category */
.theme-dark .gradientOverlay_e9ef78,
.theme-dark .bannerGradient__955a3 {
background-color: rgba(var(--gruv-dark-bg));
border-bottom: 1px solid rgba(var(--gruv-dark-border-hover))
}
/* Share your screen / Stop stream / change windows / ets bototm button inside call window */
[class^="colorable_"][class*="greenGlow_"] {
background-color: rgba(var(--gruv-dark-green-dark), 0.2);
}
[class^="colorable_"][class*="greenGlow_"]:hover,
[class^="colorable_"][class*="greenGlow_"][class*="popoutOpen_"] {
background-color: rgba(var(--gruv-dark-green-dark), 0.4);
}
/* Add right border for left section */
.visual-refresh .sidebarList_c48ade {
border-right: 1px solid rgba(var(--gruv-dark-border-default))
}
/* N new messages */
.newMessagesBar__0f481 {
background-color: rgba(var(--gruv-dark-bg-soft));
color: rgba(var(--gruv-dark-text-primary))
}
.visual-refresh .barButtonAlt__0f481:hover {
background-color: transparent
}
/* Open voice button */
/* .custom-profile-theme.theme-dark .themeColor_fb7f94.secondary_fb7f94 { */
/* background-color: rgba(var(--gruv-dark-button-alt-default)) */
/* } */
/* .custom-profile-theme.theme-dark .themeColor_fb7f94.secondary_fb7f94:hover { */
/* background-color: rgba(var(--gruv-dark-button-alt-hover)) */
/* } */
.custom-profile-theme.theme-dark [class*=themeColor i][class*=secondary i] {
background-color: rgba(var(--gruv-dark-button-alt-default))
}
.custom-profile-theme.theme-dark [class*=themeColor i][class*=secondary i]:hover {
background-color: rgba(var(--gruv-dark-button-alt-hover))
}
.visual-refresh .section__00943 {
background-color: rgba(var(--gruv-dark-bg))
}
:where(.visual-refresh) .lookFilled__201d5.colorPrimary__201d5,
:where(.visual-refresh) .medium_a45028 .inner_a45028 {
background-color: rgba(var(--gruv-dark-bg))
}
.menuOverlay_af7fb7,
.card__39ec2 {
background-color: rgba(var(--gruv-dark-bg))
}
/* Background tweaks to fix Discord's inconsistent styling */
.connection_c7f964,
.connectContainer_c7f964,
.appDetailsContainer__50a54 {
background-color: rgba(var(--gruv-dark-bg-soft));
border: 1px solid rgba(var(--gruv-dark-border-default))
}
.background__1fed1,
.background__1fed1 > .fieldList__1fed1 {
background-color: var(--user-profile-overlay-background);
}
.badgeList__1fed1 {
background-color: transparent;
}
/* Hovering over gifs would cause them to go blank */
.result__2dc39:after {
content: normal;
}
/* Contrast for some action buttons was too high, so.. */
/* To see changes: Settings > Authorized Apps */
[class^="actionMenuButton_"] {
background-color: rgba(var(--gruv-dark-bg-soft));
border: 1px solid rgba(var(--gruv-dark-border-default));
border-radius: 12px
}
[class^="actionMenuButton_"]:hover {
background-color: rgba(var(--gruv-dark-bg));
border: 1px solid rgba(var(--gruv-dark-border-hover));
}
.visual-refresh .searchBar__35e86 {
border: none !important
}
/* Add border to account overview */
/* Settings > My Account */
[class^=accountProfileCard__] {
border: 1px solid rgba(var(--gruv-dark-border-default));
}
[class^=accountProfileCard__] {
box-shadow: 0 0 5px black !important
}
[class^=accountProfileCard__]:hover {
box-shadow: 0 0 10px black !important
}
.visual-refresh [class^=box_],
[class^=appDetailsContainer],
[class^=connectionOptionsWrapper] {
background-color: var(--background-base-low) !important
}
/* Make all titlebars the same */
.visual-refresh .title_f75fb {
background-color: rgba(var(--gruv-dark-bg-hard)) !important
}
/* Remove bottom border for server title section */
.visual-refresh [class^=header_] {
border-bottom: none !important
}
/* ==== Nuked elements ==== */
/* Top to bottom */
/* Quests banner */
.wrapper__0d616 {
display: none !important
}

View File

@@ -1,5 +0,0 @@
Host github.com
User git
IdentityFile /home/jamie/.ssh/github
IdentitiesOnly yes
StrictHostKeyChecking accept-new

View File

@@ -1,46 +0,0 @@
#!/usr/bin/env bash
case $- in
*i*) ;;
*) return ;;
esac
[[ -z ${debian_chroot:-} && -r /etc/debian_chroot ]] && debian_chroot=$(cat /etc/debian_chroot)
case "${TERM}" in
xterm-color | *-256color) color_prompt=yes ;;
*) ;;
esac
if [[ -n ${force_color_prompt:-} ]]; then
if [[ -x /usr/bin/tput ]] && tput setaf 1 >&/dev/null; then
color_prompt=yes
else
color_prompt=
fi
fi
if [[ ${color_prompt} == yes ]]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
case "${TERM}" in
xterm* | rxvt*) PS1="\[\e]0;${debian_chroot:+(${debian_chroot})}\u@\h: \w\a\]${PS1}" ;;
*) ;;
esac
if [[ -x "/usr/bin/dircolors" ]]; then
# shellcheck disable=SC2015
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# shellcheck disable=SC1090
[[ -f ~/.bash_aliases ]] && . ~/.bash_aliases
if ! shopt -oq posix; then
if [ -f "/usr/share/bash-completion/bash_completion" ]; then
. "/usr/share/bash-completion/bash_completion"
elif [ -f "/etc/bash_completion" ]; then
. "/etc/bash_completion"
fi
fi
. "/usr/local/bin/prompt.sh"

View File

@@ -1,11 +0,0 @@
table inet mullvad_tailscale {
chain output {
type route hook output priority -100; policy accept;
ip daddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
}
chain input {
type filter hook input priority -100; policy accept;
ip saddr 100.64.0.0/10 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
}
}

View File

@@ -1,11 +0,0 @@
[koofr]
type = koofr
provider = koofr
user = koofr@do-bbs.me
password = GYsZmWtUoLUsLHBd5hCiFx7-yGK2XcEGfGqMAThjgLk
[koofr_vault]
type = crypt
remote = koofr:/vault
password = SlOeftMnQNgRoo4SJRxMCeZDHckgi3xFfw3jjfOpoJJqqPSed7vG7SaCJ7ZDvRT2SlU9M8i-5YeJLnhaN6EuzBY
password2 = YBQPmGBnC-B035q15aCsm-jnJeT8oHxRI4mT-RLzFKyijilF0yh4LfP0hQsPcPH-7cKbySGTR7SaKin55xsQZ5PYaqHGHpQJuC9WBU4wBMCTpNUcZ8VWW4yPqX2w8U5Uz2sshhQXUPWC5eKVsM1GaEcsUUWio7z-u06OF-yrhCK9yjwNl7ybkWpP8cAFnfMCkwGFeGK4sl94ddQE0iKNksQeSnAR-Lb0NdLQbN4pE0Fqyj-J2Cl-xbAQJg

View File

@@ -1,10 +1,13 @@
#!/usr/bin/env bash
# ---
# @file_name: dao.sh
# @version: 1.0.0
# @description: main dao handler
# @author: Jamie Albert (empty_produce)
# @author_contact: <mailto:empty.produce@flatmail.me>
# @description: main script handle for dao
# @date: 2025-11-12
# @version: 0.0.1
# @usage: ./dao.sh {update|transfer|pwgen|mount|firewall} [args]
#
# @author: Jamie Albert
# @author_contact: <mailto:jamie.albert@flatmail.me
# @license: GNU Affero General Public License v3.0 (Included in LICENSE)
# Copyright (C) 2025, Jamie Albert
# ---
@@ -34,10 +37,7 @@ main() {
"${DAO_SCRIPTS_DIR}/on_demand/pwgen.sh" "$@"
;;
mount)
"${DAO_SCRIPTS_DIR}/always/mount.sh" "$@"
;;
firewall)
"${DAO_SCRIPTS_DIR}/reboot/firewall.sh" "$@"
"${DAO_SCRIPTS_DIR}/reboot/mount.sh" "$@"
;;
*)

View File

@@ -1,10 +1,13 @@
#!/usr/bin/env bash
# ---
# @file_name: prompt.sh
# @description: a bash prompt
# @date: 2025-11-12
# @version: 1.0.1
# @description: a prompt
# @author: Jamie Albert (empty_produce)
# @author_contact: <mailto:empty.produce@flatmail.me>
# @usage: . prompt.sh
#
# @author: Jamie Albert
# @author_contact: <mailto:jamie.albert@flatmail.me
# @license: GNU Affero General Public License v3.0 (Included in LICENSE)
# Copyright (C) 2025, Jamie Albert
# ---
@@ -13,7 +16,7 @@
# Script Exports
# ---
declare -x PASSWORD_STORE_DIR=~/dao/storage/pass
declare -x BW_SESSION; BW_SESSION=$(pass show bw/session)
# declare -x BW_SESSION; BW_SESSION=$(pass show bw/session)
# ---
# Script globals

View File

@@ -0,0 +1,80 @@
{
"workbench.colorTheme": "Gruvbox Dark Medium",
"git.autofetch": true,
"window.restoreWindows": "preserve",
"security.workspace.trust.untrustedFiles": "open",
"git.confirmSync": false,
"[css]": {
"editor.defaultFormatter": "mblode.pretty-formatter"
},
"explorer.confirmDelete": false,
"[shellscript]": {
"editor.defaultFormatter": "mkhl.shfmt"
},
"editor.tabSize": 2,
"explorer.confirmDragAndDrop": false,
"editor.stickyScroll.enabled": false,
"better-comments.tags": [
{
"tag": "!",
"color": "#ea6962",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "?",
"color": "#83b193",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "//",
"color": "#504945",
"strikethrough": true,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "todo",
"color": "#d8a657",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "@description:",
"color": "#a9b665",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "*",
"color": "#a9b665",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
}
],
"git.enableSmartCommit": false,
"projectManager.git.baseFolders": [
"/home/jamie/dao"
],
"symbols.hidesExplorerArrows": false,
"workbench.iconTheme": "bearded-icons",
}

13
dotfiles/git/.gitconfig Normal file
View File

@@ -0,0 +1,13 @@
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[user]
name = Jamie Albert
email = git.747@flatmail.me
signingkey = C975E3BEF2BA3276
[commit]
gpgsign = true
[tag]
gpgSign = true

View File

@@ -0,0 +1,5 @@
[_mail]
source = maildir://~/dao/storage/maildir/mail
check-mail-cmd = mbsync mail
check-mail-timeout = 30s
from = Jamie Albert <mail@do-bbs.com>

View File

@@ -0,0 +1,186 @@
# Binds are of the form <key sequence> = <command to run>
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
<C-p> = :prev-tab<Enter>
<C-PgUp> = :prev-tab<Enter>
<C-n> = :next-tab<Enter>
<C-PgDn> = :next-tab<Enter>
\[t = :prev-tab<Enter>
\]t = :next-tab<Enter>
<C-t> = :term<Enter>
? = :help keys<Enter>
<C-c> = :prompt 'Quit?' quit<Enter>
<C-q> = :prompt 'Quit?' quit<Enter>
<C-z> = :suspend<Enter>
[messages]
q = :prompt 'Quit?' quit<Enter>
j = :next<Enter>
<Down> = :next<Enter>
<C-d> = :next 50%<Enter>
<C-f> = :next 100%<Enter>
<PgDn> = :next 100%<Enter>
k = :prev<Enter>
<Up> = :prev<Enter>
<C-u> = :prev 50%<Enter>
<C-b> = :prev 100%<Enter>
<PgUp> = :prev 100%<Enter>
g = :select 0<Enter>
G = :select -1<Enter>
J = :next-folder<Enter>
<C-Down> = :next-folder<Enter>
K = :prev-folder<Enter>
<C-Up> = :prev-folder<Enter>
H = :collapse-folder<Enter>
<C-Left> = :collapse-folder<Enter>
L = :expand-folder<Enter>
<C-Right> = :expand-folder<Enter>
v = :mark -t<Enter>
<Space> = :mark -t<Enter>:next<Enter>
V = :mark -v<Enter>
T = :toggle-threads<Enter>
zc = :fold<Enter>
zo = :unfold<Enter>
za = :fold -t<Enter>
zM = :fold -a<Enter>
zR = :unfold -a<Enter>
<tab> = :fold -t<Enter>
zz = :align center<Enter>
zt = :align top<Enter>
zb = :align bottom<Enter>
<Enter> = :view<Enter>
d = :choose -o y 'Really delete this message' delete-message<Enter>
D = :delete<Enter>
a = :archive flat<Enter>
A = :unmark -a<Enter>:mark -T<Enter>:archive flat<Enter>
C = :compose<Enter>
m = :compose<Enter>
b = :bounce<space>
rr = :reply -a<Enter>
rq = :reply -aq<Enter>
Rr = :reply<Enter>
Rq = :reply -q<Enter>
c = :cf<space>
$ = :term<space>
! = :term<space>
| = :pipe<space>
/ = :search<space>
\ = :filter<space>
n = :next-result<Enter>
N = :prev-result<Enter>
<Esc> = :clear<Enter>
s = :split<Enter>
S = :vsplit<Enter>
pl = :patch list<Enter>
pa = :patch apply <Tab>
pd = :patch drop <Tab>
pb = :patch rebase<Enter>
pt = :patch term<Enter>
ps = :patch switch <Tab>
[messages:folder=Drafts]
<Enter> = :recall<Enter>
[view]
/ = :toggle-key-passthrough<Enter>/
q = :close<Enter>
O = :open<Enter>
o = :open<Enter>
S = :save<space>
| = :pipe<space>
D = :delete<Enter>
A = :archive flat<Enter>
<C-l> = :open-link <space>
f = :forward<Enter>
rr = :reply -a<Enter>
rq = :reply -aq<Enter>
Rr = :reply<Enter>
Rq = :reply -q<Enter>
H = :toggle-headers<Enter>
<C-k> = :prev-part<Enter>
<C-Up> = :prev-part<Enter>
<C-j> = :next-part<Enter>
<C-Down> = :next-part<Enter>
J = :next<Enter>
<C-Right> = :next<Enter>
K = :prev<Enter>
<C-Left> = :prev<Enter>
[view::passthrough]
$noinherit = true
$ex = <C-x>
<Esc> = :toggle-key-passthrough<Enter>
[compose]
# Keybindings used when the embedded terminal is not selected in the compose
# view
$noinherit = true
$ex = <C-x>
$complete = <C-o>
<C-k> = :prev-field<Enter>
<C-Up> = :prev-field<Enter>
<C-j> = :next-field<Enter>
<C-Down> = :next-field<Enter>
<A-p> = :switch-account -p<Enter>
<C-Left> = :switch-account -p<Enter>
<A-n> = :switch-account -n<Enter>
<C-Right> = :switch-account -n<Enter>
<tab> = :next-field<Enter>
<backtab> = :prev-field<Enter>
<C-p> = :prev-tab<Enter>
<C-PgUp> = :prev-tab<Enter>
<C-n> = :next-tab<Enter>
<C-PgDn> = :next-tab<Enter>
[compose::editor]
# Keybindings used when the embedded terminal is selected in the compose view
$noinherit = true
$ex = <C-x>
<C-k> = :prev-field<Enter>
<C-Up> = :prev-field<Enter>
<C-j> = :next-field<Enter>
<C-Down> = :next-field<Enter>
<C-p> = :prev-tab<Enter>
<C-PgUp> = :prev-tab<Enter>
<C-n> = :next-tab<Enter>
<C-PgDn> = :next-tab<Enter>
[compose::review]
# Keybindings used when reviewing a message to be sent
# Inline comments are used as descriptions on the review screen
y = :send<Enter> # Send
n = :abort<Enter> # Abort (discard message, no confirmation)
s = :sign<Enter> # Toggle signing
x = :encrypt<Enter> # Toggle encryption to all recipients
v = :preview<Enter> # Preview message
p = :postpone<Enter> # Postpone
q = :choose -o d discard abort -o p postpone postpone<Enter> # Abort or postpone
e = :edit<Enter> # Edit (body and headers)
a = :attach<space> # Add attachment
d = :detach<space> # Remove attachment
[terminal]
$noinherit = true
$ex = <C-x>
<C-p> = :prev-tab<Enter>
<C-n> = :next-tab<Enter>
<C-PgUp> = :prev-tab<Enter>
<C-PgDn> = :next-tab<Enter>

27
dotfiles/mail/.mbsyncrc Normal file
View File

@@ -0,0 +1,27 @@
IMAPAccount mail
Host 127.0.0.1
Port 1143
User mail@do-bbs.com
Passcmd "pass show pb/pass"
#SSLType IMAPS
TLSType STARTTLS
CertificateFile ~/dao/storage/vault/system/cert.pem
MaildirStore mail-local
Path ~/dao/storage/maildir/mail/
INBOX ~/dao/storage/maildir/mail/INBOX
SubFolders Verbatim
IMAPStore mail
Account mail
Channel mail
Far :mail:
Near :mail-local:
Patterns *
Expunge None
Remove None
CopyArrivalDate yes
Sync PullNew
Create Near
SyncState *

63
dotfiles/shells/.bashrc Normal file
View File

@@ -0,0 +1,63 @@
#!/usr/bin/env bash
# Only run for interactive shells
[[ $- != *i* ]] && return
# Load debian_chroot if available
[[ -z ${debian_chroot:-} && -r /etc/debian_chroot ]] && debian_chroot=$(< /etc/debian_chroot)
# Determine if color prompt should be used
color_prompt=
if [[ -n ${force_color_prompt:-} ]] || [[ ${TERM} =~ ^(xterm-color|.*-256color)$ ]]; then
if [[ -x /usr/bin/tput ]] && tput setaf 1 >&/dev/null; then
color_prompt=yes
fi
fi
# Set PS1 based on color support
if [[ ${color_prompt} == yes ]]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
# Set window title for xterm/rxvt
if [[ ${TERM} =~ ^(xterm|rxvt) ]]; then
PS1="\[\e]0;${debian_chroot:+(${debian_chroot})}\u@\h: \w\a\]${PS1}"
fi
# Clean up
unset color_prompt force_color_prompt
# Enable color support for ls and grep if available
if [[ -x /usr/bin/dircolors ]]; then
if [[ -r ~/.dircolors ]]; then
eval "$(dircolors -b ~/.dircolors)"
else
eval "$(dircolors -b)"
fi
# Color aliases
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# Alert alias for desktop notifications
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Load custom aliases if file exists
[[ -f ~/.bash_aliases ]] && . ~/.bash_aliases
# Enable bash completion if available and not in posix mode
if ! shopt -oq posix; then
if [[ -f /usr/share/bash-completion/bash_completion ]]; then
. /usr/share/bash-completion/bash_completion
elif [[ -f /etc/bash_completion ]]; then
. /etc/bash_completion
fi
fi
# Load custom prompt script if it exists
[[ -f /usr/local/bin/prompt.sh ]] && . /usr/local/bin/prompt.sh

View File

@@ -0,0 +1,13 @@
Host github.com
User git
IdentityFile /home/jamie/.ssh/github
IdentitiesOnly yes
StrictHostKeyChecking accept-new
Host gitea
HostName gitea.do-bbs.com
User git
IdentityFile /home/jamie/.ssh/gitea
IdentitiesOnly yes
StrictHostKeyChecking accept-new
Port 748

View File

@@ -20,12 +20,4 @@ Host athena
IdentitiesOnly yes
StrictHostKeyChecking accept-new
User u497749
IdentityFile ~/.ssh/athena
Host gitea
HostName gitea.do-bbs.com
User git
IdentityFile /home/jamie/.ssh/gitea
IdentitiesOnly yes
StrictHostKeyChecking accept-new
Port 748
IdentityFile ~/.ssh/athena

Some files were not shown because too many files have changed in this diff Show More