├── .gitignore ├── .gitmodules ├── README.md ├── bin ├── .gitignore ├── .local │ └── bin │ │ ├── alacritty-float │ │ ├── bluealsa │ │ ├── bluemix │ │ ├── cb │ │ ├── cenwin │ │ ├── check-bat │ │ ├── check-sql-docker │ │ ├── compress-vid │ │ ├── ct │ │ ├── cwal │ │ ├── dbus-mpris-player-control │ │ ├── discocss │ │ ├── dock-up │ │ ├── dual-l │ │ ├── editor │ │ ├── fmux │ │ ├── fswap │ │ ├── get-date.py │ │ ├── is-executable │ │ ├── m4a2mp3 │ │ ├── make-gif │ │ ├── monitor-mpris-track.py │ │ ├── notify-track │ │ ├── open │ │ ├── passmenu │ │ ├── path │ │ ├── pfetch │ │ ├── pk │ │ ├── png-to-webp │ │ ├── rand-wal │ │ ├── rfv │ │ ├── ripasso-float │ │ ├── run-android │ │ ├── setup-volta │ │ ├── shot │ │ ├── snap │ │ ├── startbluealsa │ │ ├── stopbluealsa │ │ ├── swapesc │ │ ├── toggle_dnd │ │ ├── update-cargo-packages │ │ ├── wadb │ │ ├── wifi │ │ ├── ytm │ │ └── ytp └── README.md ├── clean.sh ├── config ├── .config │ ├── alacritty │ │ └── alacritty.yml │ ├── bat │ │ ├── config │ │ └── themes │ │ │ └── tokyo-night.tmTheme │ ├── btop │ │ ├── btop.conf │ │ └── themes │ │ │ └── catppuccin.theme │ ├── cava │ │ └── config │ ├── compton │ │ └── compton.conf │ ├── dunst │ │ └── dunstrc │ ├── fontconfig │ │ └── fonts.conf │ ├── gitui │ │ ├── key_bindings.ron │ │ └── theme.ron │ ├── gtk-2.0 │ │ └── gtkfilechooser.ini │ ├── home-manager │ │ └── home.nix │ ├── lynx.cfg │ ├── lynx.lss │ ├── mps-youtube │ │ ├── config │ │ └── transcode │ ├── mpv │ │ └── mpv.conf │ ├── neofetch │ │ └── config.conf │ ├── nixpkgs │ │ └── rust-shell.nix │ ├── polybar │ │ ├── config │ │ ├── desktop-config │ │ └── laptop-config │ ├── qutebrowser │ │ ├── .config │ │ ├── autoconfig.yml │ │ ├── bookmarks │ │ │ └── urls │ │ ├── config.py │ │ ├── jellybeans-all-sites.css │ │ ├── qsettings │ │ │ └── QtProject.conf │ │ └── quickmarks │ ├── redshift.conf │ ├── starship.toml │ ├── sxiv │ │ └── exec │ │ │ └── key-handler │ ├── systemd │ │ └── user │ │ │ ├── custom-mpris-daemon.service │ │ │ └── default.target.wants │ │ │ └── custom-mpris-daemon.service │ ├── wezterm │ │ └── wezterm.lua │ ├── xmobar │ │ └── xmobarrc.hs │ ├── zathura │ │ └── zathurarc │ └── zk │ │ ├── config.toml │ │ └── templates │ │ ├── default.md │ │ └── journal.md └── .gitignore ├── git └── .gitconfig ├── images ├── screenshot.png ├── screenshot2.png ├── tmux-nvim.png └── wallpaper │ └── geometry-dracula.png ├── install.sh ├── runcom └── .bash_profile ├── sys ├── .alias ├── .completion ├── .env ├── .functions ├── .nvm ├── .profile ├── .prompt └── .terminal ├── templates ├── README.md └── desktop │ ├── alacritty-float.desktop │ └── discord.desktop ├── tmux ├── .tmux │ ├── palettes │ │ ├── catppuccin_frappe.tmux │ │ ├── catppuccin_latte.tmux │ │ ├── catppuccin_macchiato.tmux │ │ └── catppuccin_mocha.tmux │ ├── sessions │ │ ├── README.md │ │ └── app-dev.yaml │ └── tmux.conf └── README.md ├── vim ├── .vim │ ├── general.vimrc │ ├── init.vimrc │ ├── keys.vimrc │ ├── lua │ │ ├── config.lua │ │ └── plugins-init.lua │ └── plugins.vimrc └── README.md ├── x-files ├── .Xmodmap ├── .Xresources └── .xinitrc ├── xmonad └── .xmonad │ └── xmonad.hs └── zsh ├── .zsh_aliases ├── .zshenv └── .zshrc /.gitignore: -------------------------------------------------------------------------------- 1 | # Vim 2 | vim/.vim/* 3 | !vim/.vim/autoload/* 4 | !vim/.vim/lua 5 | !vim/.vim/vimrc 6 | !vim/.vim/README.md 7 | !vim/.vim/init.vimrc 8 | !vim/.vim/general.vimrc 9 | !vim/.vim/plugins.vimrc 10 | !vim/.vim/keys.vimrc 11 | 12 | # nvm 13 | nvm 14 | # !nvm/.nvmrc 15 | 16 | # Tmux 17 | tmux/.tmux/plugins/* 18 | 19 | # Xmonad 20 | xmonad/.xmonad/* 21 | !/xmonad/.xmonad/xmonad.hs 22 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinnyA3/dotfiles/abd5a8b29455ea89a54adab2e6d85e1a4cf0c177/.gitmodules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # :computer: Dotfiles 2 | 3 | Dotfiles are configuration files that are used to customize and personalize 4 | your system. The *dotfiles* name comes from the UNIX convention of prefixing 5 | config files with a dot. By default, these files are usually hidden in directory 6 | listings. 7 | 8 | This repo contains my very own dotfiles, please feel free to use anything and 9 | everything -- at your own risk :warning: 10 | 11 | ## Requirements 12 | 13 | **Note**: the [installer script](https://github.com/vinnyA3/dotfiles/blob/master/install.sh) will attempt to install the following hard requirements :point_down: 14 | - [gnu stow](https://www.gnu.org/software/stow/) (symlink manager) - avoid having to manually create sym links 15 | - [homebrew](https://brew.sh/) - missing package manager (will install on MacOS only, don't worry) 16 | 17 | Please see the *Install* section, directly below, for more information! 18 | 19 | ## Install 20 | 21 | To install with Git: 22 | 23 | ```bash 24 | git clone https://github.com/vinnyA3/dotfiles.git ~/.dotfiles && 25 | source ~/.dotfiles/install.sh 26 | ``` 27 | 28 | The installer script will attempt to install GNU's *Stow* & the *Homebrew* package 29 | manager (on MacOS). Interestingly enough, homebrew works with linux as well; however, I choose to use the 30 | distro's package manager for the most part (I'll opt to use [Nix package manager](https://github.com/NixOS/nix)) when the 31 | default pkg manager does not have the latest pkg version when I need it). The installer will try to detect 32 | your linux distro; specifically, it will try detect your distro's default package manager. 33 | Right now, the supported linux package managers are: 34 | * PopOS's & Ubuntu's `apt` 35 | * Void Linux's `xbps` 36 | 37 | Feel free to add other package managers to the script! 38 | 39 | ## My System Overview 40 | 41 | * Current OS(s): [PopOS](https://pop.system76.com/), MacOS -- work machine 42 | * window manager(s): PopOS's tiling manager, [xmonad](https://xmonad.org/) 43 | * statusbar(s): [polybar](https://github.com/polybar/polybar) - default, xmobar 44 | * theme: [Catppuccin](https://github.com/catppuccin/catppuccin) 45 | * editor: [Neovim](https://neovim.io/) -- check out my Neovim config files [here](https://github.com/vinnyA3/neovim-config) 46 | * shell: [zsh](https://www.zsh.org/) - default, Bash 47 | * terminal emulator(s): [Alacritty](https://github.com/alacritty/alacritty) - default, [ST (Suckless term)](https://st.suckless.org/) 48 | * programs & binaries(installed separately): [fzf](https://github.com/junegunn/fzf), [rg](https://github.com/BurntSushi/ripgrep), [ag](https://github.com/ggreer/the_silver_searcher), node (managed by [nvm](https://github.com/nvm-sh/nvm)) 49 | - many, if not all of these programs are utilized by my [Vim](https://github.com/vinnyA3/dotfiles/tree/master/vim) setup 50 | - :warning: while the legacy vim config lives here, the main neovim configuration 51 | exists in separate repo: [https://github.com/vinnyA3/neovim-config](https://github.com/vinnyA3/neovim-config) 52 | 53 | The core configuration of my development env (zsh, tmux, vim/neovim, helper scripts) 54 | try their best to be OS agnostic; however, there are certain instances where you 55 | just can't get around configuration for the specific platform that you're 56 | working with. For those cases, the lines are commented in/out in the various config 57 | files. 58 | 59 | **Screenshots** 60 | 61 | ![screenshot of nvim development environment](./images/screenshot.png) 62 | 63 | ![screenshot of nvim development environment number 2](./images/screenshot2.png) 64 | 65 | ## Additional Resources 66 | 67 | * Get started with your own dotfiles 68 | 69 | Lars Kappart has a great [article](https://medium.com/@webprolific/getting-started-with-dotfiles-43c3602fd789) on dotfiles and how to get them set up. I 70 | used some of Lar's setup scripts to help with some scaffolding. 71 | -------------------------------------------------------------------------------- /bin/.gitignore: -------------------------------------------------------------------------------- 1 | .local/bin/nvim 2 | .local/bin/wezterm 3 | .local/bin/godot4 4 | .local/bin/android-studio 5 | .local/bin/create-eqx-release 6 | -------------------------------------------------------------------------------- /bin/.local/bin/alacritty-float: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # there is an issue with the compositor when there is another alacritty 4 | # instance running with transparency. so, just ensure the float variant has 5 | # transparency disabled to avoid issue 6 | 7 | if [[ ! -z $1 ]]; then 8 | alacritty \ 9 | --title 'Alacritty Float' \ 10 | --class "floating-terminal,floating-terminal" \ 11 | --option window.opacity=1 -e $1 12 | else 13 | alacritty \ 14 | --title 'Alacritty Float' \ 15 | --class "floating-terminal,floating-terminal" \ 16 | --option window.opacity=1 17 | fi 18 | -------------------------------------------------------------------------------- /bin/.local/bin/bluealsa: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # if script isn't running with root privileges, 4 | # kindly exit 5 | if [[ $EUID -ne 0 ]]; then 6 | echo "This script must be run as root" 7 | exit 1 8 | fi 9 | 10 | blues=/usr/bin/bluealsa 11 | userhome=/home/qwerty 12 | fileswap="$userhome/.local/bin/fswap" 13 | 14 | if [[ -x $blues && -x $fileswap ]]; then 15 | $fileswap $userhome/.asoundrc $userhome/.asoundrc.bak 16 | $blues 17 | trap "$fileswap $userhome/.asoundrc $userhome/.asoundrc.bak" SIGINT SIGTERM EXIT 18 | fi 19 | 20 | -------------------------------------------------------------------------------- /bin/.local/bin/bluemix: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if pgrep -x "bluealsa" > /dev/null 3 | then 4 | alsamixer -D bluealsa 5 | fi 6 | -------------------------------------------------------------------------------- /bin/.local/bin/cb: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # cb - change background 4 | # requires fzf for fuzzy wallpaper dir search 5 | 6 | WAL_DIR="$HOME/.local/share/backgrounds" 7 | FZF_OUTPUT=$(ls "$WAL_DIR" | fzf) 8 | 9 | if command -v fzf > /dev/null; 10 | then 11 | echo "Changing background now..." 12 | gsettings set org.gnome.desktop.background picture-uri "$WAL_DIR/$FZF_OUTPUT" 13 | else 14 | echo "Please install 'fzf' to use this script." 15 | fi 16 | -------------------------------------------------------------------------------- /bin/.local/bin/cenwin: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # get current window id, width and height 4 | GET_WIN=$(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) 5 | WID=$GET_WIN 6 | # WID=$(pwp) 7 | 8 | WW=$(wattr w $WID) 9 | WH=$(wattr h $WID) 10 | 11 | # get screen width and height 12 | ROOT=$(lsw -r) 13 | SW=$(wattr w $ROOT) 14 | SH=$(wattr h $ROOT) 15 | 16 | # move the current window to the center of the screen 17 | wtp $(((SW - WW)/2)) $(((SH - WH)/2)) $WW $WH $WID; 18 | -------------------------------------------------------------------------------- /bin/.local/bin/check-bat: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export DISPLAY=:0.0 3 | bat_info=`acpi -b` 4 | 5 | if echo $bat_info | grep Discharging > /dev/null 2>&1; then 6 | bat_level=`echo $bat_info | grep -P -o '[0-9]+(?=%)'` 7 | if [ `echo $bat_level` -le 6 ]; then 8 | notify-send --urgency critical 'Battery low!' "Battery level is $bat_level%!" 9 | fi 10 | fi 11 | 12 | exit 0 13 | -------------------------------------------------------------------------------- /bin/.local/bin/check-sql-docker: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOCKER_COMPOSE_LOC=$HOME/Docker 4 | 5 | if [ -z "$DOCKER_MACHINE_NAME" ] 6 | then 7 | echo "Docker Machine is not up ... make sure to run your custom 'docker-env' script" 8 | else 9 | if [ -z "$(docker ps | grep main-sql)" ] 10 | then 11 | echo "[main-sql] not running ... Let us start it up!!" 12 | docker-compose -f $DOCKER_COMPOSE_LOC/docker-compose.yml up 13 | else 14 | echo "[main-sql] container is already running" 15 | fi 16 | fi 17 | 18 | exit 19 | -------------------------------------------------------------------------------- /bin/.local/bin/compress-vid: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ ! command -v ffmpeg &> /dev/null ] 4 | then 5 | echo "Ensure you have ffmpeg installed & is in your executable PATH" 6 | exit 7 | else 8 | if [ -z $1 &> /dev/null ] 9 | then 10 | echo "Please include your file to compress as the first argument - cannot be null\n" 11 | exit 12 | fi 13 | 14 | output_file = $2 15 | crf = $3 16 | # only works on mp4 for now 17 | ffmpeg -i $1 -vcodec libx264 -crf "${crf:=28}" "${output_file:="compressed-output.mp4"}" 18 | fi 19 | -------------------------------------------------------------------------------- /bin/.local/bin/ct: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # day colorscheme: 4 | # TOKYO_DAY = '''''' - muliline string 5 | # - color .... 6 | 7 | ALACRITTY_CONFIG="$XDG_CONFIG_HOME/alacritty/alacritty.yml" 8 | ALACRITTY_CONFIG_THEME_DELIMITER='# ++ theme ++' 9 | 10 | TOKYO_STORM=" 11 | colors: 12 | primary: 13 | background: '0x1a1b26' 14 | foreground: '0xc0caf5' 15 | 16 | normal: 17 | black: '0x15161E' 18 | red: '0xf7768e' 19 | green: '0x9ece6a' 20 | yellow: '0xe0af68' 21 | blue: '0x7aa2f7' 22 | magenta: '0xbb9af7' 23 | cyan: '0x7dcfff' 24 | white: '0xa9b1d6' 25 | 26 | bright: 27 | black: '0x414868' 28 | red: '0xf7768e' 29 | green: '0x9ece6a' 30 | yellow: '0xe0af68' 31 | blue: '0x7aa2f7' 32 | magenta: '0xbb9af7' 33 | cyan: '0x7dcfff' 34 | white: '0xc0caf5' 35 | 36 | indexed_colors: 37 | - { index: 16, color: '0xff9e64' } 38 | - { index: 17, color: '0xdb4b4b' }" 39 | 40 | TOKYO_DAY=" 41 | colors: 42 | primary: 43 | background: '0xe1e2e7' 44 | foreground: '0x3760bf' 45 | 46 | normal: 47 | black: '0xe9e9ed' 48 | red: '0xf52a65' 49 | green: '0x587539' 50 | yellow: '0x8c6c3e' 51 | blue: '0x2e7de9' 52 | magenta: '0x9854f1' 53 | cyan: '0x007197' 54 | white: '0x6172b0' 55 | 56 | bright: 57 | black: '0xa1a6c5' 58 | red: '0xf52a65' 59 | green: '0x587539' 60 | yellow: '0x8c6c3e' 61 | blue: '0x2e7de9' 62 | magenta: '0x9854f1' 63 | cyan: '0x007197' 64 | white: '0x3760bf' 65 | 66 | indexed_colors: 67 | - { index: 16, color: '0xb15c00' } 68 | - { index: 17, color: '0xc64343' }" 69 | 70 | 71 | function inject_alacritty_colorscheme() 72 | { 73 | local CURRENT_THEME=$(sed -n '/^#\s--\sSTART_THEME\s--/,${p;/^#\s--\sEND_THEME\s--/q}' $ALACRITTY_CONFIG) 74 | echo $CURRENT_THEME | sed -E "s/background/asdfasdfasdfasd/" 75 | # echo $CURRENT_THEME 76 | # arg - desired colorscheme 77 | # if [ $1 == "$TOKYO_DAY" ]; 78 | # then 79 | 80 | # fi 81 | } 82 | 83 | # args: 84 | # 1 - the desired theme (this is based off tokyonight theme, so that needs to be 85 | # set up accordingly) 86 | 87 | # * - modify yml file (alacritty) - take some scripting with bulk replacments .. 88 | # might need to designate the part of yml file with comments for easy 89 | # replacements: 90 | # - find the chunk of code delimited by comments that look like this: # ++++++++++++++ 91 | # ex: ct 'day' -> replace comment delimited code with the colorscheme defined in 92 | # this script file - see above 93 | 94 | # 2 - update the vim files (lua -> plugins -> config) 95 | # -- should be a simple grep / sed (awk) substituion for the tokyonight 96 | # rendition 97 | 98 | # entry 99 | inject_alacritty_colorscheme 100 | -------------------------------------------------------------------------------- /bin/.local/bin/cwal: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # [Deps]: FZF 3 | pictures_dir=$HOME/Pictures/wallpaper 4 | selected_img=$(ls -1a $pictures_dir | fzf) 5 | 6 | if [ ! -z $selected_img ]; then 7 | # assuming dark mode 8 | gsettings set org.gnome.desktop.background picture-uri-dark "file://$pictures_dir/$selected_img" 9 | fi 10 | -------------------------------------------------------------------------------- /bin/.local/bin/dbus-mpris-player-control: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # dbus-mpris-player-control: 4 | # * this script allows basic cli control for valid mpris dbus clients 5 | # * (note) only works for firefox atm .. will add other mpris clients later 6 | 7 | # search valid dbus music player client 8 | FOUND_MUSIC_PLAYER_CLIENT=$(dbus-send \ 9 | --print-reply \ 10 | --dest=org.freedesktop.DBus \ 11 | /org/freedesktop/DBus \ 12 | org.freedesktop.DBus.ListNames | awk '/mpris/ && /firefox/') 13 | 14 | MPRIS_PLAYER_INTERFACE=org.mpris.MediaPlayer2.Player 15 | PROPERTIES_INTERFACE=org.freedesktop.DBus.Properties 16 | 17 | ################################################################### 18 | # Utilities 19 | ################################################################### 20 | function dumpMetadata() { 21 | dbus-send \ 22 | --dest="$1" \ 23 | --print-reply \ 24 | /org/mpris/MediaPlayer2 \ 25 | $PROPERTIES_INTERFACE.Get string:'org.mpris.MediaPlayer2.Player' \ 26 | string:'Metadata' 27 | } 28 | 29 | function extractSongTitleFromMetadata() { 30 | dbus-send \ 31 | --dest="$1" \ 32 | --print-reply \ 33 | /org/mpris/MediaPlayer2 \ 34 | $PROPERTIES_INTERFACE.Get string:'org.mpris.MediaPlayer2.Player' \ 35 | string:'Metadata' | grep -E 'title' -A 1 | tail -n1 | cut -d '"' -f2 36 | } 37 | 38 | function extractMainArtistFromMetadata() { 39 | dbus-send \ 40 | --dest="$1" \ 41 | --print-reply \ 42 | /org/mpris/MediaPlayer2 \ 43 | $PROPERTIES_INTERFACE.Get string:'org.mpris.MediaPlayer2.Player' \ 44 | string:'Metadata' | grep -E 'artist' -A 2 | tail -n1 | cut -d '"' -f2 45 | } 46 | 47 | function extractArtUrlFromMetadata() { 48 | dbus-send \ 49 | --dest="$1" \ 50 | --print-reply \ 51 | /org/mpris/MediaPlayer2 \ 52 | $PROPERTIES_INTERFACE.Get string:'org.mpris.MediaPlayer2.Player' \ 53 | string:'Metadata' | grep -E 'artUrl' -A 1 | tail -n1 | cut -d '"' -f2 54 | } 55 | 56 | ################################################################### 57 | # MPRIS Controls 58 | ################################################################### 59 | 60 | # toggle: toggle between play/pause states 61 | function toggle() { 62 | dbus-send \ 63 | --print-reply \ 64 | --dest="$1" \ 65 | /org/mpris/MediaPlayer2 $MPRIS_PLAYER_INTERFACE.PlayPause 66 | } 67 | 68 | # next: next song 69 | function next() { 70 | dbus-send \ 71 | --print-reply \ 72 | --dest="$1" \ 73 | /org/mpris/MediaPlayer2 $MPRIS_PLAYER_INTERFACE.Next 74 | } 75 | 76 | # prev: previous song 77 | function prev() { 78 | dbus-send \ 79 | --print-reply \ 80 | --dest="$1" \ 81 | /org/mpris/MediaPlayer2 $MPRIS_PLAYER_INTERFACE.Previous 82 | } 83 | 84 | function getMetadata() { 85 | if [ -z "$2" ]; 86 | then 87 | dumpMetadata $1; 88 | else 89 | case "$2" in 90 | "artist" ) extractMainArtistFromMetadata $1;; 91 | "title" ) extractSongTitleFromMetadata $1;; 92 | "art" ) extractArtUrlFromMetadata $1;; 93 | *) dumpMetadata $1;; 94 | esac 95 | fi 96 | } 97 | 98 | function handleErrorneousInput() { 99 | if [ -z "$1" ]; 100 | then 101 | echo 'Please input a command!' 102 | else 103 | echo "'$1' is not a valid command! Consult help if needed: dbus-mpris-player-control --help" 104 | fi 105 | } 106 | 107 | # help: description script & valid commands 108 | function help() { 109 | echo -e ' 110 | dbus-mpris-player-control: a helpful script to control current audio source 111 | managed by the mpris client. Actions and commands are relayed using the dbus 112 | protocol. 113 | \n 114 | Syntax: dbus-mpris-player-control [-options][command]\n 115 | Options: 116 | h Print this help. 117 | \n 118 | Commands: 119 | toggle: play/pause the current mpris media 120 | next: skip to the next track in the media playlist 121 | prev: restart current track, or play previous track 122 | meta: get metadata for current track -- if either 'artist', 'title', or 'art' 123 | is passed as an argument, you will get the corresponding piece of meta. If no 124 | arg is supplied, you will get a dump of raw meta from DBus properties output. 125 | \n 126 | Example(s): 127 | Print help dbus-mpris-player-control -h 128 | Get Metadata dbus-mpris-player-control meta title 129 | Toggle current track dbus-mpris-player-control toggle ' 130 | } 131 | 132 | ################################################################### 133 | # Main Entry Point 134 | ################################################################### 135 | 136 | # if our variable does not contain an empty string (target acquired) 137 | if [ ! -z "$FOUND_MUSIC_PLAYER_CLIENT" ]; 138 | then 139 | NORMALIZED_PLAYER_STRING=$(echo "$FOUND_MUSIC_PLAYER_CLIENT" | awk '{ print $2 }' | tr -d '"') 140 | 141 | case "$1" in 142 | "toggle" ) toggle $NORMALIZED_PLAYER_STRING;; 143 | "next" ) next $NORMALIZED_PLAYER_STRING;; 144 | "prev" ) prev $NORMALIZED_PLAYER_STRING;; 145 | "meta" ) getMetadata $NORMALIZED_PLAYER_STRING $2;; 146 | "--help" | "-h" ) help;; 147 | *) handleErrorneousInput $1; exit 1;; 148 | esac 149 | else 150 | echo 'A valid player client has not been found ... better luck next time :)' 151 | exit 1 152 | fi 153 | -------------------------------------------------------------------------------- /bin/.local/bin/discocss: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | confdir="${XDG_CONFIG_HOME:=$HOME/.config}/discocss" 4 | preloadFile="$confdir/preload.js" 5 | cssFile="$confdir/custom.css" 6 | 7 | mkdir -p "$confdir" 8 | 9 | touch "$cssFile" 10 | 11 | cat < "$preloadFile" 12 | module.exports = () => { 13 | const fs = require("fs"); 14 | const confDir = "$confdir"; 15 | const cssFile = "$cssFile"; 16 | 17 | function reload(style) { 18 | style.innerHTML = fs.readFileSync(cssFile); 19 | } 20 | 21 | function inject({ document, window }) { 22 | window.addEventListener("load", () => { 23 | const style = document.createElement("style"); 24 | reload(style); 25 | document.head.appendChild(style); 26 | 27 | fs.watch(confDir, {}, () => reload(style)); 28 | }); 29 | } 30 | 31 | inject(require("electron").webFrame.context); 32 | }; 33 | 34 | module.exports.mw = (mainWindow) => { 35 | mainWindow.setBackgroundColor("#00000000"); 36 | }; 37 | 38 | module.exports.mo = (options) => { 39 | options.transparent = true; 40 | if (process.platform === "linux") { 41 | options.frame = true; 42 | } 43 | }; 44 | EOF 45 | 46 | ln -f -s "$preloadFile" /tmp/discocss-preload.js 47 | 48 | if [ "$(uname)" = "Darwin" ]; then 49 | sed_options='-i ""' 50 | core_asar="$(echo "$HOME/Library/Application Support/discord/"*"/modules/discord_desktop_core/core.asar")" 51 | else 52 | sed_options='-i' 53 | core_asar="$(echo "$XDG_CONFIG_HOME/discord/"*"/modules/discord_desktop_core/core.asar")" 54 | fi 55 | 56 | app_preload_replace='s| // App preload script, used to provide a replacement native API now that|try {require\(`/tmp/discocss-preload.js`)()} catch \(e\) {console.error\(e\);} |' 57 | launch_main_app_replace='s|// launch main app window; could be called multiple times for various reasons| const dp = require(`/tmp/discocss-preload.js`); |' 58 | frame_true_replace='s| mainWindowOptions.frame = true;|}dp.mo(mainWindowOptions);{ |' 59 | causing_the_window_replace='s|// causing the window to be too small on a larger secondary display| dp.mw(mainWindow); |' 60 | LC_ALL=C sed $sed_options "$app_preload_replace; $launch_main_app_replace; $frame_true_replace; $causing_the_window_replace" \ 61 | "$core_asar" 62 | 63 | discordBin="$DISCOCSS_DISCORD_BIN" 64 | if [ "$discordBin" ]; then 65 | unset DISCOCSS_DISCORD_BIN 66 | exec "$discordBin" 67 | else 68 | command -v discord && exec discord 69 | command -v Discord && exec Discord 70 | fi 71 | -------------------------------------------------------------------------------- /bin/.local/bin/dock-up: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Provisions docker env (only works with default machine for now) 4 | 5 | if [ -x "$(command -v docker-machine)" > /dev/null ] 6 | then 7 | # fetch the first running machine name 8 | isRunning=$(docker-machine ls | grep "Running") 9 | 10 | if [ -z "$isRunning" ]; 11 | then 12 | docker-machine start # starts default machine 13 | fi 14 | fi 15 | -------------------------------------------------------------------------------- /bin/.local/bin/dual-l: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | xrandr --output HDMI1 --auto --output eDP1 --auto --right-of HDMI1 4 | -------------------------------------------------------------------------------- /bin/.local/bin/editor: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | NVIM=$HOME/.local/bin/nvim 4 | 5 | command -v nvr >/dev/null 2>&1 || { echo "Please install nvr!" >&2; exit 1; } 6 | 7 | if [ -n "$NVIM_LISTEN_ADDRESS" ]; 8 | then 9 | nvr --remote-tab "$@" 10 | else 11 | exec nvim "$@" 12 | fi 13 | -------------------------------------------------------------------------------- /bin/.local/bin/fmux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################### 4 | # Tmuxinator FZF Start 5 | ############################################################### 6 | # 7 | # Uses fzf to provide a selection list for tmuxinator projects. 8 | # 9 | # Overview: 10 | # 11 | # tmuxinator-fzf-start.sh will open fzf with a multi select 12 | # list of tmuxinator projects. Upon selecting project/s each 13 | # project will have `tmuxinator start` run, and when complete 14 | # tmux will be attached, or if tmux is already running, a 15 | # session selection interface will be provided. 16 | # 17 | # If an initial query is provided, and only one match results, 18 | # the project will be automatically opened without user input. 19 | # 20 | # Usage: 21 | # 22 | # fmux 23 | # fmx "Query" 24 | # 25 | # Expectations: 26 | # 27 | # - tmuxinator is on $PATH 28 | # - fzf is on $PATH 29 | # - tmux is on $PATH 30 | 31 | # Allow the user to select projects via fzf 32 | SELECTED_PROJECTS=$(tmuxinator list -n | 33 | tail -n +2 | 34 | fzf --prompt="Project: " -m -1 -q "$1") 35 | 36 | if [ -n "$SELECTED_PROJECTS" ]; then 37 | # Set the IFS to \n to iterate over \n delimited projects 38 | IFS=$'\n' 39 | 40 | # Start each project without attaching 41 | for PROJECT in $SELECTED_PROJECTS; do 42 | tmuxinator start "$PROJECT" --no-attach # force disable attaching 43 | done 44 | 45 | # If inside tmux then select session to switch, otherwise just attach 46 | if [ -n "$TMUX" ]; then 47 | SESSION=$(tmux list-sessions -F "#S" | fzf --prompt="Session: ") 48 | if [ -n "$SESSION" ]; then 49 | tmux switch-client -t "$SESSION" 50 | exit 51 | fi 52 | else 53 | tmux attach-session 54 | exit 55 | fi 56 | fi 57 | -------------------------------------------------------------------------------- /bin/.local/bin/fswap: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | TMPFILE="" 3 | 4 | if [ $# -ne 2 ]; then 5 | echo "Usage: swap file1 file2" 6 | else 7 | TMPFILE=$(mktemp) 8 | mv "$1" $TMPFILE 9 | mv "$2" "$1" 10 | mv $TMPFILE "$2" 11 | fi 12 | -------------------------------------------------------------------------------- /bin/.local/bin/get-date.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import datetime 3 | import sys 4 | 5 | sys.stdout.write(str(datetime.datetime.now())) 6 | -------------------------------------------------------------------------------- /bin/.local/bin/is-executable: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if type "$1" >/dev/null 2>&1; then 4 | exit 0 5 | else 6 | exit 1 7 | fi 8 | -------------------------------------------------------------------------------- /bin/.local/bin/m4a2mp3: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # m4a2mp3: convert m4a files in the working directory to mp3 320kbps 3 | for FILE in *.m4a ; do 4 | ffmpeg -i "$FILE" -f mp3 -ab 320k "`basename "$FILE" .m4a`.mp3" || break; 5 | done 6 | -------------------------------------------------------------------------------- /bin/.local/bin/make-gif: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # make-gif (requires ffmpeg) 4 | # - this script creates a small gif (600x400) from an mp4 file 5 | 6 | # @params 7 | # 1 - string filename 8 | 9 | if command -v ffmpeg 2>&1 > /dev/null; 10 | then 11 | if [ -z $1 ]; 12 | then 13 | echo 'Please supply an argument (mp4 file to make a gif)' 14 | exit 1 15 | fi 16 | 17 | ffmpeg \ 18 | -i $1 \ 19 | -s 600x400 -pix_fmt rgb24 -r 10 \ 20 | cast-success.gif 21 | else 22 | echo 'You need ffmpeg to run this script!' 23 | fi 24 | -------------------------------------------------------------------------------- /bin/.local/bin/monitor-mpris-track.py: -------------------------------------------------------------------------------- 1 | import os 2 | import dbus 3 | 4 | try: 5 | from gi.repository import GLib 6 | except ImportError: 7 | import glib as GLib 8 | 9 | from dbus import Interface as DBusInterface 10 | from dbus.mainloop.glib import DBusGMainLoop 11 | from dbus.exceptions import DBusException 12 | from enum import Enum 13 | 14 | class DBusSignals(str, Enum): 15 | NameOwnerChanged = "NameOwnerChanged" 16 | PropertiesChanged = "PropertiesChanged" 17 | 18 | def __str__(self): 19 | return self.value 20 | 21 | class Notifier: 22 | def __init__(self, bus): 23 | """Initialize connection to desired client""" 24 | 25 | if bus != None: 26 | self.notify_interface = DBusInterface( 27 | object = bus.get_object( 28 | "org.freedesktop.Notifications", 29 | "/org/freedesktop/Notifications"), 30 | dbus_interface = "org.freedesktop.Notifications") 31 | 32 | def notify(self, app_name = "", notif_id = 0, artUrl = "", 33 | title = "Notification:", body = "", actions = [], hints = {}, timeout = 0): 34 | 35 | processed_actions = actions if isinstance(actions, list) else [] 36 | processed_hints = hints if isinstance(hints, dict) else {} 37 | 38 | self.notify_interface.Notify( 39 | app_name, 40 | notif_id, 41 | artUrl, 42 | title, 43 | body, 44 | dbus.Array(processed_actions, signature = 'as'), 45 | dbus.Dictionary(processed_hints, signature = 'si'), 46 | timeout) 47 | 48 | class FirefoxMPRISWatcher(object): 49 | def __init__(self): 50 | """Initialize Mother Fucker!""" 51 | 52 | bus_loop = DBusGMainLoop(set_as_default = True) 53 | self.bus = dbus.SessionBus(mainloop = bus_loop) 54 | mainloop = GLib.MainLoop() 55 | self.notify_id = None 56 | self.firefox_mpris_client = None 57 | self.previousTitle = '' 58 | 59 | # setup interfaces 60 | self.session_bus = self.bus.get_object( 61 | "org.freedesktop.DBus", 62 | "/org/freedesktop/DBus") 63 | 64 | self.notifier = Notifier(self.bus) 65 | 66 | try: 67 | self.props_changed_listener() 68 | except (DBusException): 69 | print("noop") # TODO: handle this better 70 | raise 71 | 72 | self.session_bus.connect_to_signal( 73 | DBusSignals.NameOwnerChanged, 74 | self.handle_name_owner_changed, 75 | arg0=self.get_connected_firefox_instance_name()) 76 | 77 | mainloop.run() 78 | 79 | def get_connected_firefox_instance_name(self): 80 | return list(filter(lambda v: v.find("MediaPlayer2.firefox.instance") != -1, 81 | self.session_bus.ListNames()))[0] 82 | 83 | def props_changed_listener(self): 84 | """Hook up callback to PropertiesChanged event""" 85 | 86 | if (self.firefox_mpris_client != None): 87 | self.firefox = self.bus.get_object( 88 | self.firefox_mpris_client, 89 | "/org/mpris/MediaPlayer2") 90 | 91 | self.firefox.connect_to_signal( 92 | DBusSignals.PropertiesChanged, 93 | self.handle_properties_changed) 94 | 95 | def handle_name_owner_changed(self, name, older_owner, new_owner): 96 | """Introspect the NameOwnerChanged signal to work out if firefox mpris client has started""" 97 | 98 | if name.find("MediaPlayer2.firefox.instance") != 1: 99 | if new_owner and new_owner != older_owner: 100 | print('[MPRIS] registering new ff client ...') 101 | self.firefox_mpris_client = self.get_connected_firefox_instance_name() 102 | self.props_changed_listener() 103 | else: 104 | print('[MPRIS] ff client cleaning up ...') 105 | self.firefox = None 106 | self.previousTitle = '' 107 | 108 | def handle_properties_changed(self, interface, changed_props, invalidated_props): 109 | """Handle track changes""" 110 | 111 | metadata = changed_props.get("Metadata", {}) 112 | 113 | if metadata: 114 | artUri = str(metadata.get('mpris:artUrl')) 115 | 116 | # current mpris client sends many on 117 | # change events (to update art uri, etc) .. we are using art uri state 118 | # check to ensure we aren't sending duplicate notifications 119 | # (NOTE: if art cannot be fetched, will not display notif) 120 | if artUri and artUri != 'None': 121 | title = str(metadata.get("xesam:title")) 122 | 123 | # avoid further duplications - if current title matches previous 124 | # title, don't notify 125 | if title != self.previousTitle: 126 | album = str(metadata.get("xesam:album")) 127 | artist = str(metadata.get("xesam:artist")[0]) 128 | self.previousTitle = title 129 | 130 | self.notify_with_metadata(title, album, artist, artUri) 131 | 132 | def notify_with_metadata(self, title, album, artist, art): 133 | message_to_send = "{} - {}".format(title, artist) 134 | self.notifier.notify(title = "Now Playing:", 135 | body = message_to_send, 136 | artUrl = art) 137 | 138 | if __name__ == "__main__": 139 | FirefoxMPRISWatcher() 140 | -------------------------------------------------------------------------------- /bin/.local/bin/notify-track: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # notify-track: 4 | # simple wrapper to display currently playing track meta from MPRIS client 5 | 6 | title=$(dbus-mpris-player-control meta title) 7 | artist=$(dbus-mpris-player-control meta artist) 8 | artUrl=$(dbus-mpris-player-control meta art) 9 | 10 | notify-send -i $artUrl "Now Playing:" \ 11 | -u normal \ 12 | "$title - $artist" 13 | -------------------------------------------------------------------------------- /bin/.local/bin/open: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SYS=$(uname -a) 4 | 5 | if [[ ! -z $(echo $SYS | grep -i Linux) ]]; 6 | then 7 | 8 | # warning: will error out if xdg-open does not exist 9 | if ! command -v xdg-open &> /dev/null 10 | then 11 | echo "xdg-open command not found!" 12 | else 13 | xdg-open $1 14 | fi 15 | else 16 | # assuming this script will only ever run on Mac lol 17 | if [[ ! -x open ]]; 18 | then 19 | open $1 20 | else 21 | echo "open command not found!" 22 | fi 23 | fi 24 | -------------------------------------------------------------------------------- /bin/.local/bin/passmenu: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | shopt -s nullglob globstar 3 | 4 | typeit=0 5 | if [[ $1 == "--type" ]]; then 6 | typeit=1 7 | shift 8 | fi 9 | 10 | 11 | STARTDIR=${PASSWORD_STORE_DIR-~/.password-store} 12 | BASEDIR=$STARTDIR 13 | DONE=0 14 | LEVEL=0 15 | PREVSELECTION="" 16 | SELECTION="" 17 | 18 | while [ "$DONE" -eq 0 ] ; do 19 | password_files=( "$STARTDIR"/* ) 20 | password_files=( "${password_files[@]#"$STARTDIR"/}" ) 21 | password_files=( "${password_files[@]%.gpg}" ) 22 | 23 | if [ "$LEVEL" -ne 0 ] ; then 24 | password_files=(".." "${password_files[@]}") 25 | fi 26 | entry=$(printf '%s\n' "${password_files[@]}" | dmenu -i -fn 'Tamzen-10' -nf '#fff' -b -w 420 -y 27 -l 15 -p ' Pass ' "$@") 27 | 28 | echo "entry: $entry" 29 | if [ -z "$entry" ] ; then 30 | DONE=1 31 | exit 32 | fi 33 | 34 | if [ "$entry" != ".." ] ; then 35 | PREVSELECTION=$SELECTION 36 | SELECTION="$SELECTION/$entry" 37 | 38 | # check if another dir 39 | if [ -d "$STARTDIR/$entry" ] ; then 40 | STARTDIR="$STARTDIR/$entry" 41 | LEVEL=$((LEVEL+1)) 42 | else 43 | # not a directory so it must be a real password entry 44 | if [[ $typeit -eq 0 ]]; then 45 | pass show -c "$SELECTION" 2>/dev/null; notify-send "Pass for: 46 | '$SELECTION' 47 | copied to clipboard!" 48 | else 49 | xdotool - <<<"type --clearmodifiers -- $(pass show "$SELECTION" | head -n 1)" 50 | fi 51 | DONE=1 52 | fi 53 | 54 | else 55 | LEVEL=$((LEVEL-1)) 56 | SELECTION=$PREVSELECTION 57 | STARTDIR="$BASEDIR/$SELECTION" 58 | fi 59 | done 60 | 61 | -------------------------------------------------------------------------------- /bin/.local/bin/path: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo -e ${PATH//:/\\n} 3 | -------------------------------------------------------------------------------- /bin/.local/bin/pk: -------------------------------------------------------------------------------- 1 | ### PROCESS 2 | # mnemonic: [K]ill [P]rocess 3 | # show output of "ps -ef", use [tab] to select one or multiple entries 4 | # press [enter] to kill selected processes and go back to the process list. 5 | # or press [escape] to go back to the process list. Press [escape] twice to exit completely. 6 | 7 | pid=$(ps -ef | sed 1d | eval "fzf ${FZF_DEFAULT_OPTS} -m --header='[kill:process]'" | awk '{print $2}') 8 | 9 | if [ "x$pid" != "x" ] 10 | then 11 | echo $pid | xargs kill -${1:-9} 12 | pk 13 | fi 14 | -------------------------------------------------------------------------------- /bin/.local/bin/png-to-webp: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | IMAGES="./images/*" 4 | 5 | for image in $IMAGES 6 | do 7 | echo "Processing $image file ..." 8 | output_filename=$(echo $image | sed -r 's/\.\/images\/(.*).png+$/\1/') 9 | cwebp -q 80 $image -o "./output/$output_filename.webp" 10 | done 11 | -------------------------------------------------------------------------------- /bin/.local/bin/rand-wal: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # [rand-wal] change wallpaper every X minutes (currenlty 15 mins) 3 | # dependencies: 4 | # * libnotify - sends notif with the wallpaper as preview 5 | # NOTE: ideally, this script for use in cronjob 6 | pictures_dir=$HOME/Pictures/wallpaper 7 | wal=$(ls -1a $pictures_dir | shuf -n 1) 8 | EUID=$(id --real --user) 9 | PID=$(pgrep --euid $EUID gnome-session | head -n 1) 10 | export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ | cut -d= -f2-) 11 | 12 | if [ ! -z $wal ] && [ $wal != '..' ] && [ $wal != '.' ]; then 13 | file_uri="file://$pictures_dir/$wal" 14 | # date=$(date) # for debug logs 15 | # echo "[$date] $EUID / $PID / $DBUS_SESSION_BUS_ADDRESS / $file_uri" 16 | /usr/bin/gsettings set org.gnome.desktop.background picture-uri-dark $file_uri # assuming dark mode (for now) 17 | 18 | notify_send_path=$(which notify-send) 19 | $notify_send_path -t 4200 'Wallpaper Changed!' "$(echo $wal | sed -E 's/\..+$//')" --icon $file_uri 20 | fi 21 | -------------------------------------------------------------------------------- /bin/.local/bin/rfv: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # 1. Search for text in files using Ripgrep 4 | # 2. Interactively narrow down the list using fzf 5 | # 3. Open the file in Vim 6 | rg --color=always --line-number --no-heading --smart-case "${*:-}" | 7 | fzf --ansi \ 8 | --color "hl:-1:underline,hl+:-1:underline:reverse" \ 9 | --delimiter : \ 10 | --preview 'bat --color=always {1} --highlight-line {2}' \ 11 | --preview-window 'up,60%,border-bottom,+{2}+3/3,~3' \ 12 | --bind 'enter:become(nvim {1} +{2})' 13 | -------------------------------------------------------------------------------- /bin/.local/bin/ripasso-float: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # note: this wrapping script uses custom alacritty-float script 4 | 5 | $HOME/.local/bin/alacritty-float 'ripasso-cursive' 6 | -------------------------------------------------------------------------------- /bin/.local/bin/run-android: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # NOTE: this script needs $ANDROID_HOME env var set & yarn installed globally 4 | 5 | # custom path for the darwin project - change as you need 6 | DAR_HOME=~/Development/mls-projects/darwin 7 | 8 | # default emulator - choose whatever sim you want to run on [emulator -list-avds] 9 | DEFAULT_EMULATOR="Pixel_3a_API_29" 10 | 11 | run_on_device() { 12 | # initiate port forwarding - see pkg.json scripts 13 | yarn adb:reverse 14 | 15 | cd $DAR_HOME/android 16 | 17 | ./gradlew assembleDebug && ./gradlew installDebug 18 | # start app on device 19 | adb shell am start -n com.mlssoccer/.MainActivity 20 | 21 | echo 'Everything should be up & running! Now, you may want to run logcat to 22 | view whatever logs are coming through ... 23 | ie. `adb logcat ReactNativeJS:V com.mlssoccer:V \*:S`' 24 | exit 25 | } 26 | 27 | run_on_sim() { 28 | # start with emulator 29 | if [ -e $ANDROID_HOME ] 30 | then 31 | echo "Starting up on AVD: $DEFAULT_EMULATOR..." 32 | # all logs are thrown into the ether 33 | $ANDROID_HOME/emulator/emulator -avd $DEFAULT_EMULATOR -netdelay none -netspeed full > /dev/null 2>&1 & 34 | 35 | echo "The emulation process has been backgrounded!" 36 | 37 | # install & run on sim 38 | cd $DAR_HOME/android 39 | 40 | # start the app yo! 41 | ./gradlew assembleDebug && ./gradlew installDebug 42 | 43 | exit 44 | else 45 | echo 'The android directory does not exist in your path!'; exit 46 | fi 47 | } 48 | 49 | cd $DAR_HOME 50 | 51 | # check if supplied an arg (emulator or no emulator) 52 | DEVICE_ID=$(adb devices | tail -n +2 | awk '{ print $1 }') 53 | 54 | echo 'Attemping to start Darwin ... make sure you have the bundle process running!' 55 | 56 | if [ -z "$DEVICE_ID" ] 57 | then 58 | run_on_sim 59 | exit 60 | else 61 | echo "Run on connected device: $DEVICE_ID ? (y/n)" 62 | 63 | read USER_INPUT 64 | 65 | case $USER_INPUT in 66 | 'y') run_on_device;; 67 | 'n') run_on_sim;; 68 | *) echo 'Not a valid input. Please choose "y" or "n"'; exit;; 69 | esac 70 | fi 71 | -------------------------------------------------------------------------------- /bin/.local/bin/setup-volta: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | working_dir=$HOME/Development/work/app-mobile 3 | 4 | if [[ ! -x volta ]]; 5 | then 6 | if [[ $working_dir == $(pwd) ]]; 7 | then 8 | node_ver=$(cat ./.nvmrc | sed -e 's/\n\s//g') 9 | yarn_var=$(cat package.json | grep yarn | head -n1 | awk '{ print $2 }' | sed -e "s/\"//gm") 10 | volta pin "node@$node_ver" && volta pin "yarn@$yarn_var" 11 | echo "=== Done! ===" 12 | else 13 | echo "Check you're in the correct working directory: $working_dir" 14 | exit 1 15 | fi 16 | else 17 | echo "Volta not installed!" 18 | fi 19 | -------------------------------------------------------------------------------- /bin/.local/bin/shot: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | notify-send -t 4998 ' Taking screenshot in 5..4..3..2..1..'; 3 | scrot ~/Pictures/screenshots/'%Y-%m-%d-%X_$wx$h.png' -c -d 5; 4 | notify-send ' Screenshot taken!' 5 | -------------------------------------------------------------------------------- /bin/.local/bin/snap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # wmutils/contrib>: snap.sh, 9/12/15 kekler 4 | # snaps focued window to the left, right, top, or bottom edge 5 | 6 | usage() { 7 | echo "usage: $(basename $0) " >&2 8 | exit 1 9 | } 10 | 11 | # default values for gaps and master area 12 | # TOP_PANEL=${PANEL:-20} 13 | TOP_PANEL=8 14 | GAP=${GAP:-18} 15 | 16 | # get current window id and its borderwidth 17 | # PFW=$(pfw) -- sub for dmenu 18 | PFW=$(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) 19 | BW=$(wattr b $PFW) 20 | 21 | RHSW=$(wattr w $PFW) 22 | RHSH=$(wattr h $PFW) 23 | 24 | # get root window's size 25 | ROOT=$(lsw -r) 26 | SW=$(wattr w $ROOT) 27 | SH=$(wattr h $ROOT) 28 | 29 | # calculate usable screen size (without borders and gaps) 30 | SH=$((SH + TOP_PANEL)) 31 | 32 | snap_up() 33 | { 34 | wtp $GAP $((GAP - TOP_PANEL)) $((SW - 2*GAP - 2*BW)) $((SH/2 - 2*BW - GAP - GAP/2)) $PFW 35 | } 36 | 37 | snap_right() 38 | { 39 | wtp $((SW - SW/2 + GAP/2)) $((GAP + TOP_PANEL)) $((SW/2 - 2*BW - GAP - GAP/2)) $((SH - 2*BW - 90)) $PFW 40 | } 41 | 42 | snap_down() 43 | { 44 | wtp $GAP $((SH - SH/2 + GAP/2 - 30)) $((SW - 2*GAP - 2*BW)) $((SH/2 - 2*BW - GAP - GAP/2)) $PFW 45 | } 46 | 47 | snap_left() 48 | { 49 | wtp $GAP $((GAP + TOP_PANEL)) $((SW/2 - 2*BW - GAP - GAP/2)) $((SH - 2*BW - 90)) $PFW 50 | } 51 | 52 | # HSW=$((SW/2 - 2*BW - GAP - GAP/2)) 53 | # HSH=$((SH/2 - 2*BW - GAP - GAP/2)) 54 | HSW=$((SW/2 - 2*BW - GAP)) 55 | HSH=$((SH/2 - 2*BW - GAP)) 56 | 57 | snap_tr() 58 | { 59 | wtp $((SW - SW/2 + GAP/2)) $((GAP + TOP_PANEL)) $HSW $HSH $PFW 60 | } 61 | 62 | snap_br() 63 | { 64 | wtp $((SW - SW/2 + GAP/2)) $((SH - SH/2 + GAP/2 - 40)) $HSW $HSH $PFW 65 | } 66 | 67 | snap_tl() 68 | { 69 | wtp $GAP $((GAP + TOP_PANEL)) $HSW $HSH $PFW 70 | } 71 | 72 | snap_bl() 73 | { 74 | wtp $GAP $((SH - SH/2 + GAP/2 - 40)) $HSW $HSH $PFW 75 | } 76 | 77 | direction=$(echo "h\nl\nk\nj\ntr\ntl\nbr\nbl" | dmenu -fn 'Tamzen-10' -nf '#fff' -b -y '0' -x '420' -w '600' -h '27' -p ' Direction ') 78 | 79 | case $direction in 80 | h|a|west|left) snap_left ;; 81 | j|s|south|down) snap_down ;; 82 | k|w|north|up) snap_up ;; 83 | l|d|east|right) snap_right ;; 84 | tr|northeast) snap_tr ;; 85 | br|southeast) snap_br ;; 86 | tl|northwest) snap_tl ;; 87 | bl|southwest) snap_bl ;; 88 | esac 89 | -------------------------------------------------------------------------------- /bin/.local/bin/startbluealsa: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if ! pgrep -x "bluealsa" > /dev/null 3 | then 4 | SUDO_ASKPASS=/home/qwerty/.local/bin/dpass sudo -A bluealsa > /dev/null 2>&1 5 | fi 6 | -------------------------------------------------------------------------------- /bin/.local/bin/stopbluealsa: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if pgrep -x "bluealsa" > /dev/null 3 | then 4 | bluealsa_pid=$(ps aux | awk '/bluealsa/ && /\/usr\/bin/{ print $2 }') 5 | SUDO_ASKPASS=/home/qwerty/.local/bin/dpass sudo -A kill $bluealsa_pid 6 | fi 7 | 8 | -------------------------------------------------------------------------------- /bin/.local/bin/swapesc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # swapesc: script uses xmodmap to swap capslock key w/ esc key 4 | 5 | # Apparently xmodmap is deprecated?? 6 | # -- for distros running gnome, survive bluetooth reconnects & reboot w/: 7 | # gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']" 8 | # - this remaps for the current input source -> your connected keeb, managed 9 | # by Gnome core 10 | 11 | if [ $(uname) == 'Linux' ] 12 | then 13 | setxkbmap -option "caps:swapescape" 14 | else 15 | echo 'This command only works for linux machines!' 16 | fi 17 | -------------------------------------------------------------------------------- /bin/.local/bin/toggle_dnd: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # toggle_dnd: toggle gnome shell desktop notifications 4 | 5 | notifications_state=$(gsettings get org.gnome.desktop.notifications show-banners) 6 | 7 | if [[ $notifications_state == 'true' ]] 8 | then 9 | gsettings set org.gnome.desktop.notifications show-banners false 10 | notify-send "Notifications are disabled" -i user-busy 11 | else 12 | gsettings set org.gnome.desktop.notifications show-banners true 13 | notify-send "Notifications are enabled" -i user-available 14 | fi 15 | -------------------------------------------------------------------------------- /bin/.local/bin/update-cargo-packages: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # if cargo exists .. update installed cargo pkgs to latest 4 | if command -v cargo > /dev/null 2>&1; 5 | then 6 | echo -e 'Updating your cargo packages!\n' 7 | while IFS= read -r line; do 8 | if [ ! -z "$(echo $line | grep -i :)" ]; 9 | then 10 | pkg=$(echo $line | sed -E 's/\s.+//g') 11 | cargo install $pkg 12 | fi 13 | done < <(cargo install --list) 14 | echo -e '\nYour cargo packages have been updated!' 15 | exit 1 16 | else 17 | echo -e 'The cargo binary does not exist on your $PATH. Please make sure that it is install\n 18 | and sourced correctly.' 19 | fi 20 | -------------------------------------------------------------------------------- /bin/.local/bin/wadb: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # [ Wireless ADB setup ] 4 | # This script is used to quikly provision wireless adb debugging & opens port 5 | # for default React native bundle 6 | 7 | static_test_ip=192.168.1.128 8 | tcp_port=5555 9 | 10 | adb tcpip $tcp_port # open tcpip connections on port 11 | adb connect "$static_test_ip:$tcp_port" 12 | 13 | device_output="$(adb devices | grep "$static_test_ip:$tcp_port")" 14 | 15 | if [[ ! -z $device_output ]]; then 16 | echo "Please disconnect your device now ...." 17 | sleep 7; 18 | echo "Opening port 8081 on your device ...." 19 | adb reverse tcp:8081 tcp:8081 20 | adb devices 21 | echo "Setup successful!" 22 | fi 23 | -------------------------------------------------------------------------------- /bin/.local/bin/wifi: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | config=/etc/wpa_supplicant/wpa_supplicant-wlp59s0.conf 3 | sudo wpa_supplicant -B -i wlp59s0 -c "$config" 4 | -------------------------------------------------------------------------------- /bin/.local/bin/ytm: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Dependencies: 4 | # * yt-dlp (dlp is preferred, but youtube-dl can also be used -- just update the call in the chosen_rendition assignment) 5 | # * fzf 6 | # * mpv >= 0.33.1 (needs ytdl hook options) 7 | 8 | # @param(s) youtubeURL - youtube video url string 9 | 10 | if [ $# -eq 0 ] 11 | then 12 | echo "Please supply a valid Youtube URL" 13 | exit 1 14 | fi 15 | 16 | chosen_rendition=$(\ 17 | yt-dlp --list-formats $1 \ 18 | | grep -A5000 -m1 -e 'ID' | tail -n+3 | fzf) 19 | 20 | normalized_rendition_choice=$(echo $chosen_rendition | awk '{ print $1 }') 21 | 22 | if [[ ! -z $normalized_rendition_choice ]]; then 23 | echo 'Preparing stream ....' 24 | mpv $1 --ytdl --ytdl-format=$normalized_rendition_choice 25 | fi 26 | -------------------------------------------------------------------------------- /bin/.local/bin/ytp: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # REQUIREMENTS & DEPENDENCIES: 4 | # * NEEDS jq & mpv (default & best player) .. to install on MAC: brew install jq && brew install mpv 5 | # * A Youtube API key (you can get on via your gmail/developer console) 6 | # - note: I source this from a local file located in my home_dir (.env_secrets) 7 | 8 | # CONSTANTS 9 | DEFAULT_PLAYER=mpv 10 | # it's better to create a secrets file and source in your shell config .. 11 | # but you can uncomment this and add your key if you want 12 | # YT_API_KEY="you super secret key here" 13 | MAX_RESULTS=20 14 | 15 | # FUNCTIONS 16 | # ========= 17 | search_yt() { 18 | if [ -z $1 ] 19 | then 20 | echo "Please supply a search term." 21 | exit 22 | else 23 | local query=$(echo $1 | sed -e 's/ /%/g') # strip spaces - use special char instead 24 | local selected_result=$(curl -s \ 25 | "https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=$MAX_RESULTS&q=$query&safeSearch=none&type=video&key=$YT_API_KEY" \ 26 | --header 'Accept: application/json' \ 27 | --compressed | jq '.items | map(.id.videoId + " :: " + .snippet.title)[]' | fzf) 28 | 29 | local result_video_id=$(echo $selected_result | tr -d \" | awk '{ print $1 }') 30 | 31 | if [ ! -z $result_video_id ]; then 32 | echo "Starting MPV with videoId: $result_video_id..."; play_video $result_video_id 33 | else 34 | echo "Video ID not selected. Aborting ..." 35 | exit 1 36 | fi 37 | fi 38 | } 39 | 40 | # play_video :: string(term) -> void 41 | play_video() { 42 | if [ $DEFAULT_PLAYER == 'mpv' ] 43 | then 44 | mpv --ontop --screen=1 --geometry=33%x33%+95%+95% "https://www.youtube.com/watch?v=$1" 45 | else 46 | echo "Player $DEFAULT_PLAYER not found." 47 | exit 1 48 | fi 49 | } 50 | 51 | # INIT 52 | if [ ! command -v $DEFAULT_PLAYER &> /dev/null || ! command -v jq &> /dev/null ] 53 | then 54 | echo "Please make sure that you have both $DEFAULT_PLAYER & jq installed." 55 | exit 56 | else 57 | if [ -z $1 &> /dev/null ] 58 | then 59 | read -p "Enter search query: " search_query 60 | search_yt $search_query 61 | else 62 | search_yt $1 63 | fi 64 | fi 65 | -------------------------------------------------------------------------------- /bin/README.md: -------------------------------------------------------------------------------- 1 | :trollface: Scripts 2 | ======= 3 | 4 | Here, you'll find some helpful & miscellaneous custom scripts. Most were 5 | intended for specfic linux-based distros (void linux, arch linux); however, some 6 | are portable ie. `ytp`. 7 | -------------------------------------------------------------------------------- /clean.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | DOTFILES_DIR=$HOME/.dotfiles 3 | 4 | STOW_FOLDERS="bin,config,git,tmux,zsh" 5 | 6 | if ! command -v stow > /dev/null 7 | then 8 | echo "You need 'stow', the symlink manager, installed!" 9 | exit 1 10 | fi 11 | 12 | pushd $DOTFILES_DIR 2>&1 > /dev/null 13 | 14 | # creates array, folders, from string 15 | readarray -td, folders <<< "$(echo $STOW_FOLDERS)," 16 | unset 'folders[-1]' 17 | declare -p folders 2>&1 > /dev/null 18 | 19 | for folder in "${folders[@]}" 20 | do 21 | echo "Removing $folder" 22 | stow -D $folder # clean env 23 | done 24 | 25 | echo "Your environment is now clean!" 26 | popd 2>&1 > /dev/null 27 | exit 1 28 | -------------------------------------------------------------------------------- /config/.config/bat/config: -------------------------------------------------------------------------------- 1 | # This is `bat`s configuration file. Each line either contains a comment or 2 | # a command-line option that you want to pass to `bat` by default. You can 3 | # run `bat --help` to get a list of all possible configuration options. 4 | 5 | # Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` 6 | # for a list of all available themes 7 | --theme="tokyo-night" 8 | 9 | # Enable this to use italic text on the terminal. This is not supported on all 10 | # terminal emulators (like tmux, by default): 11 | --italic-text=always 12 | 13 | # Uncomment the following line to disable automatic paging: 14 | #--paging=never 15 | 16 | # Uncomment the following line if you are using less version >= 551 and want to 17 | # enable mouse scrolling support in `bat` when running inside tmux. This might 18 | # disable text selection, unless you press shift. 19 | #--pager="less --RAW-CONTROL-CHARS --quit-if-one-screen --mouse" 20 | 21 | # Syntax mappings: map a certain filename pattern to a language. 22 | # Example 1: use the C++ syntax for .ino files 23 | # Example 2: Use ".gitignore"-style highlighting for ".ignore" files 24 | #--map-syntax "*.ino:C++" 25 | #--map-syntax ".ignore:Git Ignore" 26 | -------------------------------------------------------------------------------- /config/.config/btop/btop.conf: -------------------------------------------------------------------------------- 1 | #? Config file for btop v. 1.2.13 2 | 3 | #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. 4 | #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" 5 | color_theme = "/home/qwerty_asdf/.config/btop/themes/catppuccin.theme" 6 | 7 | #* If the theme set background should be shown, set to False if you want terminal background transparency. 8 | theme_background = False 9 | 10 | #* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. 11 | truecolor = True 12 | 13 | #* Set to true to force tty mode regardless if a real tty has been detected or not. 14 | #* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. 15 | force_tty = False 16 | 17 | #* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. 18 | #* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. 19 | #* Use whitespace " " as separator between different presets. 20 | #* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" 21 | presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" 22 | 23 | #* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. 24 | #* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. 25 | vim_keys = True 26 | 27 | #* Rounded corners on boxes, is ignored if TTY mode is ON. 28 | rounded_corners = True 29 | 30 | #* Default symbols to use for graph creation, "braille", "block" or "tty". 31 | #* "braille" offers the highest resolution but might not be included in all fonts. 32 | #* "block" has half the resolution of braille but uses more common characters. 33 | #* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. 34 | #* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. 35 | graph_symbol = "braille" 36 | 37 | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". 38 | graph_symbol_cpu = "default" 39 | 40 | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". 41 | graph_symbol_mem = "default" 42 | 43 | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". 44 | graph_symbol_net = "default" 45 | 46 | # Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". 47 | graph_symbol_proc = "default" 48 | 49 | #* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace. 50 | shown_boxes = "cpu mem net proc" 51 | 52 | #* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. 53 | update_ms = 2000 54 | 55 | #* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", 56 | #* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. 57 | proc_sorting = "memory" 58 | 59 | #* Reverse sorting order, True or False. 60 | proc_reversed = False 61 | 62 | #* Show processes as a tree. 63 | proc_tree = False 64 | 65 | #* Use the cpu graph colors in the process list. 66 | proc_colors = True 67 | 68 | #* Use a darkening gradient in the process list. 69 | proc_gradient = True 70 | 71 | #* If process cpu usage should be of the core it's running on or usage of the total available cpu power. 72 | proc_per_core = False 73 | 74 | #* Show process memory as bytes instead of percent. 75 | proc_mem_bytes = True 76 | 77 | #* Show cpu graph for each process. 78 | proc_cpu_graphs = True 79 | 80 | #* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) 81 | proc_info_smaps = False 82 | 83 | #* Show proc box on left side of screen instead of right. 84 | proc_left = False 85 | 86 | #* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). 87 | proc_filter_kernel = False 88 | 89 | #* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. 90 | #* Select from a list of detected attributes from the options menu. 91 | cpu_graph_upper = "total" 92 | 93 | #* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. 94 | #* Select from a list of detected attributes from the options menu. 95 | cpu_graph_lower = "total" 96 | 97 | #* Toggles if the lower CPU graph should be inverted. 98 | cpu_invert_lower = True 99 | 100 | #* Set to True to completely disable the lower CPU graph. 101 | cpu_single_graph = False 102 | 103 | #* Show cpu box at bottom of screen instead of top. 104 | cpu_bottom = False 105 | 106 | #* Shows the system uptime in the CPU box. 107 | show_uptime = True 108 | 109 | #* Show cpu temperature. 110 | check_temp = True 111 | 112 | #* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. 113 | cpu_sensor = "Auto" 114 | 115 | #* Show temperatures for cpu cores also if check_temp is True and sensors has been found. 116 | show_coretemp = True 117 | 118 | #* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. 119 | #* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. 120 | #* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. 121 | #* Example: "4:0 5:1 6:3" 122 | cpu_core_map = "" 123 | 124 | #* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". 125 | temp_scale = "celsius" 126 | 127 | #* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. 128 | base_10_sizes = False 129 | 130 | #* Show CPU frequency. 131 | show_cpu_freq = True 132 | 133 | #* Draw a clock at top of screen, formatting according to strftime, empty string to disable. 134 | #* Special formatting: /host = hostname | /user = username | /uptime = system uptime 135 | clock_format = "%X" 136 | 137 | #* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. 138 | background_update = True 139 | 140 | #* Custom cpu model name, empty string to disable. 141 | custom_cpu_name = "" 142 | 143 | #* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". 144 | #* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". 145 | disks_filter = "" 146 | 147 | #* Show graphs instead of meters for memory values. 148 | mem_graphs = True 149 | 150 | #* Show mem box below net box instead of above. 151 | mem_below_net = False 152 | 153 | #* Count ZFS ARC in cached and available memory. 154 | zfs_arc_cached = True 155 | 156 | #* If swap memory should be shown in memory box. 157 | show_swap = True 158 | 159 | #* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. 160 | swap_disk = True 161 | 162 | #* If mem box should be split to also show disks info. 163 | show_disks = True 164 | 165 | #* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. 166 | only_physical = True 167 | 168 | #* Read disks list from /etc/fstab. This also disables only_physical. 169 | use_fstab = True 170 | 171 | #* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) 172 | zfs_hide_datasets = False 173 | 174 | #* Set to true to show available disk space for privileged users. 175 | disk_free_priv = False 176 | 177 | #* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. 178 | show_io_stat = True 179 | 180 | #* Toggles io mode for disks, showing big graphs for disk read/write speeds. 181 | io_mode = True 182 | 183 | #* Set to True to show combined read/write io graphs in io mode. 184 | io_graph_combined = False 185 | 186 | #* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". 187 | #* Example: "/mnt/media:100 /:20 /boot:1". 188 | io_graph_speeds = "" 189 | 190 | #* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. 191 | net_download = 100 192 | 193 | net_upload = 100 194 | 195 | #* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. 196 | net_auto = True 197 | 198 | #* Sync the auto scaling for download and upload to whichever currently has the highest scale. 199 | net_sync = True 200 | 201 | #* Starts with the Network Interface specified here. 202 | net_iface = "" 203 | 204 | #* Show battery stats in top right if battery is present. 205 | show_battery = False 206 | 207 | #* Which battery to use if multiple are present. "Auto" for auto detection. 208 | selected_battery = "Auto" 209 | 210 | #* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". 211 | #* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. 212 | log_level = "WARNING" -------------------------------------------------------------------------------- /config/.config/btop/themes/catppuccin.theme: -------------------------------------------------------------------------------- 1 | # Catppuccin for bpytop 2 | # Lokesh Krishna 3 | 4 | # All graphs and meters can be gradients 5 | # For single color graphs leave "mid" and "end" variable empty. 6 | # Use "start" and "end" variables for two color gradient 7 | # Use "start", "mid" and "end" for three color gradient 8 | 9 | # Main background, empty for terminal default, need to be empty if you want transparent background 10 | theme[main_bg]="#1e1d2f" 11 | 12 | # Main text color 13 | theme[main_fg]="#d9e0ee" 14 | 15 | # Title color for boxes 16 | theme[title]="#d9e0ee" 17 | 18 | # Highlight color for keyboard shortcuts 19 | theme[hi_fg]="#96cdfb" 20 | 21 | # Background color of selected item in processes box 22 | theme[selected_bg]="#302d41" 23 | 24 | # Foreground color of selected item in processes box 25 | theme[selected_fg]="#96cdfb" 26 | 27 | # Color of inactive/disabled text 28 | theme[inactive_fg]="#6e6c7e" 29 | 30 | # Color of text appearing on top of graphs, i.e uptime and current network graph scaling 31 | theme[graph_text]="#c3bac6" 32 | 33 | # Background color of the percentage meters 34 | theme[meter_bg]="#575268" 35 | 36 | # Misc colors for processes box including mini cpu graphs, details memory graph and details status text 37 | theme[proc_misc]="#C3BAC6" 38 | 39 | # Cpu box outline color 40 | theme[cpu_box]="#89dceb" 41 | 42 | # Memory/disks box outline color 43 | theme[mem_box]="#abe9b3" 44 | 45 | # Net up/down box outline color 46 | theme[net_box]="#ddb6f2" 47 | 48 | # Processes box outline color 49 | theme[proc_box]="#96cdfb" 50 | 51 | # Box divider line and small boxes line color 52 | theme[div_line]="#575268" 53 | 54 | # Temperature graph colors 55 | theme[temp_start]="#fae3b0" 56 | theme[temp_mid]="#f8bd95" 57 | theme[temp_end]="#e8a2af" 58 | 59 | # CPU graph colors 60 | theme[cpu_start]="#89dceb" 61 | theme[cpu_mid]="#89dceb" 62 | theme[cpu_end]="#96cdfb" 63 | 64 | # Mem/Disk free meter 65 | theme[free_start]="#b5e8e0" 66 | theme[free_mid]="#abe9b3" 67 | theme[free_end]="#abe9b3" 68 | 69 | # Mem/Disk cached meter 70 | theme[cached_start]="#c9cbff" 71 | theme[cached_mid]="#ddb6f2" 72 | theme[cached_end]="#ddb6f2" 73 | 74 | # Mem/Disk available meter 75 | theme[available_start]="#f5e0dc" 76 | theme[available_mid]="#f2cdcd" 77 | theme[available_end]="#f2cdcd" 78 | 79 | # Mem/Disk used meter 80 | theme[used_start]="#f8bd96" 81 | theme[used_mid]="#f8bd96" 82 | theme[used_end]="#e8a2af" 83 | 84 | # Download graph colors 85 | theme[download_start]="#c9cbff" 86 | theme[download_mid]="#c9cbff" 87 | theme[download_end]="#ddb6f2" 88 | 89 | # Upload graph colors 90 | theme[upload_start]="#c9cbff" 91 | theme[upload_mid]="#c9cbff" 92 | theme[upload_end]="#ddb6f2" 93 | 94 | # Process box color gradient for threads, mem and cpu usage 95 | theme[process_start]="#96cdfb" 96 | theme[process_mid]="#96cdfb" 97 | theme[process_end]="#89dceb" 98 | -------------------------------------------------------------------------------- /config/.config/cava/config: -------------------------------------------------------------------------------- 1 | ## Configuration file for CAVA. Default values are commented out. Use either ';' or '#' for commenting. 2 | 3 | 4 | [general] 5 | 6 | # Smoothing mode. Can be 'normal', 'scientific' or 'waves'. DEPRECATED as of 0.6.0 7 | ; mode = normal 8 | 9 | # Accepts only non-negative values. 10 | ; framerate = 60 11 | 12 | # 'autosens' will attempt to decrease sensitivity if the bars peak. 1 = on, 0 = off 13 | # new as of 0.6.0 autosens of low values (dynamic range) 14 | # 'overshoot' allows bars to overshoot (in % of terminal height) without initiating autosens. DEPRECATED as of 0.6.0 15 | ; autosens = 1 16 | ; overshoot = 20 17 | 18 | # Manual sensitivity in %. Autosens must be turned off for this to take effect. 19 | # 200 means double height. Accepts only non-negative values. 20 | ; sensitivity = 100 21 | 22 | # The number of bars (0-200). 0 sets it to auto (fill up console). 23 | # Bars' width and space between bars in number of characters. 24 | ; bars = 0 25 | ; bar_width = 2 26 | ; bar_spacing = 1 27 | 28 | 29 | # Lower and higher cutoff frequencies for lowest and highest bars 30 | # the bandwidth of the visualizer. 31 | # Note: there is a minimum total bandwidth of 43Mhz x number of bars. 32 | # Cava will automatically increase the higher cutoff if a too low band is specified. 33 | ; lower_cutoff_freq = 50 34 | ; higher_cutoff_freq = 10000 35 | 36 | 37 | 38 | [input] 39 | 40 | # Audio capturing method. Possible methods are: 'pulse', 'alsa', 'fifo', 'sndio' or 'shmem' 41 | # Defaults to 'pulse', 'alsa' or 'fifo', in that order, dependent on what support cava was built with. 42 | # 43 | # All input methods uses the same config variable 'source' 44 | # to define where it should get the audio. 45 | # 46 | # For pulseaudio 'source' will be the source. Default: 'auto', which uses the monitor source of the default sink 47 | # (all pulseaudio sinks(outputs) have 'monitor' sources(inputs) associated with them). 48 | # 49 | # For alsa 'source' will be the capture device. 50 | # For fifo 'source' will be the path to fifo-file. 51 | # For shmem 'source' will be /squeezelite-AA:BB:CC:DD:EE:FF where 'AA:BB:CC:DD:EE:FF' will be squeezelite's MAC address 52 | # ; method = alsa 53 | # ; source = auto 54 | 55 | method = pulse 56 | source = auto 57 | 58 | ; method = fifo 59 | ; source = /tmp/mpd.fifo 60 | 61 | ; method = shmem 62 | ; source = /squeezelite-AA:BB:CC:DD:EE:FF 63 | 64 | 65 | [output] 66 | 67 | # Ouput method. Can be 'ncurses', 'noncurses' or 'raw'. 68 | # 'noncurses' is for systems that does not suport ncurses. 69 | # 'raw' is an 8 or 16 bit (configurable via the 'bit_format' option) data 70 | # stream of the bar heights that can be used to send to other applications. 71 | # 'raw' defaults to 200 bars, which can be adjusted in the 'bars' option above. 72 | ; method = ncurses 73 | 74 | # Visual channels. Can be 'stereo' or 'mono'. 75 | # 'stereo' mirrors both channels with low frequencies in center. 76 | # 'mono' averages both channels and outputs left to right lowest to highest frequencies. 77 | ; channels = stereo 78 | 79 | # Raw output target. A fifo will be created if target does not exist. 80 | ; raw_target = /dev/stdout 81 | 82 | # Raw data format. Can be 'binary' or 'ascii'. 83 | ; data_format = binary 84 | 85 | # Binary bit format, can be '8bit' (0-255) or '16bit' (0-65530). 86 | ; bit_format = 16bit 87 | 88 | # Ascii max value. In 'ascii' mode range will run from 0 to value specified here 89 | ; ascii_max_range = 1000 90 | 91 | # Ascii delimiters. In ascii format each bar and frame is separated by a delimiters. 92 | # Use decimal value in ascii table (i.e. 59 = ';' and 10 = '\n' (line feed)). 93 | ; bar_delimiter = 59 94 | ; frame_delimiter = 10 95 | 96 | 97 | [color] 98 | 99 | # Colors can be one of seven predefined: black, blue, cyan, green, magenta, red, white, yellow. 100 | # Or defined by hex code '#xxxxxx' (hex code must be within ''). User defined colors requires a 101 | # terminal that can change color definitions such as Gnome-terminal or rxvt. 102 | ; background = black 103 | ; foreground = cyan 104 | 105 | # Gradient mode, only hex defined colors are supported, background must also be defined in hex 106 | # or remain commented out. 1 = on, 0 = off. Warning: for certain terminal emulators cava will 107 | # not able to restore color definitions on exit, simply restart your terminal to restore colors. 108 | gradient = 1 109 | gradient_count = 2 110 | gradient_color_1 = '#7aa2f7' 111 | gradient_color_2 = '#9ece6a' 112 | 113 | [smoothing] 114 | 115 | # Percentage value for integral smoothing. Takes values from 0 - 100. 116 | # Higher values means smoother, but less precise. 0 to disable. 117 | ; integral = 70 118 | 119 | # Disables or enables the so-called "Monstercat smoothing" with or without "waves". Set to 0 to disable. 120 | ; monstercat = 1 121 | ; waves = 0; 122 | 123 | # Set gravity percentage for "drop off". Higher values means bars will drop faster. 124 | # Accepts only non-negative values. 50 means half gravity, 200 means double. Set to 0 to disable "drop off". 125 | ; gravity = 100 126 | 127 | 128 | # In bar height, bars that would have been lower that this will not be drawn. 129 | ; ignore = 0 130 | 131 | 132 | [eq] 133 | 134 | # This one is tricky. You can have as much keys as you want. 135 | # Remember to uncomment more then one key! More keys = more precision. 136 | # Look at readme.md on github for further explanations and examples. 137 | ; 1 = 1 # bass 138 | ; 2 = 1 139 | ; 3 = 1 # midtone 140 | ; 4 = 1 141 | ; 5 = 1 # treble 142 | -------------------------------------------------------------------------------- /config/.config/compton/compton.conf: -------------------------------------------------------------------------------- 1 | # Shadow 2 | shadow = true; 3 | shadow-radius = 7; 4 | shadow-offset-x = -7; 5 | shadow-offset-y = -7; 6 | log-level = "warn"; 7 | # log-file = "/path/to/your/log/file"; 8 | # shadow-opacity = 0.7; 9 | # shadow-red = 0.0; 10 | # shadow-green = 0.0; 11 | # shadow-blue = 0.0; 12 | shadow-exclude = [ 13 | "name = 'Notification'", 14 | "class_g = 'dmenu'", 15 | "_GTK_FRAME_EXTENTS@:c", 16 | ]; 17 | 18 | # shadow-exclude = "n:e:Notification"; 19 | # shadow-exclude-reg = "x10+0+0"; 20 | # xinerama-shadow-crop = true; 21 | 22 | # Opacity 23 | # inactive-opacity = 0.8; 24 | # active-opacity = 1; 25 | frame-opacity = 0.7; 26 | inactive-opacity-override = false; 27 | # inactive-dim = 0.2; 28 | # inactive-dim-fixed = true; 29 | blur-background = false; 30 | # blur-background-frame = true; 31 | blur-kern = "3x3box"; 32 | # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; 33 | # blur-background-fixed = true; 34 | blur-background-exclude = [ 35 | "window_type = 'dock'", 36 | "window_type = 'desktop'", 37 | "_GTK_FRAME_EXTENTS@:c" 38 | ]; 39 | # opacity-rule = [ "80:class_g = 'URxvt'" ]; 40 | 41 | # Fading 42 | fading = false; 43 | 44 | # Other 45 | backend = "xrender"; 46 | mark-wmwin-focused = true; 47 | mark-ovredir-focused = true; 48 | # use-ewmh-active-win = true; 49 | detect-rounded-corners = true; 50 | detect-client-opacity = true; 51 | refresh-rate = 0; 52 | vsync = true; 53 | # sw-opti = true; 54 | # unredir-if-possible = true; 55 | # unredir-if-possible-delay = 5000; 56 | # unredir-if-possible-exclude = [ ]; 57 | focus-exclude = [ "class_g = 'Cairo-clock'" ]; 58 | detect-transient = true; 59 | detect-client-leader = true; 60 | invert-color-include = [ ]; 61 | # resize-damage = 1; 62 | 63 | # GLX backend 64 | # glx-no-stencil = true; 65 | # glx-no-rebind-pixmap = true; 66 | # xrender-sync-fence = true; 67 | use-damage = true; 68 | 69 | # Window type settings 70 | wintypes: 71 | { 72 | tooltip = { fade = true; shadow = true; opacity = 0.85; focus = true; full-shadow = false; }; 73 | dock = { shadow = false; } 74 | dnd = { shadow = false; } 75 | popup_menu = { opacity = 0.8; } 76 | dropdown_menu = { opacity = 0.8; } 77 | }; 78 | -------------------------------------------------------------------------------- /config/.config/dunst/dunstrc: -------------------------------------------------------------------------------- 1 | [global] 2 | ### Display ### 3 | 4 | # Which monitor should the notifications be displayed on. 5 | monitor = 0 6 | 7 | # Display notification on focused monitor. Possible modes are: 8 | # mouse: follow mouse pointer 9 | # keyboard: follow window with keyboard focus 10 | # none: don't follow anything 11 | # 12 | # "keyboard" needs a window manager that exports the 13 | # _NET_ACTIVE_WINDOW property. 14 | # This should be the case for almost all modern window managers. 15 | # 16 | # If this option is set to mouse or keyboard, the monitor option 17 | # will be ignored. 18 | follow = mouse 19 | 20 | # The geometry of the window: 21 | # [{width}]x{height}[+/-{x}+/-{y}] 22 | # The geometry of the message window. 23 | # The height is measured in number of notifications everything else 24 | # in pixels. If the width is omitted but the height is given 25 | # ("-geometry x2"), the message window expands over the whole screen 26 | # (dmenu-like). If width is 0, the window expands to the longest 27 | # message displayed. A positive x is measured from the left, a 28 | # negative from the right side of the screen. Y is measured from 29 | # the top and down respectively. 30 | # The width can be negative. In this case the actual width is the 31 | # screen width minus the width defined in within the geometry option. 32 | geometry = "300x5-30+20" 33 | 34 | # Show how many messages are currently hidden (because of geometry). 35 | indicate_hidden = yes 36 | 37 | # Shrink window if it's smaller than the width. Will be ignored if 38 | # width is 0. 39 | shrink = no 40 | 41 | # The transparency of the window. Range: [0; 100]. 42 | # This option will only work if a compositing window manager is 43 | # present (e.g. xcompmgr, compiz, etc.). 44 | transparency = 0 45 | 46 | # The height of the entire notification. If the height is smaller 47 | # than the font height and padding combined, it will be raised 48 | # to the font height and padding. 49 | notification_height = 0 50 | 51 | # Draw a line of "separator_height" pixel height between two 52 | # notifications. 53 | # Set to 0 to disable. 54 | separator_height = 2 55 | 56 | # Padding between text and separator. 57 | padding = 8 58 | 59 | # Horizontal padding. 60 | horizontal_padding = 8 61 | 62 | # Defines width in pixels of frame around the notification window. 63 | # Set to 0 to disable. 64 | frame_width = 3 65 | 66 | # Defines color of the frame around the notification window. 67 | frame_color = "#50fa7b" 68 | 69 | 70 | # Define a color for the separator. 71 | # possible values are: 72 | # * auto: dunst tries to find a color fitting to the background; 73 | # * foreground: use the same color as the foreground; 74 | # * frame: use the same color as the frame; 75 | # * anything else will be interpreted as a X color. 76 | separator_color = frame 77 | 78 | # Sort messages by urgency. 79 | sort = yes 80 | 81 | # Don't remove messages, if the user is idle (no mouse or keyboard input) 82 | # for longer than idle_threshold seconds. 83 | # Set to 0 to disable. 84 | # Transient notifications ignore this setting. 85 | idle_threshold = 120 86 | 87 | ### Text ### 88 | 89 | font = Tamzen 10 90 | 91 | # The spacing between lines. If the height is smaller than the 92 | # font height, it will get raised to the font height. 93 | line_height = 1 94 | 95 | # Possible values are: 96 | # full: Allow a small subset of html markup in notifications: 97 | # bold 98 | # italic 99 | # strikethrough 100 | # underline 101 | # 102 | # For a complete reference see 103 | # . 104 | # 105 | # strip: This setting is provided for compatibility with some broken 106 | # clients that send markup even though it's not enabled on the 107 | # server. Dunst will try to strip the markup but the parsing is 108 | # simplistic so using this option outside of matching rules for 109 | # specific applications *IS GREATLY DISCOURAGED*. 110 | # 111 | # no: Disable markup parsing, incoming notifications will be treated as 112 | # plain text. Dunst will not advertise that it has the body-markup 113 | # capability if this is set as a global setting. 114 | # 115 | # It's important to note that markup inside the format option will be parsed 116 | # regardless of what this is set to. 117 | markup = full 118 | 119 | # The format of the message. Possible variables are: 120 | # %a appname 121 | # %s summary 122 | # %b body 123 | # %i iconname (including its path) 124 | # %I iconname (without its path) 125 | # %p progress value if set ([ 0%] to [100%]) or nothing 126 | # %n progress value if set without any extra characters 127 | # %% Literal % 128 | # Markup is allowed 129 | format = "%s\n%b" 130 | 131 | # Alignment of message text. 132 | # Possible values are "left", "center" and "right". 133 | alignment = left 134 | 135 | # Show age of message if message is older than show_age_threshold 136 | # seconds. 137 | # Set to -1 to disable. 138 | show_age_threshold = 60 139 | 140 | # Split notifications into multiple lines if they don't fit into 141 | # geometry. 142 | word_wrap = yes 143 | 144 | # When word_wrap is set to no, specify where to ellipsize long lines. 145 | # Possible values are "start", "middle" and "end". 146 | ellipsize = middle 147 | 148 | # Ignore newlines '\n' in notifications. 149 | ignore_newline = no 150 | 151 | # Merge multiple notifications with the same content 152 | stack_duplicates = true 153 | 154 | # Hide the count of merged notifications with the same content 155 | hide_duplicate_count = false 156 | 157 | # Display indicators for URLs (U) and actions (A). 158 | show_indicators = yes 159 | 160 | ### Icons ### 161 | 162 | # Align icons left/right/off 163 | icon_position = left 164 | 165 | # Scale larger icons down to this size, set to 0 to disable 166 | max_icon_size = 50 167 | 168 | # Paths to default icons. 169 | icon_path = /home/qwerty/Pictures/profiles/ 170 | 171 | ### History ### 172 | 173 | # Should a notification popped up from history be sticky or timeout 174 | # as if it would normally do. 175 | sticky_history = yes 176 | 177 | # Maximum amount of notifications kept in history 178 | history_length = 20 179 | 180 | ### Misc/Advanced ### 181 | 182 | # dmenu path. 183 | dmenu = /usr/local/bin/dmenu -p dunst: 184 | 185 | # Browser for opening urls in context menu. 186 | browser = /usr/bin/qutebrowser -new-tab 187 | 188 | # Always run rule-defined scripts, even if the notification is suppressed 189 | always_run_script = true 190 | 191 | # Define the title of the windows spawned by dunst 192 | title = Dunst 193 | 194 | # Define the class of the windows spawned by dunst 195 | class = Dunst 196 | 197 | # automatically after a crash. 198 | startup_notification = false 199 | 200 | ### Legacy 201 | 202 | # Use the Xinerama extension instead of RandR for multi-monitor support. 203 | # This setting is provided for compatibility with older nVidia drivers that 204 | # do not support RandR and using it on systems that support RandR is highly 205 | # discouraged. 206 | # 207 | # By enabling this setting dunst will not be able to detect when a monitor 208 | # is connected or disconnected which might break follow mode if the screen 209 | # layout changes. 210 | force_xinerama = false 211 | 212 | # Experimental features that may or may not work correctly. Do not expect them 213 | # to have a consistent behaviour across releases. 214 | [experimental] 215 | # Calculate the dpi to use on a per-monitor basis. 216 | # If this setting is enabled the Xft.dpi value will be ignored and instead 217 | # dunst will attempt to calculate an appropriate dpi value for each monitor 218 | # using the resolution and physical size. This might be useful in setups 219 | # where there are multiple screens with very different dpi values. 220 | per_monitor_dpi = false 221 | 222 | [shortcuts] 223 | 224 | # Shortcuts are specified as [modifier+][modifier+]...key 225 | # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2", 226 | # "mod3" and "mod4" (windows-key). 227 | # Xev might be helpful to find names for keys. 228 | 229 | # Close notification. 230 | close = ctrl+space 231 | 232 | # Close all notifications. 233 | close_all = ctrl+shift+space 234 | 235 | # Redisplay last message(s). 236 | # On the US keyboard layout "grave" is normally above TAB and left 237 | # of "1". Make sure this key actually exists on your keyboard layout, 238 | # e.g. check output of 'xmodmap -pke' 239 | history = ctrl+grave 240 | 241 | # Context menu. 242 | context = ctrl+shift+backspace 243 | 244 | [urgency_low] 245 | # IMPORTANT: colors have to be defined in quotation marks. 246 | # Otherwise the "#" and following would be interpreted as a comment. 247 | background = "#282A36" 248 | foreground = "#888888" 249 | timeout = 10 250 | icon = /home/qwerty/Pictures/profiles/eliza.png 251 | 252 | [urgency_normal] 253 | background = "#282A36" 254 | foreground = "#ffffff" 255 | timeout = 10 256 | icon = /home/qwerty/Pictures/profiles/eliza.png 257 | 258 | [urgency_critical] 259 | background = "#50fa7b" 260 | foreground = "#ffffff" 261 | frame_color = "#ff0000" 262 | timeout = 0 263 | icon = /home/qwerty/Pictures/profiles/eliza.png 264 | 265 | # Every section that isn't one of the above is interpreted as a rules to 266 | # override settings for certain messages. 267 | # Messages can be matched by "appname", "summary", "body", "icon", "category", 268 | # "msg_urgency" and you can override the "timeout", "urgency", "foreground", 269 | # "background", "new_icon" and "format". 270 | # Shell-like globbing will get expanded. 271 | # 272 | # SCRIPTING 273 | # You can specify a script that gets run when the rule matches by 274 | # setting the "script" option. 275 | # The script will be called as follows: 276 | # script appname summary body icon urgency 277 | # where urgency can be "LOW", "NORMAL" or "CRITICAL". 278 | # 279 | # NOTE: if you don't want a notification to be displayed, set the format 280 | # to "". 281 | # NOTE: It might be helpful to run dunst -print in a terminal in order 282 | # to find fitting options for rules. 283 | 284 | #[espeak] 285 | # summary = "*" 286 | # script = dunst_espeak.sh 287 | 288 | #[script-test] 289 | # summary = "*script*" 290 | # script = dunst_test.sh 291 | 292 | #[ignore] 293 | # # This notification will not be displayed 294 | # summary = "foobar" 295 | # format = "" 296 | 297 | #[history-ignore] 298 | # # This notification will not be saved in history 299 | # summary = "foobar" 300 | # history_ignore = yes 301 | 302 | #[signed_on] 303 | # appname = Pidgin 304 | # summary = "*signed on*" 305 | # urgency = low 306 | # 307 | #[signed_off] 308 | # appname = Pidgin 309 | # summary = *signed off* 310 | # urgency = low 311 | # 312 | #[says] 313 | # appname = Pidgin 314 | # summary = *says* 315 | # urgency = critical 316 | # 317 | #[twitter] 318 | # appname = Pidgin 319 | # summary = *twitter.com* 320 | # urgency = normal 321 | # 322 | # vim: ft=cfg 323 | -------------------------------------------------------------------------------- /config/.config/fontconfig/fonts.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | emoji 8 | Noto Color Emoji 9 | 10 | 11 | 12 | 13 | sans 14 | Noto Color Emoji 15 | 16 | 17 | 18 | serif 19 | Noto Color Emoji 20 | 21 | 22 | 23 | sans-serif 24 | Noto Color Emoji 25 | 26 | 27 | 28 | monospace 29 | Noto Color Emoji 30 | 31 | 32 | -------------------------------------------------------------------------------- /config/.config/gitui/key_bindings.ron: -------------------------------------------------------------------------------- 1 | // bit for modifiers 2 | // bits: 0 None 3 | // bits: 1 SHIFT 4 | // bits: 2 CONTROL 5 | // 6 | // Note: 7 | // If the default key layout is lower case, 8 | // and you want to use `Shift + q` to trigger the exit event, 9 | // the setting should like this `exit: Some(( code: Char('Q'), modifiers: ( bits: 1,),)),` 10 | // The Char should be upper case, and the shift modified bit should be set to 1. 11 | // 12 | // Note: 13 | // find `KeysList` type in src/keys/key_list.rs for all possible keys. 14 | // every key not overwritten via the config file will use the default specified there 15 | 16 | ( 17 | focus_right: Some(( code: Char('l'), modifiers: ( bits: 0,),)), 18 | focus_left: Some(( code: Char('h'), modifiers: ( bits: 0,),)), 19 | focus_above: Some(( code: Char('k'), modifiers: ( bits: 0,),)), 20 | focus_below: Some(( code: Char('j'), modifiers: ( bits: 0,),)), 21 | 22 | open_help: Some(( code: F(1), modifiers: ( bits: 0,),)), 23 | 24 | move_left: Some(( code: Char('h'), modifiers: ( bits: 0,),)), 25 | move_right: Some(( code: Char('l'), modifiers: ( bits: 0,),)), 26 | move_up: Some(( code: Char('k'), modifiers: ( bits: 0,),)), 27 | move_down: Some(( code: Char('j'), modifiers: ( bits: 0,),)), 28 | popup_up: Some(( code: Char('p'), modifiers: ( bits: 2,),)), 29 | popup_down: Some(( code: Char('n'), modifiers: ( bits: 2,),)), 30 | page_up: Some(( code: Char('b'), modifiers: ( bits: 2,),)), 31 | page_down: Some(( code: Char('f'), modifiers: ( bits: 2,),)), 32 | home: Some(( code: Char('g'), modifiers: ( bits: 0,),)), 33 | end: Some(( code: Char('G'), modifiers: ( bits: 1,),)), 34 | shift_up: Some(( code: Char('K'), modifiers: ( bits: 1,),)), 35 | shift_down: Some(( code: Char('J'), modifiers: ( bits: 1,),)), 36 | 37 | edit_file: Some(( code: Char('I'), modifiers: ( bits: 1,),)), 38 | 39 | status_reset_item: Some(( code: Char('U'), modifiers: ( bits: 1,),)), 40 | 41 | diff_reset_lines: Some(( code: Char('u'), modifiers: ( bits: 0,),)), 42 | diff_stage_lines: Some(( code: Char('s'), modifiers: ( bits: 0,),)), 43 | 44 | stashing_save: Some(( code: Char('w'), modifiers: ( bits: 0,),)), 45 | stashing_toggle_index: Some(( code: Char('m'), modifiers: ( bits: 0,),)), 46 | 47 | stash_open: Some(( code: Char('l'), modifiers: ( bits: 0,),)), 48 | 49 | abort_merge: Some(( code: Char('M'), modifiers: ( bits: 1,),)), 50 | ) 51 | -------------------------------------------------------------------------------- /config/.config/gitui/theme.ron: -------------------------------------------------------------------------------- 1 | ( 2 | selected_tab: Reset, 3 | command_fg: White, 4 | selection_bg: Blue, 5 | selection_fg: White, 6 | cmdbar_bg: Blue, 7 | cmdbar_extra_lines_bg: Blue, 8 | disabled_fg: DarkGray, 9 | diff_line_add: Green, 10 | diff_line_delete: Red, 11 | diff_file_added: LightGreen, 12 | diff_file_removed: LightRed, 13 | diff_file_moved: LightMagenta, 14 | diff_file_modified: Yellow, 15 | commit_hash: Magenta, 16 | commit_time: LightCyan, 17 | commit_author: Green, 18 | danger_fg: Red, 19 | push_gauge_bg: Blue, 20 | push_gauge_fg: Reset, 21 | tag_fg: LightMagenta, 22 | branch_fg: LightYellow, 23 | ) -------------------------------------------------------------------------------- /config/.config/gtk-2.0/gtkfilechooser.ini: -------------------------------------------------------------------------------- 1 | [Filechooser Settings] 2 | LocationMode=path-bar 3 | ShowHidden=false 4 | ShowSizeColumn=true 5 | GeometryX=1920 6 | GeometryY=32 7 | GeometryWidth=912 8 | GeometryHeight=699 9 | SortColumn=name 10 | SortOrder=ascending 11 | StartupMode=recent 12 | -------------------------------------------------------------------------------- /config/.config/home-manager/home.nix: -------------------------------------------------------------------------------- 1 | { pkgs, ...}: { 2 | home.username = "qwerty_asdf"; 3 | home.homeDirectory = "/home/qwerty_asdf"; 4 | 5 | home.stateVersion = "22.05"; 6 | 7 | # let home-manager manage itself 8 | programs.home-manager.enable = true; 9 | 10 | fonts.fontconfig = { 11 | enable = true; 12 | }; 13 | 14 | nixpkgs.config.allowUnfree = true; 15 | 16 | home.packages = with pkgs; [ 17 | bat 18 | btop 19 | bun 20 | cava 21 | cmake 22 | # discord 23 | eza 24 | feh 25 | ffmpeg 26 | # firefox 27 | fzf 28 | gitui 29 | go 30 | gtypist 31 | iosevka 32 | imagemagick 33 | jq 34 | # ktlint 35 | libnotify 36 | lld 37 | lolcat 38 | lynx 39 | mitmproxy 40 | # mpv 41 | neofetch 42 | neovim-remote 43 | nerdfonts 44 | nmap 45 | nnn 46 | obsidian 47 | # pass - uncomment when using X 48 | pass-wayland 49 | racket 50 | react-native-debugger 51 | ripasso-cursive 52 | ripgrep 53 | rustup 54 | starship 55 | tab-rs 56 | tealdeer 57 | tmux 58 | traceroute 59 | tree-sitter 60 | # unclutter-xfixes 61 | # xclip 62 | yt-dlp 63 | zathura 64 | zig 65 | zk 66 | zsh 67 | zsh-autocomplete 68 | zsh-autosuggestions 69 | zsh-syntax-highlighting 70 | ]; 71 | } 72 | -------------------------------------------------------------------------------- /config/.config/lynx.lss: -------------------------------------------------------------------------------- 1 | # Setting the normal and default types lets us keep (almost) the same colors 2 | # whether the terminal's default colors are white-on-black or black-on-white. 3 | # It is not exact since the default "white" is not necessarily the same color 4 | # as the ANSI lightgray, but is as close as we can get in a standard way. 5 | # 6 | # If you really want the terminal's default colors, and if lynx is built using 7 | # ncurses' default-color support, remove these two lines: 8 | #normal: normal: lightgray:black 9 | #default: normal: white:black 10 | 11 | # Normal type styles correspond to HTML tags. 12 | # 13 | # The next line (beginning with "em") means: use bold if mono, otherwise 14 | # brightblue on 15 | em: bold: brightblue 16 | strong: bold: brightred 17 | b: bold: red 18 | i: bold: brightblue 19 | a: bold: green 20 | img: dim: brown 21 | fig: normal: gray 22 | caption: reverse: brown 23 | hr: normal: yellow 24 | blockquote: normal: brightblue 25 | ul: normal: brown 26 | address: normal: magenta 27 | title: normal: magenta 28 | tt: dim: brightmagenta: black 29 | h1: bold: white: blue 30 | label: normal: magenta 31 | q: normal: yellow: magenta 32 | small: dim: default 33 | big: bold: yellow 34 | sup: bold: yellow 35 | sub: dim: gray 36 | li: normal: magenta 37 | code: normal: cyan 38 | cite: normal: cyan 39 | 40 | table: normal: brightcyan 41 | tr: bold: brown 42 | td: normal: default 43 | br: normal: default 44 | 45 | # Special styles - not corresponding directly to HTML tags 46 | # alert - status bar, when message begins "Alert". 47 | # alink - active link 48 | # normal - default attributes 49 | # status - status bar 50 | # whereis - whereis search target 51 | # 52 | #normal:normal:default:blue 53 | alink: reverse: yellow: black 54 | status: reverse: cyan: default 55 | alert: bold: yellow: red 56 | #whereis: reverse+underline: magenta: cyan 57 | whereis: bold+reverse: black: yellow 58 | # currently not used 59 | #value:normal:green 60 | 61 | menu.bg: normal: black: lightgray 62 | menu.frame: normal: black: lightgray 63 | menu.entry: normal: lightgray: black 64 | menu.n: normal: red: gray 65 | menu.active: normal: yellow: black 66 | menu.sb: normal: brightred: lightgray 67 | 68 | forwbackw.arrow:reverse 69 | hot.paste: normal: brightred: gray 70 | 71 | # Styles with classes -
    etc. 72 | ul.red: underline: brightred 73 | ul.blue: bold: brightblue 74 | li.red: reverse: red: yellow 75 | li.blue: bold: blue 76 | strong.a: bold: black: red 77 | em.a: reverse: black: blue 78 | strong.b: bold: white: red 79 | em.b: reverse: white: blue 80 | strong.debug: reverse: green 81 | font.letter: normal: white: blue 82 | input.submit: normal: cyan 83 | tr.baone: bold: yellow 84 | tr.batwo: bold: green 85 | tr.bathree: bold: red 86 | # 87 | # Special handling for link. 88 | link: normal: white 89 | link.green: bold: brightgreen 90 | link.red: bold: black: red 91 | link.blue: bold: white: blue 92 | link.toc: bold: black: white 93 | # Special cases for link - the rel or title is appended after the class. 94 | # 95 | link.red.next: bold: red 96 | link.red.prev: bold: yellow: red 97 | link.blue.prev: bold: yellow: blue 98 | link.blue.next: bold: blue 99 | link.green.toc: bold: white: green 100 | # 101 | # Define styles that will be used when syntax highlighting is requested 102 | # (commandline option -prettysrc). 103 | span.htmlsrc_comment:normal: white 104 | span.htmlsrc_tag:normal: white 105 | #If you don't like that the tag name and attribute name are displayed 106 | #in different colors, comment the following line. 107 | span.htmlsrc_attrib:normal: cyan 108 | span.htmlsrc_attrval:normal: magenta 109 | span.htmlsrc_abracket:normal: white 110 | span.htmlsrc_entity:normal: white 111 | ##span.htmlsrc_href: 112 | ##span.htmlsrc_entire: 113 | span.htmlsrc_badseq:normal: red 114 | span.htmlsrc_badtag:normal: red 115 | span.htmlsrc_badattr:normal: red 116 | span.htmlsrc_sgmlspecial:normal: yellow 117 | -------------------------------------------------------------------------------- /config/.config/mps-youtube/config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vinnyA3/dotfiles/abd5a8b29455ea89a54adab2e6d85e1a4cf0c177/config/.config/mps-youtube/config -------------------------------------------------------------------------------- /config/.config/mps-youtube/transcode: -------------------------------------------------------------------------------- 1 | # transcoding presets for mps-youtube 2 | # VERSION 0 3 | 4 | # change ENCODER_PATH to the path of ffmpeg / avconv or leave it as auto 5 | # to let mps-youtube attempt to find ffmpeg or avconv 6 | ENCODER_PATH: auto 7 | 8 | # Delete original file after encoding it 9 | # Set to False to keep the original downloaded file 10 | DELETE_ORIGINAL: True 11 | 12 | # ENCODING PRESETS 13 | 14 | # Encode ogg or m4a to mp3 256k 15 | name: MP3 256k 16 | extension: mp3 17 | valid for: ogg,m4a 18 | command: ENCODER_PATH -i IN -codec:a libmp3lame -b:a 256k OUT.EXT 19 | 20 | # Encode ogg or m4a to mp3 192k 21 | name: MP3 192k 22 | extension: mp3 23 | valid for: ogg,m4a 24 | command: ENCODER_PATH -i IN -codec:a libmp3lame -b:a 192k OUT.EXT 25 | 26 | # Encode ogg or m4a to mp3 highest quality vbr 27 | name: MP3 VBR best 28 | extension: mp3 29 | valid for: ogg,m4a 30 | command: ENCODER_PATH -i IN -codec:a libmp3lame -q:a 0 OUT.EXT 31 | 32 | # Encode ogg or m4a to mp3 high quality vbr 33 | name: MP3 VBR good 34 | extension: mp3 35 | valid for: ogg,m4a 36 | command: ENCODER_PATH -i IN -codec:a libmp3lame -q:a 2 OUT.EXT 37 | 38 | # Encode m4a to ogg 39 | name: OGG 256k 40 | extension: ogg 41 | valid for: m4a 42 | command: ENCODER_PATH -i IN -codec:a libvorbis -b:a 256k OUT.EXT 43 | 44 | # Encode ogg to m4a 45 | name: M4A 256k 46 | extension: m4a 47 | valid for: ogg 48 | command: ENCODER_PATH -i IN -strict experimental -codec:a aac -b:a 256k OUT.EXT 49 | 50 | # Encode ogg or m4a to wma v2 51 | name: Windows Media Audio v2 52 | extension: wma 53 | valid for: ogg,m4a 54 | command: ENCODER_PATH -i IN -codec:a wmav2 -q:a 0 OUT.EXT -------------------------------------------------------------------------------- /config/.config/mpv/mpv.conf: -------------------------------------------------------------------------------- 1 | # ytdl hook requires hard path, change according to env 2 | # script-opts=ytdl_hook-ytdl_path=/home/qwerty_asdf/.nix-profile/bin/yt-dlp 3 | # helpful for proper tiling on tiling window manager 4 | no-keepaspect-window 5 | # gpu-acceleration 6 | # hwdec=vaapi 7 | # vo=vaapi 8 | -------------------------------------------------------------------------------- /config/.config/nixpkgs/rust-shell.nix: -------------------------------------------------------------------------------- 1 | { pkgs ? import {} }: 2 | 3 | pkgs.mkShell rec { 4 | name = "rustup-custom-toolchain"; 5 | 6 | buildInputs = with pkgs; [ 7 | llvmPackages_latest.llvm 8 | llvmPackages_latest.bintools 9 | zlib.out 10 | rustup 11 | xorriso 12 | grub2 13 | qemu 14 | llvmPackages_latest.lld 15 | python3 16 | ]; 17 | 18 | RUSTC_VERSION = pkgs.lib.readFile ./rust-toolchain; 19 | # https://github.com/rust-lang/rust-bindgen#environment-variables 20 | LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ]; 21 | HISTFILE = toString ./.history; 22 | 23 | shellHook = '' 24 | export PATH=$PATH:${CARGO_HOME:-~/.cargo}/bin 25 | export PATH=$PATH:${RUSTUP_HOME:-~/.rustup}/toolchains/$RUSTC_VERSION-x86_64-unknown-linux-gnu/bin/ 26 | ''; 27 | 28 | # Add libvmi precompiled library to rustc search path 29 | RUSTFLAGS = (builtins.map (a: ''-L ${a}/lib'') [ 30 | pkgs.libvmi 31 | ]); 32 | 33 | # Add libvmi, glibc, clang, glib headers to bindgen search path 34 | BINDGEN_EXTRA_CLANG_ARGS = 35 | # Includes with normal include path 36 | (builtins.map (a: ''-I"${a}/include"'') [ 37 | pkgs.libvmi 38 | pkgs.glibc.dev 39 | ]) 40 | # Includes with special directory paths 41 | ++ [ 42 | ''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"'' 43 | ''-I"${pkgs.glib.dev}/include/glib-2.0"'' 44 | ''-I${pkgs.glib.out}/lib/glib-2.0/include/'' 45 | ]; 46 | } 47 | -------------------------------------------------------------------------------- /config/.config/polybar/config: -------------------------------------------------------------------------------- 1 | ;========================================================== 2 | ; 3 | ; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ 4 | ; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ 5 | ; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ 6 | ; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ 7 | ; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ 8 | ; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ 9 | ; 10 | ; To learn more about how to configure Polybar 11 | ; go to https://github.com/jaagr/polybar 12 | ; 13 | ; The README contains alot of information 14 | ; 15 | ;========================================================== 16 | 17 | [colors] 18 | background = ${xrdb:background:#444} 19 | ; background = #222 20 | background-alt = #444 21 | foreground = ${xrdb:foreground:#dfdfdf} 22 | ; foreground = #dfdfdf 23 | ; foreground-alt = ${xrdb:color8:#dfdfdf} 24 | foreground-alt = #727272 25 | 26 | primary = ${xrdb:color2:#e60053} 27 | secondary = ${xrdb:color1:#e60053} 28 | alert = ${xrdb:color1:#e60053} 29 | 30 | [bar/main] 31 | monitor = ${env:MONITOR:eDP1} 32 | width = 100% 33 | height = 27 34 | bottom = true 35 | ;offset-x = 1% 36 | offset-y = 0% 37 | radius = 0.0 38 | fixed-center = true 39 | 40 | background = ${colors.background} 41 | foreground = ${colors.foreground} 42 | 43 | enable-ipc = true 44 | 45 | line-size = 3 46 | line-color = #f00 47 | 48 | ; border-size = 4 49 | ; border-color = #00000000 50 | 51 | padding-left = 0 52 | padding-right = 2 53 | 54 | module-margin-left = 1 55 | module-margin-right = 3 56 | 57 | font-0 = fixed:pixelsize=12;1 58 | font-1 = unifont:fontformat=truetype:size=14:antialias=false;1 59 | font-2 = siji:pixelsize=12;3 60 | 61 | ; modules-left = workspaces-xmonad title-xmonad 62 | modules-left = ewmh 63 | ; modules-center = date 64 | modules-right = filesystem alsa xkeyboard memory cpu battery wlan temperature date powermenu 65 | 66 | tray-position = right 67 | tray-padding = 2 68 | ;tray-background = #0063ff 69 | 70 | ;wm-restack = bspwm 71 | ;wm-restack = i3 72 | 73 | override-redirect = true 74 | 75 | ;scroll-up = bspwm-desknext 76 | ;scroll-down = bspwm-deskprev 77 | 78 | ;scroll-up = i3wm-wsnext 79 | ;scroll-down = i3wm-wsprev 80 | 81 | cursor-click = pointer 82 | cursor-scroll = ns-resize 83 | 84 | [module/xwindow] 85 | type = internal/xwindow 86 | label = %title:0:30:...% 87 | 88 | [module/xkeyboard] 89 | type = internal/xkeyboard 90 | blacklist-0 = num lock 91 | 92 | format-prefix = " " 93 | format-prefix-foreground = ${colors.foreground-alt} 94 | ; format-prefix-underline = #f1fa8c 95 | 96 | label-layout = %layout% 97 | ; label-layout-underline = #f1fa8c 98 | 99 | label-indicator-padding = 2 100 | label-indicator-margin = 1 101 | label-indicator-background = ${colors.secondary} 102 | ; label-indicator-underline = #f1fa8c 103 | 104 | [module/filesystem] 105 | type = internal/fs 106 | interval = 25 107 | 108 | mount-0 = /home 109 | 110 | label-mounted = %{F#8be9fd}%mountpoint%%{F-}: %percentage_used%% 111 | label-unmounted = %mountpoint% not mounted 112 | label-unmounted-foreground = ${colors.foreground-alt} 113 | 114 | [module/ewmh] 115 | type = internal/xworkspaces 116 | ; Only show workspaces defined on the same output as the bar 117 | ; 118 | ; Useful if you want to show monitor specific workspaces 119 | ; on different bars 120 | ; 121 | ; Default: false 122 | pin-workspaces = false 123 | enable-click = true 124 | enable-scroll = false 125 | label-active-foreground = ${colors.foreground} 126 | label-active-background = ${colors.background} 127 | label-active-underline = ${xrdb:color4} 128 | label-empty-padding = 2 129 | label-active-padding = 2 130 | label-urgent-background = ${colors.primary} 131 | ; label-occupied-padding = 2 132 | 133 | label-song-maxlen = 25 134 | label-song-ellipsis = true 135 | 136 | [module/xbacklight] 137 | type = internal/xbacklight 138 | 139 | format =