Compare commits

..

116 Commits

Author SHA1 Message Date
ec01eed4be Add aoc token 2025-12-04 10:52:47 -04:00
9d2a5362f7 Re-sync 2025-12-03 16:24:19 -04:00
af3c2b62d1 Update update 2025-10-03 04:24:19 -03:00
1773f760a3 Change aliases 2025-09-13 05:07:58 -03:00
906f83137b Change option 2025-07-24 02:29:01 -03:00
5691ecc03e Change scene collections 2025-07-19 13:23:58 -03:00
b1afb762de Add obs config 2025-07-19 13:13:57 -03:00
c861e8b96c Change zsh hist 2025-07-19 13:12:44 -03:00
7081821fc0 Add obs global config 2025-07-19 13:03:41 -03:00
eba5813646 Add lens correction filter 2025-07-19 12:45:57 -03:00
5192649d67 edit aliases 2025-07-19 12:19:52 -03:00
632385191a What 2025-06-24 17:39:15 -03:00
adf5ba9140 Add script to batch process a video file, made for a batch of video files 2025-06-24 17:18:34 -03:00
c5856cbd47 Add script to transcribe a video file, made for lectures 2025-06-24 17:18:09 -03:00
89dfc85377 Update update alias 2025-06-22 19:07:16 -03:00
d0b7f01cc8 Make script more variable 2025-06-08 05:50:22 -03:00
29fc927053 Add kioworker killer timer 2025-06-05 09:28:54 -03:00
841557d6f6 Add kioworker killer service 2025-06-05 09:27:57 -03:00
e95b46cb01 Add alias 2025-06-03 21:21:22 -03:00
511f210280 update 2025-05-29 00:15:08 -03:00
3acbf0d275 Discord settings 2025-05-25 22:25:17 -03:00
3dec19aa55 Change location 2025-05-24 14:26:07 -03:00
e58fb3ad35 Update starship config 2025-05-17 19:48:07 -03:00
611af2412d Update paru conf 2025-05-13 12:29:35 -03:00
a7eddf83c3 Update 2025-04-28 22:08:01 -03:00
38e7b666cf tweak 2025-04-28 17:48:35 -03:00
5c0ac04bab Tweak starship a little 2025-04-28 17:46:16 -03:00
b858d798ae Ahh 2025-04-25 18:22:51 -03:00
03c2016471 History options 2025-04-25 18:17:53 -03:00
72056fc85b idk why I was doing that 2025-04-25 17:55:17 -03:00
a74aec2dd2 minor tweak 2025-04-25 17:52:23 -03:00
7578995c96 Add termux special case 2025-04-25 17:50:08 -03:00
3490a06700 idk why I did it teh other way 2025-04-25 17:44:02 -03:00
3800dd08fb Fix case 2025-04-25 17:40:13 -03:00
d9fa71c045 Fix minor bug 2025-04-25 17:37:08 -03:00
6b56f14ffa Add final fallback case 2025-04-25 17:29:44 -03:00
396627f4cb Update zsh history stuff 2025-04-25 17:11:57 -03:00
b214a4541b Add tealdeer config 2025-04-25 12:03:20 -03:00
a11f9cd7e0 Add erdtree, tree/du alternative 2025-04-25 11:57:02 -03:00
2983c7d19e Update some alternatives 2025-04-25 11:54:32 -03:00
231bab7a13 Tweak aliases 2025-04-24 15:02:56 -03:00
d158b91169 Add symlink 2025-04-24 10:38:09 -03:00
3fe8bfd9d7 Move editorconfig 2025-04-24 10:37:48 -03:00
88a7fe6cfd Add simple fix for auto mute 2025-04-24 08:04:54 -03:00
978ac74893 Add simple fix for auto mute 2025-04-24 08:04:45 -03:00
e041d69918 try and fix ssh stuff 2025-04-24 03:46:09 -03:00
37a3e43fb7 Force tcsh to execute bash as login shell, like it should be 2025-04-24 03:29:27 -03:00
561933f814 Update tcsh a bit 2025-04-24 03:22:04 -03:00
d452db49a5 Update tcsh a bit 2025-04-24 03:21:42 -03:00
6e1219e0b5 Add mirror updating for other deb distros 2025-04-24 02:46:19 -03:00
edb70737e9 eol 2025-04-24 02:32:32 -03:00
c934ad515b Add symlink for compat 2025-04-24 02:31:39 -03:00
bf63e412c8 Add login shell check 2025-04-24 02:28:57 -03:00
3d966d48aa Change grep alias 2025-04-24 02:16:41 -03:00
c50c23ba5c Fix not exporting variables correctly 2025-04-24 02:13:59 -03:00
0d03127d06 Rework final init and SSH session fix 2025-04-24 02:03:55 -03:00
b314a6506d minor 2025-04-24 00:15:45 -03:00
cad7d6fc85 Add some aliases 2025-04-24 00:15:07 -03:00
e074cf8e11 Update others 2025-04-24 00:11:30 -03:00
adfa2a9144 add bash aliases 2025-04-24 00:11:13 -03:00
ea2efd1145 rework shell profiles 2025-04-23 20:57:09 -03:00
6c4e8102c7 move bash to config folder, and add symlinks 2025-04-23 20:12:43 -03:00
12ae5c9728 Add renpy symlink 2025-04-23 20:02:00 -03:00
4da7aad44b ssh template 2025-04-23 19:46:50 -03:00
ed4a0674ab Add dynamic ssh config 2025-04-23 19:31:53 -03:00
0c7367492c Add alternative to ftc 2025-04-22 20:15:17 -03:00
ddc2205035 Add find the command preferred options 2025-04-22 20:12:09 -03:00
9a0a0e69de Add find the command 2025-04-22 19:59:45 -03:00
41c1cff77c Re-sync. Re-add paru -c since it is required to clean after. Added clamav helpful alias 2025-04-17 02:59:00 -03:00
5b4449d7e9 Update 2025-04-09 12:02:00 -03:00
b472f6b758 Don't redefine standard unix tools 2025-04-07 21:21:20 -03:00
630a31ff35 Update eget config 2025-04-07 16:32:28 -03:00
89d2579bc8 Don't redefine core utils as some scripts may run in interactive mode even though they're not supposed to 2025-04-07 15:48:52 -03:00
6d3e8a7a9b tldr fix 2025-04-02 19:16:05 -03:00
27fd6700ff idk 2025-04-02 16:35:53 -03:00
95faf30824 Add kitty to eget 2025-04-02 16:19:50 -03:00
7b37d7b49f Add nushell env vars 2025-04-02 16:08:31 -03:00
862fca3554 Add nushell config 2025-04-02 16:08:12 -03:00
17681ff33b Add some more alias stuff 2025-04-02 16:07:49 -03:00
fd8ef13162 Fix zsh script 2025-04-02 15:55:34 -03:00
abb3c811f9 Make zshrc need an enter to interact with chezmoi functions 2025-04-02 15:43:47 -03:00
abe36b2490 Change alias 2025-04-02 15:28:01 -03:00
913a96cb27 Add aliases for most tooling I added 2025-04-02 15:25:29 -03:00
3064dd2b70 Containers were a pipe dream anyways 2025-04-02 15:10:14 -03:00
e0de67fad7 Fix libraries 2025-04-02 14:11:52 -03:00
d0574e433a Add updated VSCode 2025-04-02 13:49:15 -03:00
d40916c963 Add updated firefox & desktop file 2025-04-02 13:16:21 -03:00
dfbd41e132 Re-enable firefox 2025-04-02 12:59:31 -03:00
c007b4732d Add some other files 2025-04-02 12:56:54 -03:00
76a9a37e81 Update some core utilities 2025-04-02 12:30:30 -03:00
5d541a845a Add wireplumber configs 2025-03-29 23:04:45 -03:00
6a05fefc0e Add wireplumber configs 2025-03-29 23:04:35 -03:00
8420f1f1c1 Add wireplumber configs 2025-03-29 23:04:24 -03:00
38e261d753 26-less-crackling.conf 2025-03-29 23:04:11 -03:00
3469a349d2 Add xdg open command alias to be more comfortable 2025-03-29 22:34:11 -03:00
632021c3ee Sync 2025-03-27 23:51:07 -03:00
eb382bba08 Add racket mimetype 2025-03-27 23:49:53 -03:00
aaa52a48b3 Add some comments/documentation 2025-03-26 13:06:45 -03:00
aedb580510 Update bashrc to make it more flexible and add eget tools 2025-03-26 13:01:28 -03:00
59a1d3bb83 Add post install for setting up non trivial applications 2025-03-26 13:00:58 -03:00
79f3ba513f Change config dir 2025-03-26 11:26:51 -03:00
7328245064 Add eget config for local binaries 2025-03-26 11:11:50 -03:00
cfbecf8a1a Update zshrc 2025-03-20 15:50:34 -03:00
fe2ff0fde4 Add rust stuff 2025-03-19 16:33:47 -03:00
c3b7c57e2e Use offical source method from docs 2025-03-19 12:52:19 -03:00
0de1c0f2d3 Update bashrc to check for local bash completions 2025-03-19 12:50:14 -03:00
614b78873a Update bashrc 2025-03-12 12:21:35 -03:00
ac5879cead Update bashrc 2025-03-12 12:07:10 -03:00
2b93f4ab3b XDG and git stuff 2025-03-11 23:23:25 -03:00
dc19de13ff Re-source alias 2025-03-11 12:15:48 -03:00
c031affb9f Move zshrc to config folder 2025-03-11 12:14:06 -03:00
9724a9dddd Move zshrc to config folder 2025-03-11 12:13:21 -03:00
e797bc1801 More XDG stuff 2025-03-11 12:11:38 -03:00
8b0cf92195 XDG Stuff 2025-03-11 11:45:44 -03:00
ed699e596a Improve alias usage 2025-03-11 11:23:54 -03:00
d4b8cc50b3 Add gamemode settings 2025-03-11 11:18:16 -03:00
47 changed files with 2267 additions and 90 deletions

View File

@@ -1 +0,0 @@
[[ -f ~/.bashrc ]] && . ~/.bashrc

View File

