feat: reshuffle files

This commit is contained in:
Jamie Albert
2025-11-12 01:11:54 +00:00
parent e58c120f62
commit 3ebb8c54f1
212 changed files with 483 additions and 160 deletions

View File

@@ -0,0 +1,50 @@
#!/usr/bin/env bash
# ---
# @file_name: dao.sh
# @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
# ---
set -euo pipefail
# ---
# shellcheck disable=1091
# ---
setup() {
. /usr/local/share/dao/libs/libs_dao.sh
. /usr/local/share/dao/config/dao.conf
}
declare -g COMMAND=$1
shift
main() {
setup
case "${COMMAND}" in
update)
"${DAO_SCRIPTS_DIR}/on_demand/update.sh" "$@"
;;
transfer)
"${DAO_SCRIPTS_DIR}/on_demand/transfer.sh" "$@"
;;
pwgen)
"${DAO_SCRIPTS_DIR}/on_demand/pwgen.sh" "$@"
;;
mount)
"${DAO_SCRIPTS_DIR}/always/mount.sh" "$@"
;;
*)
echo "Usage: dao {update|transfer|pwgen|mount|firewall} [args]"
exit 1
;;
esac
}
main "$@"

View File

@@ -0,0 +1,279 @@
#!/usr/bin/env bash
# ---
# @file_name: prompt.sh
# @description: a bash prompt
# @date: 2025-11-12
# @version: 1.0.1
# @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
# ---
# ---
# Script Exports
# ---
declare -x PASSWORD_STORE_DIR=~/dao/storage/pass
# declare -x BW_SESSION; BW_SESSION=$(pass show bw/session)
# ---
# Script globals
# ---
declare -g _cached_uh=""
declare -g _uh_cache_key=""
declare -g _cached_pyenv_version=""
declare -g _pyenv_cache_key=""
declare -g _cached_readonly=""
declare -g _readonly_cache_key=""
# ---
# Shell options configuration
# ---
shopt -s histappend
shopt -s cmdhist
shopt -s histreedit
shopt -s histverify
shopt -s interactive_comments
shopt -s checkwinsize
shopt -s globstar
shopt -s nocaseglob
shopt -s dirspell
shopt -s cdspell
shopt -u autocd
if [[ $- =~ "i" ]]; then
bind "set completion-ignore-case on"
bind "set show-all-if-ambiguous on"
bind "set mark-symlinked-directories on"
fi
# ---
# * Symbols
# ---
_prompt_symbol=""
_git_symbol="git:"
_pyenv_symbol="pyenv:"
_readonly_symbol="ro:"
_screen_symbol="scr:"
# ---
# * Colours
# ---
_prompt_success_colour="142"
_prompt_fail_colour="203"
_prompt_user_colour="109"
_prompt_sudo_colour="208"
_prompt_at_colour="249"
_prompt_hostname_colour="132"
_prompt_info_colour="172"
_prompt_input_colour="254"
_prompt_dir_colour="249"
_git_module_colour="66"
_pyenv_module_colour="66"
_readonly_module_colour="196"
_screen_module_colour="33"
# ---
# * Miscellaneous
# ---
_prompt_hostname="ssh"
_prompt_separator=" "
_prompt_wrapper="[]"
# ---
# // * Nerd Symbols
# // OBSOLETE 2025-11-07
# ---
# _git_symbol="󰘦"
# _pyenv_symbol="󰌠"
# _readonly_symbol="󰍁"
# _screen_symbol="󰐅"
# _prompt_symbol="󰥭"
# ---
# * Aliases
# ---
alias count='find . -type f | wc -l'
alias cdd='cd /home/jamie/dao'
alias dnf='sudo dnf'
alias hist='history|grep'
alias ll="ls -laFh"
alias la='ls -A'
alias li='la | grep -i'
alias lh='ll -d .*'
alias mkdir='mkdir -p'
alias nano='nano -W'
alias qq='exit'
alias sc='sudo systemctl'
alias xclipc='xclip -sel c'
# ---
# * Environment settings
# ---
declare -g HISTTIMEFORMAT='%F %T '
declare -g PROMPT_DIRTRIM="2"
[[ -z "$LC_CTYPE" && -z "$LC_ALL" ]] && declare -g LC_CTYPE="${LANG%%:*}"
[[ -z "$HISTFILE" ]] && declare -g HISTFILE="$HOME/.bash_history"
declare -x HISTCONTROL=ignorespace
declare -x HISTFILESIZE=10000
declare -x HISTSIZE=${HISTFILESIZE}
# ---
# * colour function
# ---
_prompt_colour() {
[[ ${1} != "-" ]] && echo -ne "\[\033[38;5;${1}m\]" || echo -ne "\[\033[0m\]"
}
# ---
# * Generate prompt segments
# ---
_prompt_generate() {
declare _separator="" _text="${1%%|*}" _colour="${1##*|}"
[[ ${_prompt_seg} -gt 1 ]] && _separator="${_prompt_separator}"
_prompt_information+="${_separator}$(_prompt_colour "${_colour}")${_text}\[\e[0m\]"
((_prompt_seg++))
}
# ---
# * Screen
# ---
_screen_pre() {
[[ ${TERM} == "screen"* ]] && _prompt_generate "${_screen_symbol}|${_screen_module_colour}"
}
# ---
# * Git
# ---
_git_post() {
[[ -z "$_git_dir" ]] && _git_dir="$(git rev-parse --git-dir 2>/dev/null)"
[[ -n "$_git_dir" ]] || return
local _unsafe_ref
_unsafe_ref=$(git symbolic-ref -q HEAD 2>/dev/null) || return
local _clean_ref="${_unsafe_ref##refs/heads/}"
_clean_ref="${_clean_ref//[^a-zA-Z0-9\/]/-}"
local _status=""
[[ -n "$(git status --porcelain 2>/dev/null)" ]] && _status="*"
[[ -n "$(git ls-files --others --exclude-standard 2>/dev/null)" ]] && _status="${_status}+"
[[ -n ${_clean_ref} ]] && _prompt_generate "${_git_symbol} ${_clean_ref}${_status}|${_git_module_colour}"
}
# ---
# * Pyenv
# ---
_pyenv_post() {
[[ -n ${VIRTUAL_ENV} ]] || return
[[ "$VIRTUAL_ENV" != "$_pyenv_cache_key" ]] && {
_cached_pyenv_version="${PYTHON_VERSION}"
[[ -z ${_cached_pyenv_version} ]] && _cached_pyenv_version="$(python3 --version 2>/dev/null)"
_cached_pyenv_version="${_cached_pyenv_version#Python }"
_pyenv_cache_key="$VIRTUAL_ENV"
}
[[ -n ${_cached_pyenv_version} ]] && _prompt_generate "${_prompt_wrapper:0:1}${_pyenv_symbol} ${_cached_pyenv_version}${_prompt_wrapper:1:1}|${_pyenv_module_colour}"
}
# ---
# * Readonly
# ---
_readonly_post() {
[[ "$PWD" != "$_readonly_cache_key" ]] && {
_cached_readonly=""
[[ ! -w "$(pwd)" ]] && _cached_readonly="readonly"
_readonly_cache_key="$PWD"
}
[[ -n "$_cached_readonly" ]] && _prompt_generate "${_prompt_wrapper:0:1}${_readonly_symbol}${_prompt_wrapper:1:1}|${_readonly_module_colour}"
}
# ---
# * Build the main prompt
# ---
_prompt_build() {
declare _last_status="$?" _gen_uh _cache_key="${PWD}"
declare -gi _prompt_seg=1
[[ "$_cache_key" != "$_last_cache_key" ]] && {
unset _git_dir _cached_pyenv_version
_last_cache_key="$_cache_key"
}
# ---
# ! Insert *pre* functions here
# ---
# START
_screen_pre
# END
# ---
# * User and hostname
# ---
declare _user_colour="${_prompt_user_colour}"
sudo -nv 2>/dev/null && _user_colour="${_prompt_sudo_colour}"
_gen_uh="${_cached_uh}"
_uh_cache_key="${_prompt_hostname}:${SSH_CLIENT:-}:$(sudo -n -v 2>/dev/null && echo 'sudo' || echo 'nosudo')"
[[ "$_uh_cache_key" != "$_last_uh_key" ]] && {
_gen_uh="$(_prompt_colour "${_user_colour}")${USER}"
if [[ ${_prompt_hostname} == "all" ]] || [[ ${_prompt_hostname} == "ssh" && -n ${SSH_CLIENT} ]]; then
_gen_uh+="$(_prompt_colour "${_prompt_at_colour}")@$(_prompt_colour "${_prompt_hostname_colour}")${HOSTNAME}"
fi
_gen_uh+="\[\033[0m\]"
_cached_uh="$_gen_uh"
_last_uh_key="$_uh_cache_key"
}
_prompt_generate "${_gen_uh}|${_prompt_info_colour}"
# ---
# * Current directory
# ---
declare _current_dir="${PWD}"
_current_dir="${_current_dir/#$HOME/\~}"
_prompt_generate "$(_prompt_colour "${_prompt_info_colour}")${_prompt_wrapper:0:1}$(_prompt_colour "${_prompt_dir_colour}")${_current_dir}$(_prompt_colour "${_prompt_info_colour}")${_prompt_wrapper:1:1}\[\033[0m\]|${_prompt_info_colour}"
# ---
# * Error status
# ---
[[ ${_last_status} -ne 0 ]] && _prompt_generate "${_prompt_wrapper:0:1}${_last_status}${_prompt_wrapper:1:1}|${_prompt_fail_colour}"
# ---
# ! Insert *post* functions here
# ---
# START
_git_post
_pyenv_post
_readonly_post
# END
# ---
# *Final prompt symbol
# ---
_prompt_status_colour=${_prompt_success_colour}
[[ ${_last_status} -ne 0 ]] && _prompt_status_colour=${_prompt_fail_colour}
_prompt_information+="$(_prompt_colour "${_prompt_status_colour}")\n${_prompt_symbol}\[\e[0m\]"
PS1="${_prompt_information} "
unset _prompt_information _prompt_seg
}
# ---
# * Initialize prompt
# ---
_prompt_init() {
case "$PROMPT_COMMAND" in
*"_prompt_build"*) ;;
"") PROMPT_COMMAND="_prompt_build" ;;
*) PROMPT_COMMAND="_prompt_build;${PROMPT_COMMAND}" ;;
esac
}
# ---
# * Initialize when sourced
# ---
[[ ${BASH_SOURCE[0]} != "${0}" ]] && _prompt_init

