Compare commits
10 Commits
198bca2567
...
a76f8761dd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a76f8761dd | ||
|
|
460f14c71b | ||
|
|
772f11cfca | ||
|
|
b4ad7f77f2 | ||
|
|
96fe400957 | ||
|
|
64a5e563c3 | ||
|
|
494b47d9ac | ||
|
|
3ebb8c54f1 | ||
|
|
e58c120f62 | ||
|
|
4d7eca0765 |
42
.vscode/dao.code-snippets
vendored
Normal file
42
.vscode/dao.code-snippets
vendored
Normal 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
14
.vscode/settings.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
@@ -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 "$@"
|
||||
|
||||
@@ -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 "$@"
|
||||
Binary file not shown.
@@ -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
|
||||
@@ -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
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
# Default
|
||||
|
||||
Default look of Spotify with different color schemes.
|
||||
|
||||
## Screenshot
|
||||
|
||||

|
||||
|
||||
## Info
|
||||
|
||||
### Ocean
|
||||
|
||||
Part of material ocean themes, [checkout here](https://github.com/material-ocean) for the same theme for different applications. By @Blacksuan19
|
||||
@@ -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
|
||||
@@ -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 |
@@ -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
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
Host github.com
|
||||
User git
|
||||
IdentityFile /home/jamie/.ssh/github
|
||||
IdentitiesOnly yes
|
||||
StrictHostKeyChecking accept-new
|
||||
@@ -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"
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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" "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
@@ -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
|
||||
80
dotfiles/editors/.config/VSCodium/User/settings.json
Normal file
80
dotfiles/editors/.config/VSCodium/User/settings.json
Normal 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
13
dotfiles/git/.gitconfig
Normal 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
|
||||
5
dotfiles/mail/.config/aerc/accounts.conf
Normal file
5
dotfiles/mail/.config/aerc/accounts.conf
Normal 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>
|
||||
186
dotfiles/mail/.config/aerc/binds.conf
Normal file
186
dotfiles/mail/.config/aerc/binds.conf
Normal 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
27
dotfiles/mail/.mbsyncrc
Normal 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
63
dotfiles/shells/.bashrc
Normal 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
|
||||
13
dotfiles/system/ssh/ssh_config.d/10-dev.conf
Executable file
13
dotfiles/system/ssh/ssh_config.d/10-dev.conf
Executable 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
|
||||
@@ -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
Reference in New Issue
Block a user