@@ -1,20 +0,0 @@
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Required init for cli programs
# Do not install completions unless no working, check /usr/share/bash-completion
eval "$(zoxide init bash)"
# Set aliases
alias ls="eza --icons --long"
alias grep="ugrep"
alias cd="z"
alias cat="bat -p"
alias update-mirrors="rate-mirrors arch | sudo tee /etc/pacman.d/mirrorlist; rate-mirrors chaotic-aur | sudo tee /etc/pacman.d/chaotic-mirrorlist"
alias update="paru; paru -c"
alias l="ls --ignore-glob '$([ -f .hidden ] && cat .hidden | tr '\n' '|')'"
# Helpful tool: https://bash-prompt-generator.org
# On github: https://github.com/Scriptim/bash-prompt-generator
PS1='[\u@\h \w]\$ '

View File

@@ -0,0 +1,9 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSNnE3d2ZmZFZoOWdyZnZY
bFFoKzErZmE1QkI4K1dhUHEwWWpDZnZXRkFFCmoxZmpZTndzWXdES2NrQ2poYXpy
c2pFek9HbXZGUkFPUVdkQ0xjbkliSmMKLS0tIFVIeGh0Si8zSG55RGI4cUNFZHBp
Tjg3U2NlanFvTERUNURoZzY2YnhjazgK8I8MU0tmo1Dh3DhTCt3em5jkPlOGepaw
3oPax9S4r5ZagEZm0RvY7OolXOsotW2JgizDSIvnbJb8/j0geg2ZfOQbZxzkpFRn
khH9ZYrD0eD0qHcClOyAxotOf8RQgQ+HMIzAx88FWSUQxtavVw7ThKDqwhpRssZ1
RVpEY/7B0CAOaVcB/22hb2xg80YvOwnfEAgj0cqnjinp7lmFY9vdPG8=
-----END AGE ENCRYPTED FILE-----

View File

@@ -0,0 +1,255 @@
# shellcheck shell=bash
# shellcheck disable=SC1090,SC1091,SC2034
# Set aliases
hash ug 2>/dev/null && alias grep="ugrep"
hash bat 2>/dev/null && alias cat="bat -p"
hash zoxide 2>/dev/null && alias cd="z"
hash fd 2>/dev/null && alias find="fd"
hash numbat 2>/dev/null && alias bc="numbat" # numbat is a bit more than just a bc alternative
# hash eva 2>/dev/null && alias bc="eva" # eva is a bc alternative, but don't want to switch yet
hash fend 2>/dev/null && alias units="fend" # fend's syntax is a bit different from units, don't want to switch yet
# hash sd 2>/dev/null && alias sed="sd" # Disabled because some scripts use sed, and don't set the -i flag
hash dust 2>/dev/null && alias du="dust"
hash erd 2>/dev/null && alias tree="erd"
hash dua 2>/dev/null && alias duai="dua interactive"
hash tealdeer 2>/dev/null && alias tldr="tealdeer"
hash hexyl 2>/dev/null && alias xxd="hexyl"
hash xdg-open 2>/dev/null && alias start="xdg-open" && alias open="xdg-open"
hash micro 2>/dev/null && alias edit="micro" && alias nano="micro"
hash nvim 2>/dev/null && alias vim="nvim" && alias vi="nvim"
hash trash-put 2>/dev/null && alias rm="trash-put" && alias tp="trash-put"
hash gallery-dl 2>/dev/null && alias gallery-dl="gallery-dl --cookies-from-browser firefox"
hash yt-dlp 2>/dev/null && alias yt-dlp="yt-dlp --cookies-from-browser firefox"
function update-mirrors {
# Termux special case
if [[ "$TERMUX_VERSION" ]]; then
termux-change-repo
return $?
fi
if [[ $(lsb_release -si) =~ "Arch" ]]; then
if hash rate-mirrors 2>/dev/null; then
rate-mirrors arch | sudo tee /etc/pacman.d/mirrorlist
rate-mirrors chaotic-aur | sudo tee /etc/pacman.d/chaotic-mirrorlist
else
echo "rate-mirrors not found, cannot update mirrors."
return 1
fi
elif [[ $(lsb_release -si) =~ "Debian" || $(lsb_release -si) =~ "Ubuntu" ]]; then
if hash nala 2>/dev/null; then
sudo nala fetch --auto -c US -c CA
else
echo "nala not found, cannot update mirrors."
return 1
fi
else
echo "No supported package manager found for updating mirrors."
return 1
fi
return 0
}
function update {
# Termux special case
if [[ "$TERMUX_VERSION" ]]; then
pkg upgrade && pkg autoclean
return $?
fi
# Check if we have at least 10GB of free space before running the update
free_space="$(df --output=avail / | tail -n 1)"
if (( free_space < 10485760 )); then # 10485760 = 10 * 1024 * 1024 (10GB in KB)
# Less than 10GB free space
# Ask user if they want to continue
echo "Warning: Less than 10GB of free space available. Continue? [y/N] "
read -r answer
if [[ $answer =~ ^[Nn]$ ]]; then
echo "Update cancelled."
return 1
fi
fi
if [[ $(lsb_release -si) =~ "Arch" ]]; then
if hash paru 2>/dev/null; then
paru; paru -c
elif hash yay 2>/dev/null; then
yay; yay -Sc
elif hash pamac 2>/dev/null; then
pamac update; pamac clean
elif hash pacman 2>/dev/null; then
sudo pacman -Syu; sudo pacman -Sc
else
echo "No supported package manager found for Arch."
return 1
fi
elif [[ $(lsb_release -si) =~ "Debian" || $(lsb_release -si) =~ "Ubuntu" ]]; then
if hash nala 2>/dev/null; then
sudo nala update && sudo nala upgrade && sudo nala autoremove
elif hash aptitude 2>/dev/null; then
sudo aptitude update && sudo aptitude upgrade && sudo aptitude autoremove
elif hash apt 2>/dev/null; then
sudo apt update && sudo apt upgrade && sudo apt autoremove
else
echo "No supported package manager found for Debian/Ubuntu."
return 1
fi
fi
# Non system packages
if hash flatpak 2>/dev/null; then
sudo flatpak update && sudo flatpak uninstall --unused
fi
if hash snap 2>/dev/null; then
sudo snap refresh && sudo snap remove --purge "$(snap list --all | awk '/^.*disabled/{print $1}')"
fi
# Firmware
if hash fwupdmgr 2>/dev/null; then
sudo fwupdmgr refresh && sudo fwupdmgr update
fi
return 0
}
# if hash lsb_release 2>/dev/null; then
# if [[ $(lsb_release -si) =~ "Arch" ]]; then
# alias update-mirrors="rate-mirrors arch | sudo tee /etc/pacman.d/mirrorlist; rate-mirrors chaotic-aur | sudo tee /etc/pacman.d/chaotic-mirrorlist"
# # System package managers
# hash pacman 2>/dev/null && command="sudo pacman -Syu; sudo pacman -Sc; "
# hash pamac 2>/dev/null && command="pamac update; pamac clean; "
# hash yay 2>/dev/null && command="yay; yay -Sc; "
# hash paru 2>/dev/null && command="paru; paru -c; "
# elif [[ $(lsb_release -si) =~ "Debian" || $(lsb_release -si) =~ "Ubuntu" ]]; then
# alias update-mirrors="sudo nala fetch --auto -c US -c CA"
# # System package managers
# hash apt 2>/dev/null && command="sudo apt update && sudo apt upgrade && sudo apt autoremove; "
# hash aptitude 2>/dev/null && command="sudo aptitude update && sudo aptitude upgrade && sudo aptitude autoremove; "
# hash nala 2>/dev/null && command="sudo nala update && sudo nala upgrade && sudo nala autoremove; "
# fi
# # Non system packages
# hash flatpak 2>/dev/null && command+="flatpak update && flatpak uninstall --unused; "
# hash snap 2>/dev/null && command+="sudo snap refresh && sudo snap remove --purge $(snap list --all | awk '/^.*disabled/{print $1}'); "
# # Firmware
# hash fwupdmgr 2>/dev/null && command+="fwupdmgr refresh && fwupdmgr update; "
# # Return 0 to indicate that the function has finished successfully
# command+="return 0"
# # We want this to be expanded to the command, as the command is not very helpful
# # shellcheck disable=SC2139
# alias update="$command"
# elif [[ "$TERMUX_VERSION" ]]; then
# # Termux, special case
# alias update-mirrors="termux-change-repo"
# alias update="pkg upgrade && pkg autoclean"
# # Non privaledged environemnt, have to use local package managers like eget, nix, etc
# else
# alias update-mirrors="echo 'No mirrors to update'"
# alias update='eget -D; . "$HOME"/.config/eget/post_install.sh'
# alias nix-shell-local="nix-user-chroot ~/.local/share/nix bash"
# if [ -e ~/.nix-profile/etc/profile.d/nix.sh ]; then
# . ~/.nix-profile/etc/profile.d/nix.sh
# fi
# fi
if hash eza 2>/dev/null; then
function ls {
if [[ "$*" =~ "-a" || "$*" =~ "-A" || "$*" =~ "--all" || "$*" =~ "--almost-all" ]]; then
eza --icons --long "$@"
else
eza --icons --long --ignore-glob "$([[ -f .hidden ]] && < .hidden tr '\n' '|')" "$@"
fi
}
fi
if hash sigtool 2>/dev/null; then
# clamav-exception-add <file>
# Adds a file to the clamav user-defined exceptions list
# Usage: clamav-exception-add <file>
# Example: clamav-exception-add /path/to/file
# Note: This requires root privileges, so you may need to run it with sudo
function clamav-exception-add {
if [[ -z $1 ]]; then
echo "Usage: clamav-exception-add <file>"
return 1
fi
if [[ ! -f $1 ]]; then
echo "File not found: $1"
return 1
fi
sudo bash -c "sigtool --sha256 $1 >> /var/lib/clamav/user-defined-exceptions.sfp"
}
fi
# Dotfiles management
# TODO: Rewrite to use bash read instead of zsh read
if hash chezmoi 2>/dev/null; then
function .add {
if [[ -z $1 || -z $2 ]]; then
echo "Usage: .add <file> <message>"
return 1
fi
chezmoi add "$1"
chezmoi git add .
chezmoi git status
echo -n "Commit changes? [y/N] "
read -r answer
if [[ $answer =~ ^[Yy]$ ]]; then
chezmoi git -- commit -m "$2"
echo -n "Push changes? [y/N] "
read -r answer
if [[ $answer =~ ^[Yy]$ ]]; then
chezmoi git push
fi
fi
}
# TODO: Rewrite to use bash read instead of zsh read
function .re-add {
if [[ -z $1 ]]; then
echo "Usage: .re-add <message>"
return 1
fi
chezmoi re-add
chezmoi git status
chezmoi git diff
echo -n "Commit changes? [y/N] "
read -r answer
if [[ $answer =~ ^[Yy]$ ]]; then
chezmoi git -- commit -am "$1"
echo -n "Push changes? [y/N] "
read -r answer
if [[ $answer =~ ^[Yy]$ ]]; then
chezmoi git push
fi
fi
}
alias .push="chezmoi git push"
alias .pull="chezmoi git pull"
alias .status="chezmoi git status"
alias .diff="chezmoi git diff"
alias .update="chezmoi update"
fi
# Other aliases
alias rce='xdg-open $HOME/.bashrc && xdg-open $HOME/.zshrc && xdg-open $XDG_CONFIG_HOME/bash/.bash_aliases' # Open bash and zsh config files in editor
alias ftpd-simple='python -m pyftpdlib' # Simple FTP server, useful for transferring files between devices
alias obs-save='obs-cmd replay save' # obs-cmd from aur (https://github.com/grigio/obs-cmd) required. Also bound to Alt + Z
alias plasma-restart='systemctl --user restart plasma-plasmashell.service' # Sometimes plasma is buggy and needs a restart, bound to Alt + Shift + Ctrl +
alias arch-fix-broken='paru -S $(paru -Qk 2>/dev/null | grep -v " 0 missing files" | cut -d: -f1) --overwrite "*" --noconfirm'
# XDG aliases
alias wget='wget --hsts-file="$XDG_DATA_HOME"/wget-hsts'
alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME"/yarn/config'
alias units='units --history "$XDG_DATA_HOME"/units_history'
alias nvidia-settings='nvidia-settings --config="$XDG_CONFIG_HOME"/nvidia/settings'
alias adb='HOME="$XDG_DATA_HOME"/android adb'
# If we have local rust installed, set it up
if [[ -f $XDG_DATA_HOME/cargo/env ]]; then
. "$XDG_DATA_HOME/cargo/env"
fi