View File

@@ -0,0 +1,43 @@
#!/usr/bin/env bash
# Bash completion for dao command
_dao_completion() {
local cur commands
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
mapfile -t commands < <(printf "update\ntransfer\npwgen\nmount\n")
case "${COMP_CWORD}" in
1)
mapfile -t COMPREPLY < <(compgen -W "${commands[*]}" -- "${cur}")
;;
2)
case "${COMP_WORDS[1]}" in
pwgen)
mapfile -t COMPREPLY < <(compgen -W "3 4 5 6 7 8 9 10" -- "${cur}")
;;
transfer)
mapfile -t COMPREPLY < <(compgen -W "-d -u -uc -ur" -- "${cur}")
;;
*) ;;
esac
;;
3)
case "${COMP_WORDS[1]}" in
pwgen)
if [[ "${COMP_WORDS[2]}" =~ ^[0-9]+$ ]]; then
mapfile -t COMPREPLY < <(compgen -W "- _ . space" -- "${cur}")
fi
;;
*) ;;
esac
;;
*)
;;
esac
return 0
}
complete -F _dao_completion dao.sh

View File

@@ -0,0 +1,13 @@
# -- dao.sh
DAO_USER="jamie"
DAO_USER_HOME="/home/${DAO_USER}"
DAO_INSTALL_DIR="${DAO_USER_HOME}/dao"
DAO_SCRIPTS_DIR="${DAO_INSTALL_DIR}/scripts"
DAO_STORAGE_DIR="${DAO_INSTALL_DIR}/storage"
# --- jade.sh
JADE_REMOTE_HOST="root@hephaestus"
JADE_REMOTE_PATH="/home/oc/docker_config/compose.yml"
JADE_LOCAL_PATH="/tmp/${JADE_REMOTE_PATH##*/}"
JADE_EDITOR="codium"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
# ---
# @file_name: libs_cradle.sh
# @version: 1.0.0
# @description: lib files
# @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
# Color definitions using 256-color codes
readonly RED=$'\033[0;38;5;167m'
readonly GREEN=$'\033[0;38;5;108m'
readonly YELLOW=$'\033[1;38;5;214m'
readonly NC=$'\033[0m'
dao::error() {
declare error_msg exit_code="${1}"
shift
printf -v error_msg 'error[%d]: %s\n' "${exit_code}" "$*"
echo -ne "${RED}[e]${NC}: ${error_msg}" >&2
exit "${exit_code}"
}
dao::info() {
declare info_msg
printf -v info_msg '%s\n' "$*"
echo -ne "${GREEN}[i]${NC}: ${info_msg}"
}
dao::warn() {
declare warn_msg
printf -v warn_msg '%s\n' "$*"
echo -ne "${YELLOW}[w]${NC}: ${warn_msg}"
}

