Sweep every machine for config worth tracking

Reactive capture missed wallust entirely, so this is a systematic pass over
~/.config on all four machines: every entry that is not already a symlink,
judged on whether it is hand-authored config or app-generated state.

Shared and identical everywhere -> common/: lazygit, ncmpcpp, neofetch,
matplotlib. Everything else differs per machine and goes in
hosts/<host>/config/: gtk-2.0/3.0/4.0, mimeapps.list, user-dirs.dirs,
mpv, swaync, swayimg, bob, pavucontrol.ini, zoom; plus beets, bottom,
glow and mpd on system76; fastfetch, gh, uv, traggo, tiling-assistant and
xdg-desktop-portal on the work laptop; inbox-tidy and llmfit on mainframe.

Deliberately excluded, all verified to hold live credentials: the work
laptop's Claude OAuth tokens (~/.config/anthropic/credentials), the NAS
restic repo password and hetzner.env, subsonic passwords in subtui, stmp
and termsonic, mopidy, supersonic, the Proton bridge env and the LiteLLM
virtual keys. The ignore list now names those shapes directly — a bare
`password` file would not have been caught before.

Also excluded as generated state or too large to be meaningful: GIMP,
kicad, BambuStudio, OrcaSlicer, calibre, LightBurn, obs-studio, feishin,
libreoffice, VirtualBox, FortiClient; and mainframe's dead X11-era
leftovers (i3, openbox, lxpanel, lxsession, pcmanfm).
This commit is contained in:
connor committed 2026-09-14 14:54:17 -04:00
1 parent 45e76f375f
commit 29bcf615e6
56 files changed
+5188 -1

No files matched your search