View File

@@ -0,0 +1,52 @@
# shellcheck shell=bash
# shellcheck disable=SC1090,SC1091,SC2034
# Add local bin to PATH
export PATH="$HOME/.local/bin:$PATH"
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Workaround for SSH/Login sessions
# https://github.com/systemd/systemd/issues/7641#issuecomment-680694017
set -a
if shopt -q login_shell && [[ -f /usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator ]]; then
eval "$(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)"
# Fallback to to manually parsing environment.d
elif [[ -z "$XDG_DATA_HOME" && -z "$XDG_CONFIG_HOME" && -z "$XDG_STATE_HOME" && -z "$XDG_CACHE_HOME" ]]; then
eval "$(<"$HOME/.config/environment.d/xdg.conf")"
fi
set +a
# If we have local bash-completion, use it
[[ -f $HOME/.local/bin/bash_completion ]] && . "$HOME/.local/bin/bash_completion"
# Bash XDG history
HISTFILE="$XDG_STATE_HOME"/bash/history
HISTSIZE=10000
SAVEHIST=10000
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
# Helpful tool: https://bash-prompt-generator.org
# On github: https://github.com/Scriptim/bash-prompt-generator
PS1='[\u@\h \w]\$ '
[[ -f $XDG_CONFIG_HOME/bash/.bash_aliases ]] && source "$XDG_CONFIG_HOME/bash/.bash_aliases"
# Bash specific alias
alias rc='source "$XDG_CONFIG_HOME"/bash/.bashrc'
# https://github.com/pkasemir/find-the-command
[[ -f /usr/share/doc/find-the-command/ftc.bash ]] && source /usr/share/doc/find-the-command/ftc.bash noupdate quiet info
# https://wiki.archlinux.org/title/Pkgfile#Command_not_found
# [[ -f /usr/share/doc/pkgfile/command-not-found.bash ]] && source /usr/share/doc/pkgfile/command-not-found.bash
# Starship after defining custom prompt, easy to remove
hash starship 2>/dev/null && eval "$(starship init bash)"
# Zoxide init has to be last
hash zoxide 2>/dev/null && eval "$(zoxide init bash)"
# Return 0 to indicate success that the script has been sourced to completion
return 0

View File

@@ -0,0 +1,25 @@
{
"chromiumSwitches": {},
"IS_MAXIMIZED": true,
"IS_MINIMIZED": false,
"WINDOW_BOUNDS": {
"x": 4127,
"y": 144,
"width": 1280,
"height": 720
},
"OPEN_ON_STARTUP": false,
"DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true,
"SKIP_HOST_UPDATE": true,
"MIN_WIDTH": 940,
"MIN_HEIGHT": 500,
"openasar": {
"setup": true,
"quickstart": true
},
"trayBalloonShown": true,
"BACKGROUND_COLOR": "#000000",
"enableHardwareAcceleration": true,
"offloadAdmControls": true,
"asyncVideoInputDeviceInit": false
}

110
dot_config/eget/eget.toml Normal file
View File

@@ -0,0 +1,110 @@
[global]
target = "~/.local/bin"
upgrade_only = true
["zyedidia/eget"]
["zyedidia/micro"]
asset_filters = [ "static", ".tar.gz" , "^sha" ]
["ip7z/7zip"]
# Currently not working as 7zip packages use xz filters unsupported by eget/xz go library
#file = "7zzs"
#target = "~/.local/bin/7z"
download_only = true
["sharkdp/bat"]
asset_filters = [ "gnu", ".tar.gz" ]
["BurntSushi/ripgrep"]
["sharkdp/fd"]
asset_filters = [ "gnu" ]
["sharkdp/hyperfine"]
asset_filters = [ "gnu" ]
["ajeetdsouza/zoxide"]
["neovim/neovim"]
asset_filters = [ "x86_64" ]
target = "~/.local/bin/nvim"
["konosubakonoakua/ncdu-zig"]
target = "~/.local/bin/ncdu"
["eza-community/eza"]
asset_filters = [ "gnu", ".tar.gz" ]
["starship/starship"]
asset_filters = [ "gnu" ]
["Byron/dua-cli"]
["doy/rbw"]
["twpayne/chezmoi"]
asset_filters = [ "glibc", ".tar.gz" ]
["scop/bash-completion"]
# Needs manual intervention to install, as its a bash script with a subfolder containing completions
download_only = true
asset_filters = [ ".tar.xz" ]
["srevinsaju/Firefox-Appimage"]
target = "~/.local/bin/firefox"
tag = "firefox"
asset_filters = [ ".AppImage", "^zsync" ]
["BtbN/FFmpeg-Builds"]
asset_filters = [ "^lgpl", "shared", "master", ".tar.xz" ]
download_only = true # Shared libraries aren't extracted correctly, need to do in post install script
["romkatv/zsh-bin"]
asset_filters = [ "^asc" ]
# all = true
file = "bin/zsh"
["xyproto/gendesk"]
asset_filters = [ "static" ]
["neovide/neovide"]
["valicm/VSCode-AppImage"]
asset_filters = [ ".AppImage", "^zsync" ]
target = "~/.local/bin/code"
#["containers/podman"]
# target = "~/.local/bin/podman"
#["89luca89/lilipod"]
# target = "~/.local/bin/lilipod"
["sharkdp/numbat"]
asset_filters = [ "gnu", ".tar.gz" ]
["sharkdp/hexyl"]
asset_filters = [ "gnu", ".tar.gz" ]
["chmln/sd"]
asset_filters = [ "gnu", ".tar.gz" ]
["bootandy/dust"]
asset_filters = [ "gnu", ".tar.gz" ]
["tealdeer-rs/tealdeer"]
["nushell/nushell"]
asset_filters = [ "musl", ".tar.gz" ]
all = true
# TODO: Change to no extract so I can setup shared librarys and terminfo etc, as well as get kitten binary
["kovidgoyal/kitty"]
asset_filters = [ "^sig", "^kitten", "x86_64" ]
["nix-community/nix-user-chroot"]
asset_filters = [ "x86_64", "musl" ]
["fish-shell/fish-shell"]
asset_filters = [ "x86_64", "static" ]
all = true

View File