View File

@@ -0,0 +1,78 @@
{
"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"
],
}

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,868 @@
#
# aerc main configuration
[general]
#
# Used as a default path for save operations if no other path is specified.
# ~ is expanded to the current user home dir.
#
#default-save-path=
# If set to "gpg", aerc will use system gpg binary and keystore for all crypto
# operations. If set to "internal", the internal openpgp keyring will be used.
# If set to "auto", the system gpg will be preferred unless the internal
# keyring already exists, in which case the latter will be used.
#
# Default: auto
#pgp-provider=auto
# By default, the file permissions of accounts.conf must be restrictive and
# only allow reading by the file owner (0600). Set this option to true to
# ignore this permission check. Use this with care as it may expose your
# credentials.
#
# Default: false
#unsafe-accounts-conf=false
# Output log messages to specified file. A path starting with ~/ is expanded to
# the user home dir. When redirecting aerc's output to a file using > shell
# redirection, this setting is ignored and log messages are printed to stdout.
#
#log-file=
# Only log messages above the specified level to log-file. Supported levels
# are: trace, debug, info, warn and error. When redirecting aerc's output to
# a file using > shell redirection, this setting is ignored and the log level
# is forced to trace.
#
# Default: info
#log-level=info
# Disable IPC entirely. Don't run commands (including mailto:... and mbox:...)
# in an existing aerc instance, and don't start an IPC server to allow
# subsequent aerc instances to run commands in the current one.
#
# Default: false
#disable-ipc=false
# Don't run mailto:... commands over IPC; start a new aerc instance with the
# composer instead.
#
# Default: false
#disable-ipc-mailto=false
#
# Don't run mbox:... commands over IPC; start a new aerc instance with the mbox
# file instead.
#
# Default: false
#disable-ipc-mbox=false
# Set the $TERM environment variable used for the embedded terminal.
#
# Default: xterm-256color
#term=xterm-256color
# Display OSC8 strings in the embedded terminal
#
# Default: false
#enable-osc8=false
# Default shell command to use for :menu. This will be executed with sh -c and
# will run in an popover dialog.
#
# Any occurrence of %f will be replaced by a temporary file path where the
# command is expected to write output lines to be consumed by :menu. Otherwise,
# the lines will be read from the command's standard output.
#
# Examples:
# default-menu-cmd=fzf
# default-menu-cmd=fzf --multi
# default-menu-cmd=dmenu -l 20
# default-menu-cmd=ranger --choosefiles=%f
#
#default-menu-cmd=
[ui]
#
# Describes the format for each row in a mailbox view. This is a comma
# separated list of column names with an optional align and width suffix. After
# the column name, one of the '<' (left), ':' (center) or '>' (right) alignment
# characters can be added (by default, left) followed by an optional width
# specifier. The width is either an integer representing a fixed number of
# characters, or a percentage between 1% and 99% representing a fraction of the
# terminal width. It can also be one of the '*' (auto) or '=' (fit) special
# width specifiers. Auto width columns will be equally attributed the remaining
# terminal width. Fit width columns take the width of their contents. If no
# width specifier is set, '*' is used by default.
#
# Default: flags:4,name<20%,subject,date>=
#index-columns=flags:4,name<20%,subject,date>=
#
# Each name in index-columns must have a corresponding column-$name setting.
# All column-$name settings accept golang text/template syntax. See
# aerc-templates(7) for available template attributes and functions.
#
# Here are some examples to show the To field instead of the From field for
# an email (modifying column-name):
#
# 1. a generic one
# column-name={{ .Peer | names | join ", " }}
# 2. based upon the selected folder
# column-name={{if match .Folder "^(Gesendet|Sent)$"}}{{index (.To | names) 0}}{{else}}{{index (.From | names) 0}}{{end}}
#
# Default settings
#column-flags={{.Flags | join ""}}
#column-name={{index (.From | names) 0}}
#column-subject={{.ThreadPrefix}}{{.Subject}}
#column-date={{.DateAutoFormat .Date.Local}}
#
# String separator inserted between columns. When the column width specifier is
# an exact number of characters, the separator is added to it (i.e. the exact
# width will be fully available for the column contents).
#
# Default: " "
#column-separator=" "
#
# See time.Time#Format at https://godoc.org/time#Time.Format
#
# Default: 2006 Jan 02
#timestamp-format=2006 Jan 02
#
# Index-only time format for messages that were received/sent today.
# If this is empty, timestamp-format is used instead.
#
# Default: 15:04
#this-day-time-format=15:04
#
# Index-only time format for messages that were received/sent within the last
# 7 days. If this is empty, timestamp-format is used instead.
#
# Default: Jan 02
#this-week-time-format=Jan 02
#
# Index-only time format for messages that were received/sent this year.
# If this is empty, timestamp-format is used instead.
#
#Default: Jan 02
#this-year-time-format=Jan 02
#
# Overrides timestamp-format for the message view.
#
# Default: 2006 Jan 02, 15:04 GMT-0700
#message-view-timestamp-format=2006 Jan 02, 15:04 GMT-0700
#
# If set, overrides timestamp-format in the message view for messages
# that were received/sent today.
#
#message-view-this-day-time-format=
# If set, overrides timestamp-format in the message view for messages
# that were received/sent within the last 7 days.
#
#message-view-this-week-time-format=
#
# If set, overrides *timestamp-format* in the message view for messages
# that were received/sent this year.
#
#message-view-this-year-time-format=
#
# Width of the sidebar, including the border.
#
# Default: 22
#sidebar-width=22
#
# Default split layout for message list tabs. The syntax is:
#
# [<direction>] <size>
#
# <direction> is optional and defaults to horizontal. It can take one
# of the following values: h, horiz, horizontal, v, vert, vertical.
#
# <size> is a positive integer representing the size (in terminal cells)
# of the message list window.
#
#message-list-split=
#
# Message to display when viewing an empty folder.
#
# Default: (no messages)
#empty-message=(no messages)
# Message to display when no folders exists or are all filtered
#
# Default: (no folders)
#empty-dirlist=(no folders)
#
# Value to set {{.Subject}} template to when subject is empty.
#
# Default: (no subject)
#empty-subject=(no subject)
# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
#
# Default: false
#mouse-enabled=false
#
# Ring the bell when new messages are received
#
# Default: true
#new-message-bell=true
#
# Template to use for Account tab titles
#
# Default: {{.Account}}
#tab-title-account={{.Account}}
#
# Template to use for Composer tab titles
#
# Default: {{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}}
#tab-title-composer={{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}}
#
# Template to use for Message Viewer tab titles
#
# Default: {{.Subject}}
#tab-title-viewer={{.Subject}}
# Marker to show before a pinned tab's name.
#
# Default: `
#pinned-tab-marker='`'
# Template for the left side of the directory list.
# See aerc-templates(7) for all available fields and functions.
#
# Default: {{.Folder}}
#dirlist-left={{.Folder}}
# Template for the right side of the directory list.
# See aerc-templates(7) for all available fields and functions.
#
# Default: {{if .Unread}}{{humanReadable .Unread}}{{end}}
#dirlist-right={{if .Unread}}{{humanReadable .Unread}}{{end}}
# Delay after which the messages are actually listed when entering a directory.
# This avoids loading messages when skipping over folders and makes the UI more
# responsive. If you do not want that, set it to 0s.
#
# Default: 200ms
#dirlist-delay=200ms
# Display the directory list as a foldable tree that allows to collapse and
# expand the folders.
#
# Default: false
#dirlist-tree=false
# If dirlist-tree is enabled, set level at which folders are collapsed by
# default. Set to 0 to disable.
#
# Default: 0
#dirlist-collapse=0
# List of space-separated criteria to sort the messages by, see *sort*
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
# reverses that criterion.
#
# Example: "from -r date"
#
#sort=
# Moves to next message when the current message is deleted
#
# Default: true
#next-message-on-delete=true
# Automatically set the "seen" flag when a message is opened in the message
# viewer.
#
# Default: true
#auto-mark-read=true
# The directories where the stylesets are stored. It takes a colon-separated
# list of directories. If this is unset or if a styleset cannot be found, the
# following paths will be used as a fallback in that order:
#
# ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets
# ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets
# /usr/local/share/aerc/stylesets
# /usr/share/aerc/stylesets
#
#stylesets-dirs=
# Uncomment to use box-drawing characters for vertical and horizontal borders.
#
# Default: "│" and "─"
#border-char-vertical="│"
#border-char-horizontal="─"
# Sets the styleset to use for the aerc ui elements.
#
# Default: default
#styleset-name=default
# Activates fuzzy search in commands and their arguments: the typed string is
# searched in the command or option in any position, and need not be
# consecutive characters in the command or option.
#
# Default: false
#fuzzy-complete=false
# How long to wait after the last input before auto-completion is triggered.
#
# Default: 250ms
#completion-delay=250ms
# The minimum required characters to allow auto-completion to be triggered after
# completion-delay.
#
# Setting this to "manual" disables automatic completion, leaving only the
# manually triggered completion with the $complete key (see aerc-binds(5) for
# more details).
#
# Default: 1
#completion-min-chars=1
#
# Global switch for completion popovers
#
# Default: true
#completion-popovers=true
# Uncomment to use UTF-8 symbols to indicate PGP status of messages
#
# Default: ASCII
#icon-unencrypted=
#icon-encrypted=✔
#icon-signed=✔
#icon-signed-encrypted=✔
#icon-unknown=✘
#icon-invalid=⚠
# Reverses the order of the message list. By default, the message list is
# ordered with the newest (highest UID) message on top. Reversing the order
# will put the oldest (lowest UID) message on top. This can be useful in cases
# where the backend does not support sorting.
#
# Default: false
#reverse-msglist-order = false
# Reverse display of the message threads. Default order is the initial
# message is on the top with all the replies being displayed below. The
# reverse option will put the initial message at the bottom with the
# replies on top.
#
# Default: false
#reverse-thread-order=false
# Positions the cursor on the last message in the message list (at the
# bottom of the view) when opening a new folder.
#
# Default: false
#select-last-message=false
# Sort the thread siblings according to the sort criteria for the messages. If
# sort-thread-siblings is false, the thread siblings will be sorted based on
# the message UID in ascending order. This option is only applicable for
# client-side threading with a backend that enables sorting. Note that there's
# a performance impact when sorting is activated.
#
# Default: false
#sort-thread-siblings=false
# Set the scroll offset in number of lines from the top and bottom of the
# message list.
#
# Default: 0
#msglist-scroll-offset = 0
#
# Enable a threaded view of messages. If this is not supported by the backend
# (IMAP server or notmuch), threads will be built by the client.
#
# Default: false
#threading-enabled=false
# Force client-side thread building
#
# Default: false
#force-client-threads=false
# If no References nor In-Reply-To headers can be matched to build client side
# threads, fallback to similar subjects.
#
# Default: false
#threading-by-subject=false
# Show thread context enables messages which do not match the current query (or
# belong to the current mailbox) to be shown for context. These messages can be
# styled separately using "msglist_thread_context" in a styleset. This feature
# is not supported by all backends
#
# Default: false
#show-thread-context=false
# Debounce client-side thread building
#
# Default: 50ms
#client-threads-delay=50ms
#
# Thread prefix customization:
#
# Customize the thread prefix appearance by selecting the arrow head.
#
# Default: ">"
#thread-prefix-tip = ">"
#
# Customize the thread prefix appearance by selecting the arrow indentation.
#
# Default: " "
#thread-prefix-indent = " "
#
# Customize the thread prefix appearance by selecting the vertical extension of
# the arrow.
#
# Default: "│"
#thread-prefix-stem = "│"
#
# Customize the thread prefix appearance by selecting the horizontal extension
# of the arrow.
#
# Default: ""
#thread-prefix-limb = ""
#
# Customize the thread prefix appearance by selecting the folded thread
# indicator.
#
# Default: "+"
#thread-prefix-folded = "+"
#
# Customize the thread prefix appearance by selecting the unfolded thread
# indicator.
#
# Default: ""
#thread-prefix-unfolded = ""
#
# Customize the thread prefix appearance by selecting the first child connector.
#
# Default: ""
#thread-prefix-first-child = ""
#
# Customize the thread prefix appearance by selecting the connector used if
# the message has siblings.
#
# Default: "├─"
#thread-prefix-has-siblings = "├─"
#
# Customize the thread prefix appearance by selecting the connector used if the
# message has no parents and no children.
#
# Default: ""
#thread-prefix-lone = ""
#
# Customize the thread prefix appearance by selecting the connector used if the
# message has no parents and has children.
#
# Default: ""
#thread-prefix-orphan = ""
#
# Customize the thread prefix appearance by selecting the connector for the last
# sibling.
#
# Default: "└─"
#thread-prefix-last-sibling = "└─"
#
# Customize the reversed thread prefix appearance by selecting the connector for
# the last sibling.
#
# Default: "┌─"
#thread-prefix-last-sibling-reverse = "┌─"
#
# Customize the thread prefix appearance by selecting the connector for dummy
# thread.
#
# Default: "┬─"
#thread-prefix-dummy = "┬─"
#
# Customize the reversed thread prefix appearance by selecting the connector for
# dummy thread.
#
# Default: "┴─"
#thread-prefix-dummy-reverse = "┴─"
#
# Customize the reversed thread prefix appearance by selecting the first child
# connector.
#
# Default: ""
#thread-prefix-first-child-reverse = ""
#
# Customize the reversed thread prefix appearance by selecting the connector
# used if the message has no parents and has children.
#
# Default: ""
#thread-prefix-orphan-reverse = ""
[statusline]
#
# Describes the format for the status line. This is a comma separated list of
# column names with an optional align and width suffix. See [ui].index-columns
# for more details. To completely mute the status line except for push
# notifications, explicitly set status-columns to an empty string.
#
# Default: left<*,center:=,right>*
#status-columns=left<*,center:=,right>*
#
# Each name in status-columns must have a corresponding column-$name setting.
# All column-$name settings accept golang text/template syntax. See
# aerc-templates(7) for available template attributes and functions.
#
# Default settings
#column-left=[{{.Account}}] {{.StatusInfo}}
#column-center={{.PendingKeys}}
#column-right={{.TrayInfo}} | {{cwd}}
#
# String separator inserted between columns.
# See [ui].column-separator for more details.
#
#column-separator=" "
# Specifies the separator between grouped statusline elements.
#
# Default: " | "
#separator=" | "
# Defines the mode for displaying the status elements.
# Options: text, icon
#
# Default: text
#display-mode=text
[viewer]
#
# Specifies the pager to use when displaying emails. Note that some filters
# may add ANSI codes to add color to rendered emails, so you may want to use a
# pager which supports ANSI codes.
#
# Default: less -Rc
#pager=less -Rc
#
# If an email offers several versions (multipart), you can configure which
# mimetype to prefer. For example, this can be used to prefer plaintext over
# html emails.
#
# Default: text/plain,text/html
#alternatives=text/plain,text/html
#
# Default setting to determine whether to show full headers or only parsed
# ones in message viewer.
#
# Default: false
#show-headers=false
#
# Layout of headers when viewing a message. To display multiple headers in the
# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
# none of their specified headers are present in the message.
#
# Default: From|To,Cc|Bcc,Date,Subject
#header-layout=From|To,Cc|Bcc,Date,Subject
# Whether to always show the mimetype of an email, even when it is just a single part
#
# Default: false
#always-show-mime=false
# Define the maximum height of the mimetype switcher before a scrollbar is used.
# The height of the mimetype switcher is restricted to half of the display
# height. If the provided value for the height is zero, the number of parts will
# be used as the height of the type switcher.
#
# Default: 0
#max-mime-height = 0
# Parses and extracts http links when viewing a message. Links can then be
# accessed with the open-link command.
#
# Default: true
#parse-http-links=true
[compose]
#
# Specifies the command to run the editor with. It will be shown in an embedded
# terminal, though it may also launch a graphical window if the environment
# supports it. Defaults to $EDITOR, or vi.
editor=nvim
#
# When set, aerc will create and read .eml files for composing that have
# non-standard \n linebreaks. This is only relevant if the used editor does not
# support CRLF linebreaks.
#
#lf-editor=false
#
# Default header fields to display when composing a message. To display
# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
#
# Default: To|From,Subject
#header-layout=To|From,Subject
#
# Edit headers into the text editor instead than separate fields.
#
# When this is true, address-book-cmd is not supported and address completion
# is left to the editor itself. Also, displaying multiple headers on the same
# line is not possible.
#
# Default: false
#edit-headers=false
#
# Sets focus to the email body when the composer window opens.
#
# Default: false
#focus-body=false
#
# Specifies the command to be used to tab-complete email addresses. Any
# occurrence of "%s" in the address-book-cmd will be replaced with what the
# user has typed so far.
#
# The command must output the completions to standard output, one completion
# per line. Each line must be tab-delimited, with an email address occurring as
# the first field. Only the email address field is required. The second field,
# if present, will be treated as the contact name. Additional fields are
# ignored.
#
# This parameter can also be set per account in accounts.conf.
#address-book-cmd=
# Specifies the command to be used to select attachments. Any occurrence of
# '%s' in the file-picker-cmd will be replaced with the argument <arg>
# to :attach -m <arg>. Any occurrence of '%f' will be replaced by the
# location of a temporary file, from which aerc will read the selected files.
#
# If '%f' is not present, the command must output the selected files to
# standard output, one file per line. If it is present, then aerc does not
# capture the standard output and instead reads the files from the temporary
# file which should have the same format.
#file-picker-cmd=
#
# Allow to address yourself when replying
#
# Default: true
#reply-to-self=true
# Warn before sending an email with an empty subject.
#
# Default: false
#empty-subject-warning=false
#
# Warn before sending an email that matches the specified regexp but does not
# have any attachments. Leave empty to disable this feature.
#
# Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The
# "(?im)" flags are set by default (case-insensitive and multi-line).
#
# Example:
# no-attachment-warning=^[^>]*attach(ed|ment)
#
#no-attachment-warning=
#
# When set, aerc will generate "format=flowed" bodies with a content type of
# "text/plain; format=flowed" as described in RFC3676. This format is easier to
# handle for some mailing software, and generally just looks like ordinary
# text. To actually make use of this format's features, you'll need support in
# your editor.
#
#format-flowed=false
[multipart-converters]
#
# Converters allow to generate multipart/alternative messages by converting the
# main text/plain part into any other MIME type. Only exact MIME types are
# accepted. The commands are invoked with sh -c and are expected to output
# valid UTF-8 text.
#
# Example (obviously, this requires that you write your main text/plain body
# using the markdown syntax):
#text/html=pandoc -f markdown -t html --standalone
[filters]
#
# Filters allow you to pipe an email body through a shell command to render
# certain emails differently, e.g. highlighting them with ANSI escape codes.
#
# The commands are invoked with sh -c. The following folders are prepended to
# the system $PATH to allow referencing filters from their name only:
#
# ${XDG_CONFIG_HOME:-~/.config}/aerc/filters
# ~/.local/libexec/aerc/filters
# ${XDG_DATA_HOME:-~/.local/share}/aerc/filters
# $PREFIX/libexec/aerc/filters
# $PREFIX/share/aerc/filters
# /usr/libexec/aerc/filters
# /usr/share/aerc/filters
#
# If you want to run a program in your default $PATH which has the same name
# as a builtin filter (e.g. /usr/bin/colorize), use its absolute path.
#
# The following variables are defined in the filter command environment:
#
# AERC_MIME_TYPE the part MIME type/subtype
# AERC_FORMAT the part content type format= parameter
# AERC_FILENAME the attachment filename (if any)
# AERC_SUBJECT the message Subject header value
# AERC_FROM the message From header value
#
# The first filter which matches the email's mimetype will be used, so order
# them from most to least specific.
#
# You can also match on non-mimetypes, by prefixing with the header to match
# against (non-case-sensitive) and a comma, e.g. subject,text will match a
# subject which contains "text". Use header,~regex to match against a regex.
#
text/plain=colorize
text/calendar=calendar
message/delivery-status=colorize
message/rfc822=colorize
#text/html=pandoc -f html -t plain | colorize
text/html=! html
#text/html=! w3m -T text/html -I UTF-8
#text/*=bat -fP --file-name="$AERC_FILENAME"
#application/x-sh=bat -fP -l sh
#image/*=catimg -w $(tput cols) -
#subject,~Git(hub|lab)=lolcat -f
#from,thatguywhodoesnothardwraphismessages=wrap -w 100 | colorize
# This special filter is only used to post-process email headers when
# [viewer].show-headers=true
# By default, headers are piped directly into the pager.
#
.headers=colorize
[openers]
#
# Openers allow you to specify the command to use for the :open and :open-link
# actions on a per-MIME-type basis. The :open-link URL scheme is used to
# determine the MIME type as follows: x-scheme-handler/<scheme>.
#
# {} is expanded as the temporary filename or URL to be opened with proper
# shell quoting. If it is not encountered in the command, the filename/URL will
# be appended to the end of the command. The command will then be executed with
# `sh -c`.
#
# Like [filters], openers support basic shell globbing. The first opener which
# matches the part's MIME type (or URL scheme handler MIME type) will be used,
# so order them from most to least specific.
#
# Examples:
# x-scheme-handler/irc=hexchat
# x-scheme-handler/http*=printf '%s' {} | wl-copy
# text/html=surf -dfgms
# text/plain=gvim {} +125
# message/rfc822=thunderbird
x-scheme-handler/http = firefox
x-scheme-handler/https = firefox
[hooks]
#
# Hooks are triggered whenever the associated event occurs.
#
# Executed when a new email arrives in the selected folder
#mail-received=notify-send "[$AERC_ACCOUNT/$AERC_FOLDER] New mail from $AERC_FROM_NAME" "$AERC_SUBJECT"
#
# Executed when mail is deleted from a folder
#mail-deleted=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
#
# Executed when aerc adds mail to a folder
#mail-added=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
#
# Executed when aerc starts
#aerc-startup=aerc :terminal calcurse && aerc :next-tab
#
# Executed when aerc shuts down.
#aerc-shutdown=
#
# Executed when notmuch tags are modified.
#tag-modified=
#
# Executed when flags are changed on a message.
#flag-changed=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
[templates]
# Templates are used to populate email bodies automatically.
#
# The directories where the templates are stored. It takes a colon-separated
# list of directories. If this is unset or if a template cannot be found, the
# following paths will be used as a fallback in that order:
#
# ${XDG_CONFIG_HOME:-~/.config}/aerc/templates
# ${XDG_DATA_HOME:-~/.local/share}/aerc/templates
# /usr/local/share/aerc/templates
# /usr/share/aerc/templates
#
#template-dirs=
# The default template to be used for new messages.
#
# default: new_message
#new-message=new_message
# The default template to be used for quoted replies.
#
# default: quoted_reply
#quoted-reply=quoted_reply
# The default template to be used for forward as body.
#
# default: forward_as_body
#forwards=forward_as_body

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 *