+6 -1
View File
@@ -28,7 +28,12 @@
**/hcache/
**/node_modules/
# Never, under any circumstances.
# Never, under any circumstances. These are shapes that have actually held
# live credentials on these machines: Claude OAuth tokens, restic repo keys,
# subsonic passwords, the Proton bridge and LiteLLM virtual keys.
**/credentials
**/credentials/**
**/.credentials.json
**/password
**/*.env
.secrets.zsh
View File
Whitespace-only changes.
View File
Whitespace-only changes.
+864
View File
@@ -0,0 +1,864 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
print_info() {
info title
info underline
info "OS" distro
info "Host" model
info "Kernel" kernel
info "Uptime" uptime
info "Packages" packages
info "Shell" shell
info "Resolution" resolution
info "DE" de
info "WM" wm
info "WM Theme" wm_theme
info "Theme" theme
info "Icons" icons
info "Terminal" term
info "Terminal Font" term_font
info "CPU" cpu
info "GPU" gpu
info "Memory" memory
# info "GPU Driver" gpu_driver # Linux/macOS only
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
# info "Font" font
# info "Song" song
# [[ "$player" ]] && prin "Music Player" "$player"
# info "Local IP" local_ip
# info "Public IP" public_ip
# info "Users" users
# info "Locale" locale # This only works on glibc systems.
info cols
}
# Title
# Hide/Show Fully qualified domain name.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --title_fqdn
title_fqdn="off"
# Kernel
# Shorten the output of the kernel function.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --kernel_shorthand
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
#
# Example:
# on: '4.8.9-1-ARCH'
# off: 'Linux 4.8.9-1-ARCH'
kernel_shorthand="on"
# Distro
# Shorten the output of the distro function
#
# Default: 'off'
# Values: 'on', 'tiny', 'off'
# Flag: --distro_shorthand
# Supports: Everything except Windows and Haiku
distro_shorthand="off"
# Show/Hide OS Architecture.
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --os_arch
#
# Example:
# on: 'Arch Linux x86_64'
# off: 'Arch Linux'
os_arch="on"
# Uptime
# Shorten the output of the uptime function
#
# Default: 'on'
# Values: 'on', 'tiny', 'off'
# Flag: --uptime_shorthand
#
# Example:
# on: '2 days, 10 hours, 3 mins'
# tiny: '2d 10h 3m'
# off: '2 days, 10 hours, 3 minutes'
uptime_shorthand="on"
# Memory
# Show memory pecentage in output.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --memory_percent
#
# Example:
# on: '1801MiB / 7881MiB (22%)'
# off: '1801MiB / 7881MiB'
memory_percent="off"
# Change memory output unit.
#
# Default: 'mib'
# Values: 'kib', 'mib', 'gib'
# Flag: --memory_unit
#
# Example:
# kib '1020928KiB / 7117824KiB'
# mib '1042MiB / 6951MiB'
# gib: ' 0.98GiB / 6.79GiB'
memory_unit="mib"
# Packages
# Show/Hide Package Manager names.
#
# Default: 'tiny'
# Values: 'on', 'tiny' 'off'
# Flag: --package_managers
#
# Example:
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
# tiny: '908 (pacman, flatpak, snap)'
# off: '908'
package_managers="on"
# Shell
# Show the path to $SHELL
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --shell_path
#
# Example:
# on: '/bin/bash'
# off: 'bash'
shell_path="off"
# Show $SHELL version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --shell_version
#
# Example:
# on: 'bash 4.4.5'
# off: 'bash'
shell_version="on"
# CPU
# CPU speed type
#
# Default: 'bios_limit'
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
# Flag: --speed_type
# Supports: Linux with 'cpufreq'
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
speed_type="bios_limit"
# CPU speed shorthand
#
# Default: 'off'
# Values: 'on', 'off'.
# Flag: --speed_shorthand
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
#
# Example:
# on: 'i7-6500U (4) @ 3.1GHz'
# off: 'i7-6500U (4) @ 3.100GHz'
speed_shorthand="off"
# Enable/Disable CPU brand in output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_brand
#
# Example:
# on: 'Intel i7-6500U'
# off: 'i7-6500U (4)'
cpu_brand="on"
# CPU Speed
# Hide/Show CPU speed.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_speed
#
# Example:
# on: 'Intel i7-6500U (4) @ 3.1GHz'
# off: 'Intel i7-6500U (4)'
cpu_speed="on"
# CPU Cores
# Display CPU cores in output
#
# Default: 'logical'
# Values: 'logical', 'physical', 'off'
# Flag: --cpu_cores
# Support: 'physical' doesn't work on BSD.
#
# Example:
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
# off: 'Intel i7-6500U @ 3.1GHz'
cpu_cores="logical"
# CPU Temperature
# Hide/Show CPU temperature.
# Note the temperature is added to the regular CPU function.
#
# Default: 'off'
# Values: 'C', 'F', 'off'
# Flag: --cpu_temp
# Supports: Linux, BSD
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
# coretemp kernel module. This only supports newer Intel processors.
#
# Example:
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
# off: 'Intel i7-6500U (4) @ 3.1GHz'
cpu_temp="off"
# GPU
# Enable/Disable GPU Brand
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gpu_brand
#
# Example:
# on: 'AMD HD 7950'
# off: 'HD 7950'
gpu_brand="on"
# Which GPU to display
#
# Default: 'all'
# Values: 'all', 'dedicated', 'integrated'
# Flag: --gpu_type
# Supports: Linux
#
# Example:
# all:
# GPU1: AMD HD 7950
# GPU2: Intel Integrated Graphics
#
# dedicated:
# GPU1: AMD HD 7950
#
# integrated:
# GPU1: Intel Integrated Graphics
gpu_type="all"
# Resolution
# Display refresh rate next to each monitor
# Default: 'off'
# Values: 'on', 'off'
# Flag: --refresh_rate
# Supports: Doesn't work on Windows.
#
# Example:
# on: '1920x1080 @ 60Hz'
# off: '1920x1080'
refresh_rate="off"
# Gtk Theme / Icons / Font
# Shorten output of GTK Theme / Icons / Font
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --gtk_shorthand
#
# Example:
# on: 'Numix, Adwaita'
# off: 'Numix [GTK2], Adwaita [GTK3]'
gtk_shorthand="off"
# Enable/Disable gtk2 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk2
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Adwaita [GTK3]'
gtk2="on"
# Enable/Disable gtk3 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk3
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Numix [GTK2]'
gtk3="on"
# IP Address
# Website to ping for the public IP
#
# Default: 'http://ident.me'
# Values: 'url'
# Flag: --ip_host
public_ip_host="http://ident.me"
# Public IP timeout.
#
# Default: '2'
# Values: 'int'
# Flag: --ip_timeout
public_ip_timeout=2
# Desktop Environment
# Show Desktop Environment version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --de_version
de_version="on"
# Disk
# Which disks to display.
# The values can be any /dev/sdXX, mount point or directory.
# NOTE: By default we only show the disk info for '/'.
#
# Default: '/'
# Values: '/', '/dev/sdXX', '/path/to/drive'.
# Flag: --disk_show
#
# Example:
# disk_show=('/' '/dev/sdb1'):
# 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
#
# disk_show=('/'):
# 'Disk (/): 74G / 118G (66%)'
#
disk_show=('/')
# Disk subtitle.
# What to append to the Disk subtitle.
#
# Default: 'mount'
# Values: 'mount', 'name', 'dir', 'none'
# Flag: --disk_subtitle
#
# Example:
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
#
# mount: 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
#
# dir: 'Disk (/): 74G / 118G (66%)'
# 'Disk (Local Disk): 74G / 118G (66%)'
# 'Disk (Videos): 74G / 118G (66%)'
#
# none: 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
disk_subtitle="mount"
# Disk percent.
# Show/Hide disk percent.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --disk_percent
#
# Example:
# on: 'Disk (/): 74G / 118G (66%)'
# off: 'Disk (/): 74G / 118G'
disk_percent="on"
# Song
# Manually specify a music player.
#
# Default: 'auto'
# Values: 'auto', 'player-name'
# Flag: --music_player
#
# Available values for 'player-name':
#
# amarok
# audacious
# banshee
# bluemindo
# clementine
# cmus
# deadbeef
# deepin-music
# dragon
# elisa
# exaile
# gnome-music
# gmusicbrowser
# gogglesmm
# guayadeque
# io.elementary.music
# iTunes
# juk
# lollypop
# mocp
# mopidy
# mpd
# muine
# netease-cloud-music
# olivia
# playerctl
# pogo
# pragha
# qmmp
# quodlibet
# rhythmbox
# sayonara
# smplayer
# spotify
# strawberry
# tauonmb
# tomahawk
# vlc
# xmms2d
# xnoise
# yarock
music_player="auto"
# Format to display song information.
#
# Default: '%artist% - %album% - %title%'
# Values: '%artist%', '%album%', '%title%'
# Flag: --song_format
#
# Example:
# default: 'Song: Jet - Get Born - Sgt Major'
song_format="%artist% - %album% - %title%"
# Print the Artist, Album and Title on separate lines
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --song_shorthand
#
# Example:
# on: 'Artist: The Fratellis'
# 'Album: Costello Music'
# 'Song: Chelsea Dagger'
#
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
song_shorthand="off"
# 'mpc' arguments (specify a host, password etc).
#
# Default: ''
# Example: mpc_args=(-h HOST -P PASSWORD)
mpc_args=()
# Text Colors
# Text Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --colors
#
# Each number represents a different part of the text in
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
#
# Example:
# colors=(distro) - Text is colored based on Distro colors.
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
colors=(distro)
# Text Options
# Toggle bold text
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bold
bold="on"
# Enable/Disable Underline
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --underline
underline_enabled="on"
# Underline character
#
# Default: '-'
# Values: 'string'
# Flag: --underline_char
underline_char="-"
# Info Separator
# Replace the default separator with the specified string.
#
# Default: ':'
# Flag: --separator
#
# Example:
# separator="->": 'Shell-> bash'
# separator=" =": 'WM = dwm'
separator=":"
# Color Blocks
# Color block range
# The range of colors to print.
#
# Default: '0', '15'
# Values: 'num'
# Flag: --block_range
#
# Example:
#
# Display colors 0-7 in the blocks. (8 colors)
# neofetch --block_range 0 7
#
# Display colors 0-15 in the blocks. (16 colors)
# neofetch --block_range 0 15
block_range=(0 15)
# Toggle color blocks
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --color_blocks
color_blocks="on"
# Color block width in spaces
#
# Default: '3'
# Values: 'num'
# Flag: --block_width
block_width=3
# Color block height in lines
#
# Default: '1'
# Values: 'num'
# Flag: --block_height
block_height=1
# Color Alignment
#
# Default: 'auto'
# Values: 'auto', 'num'
# Flag: --col_offset
#
# Number specifies how far from the left side of the terminal (in spaces) to
# begin printing the columns, in case you want to e.g. center them under your
# text.
# Example:
# col_offset="auto" - Default behavior of neofetch
# col_offset=7 - Leave 7 spaces then print the colors
col_offset="auto"
# Progress Bars
# Bar characters
#
# Default: '-', '='
# Values: 'string', 'string'
# Flag: --bar_char
#
# Example:
# neofetch --bar_char 'elapsed' 'total'
# neofetch --bar_char '-' '='
bar_char_elapsed="-"
bar_char_total="="
# Toggle Bar border
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bar_border
bar_border="on"
# Progress bar length in spaces
# Number of chars long to make the progress bars.
#
# Default: '15'
# Values: 'num'
# Flag: --bar_length
bar_length=15
# Progress bar colors
# When set to distro, uses your distro's logo colors.
#
# Default: 'distro', 'distro'
# Values: 'distro', 'num'
# Flag: --bar_colors
#
# Example:
# neofetch --bar_colors 3 4
# neofetch --bar_colors distro 5
bar_color_elapsed="distro"
bar_color_total="distro"
# Info display
# Display a bar with the info.
#
# Default: 'off'
# Values: 'bar', 'infobar', 'barinfo', 'off'
# Flags: --cpu_display
# --memory_display
# --battery_display
# --disk_display
#
# Example:
# bar: '[---=======]'
# infobar: 'info [---=======]'
# barinfo: '[---=======] info'
# off: 'info'
cpu_display="off"
memory_display="off"
battery_display="off"
disk_display="off"
# Backend Settings
# Image backend.
#
# Default: 'ascii'
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
# Flag: --backend
image_backend="ascii"
# Image Source
#
# Which image or ascii file to display.
#
# Default: 'auto'
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
# Flag: --source
#
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
# In ascii mode, distro ascii art will be used and in an image mode, your
# wallpaper will be used.
image_source="auto"
# Ascii Options
# Ascii distro
# Which distro's ascii art to display.
#
# Default: 'auto'
# Values: 'auto', 'distro_name'
# Flag: --ascii_distro
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
# and IRIX have ascii logos
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
# Use '{distro name}_old' to use the old logos.
# NOTE: Ubuntu has flavor variants.
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
# postmarketOS, and Void have a smaller logo variant.
# Use '{distro name}_small' to use the small variants.
ascii_distro="auto"
# Ascii Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --ascii_colors
#
# Example:
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
ascii_colors=(distro)
# Bold ascii logo
# Whether or not to bold the ascii logo.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --ascii_bold
ascii_bold="on"
# Image Options
# Image loop
# Setting this to on will make neofetch redraw the image constantly until
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --loop
image_loop="off"
# Thumbnail directory
#
# Default: '~/.cache/thumbnails/neofetch'
# Values: 'dir'
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
# Crop mode
#
# Default: 'normal'
# Values: 'normal', 'fit', 'fill'
# Flag: --crop_mode
#
# See this wiki page to learn about the fit and fill options.
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
crop_mode="normal"
# Crop offset
# Note: Only affects 'normal' crop mode.
#
# Default: 'center'
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
# 'east', 'southwest', 'south', 'southeast'
# Flag: --crop_offset
crop_offset="center"
# Image size
# The image is half the terminal width by default.
#
# Default: 'auto'
# Values: 'auto', '00px', '00%', 'none'
# Flags: --image_size
# --size
image_size="auto"
# Gap between image and text
#
# Default: '3'
# Values: 'num', '-num'
# Flag: --gap
gap=3
# Image offsets
# Only works with the w3m backend.
#
# Default: '0'
# Values: 'px'
# Flags: --xoffset
# --yoffset
yoffset=0
xoffset=0
# Image background color
# Only works with the w3m backend.
#
# Default: ''
# Values: 'color', 'blue'
# Flag: --bg_color
background_color=
# Misc Options
# Stdout mode
# Turn off all colors and disables image backend (ASCII/Image).
# Useful for piping into another command.
# Default: 'off'
# Values: 'on', 'off'
stdout="off"
+3
View File
@@ -0,0 +1,3 @@
{
"add_neovim_binary_to_path": true
}
@@ -0,0 +1,99 @@
# inbox_tidy -- archive stale unread mail out of the Proton inbox.
#
# Nothing here deletes anything. The only operation is an IMAP MOVE from INBOX
# to Archive, recorded in ~/.local/share/inbox-tidy/archived.jsonl so any run
# can be reversed with `inbox_tidy --undo <run-id>`.
# ARMED? Left false until `--check` has been compared against the Proton web
# UI and `--dry-run` has been read. --check and --dry-run work regardless.
enabled = true
# Unread for longer than this many days is a candidate.
age_days = 3
# Most that will be archived in one run. A backlog drains over several days
# rather than in one sweep, which also caps how much a bad guard list can move
# before you notice. `--max` overrides.
max_per_run = 250
# ---------------------------------------------------------------------------
# Interlocks. Both abort the run rather than archiving; both exist because of
# something actually observed, not as theoretical caution.
# ---------------------------------------------------------------------------
# Bridge reported 1249 unread in INBOX while the Proton UI showed 646. Resolved
# 2026-09-09: NOT a flag problem. The initial sync finished at 100% and the
# count did not move, and the messages were spot-checked in the web UI as
# genuinely unread and genuinely in the Inbox. Threading was also ruled out
# (1249 messages -> 1247 RFC thread roots, 1026 distinct subjects; no grouping
# scheme reaches 648). Most likely Proton's inbox categories showing a subset
# in the badge. Unresolved, but no longer load-bearing.
#
# Backlog drained 2026-09-09 (1180 archived over 5 runs; INBOX went to 14
# messages / 0 unread). Lowered back from the temporary 1400 now that steady
# state is one day's mail -- at 1400 this interlock could never fire, and an
# interlock that cannot fire is not one. 200 is roughly a week of arrivals, so
# it tolerates a holiday without tripping while still catching a runaway.
expected_unread_max = 200
# The correspondent allowlist is derived from the Sent mailbox. If Sent is
# nearly empty (as it was mid-sync, at 11 messages) that guard silently does
# nothing. Refuse to run rather than sweep up mail from people you write to.
min_correspondents = 25
# ---------------------------------------------------------------------------
# Guards. Evaluated in this order, before the archive decision, so anything
# uncertain resolves to leaving the message where it is.
#
# 1. \Flagged or \Answered (no config; always protected)
# 2. protect_senders
# 3. anyone in the Sent-derived correspondent list
# 4. protect_subjects
# 5. no Message-ID (could not be undone, so is not moved)
# ---------------------------------------------------------------------------
# An entry containing @ matches that address exactly. An entry without one
# matches the domain AND its subdomains, so "chase.com" also covers
# "fraudalert.chase.com" -- which is the case that actually matters.
protect_senders = [
# Deliberately empty to start. Add whatever gets archived that you wanted
# kept; the log names the sender for every move, so this list can be grown
# from evidence rather than guessed at up front.
]
# Case-insensitive regexes tested against the Subject. These are the mails
# where not noticing has a real cost, so they are held back across every
# sender rather than relying on protect_senders being complete.
protect_subjects = [
'fraud',
'security alert',
'suspicious',
'unauthori[sz]ed',
'action (needed|required)',
'verify your',
'past due',
'overdue',
'final notice',
'court|subpoena|jury',
'\bIRS\b',
]
[ntfy]
url = "https://ntfy.rcjohnstone.com"
# Its own topic, NOT rent-utilities -- that one is a monthly message worth
# reading, and burying it under a daily archive summary would train you to
# swipe both away. `ntfy access bot inbox-tidy rw` was granted so delivery can
# be verified by polling, not just inferred from a 200 (the `bot` user is
# write-only on `*`, so polling with its token otherwise returns an empty list
# even when messages are sitting there).
topic = "inbox-tidy"
[imap]
host = "127.0.0.1"
port = 1143
starttls = true
user = "c@rcjohnstone.com"
password_env = "PROTON_BRIDGE_PASSWORD"
sent_mailbox = "Sent"
# Cap on how much of Sent is read to build the allowlist.
sent_scan_limit = 3000
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
Gruvbox
+3
View File
@@ -0,0 +1,3 @@
[Default Applications]
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
+15
View File
@@ -0,0 +1,15 @@
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/"
XDG_DOWNLOAD_DIR="$HOME/"
XDG_TEMPLATES_DIR="$HOME/"
XDG_PUBLICSHARE_DIR="$HOME/"
XDG_DOCUMENTS_DIR="$HOME/"
XDG_MUSIC_DIR="$HOME/"
XDG_PICTURES_DIR="$HOME/"
XDG_VIDEOS_DIR="$HOME/"
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
@@ -0,0 +1,75 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "~/.config/fastfetch/ubuntu.png",
"type": "kitty-direct",
"height": 10,
"width": 20,
"padding": {
"top": 1
}
},
"display": {
"separator": " -> "
},
"modules": [
"break",
{
"type": "title",
"keyWidth": 10,
"format": " {6}{7}{8}"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "kernel",
"key": " ",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " ",
"keyColor": "blue"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
},
{
"type": "uptime",
"key": "󰔛 ",
"keyColor": "green"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break",
]
}
@@ -0,0 +1,73 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"height": 5,
"width": 10,
"padding": {
"top": 1
}
},
"display": {
"separator": " -> "
},
"modules": [
"break",
{
"type": "title",
"keyWidth": 10,
"format": " {6}{7}{8}"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "kernel",
"key": " ",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " ",
"keyColor": "blue"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
},
{
"type": "uptime",
"key": "󰔛 ",
"keyColor": "green"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break",
]
}
@@ -0,0 +1,112 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
//"source": "~/.config/fastfetch/nixos.png",
//"type": "kitty-direct",
"height": 15,
"width": 30,
"padding": {
"top": 1
}
},
"display": {
"separator": " ➜ "
},
"modules": [
"break",
{
"type": "os",
"key": " DISTRO",
"keyColor": "31",
},
{
"type": "kernel",
"key": " ├  ",
"keyColor": "31",
},
{
"type": "packages",
"key": " ├ 󰏖 ",
"keyColor": "31",
},
{
"type": "shell",
"key": " └  ",
"keyColor": "31",
},
"break",
{
"type": "wm",
"key": " DE/WM",
"keyColor": "32",
},
{
"type": "wmtheme",
"key": " ├ 󰉼 ",
"keyColor": "32",
},
{
"type": "icons",
"key": " ├ 󰀻 ",
"keyColor": "32",
},
{
"type": "cursor",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminal",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminalfont",
"key": " └  ",
"keyColor": "32",
},
"break",
{
"type": "host",
"format": "{2}",
"key": "󰌢 SYSTEM",
"keyColor": "33",
},
{
"type": "cpu",
"format": "{1} ({3}) @ {7} GHz",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "gpu",
"format": "{2}",
"key": " ├ 󰢮 ",
"keyColor": "33",
},
{
"type": "memory",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "swap",
"key": " ├ 󰓡 ",
"keyColor": "33",
},
{
"type": "disk",
"key": " ├ 󰋊 ",
"keyColor": "33",
},
{
"type": "display",
"key": " └  ",
"compactType": "original-with-refresh-rate",
"keyColor": "33",
},
"break",
"break",
]
}
@@ -0,0 +1,128 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 1
}
},
"display": {
"separator": " 󰑃 "
},
"modules": [
"break",
{
"type": "os",
"key": " DISTRO",
"keyColor": "yellow"
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "│ └",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " DE/WM",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue"
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminal",
"key": "│ └",
"keyColor": "blue"
},
{
"type": "host",
"key": "󰌢 SYSTEM",
"keyColor": "green"
},
{
"type": "cpu",
"key": "│ ├󰻠",
"keyColor": "green"
},
{
"type": "gpu",
"key": "│ ├󰻑",
"format": "{2}",
"keyColor": "green"
},
{
"type": "display",
"key": "│ ├󰍹",
"keyColor": "green",
"compactType": "original-with-refresh-rate"
},
{
"type": "memory",
"key": "│ ├󰾆",
"keyColor": "green"
},
{
"type": "swap",
"key": "│ ├󰓡",
"keyColor": "green"
},
{
"type": "uptime",
"key": "│ ├󰅐",
"keyColor": "green"
},
{
"type": "display",
"key": "│ └󰍹",
"keyColor": "green"
},
{
"type": "sound",
"key": " AUDIO",
"format": "{2}",
"keyColor": "magenta"
},
{
"type": "player",
"key": "│ ├󰥠",
"keyColor": "magenta"
},
{
"type": "media",
"key": "│ └󰝚",
"keyColor": "magenta"
},
{
"type": "custom",
"format": "\u001b[90m \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[38m \u001b[39m \u001b[39m  \u001b[38m \u001b[37m \u001b[36m \u001b[35m \u001b[34m \u001b[33m \u001b[32m \u001b[31m \u001b[90m "
},
"break",
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

+17
View File
@@ -0,0 +1,17 @@
# The current version of the config schema
version: 1
# What protocol to use when performing git operations. Supported values: ssh, https
git_protocol: https
# What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment.
editor:
# When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled
prompt: enabled
# A pager program to send command output to, e.g. "less". If blank, will refer to environment. Set the value to "cat" to disable the pager.
pager:
# Aliases allow you to create nicknames for gh commands
aliases:
co: pr checkout
# The path to a unix socket through which send HTTP connections. If blank, HTTP traffic will be handled by net/http.DefaultTransport.
http_unix_socket:
# What web browser gh should use when opening URLs. If blank, will refer to environment.
browser:
+5
View File
@@ -0,0 +1,5 @@
github.com:
git_protocol: ssh
users:
connor-johnstone:
user: connor-johnstone
@@ -0,0 +1,11 @@
[Filechooser Settings]
LocationMode=path-bar
ShowHidden=false
ShowSizeColumn=true
GeometryX=31
GeometryY=0
GeometryWidth=948
GeometryHeight=647
SortColumn=name
SortOrder=ascending
StartupMode=recent
+6
View File
@@ -0,0 +1,6 @@
file:///tmp
file:///home/connorjohnstone/Documents
file:///home/connorjohnstone/Music
file:///home/connorjohnstone/Pictures
file:///home/connorjohnstone/Videos
file:///home/connorjohnstone/Downloads
+6
View File
@@ -0,0 +1,6 @@
[Default Applications]
x-scheme-handler/sc-1a5d6cc5d5f07e3e=/home/connorjohnstone/.local/share/applications/connectwisecontrol-1a5d6cc5d5f07e3e.desktop
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
[Added Associations]
application/pdf=org.pwmt.zathura-pdf-poppler.desktop;
+8
View File
@@ -0,0 +1,8 @@
[window]
width=1896
height=1121
sinkInputType=1
sourceOutputType=1
sinkType=0
sourceType=1
showVolumeMeters=1
+149
View File
@@ -0,0 +1,149 @@
-- General config
swayimg.set_mode("viewer") -- mode at startup
swayimg.enable_antialiasing(true) -- anti-aliasing
swayimg.enable_decoration(true) -- window title/buttons/borders
swayimg.enable_overlay(false) -- window overlay mode
swayimg.enable_exif_orientation(true) -- image orientation by EXIF
swayimg.set_dnd_button("MouseRight") -- drag-and-drop mouse button
-- Image list configuration
swayimg.imagelist.set_order("numeric") -- list order
swayimg.imagelist.enable_reverse(false) -- reverse order
swayimg.imagelist.enable_recursive(false) -- recursive directory reading
swayimg.imagelist.enable_adjacent(false) -- add adjacent files from same dir
swayimg.imagelist.enable_fsmon(true) -- enable file system monitoring
-- Text overlay configuration
swayimg.text.set_font("FiraCode Nerd Font") -- font name
swayimg.text.set_size(24) -- font size in pixels
swayimg.text.set_spacing(0) -- line spacing
swayimg.text.set_padding(10) -- padding from window edge
swayimg.text.set_foreground(0xffcccccc) -- foreground text color
swayimg.text.set_background(0x00000000) -- text background color
swayimg.text.set_shadow(0x0d000000) -- text shadow color
swayimg.text.set_timeout(5) -- layer hide timeout
swayimg.text.set_status_timeout(3) -- status message hide timeout
-- Image viewer mode
swayimg.viewer.set_default_scale("optimal") -- default image scale
swayimg.viewer.set_default_position("center") -- default image position
swayimg.viewer.set_drag_button("MouseLeft") -- mouse button to drag image
swayimg.viewer.set_window_background(0xff000000) -- window background color
swayimg.viewer.set_image_chessboard(20, 0xff333333, 0xff4c4c4c) -- chessboard
swayimg.viewer.enable_centering(true) -- enable automatic centering
swayimg.viewer.enable_loop(true) -- enable image list loop mode
swayimg.viewer.limit_preload(1) -- number of images to preload
swayimg.viewer.limit_history(1) -- number of the history cache
swayimg.viewer.set_mark_color(0xff808080) -- mark icon color
swayimg.viewer.set_pinch_factor(1.0) -- pinch gesture factor
swayimg.viewer.set_text("topleft", { -- top left text block scheme
"File: {name}",
"Format: {format}",
"File size: {sizehr}",
"File time: {time}",
"EXIF date: {meta.Exif.Photo.DateTimeOriginal}",
"EXIF camera: {meta.Exif.Image.Model}"
})
swayimg.viewer.set_text("topright", { -- top right text block scheme
"Image: {list.index} of {list.total}",
"Frame: {frame.index} of {frame.total}",
"Size: {frame.width}x{frame.height}"
})
swayimg.viewer.set_text("bottomleft", { -- bottom left text block scheme
"Scale: {scale}"
})
-- Key and mouse bindings in viewer mode (example only, not all):
-- bind Escape key for exit
swayimg.viewer.on_key("Escape", function()
swayimg.exit()
end)
-- bind the left arrow key to move the image to the left by 1/10 of the application window size
swayimg.viewer.on_key("Left", function()
local wnd = swayimg.get_window_size()
local pos = swayimg.viewer.get_position()
swayimg.viewer.set_abs_position(math.floor(pos.x + wnd.width / 10), pos.y);
end)
-- bind mouse vertical scroll button with pressed Ctrl to zoom in the image at mouse pointer coordinates
swayimg.viewer.on_mouse("Ctrl-ScrollUp", function()
local pos = swayimg.get_mouse_pos()
local scale = swayimg.viewer.get_scale()
scale = scale + scale / 10
swayimg.viewer.set_abs_scale(scale, pos.x, pos.y);
end)
-- Slide show mode, same config as for viewer mode with the following defaults:
swayimg.slideshow.set_timeout(5) -- timeout to switch image
swayimg.slideshow.set_default_scale("fit") -- default image scale
swayimg.slideshow.set_window_background("auto") -- window background mode
swayimg.slideshow.limit_history(0) -- number of the history cache
swayimg.slideshow.set_text("topleft", { "{name}" }) -- top left text block scheme
-- Gallery mode
swayimg.gallery.set_aspect("fill") -- thumbnail aspect ratio
swayimg.gallery.set_thumb_size(200) -- thumbnail size in pixels
swayimg.gallery.set_padding_size(5) -- padding between thumbnails
swayimg.gallery.set_border_size(5) -- border size for selected thumbnail
swayimg.gallery.set_border_color(0xffaaaaaa) -- border color for selected thumbnail
swayimg.gallery.set_selected_scale(1.15) -- scale for selected thumbnail
swayimg.gallery.set_selected_color(0xff404040) -- background color for selected thumbnail
swayimg.gallery.set_unselected_color(0xff202020) -- background color for unselected thumbnail
swayimg.gallery.set_window_color(0xff000000) -- window background color
swayimg.gallery.set_pinch_factor(100.0) -- pinch gesture factor
swayimg.gallery.enable_hover(true) -- enable mouse following
swayimg.gallery.limit_cache(100) -- number of thumbnails stored in memory
swayimg.gallery.enable_embedded_thumb(true) -- use embedded thumbnails
swayimg.gallery.enable_preload(false) -- preloading invisible thumbnails
swayimg.gallery.enable_pstore(false) -- enable persistent storage for thumbnails
swayimg.gallery.set_text("topleft", { -- top left text block scheme
"File: {name}"
})
swayimg.gallery.set_text("topright", { -- top right text block scheme
"{list.index} of {list.total}"
})
-- Key and mouse bindings in gallery mode (example only, not all):
-- bind Enter key to open image in viewer
swayimg.gallery.on_key("Return", function()
swayimg.set_mode("viewer")
end)
-- bind the left arrow key to select thumbnail on the left side
swayimg.gallery.on_key("Left", function()
swayimg.gallery.switch_image("left")
end)
--
-- Other configuration examples
--
-- force set scale mode on window resize (useful for tiling compositors)
swayimg.on_window_resize(function()
swayimg.viewer.set_fix_scale("optimal")
end)
-- bind the Delete key in slide show mode to delete the current file and display a status message
swayimg.slideshow.on_key("Delete", function()
local image = swayimg.slideshow.get_image()
os.remove(image.path)
swayimg.text.set_status("File "..image.path.." removed")
end)
-- set a custom window title in gallery mode
swayimg.gallery.on_image_change(function()
local image = swayimg.gallery.get_image()
swayimg.set_title("Gallery: "..image.path)
end)
-- print paths to all marked files by pressing Ctrl-p in gallery mode
swayimg.gallery.on_key("Ctrl-p", function()
local entries = swayimg.imagelist.get()
for _, entry in ipairs(entries) do
if entry.mark then
print(entry.path)
end
end
end)
+148
View File
@@ -0,0 +1,148 @@
-- General config
swayimg.set_mode("viewer") -- mode at startup
swayimg.enable_antialiasing(true) -- anti-aliasing
swayimg.enable_decoration(true) -- window title/buttons/borders
swayimg.enable_overlay(false) -- window overlay mode
swayimg.enable_exif_orientation(true) -- image orientation by EXIF
swayimg.set_dnd_button("MouseRight") -- drag-and-drop mouse button
-- Image list configuration
swayimg.imagelist.set_order("numeric") -- list order
swayimg.imagelist.enable_reverse(false) -- reverse order
swayimg.imagelist.enable_recursive(false) -- recursive directory reading
swayimg.imagelist.enable_adjacent(false) -- add adjacent files from same dir
swayimg.imagelist.enable_fsmon(true) -- enable file system monitoring
-- Text overlay configuration
swayimg.text.set_font("FiraCode Nerd Font") -- font name
swayimg.text.set_size(12) -- font size in pixels
swayimg.text.set_spacing(0) -- line spacing
swayimg.text.set_padding(10) -- padding from window edge
swayimg.text.set_foreground(0xffcccccc) -- foreground text color
swayimg.text.set_background(0x00000000) -- text background color
swayimg.text.set_shadow(0x0d000000) -- text shadow color
swayimg.text.set_timeout(5) -- layer hide timeout
swayimg.text.set_status_timeout(3) -- status message hide timeout
-- Image viewer mode
swayimg.viewer.set_default_scale("optimal") -- default image scale
swayimg.viewer.set_default_position("center") -- default image position
swayimg.viewer.set_drag_button("MouseLeft") -- mouse button to drag image
swayimg.viewer.set_window_background(0xff000000) -- window background color
swayimg.viewer.set_image_chessboard(20, 0xff333333, 0xff4c4c4c) -- chessboard
swayimg.viewer.enable_centering(true) -- enable automatic centering
swayimg.viewer.enable_loop(true) -- enable image list loop mode
swayimg.viewer.limit_preload(1) -- number of images to preload
swayimg.viewer.limit_history(1) -- number of the history cache
swayimg.viewer.set_mark_color(0xff808080) -- mark icon color
swayimg.viewer.set_pinch_factor(1.0) -- pinch gesture factor
swayimg.viewer.set_text("topleft", { -- top left text block scheme
"File: {name}",
"Format: {format}",
"File size: {sizehr}",
"File time: {time}",
"EXIF date: {meta.Exif.Photo.DateTimeOriginal}",
"EXIF camera: {meta.Exif.Image.Model}"
})
swayimg.viewer.set_text("topright", { -- top right text block scheme
"Image: {list.index} of {list.total}",
"Frame: {frame.index} of {frame.total}",
"Size: {frame.width}x{frame.height}"
})
swayimg.viewer.set_text("bottomleft", { -- bottom left text block scheme
"Scale: {scale}"
})
-- Key and mouse bindings in viewer mode (example only, not all):
-- bind Escape key for exit
swayimg.viewer.on_key("Escape", function()
swayimg.exit()
end)
swayimg.viewer.on_key("q", function()
swayimg.exit()
end)
swayimg.viewer.on_key("h", function()
swayimg.viewer.switch_image("prev")
end)
swayimg.viewer.on_key("l", function()
swayimg.viewer.switch_image("next")
end)
-- bind mouse vertical scroll button with pressed Ctrl to zoom in the image at mouse pointer coordinates
swayimg.viewer.on_mouse("Ctrl-ScrollUp", function()
local pos = swayimg.get_mouse_pos()
local scale = swayimg.viewer.get_scale()
scale = scale + scale / 10
swayimg.viewer.set_abs_scale(scale, pos.x, pos.y);
end)
-- Slide show mode, same config as for viewer mode with the following defaults:
swayimg.slideshow.set_timeout(5) -- timeout to switch image
swayimg.slideshow.set_default_scale("fit") -- default image scale
swayimg.slideshow.set_window_background("auto") -- window background mode
swayimg.slideshow.limit_history(0) -- number of the history cache
swayimg.slideshow.set_text("topleft", { "{name}" }) -- top left text block scheme
-- Gallery mode
swayimg.gallery.set_aspect("fill") -- thumbnail aspect ratio
swayimg.gallery.set_thumb_size(200) -- thumbnail size in pixels
swayimg.gallery.set_padding_size(5) -- padding between thumbnails
swayimg.gallery.set_border_size(5) -- border size for selected thumbnail
swayimg.gallery.set_border_color(0xffaaaaaa) -- border color for selected thumbnail
swayimg.gallery.set_selected_scale(1.15) -- scale for selected thumbnail
swayimg.gallery.set_selected_color(0xff404040) -- background color for selected thumbnail
swayimg.gallery.set_unselected_color(0xff202020) -- background color for unselected thumbnail
swayimg.gallery.set_window_color(0xff000000) -- window background color
swayimg.gallery.set_pinch_factor(100.0) -- pinch gesture factor
swayimg.gallery.enable_hover(true) -- enable mouse following
swayimg.gallery.limit_cache(100) -- number of thumbnails stored in memory
swayimg.gallery.enable_embedded_thumb(true) -- use embedded thumbnails
swayimg.gallery.enable_preload(false) -- preloading invisible thumbnails
swayimg.gallery.enable_pstore(false) -- enable persistent storage for thumbnails
swayimg.gallery.set_text("topleft", { -- top left text block scheme
"File: {name}"
})
swayimg.gallery.set_text("topright", { -- top right text block scheme
"{list.index} of {list.total}"
})
-- Key and mouse bindings in gallery mode (example only, not all):
-- bind Enter key to open image in viewer
swayimg.gallery.on_key("Return", function()
swayimg.set_mode("viewer")
end)
--
-- Other configuration examples
--
-- force set scale mode on window resize (useful for tiling compositors)
swayimg.on_window_resize(function()
swayimg.viewer.set_fix_scale("optimal")
end)
-- bind the Delete key in slide show mode to delete the current file and display a status message
swayimg.slideshow.on_key("Delete", function()
local image = swayimg.slideshow.get_image()
os.remove(image.path)
swayimg.text.set_status("File "..image.path.." removed")
end)
-- set a custom window title in gallery mode
swayimg.gallery.on_image_change(function()
local image = swayimg.gallery.get_image()
swayimg.set_title("Gallery: "..image.path)
end)
-- print paths to all marked files by pressing Ctrl-p in gallery mode
swayimg.gallery.on_key("Ctrl-p", function()
local entries = swayimg.imagelist.get()
for _, entry in ipairs(entries) do
if entry.mark then
print(entry.path)
end
end
end)
+19
View File
@@ -0,0 +1,19 @@
@define-color background #121110;
@define-color foreground #FCF7F2;
@define-color color0 #3A3939;
@define-color color1 #A78C72;
@define-color color2 #A99F97;
@define-color color3 #ABB0A9;
@define-color color4 #C9BBAC;
@define-color color5 #F8DEC5;
@define-color color6 #F7E7D9;
@define-color color7 #F3EAE3;
@define-color color8 #AAA49F;
@define-color color9 #A78C72;
@define-color color10 #A99F97;
@define-color color11 #ABB0A9;
@define-color color12 #C9BBAC;
@define-color color13 #F8DEC5;
@define-color color14 #F7E7D9;
@define-color color15 #F3EAE3;
@@ -0,0 +1 @@
{"windows":[{"windowId":3,"isTiled":false,"tiledRect":null,"untiledRect":{"x":-233,"y":32,"width":2612,"height":1492}},{"windowId":45,"isTiled":true,"tiledRect":{"x":2560,"y":0,"width":963,"height":1440},"untiledRect":{"x":4005,"y":602,"width":978,"height":736}},{"windowId":28,"isTiled":true,"tiledRect":{"x":3523,"y":0,"width":1597,"height":1440},"untiledRect":{"x":4567,"y":337,"width":983,"height":529}}],"tileGroups":[[3538281541,[3538281558,3538281541]],[3538281558,[3538281558,3538281541]]]}
+1
View File
@@ -0,0 +1 @@
p5zLx2PnMWdldJdRKSqB
+15
View File
@@ -0,0 +1,15 @@
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_TEMPLATES_DIR="$HOME/"
XDG_PUBLICSHARE_DIR="$HOME/"
XDG_DOCUMENTS_DIR="$HOME/"
XDG_MUSIC_DIR="$HOME/"
XDG_PICTURES_DIR="$HOME/"
XDG_VIDEOS_DIR="$HOME/"
+1
View File
@@ -0,0 +1 @@
{"binaries":["uv","uvx"],"binary_aliases":{},"cdylibs":[],"cstaticlibs":[],"install_layout":"flat","install_prefix":"/home/connorjohnstone/.local/bin","modify_path":true,"provider":{"source":"cargo-dist","version":"0.31.0"},"source":{"app_name":"uv","name":"uv","owner":"astral-sh","release_type":"github"},"version":"0.11.28"}
@@ -0,0 +1,6 @@
[preferred]
default=hyprland;gtk
org.freedesktop.impl.portal.ScreenCast=hyprland
org.freedesktop.impl.portal.Screenshot=hyprland
org.freedesktop.impl.portal.FileChooser=gtk
org.freedesktop.impl.portal.Settings=gtk
+3
View File
@@ -0,0 +1,3 @@
[General]
initialize_flag=1
random_key="vdMTT5fo/jNYQ34IidotpXAfH9STJX7BbHw0Cixytbw="
+66
View File
@@ -0,0 +1,66 @@
[General]
GeoLocale=system
SensitiveInfoMaskOn=true
ShowBiDirecSyncNoti=true
autoPlayGif=false
bForceMaximizeWM=false
captureHDCamera=true
cefInstanceCountLimit=-1
cefRefreshTime=0
chatListPanelLastWidth=320
com.zoom.client.langid=0
conf.webserver=https://zoom.us
currentMeetingId=82199284629
deviceID=44:F7:9F:DA:68:95
disableCef=false
disableUsePasskey=false
enable.host.auto.grab=true
enableAlphaBuffer=true
enableCefGpu=false
enableCefLog=false
enableCefOsrMode=true
enableCefTa=false
enableCloudSwitch=true
enableLog=true
enableMiniWindow=true
enableQmlCache=true
enableScreenSaveGuard=false
enableStartMeetingWithRoomSystem=false
enableTestMode=false
enableUnifywebviewTa=false
enablegpucomputeutilization=false
fake.version=
flashChatTime=0
forceEnableTrayIcon=true
forceSSOURL=
hideCrashReport=false
host.auto.grab.interval=10
isTransCoding=false
legacyAvatarCacheCleaned=1781022922
logLevel=info
newMeetingWithVideo=true
noSandbox=false
playSoundForNewMessage=false
shareBarTopMargin=0
shortcut_as_global_ShortcutID_Screenshot=false
shortcut_as_global_ShortcutID_ShowHideFloatingMeetingControls=true
showOneTimePTAICTipHubble=false
showOneTimeQueriesOptionTip=true
showOneTimeSmartRecognitionCoackMark=true
showOneTimeTranslationUpSellTip=false
showSystemTitlebar=false
speaker_volume=255
sso_domain=.zoom.us
sso_gov_domain=.zoomgov.com
system.audio.type=default
systemDockMargin=0
timeFormat12HoursEnable=true
translationFreeTrialTipShowTime=0
upcoming_meeting_header_image=
useSystemTheme=false
userEmailAddress=
webview.debug.enable=false
xwayland=true
[AS]
showframewindow=true
+9
View File
@@ -0,0 +1,9 @@
directory: /srv/audio/music/gaps
library: ~/.cache/beets/musiclibrary.db
import:
copy: no
# write: no # Don't modify tags
plugins:
- musicbrainz
Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
{
"add_neovim_binary_to_path": true
}
+317
View File
@@ -0,0 +1,317 @@
# This is a default config file for bottom. All of the settings are commented
# out by default; if you wish to change them uncomment and modify as you see
# fit.
# This group of options represents a command-line option. Flags explicitly
# added when running (ie: btm -a) will override this config file if an option
# is also set here.
[flags]
# Whether to hide the average cpu entry.
#hide_avg_cpu = false
# Whether to use a dedicated row for the average cpu entry
#average_cpu_row = false
# Whether to use dot markers rather than braille.
#dot_marker = false
# The update rate of the application.
#rate = "1s"
# Whether to put the CPU legend to the left.
#cpu_left_legend = false
# Whether to set CPU% on a process to be based on the total CPU or just current usage.
#current_usage = false
# Whether to set CPU% on a process to be based on the total CPU or per-core CPU% (not divided by the number of cpus).
#unnormalized_cpu = false
# Whether to group processes with the same name together by default. Doesn't do anything
# if tree is set to true or --tree is set.
#group_processes = false
# Whether to make process searching case sensitive by default.
#case_sensitive = false
# Whether to make process searching look for matching the entire word by default.
#whole_word = false
# Whether to make process searching use regex by default.
#regex = false
# The temperature unit. One of the following, defaults to "c" for Celsius:
#temperature_type = "c"
##temperature_type = "k"
##temperature_type = "f"
##temperature_type = "kelvin"
##temperature_type = "fahrenheit"
##temperature_type = "celsius"
# The default time interval (in milliseconds).
#default_time_value = "60s"
# The time delta on each zoom in/out action (in milliseconds).
#time_delta = 15000
# Hides the time scale.
#hide_time = false
# Override layout default widget
#default_widget_type = "proc"
#default_widget_count = 1
# Expand selected widget upon starting the app
#expanded = true
# Use basic mode
#basic = false
# Use the old network legend style
#use_old_network_legend = false
# Remove space in tables
#hide_table_gap = false
# Show the battery widgets
#battery = false
# Disable mouse clicks
#disable_click = false
# Disable keyboard shortcuts
#disable_keys = false
# Show memory values in the processes widget as values by default
#process_memory_as_value = false
# Show tree mode by default in the processes widget.
#tree = false
# Shows an indicator in table widgets tracking where in the list you are.
#show_table_scroll_position = false
# Show processes as their commands by default in the process widget.
#process_command = false
# Displays the network widget with binary prefixes.
#network_use_binary_prefix = false
# Displays the network widget using bytes.
#network_use_bytes = false
# Displays the network widget with a log scale.
#network_use_log = false
# Hides advanced options to stop a process on Unix-like systems.
#disable_advanced_kill = false
# Prevents performing any actions that affect the system (e.g. stopping processes).
#read_only = false
# Hides the kernel threads
#hide_k_threads = false
# Hide GPU(s) information
#disable_gpu = false
# Shows cache and buffer memory
#enable_cache_memory = false
# Subtract freeable ARC from memory usage
#free_arc = false
# How much data is stored at once in terms of time.
#retention = "10m"
# Where to place the legend for the memory widget. One of "none", "top-left", "top", "top-right", "left", "right", "bottom-left", "bottom", "bottom-right".
#memory_legend = "top-right"
# Where to place the legend for the network widget. One of "none", "top-left", "top", "top-right", "left", "right", "bottom-left", "bottom", "bottom-right".
#network_legend = "top-right"
# Processes widget configuration
#[processes]
# The columns shown by the process widget. The following columns are supported (the GPU columns are only available if the GPU feature is enabled when built):
# PID, Name, CPU%, Mem%, R/s, W/s, T.Read, T.Write, User, State, Time, GMem%, GPU%, Nice, Priority
#columns = ["PID", "Name", "CPU%", "Mem%", "Virt", "R/s", "W/s", "T.Read", "T.Write", "User", "State", "GMem%", "GPU%", "Priority"]
# Gather process child thread information
#get_threads = false
# CPU widget configuration
#[cpu]
# One of "all" (default), "average"/"avg"
#default = "average"
# Disk widget configuration
#[disk]
# The columns shown by the process widget. The following columns are supported:
# Disk, Mount, Used, Free, Total, Used%, Free%, R/s, W/s
#columns = ["Disk", "Mount", "Used", "Free", "Total", "Used%", "R/s", "W/s"]
# By default, there are no disk name filters enabled. These can be turned on to filter out specific data entries if you
# don't want to see them. An example use case is provided below.
#[disk.name_filter]
# Whether to ignore any matches. Defaults to true.
#is_list_ignored = true
# A list of filters to try and match.
#list = ["/dev/sda\\d+", "/dev/nvme0n1p2"]
# Whether to use regex. Defaults to false.
#regex = true
# Whether to be case-sensitive. Defaults to false.
#case_sensitive = false
# Whether to be require matching the whole word. Defaults to false.
#whole_word = false
# By default, there are no mount name filters enabled. An example use case is provided below.
#[disk.mount_filter]
# Whether to ignore any matches. Defaults to true.
#is_list_ignored = true
# A list of filters to try and match.
#list = ["/mnt/.*", "/boot"]
# Whether to use regex. Defaults to false.
#regex = true
# Whether to be case-sensitive. Defaults to false.
#case_sensitive = false
# Whether to be require matching the whole word. Defaults to false.
#whole_word = false
# Temperature widget configuration
#[temperature]
# By default, there are no temperature sensor filters enabled. An example use case is provided below.
#[temperature.sensor_filter]
# Whether to ignore any matches. Defaults to true.
#is_list_ignored = true
# A list of filters to try and match.
#list = ["cpu", "wifi"]
# Whether to use regex. Defaults to false.
#regex = false
# Whether to be case-sensitive. Defaults to false.
#case_sensitive = false
# Whether to be require matching the whole word. Defaults to false.
#whole_word = false
# Network widget configuration
#[network]
# By default, there are no network interface filters enabled. An example use case is provided below.
#[network.interface_filter]
# Whether to ignore any matches. Defaults to true.
#is_list_ignored = true
# A list of filters to try and match.
#list = ["virbr0.*"]
# Whether to use regex. Defaults to false.
#regex = true
# Whether to be case-sensitive. Defaults to false.
#case_sensitive = false
# Whether to be require matching the whole word. Defaults to false.
#whole_word = false
# These are all the components that support custom theming. Note that colour support
# will depend on terminal support.
#[styles] # Uncomment if you want to use custom styling
# Built-in themes. Valid values are:
# - "default"
# - "default-light"
# - "gruvbox"
# - "gruvbox-light"
# - "nord"
# - "nord-light".
#
# This will have the lowest precedence if a custom colour palette is set,
# or overridden if the command-line flag for a built-in theme is set.
#theme = "default"
#[styles.cpu]
#all_entry_color = "green"
#avg_entry_color = "red"
#cpu_core_colors = ["light magenta", "light yellow", "light cyan", "light green", "light blue", "cyan", "green", "blue"]
#[styles.memory]
#ram_color = "light magenta"
#cache_color = "light red"
#swap_color = "light yellow"
#arc_color = "light cyan"
#gpu_colors = ["light blue", "light red", "cyan", "green", "blue", "red"]
#[styles.network]
#rx_color = "light magenta"
#tx_color = "light yellow"
#rx_total_color = "light cyan"
#tx_total_color = "light green"
#[styles.battery]
#high_battery_color = "green"
#medium_battery_color = "yellow"
#low_battery_color = "red"
#[styles.tables]
#headers = {color = "light blue", bold = true}
#[styles.graphs]
#graph_color = "gray"
#legend_text = {color = "gray"}
#[styles.widgets]
#border_color = "gray"
#selected_border_color = "light blue"
#widget_title = {color = "gray"}
#text = {color = "gray"}
#selected_text = {color = "black", bg_color = "light blue"}
#disabled_text = {color = "dark gray"}
# Only on Linux
#thread_text = {color = "green"}
# Layout - layouts follow a pattern like this:
# [[row]] represents a row in the application.
# [[row.child]] represents either a widget or a column.
# [[row.child.child]] represents a widget.
#
# All widgets must have the type value set to one of ["cpu", "mem", "proc", "net", "temp", "disk", "empty"].
# All layout components have a ratio value - if this is not set, then it defaults to 1.
# The default widget layout:
#[[row]]
# ratio=30
# [[row.child]]
# type="cpu"
#[[row]]
# ratio=40
# [[row.child]]
# ratio=4
# type="mem"
# [[row.child]]
# ratio=3
# [[row.child.child]]
# type="temp"
# [[row.child.child]]
# type="disk"
#[[row]]
# ratio=30
# [[row.child]]
# type="net"
# [[row.child]]
# type="proc"
# default=true
+8
View File
@@ -0,0 +1,8 @@
# style name or JSON path (default "auto")
style: "auto"
# mouse support (TUI-mode only)
mouse: false
# use pager to display markdown
pager: false
# word-wrap at width
width: 80
@@ -0,0 +1,11 @@
[Filechooser Settings]
LocationMode=path-bar
ShowHidden=false
ShowSizeColumn=true
GeometryX=3336
GeometryY=579
GeometryWidth=1008
GeometryHeight=692
SortColumn=name
SortOrder=ascending
StartupMode=recent
+6
View File
@@ -0,0 +1,6 @@
file:///home/connor/docs/revolution
file:///home/connor/docs/lightburn
file:///home/connor/docs
file:///home/connor/docs/canonical_app
file:///home/connor/downloads
file:///tmp
+5
View File
@@ -0,0 +1,5 @@
[Added Associations]
application/x-compressed-tar=xarchiver.desktop;org.gnome.Nautilus.desktop;
[Default Applications]
x-scheme-handler/claude-cli=claude-code-url-handler.desktop
+419
View File
@@ -0,0 +1,419 @@
# An example configuration file for MPD.
# Read the user manual for documentation: http://www.musicpd.org/doc/user/
# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory "~/audio/music"
#
# This setting sets the MPD internal playlist directory. The purpose of this
# directory is storage for playlists created by MPD. The server will use
# playlist files not created by the server but only if they are in the MPD
# format. This setting defaults to playlist saving being disabled.
#
playlist_directory "~/audio/playlists"
#
# This setting sets the location of the MPD database. This file is used to
# load the database at server start up and store the database while the
# server is not up. This setting defaults to disabled which will allow
# MPD to accept files over ipc socket (using file:// protocol) or streaming
# files over an accepted protocol.
#
db_file "~/audio/mpd/database"
# These settings are the locations for the daemon log files for the daemon.
#
# The special value "syslog" makes MPD use the local syslog daemon. This
# setting defaults to logging to syslog.
#
# If you use systemd, do not configure a log_file. With systemd, MPD
# defaults to the systemd journal, which is fine.
#
log_file "~/audio/mpd/log"
# This setting sets the location of the file which stores the process ID
# for use of mpd --kill and some init scripts. This setting is disabled by
# default and the pid file will not be stored.
#
# If you use systemd, do not configure a pid_file.
#
pid_file "~/audio/mpd/pid"
# This setting sets the location of the file which contains information about
# most variables to get MPD back into the same general shape it was in before
# it was brought down. This setting is disabled by default and the server
# state will be reset on server start up.
#
state_file "~/audio/mpd/state"
#
# The location of the sticker database. This is a database which
# manages dynamic information attached to songs.
#
sticker_file "~/audio/mpd/sticker.sql"
#
###############################################################################
# General music daemon options ################################################
#
# This setting specifies the user that MPD will run as. MPD should never run as
# root and you may use this setting to make MPD change its user ID after
# initialization. This setting is disabled by default and MPD is run as the
# current user.
#
#user "nobody"
#
# This setting specifies the group that MPD will run as. If not specified
# primary group of user specified with "user" setting will be used (if set).
# This is useful if MPD needs to be a member of group such as "audio" to
# have permission to use sound card.
#
#group "nogroup"
#
# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other than the default, any.
# This setting can deny access to control of the daemon. Not effective if
# systemd socket activation is in use.
#
# For network
#bind_to_address "any"
#
# And for Unix Socket
#bind_to_address "~/.mpd/socket"
#
# This setting is the TCP port that is desired for the daemon to get assigned
# to.
#
#port "6600"
#
# Suppress all messages below the given threshold. Use "verbose" for
# troubleshooting. Available setting arguments are "notice", "info", "verbose",
# "warning" and "error".
#
#log_level "notice"
#
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
# of starting playback after startup.
#
#restore_paused "no"
#
# This setting enables MPD to create playlists in a format usable by other
# music players.
#
#save_absolute_paths_in_playlists "no"
#
# This setting defines a list of tag types that will be extracted during the
# audio file discovery process. The complete list of possible values can be
# found in the user manual.
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
#
# This example just enables the "comment" tag without disabling all
# the other supported tags:
#metadata_to_use "+comment"
#
# This setting enables automatic update of MPD's database when files in
# music_directory are changed.
#
#auto_update "yes"
#
# Limit the depth of the directories being watched, 0 means only watch
# the music directory itself. There is no limit by default.
#
#auto_update_depth "3"
#
###############################################################################
# Symbolic link behavior ######################################################
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links outside of the configured music_directory.
#
#follow_outside_symlinks "yes"
#
# If this setting is set to "yes", MPD will discover audio files by following
# symbolic links inside of the configured music_directory.
#
#follow_inside_symlinks "yes"
#
###############################################################################
# Zeroconf / Avahi Service Discovery ##########################################
#
# If this setting is set to "yes", service information will be published with
# Zeroconf / Avahi.
#
#zeroconf_enabled "yes"
#
# The argument to this setting will be the Zeroconf / Avahi unique name for
# this MPD server on the network. %h will be replaced with the hostname.
#
#zeroconf_name "Music Player @ %h"
#
###############################################################################
# Permissions #################################################################
#
# If this setting is set, MPD will require password authorization. The password
# setting can be specified multiple times for different password profiles.
#
#password "password@read,add,control,admin"
#
# This setting specifies the permissions a user has who has not yet logged in.
#
#default_permissions "read,add,control,admin"
#
###############################################################################
# Database #######################################################################
#
# An example of a database section instead of the old 'db_file' setting.
# It enables mounting other storages into the music directory.
#
#database {
# plugin "simple"
# path "~/.local/share/mpd/db"
# cache_directory "~/.local/share/mpd/cache"
#}
#
# An example of database config for a satellite setup
#
#music_directory "nfs://fileserver.local/srv/mp3"
#database {
# plugin "proxy"
# host "other.mpd.host"
# port "6600"
#}
# Input #######################################################################
#
input {
plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
#
###############################################################################
# Audio Output ################################################################
#
# MPD supports various audio output types, as well as playing through multiple
# audio outputs at the same time, through multiple audio_output settings
# blocks. Setting this block is optional, though the server will only attempt
# autodetection for one sound card.
#
# An example of an ALSA output:
#
#audio_output {
# type "alsa"
# name "My ALSA Device"
## device "hw:0,0" # optional
## mixer_type "hardware" # optional
## mixer_device "default" # optional
## mixer_control "PCM" # optional
## mixer_index "0" # optional
#}
#
# An example of an OSS output:
#
#audio_output {
# type "oss"
# name "My OSS Device"
## device "/dev/dsp" # optional
## mixer_type "hardware" # optional
## mixer_device "/dev/mixer" # optional
## mixer_control "PCM" # optional
#}
#
# An example of a shout output (for streaming to Icecast):
#
#audio_output {
# type "shout"
# encoder "vorbis" # optional
# name "My Shout Stream"
# host "localhost"
# port "8000"
# mount "/mpd.ogg"
# password "hackme"
# quality "5.0"
# bitrate "128"
# format "44100:16:1"
## protocol "icecast2" # optional
## user "source" # optional
## description "My Stream Description" # optional
## url "http://example.com" # optional
## genre "jazz" # optional
## public "no" # optional
## timeout "2" # optional
## mixer_type "software" # optional
#}
#
# An example of a recorder output:
#
#audio_output {
# type "recorder"
# name "My recorder"
# encoder "vorbis" # optional, vorbis or lame
# path "/var/lib/mpd/recorder/mpd.ogg"
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
#}
#
# An example of a httpd output (built-in HTTP streaming server):
#
#audio_output {
# type "httpd"
# name "My HTTP Stream"
# encoder "vorbis" # optional, vorbis or lame
# port "8000"
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
## quality "5.0" # do not define if bitrate is defined
# bitrate "128" # do not define if quality is defined
# format "44100:16:1"
# max_clients "0" # optional 0=no limit
#}
#
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
#
audio_output {
type "pulse"
name "PulseAudio MPD Output"
# server "remote_server" # optional
# sink "remote_server_sink" # optional
# media_role "media_role" #optional
}
#
# An example of a winmm output (Windows multimedia API).
#
#audio_output {
# type "winmm"
# name "My WinMM output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
# or
## device "0" # optional
## mixer_type "hardware" # optional
#}
#
# An example of a wasapi output (Windows multimedia API).
#
#audio_output {
# type "wasapi"
# name "My WASAPI output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
# or
## device "0" # optional
## mixer_type "hardware" # optional
## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
## exclusive "no" # optional
## Enumerate all devices in log.
## enumerate "no" # optional
#}
#
# An example of an openal output.
#
#audio_output {
# type "openal"
# name "My OpenAL output"
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
#}
#
# An example of an sndio output.
#
#audio_output {
# type "sndio"
# name "sndio output"
# mixer_type "hardware"
#}
#
# An example of an OS X output:
#
#audio_output {
# type "osx"
# name "My OS X Device"
## device "Built-in Output" # optional
## channel_map "-1,-1,0,1" # optional
#}
#
## Example "pipe" output:
#
#audio_output {
# type "pipe"
# name "my pipe"
# command "aplay -f cd 2>/dev/null"
## Or if you're want to use AudioCompress
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
## Or to send raw PCM stream through PCM:
# command "nc example.org 8765"
# format "44100:16:2"
#}
#
## An example of a null output (for no audio output):
#
#audio_output {
# type "null"
# name "My Null Output"
# mixer_type "none" # optional
#}
#
###############################################################################
# Normalization automatic volume adjustments ##################################
#
# This setting specifies the type of ReplayGain to use. This setting can have
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
# chooses between "track" and "album" depending on the current state of
# random playback. If random playback is enabled then "track" mode is used.
# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for
# more details about ReplayGain.
# This setting is off by default.
#
replaygain "album"
#
# This setting sets the pre-amp used for files that have ReplayGain tags. By
# default this setting is disabled.
#
#replaygain_preamp "0"
#
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
# By default this setting is disabled.
#
#replaygain_missing_preamp "0"
#
# This setting enables or disables ReplayGain limiting.
# MPD calculates actual amplification based on the ReplayGain tags
# and replaygain_preamp / replaygain_missing_preamp setting.
# If replaygain_limit is enabled MPD will never amplify audio signal
# above its original level. If replaygain_limit is disabled such amplification
# might occur. By default this setting is enabled.
#
#replaygain_limit "yes"
#
# This setting enables on-the-fly normalization volume adjustment. This will
# result in the volume of all playing audio to be adjusted so the output has
# equal "loudness". This setting is disabled by default.
#
volume_normalization "no"
#
###############################################################################
# Character Encoding ##########################################################
#
# If file or directory names do not display correctly for your locale then you
# may need to modify this setting.
#
#filesystem_charset "UTF-8"
#
###############################################################################
@@ -0,0 +1,326 @@
###
### Main mpvacious configuration file.
### Save this file to ~/.config/mpv/script-opts/subs2srs.conf
###
##
## General settings
##
# Anki deck for new cards. Subdecks are supported.
deck_name=Italian
# Model names are listed in `Tools -> Manage note types` menu in Anki.
# If you don't have a model for Japanese, get it from
# https://tatsumoto.neocities.org/blog/setting-up-anki.html#import-an-example-mining-deck
model_name=Italian
# Field names as they appear in the selected note type.
# If you set `audio_field` or `image_field` empty,
# the corresponding media file will not be created.
sentence_field=Italian
secondary_field=English
audio_field=Audio
image_field=Image
# The tag(s) added to new notes. Spaces separate multiple tags.
# Leave nothing after `=` to disable tagging completely.
# The following substitutions are supported:
# %n - the name of the video
# %t - timestamp
# %d - episode number (if none, returns nothing)
# %e - SUBS2SRS_TAGS environment variable (if you have it set)
note_tag=subs2srs
#note_tag=%n %t %e
#note_tag=
# Size and name of the font used in the menu
menu_font_size=24
menu_font_name=Noto Serif CJK JP
# AnkiConnect server address
# The default address for a server on the same device is http://127.0.0.1:8765.
# If Anki is running and AnkiConnect is installed, opening this URL should
# open a page showing the current version of AnkiConnect.
# Change this if you have changed webBindAddress in AnkiConnect's settings.
ankiconnect_url=127.0.0.1:8765
##
## Toggleables.
## Possible values: `yes` or `no`.
##
# Use FFmpeg encoder instead of mpv encoder
# If mpvacious encounters problems creating audio and images for Anki cards,
# setting this to `yes` should fix them.
#
# You need to install ffmpeg and add it to the PATH first.
# https://wiki.archlinux.org/title/FFmpeg
# https://www.ffmpeg.org/download.html
#
# FFmpeg encoder is unable to create audio and images from remote content (like YouTube videos).
use_ffmpeg=no
# Automatically create the deck for new cards (see deck_name option)
create_deck=yes
# Allow making notes with the same sentence field.
allow_duplicates=no
# When mpv starts, automatically copy subs to the clipboard as they appear on screen.
# This option can be also toggled in the addon's OSD menu.
autoclip=yes
# Possible options:
# "disabled" - autocopy is disabled
# "clipboard" - copy to the system clipboard (e.g. uses xclip)
# "goldendict" - send the subtitle string to goldendict (goldendict-ng).
# "custom_command" - run any custom command specified in `autoclip_custom_args`.
autoclip_method=clipboard
# Command to run when autoclip is enabled and set to "custom_command".
# If empty, nothing will be done.
# If set, calls the external program.
# The following substitutions are supported:
# %MPV_PRIMARY% - primary subtitle line
# %MPV_SECONDARY% - secondary subtitle line
autoclip_custom_args=/usr/local/bin/goldendict %MPV_PRIMARY%
# Remove all spaces from the primary subtitle text.
# Set this to "yes" for languages without spaces like Japanese.
# However, if mpvacious detects any latin characters in the string, spaces will not be removed.
nuke_spaces=yes
# if set to `yes`, the volume of the outputted audio file
# depends on the volume of the player at the time of export
tie_volumes=no
# Remove text in parentheses and leading/trailing spaces or
# newlines that may interfere with Rikaitan before copying
# subtitles to the clipboard
clipboard_trim_enabled=yes
# Add media to fields before or after existing data
append_media=yes
# Remove text in brackets before substituting %n into tag
tag_nuke_brackets=yes
# Remove text in parentheses before substituting %n into tag
tag_nuke_parentheses=no
# Remove the episode number before substituting %n into tag
tag_del_episode_num=yes
# Remove everything after the episode number before substituting %n into tag
# Does nothing if the previous option tag_del_episode_num is disabled.
tag_del_after_episode_num=yes
# Convert filename to lowercase for tagging.
tag_filename_lowercase=no
# Lets you disable anki browser manipulation by mpvacious.
disable_gui_browse=no
# Play audio clip automatically in background
# after note creation (or note update) to ensure that the audio is correctly cut.
preview_audio=no
# When selecting subtitle lines, print them on the screen.
show_selected_text=yes
# For convenience, read config file from disk before a card is made.
# Useful if you change your config often since you won't have to restart mpv every time,
# but reading from disk takes some time.
reload_config_before_card_creation=yes
##
## Image settings
##
# Snapshot format.
# Do not switch to `jpg` unless your computer doesn't support `webp` or `avif`.
snapshot_format=avif
#snapshot_format=webp
#snapshot_format=jpg
# Quality of produced image files. 0 = lowest, 100=highest.
snapshot_quality=15
# Image dimensions
# If either (but not both) of the width or height parameters is -2,
# the value will be calculated preserving the aspect-ratio.
snapshot_width=-2
snapshot_height=200
# Screenshot (yes, no)
# Usually not required.
# When making Anki cards, create a screenshot (by calling 'screenshot-to-file') instead of a snapshot.
# If set to yes, image dimensions and quality cannot be controlled due to mpv limitations.
# 'snapshot_format' is still respected.
# When using this, a custom sync server is recommended, e.g. https://github.com/ankicommunity/anki-sync-server
screenshot=no
# The exact image template used when exporting to Anki's image field.
# Adding data-editor-shrink="true" makes the image smaller by default within the Anki viewer
# on versions 2.1.53+ (equivalent of double-clicking on the image).
# You likely would not want to change this unless you know what you are doing.
image_template=<img alt="snapshot" src="%s">
#image_template=<img alt="snapshot" data-editor-shrink="true" src="%s">
# Similar to image_template but with audio.
# Normally, the user doesn't need to change this setting,
# but it may be needed for audio files to be playable on AnkiWeb.
audio_template=[sound:%s]
#audio_template=<audio controls="" src="%s"></audio>
##
## Animated snapshots
## Animated snapshots will capture the video from the start to the end times selected when using mpvacious.
##
# If enabled, generates animated snapshots (something like GIFs) instead of static snapshots.
animated_snapshot_enabled=no
# Animated snapshot format. Like "snapshot_format" but for animated images. Can be either avif or webp.
animated_snapshot_format=avif
#animated_snapshot_format=webp
# Number of frame per seconds, a value between 0 and 30 (30 included)
# Higher values will increase both quality and file size, lower values will do the opposite
animated_snapshot_fps=10
# Animated snapshot dimensions
# If either (but not both) of the width or height parameters is -2,
# the value will be calculated preserving the aspect-ratio.
animated_snapshot_width=-2
animated_snapshot_height=200
# Quality of the produced animation, 0 = lowest, 100 = highest
animated_snapshot_quality=5
##
## Audio settings
##
# Audio format.
# Opus is the recommended format.
audio_format=opus
#audio_format=mp3
# Container for opus files.
# It may be required to use a different container for Opus.
# This is the case on certain computers or devices
# which are running proprietary operating systems, e.g. AnkiMobile. Using them is discouraged.
# ・ Ogg/Opus play everywhere except AnkiWeb in Safari and AnkiMobile.
# ・ M4A (iOS 17.2 and probably even earlier) and WEBM (since iOS 17.4) play everywhere.
# ・ Opus in CAF can be used with older iOS. CAF plays only on Anki Desktop, Safari and AnkiMobile.
# ・ (iOS Lockdown Mode disables Opus support completely,
# though you may try to add an exception for AnkiMobile.)
opus_container=ogg
#opus_container=opus
#opus_container=m4a
#opus_container=webm
#opus_container=caf
# Sane values are 16k-32k for opus, 64k-128k for mp3.
audio_bitrate=24k
# Set a pad to the dialog timings. 0.5 = half a second.
# Pads are never applied to manually set timings.
audio_padding=0.0
#audio_padding=0.5
##
## Forvo support (Rikaitan users only)
##
# yes - fetch audio from Forvo if Rikaitan couldn't find the audio (default)
# always - always fetch audio from Forvo and replace the audio added by Rikaitan
# no - never use Forvo
use_forvo=yes
# Vocab field should be equal to {expression} field in Rikaitan
vocab_field=VocabKanji
# Vocab Audio field should be equal to {audio} field in Rikaitan
vocab_audio_field=VocabAudio
##
## Misc info
## Various context information that can be written on your cards in a specified field.
##
# yes to enable or no to disable.
miscinfo_enable=yes
# Field name
miscinfo_field=Notes
# Format string used to fill the misc info field.
# It supports the same substitutions as `note_tag`. HTML is supported.
miscinfo_format=%n EP%d (%t)
#miscinfo_format=From <b>mpvacious</b> %n at %t.
##
## Secondary subtitles
## Mpvacious can try automatically loading secondary subtitles that will appear at the top.
## For example, you may want to load English subs alongside Japanese subs.
##
## Secondary subtitles should be present in the container.
## But if you manually set secondary sid from the command line, mpvacious won't change it.
##
# Load secondary subtitle track automatically when a file is opened.
secondary_sub_auto_load=yes
# Language of secondary subs. This is your native language or a language you know well.
# If you leave this parameter empty, secondary subs will NOT be automatically loaded.
secondary_sub_lang=eng,en,rus,ru
#secondary_sub_lang=
# Hover area.
# Proportion of the top part of the mpv window where the secondary subtitles are visible when hovered over.
# Possible values: from 0.0 to 1.0
secondary_sub_area=0.15
# Visibility state
# Can be set to: 'auto', 'never', 'always'.
# If set to 'never' or 'always', secondary_sub_area has no effect.
# If set to 'auto', visibility behaves according to the value of secondary_sub_area.
# Default binding to cycle this value: Ctrl+v.
secondary_sub_visibility=auto
# Perform two-pass loudness normalization.
# Parameter explanation can be found e.g. at:
# https://auphonic.com/blog/2013/01/07/loudness-targets-mobile-audio-podcasts-radio-tv/
# https://auphonic.com/blog/2019/08/19/dynamic-range-processing/
# MAKE SURE TO REMOVE loudnorm FROM CUSTOM ARGS BEFORE ENABLING.
loudnorm=no
loudnorm_target=-16
loudnorm_range=11
loudnorm_peak=-1.5
##
## Custom audio encoding arguments
## These arguments are added to the command line.
## `mpv` and `ffmpeg` accept slightly different parameters.
## Feel free to experiment for yourself, but be careful or media creation might stop working.
##
# loudnorm IN CUSTOM ARGS IS LEFT FOR BACKWARD COMPATIBILITY.
# MAKE SURE TO REMOVE ALL MENTIONS OF loudnorm FROM CUSTOM ARGS
# (E.G. SET TO EMPTY STRINGS) BEFORE ENABLING TWO-PASS loudnorm.
# ENABLING loudnorm BOTH THROUGH THE SWITCH AND THROUGH CUSTOM ARGS
# CAN LEAD TO UNPREDICTABLE RESULTS.
# Ffmpeg
ffmpeg_audio_args=-af loudnorm=I=-16:TP=-1.5:LRA=11:dual_mono=true
#ffmpeg_audio_args=
#ffmpeg_audio_args=-af silenceremove=1:0:-50dB
# mpv
# mpv accepts each filter as a separate argument, e.g. --af-append=1 --af-append=2
mpv_audio_args=--af-append=loudnorm=I=-16:TP=-1.5:LRA=11:dual_mono=true
#mpv_audio_args=
#mpv_audio_args=--af-append=silenceremove=1:0:-50dB
+8
View File
@@ -0,0 +1,8 @@
[window]
width=500
height=400
sinkInputType=1
sourceOutputType=1
sinkType=0
sourceType=1
showVolumeMeters=1
+278
View File
@@ -0,0 +1,278 @@
# Swayimg configuration file.
# vim: filetype=dosini
# This file contains the default configuration.
# The viewer searches for the config file in the following locations:
# 1. $XDG_CONFIG_HOME/swayimg/config
# 2. $HOME/.config/swayimg/config
# 3. $XDG_CONFIG_DIRS/swayimg/config
# 4. /etc/xdg/swayimg/config
# Any of these options can be overridden using the --config argument
# on the command line, for instance:
# $ swayimg --config="general.mode=gallery"
################################################################################
# General configuration
################################################################################
[general]
# Mode at startup (viewer/slideshow/gallery)
mode = viewer
# Window size (fullscreen/image, or absolute size)
size = image
# Sway/Hyprland only: Window position (auto or absolute coordinates, e.g. 10,20)
position = auto
# Sway/Hyprland only: create floating window above the currently focused one
overlay = no
# Use window decoration (yes/no)
decoration = no
# Action performed by SIGUSR1 signal (same format as for key bindings)
sigusr1 = reload
# Action performed by SIGUSR2 signal (same format as for key bindings)
sigusr2 = next_file
# Application ID and window class name
app_id = swayimg
################################################################################
# Viewer mode configuration
################################################################################
[viewer]
# Window background color (auto/extend/mirror/RGBA)
window = #00000000
# Background for transparent images (grid/RGBA)
transparency = grid
# Default image scale (optimal/width/height/fit/fill/real/keep)
scale = optimal
# Initial image position on the window (center/top/bottom/free/...)
position = center
# Anti-aliasing mode (none/box/bilinear/bicubic/mks13)
antialiasing = mks13
# Loop image list: jump to first image when end of list is reached (yes/no)
loop = yes
# Number of previously viewed images to store in cache
history = 1
# Number of preloaded images (read ahead)
preload = 1
################################################################################
# Slideshow mode configuration
################################################################################
[slideshow]
# Slideshow image display time (seconds)
time = 3
# Window background color (auto/extend/mirror/RGBA)
window = auto
# Background for transparent images (grid/RGBA)
transparency = #000000ff
# Default image scale (optimal/width/height/fit/fill/real)
scale = fit
# Initial image position on the window (center/top/bottom/free/...)
position = center
# Anti-aliasing mode (none/box/bilinear/bicubic/mks13)
antialiasing = mks13
################################################################################
# Gallery mode configuration
################################################################################
[gallery]
# Height and width of each thumbnail (pixels)
size = 200
# Max number of invisible thumbnails stored in memory cache
cache = 100
# Load not only visible but also adjacent thumbnails
preload = no
# Enable/disable storing thumbnails in persistent storage (yes/no)
pstore = no
# Fill the entire tile with thumbnail (yes/no)
fill = yes
# Anti-aliasing mode for thumbnails (none/box/bilinear/bicubic/mks13)
antialiasing = mks13
# Background color of the window (RGBA)
window = #00000000
# Background color of non-selected tiles (RGBA)
background = #202020ff
# Background color of the selected tile (RGBA)
select = #404040ff
# Border color of the selected tile (RGBA)
border = #000000ff
# Shadow color of the selected tile (RGBA)
shadow = #000000ff
################################################################################
# Image list configuration
################################################################################
[list]
# Default order (none/alpha/numeric/mtime/size/random)
order = alpha
# Reverse order (yes/no)
reverse = no
# Read directories recursively (yes/no)
recursive = no
# Add files from the same directory as the first file (yes/no)
all = no
# Enable file system monitoring for adding new images to the list (yes/no)
fsmon = yes
################################################################################
# Font configuration
################################################################################
[font]
# Font name
name = monospace
# Font size (pt)
size = 14
# Font color (RGBA)
color = #ccccccff
# Shadow color (RGBA)
shadow = #000000d0
# Background color (RGBA)
background = #00000000
################################################################################
# Image meta info scheme (format, size, EXIF, etc.)
################################################################################
[info]
# Show on startup (yes/no)
show = no
# Text padding from window edges
padding = 10
# Timeout to hide info (seconds, 0 to always show)
info_timeout = 5
# Timeout to hide status message (seconds)
status_timeout = 3
# Display scheme for viewer mode (position = content)
[info.viewer]
top_left = +name,+format,+filesize,+imagesize,+exif
top_right = index
bottom_left = scale,frame
bottom_right = status
# Display scheme for slideshow mode (position = content)
[info.slideshow]
top_left = none
top_right = none
bottom_left = none
bottom_right = dir,status
# Display scheme for gallery mode (position = content)
[info.gallery]
top_left = none
top_right = index
bottom_left = none
bottom_right = name,status
################################################################################
# Viewer mode key binding configuration: key = action [parameters]
################################################################################
[keys.viewer]
F1 = help
Home = first_file
End = last_file
Prior = prev_file
Next = next_file
Space = next_file
Shift+r = rand_file
Shift+d = prev_dir
d = next_dir
Shift+o = prev_frame
o = next_frame
c = skip_file
s = mode slideshow
n = animation
f = fullscreen
Return = mode gallery
Left = step_left 10
Right = step_right 10
Up = step_up 10
Down = step_down 10
Equal = zoom +10
Plus = zoom +10
Minus = zoom -10
w = zoom width
Shift+w = zoom height
z = zoom fit
Shift+z = zoom fill
0 = zoom real
BackSpace = zoom optimal
k = zoom keep
Alt+s = zoom
Alt+p = position
bracketleft = rotate_left
bracketright = rotate_right
m = flip_vertical
Shift+m = flip_horizontal
a = antialiasing
r = reload
i = info
Shift+Delete = exec rm -f '%' && echo "File removed: %"; skip_file
Escape = exit
q = exit
# Mouse related
ScrollLeft = step_right 5
ScrollRight = step_left 5
ScrollUp = step_up 5
ScrollDown = step_down 5
Ctrl+ScrollUp = zoom +10 mouse
Ctrl+ScrollDown = zoom -10 mouse
Shift+ScrollUp = prev_file
Shift+ScrollDown = next_file
Alt+ScrollUp = prev_frame
Alt+ScrollDown = next_frame
MouseLeft = drag
MouseSide = prev_file
MouseExtra = next_file
################################################################################
# Slideshow mode key binding configuration: key = action [parameters]
################################################################################
[keys.slideshow]
F1 = help
Home = first_file
End = last_file
Prior = prev_file
Next = next_file
Shift+r = rand_file
Shift+d = prev_dir
d = next_dir
Space = pause
i = info
f = fullscreen
Return = mode
Escape = exit
q = exit
################################################################################
# Gallery mode key binding configuration: key = action [parameters]
################################################################################
[keys.gallery]
F1 = help
Home = first_file
End = last_file
Left = step_left
Right = step_right
Up = step_up
Down = step_down
Prior = page_up
Next = page_down
c = skip_file
s = mode slideshow
f = fullscreen
Return = mode viewer
a = antialiasing
r = reload
i = info
Equal = thumb +20
Plus = thumb +20
Minus = thumb -20
Shift+Delete = exec rm -f '%' && echo "File removed: %"; skip_file
Escape = exit
q = exit
# Mouse related
ScrollLeft = step_right
ScrollRight = step_left
ScrollUp = step_up
ScrollDown = step_down
Ctrl+ScrollUp = thumb +20
Ctrl+ScrollDown = thumb -20
MouseLeft = mode viewer
+19
View File
@@ -0,0 +1,19 @@
@define-color background #121412;
@define-color foreground #CDFEFF;
@define-color color0 #393B3A;
@define-color color1 #8FA47F;
@define-color color2 #9A9DB8;
@define-color color3 #B29C9E;
@define-color color4 #A0B483;
@define-color color5 #C9D9AE;
@define-color color6 #70FCFE;
@define-color color7 #AFF5F6;
@define-color color8 #7AABAC;
@define-color color9 #8FA47F;
@define-color color10 #9A9DB8;
@define-color color11 #B29C9E;
@define-color color12 #A0B483;
@define-color color13 #C9D9AE;
@define-color color14 #70FCFE;
@define-color color15 #AFF5F6;
+35
View File
@@ -0,0 +1,35 @@
{
"positionX": "right",
"positionY": "top",
"layer": "overlay",
"control-center-layer": "top",
"control-center-margin-top": 8,
"control-center-margin-bottom": 8,
"control-center-margin-right": 8,
"control-center-margin-left": 0,
"notification-icon-size": 48,
"notification-body-image-height": 100,
"notification-body-image-width": 200,
"timeout": 8,
"timeout-low": 5,
"timeout-critical": 0,
"fit-to-screen": false,
"control-center-width": 350,
"control-center-height": 700,
"notification-window-width": 350,
"widgets": ["title", "dnd", "mpris", "notifications"],
"widget-config": {
"title": {
"text": "Notifications",
"clear-all-button": true,
"button-text": "Clear All"
},
"dnd": {
"text": "Do Not Disturb"
},
"mpris": {
"image-size": 72,
"image-radius": 8
}
}
}
+201
View File
@@ -0,0 +1,201 @@
@import "colors.css";
* {
all: unset;
font-family: Roboto, sans-serif;
font-size: 13px;
}
/* Notification popup */
.notification-row {
outline: none;
margin: 10px 30px;
}
.notification-row:focus,
.notification-row:hover {
background: transparent;
}
.notification {
background: @background;
border: 1px solid @color4;
border-radius: 12px;
padding: 0;
margin: 5px;
min-width: 500px;
opacity: 0.85;
}
/* Urgency variants */
.notification.critical {
border-color: @color1;
}
.notification.low {
border-color: @color3;
}
/* Header bar (app name + timestamp + close button) */
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .summary {
color: @color7;
font-size: 14px;
font-weight: 600;
padding: 10px 20px;
}
.notification-default-action {
padding: 0;
border-radius: 12px;
}
.notification-default-action:hover {
background: rgba(255, 255, 255, 0.05);
border-radius: 12px;
}
/* Content area */
.notification-content {
padding: 10px 40px;
}
.notification-icon {
min-width: 0;
min-height: 0;
opacity: 0;
margin: 20px;
}
.notification-summary {
font-weight: 500;
color: @foreground;
}
.notification-body {
color: @foreground;
}
.notification-row .notification-background .notification .notification-default-action .notification-content .text-box .body {
/* Notification body */
font-weight: normal;
background: transparent;
text-shadow: none;
padding: 5px 20px;
}
/* Action buttons (e.g. "Reply", "Mark as read") */
.notification-action {
background: rgba(26, 110, 207, 0.2);
border: 1px solid rgba(26, 110, 207, 0.4);
border-radius: 6px;
color: rgba(255, 255, 255, 0.8);
padding: 5px;
margin: 10px;
}
.notification-action:hover {
background: rgba(26, 110, 207, 0.4);
}
/* ── Control center panel ── */
.control-center {
background: rgba(10, 14, 22, 0.95);
border-left: 1px solid rgba(26, 110, 207, 0.3);
border-radius: 0 0 0 12px;
min-width: 500px;
}
/* Title widget */
.widget-title {
color: rgba(255, 255, 255, 0.9);
font-size: 15px;
font-weight: 500;
padding: 16px 16px 8px;
}
.widget-title > button {
background: rgba(26, 110, 207, 0.2);
border: 1px solid rgba(26, 110, 207, 0.4);
border-radius: 6px;
color: rgba(255, 255, 255, 0.7);
font-size: 11px;
padding: 3px 10px;
}
.widget-title > button:hover {
background: rgba(26, 110, 207, 0.4);
}
/* DND toggle */
.widget-dnd {
padding: 8px 16px;
color: rgba(255, 255, 255, 0.8);
font-size: 13px;
}
.widget-dnd > switch {
background: rgba(255, 255, 255, 0.1);
border-radius: 12px;
border: none;
}
.widget-dnd > switch:checked {
background: rgba(26, 110, 207, 0.7);
}
.widget-dnd > switch slider {
background: white;
border-radius: 50%;
min-width: 18px;
min-height: 18px;
margin: 2px;
}
/* MPRIS widget */
.widget-mpris {
padding: 12px 16px;
background: rgba(26, 110, 207, 0.08);
border-radius: 10px;
margin: 0 8px 8px;
}
.widget-mpris-player {
padding: 4px 0;
}
.widget-mpris-title {
font-weight: 500;
font-size: 13px;
color: rgba(255, 255, 255, 0.9);
}
.widget-mpris-subtitle {
font-size: 11px;
color: rgba(255, 255, 255, 0.5);
}
/* Notification list inside control center */
.control-center-list {
padding: 4px 8px;
}
.control-center-list-placeholder {
color: rgba(255, 255, 255, 0.25);
font-size: 13px;
}
/* Close buttons */
.close-button {
background: transparent;
color: rgba(255, 255, 255, 0.4);
border-radius: 50%;
padding: 2px;
min-width: 18px;
min-height: 18px;
}
.close-button:hover {
background: rgba(255, 74, 110, 0.3);
color: rgba(255, 255, 255, 0.9);
}
+15
View File
@@ -0,0 +1,15 @@
# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
#
XDG_DESKTOP_DIR="$HOME/"
XDG_DOWNLOAD_DIR="$HOME/"
XDG_TEMPLATES_DIR="$HOME/"
XDG_PUBLICSHARE_DIR="$HOME/"
XDG_DOCUMENTS_DIR="$HOME/"
XDG_MUSIC_DIR="$HOME/"
XDG_PICTURES_DIR="$HOME/"
XDG_VIDEOS_DIR="$HOME/"
+3
View File
@@ -0,0 +1,3 @@
[General]
initialize_flag=1
random_key="iWXNyZBvOkqtifCZhpYbhHkKdWvhAG7CjZekjmmfcd8="
+81
View File
@@ -0,0 +1,81 @@
[General]
CefOsrWindowlessFrameRate=30
GeoLocale=system
SensitiveInfoMaskOn=true
ShowBiDirecSyncNoti=true
autoPlayGif=false
autoScale=true
bForceMaximizeWM=false
captureHDCamera=true
cefInstanceCountLimit=-1
cefRefreshTime=0
chatListPanelLastWidth=230
com.disable.connection.pk.status=false
com.zoom.client.langid=0
com.zoom.pt.settings.closedcaption.fontsize=16
conf.webserver=https://zoom.us
currentMeetingId=82199284629
deviceID=28:A0:6B:E5:A9:C0
disableCef=false
disableUsePasskey=false
enable.host.auto.grab=true
enableAlphaBuffer=true
enableCefGpu=false
enableCefLog=false
enableCefOsrIme=true
enableCefOsrMode=true
enableCefRemoteDebug=false
enableCefRemoteDebugPort=9222
enableCefTa=false
enableCloudSwitch=true
enableLog=true
enableMiniWindow=true
enableQmlCache=true
enableScreenSaveGuard=false
enableStartMeetingWithRoomSystem=false
enableTestMode=false
enableUnifywebviewTa=false
enableWaylandShare=false
enablegpucomputeutilization=false
fake.version=
flashChatTime=0
forceEnableTrayIcon=true
forceSSOURL=
hideCrashReport=false
host.auto.grab.interval=10
isTransCoding=false
legacyAvatarCacheCleaned=1776020340
logLevel=info
newMeetingWithVideo=true
noSandbox=false
playSoundForNewMessage=false
shareBarTopMargin=0
shortcut_as_global_ShortcutID_Screenshot=false
shortcut_as_global_ShortcutID_ScreenshotIncludeChatWindow=false
shortcut_as_global_ShortcutID_ShowHideFloatingMeetingControls=true
showOneTimePTAICTipHubble=false
showOneTimeQAMostUpvoteHubble=true
showOneTimeQueriesOptionTip=true
showOneTimeSmartRecognitionCoackMark=true
showOneTimeTranslationUpSellTip=false
showSystemTitlebar=false
speaker_volume=255
sso_domain=.zoom.us
sso_gov_domain=.zoomgov.com
system.audio.type=default
systemDockMargin=0
timeFormat12HoursEnable=true
translationFreeTrialTipShowTime=0
upcoming_meeting_header_image=
useSystemTheme=false
userEmailAddress=
waylandDesktopNotifications=false
webview.debug.enable=false
xwayland=true
[AS]
showframewindow=true
[CodeSnippet]
lastCodeType=0
wrapMode=0
+4
View File
@@ -25,3 +25,7 @@
~/.config/starship.toml: common/starship.toml
~/.gitconfig: common/git/config
~/.ssh/config: common/ssh/config
~/.config/lazygit: common/lazygit
~/.config/ncmpcpp: common/ncmpcpp
~/.config/neofetch: common/neofetch
~/.config/matplotlib: common/matplotlib
+6
View File
@@ -10,6 +10,12 @@
force: true
- link:
~/.config/bob: hosts/mainframe/config/bob
~/.config/gtk-3.0: hosts/mainframe/config/gtk-3.0
~/.config/inbox-tidy: hosts/mainframe/config/inbox-tidy
~/.config/llmfit: hosts/mainframe/config/llmfit
~/.config/mimeapps.list: hosts/mainframe/config/mimeapps.list
~/.config/user-dirs.dirs: hosts/mainframe/config/user-dirs.dirs
~/.ssh/config.local: hosts/mainframe/ssh/config.local
~/.config/git/identity: hosts/mainframe/git/identity
~/.config/paru: common/paru
+1
View File
@@ -10,6 +10,7 @@
force: true
- link:
~/.config/bob: hosts/nas/config/bob
~/.ssh/config.local: hosts/nas/ssh/config.local
~/.config/git/identity: hosts/nas/git/identity
~/.config/paru: common/paru
+18
View File
@@ -10,6 +10,24 @@
force: true
- link:
~/.config/bob: hosts/sctfw004/config/bob
~/.config/fastfetch: hosts/sctfw004/config/fastfetch
~/.config/gh: hosts/sctfw004/config/gh
~/.config/gtk-2.0: hosts/sctfw004/config/gtk-2.0
~/.config/gtk-3.0: hosts/sctfw004/config/gtk-3.0
~/.config/gtk-4.0: hosts/sctfw004/config/gtk-4.0
~/.config/mimeapps.list: hosts/sctfw004/config/mimeapps.list
~/.config/mpv: hosts/sctfw004/config/mpv
~/.config/pavucontrol.ini: hosts/sctfw004/config/pavucontrol.ini
~/.config/swayimg: hosts/sctfw004/config/swayimg
~/.config/swaync: hosts/sctfw004/config/swaync
~/.config/tiling-assistant: hosts/sctfw004/config/tiling-assistant
~/.config/traggo: hosts/sctfw004/config/traggo
~/.config/user-dirs.dirs: hosts/sctfw004/config/user-dirs.dirs
~/.config/uv: hosts/sctfw004/config/uv
~/.config/xdg-desktop-portal: hosts/sctfw004/config/xdg-desktop-portal
~/.config/zoom.conf: hosts/sctfw004/config/zoom.conf
~/.config/zoomus.conf: hosts/sctfw004/config/zoomus.conf
~/.ssh/config.local: hosts/sctfw004/ssh/config.local
~/.config/wallust: common/wallust
~/.config/hypr/colors.conf: hosts/sctfw004/hypr/colors.conf
+16
View File
@@ -9,6 +9,22 @@
force: true
- link:
~/.config/beets: hosts/system76/config/beets
~/.config/bob: hosts/system76/config/bob
~/.config/bottom: hosts/system76/config/bottom
~/.config/glow: hosts/system76/config/glow
~/.config/gtk-2.0: hosts/system76/config/gtk-2.0
~/.config/gtk-3.0: hosts/system76/config/gtk-3.0
~/.config/gtk-4.0: hosts/system76/config/gtk-4.0
~/.config/mimeapps.list: hosts/system76/config/mimeapps.list
~/.config/mpd: hosts/system76/config/mpd
~/.config/mpv: hosts/system76/config/mpv
~/.config/pavucontrol.ini: hosts/system76/config/pavucontrol.ini
~/.config/swayimg: hosts/system76/config/swayimg
~/.config/swaync: hosts/system76/config/swaync
~/.config/user-dirs.dirs: hosts/system76/config/user-dirs.dirs
~/.config/zoom.conf: hosts/system76/config/zoom.conf
~/.config/zoomus.conf: hosts/system76/config/zoomus.conf
~/.ssh/config.local: hosts/system76/ssh/config.local
~/.config/wallust: common/wallust
~/.config/hypr/colors.conf: hosts/system76/hypr/colors.conf