@@ -0,0 +1,76 @@
# Non github dependancies
if ! hash poetry 2>/dev/null;then
pipx install poetry
fi
if ! hash rustup 2>/dev/null;then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
fi
# Temporarily change directory
pushd $HOME/.local/bin > /dev/null
# Extract what eget could not
# Handle 7z
if compgen -G "7z*tar*" > /dev/null; then
# Extract 7z
tar xf 7z*tar* 7zzs
# Remove/rename extracted 7zzs (7z statically linked) to 7z
mv -f 7zzs 7z
# Remove archive
rm -r 7z*tar*
fi
# Handle bash_completion
if compgen -G "bash-completion*tar*" > /dev/null; then
# Extract bash-completion
tar xf bash-completion*tar*
# Remove old bash_completion
rm -r bash_completion bash_completion.d completions
# Move new bash_completion
mv -f bash-completion*/bash_completion .
mv -f bash-completion*/bash_completion.d .
mv -f bash-completion*/completions .
# Remove extracted files
rm -r bash-completion-*
# Make bash_completion executable
chmod +x bash_completion
fi
if compgen -G "ffmpeg*tar*" > /dev/null; then
# Extract ffmpeg
tar xf ffmpeg*tar*
# Handle shared libraries
rsync --remove-source-files --links $(fd --glob "*.so*") ../lib
# Binaries
mv -f ffmpeg*/bin/* .
# Remove archive
rm -r ffmpeg*tar*
# Remove extracted files
rm -r ffmpeg-*
fi
# Gen Desktop files
gendesk -f -n --pkgname "firefox" --name "Firefox" --exec "firefox %u" --icon "firefox" --categories "Network" --comment "Firefox Web Browser" --genericname "Web Browser"
gendesk -f -n --pkgname "neovide" --name "Neovide" --exec "neovide %F" --icon "neovide" --categories "TextEditor;Development" --comment "Neovim GUI" --genericname "Neovim GUI"
gendesk -f -n --pkgname "code" --name "Visual Studio Code" --exec "code %F" --icon "vscode" --categories "TextEditor;Development" --comment "Visual Studio Code" --genericname "Code Editor"
gendesk -f -n --pkgname "kitty" --name "Kitty" --exec "kitty" --icon "kitty" --categories "Utility" --comment "Kitty Terminal Emulator" --genericname "Terminal Emulator"
gendesk -f -n --pkgname "micro" --name "Micro" --exec "micro %F" --icon "micro" --categories "TextEditor;Development" --comment "Micro Text Editor" --genericname "Text Editor" --terminal=true
# Move desktop files to applications directory
rsync --remove-source-files *.desktop ../share/applications
# Unchange directory
popd > /dev/null

View File

@@ -0,0 +1,5 @@
SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket
{{ if lookPath "ksshaskpass" -}}
SSH_ASKPASS={{- lookPath "ksshaskpass" }}
SSH_ASKPASS_REQUIRE=prefer
{{- end -}}

View File

@@ -1 +0,0 @@
SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket

View File

@@ -12,5 +12,13 @@ GOPATH=$XDG_DATA_HOME/go
GTK2_RC_FILES=$XDG_CONFIG_HOME/gtk-2.0/gtkrc GTK2_RC_FILES=$XDG_CONFIG_HOME/gtk-2.0/gtkrc
NUGET_PACKAGES=$XDG_CACHE_HOME/NuGetPackages NUGET_PACKAGES=$XDG_CACHE_HOME/NuGetPackages
_JAVA_OPTIONS=-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java _JAVA_OPTIONS=-Djava.util.prefs.userRoot=$XDG_CONFIG_HOME/java
RENPY_PATH_TO_SAVES=$XDG_DATA_HOME
WINEPREFIX=$XDG_DATA_HOME/wine WINEPREFIX=$XDG_DATA_HOME/wine
ZDOTDIR=$XDG_CONFIG_HOME/zsh
TEXMFVAR=$XDG_CACHE_HOME/texlive/texmf-var
LEIN_HOME=$XDG_DATA_HOME/lein
JULIA_DEPOT_PATH=$XDG_DATA_HOME/julia:$JULIA_DEPOT_PATH
XCURSOR_PATH=/usr/share/icons:$XDG_DATA_HOME/icons
ANDROID_USER_HOME=$XDG_DATA_HOME/android
NPM_CONFIG_USERCONFIG=$XDG_CONFIG_HOME/npm/npmrc
PYTHON_HISTORY=$XDG_STATE_HOME/python_history
RENPY_PATH_TO_SAVES=$XDG_DATA_HOME/renpy

114
dot_config/gamemode.ini Normal file
View File

@@ -0,0 +1,114 @@
[general]
; The reaper thread will check every 5 seconds for exited clients, for config file changes, and for the CPU/iGPU power balance
reaper_freq=5
; The desired governor is used when entering GameMode instead of "performance"
desiredgov=performance
; The default governor is used when leaving GameMode instead of restoring the original value
;defaultgov=powersave
; The iGPU desired governor is used when the integrated GPU is under heavy load
igpu_desiredgov=powersave
; Threshold to use to decide when the integrated GPU is under heavy load.
; This is a ratio of iGPU Watts / CPU Watts which is used to determine when the
; integraged GPU is under heavy enough load to justify switching to
; igpu_desiredgov. Set this to -1 to disable all iGPU checking and always
; use desiredgov for games.
igpu_power_threshold=0.3
; GameMode can change the scheduler policy to SCHED_ISO on kernels which support it (currently
; not supported by upstream kernels). Can be set to "auto", "on" or "off". "auto" will enable
; with 4 or more CPU cores. "on" will always enable. Defaults to "off".
softrealtime=off
; GameMode can renice game processes. You can put any value between 0 and 20 here, the value
; will be negated and applied as a nice value (0 means no change). Defaults to 0.
; To use this feature, the user must be added to the gamemode group (and then rebooted):
; sudo usermod -aG gamemode $(whoami)
renice=20
; By default, GameMode adjusts the iopriority of clients to BE/0, you can put any value
; between 0 and 7 here (with 0 being highest priority), or one of the special values
; "off" (to disable) or "reset" (to restore Linux default behavior based on CPU priority),
; currently, only the best-effort class is supported thus you cannot set it here
ioprio=0
; Sets whether gamemode will inhibit the screensaver when active
; Defaults to 1
inhibit_screensaver=1
; Sets whether gamemode will disable split lock mitigation when active
; Defaults to 1
disable_splitlock=1
[filter]
; If "whitelist" entry has a value(s)
; gamemode will reject anything not in the whitelist
;whitelist=RiseOfTheTombRaider
; Gamemode will always reject anything in the blacklist
;blacklist=HalfLife3
; glxgears
[gpu]
; Here Be Dragons!
; Warning: Use these settings at your own risk
; Any damage to hardware incurred due to this feature is your responsibility and yours alone
; It is also highly recommended you try these settings out first manually to find the sweet spots
; Setting this to the keyphrase "accept-responsibility" will allow gamemode to apply GPU optimisations such as overclocks
;apply_gpu_optimisations=0
; The DRM device number on the system (usually 0), ie. the number in /sys/class/drm/card0/
;gpu_device=0
; Nvidia specific settings
; Requires the coolbits extension activated in nvidia-xconfig
; This corresponds to the desired GPUPowerMizerMode
; "Adaptive"=0 "Prefer Maximum Performance"=1 and "Auto"=2
; See NV_CTRL_GPU_POWER_MIZER_MODE and friends in https://github.com/NVIDIA/nvidia-settings/blob/master/src/libXNVCtrl/NVCtrl.h
;nv_powermizer_mode=1
; These will modify the core and mem clocks of the highest perf state in the Nvidia PowerMizer
; They are measured as Mhz offsets from the baseline, 0 will reset values to default, -1 or unset will not modify values
;nv_core_clock_mhz_offset=0
;nv_mem_clock_mhz_offset=0
; AMD specific settings
; Requires a relatively up to date AMDGPU kernel module
; See: https://dri.freedesktop.org/docs/drm/gpu/amdgpu.html#gpu-power-thermal-controls-and-monitoring
; It is also highly recommended you use lm-sensors (or other available tools) to verify card temperatures
; This corresponds to power_dpm_force_performance_level, "manual" is not supported for now
;amd_performance_level=high
[cpu]
; Parking or Pinning can be enabled with either "yes", "true" or "1" and disabled with "no", "false" or "0".
; Either can also be set to a specific list of cores to park or pin, comma separated list where "-" denotes
; a range. E.g "park_cores=1,8-15" would park cores 1 and 8 to 15.
; The default is uncommented is to disable parking but enable pinning. If either is enabled the code will
; currently only properly autodetect Ryzen 7900x3d, 7950x3d and Intel CPU:s with E- and P-cores.
; For Core Parking, user must be added to the gamemode group (not required for Core Pinning):
; sudo usermod -aG gamemode $(whoami)
;park_cores=no
;pin_cores=yes
[supervisor]
; This section controls the new gamemode functions gamemode_request_start_for and gamemode_request_end_for
; The whilelist and blacklist control which supervisor programs are allowed to make the above requests
;supervisor_whitelist=
;supervisor_blacklist=
; In case you want to allow a supervisor to take full control of gamemode, this option can be set
; This will only allow gamemode clients to be registered by using the above functions by a supervisor client
;require_supervisor=0
[custom]
; Custom scripts (executed using the shell) when gamemode starts and ends
;start=notify-send "GameMode started"
; /home/me/bin/stop_foldingathome.sh
;end=notify-send "GameMode ended"
; /home/me/bin/start_foldingathome.sh
; Timeout for scripts (seconds). Scripts will be killed if they do not complete within this time.
;script_timeout=10

View File

@@ -0,0 +1,32 @@
# config.nu
#
# Installed by:
# version = "0.103.0"
#
# This file is used to override default Nushell settings, define
# (or import) custom commands, or run any other startup tasks.
# See https://www.nushell.sh/book/configuration.html
#
# This file is loaded after env.nu and before login.nu
#
# You can open this file in your default editor using:
# config nu
#
# See `help config nu` for more options
#
# You can remove these comments if you want or leave
# them for future reference.
alias corels = ls
def --wrapped ls [...rest] {
if '-a' in $rest or '--all' in $rest or not (".hidden" | path exists) {
(corels ...$rest)
} else {
(corels ...$rest) | where name not-in (cat .hidden)
}
}
mkdir ($nu.data-dir | path join "vendor/autoload")
starship init nu | save -f ($nu.data-dir | path join "vendor/autoload/starship.nu")

22
dot_config/nushell/env.nu Normal file
View File

@@ -0,0 +1,22 @@
# env.nu
#
# Installed by:
# version = "0.103.0"
#
# Previously, environment variables were typically configured in `env.nu`.
# In general, most configuration can and should be performed in `config.nu`
# or one of the autoload directories.
#
# This file is generated for backwards compatibility for now.
# It is loaded before config.nu and login.nu
#
# See https://www.nushell.sh/book/configuration.html
#
# Also see `help config env` for more options.
#
# You can remove these comments if you want or leave
# them for future reference.
$env.config.show_banner = false
$env.config.buffer_editor = "micro"

View File

@@ -0,0 +1,122 @@
[General]
Name=Default
[Output]
Mode=Simple
FilenameFormatting=%CCYY-%MM-%DD %hh-%mm-%ss
DelayEnable=false
DelaySec=20
DelayPreserve=true
Reconnect=true
RetryDelay=2
MaxRetries=25
BindIP=default
IPFamily=IPv4+IPv6
NewSocketLoopEnable=false
LowLatencyEnable=false
[Stream1]
IgnoreRecommended=false
EnableMultitrackVideo=false
MultitrackVideoMaximumAggregateBitrateAuto=true
MultitrackVideoMaximumVideoTracksAuto=true
[SimpleOutput]
FilePath=/home/isaac/Videos/OBS
RecFormat2=hybrid_mp4
VBitrate=10000
ABitrate=160
Preset=veryfast
NVENCPreset2=p5
RecQuality=Small
RecRB=true
RecRBTime=32
RecRBSize=4096
RecRBPrefix=Replay
StreamAudioEncoder=aac
RecAudioEncoder=aac
RecTracks=15
StreamEncoder=nvenc_hevc
RecEncoder=nvenc_hevc
UseAdvanced=false
[AdvOut]
ApplyServiceSettings=true
UseRescale=false
TrackIndex=1
VodTrackIndex=2
Encoder=obs_x264
RecType=Standard
RecFilePath=/home/isaac/Videos/OBS
RecFormat2=hybrid_mp4
RecUseRescale=false
RecTracks=15
RecEncoder=obs_x264
FLVTrack=1
StreamMultiTrackAudioMixes=1
FFOutputToFile=true
FFFilePath=/home/isaac
FFVBitrate=2500
FFVGOPSize=250
FFUseRescale=false
FFIgnoreCompat=false
FFABitrate=160
FFAudioMixes=1
Track1Bitrate=160
Track2Bitrate=160
Track3Bitrate=160
Track4Bitrate=160
Track5Bitrate=160
Track6Bitrate=160
RecSplitFileTime=15
RecSplitFileSize=2048
RecRB=true
RecRBTime=180
RecRBSize=2048
AudioEncoder=libfdk_aac
RecAudioEncoder=libfdk_aac
RecSplitFileType=Time
FFFormat=
FFFormatMimeType=
FFVEncoderId=0
FFVEncoder=
FFAEncoderId=0
FFAEncoder=
RescaleRes=1920x1080
RecRescaleRes=1280x720
FFRescaleRes=1280x720
Track1Name=Master
Track2Name=Game
Track3Name=Mic
Track4Name=Discord
[Video]
BaseCX=1920
BaseCY=1080
OutputCX=1920
OutputCY=1080
FPSType=0
FPSCommon=60
FPSInt=120
FPSNum=30
FPSDen=1
ScaleType=bicubic
ColorFormat=NV12
ColorSpace=709
ColorRange=Partial
SdrWhiteLevel=300
HdrNominalPeakLevel=1000
[Audio]
MonitoringDeviceId=default
MonitoringDeviceName=Default
SampleRate=48000
ChannelSetup=Stereo
MeterDecayRate=23.53
PeakMeterType=0
[Panels]
CookieId=F3DCE35095516646
[Hotkeys]
ReplayBuffer={"ReplayBuffer.Save":[]}

View File

@@ -0,0 +1,17 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvOGhkRENSRGdkTExaQWlE
a2Z4aWhrM0syYzZnV3hmN1ZYVUdnaHI5cENJCnAzU3dJVkl6SmVVZnlLOU5LQTEx
amF5UzVJZFZNYjA5LzZmOEZ1RUsxcWcKLS0tIGhZVXhweHp1TW9HcWRRZVBCT1p5
aDVjMGNJRzdtY0lPM3pVbEd0a0VrRDQKVPJcEYTMUtdVm1Pb1nel8uddL3sGZ5c0
RkRuTUbU7VapANL2KL1VyZNuhSnKfzFSuBOKNYJObIK4KAq0SOpj/5cqWoMK8J6D
ajxr4Ozk6crXC6YN9nIXqzR0Kckr1BuLsCb2cz0/nv4O4cnOXwFu4foo05sV7t/H
oZXyQpqKckbPHfC1p6HMgsQ3R3QNvOsx5nTHVoqBTqfkV1RhhCdOFwV2eXz6UByC
6HqciELPs1LPEJCGS0Gr5r3Ix61Z45Ttgr13hSYj+83SnkNQyzm2tfOgywDy5BOR
Gu1+Tcim918IhgWDrp1wvf4O6Gz7+X6NTisVu8oRl1jLI6cyNL/LRF4tTc4qnifN
zH5LTQea3emwcxidimrgV3fXUXTQ2mFpJPLvfAkzi6ROs+1CjorKHPW5Jk25tGjM
APYLi6XaBgebbiU6OHnhbJ9gPAk/alClGYIDJ/EfsWoQp8Ys5Ji6QHLcf+4SmEdH
X1CLVhSz6pYpFO+8wyP2g+n7ugfg5UQF+jcs6CR2nEuCKCVDJOjF25i/ZHf5dqZ4
zgx9gk7a/1Mb8OJimU2zrK9HNFwPRplrhijv6/79PJ/xIDDQB0oqvMsHfEBDP5cE
bA5hg7C2HPqmk/LKi5wEX4RGFwyMRi2yRHvTt1IaXtc0MzRHN27BUhHkFvK1fvzB
S4TGXW1713dgYFbfoD3evBNMHrk1XZSSUaoHliJHRMI8WOtyQdwj+6QTqCol
-----END AGE ENCRYPTED FILE-----

View File

@@ -0,0 +1,642 @@
{
"current_scene": "Display Capture",
"current_program_scene": "Display Capture",
"scene_order": [
{
"name": "Display Capture"
}
],
"name": "Gaming",
"sources": [
{
"prev_ver": 536870914,
"name": "Display Capture",
"uuid": "2a0cda15-1329-4224-96aa-0633210d2dae",
"id": "scene",
"versioned_id": "scene",
"settings": {
"id_counter": 7,
"custom_size": false,
"items": [
{
"name": "Screen Capture",
"source_uuid": "23864929-52b2-4b4a-83f9-10d58a6ea4c9",
"visible": true,
"locked": false,
"rot": 0.0,
"scale_ref": {
"x": 1920.0,
"y": 1080.0
},
"align": 5,
"bounds_type": 0,
"bounds_align": 0,
"bounds_crop": false,
"crop_left": 0,
"crop_top": 0,
"crop_right": 0,
"crop_bottom": 0,
"id": 1,
"group_item_backup": false,
"pos": {
"x": 0.0,
"y": 0.0
},
"pos_rel": {
"x": -1.7777777910232544,
"y": -1.0
},
"scale": {
"x": 1.0,
"y": 1.0
},
"scale_rel": {
"x": 1.0,
"y": 1.0
},
"bounds": {
"x": 0.0,
"y": 0.0
},
"bounds_rel": {
"x": 0.0,
"y": 0.0
},
"scale_filter": "disable",
"blend_method": "default",
"blend_type": "normal",
"show_transition": {
"duration": 0
},
"hide_transition": {
"duration": 0
},
"private_settings": {}
},
{
"name": "Game Capture",
"source_uuid": "f8481b2c-170c-425b-b259-4cbb2ec12b8b",
"visible": true,
"locked": false,
"rot": 0.0,
"scale_ref": {
"x": 1920.0,
"y": 1080.0
},
"align": 5,
"bounds_type": 0,
"bounds_align": 0,
"bounds_crop": false,
"crop_left": 0,
"crop_top": 0,
"crop_right": 0,
"crop_bottom": 0,
"id": 5,
"group_item_backup": false,
"pos": {
"x": 0.0,
"y": 0.0
},
"pos_rel": {
"x": -1.7777777910232544,
"y": -1.0
},
"scale": {
"x": 1.0,
"y": 1.0
},
"scale_rel": {
"x": 1.0,
"y": 1.0
},
"bounds": {
"x": 0.0,
"y": 0.0
},
"bounds_rel": {
"x": 0.0,
"y": 0.0
},
"scale_filter": "disable",
"blend_method": "default",
"blend_type": "normal",
"show_transition": {
"duration": 0
},
"hide_transition": {
"duration": 0
},
"private_settings": {}
},
{
"name": "Game Audio",
"source_uuid": "80c60256-48e7-4397-8163-3bb44480d9ab",
"visible": true,
"locked": false,
"rot": 0.0,
"scale_ref": {
"x": 1920.0,
"y": 1080.0
},
"align": 5,
"bounds_type": 0,
"bounds_align": 0,
"bounds_crop": false,
"crop_left": 0,
"crop_top": 0,
"crop_right": 0,
"crop_bottom": 0,
"id": 7,
"group_item_backup": false,
"pos": {
"x": 0.0,
"y": 0.0
},
"pos_rel": {
"x": -1.7777777910232544,
"y": -1.0
},
"scale": {
"x": 1.0,
"y": 1.0
},
"scale_rel": {
"x": 1.0,
"y": 1.0
},
"bounds": {
"x": 0.0,
"y": 0.0
},
"bounds_rel": {
"x": 0.0,
"y": 0.0
},
"scale_filter": "disable",
"blend_method": "default",
"blend_type": "normal",
"show_transition": {
"duration": 0
},
"hide_transition": {
"duration": 0
},
"private_settings": {}
},
{
"name": "Discord",
"source_uuid": "1f07b61b-b59b-4699-8435-e61d6ff8d8da",
"visible": true,
"locked": false,
"rot": 0.0,
"scale_ref": {
"x": 1920.0,
"y": 1080.0
},
"align": 5,
"bounds_type": 0,
"bounds_align": 0,
"bounds_crop": false,
"crop_left": 0,
"crop_top": 0,
"crop_right": 0,
"crop_bottom": 0,
"id": 3,
"group_item_backup": false,
"pos": {
"x": 0.0,
"y": 0.0
},
"pos_rel": {
"x": -1.7777777910232544,
"y": -1.0
},
"scale": {
"x": 1.0,
"y": 1.0
},
"scale_rel": {
"x": 1.0,
"y": 1.0
},
"bounds": {
"x": 0.0,
"y": 0.0
},
"bounds_rel": {
"x": 0.0,
"y": 0.0
},
"scale_filter": "disable",
"blend_method": "default",
"blend_type": "normal",
"show_transition": {
"duration": 0
},
"hide_transition": {
"duration": 0
},
"private_settings": {}
},
{
"name": "Mic",
"source_uuid": "481a2879-3449-4d07-b2c2-812e978a2eab",
"visible": true,
"locked": false,
"rot": 0.0,
"scale_ref": {
"x": 1920.0,
"y": 1080.0
},
"align": 5,
"bounds_type": 0,
"bounds_align": 0,
"bounds_crop": false,
"crop_left": 0,
"crop_top": 0,
"crop_right": 0,
"crop_bottom": 0,
"id": 4,
"group_item_backup": false,
"pos": {
"x": 0.0,
"y": 0.0
},
"pos_rel": {
"x": -1.7777777910232544,
"y": -1.0
},
"scale": {
"x": 1.0,
"y": 1.0
},
"scale_rel": {
"x": 1.0,
"y": 1.0
},
"bounds": {
"x": 0.0,
"y": 0.0
},
"bounds_rel": {
"x": 0.0,
"y": 0.0
},
"scale_filter": "disable",
"blend_method": "default",
"blend_type": "normal",
"show_transition": {
"duration": 0
},
"hide_transition": {
"duration": 0
},
"private_settings": {}
}
]
},
"mixers": 0,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {
"OBSBasic.SelectScene": [],
"libobs.show_scene_item.1": [],
"libobs.hide_scene_item.1": [],
"libobs.show_scene_item.5": [],
"libobs.hide_scene_item.5": [],
"libobs.show_scene_item.7": [],
"libobs.hide_scene_item.7": [],
"libobs.show_scene_item.3": [],
"libobs.hide_scene_item.3": [],
"libobs.show_scene_item.4": [],
"libobs.hide_scene_item.4": []
},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e",
"private_settings": {}
},
{
"prev_ver": 536870914,
"name": "Screen Capture",
"uuid": "23864929-52b2-4b4a-83f9-10d58a6ea4c9",
"id": "pipewire-screen-capture-source",
"versioned_id": "pipewire-screen-capture-source",
"settings": {
"RestoreToken": "1fc29a27-31d7-48e9-be88-6da6c592334b"
},
"mixers": 0,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {}
},
{
"prev_ver": 536870914,
"name": "Discord",
"uuid": "1f07b61b-b59b-4699-8435-e61d6ff8d8da",
"id": "pipewire_audio_application_capture",
"versioned_id": "pipewire_audio_application_capture",
"settings": {
"TargetName": "Discord",
"MatchPriorty": 1,
"ExceptApp": false
},
"mixers": 201,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {
"libobs.mute": [],
"libobs.unmute": [],
"libobs.push-to-mute": [],
"libobs.push-to-talk": []
},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {},
"filters": [
{
"prev_ver": 536870914,
"name": "Limiter",
"uuid": "d659ba67-4350-446a-a50b-855bc8d4f202",
"id": "limiter_filter",
"versioned_id": "limiter_filter",
"settings": {},
"mixers": 255,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {}
}
]
},
{
"prev_ver": 536870914,
"name": "Mic",
"uuid": "481a2879-3449-4d07-b2c2-812e978a2eab",
"id": "pipewire_audio_input_capture",
"versioned_id": "pipewire_audio_input_capture",
"settings": {},
"mixers": 197,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {
"libobs.mute": [],
"libobs.unmute": [],
"libobs.push-to-mute": [],
"libobs.push-to-talk": []
},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {},
"filters": [
{
"prev_ver": 536870914,
"name": "Noise Suppression",
"uuid": "91e69fad-ada8-43e6-9d13-7aa48fe508dd",
"id": "noise_suppress_filter",
"versioned_id": "noise_suppress_filter_v2",
"settings": {},
"mixers": 255,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {}
},
{
"prev_ver": 536870914,
"name": "Noise Gate",
"uuid": "dbfba3f9-d478-46ae-824a-6284dcd44cee",
"id": "noise_gate_filter",
"versioned_id": "noise_gate_filter",
"settings": {},
"mixers": 255,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {}
}
]
},
{
"prev_ver": 536870914,
"name": "Game Capture",
"uuid": "f8481b2c-170c-425b-b259-4cbb2ec12b8b",
"id": "vkcapture-source",
"versioned_id": "vkcapture-source",
"settings": {
"allow_transparency": true,
"force_hdr": false
},
"mixers": 0,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {}
},
{
"prev_ver": 536870914,
"name": "Game Audio",
"uuid": "80c60256-48e7-4397-8163-3bb44480d9ab",
"id": "pipewire_audio_application_capture",
"versioned_id": "pipewire_audio_application_capture",
"settings": {
"AppToAdd": "electron",
"CaptureMode": 1,
"MatchPriorty": 0,
"ExceptApp": true,
"apps": [
{
"value": "Discord",
"uuid": "2db597ac-3993-4c10-88e4-3a28899e3bbd",
"selected": false,
"hidden": false
},
{
"value": "Firefox",
"uuid": "215c229d-28f5-41b7-9b71-55f51fd8dcef",
"selected": false,
"hidden": false
},
{
"value": "Steam",
"uuid": "10e62abf-3ff4-4bb1-b464-0f78abd21841",
"selected": false,
"hidden": false
},
{
"value": "OBS",
"uuid": "1d50838b-0e3a-481b-a957-69d656711ceb",
"selected": false,
"hidden": false
},
{
"value": "Electron",
"uuid": "a2b0af0f-e4ea-48b6-bf21-277d26054cf8",
"selected": false,
"hidden": false
}
]
},
"mixers": 195,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {
"libobs.mute": [],
"libobs.unmute": [],
"libobs.push-to-mute": [],
"libobs.push-to-talk": []
},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {}
}
],
"groups": [],
"quick_transitions": [
{
"name": "Cut",
"duration": 300,
"hotkeys": [],
"id": 1,
"fade_to_black": false
},
{
"name": "Fade",
"duration": 300,
"hotkeys": [],
"id": 2,
"fade_to_black": false
},
{
"name": "Fade",
"duration": 300,
"hotkeys": [],
"id": 3,
"fade_to_black": true
}
],
"transitions": [],
"saved_projectors": [],
"canvases": [],
"current_transition": "Fade",
"transition_duration": 300,
"preview_locked": false,
"scaling_enabled": false,
"scaling_level": -69,
"scaling_off_x": 0.0,
"scaling_off_y": 0.0,
"virtual-camera": {
"type2": 3
},
"modules": {
"scripts-tool": [],
"output-timer": {
"streamTimerHours": 0,
"streamTimerMinutes": 0,
"streamTimerSeconds": 30,
"recordTimerHours": 0,
"recordTimerMinutes": 0,
"recordTimerSeconds": 30,
"autoStartStreamTimer": false,
"autoStartRecordTimer": false,
"pauseRecordTimer": true
}
},
"resolution": {
"x": 1920,
"y": 1080
},
"version": 2
}

View File

@@ -0,0 +1,227 @@
{
"current_scene": "Virtual Cam",
"current_program_scene": "Virtual Cam",
"scene_order": [
{
"name": "Virtual Cam"
}
],
"name": "Webcam",
"sources": [
{
"prev_ver": 536870913,
"name": "Virtual Cam",
"uuid": "11ddcc7c-a668-4282-bee5-8847a42155dd",
"id": "scene",
"versioned_id": "scene",
"settings": {
"id_counter": 3,
"custom_size": false,
"items": [
{
"name": "Video Capture Device (V4L2)",
"source_uuid": "6d218351-f947-42ca-9772-26e606173df6",
"visible": true,
"locked": false,
"rot": 0.0,
"scale_ref": {
"x": 1920.0,
"y": 1080.0
},
"align": 5,
"bounds_type": 2,
"bounds_align": 0,
"bounds_crop": false,
"crop_left": 0,
"crop_top": 0,
"crop_right": 0,
"crop_bottom": 0,
"id": 2,
"group_item_backup": false,
"pos": {
"x": 0.0,
"y": 0.0
},
"pos_rel": {
"x": -1.7777777910232544,
"y": -1.0
},
"scale": {
"x": 1.5,
"y": 1.5
},
"scale_rel": {
"x": 1.5,
"y": 1.5
},
"bounds": {
"x": 1920.0,
"y": 1080.0
},
"bounds_rel": {
"x": 3.555555582046509,
"y": 2.0
},
"scale_filter": "disable",
"blend_method": "default",
"blend_type": "normal",
"show_transition": {
"duration": 0
},
"hide_transition": {
"duration": 0
},
"private_settings": {}
}
]
},
"mixers": 0,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {
"OBSBasic.SelectScene": [],
"libobs.show_scene_item.2": [],
"libobs.hide_scene_item.2": []
},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"canvas_uuid": "6c69626f-6273-4c00-9d88-c5136d61696e",
"private_settings": {}
},
{
"prev_ver": 536870913,
"name": "Video Capture Device (V4L2)",
"uuid": "6d218351-f947-42ca-9772-26e606173df6",
"id": "v4l2_input",
"versioned_id": "v4l2_input",
"settings": {
"device_id": "/dev/video0",
"White Balance, Automatic": true,
"Power Line Frequency": 2,
"White Balance Temperature": 3000,
"Auto Exposure": 0,
"Exposure Time, Absolute": 10,
"Zoom, Absolute": 10,
"input": 0,
"pixelformat": 1196444237,
"resolution": 5497558139600,
"framerate": 30,
"color_range": 2
},
"mixers": 0,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {},
"filters": [
{
"prev_ver": 536870913,
"name": "UnFish/Fish Lens",
"uuid": "0340a54e-ff5a-4c8e-b132-660a43b45e33",
"id": "filter-fish-lens",
"versioned_id": "filter-fish-lens",
"settings": {
"fish_power": -0.1
},
"mixers": 0,
"sync": 0,
"flags": 0,
"volume": 1.0,
"balance": 0.5,
"enabled": true,
"muted": false,
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"hotkeys": {},
"deinterlace_mode": 0,
"deinterlace_field_order": 0,
"monitoring_type": 0,
"private_settings": {}
}
]
}
],
"groups": [],
"quick_transitions": [
{
"name": "Cut",
"duration": 300,
"hotkeys": [],
"id": 1,
"fade_to_black": false
},
{
"name": "Fade",
"duration": 300,
"hotkeys": [],
"id": 2,
"fade_to_black": false
},
{
"name": "Fade",
"duration": 300,
"hotkeys": [],
"id": 3,
"fade_to_black": true
}
],
"transitions": [],
"saved_projectors": [],
"canvases": [],
"current_transition": "Fade",
"transition_duration": 300,
"preview_locked": false,
"scaling_enabled": false,
"scaling_level": -10,
"scaling_off_x": 0.0,
"scaling_off_y": 0.0,
"virtual-camera": {
"type2": 3
},
"modules": {
"scripts-tool": [
{
"path": "/home/isaac/.config/obs-studio/plugins/filter-fish-lens.lua",
"settings": {}
}
],
"output-timer": {
"streamTimerHours": 0,
"streamTimerMinutes": 0,
"streamTimerSeconds": 30,
"recordTimerHours": 0,
"recordTimerMinutes": 0,
"recordTimerSeconds": 30,
"autoStartStreamTimer": false,
"autoStartRecordTimer": false,
"pauseRecordTimer": true
}
},
"resolution": {
"x": 1920,
"y": 1080
},
"version": 2
}

View File

@@ -0,0 +1,21 @@
[General]
Pre31Migrated=true
MaxLogs=10
InfoIncrement=-1
ProcessPriority=Normal
EnableAutoUpdates=true
LastVersion=536870914
BrowserHWAccel=true
[Video]
Renderer=OpenGL
[Locations]
Configuration=/home/isaac/.config
SceneCollections=/home/isaac/.config
Profiles=/home/isaac/.config
PluginManagerSettings=/home/isaac/.config
[PropertiesWindow]
cx=720
cy=580

View File

@@ -0,0 +1,183 @@
-- Inspired by Corner Pin effect filter v1.1 by khaver
obs = obslua
bit = require("bit")
TEXT_FILTER_NAME = 'UnFish/Fish Lens'
TEXT_FISH_POWER = 'Strength'
SETTING_FISH_POWER = 'fish_power'
source_def = {}
source_def.id = 'filter-fish-lens'
source_def.type = obs.OBS_SOURCE_TYPE_FILTER
source_def.output_flags = bit.bor(obs.OBS_SOURCE_VIDEO)
function set_render_size(filter)
target = obs.obs_filter_get_target(filter.context)
local width, height
if target == nil then
width = 0
height = 0
else
width = obs.obs_source_get_base_width(target)
height = obs.obs_source_get_base_height(target)
end
filter.width = width
filter.height = height
end
source_def.get_name = function()
return TEXT_FILTER_NAME
end
source_def.create = function(settings, source)
filter = {}
filter.params = {}
filter.context = source
set_render_size(filter)
obs.obs_enter_graphics()
filter.effect = obs.gs_effect_create(shader, nil, nil)
if filter.effect ~= nil then
filter.params.fish_power = obs.gs_effect_get_param_by_name(filter.effect, 'fish_power')
filter.params.texture_width = obs.gs_effect_get_param_by_name(filter.effect, 'texture_width')
filter.params.texture_height = obs.gs_effect_get_param_by_name(filter.effect, 'texture_height')
end
obs.obs_leave_graphics()
if filter.effect == nil then
source_def.destroy(filter)
return nil
end
source_def.update(filter, settings)
return filter
end
source_def.destroy = function(filter)
if filter.effect ~= nil then
obs.obs_enter_graphics()
obs.gs_effect_destroy(filter.effect)
obs.obs_leave_graphics()
end
end
source_def.get_width = function(filter)
return filter.width
end
source_def.get_height = function(filter)
return filter.height
end
source_def.update = function(filter, settings)
filter.fish_power = obs.obs_data_get_double(settings, SETTING_FISH_POWER)
set_render_size(filter)
end
source_def.video_render = function(filter, effect)
if not obs.obs_source_process_filter_begin(filter.context, obs.GS_RGBA, obs.OBS_NO_DIRECT_RENDERING) then
return
end
obs.gs_effect_set_float(filter.params.fish_power, filter.fish_power)
obs.gs_effect_set_float(filter.params.texture_width, filter.width)
obs.gs_effect_set_float(filter.params.texture_height, filter.height)
obs.obs_source_process_filter_end(filter.context, filter.effect, filter.width, filter.height)
end
source_def.get_properties = function(settings)
props = obs.obs_properties_create()
obs.obs_properties_add_float_slider(props, SETTING_FISH_POWER, TEXT_FISH_POWER, -1.0, 2.0, 0.001)
return props
end
source_def.get_defaults = function(settings)
obs.obs_data_set_default_double(settings, SETTING_FISH_POWER, -0.18)
end
source_def.video_tick = function(filter, seconds)
set_render_size(filter)
end
function script_description()
return "Adds new video effect filter named '" .. TEXT_FILTER_NAME .. "' to imitate lens distortion"
end
function script_load(settings)
obs.obs_register_source(source_def)
end
shader = [[
// Adaptation by Suslik V
// Based on the Sharpness shader of OBS Studio v27.0.0,
// And the https://github.com/Oncorporation/obs-shaderfilter/
uniform float4x4 ViewProj;
uniform texture2d image;
uniform float fish_power;
uniform float texture_width;
uniform float texture_height;
sampler_state def_sampler {
Filter = Linear;
AddressU = Clamp;
AddressV = Clamp;
};
struct VertData {
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
VertData VSDefault(VertData v_in)
{
VertData vert_out;
vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj);
vert_out.uv = v_in.uv;
return vert_out;
}
float4 PSDrawBare(VertData v_in) : TARGET
{
int center_x_percent = 50;
int center_y_percent = 50;
float power = fish_power;
float2 uv_pixel_interval;
uv_pixel_interval.x = 1.0 / texture_width;
uv_pixel_interval.y = 1.0 / texture_height;
float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01);
float2 uv = v_in.uv;
if (power >= 0.0001) {
float b = sqrt(dot(center_pos, center_pos));
uv = center_pos + normalize(v_in.uv - center_pos) * tan(distance(center_pos, v_in.uv) * power) * b / tan( b * power);
} else if (power <= -0.0001) {
float b;
if (uv_pixel_interval.x < uv_pixel_interval.y){
b = center_pos.x;
} else {
b = center_pos.y;
}
uv = center_pos + normalize(v_in.uv - center_pos) * atan(distance(center_pos, v_in.uv) * -power * 10.0) * b / atan(-power * b * 10.0);
}
return image.Sample(def_sampler, uv);
}
technique Draw
{
pass
{
vertex_shader = VSDefault(v_in);
pixel_shader = PSDrawBare(v_in);
}
}
]]

View File

@@ -20,7 +20,8 @@ RemoveMake
#UseAsk #UseAsk
#SaveChanges #SaveChanges
CombinedUpgrade CombinedUpgrade
CleanAfter BatchInstall
#CleanAfter
#UpgradeMenu #UpgradeMenu
NewsOnUpgrade NewsOnUpgrade
SkipReview SkipReview

View File

@@ -5,6 +5,7 @@ username.style_user = "white"
hostname.ssh_only = false hostname.ssh_only = false
hostname.format = "[$ssh_symbol$hostname]($style)" hostname.format = "[$ssh_symbol$hostname]($style)"
hostname.style = "white" hostname.style = "white"
hostname.ssh_symbol = " 🌐 "
directory.truncate_to_repo = false directory.truncate_to_repo = false
directory.format = "[$path]($style)[$read_only]($read_only_style)" directory.format = "[$path]($style)[$read_only]($read_only_style)"
directory.style = "white" directory.style = "white"

View File

@@ -0,0 +1,6 @@
[Unit]
Description=Disable Auto-Mute on sound card on a range of 10 cards, since it can vary
[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c 'for i in {1..10}; do amixer -c $i sset "Auto-Mute Mode" Disabled; done; exit 0'

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Run amixer autounmute every 10 minutes
[Timer]
OnBootSec=1min
OnUnitActiveSec=10min
Persistent=true
[Install]
WantedBy=timers.target

View File

@@ -0,0 +1,6 @@
[Unit]
Description=Kill any long living kioworker threads
[Service]
Type=oneshot
ExecStart=/usr/bin/pkill kioworker

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Kill kioworker threads every 10 minutes
[Timer]
OnBootSec=1min
OnUnitActiveSec=10min
Persistent=true
[Install]
WantedBy=timers.target

View File

@@ -0,0 +1,9 @@
# If not running interactively, don't do anything
if (! $?prompt) return
# Set starship if it's installed
if (! `which starship >& /dev/null`) eval `starship init tcsh`
# Just use bash
set SHELL = "/bin/bash"
exec $SHELL -l

View File

@@ -0,0 +1,2 @@
[updates]
auto_update = true

View File

@@ -0,0 +1,16 @@
# regular devices
monitor.alsa.rules = [
{
matches = [
{
# Matches all sources
node.name = "~alsa_card.*"
}
]
actions = {
update-props = {
api.alsa.soft-mixer = true
}
}
}
]

View File

@@ -0,0 +1,29 @@
# https://old.reddit.com/r/linux_gaming/comments/14rghc5/solution_crackly_audio_while_gaming_w_pipewire/
context.modules = [
#{ name = <module-name>
# ( args = { <key> = <value> ... } )
# ( flags = [ ( ifexists ) ( nofail ) ] )
# ( condition = [ { <key> = <value> ... } ... ] )
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
# If condition is given, the module is loaded only when the context
# properties all match the match rules.
#
# Uses realtime scheduling to boost the audio thread priorities. This uses
# RTKit if the user doesn't have permission to use regular realtime
# scheduling.
{ name = libpipewire-module-rt
args = {
nice.level = -20
rt.prio = 90
rt.time.soft = 200000
rt.time.hard = 200000
}
flags = [ ifexists nofail ]
}
]

View File

@@ -0,0 +1,40 @@
# regular devices
monitor.alsa.rules = [
{
matches = [
{
# Matches all sources
node.name = "~alsa_input.*"
},
{
# Matches all sinks
node.name = "~alsa_output.*"
}
]
actions = {
update-props = {
session.suspend-timeout-seconds = 0
}
}
}
]
# bluetooth devices
monitor.bluez.rules = [
{
matches = [
{
# Matches all sources
node.name = "~bluez_input.*"
},
{
# Matches all sinks
node.name = "~bluez_output.*"
}
]
actions = {
update-props = {
session.suspend-timeout-seconds = 0
}
}
}
]

View File

@@ -0,0 +1,16 @@
access.rules = [
{
matches = [
{
application.process.binary = discord
application.process.binary = chromeium
application.process.binary = firefox
}
]
actions = {
update-props = {
default_permissions = "rx"
}
}
}
]

65
dot_config/zsh/dot_zshrc Normal file
View File

@@ -0,0 +1,65 @@
# shellcheck shell=bash
# shellcheck disable=SC1090,SC1091,SC2034
# Add local bin to PATH
export PATH="$HOME/.local/bin:$PATH"
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Workaround for SSH/Login sessions
# https://github.com/systemd/systemd/issues/7641#issuecomment-680694017
set -a
if [[ -o login && -f /usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator ]]; then
eval "$(/usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator)"
# Fallback to to manually parsing environment.d
elif [[ -z "$XDG_DATA_HOME" && -z "$XDG_CONFIG_HOME" && -z "$XDG_STATE_HOME" && -z "$XDG_CACHE_HOME" ]]; then
eval "$(<"$HOME/.config/environment.d/xdg.conf")"
fi
set +a
autoload -Uz promptinit
autoload -Uz compinit
compinit -d "$XDG_CACHE_HOME/zsh/zcompdump-$ZSH_VERSION"
promptinit
# Some zsh plugins
[[ -f /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] && source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
[[ -f /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ]] && source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
bindkey "^[[3~" delete-char
# Zsh XDG history
HISTFILE="$XDG_STATE_HOME"/zsh/history
HISTSIZE=10000
SAVEHIST=10000
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt INC_APPEND_HISTORY_TIME
# Helpful tool: https://zsh-prompt-generator.site/
# On github: https://github.com/k-yokoishi/zsh-prompt-generator
PROMPT="[%n@%m %~]$ "
RPROMPT="%?:%h | %*"
[[ -f $XDG_CONFIG_HOME/bash/.bash_aliases ]] && source "$XDG_CONFIG_HOME/bash/.bash_aliases"
# Zsh specific alias
alias rc='source "$XDG_CONFIG_HOME"/zsh/.zshrc'
# https://github.com/pkasemir/find-the-command
[[ -f /usr/share/doc/find-the-command/ftc.zsh ]] && source /usr/share/doc/find-the-command/ftc.zsh noupdate quiet info
# https://wiki.archlinux.org/title/Pkgfile#Command_not_found
# [[ -f /usr/share/doc/pkgfile/command-not-found.zsh ]] && source /usr/share/doc/pkgfile/command-not-found.zsh
# Starship after defining custom prompt, easy to remove
hash starship 2>/dev/null && eval "$(starship init zsh)"
# Zoxide init has to be last
hash zoxide 2>/dev/null && eval "$(zoxide init zsh)"
# Return 0 to indicate success that the script has been sourced to completion
return 0

View File

@@ -1,3 +1,12 @@
Contacts
Favorites
Links
Public
Searches
Templates
My Documents
Application Data
Local Settings
rogue.save rogue.save
rogue.scr rogue.scr
xenia.log xenia.log

View File

@@ -0,0 +1,71 @@
#!/usr/bin/env bash
# Suggested models from aur
# whisper.cpp-model-large-v3-turbo-q5_0 whisper.cpp-model-medium-q5_0 whisper.cpp-model-small.en-q5_1 whisper.cpp-model-tiny.en-q5_1
set -e
# Check dependencies
command -v ffmpeg >/dev/null || { echo "ffmpeg not found"; exit 1; }
command -v whisper-cli >/dev/null || { echo "whisper-cli not found"; exit 1; }
# Check input file
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <video_file.(mp4|mkv)>"
exit 1
fi
# Get whisper installed models
model_folders=$(find /usr/share/ -maxdepth 1 -type d -name "whisper.cpp-model-*")
if [[ -z "$model_folders" ]]; then
echo "No whisper models found in /usr/share/"
exit 1
fi
# Find bin files in the model folders
model_files=$(find $model_folders -maxdepth 1 -type f -name "*.bin")
if [[ -z "$model_files" ]]; then
echo "No whisper model files found in /usr/share/"
exit 1
fi
# If --list-models is passed, list available models
if [[ "$1" == "--list-models" ]]; then
echo "Available whisper models:"
for model in $model_files; do
echo "$model"
done
exit 0
fi
# One argument default
INPUT="$1"
# If --model is passed, use the second argument as the model path,
if [[ "$1" == "--model" && -n "$2" ]]; then
if [[ ! -f "$2" ]]; then
echo "Model file $2 does not exist."
exit 1
fi
MODEL_PATH="$2"
INPUT="$3"
else
# Default to the last model found
MODEL_PATH=$(echo "$model_files" | head -n 1)
fi
BASENAME=${INPUT%.*}
TMP_WAV=$(mktemp --suffix=".wav")
# Extract and convert audio
echo "Extracting and converting audio..."
ffmpeg -y -i "$INPUT" -vn -acodec pcm_s16le -ar 16000 -ac 1 "$TMP_WAV" > /dev/null 2>&1
# Run whisper-cli
echo "Transcribing with whisper-cli..."
echo "Using model: $MODEL_PATH"
# -pp to enable progress printing
whisper-cli -sow -sns -pc -np --prompt "Please do not forget punctuation and capitalization, and keep the length of a line consistent!" -t "$(nproc)" -m "$MODEL_PATH" -f "$TMP_WAV" --output-srt -of "${BASENAME}"
# Cleanup
rm -f "$TMP_WAV"
echo "Done. Temporary file removed."

View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
set -e
# Check if transcribe-video.sh is in PATH
if ! command -v transcribe-video &> /dev/null; then
echo "Error: transcribe-video not found in PATH."
exit 1
fi
# Enable globbing for both mp4 and mkv
shopt -s nullglob
FILES=( *.mp4 *.mkv )
if [ ${#FILES[@]} -eq 0 ]; then
echo "No .mp4 or .mkv files found in the current directory."
exit 0
fi
echo "Found ${#FILES[@]} file(s) to process."
for FILE in "${FILES[@]}"; do
# Get basename without extension
BASENAME="${FILE%.*}"
# Check if SRT file already exists
SRT_FILE="${BASENAME}.srt"
if [[ -f "$SRT_FILE" ]]; then
echo "Skipping $FILE: SRT file already exists."
continue
fi
echo "=== Processing: $FILE ==="
transcribe-video "$FILE"
echo "=== Done: $FILE ==="
echo
done
echo "All files processed."

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-scheme">
<glob pattern="*.rkt"/>
</mime-type>
</mime-info>

View File

@@ -18,6 +18,8 @@ Host fcslinux.cs.unb.ca
# Individual hosts for the CS department # Individual hosts for the CS department
Host *m??.cs.unb.ca Host *m??.cs.unb.ca
User ishoebot User ishoebot
AddKeysToAgent yes
ForwardAgent yes
ProxyJump fcslinux.cs.unb.ca ProxyJump fcslinux.cs.unb.ca
# GitHub ssh commits # GitHub ssh commits
@@ -30,7 +32,7 @@ Host github.com
# Gitea ssh commits # Gitea ssh commits
Host git.shoebottom.ca Host git.shoebottom.ca
Hostname ssh.shoebottom.ca Hostname ssh.shoebottom.ca
User gitea User git
Port 2221 Port 2221
IdentityFile ~/.ssh/git.ed25519 IdentityFile ~/.ssh/git.ed25519
AddKeysToAgent yes AddKeysToAgent yes

View File

@@ -1,4 +0,0 @@
# If running interactively, then:
if ($?prompt) then
set SHELL = "/usr/bin/bash" && exec $SHELL
endif

View File

@@ -1,59 +0,0 @@
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# Required init for cli programs
# Do not install completions unless no working, check /usr/share/bash-completion
eval "$(zoxide init zsh)"
autoload -Uz promptinit
autoload -Uz compinit
promptinit
compinit
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
bindkey "^[[3~" delete-char
# Set aliases
alias grep="ugrep"
alias cd="z"
alias cat="bat -p"
alias update-mirrors="rate-mirrors arch | sudo tee /etc/pacman.d/mirrorlist; rate-mirrors chaotic-aur | sudo tee /etc/pacman.d/chaotic-mirrorlist"
alias update="paru; flatpak update"
function ls {
if [[ "$@" =~ "-a" || "$@" =~ "-A" || "$@" =~ "--all" || "$@" =~ "--almost-all" ]]; then
eza --icons --long $@
else
eza --icons --long --ignore-glob "$([[ -f .hidden ]] && cat .hidden | tr '\n' '|')" $@
fi
}
# Dotfiles management
function .add {
chezmoi add $1
chezmoi git diff
if $(read -q "?Commit changes? [y/N]"); then
chezmoi git commit -- -am $2
fi
}
function .re-add {
chezmoi re-add
chezmoi git diff
if $(read -q "?Commit changes? [y/N]"); then
chezmoi git commit -- -am $1
fi
}
alias .push="chezmoi git push"
alias .pull="chezmoi git pull"
alias .status="chezmoi git status"
alias .update="chezmoi update"
# Helpful tool: https://zsh-prompt-generator.site/
# On github: https://github.com/k-yokoishi/zsh-prompt-generator
PROMPT="[%n@%m %~]$ "
RPROMPT="%?:%h | %*"
# Starship after defining custom prompt, easy to remove
eval "$(starship init zsh)"

1
symlink_dot_bash_profile Normal file
View File

@@ -0,0 +1 @@
.config/bash/.bashrc

1
symlink_dot_bashrc Normal file
View File

@@ -0,0 +1 @@
.config/bash/.bashrc

1
symlink_dot_editorconfig Normal file
View File

@@ -0,0 +1 @@
.config/editorconfig/.editorconfig

1
symlink_dot_renpy Normal file
View File

@@ -0,0 +1 @@
.local/share/renpy

1
symlink_dot_tcshrc Normal file
View File

@@ -0,0 +1 @@
.config/tcsh/.tcshrc

1
symlink_dot_zshrc Normal file
View File

@@ -0,0 +1 @@
.config/zsh/.zshrc