View File

@@ -0,0 +1,8 @@
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs

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,105 @@
# --- Includes
include theme.conf
# --- Font Settings
font_family family='Liga SFMono Nerd Font' postscript_name=LigaSFMonoNerdFont-Light
bold_font auto
italic_font auto
bold_italic_font auto
font_size 11.0
font_features none
# --- Cursor Settings
cursor_shape beam
cursor_blink_interval 0.5
cursor_stop_blinking_after 0
# --- Miscellaneous Settings
scrollback_lines 5000
# --- Mouse
mouse_hide_wait 1.0
url_style curly
open_url_with default
detect_urls yes
# --- Terminal Bell
enable_audio_bell no
visual_bell_duration 0
window_alert_on_bell yes
bell_on_tab yes
# --- Window Layout
remember_window_size no
initial_window_width 1600
initial_window_height 900
window_border_width 1.0pt
enabled_layouts tall
window_padding_width 12
window_margin_width 2
confirm_os_window_close 0
hide_window_decorations no
# --- Tab Bar
tab_bar_min_tabs 1
tab_bar_style powerline
tab_powerline_style angled
#tab_title_template "$(pwd): $(executing/last executed command) {title}"
inactive_tab_font_style normal
tab_activity_symbol *
# --- Background Opacity
background_opacity 1
# --- Advanced
linux_display_server x11
shell_integration enabled
strip_trailing_spaces smart
editor codium
allow_remote_control yes
listen_on unix:~/.config/kitty/.kitty_socket
strip_trailing_spaces smart
# --- Keybinds
kitty_mod shift+alt
map ctrl+shift+c copy_to_clipboard
map ctrl+shift+v paste_from_clipboard
map ctrl+q quit
map kitty_mod+enter launch --cwd=current --type os-window
map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R
# --- Scrolling
map alt+up scroll_line_up
map alt+down scroll_line_down
map alt+shift+up scroll_page_up
map alt+shift+down scroll_page_down
# --- Window Management
map alt+= new_window
map alt+- close_window
map alt+] next_window
map alt+[ previous_window
map kitty_mod+w move_window_forward
map kitty_mod+s move_window_backward
# --- Tab Management
map kitty_mod+0 goto_tab 10
map kitty_mod+1 goto_tab 1
map kitty_mod+2 goto_tab 2
map kitty_mod+3 goto_tab 3
map kitty_mod+4 goto_tab 4
map kitty_mod+5 goto_tab 5
map kitty_mod+6 goto_tab 6
map kitty_mod+7 goto_tab 7
map kitty_mod+8 goto_tab 8
map kitty_mod+9 goto_tab 9
map kitty_mod+right previous_tab
map kitty_mod+left next_tab
map kitty_mod+t new_tab
map kitty_mod+q close_tab
# --- Layout Management
map ctrl+alt+z next_layout
# --- Testing
tab_title_template {title} [{index}]{fmt.fg.magenta}{fmt.bold}{activity_symbol}{fmt.nobold}

View File

@@ -0,0 +1,43 @@
# --- General Colours
foreground #ebdbb2
background #282828
selection_foreground #282828
selection_background #bdae93
url_color #d3869b
cursor #ebdbb2
cursor_text_color #282828
# --- Tab Colours
active_tab_foreground #3c3836
active_tab_background #d8a657
active_tab_font_style bold
inactive_tab_foreground #fabd2f
inactive_tab_background #3c3836
# --- Window Colours
active_border_color #d8a657
inactive_border_color #665c54
# --- Normal Colours
color0 #665c54
color1 #ea6962
color2 #a9b665
color3 #d8a657
color4 #83b193
color5 #d3869b
color6 #89b482
color7 #fe8019
# --- Bright Colours
color8 #665c54
color9 #fb4934
color10 #d9e675
color11 #fabd2f
color12 #83a598
color13 #b16286
color14 #8ec07c
color15 #ff9400
# Extended Colors
color16 #fc9867
color17 #ff6188

View File

@@ -0,0 +1,17 @@
# see `man dnf.conf` for defaults and possible options
[main]
max_parallel_downloads=10
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=False
skip_if_unavailable=True
keepcache=true
check_config_file_age=False
metadata_expire=1
max_parallel_downloads=10
defaultyes=True
fastestmirror=1
deltarpm=True
#metadata_expire=24h

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

@@ -0,0 +1,23 @@
Host hephaestus
HostName hephaestus.do-bbs.com
IdentitiesOnly yes
StrictHostKeyChecking accept-new
User oc
IdentityFile /home/jamie/.ssh/hephaestus
Port 747
host hephaestus_crypt
HostName hephaestus.do-bbs.com
IdentitiesOnly yes
StrictHostKeyChecking accept-new
User root
IdentityFile /home/jamie/.ssh/hephaestus
Port 2222
Host athena
Port 23
HostName u497749.your-storagebox.de
IdentitiesOnly yes
StrictHostKeyChecking accept-new
User u497749
IdentityFile ~/.ssh/athena

View File

@@ -0,0 +1,286 @@
; note: most of the accent colors are set to the green of that color scheme, feel free to change it to your preferred color
[Spotify]
accent = 1db954
accent-active = 1ed760
accent-inactive = 121212
banner = 1ed760
border-active = 1ed760
border-inactive = 535353
header = 535353
highlight = 1a1a1a
main = 121212
notification = 4687d6
notification-error = e22134
subtext = b3b3b3
text = FFFFFF
[Spicetify]
accent = 00e089
accent-active = 00e089
accent-inactive = 2E2837
banner = 00e089
border-active = 00e089
border-inactive = 483b5b
header = 483b5b
highlight = 483b5b
main = 2E2837
notification = 00e089
notification-error = e22134
subtext = DEDEDE
text = FFFFFF
[CatppuccinMocha]
;https://github.com/catppuccin/catppuccin
accent = cba6f7
accent-active = cba6f7
accent-inactive = 1e1e2e
banner = cba6f7
border-active = cba6f7
border-inactive = 313244
header = 585b70
highlight = cba6f7
main = 1e1e2e
notification = 89b4fa
notification-error = f38ba8
subtext = a6adc8
text = cdd6f4
[CatppuccinMacchiato]
;https://github.com/catppuccin/catppuccin
accent = a6da95
accent-active = a6da95
accent-inactive = 24273a
banner = a6da95
border-active = a6da95
border-inactive = 363a4f
header = 5b6078
highlight = 5b6078
main = 24273a
notification = 8aadf4
notification-error = ed8796
subtext = a5adcb
text = cad3f5
[CatppuccinLatte]
;https://github.com/catppuccin/catppuccin
accent = a6d189
accent-active = a6d189
accent-inactive = 303446
banner = a6d189
border-active = a6d189
border-inactive = 414559
header = 626880
highlight = 626880
main = 303446
notification = 8caaee
notification-error = e78284
subtext = a5adce
text = c6d0f5
[Dracula]
;https://github.com/dracula/dracula-theme
accent = 50fa7b
accent-active = 50fa7b
accent-inactive = 282a36
banner = 50fa7b
border-active = 50fa7b
border-inactive = 44475a
header = 44475a
highlight = 44475a
main = 282a36
notification = 8be9fd
notification-error = ff5555
subtext = 6272a4
text = f8f8f2
[Gruvbox]
;https://github.com/morhetz/gruvbox/
accent = dfb56d
accent-active = e6c484
accent-inactive = 282828
banner = e6c484
border-active = e6c484
border-inactive = 3c3836
header = 665c54
highlight = 7c6f64
main = 282828
notification = 458588
notification-error = cc241d
subtext = ebdbb2
text = fbf1c7
[Kanagawa]
;https://github.com/rebelot/kanagawa.nvim
accent = 76946A
accent-active = 98BB6C
accent-inactive = 1F1F28
banner = 98BB6C
border-active = 98BB6C
border-inactive = 2A2A37
header = 54546D
highlight = 363646
main = 1F1F28
notification = 7E9CD8
notification-error = E82424
subtext = C8C093
text = DCD7BA
[Nord]
;https://github.com/nordtheme/nord
accent = 88c0d0
accent-active = 8fbcbb
accent-inactive = 2e3440
banner = 8fbcbb
border-active = 8fbcbb
border-inactive = 3b4252
header = 4c566a
highlight = 4c566a
main = 2e3440
notification = 5e81ac
notification-error = bf616a
subtext = d8dee9
text = eceff4
[Rigel]
;https://github.com/Rigellute/rigel/
accent = 00cccc
accent-active = 00ffff
accent-inactive = 00384d
banner = 00ffff
border-active = 00cccc
border-inactive = 517f8d
header = 517f8d
highlight = 00384d
main = 002635
notification = 7eb2dd
notification-error = ff5a67
subtext = 77929e
text = b7cff9
[RosePine]
;https://github.com/rose-pine/rose-pine-theme
accent = ebbcba
accent-active = ebbcba
accent-inactive = 1f1d2e
banner = ebbcba
border-active = ebbcba
border-inactive = 26233a
header = 6e6a86
highlight = 403d52
main = 191724
notification = 31748f
notification-error = eb6f92
subtext = 908caa
text = e0def4
[RosePineMoon]
;https://github.com/rose-pine/rose-pine-theme
accent = ea9a97
accent-active = ea9a97
accent-inactive = 2a273f
banner = ea9a97
border-active = ea9a97
border-inactive = 393552
header = 6e6a86
highlight = 44415a
main = 232136
notification = 3e8fb0
notification-error = eb6f92
subtext = 908caa
text = e0def4
[RosePineDawn]
;https://github.com/rose-pine/rose-pine-theme
accent = d7827e
accent-active = d7827e
accent-inactive = fffaf3
banner = d7827e
border-active = d7827e
border-inactive = f2e9e1
header = 9893a5
highlight = dfdad9
main = faf4ed
notification = 286983
notification-error = b4637a
subtext = 797593
text = 575279
[Solarized]
;https://github.com/altercation/solarized
accent = 859900
accent-active = 859900
accent-inactive = 073642
banner = 859900
border-active = 859900
border-inactive = 073642
header = 586e75
highlight = 073642
main = 002b36
notification = 268bd2
notification-error = dc322f
subtext = 586e75
text = 839496
[TokyoNight]
;https://github.com/enkia/tokyo-night-vscode-theme
accent = 9ece6a
accent-active = 9ece6a
accent-inactive = 1a1b26
banner = 9ece6a
border-active = 9ece6a
border-inactive = 24283b
header = 565f89
highlight = 24283b
main = 1a1b26
notification = 7aa2f7
notification-error = f7768e
subtext = 565f89
text = a9b1d6
[TokyoNightStorm]
;https://github.com/enkia/tokyo-night-vscode-theme
accent = 9ece6a
accent-active = 9ece6a
accent-inactive = 24283b
banner = 9ece6a
border-active = 9ece6a
border-inactive = 414868
header = 9aa5ce
highlight = 414868
main = 24283b
notification = 7aa2f7
notification-error = f7768e
subtext = 9aa5ce
text = c0caf5
[ForestGreen]
accent = 939393
accent-active = 939393
accent-inactive = 3e3e29
banner = 939393
border-active = 939393
border-inactive = 515235
header = 656641
highlight = 656641
main = 3e3e29
notification = 8c8e59
notification-error = 787a4d
subtext = 838383
text = a3a3a3
[EverforestDarkMedium]
;https://github.com/sainnhe/everforest
accent = a7c080
accent-active = a7c080
accent-inactive = 2d353b
banner = a7c080
border-active = a7c080
border-inactive = 343f44
header = 475258
highlight = 425047
main = 2d353b
notification = 83c092
notification-error = e67e80
subtext = 859289
text = D3c6aa

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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