├── scripts ├── bin │ ├── test-perf │ ├── pass-list │ ├── root_clean │ ├── clean │ ├── benchmark-zsh │ ├── export-gpg │ ├── clean_docker │ ├── command_exists │ ├── gpg-remove-cache │ ├── import-gpg │ ├── gpg-restart │ ├── clean_nodejs │ ├── toggle-nvim-lua │ ├── curltime │ ├── export-brew │ ├── media-convert │ ├── corstest │ ├── sp-lyrics │ └── npmsearch ├── logs │ └── my-arch-pkg ├── docs │ └── commit-types └── README.md ├── docs ├── demo.gif ├── current.png ├── sample-linux.png ├── sample-mac.png ├── login.txt ├── password-manager.png ├── sample-linux-menu.png ├── sample-mac-fetch.png ├── sample-mac-tmux.png └── sample-linux-clipboard.png ├── .config ├── polybar##os.Linux │ ├── fonts │ ├── panel │ ├── scripts │ ├── wallpaper │ ├── launch.sh │ └── config.ini ├── yadm │ ├── config │ ├── encrypt │ └── bootstrap ├── zsh │ ├── Linux.zsh │ ├── golang.zsh │ ├── Darwin.zsh │ └── zshrc.zsh ├── rofi##os.Linux │ ├── config.rasi │ ├── slate.rasi │ └── onedark.rasi ├── kitty │ └── kitty.conf └── i3##os.Linux │ ├── spotify_blocklet │ ├── config.bak │ └── config ├── Pictures └── bg0.jpeg ├── .local └── share │ └── yadm │ └── archive ├── .ssh └── config ├── .teamocil └── evil.yml ├── .gitmodules ├── .github └── workflows │ └── ci.yml ├── README.ENGLISH.md └── README.md /scripts/bin/test-perf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | -------------------------------------------------------------------------------- /scripts/bin/pass-list: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | 3 | 4 | pass list 5 | -------------------------------------------------------------------------------- /docs/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/demo.gif -------------------------------------------------------------------------------- /.config/polybar##os.Linux/fonts: -------------------------------------------------------------------------------- 1 | /home/r177/.config/polybar-themes/polybar-10/fonts -------------------------------------------------------------------------------- /.config/polybar##os.Linux/panel: -------------------------------------------------------------------------------- 1 | /home/r177/.config/polybar-themes/polybar-10/panel -------------------------------------------------------------------------------- /docs/current.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/current.png -------------------------------------------------------------------------------- /.config/polybar##os.Linux/scripts: -------------------------------------------------------------------------------- 1 | /home/r177/.config/polybar-themes/polybar-10/scripts -------------------------------------------------------------------------------- /Pictures/bg0.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/Pictures/bg0.jpeg -------------------------------------------------------------------------------- /.config/polybar##os.Linux/wallpaper: -------------------------------------------------------------------------------- 1 | /home/r177/.config/polybar-themes/polybar-10/wallpaper -------------------------------------------------------------------------------- /.config/yadm/config: -------------------------------------------------------------------------------- 1 | [yadm] 2 | gpg-recipient = B0B63B776767DFAA669D06715CA1E57AFBF76F90 3 | -------------------------------------------------------------------------------- /docs/sample-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/sample-linux.png -------------------------------------------------------------------------------- /docs/sample-mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/sample-mac.png -------------------------------------------------------------------------------- /.local/share/yadm/archive: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/.local/share/yadm/archive -------------------------------------------------------------------------------- /docs/login.txt: -------------------------------------------------------------------------------- 1 | @startuml: 2 | 3 | Rin -> (web/app):login (with/out OTP or 2FA) 4 | 5 | @enduml 6 | -------------------------------------------------------------------------------- /docs/password-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/password-manager.png -------------------------------------------------------------------------------- /docs/sample-linux-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/sample-linux-menu.png -------------------------------------------------------------------------------- /docs/sample-mac-fetch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/sample-mac-fetch.png -------------------------------------------------------------------------------- /docs/sample-mac-tmux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/sample-mac-tmux.png -------------------------------------------------------------------------------- /.ssh/config: -------------------------------------------------------------------------------- 1 | Host github.com 2 | Hostname ssh.github.com 3 | Port 443 4 | 5 | IdentityFile ~/.ssh/id_rsa 6 | -------------------------------------------------------------------------------- /docs/sample-linux-clipboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/r17x/.dotifiles/HEAD/docs/sample-linux-clipboard.png -------------------------------------------------------------------------------- /.config/zsh/Linux.zsh: -------------------------------------------------------------------------------- 1 | ### FLAG ### 2 | # define ARCHFLAGS when using `Linux` 3 | export ARCHFLAGS="-arch x86_64" 4 | ### FLAG ### 5 | -------------------------------------------------------------------------------- /scripts/bin/root_clean: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | 3 | ./command_exists notify-send \ 4 | "[START]... docker clean" 5 | ./clean_docker 6 | -------------------------------------------------------------------------------- /.config/yadm/encrypt: -------------------------------------------------------------------------------- 1 | Documents/* 2 | .rogu/gcs-key.json 3 | .ssh/id_rsa* 4 | .wakatime.cfg 5 | .zsh_history 6 | .config/glab-cli/config.yml 7 | -------------------------------------------------------------------------------- /.teamocil/evil.yml: -------------------------------------------------------------------------------- 1 | windows: 2 | - name: evil 3 | root: ~/evl 4 | layout: even-horizontal 5 | panes: 6 | - vim 7 | - ls -l 8 | -------------------------------------------------------------------------------- /scripts/bin/clean: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | 3 | ./command_exists notify-send \ 4 | "[START]... clean nodejs (include node_modules)" 5 | ./clean_nodejs 6 | -------------------------------------------------------------------------------- /.config/zsh/golang.zsh: -------------------------------------------------------------------------------- 1 | # golang 2 | export GOPATH=$HOME/go 3 | export GOROOT=/usr/local/opt/go/libexec 4 | export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin" 5 | -------------------------------------------------------------------------------- /scripts/bin/benchmark-zsh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "Benchmark your zsh configuration ~/.zshrc" 4 | 5 | for i in $(seq 1 10); do /usr/bin/time zsh -i -c exit; done 6 | -------------------------------------------------------------------------------- /scripts/bin/export-gpg: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm -f $(pwd)/$1.{pub,sec} 4 | gpg --output $(pwd)/$1.pub --export $1 5 | gpg --export-secret-key $1 | paperkey --output $(pwd)/$1.sec 6 | -------------------------------------------------------------------------------- /scripts/bin/clean_docker: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | 3 | sudo systemctl start docker 4 | echo "y" | docker system prune 5 | ./command_exists "[Finish] clean docker" 6 | sudo systemctl stop docker 7 | -------------------------------------------------------------------------------- /scripts/bin/command_exists: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | 3 | # ref {command_exists} {https://stackoverflow.com/a/592635} 4 | __command_exists () { 5 | hash "$1" &> /dev/null ; 6 | } 7 | 8 | __command_exists $1 9 | -------------------------------------------------------------------------------- /scripts/bin/gpg-remove-cache: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | rm ~/.gnupg/S.* # remove cache 4 | gpg-connect-agent reloadagent /bye # restart gpg agent 5 | export GPG_TTY=$(tty) # prompt for password 6 | -------------------------------------------------------------------------------- /scripts/bin/import-gpg: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | test paperkey \ 4 | && test -f $(pwd)/"$1.pub" \ 5 | && test -f $(pwd)/"$1.sec" \ 6 | && paperkey --pubring $(pwd)/$1.pub --secrets $(pwd)/$1.sec | gpg --batch --import 7 | -------------------------------------------------------------------------------- /.config/rofi##os.Linux/config.rasi: -------------------------------------------------------------------------------- 1 | configuration { 2 | modi: "window,drun,ssh,combi"; 3 | theme: "onedark"; 4 | font: "hack 10"; 5 | icon-theme: "slate"; 6 | show-icons: true; 7 | combi-modi: "window,drun,ssh"; 8 | } 9 | -------------------------------------------------------------------------------- /.config/zsh/Darwin.zsh: -------------------------------------------------------------------------------- 1 | eval $(/opt/homebrew/bin/brew shellenv) 2 | test -e "${HOME}/.iterm2_shell_integration.zsh" \ 3 | && source "${HOME}/.iterm2_shell_integration.zsh" 4 | export PATH="/opt/homebrew/opt/luajit-openresty/bin:$PATH" 5 | -------------------------------------------------------------------------------- /scripts/bin/gpg-restart: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | gpgconf --kill gpg-agent 4 | killall gpg-agent 5 | gpg-agent --homedir "${GNUPGHOME:-$HOME/.gnupg}" \ 6 | --daemon \ 7 | --pinentry-program /Users/r17/.nix-profile/Applications/pinentry-mac.app/Contents/MacOS/pinentry-mac 8 | -------------------------------------------------------------------------------- /.config/kitty/kitty.conf: -------------------------------------------------------------------------------- 1 | font_family Fira Code 2 | bold_font Fira Code 3 | italic_font Menlo 4 | bold_italic_font Menlo 5 | font_size 7.5 6 | tab_bar_style hidden 7 | background_opacity 0.95 8 | background #121212 9 | border 0 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "fzf-scripts"] 2 | path = fzf-scripts 3 | url = git@github.com:DanielFGray/fzf-scripts.git 4 | [submodule ".tmux"] 5 | path = .tmux 6 | url = git@github.com:gpakosz/.tmux.git 7 | [submodule ".config/tmux-plugins"] 8 | path = .config/tmux-plugins 9 | url = git@github.com:tmux-plugins/tpm.git 10 | -------------------------------------------------------------------------------- /scripts/bin/clean_nodejs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | `rm -rf $HOME/{w0,me,evl}/**/node_modules` 4 | command_exists notify-send && notify-send \ 5 | "[CLEAN]: remove ALL node_modules in {w0,me,evl}" 6 | command_exists osascript && osascript -e \ 7 | 'display notification "hello world!" with title "Clean" subtitle "clean node_modules in ~/{w0,me,evl}"' 8 | -------------------------------------------------------------------------------- /.config/polybar##os.Linux/launch.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/zsh 2 | 3 | ## Add this to your wm startup file. 4 | 5 | # Terminate already running bar instances 6 | killall -q polybar 7 | 8 | # Wait until the processes have been shut down 9 | while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done 10 | 11 | # Launch bar1 and bar2 12 | polybar main -c ~/.config/polybar/config.ini & 13 | -------------------------------------------------------------------------------- /scripts/logs/my-arch-pkg: -------------------------------------------------------------------------------- 1 | #!/bin/env bash 2 | 3 | ALL_ARCH_PKG_LOG=$HOME/.all-my-arch-packages.log 4 | pacman -Qe > $ALL_ARCH_PKG_LOG 5 | yadm add $ALL_ARCH_PKG_LOG 6 | yadm commit -m "chore(arch): update all pkg log \n\nNote: task powered by fcron" 7 | yadm push origin master 8 | ./command_exists notify-send && notify-send \ 9 | "[PUSHED]: ALL Arch Package installed in this machine" 10 | -------------------------------------------------------------------------------- /scripts/bin/toggle-nvim-lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | 4 | FILE="~/.config/nvim/init.lua" 5 | 6 | if [[ -f ~/.config/nvim/init.lua ]]; then 7 | mv ~/.config/nvim/__init.vim ~/.config/nvim/init.vim 8 | mv ~/.config/nvim/init.lua ~/.config/nvim/__init.lua 9 | else 10 | echo 11 11 | mv ~/.config/nvim/init.vim ~/.config/nvim/__init.vim 12 | mv ~/.config/nvim/__init.lua ~/.config/nvim/init.lua 13 | fi 14 | -------------------------------------------------------------------------------- /.config/i3##os.Linux/spotify_blocklet: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # see https://pavelmakhov.com/2018/01/spotify-i3/ 3 | case $BLOCK_BUTTON in 4 | 1) sp play ;; # left click 5 | 4) sp next ;; # scroll up 6 | 5) sp prev ;; # scroll down 7 | esac 8 | 9 | if sp status | grep 'Paused' > /dev/null; then 10 | printf '\xef\x81\x8c ' # fa-pause 11 | else 12 | printf '\xef\x81\x8b ' # fa-play 13 | fi 14 | sp current-oneline 15 | -------------------------------------------------------------------------------- /scripts/bin/curltime: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # see: https://stackoverflow.com/a/22625150 3 | curl -w @- -o /dev/null -s "$@" <<'EOF' 4 | time_namelookup: %{time_namelookup}\n 5 | time_connect: %{time_connect}\n 6 | time_appconnect: %{time_appconnect}\n 7 | time_pretransfer: %{time_pretransfer}\n 8 | time_redirect: %{time_redirect}\n 9 | time_starttransfer: %{time_starttransfer}\n 10 | ----------\n 11 | time_total: %{time_total}\n 12 | EOF 13 | -------------------------------------------------------------------------------- /scripts/bin/export-brew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | command -v brew &>/dev/null || { 4 | echo "Error [1]: brew not installed in your sysyem" 5 | exit 1 6 | } 7 | 8 | BREW_DUMP="$HOME/.Brewfile" 9 | BREW_DUMP_BACKUPS="$HOME/.Brewfile_bak" 10 | BREW_DUMP_BACKUP="$BREW_DUMP_BACKUPS/$(date +%F).Brewfile" 11 | 12 | if [[ -f "$BREW_DUMP" ]]; then 13 | command mkdir -p "$BREW_DUMP_BACKUPS" && cp "$BREW_DUMP" "$BREW_DUMP_BACKUP" 14 | if [[ -f "$BREW_DUMP_BACKUP" ]]; then 15 | rm -f "$BREW_DUMP" && brew bundle dump --file="$BREW_DUMP" 16 | fi 17 | fi 18 | 19 | # sync with git 20 | 21 | yadm add $BREW_DUMP && 22 | yadm commit -m "chore(OSX): update brewfile" && 23 | yadm push origin master 24 | -------------------------------------------------------------------------------- /scripts/docs/commit-types: -------------------------------------------------------------------------------- 1 | feat - A new feature 2 | fix - A bug fix 3 | docs - Documentation only changes 4 | style - Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) 5 | refactor - A code change that neither fixes a bug nor adds a feature 6 | perf - A code change that improves performance 7 | test - Adding missing tests or correcting existing tests 8 | build - Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) 9 | ci - Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) 10 | chore - Other changes that don't modify src or test files 11 | revert - Reverts a previous commit 12 | -------------------------------------------------------------------------------- /.config/rofi##os.Linux/slate.rasi: -------------------------------------------------------------------------------- 1 | * { 2 | background-color: #282C33; 3 | border-color: #2e343f; 4 | text-color: #8ca0aa; 5 | spacing: 0; 6 | width: 512px; 7 | } 8 | 9 | inputbar { 10 | border: 0 0 1px 0; 11 | children: [prompt,entry]; 12 | } 13 | 14 | prompt { 15 | padding: 16px; 16 | border: 0 1px 0 0; 17 | } 18 | 19 | textbox { 20 | background-color: #2e343f; 21 | border: 0 0 1px 0; 22 | border-color: #282C33; 23 | padding: 8px 16px; 24 | } 25 | 26 | entry { 27 | padding: 16px; 28 | } 29 | 30 | listview { 31 | cycle: false; 32 | margin: 0 0 -1px 0; 33 | scrollbar: false; 34 | } 35 | 36 | element { 37 | border: 0 0 1px 0; 38 | padding: 16px; 39 | } 40 | 41 | element selected { 42 | background-color: #2e343f; 43 | } -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: [pull_request] 4 | 5 | jobs: 6 | linux: 7 | name: bootstrap test linux 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Git checkout 11 | uses: actions/checkout@v2 12 | - run: sudo apt-get install yadm 13 | - run: yadm clone https://github.com/ri7nz/.dotifiles 14 | - run: yadm checkout ${{ github.head_ref }} 15 | - run: yadm bootstrap 16 | mac: 17 | name: bootstrap test mac 18 | runs-on: macos-latest 19 | steps: 20 | - name: Git checkout 21 | uses: actions/checkout@v2 22 | - run: brew install yadm 23 | - run: yadm clone https://github.com/ri7nz/.dotifiles 24 | - run: yadm checkout ${{ github.head_ref }} 25 | - run: yadm bootstrap 26 | -------------------------------------------------------------------------------- /scripts/bin/media-convert: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # MP4 - 1080p 4 | # ffmpeg -i input.mov -preset slow -codec:a libfdk_aac -b:a 128k -codec:v libx264 -pix_fmt yuv420p -b:v 4500k -minrate 4500k -maxrate 9000k -bufsize 9000k -vf scale=-1:1080 output.mp4 5 | 6 | # MP4 - 720p 7 | # ffmpeg -i input.mov -preset slow -codec:a libfdk_aac -b:a 128k -codec:v libx264 -pix_fmt yuv420p -b:v 2500k -minrate 1500k -maxrate 4000k -bufsize 5000k -vf scale=-1:720 output.mp4 8 | 9 | # MP4 - 480p 10 | # ffmpeg -i input.mov -preset slow -codec:a libfdk_aac -b:a 128k -codec:v libx264 -pix_fmt yuv420p -b:v 1000k -minrate 500k -maxrate 2000k -bufsize 2000k -vf scale=854:480 output.mp4 11 | 12 | # MP4 - 360p 13 | # ffmpeg -i input.mov -preset slow -codec:a libfdk_aac -b:a 128k -codec:v libx264 -pix_fmt yuv420p -b:v 750k -minrate 400k -maxrate 1000k -bufsize 1500k -vf scale=-1:360 output.mp4 14 | -------------------------------------------------------------------------------- /scripts/bin/corstest: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # WF 2018-09-20 3 | # https://stackoverflow.com/a/47609921/1497139 4 | 5 | #ansi colors 6 | #http://www.csc.uvic.ca/~sae/seng265/fall04/tips/s265s047-tips/bash-using-colors.html 7 | blue='\033[0;34m' 8 | red='\033[0;31m' 9 | green='\033[0;32m' # '\e[1;32m' is too bright for white bg. 10 | endColor='\033[0m' 11 | 12 | # 13 | # a colored message 14 | # params: 15 | # 1: l_color - the color of the message 16 | # 2: l_msg - the message to display 17 | # 18 | color_msg() { 19 | local l_color="$1" 20 | local l_msg="$2" 21 | echo -e "${l_color}$l_msg${endColor}" 22 | } 23 | 24 | 25 | # 26 | # show the usage 27 | # 28 | usage() { 29 | echo "usage: [-v] $0 url" 30 | echo " -v |--verbose: show curl result" 31 | exit 1 32 | } 33 | 34 | if [ $# -lt 1 ] 35 | then 36 | usage 37 | fi 38 | 39 | # commandline option 40 | while [ "$1" != "" ] 41 | do 42 | url=$1 43 | shift 44 | 45 | # optionally show usage 46 | case $url in 47 | -v|--verbose) 48 | verbose=true; 49 | ;; 50 | esac 51 | done 52 | 53 | 54 | if [ "$verbose" = "true" ] 55 | then 56 | curl -s -X GET $url -H 'Cache-Control: no-cache' --head 57 | fi 58 | origin=$(curl -s -X GET $url -H 'Cache-Control: no-cache' --head | grep -i access-control) 59 | 60 | 61 | if [ $? -eq 0 ] 62 | then 63 | color_msg $green "$url $origin" 64 | else 65 | color_msg $red "$url does not support CORS" 66 | color_msg $blue "you might want to visit https://enable-cors.org/ to find out how to enable CORS" 67 | fi 68 | -------------------------------------------------------------------------------- /scripts/README.md: -------------------------------------------------------------------------------- 1 | # Development and Build Scripts 2 | 3 | ## Updating Icons 4 | 5 | The `src/svg` directory is the single source of truth for svgs. They should not already be optimized and can be the original svg export straight out of an svg editor. A build step before releasing will optimize the source svgs (remove comments, reduce the size, etc) and ensure they'll work within `ion-icon`. 6 | 7 | 8 | ## Build Locally 9 | 10 | After an svg has been updated, added or deleted from the `src/svg` directory, run: 11 | 12 | npm run build 13 | 14 | The build command will optimize all of the icons and generate the files to be distributed. After the build command, all of the optimized svgs are saved in `dist/ionicons/svg`. Additionally the `dist` directory contains the distribution files for the `ion-icon` web component. 15 | 16 | 17 | ## Svg Symbols Cheatsheet 18 | 19 | After a build, a new `www/cheatsheet.html` file will be created. This version uses svg symbols rather than `ion-icon`. 20 | 21 | 22 | ## ion-icon Component Preview 23 | 24 | To see the `ion-icon` component in action, run: 25 | 26 | npm start 27 | 28 | 29 | ## Release Steps 30 | 31 | npm run release.prepare 32 | 33 | The release script will ask what version to use. After the script completes, double check the `www/cheatsheet.html` to ensure everything is good to go. 34 | 35 | Next, update `CHANGELOG.md`, then commit and push your changes Github. 36 | 37 | Next run: 38 | 39 | npm run release 40 | 41 | Triple check the version number is correct, and choose which tag this should be released as. If it's a pre-release, it should be `dev`. 42 | -------------------------------------------------------------------------------- /scripts/bin/sp-lyrics: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SP_DEST="org.mpris.MediaPlayer2.spotify" 4 | SP_PATH="/org/mpris/MediaPlayer2" 5 | SP_MEMB="org.mpris.MediaPlayer2.Player" 6 | 7 | LyricsAPI="https://makeitpersonal.co/lyrics/" 8 | 9 | SPOTIFY_METADATA="$(dbus-send \ 10 | --print-reply `# We need the reply.` \ 11 | --dest=$SP_DEST \ 12 | $SP_PATH \ 13 | org.freedesktop.DBus.Properties.Get \ 14 | string:"$SP_MEMB" string:'Metadata' \ 15 | | grep -Ev "^method" `# Ignore the first line.` \ 16 | | grep -Eo '("(.*)")|(\b[0-9][a-zA-Z0-9.]*\b)' `# Filter interesting fiels.`\ 17 | | sed -E '2~2 a|' `# Mark odd fields.` \ 18 | | tr -d '\n' `# Remove all newlines.` \ 19 | | sed -E 's/\|/\n/g' `# Restore newlines.` \ 20 | | sed -E 's/(xesam:)|(mpris:)//' `# Remove ns prefixes.` \ 21 | | sed -E 's/^"//' `# Strip leading...` \ 22 | | sed -E 's/"$//' `# ...and trailing quotes.` \ 23 | | sed -E 's/\"+/|/' `# Regard "" as seperator.` \ 24 | | sed -E 's/ +/ /g' `# Merge consecutive spaces.`\ 25 | )" 26 | 27 | TrackArtist=$(echo "$SPOTIFY_METADATA" | sed -n 's/artist|//p') 28 | TrackTitle=$(echo "$SPOTIFY_METADATA" | sed -n 's/title|//p') 29 | 30 | curl -s --get "$LyricsAPI" --data-urlencode "artist=${TrackArtist}" --data-urlencode "title=${TrackTitle}" 31 | -------------------------------------------------------------------------------- /.config/rofi##os.Linux/onedark.rasi: -------------------------------------------------------------------------------- 1 | /* 2 | * ROFI One Dark 3 | * 4 | * Based on OneDark.vim (https://github.com/joshdick/onedark.vim) 5 | * 6 | * Author: Benjamin Stauss 7 | * User: me-benni 8 | * 9 | */ 10 | 11 | 12 | * { 13 | black: #000000; 14 | red: #eb6e67; 15 | green: #95ee8f; 16 | yellow: #f8c456; 17 | blue: #6eaafb; 18 | mangenta: #d886f3; 19 | cyan: #6cdcf7; 20 | emphasis: #50536b; 21 | text: #dfdfdf; 22 | text-alt: #b2b2b2; 23 | fg: #abb2bf; 24 | bg: #282c34; 25 | 26 | spacing: 0; 27 | background-color: transparent; 28 | 29 | font: "Knack Nerd Font 14"; 30 | text-color: @text; 31 | } 32 | 33 | window { 34 | transparency: "real"; 35 | fullscreen: true; 36 | background-color: #282c34dd; 37 | } 38 | 39 | mainbox { 40 | padding: 30% 30%; 41 | } 42 | 43 | inputbar { 44 | margin: 0px 0px 20px 0px; 45 | children: [prompt, textbox-prompt-colon, entry, case-indicator]; 46 | } 47 | 48 | prompt { 49 | text-color: @blue; 50 | } 51 | 52 | textbox-prompt-colon { 53 | expand: false; 54 | str: ":"; 55 | text-color: @text-alt; 56 | } 57 | 58 | entry { 59 | margin: 0px 10px; 60 | } 61 | 62 | listview { 63 | spacing: 5px; 64 | dynamic: true; 65 | scrollbar: false; 66 | } 67 | 68 | element { 69 | padding: 5px; 70 | text-color: @text-alt; 71 | highlight: bold #95ee8f; /* green */ 72 | border-radius: 3px; 73 | } 74 | 75 | element selected { 76 | background-color: @emphasis; 77 | text-color: @text; 78 | } 79 | 80 | element urgent, element selected urgent { 81 | text-color: @red; 82 | } 83 | 84 | element active, element selected active { 85 | text-color: @purple; 86 | } 87 | 88 | message { 89 | padding: 5px; 90 | border-radius: 3px; 91 | background-color: @emphasis; 92 | border: 1px; 93 | border-color: @cyan; 94 | } 95 | 96 | button selected { 97 | padding: 5px; 98 | border-radius: 3px; 99 | background-color: @emphasis; 100 | } 101 | -------------------------------------------------------------------------------- /.config/yadm/bootstrap: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $HOME 4 | 5 | ### Machine portable detect ### 6 | getMachine () { 7 | local unameOut="$(uname -s)" 8 | case "${unameOut}" in 9 | Linux*) local machine=linux;; 10 | Darwin*) local machine=darwin;; 11 | CYGWIN*) local machine=cygwin;; 12 | MINGW*) local machine=minGw;; 13 | *) local machine="UNKNOWN:${unameOut}" 14 | esac 15 | echo "$machine" 16 | } 17 | isMachine () { 18 | if [ $(getMachine) = $1 ];then 19 | return 0; 20 | fi 21 | return 1; 22 | } 23 | ### Machine portable detect ### 24 | wantTo () { 25 | read -p "Do you want to bootstrap $1? [Y/n] " response 26 | case $response in [yY][eE][sS]|[yY]|[jJ]|'') 27 | return 0; 28 | ;; 29 | *) 30 | echo "cancelled" 31 | return 1; 32 | ;; 33 | esac 34 | } 35 | ### Tools ### 36 | bootstrap_essentials () { 37 | local deps="bat tmux neofetch ripgrep fzf" 38 | 39 | isMachine "linux" && \ 40 | sudo pacman -Sy $deps 41 | 42 | isMachine "darwin" && { 43 | brew tap homebrew/cask 44 | brew tap homebrew/cask-fonts 45 | brew install \ 46 | $deps \ 47 | gpg \ 48 | nvim \ 49 | coreutils \ 50 | pinentry-mac \ 51 | iterm2 \ 52 | authy \ 53 | discord \ 54 | slack \ 55 | font-fira-code-nerd-font \ 56 | font-jetbrains-mono-nerd-font 57 | } 58 | } 59 | bootstrap_VIM () { 60 | if command -v vim >/dev/null 2>&1; then 61 | echo "Bootstraping Vim" 62 | vim '+PlugUpdate' '+PlugClean!' '+PlugUpdate' '+qall' 63 | fi 64 | } 65 | bootstrap_AUR () { 66 | if command -v pacaur >/dev/null 2>&1; then 67 | echo "Bootstraping Pacaur" 68 | local AUR=/tmp/pacaur 69 | git clone https://aur.archlinux.org/pacaur.git $AUR 70 | cd $AUR 71 | makepkg -si 72 | fi 73 | } 74 | bootstrap_Homebrew () { 75 | if ! command -v brew >/dev/null 2>&1; then 76 | echo "Installing homebrew" 77 | curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh | bash 78 | fi 79 | 80 | if [ -f "$HOME/.Brewfile" ]; then 81 | echo "Updating homebrew bundle" 82 | brew bundle --global 83 | fi 84 | } 85 | ### Tools ### 86 | ### When is Linux based ### 87 | if isMachine "linux"; then 88 | wantTo "AUR" && bootstrap_AUR 89 | wantTo "Essentials Install" && bootstrap_essentials 90 | wantTo "VIM" && bootstrap_VIM 91 | fi 92 | ### When is Darwin based ### 93 | if isMachine "darwin"; then 94 | wantTo "HOMEBREW" && bootstrap_Homebrew 95 | wantTo "Essentials Install" && bootstrap_essentials 96 | wantTo "VIM" && bootstrap_VIM 97 | fi 98 | -------------------------------------------------------------------------------- /scripts/bin/npmsearch: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | declare -a args 4 | declare -a packages 5 | declare savedev=0 6 | declare global=0 7 | 8 | declare -a colors 9 | colors[red]=$(tput setaf 1) 10 | colors[green]=$(tput setaf 2) 11 | colors[reset]=$(tput sgr0) 12 | 13 | usage() { 14 | LESS=-FEXR less <<-HELP 15 | npmsearch [options] [packages] 16 | searches npm for packages 17 | 18 | -r, --remove 19 | list and remove packages from package.json 20 | 21 | to increase the amount of packages shown when searching, try: 22 | npm config set searchlimit 40 23 | 24 | HELP 25 | } 26 | 27 | color() { 28 | local color="$1"; shift 29 | printf '%s' "${colors[$color]}" 30 | printf '%s\n' "$@" 31 | printf '%s' "${colors[reset]}" 32 | } 33 | 34 | err() { color red "$@" >&2; return 1; } 35 | 36 | die() { 37 | (( $# > 0 )) && err "$@" 38 | exit 1 39 | } 40 | 41 | has() { 42 | local v c 43 | if [[ $1 = '-v' ]]; then 44 | v=1 45 | shift 46 | fi 47 | for c; do c="${c%% *}" 48 | if ! command -v "$c" &> /dev/null; then 49 | (( v > 0 )) && err "$c not found" 50 | return 1 51 | fi 52 | done 53 | } 54 | 55 | select_from() { 56 | local cmd='command -v' 57 | for a; do 58 | case "$a" in 59 | -c) cmd="$2"; shift 2 ;; 60 | esac 61 | done 62 | for c; do 63 | if $cmd "${c%% *}" &> /dev/null; then 64 | echo "$c" 65 | return 0 66 | fi 67 | done 68 | return 1 69 | } 70 | 71 | has -v fzf npm || die 72 | 73 | fzf() { 74 | command fzf --inline-info --ansi --reverse +s --no-hscroll "$@" 75 | } 76 | 77 | if [[ $1 = '-h' || $1 = '--help' ]]; then 78 | usage 79 | exit 80 | fi 81 | 82 | if [[ $1 = '-r' || $1 = '--remove' ]]; then 83 | shift 84 | mapfile -t rm < <( 85 | jq -r '{dependencies, devDependencies} | .[] | keys | .[]' package.json | 86 | fzf -m --cycle -e --reverse --query="$*") 87 | (( ${#rm} > 0 )) && $(select_from 'yarn remove' 'npm uninstall') "${rm[@]}" 88 | die 89 | fi 90 | 91 | printf '%ssearching...%s\r' "${colors[green]}" "${colors[reset]}" 92 | search=$(npm search --json "$*") || exit 93 | 94 | search=$(jq -r '.[] | "\(.name)|\(.version)|\(.description)"' <<< "$search" | column -t -s'|') 95 | 96 | mapfile -t packages < <(fzf --multi \ 97 | --bind='ctrl-x:toggle-preview' \ 98 | --expect='ctrl-g,ctrl-d,enter,ctrl-v,esc' \ 99 | --preview-window='hidden:down' \ 100 | --preview="npm -s --json view {1} | jq -C \"del(.users, .time, .versions)\"" \ 101 | --header='C-d saves as devDependency, C-g installs globally, C-v for specific version, C-x for more info, ' \ 102 | <<< "$search") 103 | 104 | key="${packages[0]}" 105 | case "${key,,}" in 106 | esc) die ;; 107 | ctrl-d) savedev=1 ;; 108 | ctrl-g) global=1 ;; 109 | ctrl-v) 110 | package="${packages[1]%% *}" 111 | mapfile -t version < <( 112 | npm -s --json view "$package" | 113 | jq -r '.versions[]' | # label with .dist-tags? 114 | fzf --header="choose version for $package | C-d saves as devDependency" --tac --expect='ctrl-d,esc') 115 | key="${version[0]}" 116 | case "${key,,}" in 117 | esc) die ;; 118 | ctrl-d) savedev=1 ;; 119 | esac 120 | packages=( "${package}@${version[1]}" ) 121 | ;; 122 | esac 123 | 124 | (( ${#packages[@]} > 0 )) || die 'no packages to install' 125 | 126 | if (( ${#packages[@]} > 1 )); then 127 | packages=( "${packages[@]:1}" ) 128 | packages=( "${packages[@]%% *}" ) 129 | fi 130 | 131 | printf '%sinstalling...%s\r' "${colors[green]}" "${colors[reset]}" 132 | if (( global > 0 )); then 133 | npm install -g "${args[@]}" "${packages[@]}" 134 | elif has yarn; then 135 | (( savedev > 0 )) && args+=( -D ) 136 | yarn add "${args[@]}" "${packages[@]}" 137 | else 138 | if (( savedev > 0 )); then 139 | args+=( -D ) 140 | else 141 | args+=( -S ) 142 | fi 143 | npm i "${args[@]}" "${packages[@]}" 144 | fi 145 | -------------------------------------------------------------------------------- /README.ENGLISH.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HeLL0 w0Rld \_(ツ)_/¯ 5 | 6 | 7 | 8 | System Information 9 | 10 | 11 | 12 | My personal setup `dotfiles` 13 | 14 | > manage with **[yadm](https://yadm.io/)** and take screenshot with **[KDE - spectacle](https://github.com/KDE/spectacle)**. 15 | 16 | 17 | ## Table of contents 18 | 19 | 20 | 21 | 22 | * [Motivation](#motivation) 23 | * [Developer Tools](#developer-tools) 24 | * [General](#general) 25 | * [Package Manager](#package-manager) 26 | * [Homebrew (OSX)](#homebrew-osx) 27 | * [Credentials](#credentials) 28 | * [**Terminal**](#terminal) 29 | * [**Shell (ZSH)**](#shell-zsh) 30 | * [Benchmark](#benchmark) 31 | * [**Editor (VIM)**](#editor-vim) 32 | * [Preview](#preview) 33 | * [Linux](#linux) 34 | 35 | 36 | 37 | 38 | ## Motivation 39 | `(DRY) - Don't repeat yourself` a principle in software development. We should use this principle to reduce repetitive and time-consuming work. Personally I just try to apply these principles at work. The most basic example is making these `dotfiles`, well the point is that I don't have to provide the equipment or tools I use in my daily life. So, from this [motivation](#motivation) you can see the main goal (Goal). 40 | 41 | The job of a software developer, software engineer, or software worker requires tools to be used on top of a running system (usually we call an operating system or 'OS'). I am familiar with using operating systems such as `OSX` which is based on `Darwin/unix` made by Apple and `ArchLinux` which is based on `Linux`. Well my goal is to become a ~~human~~ user agnostic (not ~~religious~~ bound to a system but still loyal to ~~creator~~ users, except for the operating system made by Mikocok). These tools are collected in one place to store everything about tools, configurations, settings, credentials, and others that support the needs of working or just operating a computer. Where is my container? on [this github](https://github.com/ri7nz/.dotifiles), then we need **_git_** or other tools, which obviously we keep in sync between every machine we use so we don't do things over and over again. 42 | 43 | > The bottom line: with dotfiles we reduce setup time or prepare needs before we work on new or existing machines 44 | 45 | > reference [Dotfiles](https://wiki.archlinux.org/index.php/Dotfiles#User_repositories) from [ArchWiki](https://wiki.archlinux.org) 46 | 47 | ## Developer Tools 48 | The tools I use are as follows: 49 | 50 | ### General 51 | 52 | > common, don't use 53 | 54 | | * | Name | OSX | Linux | 55 | |---------------------|--------------|-------|--- -----| 56 | | Dotfiles Manager | yadm | | | 57 | | Shell | zsh | | | 58 | | Multiplexer | tmux | | | 59 | | Editor | vim/neovim | | | 60 | | Monitors | polybar | | | 61 | | Window Manager (WM) | I3 | | | 62 | | Terminals | Alacritty | | | 63 | | | iTerm2 | | | 64 | | Mail | Mail | | | 65 | | Browsers | Chrome | | | 66 | | | Firefox | | | 67 | | | Safaris | | | 68 | 69 | ### Package Manager 70 | 71 | #### Homebrew (OSX) 72 | Homebrew is a package manager used in the operating system (OXS). When I use a Macbook, `Homebrew` will be my loyal friend. 73 | Here's the command I often use to `dump` every package I have installed on the device I use 74 | ```shell 75 | 76 | # backup 77 | brew bundle dump --file=~/.Brewfile 78 | 79 | # restore / install 80 | brew bundle --file=~/.Brewfile 81 | 82 | ``` 83 | 84 | ### Credentials 85 | > why should it be plain-text when it can be automatic 86 | 87 | ![login](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/ri7nz/.dotifiles/master/docs/login.txt) 88 | 89 | * Login 90 | * **Password** : my password is not stored in memory, but I store it in an application called `pass` 91 | * **2FA/OTP** : I use `authy` (most often) and `bitwarden`. and I strongly avoid using 2FA/OTP on short message services (SMS) for reasons that are not really clear. 92 | 93 | 94 | Password manager 95 | 96 | 97 | Here's a list of tools used for "Secret" or credential needs in a platform or web browser 98 | 99 | 100 | | * | Name | OSX | Linux | 101 | |--------------------------|------------------------------ ----------------------------|-----|-------| 102 | | Privacy | gnugpg | | | 103 | | Password Manager | pass (require gpg and version control such git or host) | | | 104 | | 2fa / OTP / TOTP | Authy | | | 105 | | | Bitwarden | | | 106 | 107 | Reference: 108 | - https://en.wikipedia.org/wiki/Multi-factor_authentication 109 | - https://en.wikipedia.org/wiki/Time-based_One-Time_Password 110 | - https://en.wikipedia.org/wiki/GNU_Privacy_Guard 111 | - https://en.wikipedia.org/wiki/Pretty_Good_Privacy 112 | 113 | 114 | ### **Terminal** 115 | 116 | > [tmux](https://github.com/tmux/tmux), alacritty, iTerm2 117 | 118 | 119 | 120 | current - MacbookPro13 M1 121 | 122 | System Information 123 | 124 | 125 | 126 | 127 | 128 | 129 | iTerm2 with Tmux 130 | 131 | 132 | Alacritty with Tmux 133 | 134 | 135 | 136 | 137 | #### **Shell (ZSH)** 138 | 139 | > zsh with zinit for better performance 140 | 141 | ##### Benchmarks 142 | 143 | * Macbook Pro17.1 Memory 8GB (arm64 M1) 144 | 145 | ```zsh 146 | 0.23 real 0.12 user 0.08 sys 147 | 0.15 real 0.10 user 0.04 sys 148 | 0.15 real 0.10 user 0.04 sys 149 | 0.15 real 0.10 user 0.04 sys 150 | 0.15 real 0.10 user 0.04 sys 151 | 0.15 real 0.10 user 0.04 sys 152 | 0.16 real 0.11 user 0.04 sys 153 | 0.17 real 0.10 user 0.04 sys 154 | 0.15 real 0.10 user 0.04 sys 155 | 0.15 real 0.10 user 0.04 sys 156 | ``` 157 | 158 | * Macbook Pro2019 Memory 8GB (intel) 159 | 160 | ```zsh 161 | 0.28 real 0.19 user 0.08 sys 162 | 0.28 real 0.19 user 0.07 sys 163 | 0.29 real 0.19 user 0.08 sys 164 | 0.27 real 0.19 user 0.07 sys 165 | 0.27 real 0.19 user 0.07 sys 166 | 0.27 real 0.19 user 0.07 sys 167 | 0.29 real 0.19 user 0.07 sys 168 | 0.28 real 0.19 user 0.07 sys 169 | 0.28 real 0.19 user 0.07 sys 170 | 0.27 real 0.19 user 0.07 sys 171 | ``` 172 | 173 | * Thinkpad T430 (old-configuration) 174 | 175 | ```zsh 176 | 0.46 real 0.31 user 0.13 sys 177 | 0.45 real 0.31 user 0.12 sys 178 | 0.43 real 0.30 users 0.12 sys 179 | 0.44 real 0.31 user 0.12 sys 180 | 0.44 real 0.30 users 0.12 sys 181 | 0.43 real 0.30 user 0.11 sys 182 | 0.43 real 0.30 user 0.11 sys 183 | 0.43 real 0.30 users 0.12 sys 184 | 0.43 real 0.30 users 0.12 sys 185 | 0.44 real 0.30 users 0.12 sys 186 | ``` 187 | 188 | 189 | #### **Editor (VIM)** 190 | > vim-plug (vim plugin manager), intelisense (COC) 191 | 192 | 193 | Editor - Vim 194 | 195 | 196 | 197 | ## Preview 198 | 199 | ### Linux 200 | 201 | 202 | 203 | 204 | 205 | Click Me 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | -------------------------------------------------------------------------------- /.config/zsh/zshrc.zsh: -------------------------------------------------------------------------------- 1 | ################## 2 | # zinit # 3 | ################## 4 | ################## 5 | # Aloxaf/fzf-tab # 6 | # style config # 7 | ################## 8 | 9 | # fix: issue fork/exec /bin/zsh invalid argument 10 | # see: https://github.com/Aloxaf/fzf-tab/issues/77#issuecomment-620626544 11 | # disable sort when completing options of any command 12 | zstyle ':completion:complete:*:options' sort false 13 | 14 | # use input as query string when completing zlua 15 | zstyle ':fzf-tab:complete:_zlua:*' query-string input 16 | 17 | # (experimental, may change in the future) 18 | # some boilerplate code to define the variable `extract` which will be used later 19 | # please remember to copy them 20 | local extract=" 21 | # trim input(what you select) 22 | local in=\${\${\"\$(<{f})\"%\$'\0'*}#*\$'\0'} 23 | # get ctxt for current completion(some thing before or after the current word) 24 | local -A ctxt=(\"\${(@ps:\2:)CTXT}\") 25 | # real path 26 | local realpath=\${ctxt[IPREFIX]}\${ctxt[hpre]}\$in 27 | realpath=\${(Qe)~realpath} 28 | " 29 | 30 | # give a preview of commandline arguments when completing `kill` 31 | zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm,cmd -w -w" 32 | zstyle ':fzf-tab:complete:kill:argument-rest' extra-opts --preview=$extract'ps --pid=$in[(w)1] -o cmd --no-headers -w -w' --preview-window=down:3:wrap 33 | 34 | # give a preview of directory by exa when completing cd 35 | zstyle ':fzf-tab:complete:cd:*' extra-opts --preview=$extract'exa -1 --color=always $realpath' 36 | 37 | eval "$(fasd --init auto)" 38 | ### Added by Zinit's installer 39 | if [[ ! -f $HOME/.zinit/bin/zinit.zsh ]]; then 40 | print -P "%F{33}▓▒░ %F{220}Installing %F{33}DHARMA%F{220} Initiative Plugin Manager (%F{33}zdharma/zinit%F{220})…%f" 41 | command mkdir -p "$HOME/.zinit" && command chmod g-rwX "$HOME/.zinit" 42 | command git clone https://github.com/zdharma/zinit "$HOME/.zinit/bin" && \ 43 | print -P "%F{33}▓▒░ %F{34}Installation successful.%f%b" || \ 44 | print -P "%F{160}▓▒░ The clone has failed.%f%b" 45 | fi 46 | 47 | source "$HOME/.zinit/bin/zinit.zsh" 48 | 49 | autoload -Uz _zinit 50 | 51 | (( ${+_comps} )) && _comps[zinit]=_zinit 52 | ### End of Zinit installer's chunk 53 | 54 | 55 | # Functions to make configuration less verbose 56 | # zt() : First argument is a wait time and suffix, ie "0a". Anything that doesn't match will be passed as if it were an ice mod. Default ices depth'3' and lucid 57 | # zct(): First argument provides $MYPROMPT value used in load'' and unload'' ices. Sources a config file with tracking for easy unloading using $MYPROMPT value. Small hack to function in for-syntax 58 | zt() { zinit depth'3' lucid ${1/#[0-9][a-c]/wait"$1"} "${@:2}"; } 59 | zct() { .zinit-ice load"[[ \${MYPROMPT} = ${1} ]]" unload"[[ \${MYPROMPT} != ${1} ]]" \ 60 | atinit'![ -f "${thmf}/${MYPROMPT}-pre" ] && source "${thmf}/${MYPROMPT}-pre"' \ 61 | atload'![ -f "${thmf}/${MYPROMPT}-post" ] && source "${thmf}/${MYPROMPT}-post"'; \ 62 | ZINIT_ICE+=("${(kv)ZINIT_ICES[@]}"); ___turbo=1;} 63 | 64 | ################## 65 | # Initial Prompt # 66 | # Config source # 67 | ################## 68 | zt for \ 69 | pick'async.zsh' light-mode \ 70 | mafredri/zsh-async \ 71 | atload'!source "$HOME/.p10k.zsh"' silent \ 72 | romkatv/powerlevel10k 73 | 74 | ########### 75 | # Annexes # 76 | ########### 77 | 78 | zt light-mode compile'*handler' for \ 79 | zinit-zsh/z-a-as-monitor \ 80 | zinit-zsh/z-a-patch-dl \ 81 | zinit-zsh/z-a-bin-gem-node \ 82 | zinit-zsh/z-a-submods \ 83 | zinit-zsh/z-a-test 84 | 85 | # Plugins 86 | zt for \ 87 | OMZL::git.zsh \ 88 | OMZL::history.zsh \ 89 | OMZP::fasd \ 90 | dominik-schwabe/zsh-fnm \ 91 | Aloxaf/fzf-tab \ 92 | g-plane/icd \ 93 | ri7nz/zsh-yarn \ 94 | ~/evl/zsh-android 95 | 96 | ###################### 97 | # Trigger-load block # 98 | ###################### 99 | 100 | zt light-mode for \ 101 | trigger-load'!man' \ 102 | ael-code/zsh-colored-man-pages \ 103 | trigger-load'!ga;!gcf;!gclean;!gd;!glo;!grh;!gss' \ 104 | wfxr/forgit 105 | 106 | ################## 107 | # Wait'0a' block # 108 | ################## 109 | 110 | zt 0a light-mode for \ 111 | OMZL::completion.zsh \ 112 | as'completion' mv'*.zsh -> _git' \ 113 | felipec/git-completion \ 114 | has'systemctl' \ 115 | OMZP::systemd \ 116 | OMZP::sudo \ 117 | blockf atpull'zinit creinstall -q .' \ 118 | zsh-users/zsh-completions \ 119 | compile'{src/*.zsh,src/strategies/*}' pick'zsh-autosuggestions.zsh' \ 120 | atload'_zsh_autosuggest_start' \ 121 | zsh-users/zsh-autosuggestions 122 | 123 | ################## 124 | # Wait'0b' block # 125 | ################## 126 | 127 | zt 0b light-mode for \ 128 | pick'autoenv.zsh' nocompletions \ 129 | Tarrasch/zsh-autoenv \ 130 | atinit'zicompinit; zicdreplay' atload'FAST_HIGHLIGHT[chroma-man]=' \ 131 | zdharma/fast-syntax-highlighting 132 | 133 | ################## 134 | # Wait'0c' block # 135 | ################## 136 | 137 | zt 0c light-mode pick'/dev/null' for \ 138 | sbin'fd*/fd;fd*/fd -> fdfind' from"gh-r" \ 139 | @sharkdp/fd \ 140 | sbin'bin/git-ignore' atload'export GI_TEMPLATE="$PWD/.git-ignore"; alias gi="git-ignore"' \ 141 | laggardkernel/git-ignore 142 | 143 | 144 | zt 0c light-mode as'null' for \ 145 | sbin"bin/git-dsf;bin/diff-so-fancy" \ 146 | zdharma/zsh-diff-so-fancy \ 147 | sbin \ 148 | paulirish/git-open \ 149 | 150 | zct light-mode from'gh-r' for \ 151 | as'program' sei40kr/fast-alias-tips-bin \ 152 | sei40kr/zsh-fast-alias-tips \ 153 | zdharma/zui \ 154 | zdharma/zplugin-crasis 155 | 156 | typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=( 157 | taskwarrior 158 | time 159 | newline 160 | ) 161 | 162 | # example: 163 | # $ ls 164 | # - dir1 165 | # $ dir1 // cd dir1 166 | setopt autocd autopushd 167 | ##################### 168 | # FZF Configuration # 169 | ##################### 170 | 171 | bindkey -e 172 | 173 | [ -f ~/.fzf.zsh ] && \ 174 | source ~/.fzf.zsh 175 | 176 | [ -f /usr/share/fzf/key-bindings.zsh ] && \ 177 | source /usr/share/fzf/key-bindings.zsh && \ 178 | source /usr/share/fzf/completion.zsh ] 179 | # Feed the output of fd into fzf 180 | # fd --type f | fzf 181 | 182 | # Setting fd as the default source for fzf 183 | export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' 184 | 185 | # To apply the command to CTRL-T as well 186 | export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" 187 | 188 | export FZF_DEFAULT_OPTS=" 189 | --layout=reverse 190 | --info=inline 191 | --height=80% 192 | --multi 193 | --preview-window=:hidden 194 | --preview '([[ -f {} ]] && (bat --style=numbers --color=always {} || cat {})) || ([[ -d {} ]] && (tree -C {} | less)) || echo {} 2> /dev/null | head -200' 195 | --color='hl:148,hl+:154,pointer:032,marker:010,bg+:237,gutter:008' 196 | --prompt='∼ ' --pointer='▶' --marker='✓' 197 | --bind '?:toggle-preview' 198 | --bind 'ctrl-a:select-all' 199 | --bind 'ctrl-y:execute-silent(echo {+} | pbcopy)' 200 | --bind 'ctrl-e:execute(echo {+} | xargs -o vim)' 201 | --bind 'ctrl-v:execute(code {+})' 202 | " 203 | 204 | # auto cd when selected directory in FZF preview 205 | # fd() { 206 | # local dir 207 | # dir=$(find ${1:-.} -path '*/\.*' -prune -o -type d \ 208 | # -print 2> /dev/null | fzf +m) && 209 | # cd "$dir" 210 | # } 211 | # glab completion 212 | command -v glab &>/dev/null && eval "$(glab completion -s zsh)" 213 | # read https://github.com/sorin-ionescu/prezto/blob/b01f02aa5c6714430647a4ee854149e9a336270a/modules/completion/init.zsh#L31-L41 214 | autoload -Uz compinit 215 | _comp_files=(${ZDOTDIR:-$HOME}/.zcompdump(Nm-20)) 216 | if (( $#_comp_files )); then 217 | compinit -i -C 218 | else 219 | compinit -i 220 | fi 221 | unset _comp_files 222 | 223 | # ctrl-z for foreground / suspend current job 224 | fancy-ctrl-z () { 225 | if [[ $#BUFFER -eq 0 ]]; then 226 | BUFFER="fg" 227 | zle accept-line 228 | else 229 | zle push-input 230 | zle clear-screen 231 | fi 232 | } 233 | zle -N fancy-ctrl-z 234 | bindkey '^Z' fancy-ctrl-z 235 | 236 | 237 | #### LOG #### 238 | export NVIM_COC_LOG_FILE="$HOME/log/nvim.coc.log" 239 | export NVIM_PYTHON_LOG_FILE="$HOME/log/nvim.python.log" 240 | export XDG_RUNTIME_DIR="$HOME/log/xdg" 241 | #### LOG #### 242 | 243 | 244 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | MOVED TO r17x/nixpkgs 3 |

4 |

5 | HeLL0 w0Rld ¯\_(ツ)_/¯ 6 |

7 | 8 |

9 | System Information 10 |

11 | 12 | 13 | My personal setup `dotfiles` 14 | 15 | > manage with **[yadm](https://yadm.io/)** and take screenshot with **[KDE - spectacle](https://github.com/KDE/spectacle)**. 16 | 17 | 18 | ## Daftar Isi 19 | 20 | 21 | 22 | * [Motivasi](#motivasi) 23 | * [Alat Pengembang](#alat-pengembang) 24 | * [Umum](#umum) 25 | * [Package Manager](#package-manager) 26 | * [Homebrew (OSX)](#homebrew-osx) 27 | * [Kredensial](#kredensial) 28 | * [**Terminal**](#terminal) 29 | * [**Shell (ZSH)**](#shell-zsh) 30 | * [Benchmark](#benchmark) 31 | * [**Editor (VIM)**](#editor-vim) 32 | * [Preview](#preview) 33 | * [Linux](#linux) 34 | 35 | 36 | 37 | ## Motivasi 38 | `(DRY) - Don't repeat yourself` sebuah prinsip dalam pengembangan perangkat lunak (software development). Prinsip tersebut harusnya kita gunakan untuk mengurangi pekerjaan yang berulang-ulang dan menghabiskan waktu. Secara pribadi saya hanya mencoba menerapkan prinsip tersebut dalam bekerja. Contoh paling dasar yakni membuat `dotfiles` ini, yah gunannya agar saya tak perlu menyediakan kebutuhan perangkat atau alat yang digunakan dalam sehari - hari. Maka, dari [motivasi](#motivasi) ini kamu dapat melihat tujuan utamanya (Goal). 39 | 40 | Pekerjaan seorang pengembang perangkat lunak, perekayasa perangkat lunak, atau buruh perangkat lunak membutuhkan alat yang digunakan diatas sebuah sistem yang berjalan (biasanya kita sebut sistem operasi atau `OS`). Saya familiar dalam menggunakan sistem operasi seperti `OSX` yang berbasis `Darwin/unix` besutan si buah apple dan `ArchLinux` yang berbasis `Linux`. Yah tujuan saya untuk menjadi seorang ~~manusia~~ pengguna yang agnostik (tidak ~~beragama~~ terikat pada sebuah sistem tetapi tetap setia kepada ~~pencipta~~ pengguna, kecuali sistem operasi buatan Mikocok). Alat - alat tersebut dikumpulkan dalam satu tempat untuk menyimpan segala hal mengenai alat - alat, konfigurasi, pengaturan, kredensial, dan lain - lain yang menunjang kebutuhan bekerja atau sekedar mengoperasikan komputer. Wadah saya dimana ? di [github ini](https://github.com/ri7nz/.dotifiles), maka kita memerlukan **_git_** atau alat lain, yang jelas kita tetap sinkron diantara setiap mesin yang kita gunakan sehingga kita tidak melakukan hal yang berulang-ulang. 41 | 42 | > Inti: dengan adanya dotfiles kita mengurangi waktu (setup) atau menyiapkan kebutuhan sebelum kita bekerja pada mesin baru atau yang sudah kita gunakan 43 | 44 | > referensi [Dotfiles](https://wiki.archlinux.org/index.php/Dotfiles#User_repositories) dari [ArchWiki](https://wiki.archlinux.org) 45 | 46 | ## Alat Pengembang 47 | Alat - alat yang saya gunakan seperti apa, berikut: 48 | 49 | ### Umum 50 | 51 | > umum yah, tidak pakai 🐷 52 | 53 | | * | Nama | OSX | Linux | 54 | |---------------------|---------------|-------|--------| 55 | | Dotfiles Manager | yadm | ✅ | ✅ | 56 | | Shell | zsh | ✅ | ✅ | 57 | | Multiplexer | tmux | ✅ | ✅ | 58 | | Editor | vim/neovim | ✅ | ✅ | 59 | | Monitor | polybar | ❌ | ✅ | 60 | | Window Manager (WM) | I3 | ❌ | ✅ | 61 | | Terminal | Alacritty | ✅ | ✅ | 62 | | | iTerm2 | ✅ | ❌ | 63 | | Mail | Mail | ✅ | ❌ | 64 | | Browser | Chrome | ✅ | ✅ | 65 | | | Firefox | ✅ | ✅ | 66 | | | Safari | ✅ | ❌ | 67 | 68 | ### Package Manager 69 | 70 | #### Homebrew (OSX) 71 | Homebrew merupakan paket menejer yang digunakan pada sistem operasi (OXS). Ketika saya menggunakan perangkat Macbook maka `Homebrew` yang bakalan jadi teman setia. 72 | Berikut perintah yang sering saya gunakan untuk `dump` setiap paket yang sudah saya pasang pada perangkat yang saya gunakan 73 | ```shell 74 | 75 | # backup 76 | ❯ brew bundle dump --file=~/.Brewfile 77 | 78 | # restore / install 79 | ❯ brew bundle --file=~/.Brewfile 80 | 81 | ``` 82 | 83 | ### Kredensial 84 | > kenapa harus plain-text kalau bisa otomatis 85 | 86 | ![login](http://www.plantuml.com/plantuml/proxy?cache=no&src=https://raw.github.com/ri7nz/.dotifiles/master/docs/login.txt) 87 | 88 | * Login 89 | * **Password** : kata-sandi (password) saya tidak menyimpan diingatan, melainkan saya menyimpan pada sebuah aplikasi bernama `pass` 90 | * **2FA/OTP** : saya menggunakan `authy` (paling sering) dan `bitwarden`. dan saya sangat menghindari menggunakan 2FA/OTP pada layanan pesan singkat (SMS) karena alasan pribadi yang sebenarnya tidak jelas. 91 | 92 |

93 | Password manager 95 |

96 | 97 | Berikut daftar alat yang digunakan untuk kebutuhan "Rahasia" atau kredensial dalam sebuah platform atau peramban web 98 | 99 | 100 | | * | Nama | OSX | Linux | 101 | |------------------|---------------------------------------------------------|-----|-------| 102 | | Privacy | gnugpg | ✅ | ✅ | 103 | | Password Manager | pass (require gpg and version control such git or host) | ✅ | ✅ | 104 | | 2fa / OTP / TOTP | Authy | ✅ | ✅ | 105 | | | Bitwarden | ✅ | ✅ | 106 | 107 | Referensi: 108 | - https://en.wikipedia.org/wiki/Multi-factor_authentication 109 | - https://en.wikipedia.org/wiki/Time-based_One-Time_Password 110 | - https://en.wikipedia.org/wiki/GNU_Privacy_Guard 111 | - https://en.wikipedia.org/wiki/Pretty_Good_Privacy 112 | 113 | 114 | ### **Terminal** 115 | 116 | > [tmux](https://github.com/tmux/tmux), alacritty, iTerm2 117 | 118 |

119 | 120 | current - MacbookPro13 M1 121 | 122 | Thinkpad - Archlinux 123 | 124 | 125 |

126 | 127 |

128 | 129 | 130 | iTerm2 with Tmux 131 | 132 | 133 | 134 | 135 | Alacritty with Tmux 136 | 137 | 138 |

139 | 140 | 141 | #### **Shell (ZSH)** 142 | 143 | > zsh with zinit for better performance 144 | 145 | ##### Benchmark 146 | 147 | * MacbookPro17,1 Memory 8GB (arm64 M1) 148 | 149 | ```zsh 150 | 0.23 real 0.12 user 0.08 sys 151 | 0.15 real 0.10 user 0.04 sys 152 | 0.15 real 0.10 user 0.04 sys 153 | 0.15 real 0.10 user 0.04 sys 154 | 0.15 real 0.10 user 0.04 sys 155 | 0.15 real 0.10 user 0.04 sys 156 | 0.16 real 0.11 user 0.04 sys 157 | 0.17 real 0.10 user 0.04 sys 158 | 0.15 real 0.10 user 0.04 sys 159 | 0.15 real 0.10 user 0.04 sys 160 | ``` 161 | 162 | * MacbookPro2019 Memory 8GB (intel) 163 | 164 | ```zsh 165 | 0.28 real 0.19 user 0.08 sys 166 | 0.28 real 0.19 user 0.07 sys 167 | 0.29 real 0.19 user 0.08 sys 168 | 0.27 real 0.19 user 0.07 sys 169 | 0.27 real 0.19 user 0.07 sys 170 | 0.27 real 0.19 user 0.07 sys 171 | 0.29 real 0.19 user 0.07 sys 172 | 0.28 real 0.19 user 0.07 sys 173 | 0.28 real 0.19 user 0.07 sys 174 | 0.27 real 0.19 user 0.07 sys 175 | ``` 176 | 177 | * Thinkpad T430 (old-configuration) 178 | 179 | ```zsh 180 | 0.46 real 0.31 user 0.13 sys 181 | 0.45 real 0.31 user 0.12 sys 182 | 0.43 real 0.30 user 0.12 sys 183 | 0.44 real 0.31 user 0.12 sys 184 | 0.44 real 0.30 user 0.12 sys 185 | 0.43 real 0.30 user 0.11 sys 186 | 0.43 real 0.30 user 0.11 sys 187 | 0.43 real 0.30 user 0.12 sys 188 | 0.43 real 0.30 user 0.12 sys 189 | 0.44 real 0.30 user 0.12 sys 190 | ``` 191 | 192 | 193 | #### **Editor (VIM)** 194 | > vim-plug (vim plugin manager), intelisense (COC) 195 | 196 |

197 | Editor - Vim 199 |

200 | 201 | 202 | ## Preview 203 | 204 | ### Linux 205 |
206 | Click Me 207 |

208 |

Linux - Menu with Rofi

209 | 210 | 211 | 212 |

213 | 214 |

215 |

Linux - Clipboard Manager with Rofi + greenclip

216 | 217 | 218 | 219 |

220 |
221 | -------------------------------------------------------------------------------- /.config/i3##os.Linux/config.bak: -------------------------------------------------------------------------------- 1 | set_from_resource $GITHUB_POLYBAR echo "$GITHUB_POLYBAR" 2 | set_from_resource $GITHUB_USER echo "$GITHUB_USER" 3 | 4 | set $mod Mod1 5 | 6 | new_window pixel 1 7 | new_float normal 8 | 9 | hide_edge_borders none 10 | 11 | bindsym $mod+u border none 12 | bindsym $mod+y border pixel 1 13 | bindsym $mod+n border normal 14 | 15 | font FontAwesome:style=Regular 11 16 | 17 | floating_modifier $mod 18 | 19 | # bindsym $mod+Return exec i3-sensible-terminal 20 | bindsym $mod+Return exec --no-startup-id alacritty 21 | 22 | # Window kill command 23 | bindsym $mod+Shift+q kill 24 | 25 | # start program launcher 26 | bindsym $mod+d exec --no-startup-id rofi -show drun 27 | 28 | # change focus 29 | bindsym $mod+j focus left 30 | bindsym $mod+k focus down 31 | bindsym $mod+l focus up 32 | bindsym $mod+semicolon focus right 33 | 34 | bindsym $mod+Left focus left 35 | bindsym $mod+Down focus down 36 | bindsym $mod+Up focus up 37 | bindsym $mod+Right focus right 38 | 39 | # move focused window 40 | bindsym $mod+Shift+j move left 41 | bindsym $mod+Shift+k move down 42 | bindsym $mod+Shift+l move up 43 | bindsym $mod+Shift+semicolon move right 44 | 45 | bindsym $mod+Shift+Left move left 46 | bindsym $mod+Shift+Down move down 47 | bindsym $mod+Shift+Up move up 48 | bindsym $mod+Shift+Right move right 49 | 50 | # workspace back and forth (with/without active container) 51 | workspace_auto_back_and_forth yes 52 | bindsym $mod+b workspace back_and_forth 53 | bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth 54 | 55 | # split orientation 56 | bindsym $mod+h split h; 57 | # exec notify-send 'tile horizontally' 58 | bindsym $mod+v split v; 59 | # exec notify-send 'tile vertically' 60 | bindsym $mod+q split toggle 61 | 62 | # toggle fullscreen mode for the focused container 63 | bindsym $mod+f fullscreen toggle 64 | 65 | # change container layout (stacked, tabbed, toggle split) 66 | bindsym $mod+s layout stacking 67 | bindsym $mod+w layout tabbed 68 | bindsym $mod+e layout toggle split 69 | 70 | # toggle tiling / floating 71 | bindsym $mod+Shift+space floating toggle 72 | 73 | # change focus between tiling / floating windows 74 | bindsym $mod+space focus mode_toggle 75 | 76 | # toggle sticky 77 | bindsym $mod+Shift+s sticky toggle 78 | 79 | # focus the parent container 80 | bindsym $mod+a focus parent 81 | 82 | # move the currently focused window to the scratchpad 83 | bindsym $mod+Shift+minus move scratchpad 84 | 85 | # Show the next scratchpad window or hide the focused scratchpad window. 86 | # If there are multiple scratchpad windows, this command cycles through them. 87 | bindsym $mod+minus scratchpad show 88 | 89 | # navigate workspaces next / previous 90 | bindsym $mod+Ctrl+Right workspace next 91 | bindsym $mod+Ctrl+Left workspace prev 92 | 93 | # workspaces 94 | set $ws1 1 95 | set $ws2 2 96 | set $ws3 3 97 | set $ws4 4 98 | set $ws5 5 99 | set $ws6 6 100 | set $ws7 7 101 | set $ws8 8 102 | 103 | # switch to workspace 104 | bindsym $mod+1 workspace $ws1 w0 105 | bindsym $mod+2 workspace $ws2 web 106 | bindsym $mod+3 workspace $ws3 107 | bindsym $mod+4 workspace $ws4 Telegram 108 | bindsym $mod+5 workspace $ws5 109 | bindsym $mod+6 workspace $ws6 110 | bindsym $mod+7 workspace $ws7 Discord 111 | bindsym $mod+8 workspace $ws8 Musick 112 | 113 | # Move focused container to workspace 114 | bindsym $mod+Ctrl+1 move container to workspace $ws1 115 | bindsym $mod+Ctrl+2 move container to workspace $ws2 116 | bindsym $mod+Ctrl+3 move container to workspace $ws3 117 | bindsym $mod+Ctrl+4 move container to workspace $ws4 118 | bindsym $mod+Ctrl+5 move container to workspace $ws5 119 | bindsym $mod+Ctrl+6 move container to workspace $ws6 120 | bindsym $mod+Ctrl+7 move container to workspace $ws7 121 | bindsym $mod+Ctrl+8 move container to workspace $ws8 122 | 123 | # Move to workspace with focused container 124 | bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 125 | bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 126 | bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 127 | bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 128 | bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 129 | bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 130 | bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 131 | bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 132 | 133 | # Open specific applications in floating mode 134 | for_window [title="alsamixer"] floating enable border pixel 1 135 | for_window [class="Calamares"] floating enable border normal 136 | for_window [class="Clipgrab"] floating enable 137 | for_window [title="File Transfer*"] floating enable 138 | for_window [class="Galculator"] floating enable border pixel 1 139 | for_window [class="GParted"] floating enable border normal 140 | for_window [title="i3_help"] floating enable sticky enable border normal 141 | for_window [class="Lightdm-gtk-greeter-settings"] floating enable 142 | for_window [class="Lxappearance"] floating enable sticky enable border normal 143 | for_window [class="Manjaro-hello"] floating enable 144 | for_window [class="Manjaro Settings Manager"] floating enable border normal 145 | for_window [title="MuseScore: Play Panel"] floating enable 146 | for_window [class="Nitrogen"] floating enable sticky enable border normal 147 | for_window [class="Oblogout"] fullscreen enable 148 | for_window [class="octopi"] floating enable 149 | for_window [title="About Pale Moon"] floating enable 150 | for_window [class="Pamac-manager"] floating enable 151 | for_window [class="Pavucontrol"] floating enable 152 | for_window [class="qt5ct"] floating enable sticky enable border normal 153 | for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal 154 | for_window [class="Simple-scan"] floating enable border normal 155 | for_window [class="(?i)System-config-printer.py"] floating enable border normal 156 | for_window [class="Skype"] floating enable border normal 157 | for_window [class="Thus"] floating enable border normal 158 | for_window [class="Timeset-gui"] floating enable border normal 159 | for_window [class="(?i)virtualbox"] floating enable border normal 160 | for_window [class="Xfburn"] floating enable 161 | for_window [class="Spotify"] floating enable focus move to workspace $ws8 162 | for_window [class="discord"] move to workspace $ws7 163 | for_window [class="TelegramDesktop"] move to workspace $ws4 164 | for_window [class="TelegramDesktop"] floating enable focus 165 | 166 | # switch to workspace with urgent window automatically 167 | for_window [urgent=latest] focus 168 | 169 | # reload the configuration file 170 | bindsym $mod+Shift+c reload 171 | 172 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 173 | bindsym $mod+Shift+r restart 174 | 175 | # exit i3 (logs you out of your X session) 176 | bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" 177 | 178 | # Set shut down, restart and locking features 179 | bindsym $mod+0 mode "$mode_system" 180 | set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown 181 | mode "$mode_system" { 182 | bindsym l exec --no-startup-id i3exit lock, mode "default" 183 | bindsym s exec --no-startup-id i3exit suspend, mode "default" 184 | bindsym u exec --no-startup-id i3exit switch_user, mode "default" 185 | bindsym e exec --no-startup-id i3exit logout, mode "default" 186 | bindsym h exec --no-startup-id i3exit hibernate, mode "default" 187 | bindsym r exec --no-startup-id i3exit reboot, mode "default" 188 | bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" 189 | 190 | # exit system mode: "Enter" or "Escape" 191 | bindsym Return mode "default" 192 | bindsym Escape mode "default" 193 | } 194 | 195 | # Resize window (you can also use the mouse for that) 196 | bindsym $mod+r mode "resize" 197 | mode "resize" { 198 | # These bindings trigger as soon as you enter the resize mode 199 | # Pressing left will shrink the window’s width. 200 | # Pressing right will grow the window’s width. 201 | # Pressing up will shrink the window’s height. 202 | # Pressing down will grow the window’s height. 203 | bindsym j resize shrink width 5 px or 5 ppt 204 | bindsym k resize grow height 5 px or 5 ppt 205 | bindsym l resize shrink height 5 px or 5 ppt 206 | bindsym semicolon resize grow width 5 px or 5 ppt 207 | 208 | # same bindings, but for the arrow keys 209 | bindsym Left resize shrink width 10 px or 10 ppt 210 | bindsym Down resize grow height 10 px or 10 ppt 211 | bindsym Up resize shrink height 10 px or 10 ppt 212 | bindsym Right resize grow width 10 px or 10 ppt 213 | 214 | # exit resize mode: Enter or Escape 215 | bindsym Return mode "default" 216 | bindsym Escape mode "default" 217 | } 218 | 219 | # Autostart applications 220 | exec --no-startup-id nitrogen --restore; sleep 1; compton -b 221 | exec --no-startup-id nm-applet 222 | # exec --no-startup-id xfce4-power-manager 223 | exec --no-startup-id pamac-tray 224 | 225 | exec_always --no-startup-id ff-theme-util 226 | exec_always --no-startup-id fix_xcursor 227 | exec_always --no-startup-id $HOME/.config/polybar/launch.sh 228 | 229 | # Theme colors 230 | client.focused #707880 #1d1f21 #707880 #8c9440 #8c9440 231 | client.focused_inactive #707880 #1d1f21 #707880 #5f819d #5f819d 232 | client.unfocused #707880 #1d1f21 #707880 #5f819d #5f819d 233 | client.urgent #707880 #1d1f21 #707880 #5f819d #5f819d 234 | client.placeholder #707880 #1d1f21 #707880 #5f819d #5f819d 235 | 236 | client.background #1d1f21 237 | 238 | # Gaps 239 | gaps inner 5 240 | gaps outer 1 241 | 242 | smart_gaps on 243 | 244 | # Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. 245 | set $mode_gaps Gaps: (o) outer, (i) inner 246 | set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) 247 | set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) 248 | bindsym $mod+Shift+g mode "$mode_gaps" 249 | 250 | mode "$mode_gaps" { 251 | bindsym o mode "$mode_gaps_outer" 252 | bindsym i mode "$mode_gaps_inner" 253 | bindsym Return mode "default" 254 | bindsym Escape mode "default" 255 | } 256 | mode "$mode_gaps_inner" { 257 | bindsym plus gaps inner current plus 5 258 | bindsym minus gaps inner current minus 5 259 | bindsym 0 gaps inner current set 0 260 | 261 | bindsym Shift+plus gaps inner all plus 5 262 | bindsym Shift+minus gaps inner all minus 5 263 | bindsym Shift+0 gaps inner all set 0 264 | 265 | bindsym Return mode "default" 266 | bindsym Escape mode "default" 267 | } 268 | mode "$mode_gaps_outer" { 269 | bindsym plus gaps outer current plus 5 270 | bindsym minus gaps outer current minus 5 271 | bindsym 0 gaps outer current set 0 272 | 273 | bindsym Shift+plus gaps outer all plus 5 274 | bindsym Shift+minus gaps outer all minus 5 275 | bindsym Shift+0 gaps outer all set 0 276 | 277 | bindsym Return mode "default" 278 | bindsym Escape mode "default" 279 | } 280 | 281 | # set power-manager and volume control 282 | exec --no-startup-id mate-power-manager 283 | 284 | bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -c 0 -q set Master 2dB+ unmute 285 | bindsym XF86AudioLowerVolume exec --no-startup-id amixer -c 0 -q set Master 2db- unmute 286 | bindsym XF86AudioMute exec --no-startup-id amixer -q set Master toggle 287 | 288 | # touchpad on and off controller on laptop with Fn+ 289 | bindsym XF86TouchpadOn exec --no-startup-id synclient Touchpadoff=0 290 | bindsym XF86TouchpadOff exec --no-startup-id synclient Touchpadoff=1 291 | 292 | # scrout 293 | bindsym --release Print exec spectacle -f --desktopfile '%Y%m%d_%H%M%S.png' -o '~/Desktop/screenshoots' 294 | bindsym --release Shift+Print exec spectacle -ubc 295 | bindsym --release Control+Print exec spectacle -rbc 296 | 297 | # spotify 298 | # see https://pavelmakhov.com/2018/01/spotify-i3/ 299 | bindsym $mod+greater exec "sp next"; exec notify-send "Spotify ->" 300 | bindsym $mod+less exec "sp prev"; exec notify-send "Spotify <-" 301 | bindsym $mod+slash exec "sp play"; exec notify-send "Spotify |>" 302 | 303 | # Clipboard manager 304 | # shortcut to selection widget (primary) 305 | bindsym $mod+c exec rofi --no-startup-id -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}'; 306 | # show window 307 | bindsym $mod+Shift+w exec rofi --no-startup-id -show window 308 | 309 | # emoji 310 | # map: alt+shift+. 311 | bindsym $mod+Shift+greater exec rofi --no-startup-id -show emoji -modi emoji 312 | 313 | # password-store rofi 314 | bindsym $mod+Shift+p exec rofi-pass --no-startup-id 315 | -------------------------------------------------------------------------------- /.config/i3##os.Linux/config: -------------------------------------------------------------------------------- 1 | set_from_resource $GITHUB_POLYBAR echo "$GITHUB_POLYBAR" 2 | set_from_resource $GITHUB_USER echo "$GITHUB_USER" 3 | 4 | set $mod Mod1 5 | 6 | new_window pixel 1 7 | new_float normal 8 | 9 | hide_edge_borders none 10 | # border none 11 | 12 | bindsym $mod+u border none 13 | bindsym $mod+y border pixel 1 14 | bindsym $mod+i border normal 15 | 16 | font FontAwesome:style=Regular 11 17 | 18 | floating_modifier $mod 19 | 20 | # bindsym $mod+Return exec i3-sensible-terminal 21 | bindsym $mod+Return exec --no-startup-id alacritty 22 | 23 | # Window kill command 24 | bindsym $mod+Shift+q kill 25 | 26 | # start program launcher 27 | bindsym $mod+d exec --no-startup-id rofi -show drun 28 | 29 | # change focus 30 | bindsym $mod+j focus left 31 | bindsym $mod+k focus down 32 | bindsym $mod+l focus up 33 | bindsym $mod+semicolon focus right 34 | 35 | bindsym $mod+Left focus left 36 | bindsym $mod+Down focus down 37 | bindsym $mod+Up focus up 38 | bindsym $mod+Right focus right 39 | 40 | # move focused window 41 | bindsym $mod+Shift+j move left 42 | bindsym $mod+Shift+k move down 43 | bindsym $mod+Shift+l move up 44 | bindsym $mod+Shift+semicolon move right 45 | 46 | bindsym $mod+Shift+Left move left 47 | bindsym $mod+Shift+Down move down 48 | bindsym $mod+Shift+Up move up 49 | bindsym $mod+Shift+Right move right 50 | 51 | # workspace back and forth (with/without active container) 52 | workspace_auto_back_and_forth yes 53 | bindsym $mod+b workspace back_and_forth 54 | bindsym $mod+Shift+b move container to workspace back_and_forth; workspace back_and_forth 55 | 56 | # split orientation 57 | bindsym $mod+h split h;exec notify-send 'tile horizontally' 58 | bindsym $mod+v split v; exec notify-send 'tile vertically' 59 | bindsym $mod+q split toggle 60 | 61 | # toggle fullscreen mode for the focused container 62 | bindsym $mod+f fullscreen toggle 63 | 64 | # change container layout (stacked, tabbed, toggle split) 65 | bindsym $mod+s layout stacking 66 | bindsym $mod+w layout tabbed 67 | bindsym $mod+e layout toggle split 68 | 69 | # toggle tiling / floating 70 | bindsym $mod+Shift+space floating toggle 71 | 72 | # change focus between tiling / floating windows 73 | bindsym $mod+space focus mode_toggle 74 | 75 | # toggle sticky 76 | bindsym $mod+Shift+s sticky toggle 77 | 78 | # focus the parent container 79 | bindsym $mod+a focus parent 80 | 81 | # move the currently focused window to the scratchpad 82 | bindsym $mod+Shift+minus move scratchpad 83 | 84 | # Show the next scratchpad window or hide the focused scratchpad window. 85 | # If there are multiple scratchpad windows, this command cycles through them. 86 | bindsym $mod+minus scratchpad show 87 | 88 | # navigate workspaces next / previous 89 | bindsym $mod+Ctrl+l workspace next 90 | bindsym $mod+Ctrl+h workspace prev 91 | 92 | # workspaces 93 | set $ws1 1 94 | set $ws2 2 95 | set $ws3 3 96 | set $ws4 4 97 | set $ws5 5 98 | set $ws6 6 99 | set $ws7 7 100 | set $ws8 8 101 | 102 | # switch to workspace 103 | bindsym $mod+1 workspace $ws1 104 | bindsym $mod+2 workspace $ws2 105 | bindsym $mod+3 workspace $ws3 106 | bindsym $mod+4 workspace $ws4 107 | bindsym $mod+5 workspace $ws5 108 | bindsym $mod+6 workspace $ws6 109 | bindsym $mod+7 workspace $ws7 110 | bindsym $mod+8 workspace $ws8 111 | 112 | # Move focused container to workspace 113 | bindsym $mod+Ctrl+1 move container to workspace $ws1 114 | bindsym $mod+Ctrl+2 move container to workspace $ws2 115 | bindsym $mod+Ctrl+3 move container to workspace $ws3 116 | bindsym $mod+Ctrl+4 move container to workspace $ws4 117 | bindsym $mod+Ctrl+5 move container to workspace $ws5 118 | bindsym $mod+Ctrl+6 move container to workspace $ws6 119 | bindsym $mod+Ctrl+7 move container to workspace $ws7 120 | bindsym $mod+Ctrl+8 move container to workspace $ws8 121 | 122 | # Move to workspace with focused container 123 | bindsym $mod+Shift+1 move container to workspace $ws1; workspace $ws1 124 | bindsym $mod+Shift+2 move container to workspace $ws2; workspace $ws2 125 | bindsym $mod+Shift+3 move container to workspace $ws3; workspace $ws3 126 | bindsym $mod+Shift+4 move container to workspace $ws4; workspace $ws4 127 | bindsym $mod+Shift+5 move container to workspace $ws5; workspace $ws5 128 | bindsym $mod+Shift+6 move container to workspace $ws6; workspace $ws6 129 | bindsym $mod+Shift+7 move container to workspace $ws7; workspace $ws7 130 | bindsym $mod+Shift+8 move container to workspace $ws8; workspace $ws8 131 | 132 | # Open specific applications in floating mode 133 | for_window [title="alsamixer"] floating enable border pixel 1 134 | for_window [class="Calamares"] floating enable border normal 135 | for_window [class="Clipgrab"] floating enable 136 | for_window [title="File Transfer*"] floating enable 137 | for_window [class="Galculator"] floating enable border pixel 1 138 | for_window [class="GParted"] floating enable border normal 139 | for_window [title="i3_help"] floating enable sticky enable border normal 140 | for_window [class="Lightdm-gtk-greeter-settings"] floating enable 141 | for_window [class="Lxappearance"] floating enable sticky enable border normal 142 | for_window [class="Manjaro-hello"] floating enable 143 | for_window [class="Manjaro Settings Manager"] floating enable border normal 144 | for_window [title="MuseScore: Play Panel"] floating enable 145 | for_window [class="Nitrogen"] floating enable sticky enable border normal 146 | for_window [class="Oblogout"] fullscreen enable 147 | for_window [class="octopi"] floating enable 148 | for_window [title="About Pale Moon"] floating enable 149 | for_window [class="Pamac-manager"] floating enable 150 | for_window [class="Pavucontrol"] floating enable 151 | for_window [class="qt5ct"] floating enable sticky enable border normal 152 | for_window [class="Qtconfig-qt4"] floating enable sticky enable border normal 153 | for_window [class="Simple-scan"] floating enable border normal 154 | for_window [class="(?i)System-config-printer.py"] floating enable border normal 155 | for_window [class="Skype"] floating enable border normal 156 | for_window [class="Thus"] floating enable border normal 157 | for_window [class="Timeset-gui"] floating enable border normal 158 | for_window [class="(?i)virtualbox"] floating enable border normal 159 | for_window [class="Xfburn"] floating enable 160 | 161 | # Move Open specific applications 162 | for_window [title="Telegram"] move to workspace $ws6 163 | for_window [class="Spotify"] move to workspace $ws8 164 | for_window [class="discord"] move to workspace $ws7 165 | 166 | # switch to workspace with urgent window automatically 167 | for_window [urgent=latest] focus 168 | 169 | # reload the configuration file 170 | bindsym $mod+Shift+c reload 171 | 172 | # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) 173 | bindsym $mod+Shift+r restart 174 | 175 | # exit i3 (logs you out of your X session) 176 | bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" 177 | 178 | # Set shut down, restart and locking features 179 | bindsym $mod+0 mode "$mode_system" 180 | set $mode_system (l)ock, (e)xit, switch_(u)ser, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown 181 | mode "$mode_system" { 182 | bindsym l exec --no-startup-id i3exit lock, mode "default" 183 | bindsym s exec --no-startup-id i3exit suspend, mode "default" 184 | bindsym u exec --no-startup-id i3exit switch_user, mode "default" 185 | bindsym e exec --no-startup-id i3exit logout, mode "default" 186 | bindsym h exec --no-startup-id i3exit hibernate, mode "default" 187 | bindsym r exec --no-startup-id i3exit reboot, mode "default" 188 | bindsym Shift+s exec --no-startup-id i3exit shutdown, mode "default" 189 | 190 | # exit system mode: "Enter" or "Escape" 191 | bindsym Return mode "default" 192 | bindsym Escape mode "default" 193 | } 194 | 195 | # Resize window (you can also use the mouse for that) 196 | bindsym $mod+r mode "resize" 197 | mode "resize" { 198 | # These bindings trigger as soon as you enter the resize mode 199 | # Pressing left will shrink the window’s width. 200 | # Pressing right will grow the window’s width. 201 | # Pressing up will shrink the window’s height. 202 | # Pressing down will grow the window’s height. 203 | bindsym j resize shrink width 5 px or 5 ppt 204 | bindsym k resize grow height 5 px or 5 ppt 205 | bindsym l resize shrink height 5 px or 5 ppt 206 | bindsym semicolon resize grow width 5 px or 5 ppt 207 | 208 | # same bindings, but for the arrow keys 209 | bindsym Left resize shrink width 10 px or 10 ppt 210 | bindsym Down resize grow height 10 px or 10 ppt 211 | bindsym Up resize shrink height 10 px or 10 ppt 212 | bindsym Right resize grow width 10 px or 10 ppt 213 | 214 | # exit resize mode: Enter or Escape 215 | bindsym Return mode "default" 216 | bindsym Escape mode "default" 217 | } 218 | 219 | # Autostart applications 220 | exec --no-startup-id nitrogen --restore; sleep 1; compton -b 221 | exec --no-startup-id nm-applet 222 | # exec --no-startup-id xfce4-power-manager 223 | exec --no-startup-id pasystray 224 | # exec --no-startup-id pa-applet 225 | exec --no-startup-id mictray 226 | exec --no-startup-id pamac-tray-appindicator 227 | # custom autostart 228 | # exec --no-startup-id $HOME/.autostart 229 | exec --no-startup-id "greenclip daemon > /dev/null 2>&1) &" 230 | exec --no-startup-id "systemctl --user restart greenclip" 231 | 232 | # exec_always --no-startup-id ff-theme-util 233 | # exec_always --no-startup-id fix_xcursor 234 | exec_always --no-startup-id $HOME/.config/polybar/launch.sh 235 | 236 | # Theme colors 237 | client.focused #707880 #1d1f21 #707880 #8c9440 #8c9440 238 | client.focused_inactive #707880 #1d1f21 #707880 #5f819d #5f819d 239 | client.unfocused #707880 #1d1f21 #707880 #5f819d #5f819d 240 | client.urgent #707880 #1d1f21 #707880 #5f819d #5f819d 241 | client.placeholder #707880 #1d1f21 #707880 #5f819d #5f819d 242 | 243 | client.background #1d1f21 244 | 245 | # Gaps 246 | gaps inner 5 247 | gaps outer 1 248 | 249 | smart_gaps on 250 | 251 | # Press $mod+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace). If you also press Shift with these keys, the change will be global for all workspaces. 252 | set $mode_gaps Gaps: (o) outer, (i) inner 253 | set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) 254 | set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) 255 | bindsym $mod+Shift+g mode "$mode_gaps" 256 | 257 | mode "$mode_gaps" { 258 | bindsym o mode "$mode_gaps_outer" 259 | bindsym i mode "$mode_gaps_inner" 260 | bindsym Return mode "default" 261 | bindsym Escape mode "default" 262 | } 263 | mode "$mode_gaps_inner" { 264 | bindsym plus gaps inner current plus 5 265 | bindsym minus gaps inner current minus 5 266 | bindsym 0 gaps inner current set 0 267 | 268 | bindsym Shift+plus gaps inner all plus 5 269 | bindsym Shift+minus gaps inner all minus 5 270 | bindsym Shift+0 gaps inner all set 0 271 | 272 | bindsym Return mode "default" 273 | bindsym Escape mode "default" 274 | } 275 | mode "$mode_gaps_outer" { 276 | bindsym plus gaps outer current plus 5 277 | bindsym minus gaps outer current minus 5 278 | bindsym 0 gaps outer current set 0 279 | 280 | bindsym Shift+plus gaps outer all plus 5 281 | bindsym Shift+minus gaps outer all minus 5 282 | bindsym Shift+0 gaps outer all set 0 283 | 284 | bindsym Return mode "default" 285 | bindsym Escape mode "default" 286 | } 287 | 288 | # set power-manager and volume control 289 | exec --no-startup-id mate-power-manager 290 | # KDEConnect 291 | exec --no-startup-id /usr/lib/kdeconnectd 292 | 293 | bindsym XF86AudioRaiseVolume exec --no-startup-id amixer -c 0 -q set Master 2dB+ unmute 294 | bindsym XF86AudioLowerVolume exec --no-startup-id amixer -c 0 -q set Master 2db- unmute 295 | bindsym XF86AudioMute exec --no-startup-id amixer -q set Master toggle 296 | 297 | # touchpad on and off controller on laptop with Fn+ 298 | # bindsym XF86TouchpadOn exec --no-startup-id synclient Touchpadoff=0 299 | # bindsym XF86TouchpadOff exec --no-startup-id synclient Touchpadoff=1 300 | 301 | # scrout 302 | bindsym --release Print exec spectacle -f --desktopfile '%Y%m%d_%H%M%S.png' -o '~/Desktop/screenshoots' 303 | bindsym --release Shift+Print exec spectacle -ubc 304 | bindsym --release Control+Print exec spectacle -rbc 305 | 306 | # spotify 307 | # see https://pavelmakhov.com/2018/01/spotify-i3/ 308 | bindsym $mod+greater exec "sp next"; exec notify-send "Spotify ->" 309 | bindsym $mod+less exec "sp prev"; exec notify-send "Spotify <-" 310 | bindsym $mod+slash exec "sp play"; exec notify-send "Spotify |>" 311 | 312 | # Clipboard manager 313 | # shortcut to selection widget (primary) 314 | bindsym $mod+c exec rofi --no-startup-id -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}'; 315 | # show window 316 | bindsym $mod+Shift+w exec rofi --no-startup-id -show window 317 | 318 | # emoji 319 | # map: alt+shift+. 320 | bindsym $mod+Shift+greater exec rofi --no-startup-id -show emoji -modi emoji 321 | 322 | # password-store rofi 323 | bindsym $mod+Shift+p exec rofi-pass --no-startup-id 324 | 325 | bindsym $mod+z exec --no-startup-id ~/.config/polypomo/polypomo toggle 326 | bindsym $mod+Shift+z exec --no-startup-id ~/.config/polypomo/polypomo end 327 | bindsym $mod+x exec --no-startup-id ~/.config/polypomo/polypomo lock 328 | # TODO 329 | bindsym $mod+Shift+m exec dunstctl set-paused toggle 330 | bindsym $mod+m exec dunstctl close-all 331 | 332 | # switch esc to capslock 333 | # swithc esc -> capslock 334 | exec "setxkbmap -option caps:swapescape" 335 | -------------------------------------------------------------------------------- /.config/polybar##os.Linux/config.ini: -------------------------------------------------------------------------------- 1 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 2 | ;; 3 | ;; ____ __ __ 4 | ;; / __ \____ / /_ __/ /_ ____ ______ 5 | ;; / /_/ / __ \/ / / / / __ \/ __ `/ ___/ 6 | ;; / ____/ /_/ / / /_/ / /_/ / /_/ / / 7 | ;; /_/ \____/_/\__, /_.___/\__,_/_/ 8 | ;; /____/ 9 | ;; 10 | ;; Created By Aditya Shakya @adi1090x 11 | ;; 12 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 13 | 14 | ;; Global WM Settings 15 | [module/i3] 16 | type = internal/i3 17 | format = 18 | index-sort = true 19 | wrapping-scroll = false 20 | 21 | label-mode-padding = 2 22 | label-mode-foreground = #c5c8c6 23 | label-mode-background = #282a2e 24 | 25 | label-focused = %icon% %name% 26 | label-focused-background = #373b41 27 | label-focused-foreground = #6b7443 28 | label-focused-padding = 2 29 | 30 | label-unfocused = %icon% %name% 31 | label-unfocused-background = ${color.bg} 32 | label-unfocused-foreground = #c5c8c6 33 | label-unfocused-padding = 2 34 | 35 | label-visible = %icon% %name% 36 | label-visible-background = #282a2e 37 | label-visible-foreground = #c5c8c6 38 | label-visible-padding = 2 39 | 40 | label-urgent = %icon% %name% 41 | label-urgent-background = #BA2922 42 | label-urgent-padding = 2 43 | 44 | ws-icon-0 = 1;λ 45 | ws-icon-1 = 2;Λ 46 | ws-icon-6 = 7;Φ 47 | ws-icon-7 = 8;φ 48 | ws-icon-default = 49 | 50 | fuzzy-match = true 51 | 52 | 53 | [global/wm] 54 | ; Adjust the _NET_WM_STRUT_PARTIAL top value 55 | ; Used for top aligned bars 56 | margin-bottom = 0 57 | 58 | ; Adjust the _NET_WM_STRUT_PARTIAL bottom value 59 | ; Used for bottom aligned bars 60 | margin-top = 0 61 | 62 | ;; Bar Settings 63 | 64 | [bar/main] 65 | ; Use either of the following command to list available outputs: 66 | ; If unspecified, the application will pick the first one it finds. 67 | ; $ polybar -m | cut -d ':' -f 1 68 | ; $ xrandr -q | grep " connected" | cut -d ' ' -f1 69 | monitor = 70 | 71 | ; Use the specified monitor as a fallback if the main one is not found. 72 | monitor-fallback = 73 | 74 | ; Require the monitor to be in connected state 75 | ; XRandR sometimes reports my monitor as being disconnected (when in use) 76 | monitor-strict = false 77 | 78 | ; Tell the Window Manager not to configure the window. 79 | ; Use this to detach the bar if your WM is locking its size/position. 80 | override-redirect = false 81 | 82 | ; Put the bar at the bottom of the screen 83 | bottom = false 84 | 85 | ; Prefer fixed center position for the `modules-center` block 86 | ; When false, the center position will be based on the size of the other blocks. 87 | fixed-center = true 88 | 89 | ; Dimension defined as pixel value (e.g. 35) or percentage (e.g. 50%), 90 | ; the percentage can optionally be extended with a pixel offset like so: 91 | ; 50%:-10, this will result in a width or height of 50% minus 10 pixels 92 | width = 100% 93 | height = 28 94 | 95 | ; Offset defined as pixel value (e.g. 35) or percentage (e.g. 50%) 96 | ; the percentage can optionally be extended with a pixel offset like so: 97 | ; 50%:-10, this will result in an offset in the x or y direction 98 | ; of 50% minus 10 pixels 99 | offset-x = 0 100 | offset-y = 0 101 | 102 | ; Background ARGB color (e.g. #f00, #ff992a, #ddff1023) 103 | background = ${color.bg} 104 | 105 | ; Foreground ARGB color (e.g. #f00, #ff992a, #ddff1023) 106 | foreground = ${color.fg} 107 | 108 | ; Background gradient (vertical steps) 109 | ; background-[0-9]+ = #aarrggbb 110 | ;;background-0 = 111 | 112 | ; Value used for drawing rounded corners 113 | ; Note: This shouldn't be used together with border-size because the border 114 | ; doesn't get rounded 115 | ; Individual top/bottom values can be defined using: 116 | ; radius-{top,bottom} 117 | radius-top = 0 118 | radius-bottom = 0 119 | 120 | ; Under-/overline pixel size and argb color 121 | ; Individual values can be defined using: 122 | ; {overline,underline}-size 123 | ; {overline,underline}-color 124 | ;;overline-size = 0 125 | ;;overline-color = ${color.ac} 126 | 127 | ; Values applied to all borders 128 | ; Individual side values can be defined using: 129 | ; border-{left,top,right,bottom}-size 130 | ; border-{left,top,right,bottom}-color 131 | ; The top and bottom borders are added to the bar height, so the effective 132 | ; window height is: 133 | ; height + border-top-size + border-bottom-size 134 | ; Meanwhile the effective window width is defined entirely by the width key and 135 | ; the border is placed withing this area. So you effectively only have the 136 | ; following horizontal space on the bar: 137 | ; width - border-right-size - border-left-size 138 | ;;border-size = 2 139 | ;;border-color = ${color.ac} 140 | 141 | ; Number of spaces to add at the beginning/end of the bar 142 | ; Individual side values can be defined using: 143 | ; padding-{left,right} 144 | padding = 0 145 | padding-bottom = 13 146 | 147 | ; Number of spaces to add before/after each module 148 | ; Individual side values can be defined using: 149 | ; module-margin-{left,right} 150 | module-margin-left = 0 151 | module-margin-right = 0 152 | 153 | ; Fonts are defined using ; 154 | ; Font names are specified using a fontconfig pattern. 155 | ; font-0 = NotoSans-Regular:size=8;2 156 | ; font-1 = MaterialIcons:size=10 157 | ; font-2 = Termsynu:size=8;-1 158 | ; font-3 = FontAwesome:size=10 159 | ; See the Fonts wiki page for more details 160 | 161 | font-0 = "Noto Sans:size=9;2" 162 | font-1 = "Iosevka Nerd Font:size=12;2" 163 | font-2 = "Iosevka Nerd Font:size=16;3" 164 | font-3 = FontAwesome:pixelsize=10;1 165 | 166 | ; Modules are added to one of the available blocks 167 | ; modules-left = cpu ram 168 | ; modules-center = xwindow xbacklight 169 | ; modules-right = ipc clock 170 | 171 | modules-left = menu chrome0 chrome1 chrome2 firefox files sep memory sep cpu sep filesystem 172 | modules-center = spotify 173 | modules-right = i3 sep date alsa battery polypomo 174 | 175 | ; The separator will be inserted between the output of each module 176 | separator = 177 | ; Opacity value between 0.0 and 1.0 used on fade in/out 178 | dim-value = 1.0 179 | 180 | ; Value to be used to set the WM_NAME atom 181 | ; If the value is empty or undefined, the atom value 182 | ; will be created from the following template: polybar-[BAR]_[MONITOR] 183 | ; NOTE: The placeholders are not available for custom values 184 | ; wm-name = 185 | 186 | ; Locale used to localize various module data (e.g. date) 187 | ; Expects a valid libc locale, for example: sv_SE.UTF-8 188 | ; locale = 189 | 190 | ; Position of the system tray window 191 | ; If empty or undefined, tray support will be disabled 192 | ; NOTE: A center aligned tray will cover center aligned modules 193 | ; 194 | ; Available positions: 195 | ; left 196 | ; center 197 | ; right 198 | ; none 199 | tray-position = right 200 | 201 | ; If true, the bar will not shift its 202 | ; contents when the tray changes 203 | tray-detached = false 204 | 205 | ; Tray icon max size 206 | tray-maxsize = 16 207 | 208 | ; DEPRECATED! Since 3.3.0 the tray always uses pseudo-transparency 209 | ; Enable pseudo transparency 210 | ; Will automatically be enabled if a fully transparent 211 | ; background color is defined using `tray-background` 212 | ; tray-transparent = false 213 | 214 | ; Background color for the tray container 215 | ; ARGB color (e.g. #f00, #ff992a, #ddff1023) 216 | ; By default the tray container will use the bar 217 | ; background color. 218 | tray-background = ${root.background} 219 | 220 | ; Tray offset defined as pixel value (e.g. 35) or percentage (e.g. 50%) 221 | tray-offset-x = 0 222 | tray-offset-y = 0 223 | 224 | ; Pad the sides of each tray icon 225 | tray-padding = 0 226 | 227 | ; Scale factor for tray clients 228 | tray-scale = 1.0 229 | 230 | ; Restack the bar window and put it above the 231 | ; selected window manager's root 232 | ; 233 | ; Fixes the issue where the bar is being drawn 234 | ; on top of fullscreen window's 235 | ; 236 | ; Currently supported WM's: 237 | ; bspwm 238 | ; i3 (requires: `override-redirect = true`) 239 | ; wm-restack = i3 240 | 241 | ; Set a DPI values used when rendering text 242 | ; This only affects scalable fonts 243 | ; dpi = 244 | 245 | ; Enable support for inter-process messaging 246 | ; See the Messaging wiki page for more details. 247 | enable-ipc = true 248 | 249 | ; Fallback click handlers that will be called if 250 | ; there's no matching module handler found. 251 | click-left = 252 | click-middle = 253 | click-right = 254 | scroll-up = 255 | scroll-down = 256 | double-click-left = 257 | double-click-middle = 258 | double-click-right = 259 | 260 | ; Requires polybar to be built with xcursor support (xcb-util-cursor) 261 | ; Possible values are: 262 | ; - default : The default pointer as before, can also be an empty string (default) 263 | ; - pointer : Typically in the form of a hand 264 | ; - ns-resize : Up and down arrows, can be used to indicate scrolling 265 | cursor-click = 266 | cursor-scroll = 267 | 268 | ;; WM Workspace Specific 269 | 270 | ; bspwm 271 | ;;scroll-up = bspwm-desknext 272 | ;;scroll-down = bspwm-deskprev 273 | ;;scroll-up = bspc desktop -f prev.local 274 | ;;scroll-down = bspc desktop -f next.local 275 | 276 | ;i3 277 | ;;scroll-up = i3wm-wsnext 278 | ;;scroll-down = i3wm-wsprev 279 | ;;scroll-up = i3-msg workspace next_on_output 280 | ;;scroll-down = i3-msg workspace prev_on_output 281 | 282 | ;openbox 283 | ;awesome 284 | ;etc 285 | 286 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 287 | 288 | ;; Application Settings 289 | 290 | [settings] 291 | ; The throttle settings lets the eventloop swallow up til X events 292 | ; if they happen within Y millisecond after first event was received. 293 | ; This is done to prevent flood of update event. 294 | ; 295 | ; For example if 5 modules emit an update event at the same time, we really 296 | ; just care about the last one. But if we wait too long for events to swallow 297 | ; the bar would appear sluggish so we continue if timeout 298 | ; expires or limit is reached. 299 | throttle-output = 5 300 | throttle-output-for = 10 301 | 302 | ; Time in milliseconds that the input handler will wait between processing events 303 | throttle-input-for = 30 304 | 305 | ; Reload upon receiving XCB_RANDR_SCREEN_CHANGE_NOTIFY events 306 | screenchange-reload = false 307 | 308 | ; Compositing operators 309 | ; @see: https://www.cairographics.org/manual/cairo-cairo-t.html#cairo-operator-t 310 | ; compositing-background = source 311 | ; compositing-foreground = over 312 | ; compositing-overline = over 313 | ; compositing-underline = over 314 | ; compositing-border = over 315 | 316 | ; Define fallback values used by all module formats 317 | format-foreground = 318 | format-background = 319 | format-underline = 320 | format-overline = 321 | format-spacing = 322 | format-padding = 323 | format-margin = 324 | format-offset = 325 | 326 | ; Enables pseudo-transparency for the bar 327 | ; If set to true the bar can be transparent without a compositor. 328 | pseudo-transparency = true 329 | 330 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 331 | ;; 332 | ;; ______ __ 333 | ;; / ____/___ / /___ __________ 334 | ;; / / / __ \/ / __ \/ ___/ ___/ 335 | ;; / /___/ /_/ / / /_/ / / (__ ) 336 | ;; \____/\____/_/\____/_/ /____/ 337 | ;; 338 | ;; Created By Aditya Shakya @adi1090x 339 | ;; 340 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 341 | 342 | [color] 343 | 344 | ;; Active Colors 345 | bg = #232832 346 | bg-alt = #1C2028 347 | fg = #EAEAEA 348 | fg-alt = #9C9C9C 349 | 350 | trans = #00000000 351 | white = #FFFFFF 352 | black = #000000 353 | 354 | ;; Material Colors 355 | 356 | red = #e53935 357 | pink = #d81b60 358 | purple = #8e24aa 359 | deep-purple = #5e35b1 360 | indigo = #3949ab 361 | blue = #1e88e5 362 | light-blue = #039be5 363 | cyan = #00acc1 364 | teal = #00897b 365 | green = #43a047 366 | light-green = #7cb342 367 | lime = #c0ca33 368 | yellow = #fdd835 369 | amber = #ffb300 370 | orange = #fb8c00 371 | deep-orange = #f4511e 372 | brown = #6d4c41 373 | grey = #757575 374 | blue-gray = #546e7a 375 | 376 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 377 | ;; 378 | ;; __ ___ __ __ 379 | ;; / |/ /___ ____/ /_ __/ /__ _____ 380 | ;; / /|_/ / __ \/ __ / / / / / _ \/ ___/ 381 | ;; / / / / /_/ / /_/ / /_/ / / __(__ ) 382 | ;; /_/ /_/\____/\__,_/\__,_/_/\___/____/ 383 | ;; 384 | ;; Created By Aditya Shakya @adi1090x 385 | ;; 386 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 387 | 388 | [module/alsa] 389 | type = internal/alsa 390 | 391 | ; You can find the different card numbers in `/proc/asound/cards` 392 | ;;master-soundcard = default 393 | ;;speaker-soundcard = default 394 | ;;headphone-soundcard = default 395 | 396 | ; Default: Master 397 | ;;master-mixer = Master 398 | 399 | ; Optionally define speaker and headphone mixers 400 | ; Default: none 401 | ;;speaker-mixer = Speaker 402 | ; Default: none 403 | ;;headphone-mixer = Headphone 404 | 405 | ; Default: 5 406 | ;;interval = 5 407 | 408 | ; Available tags: 409 | ; (default) 410 | ; 411 | ; 412 | format-volume = 413 | format-volume-background = ${root.background} 414 | format-volume-padding = 2 415 | 416 | ; Available tags: 417 | ; (default) 418 | ; 419 | ; 420 | format-muted = 421 | format-muted-background = ${color.bg-alt} 422 | format-muted-padding = 2 423 | 424 | ; Available tokens: 425 | ; %percentage% (default) 426 | label-volume = %percentage%% 427 | 428 | ; Available tokens: 429 | ; %percentage% (default 430 | label-muted = ﱝ 431 | label-muted-foreground = ${color.fg-alt} 432 | 433 | ramp-volume-0 =  434 | ramp-volume-1 =  435 | ramp-volume-2 =  436 | ramp-volume-3 =  437 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 438 | ; https://github.com/unode/polypomo/polypomo 439 | [module/polypomo] 440 | type = custom/script 441 | 442 | exec = ~/.config/polypomo/polypomo 443 | tail = true 444 | 445 | label = %output% 446 | format-background=${color.light-blue} 447 | 448 | click-left = ~/.config/polypomo/polypomo toggle 449 | click-right = ~/.config/polypomo/polypomo end 450 | click-middle = ~/.config/polypomo/polypomo lock 451 | scroll-up = ~/.config/polypomo/polypomo time +60 452 | scroll-down = ~/.config/polypomo/polypomo time -60 453 | 454 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 455 | ; https://github.com/mihirlad55/polybar-spotify-module 456 | [module/previous] 457 | type = custom/ipc 458 | format-font = 4 459 | ; Default 460 | hook-0 = echo "" 461 | ; When spotify active 462 | hook-1 = echo "Previous" 463 | click-left = "spotifyctl -q previous" 464 | 465 | 466 | [module/next] 467 | type = custom/ipc 468 | format-font = 4 469 | ; Default 470 | hook-0 = echo "" 471 | ; When spotify active 472 | hook-1 = echo "Next" 473 | click-left = "spotifyctl -q next" 474 | 475 | 476 | [module/playpause] 477 | type = custom/ipc 478 | format-font = 4 479 | ; Default 480 | hook-0 = echo "" 481 | ; Playing 482 | hook-1 = echo "Pause" 483 | ; Paused 484 | hook-2 = echo "Play" 485 | click-left = "spotifyctl -q playpause" 486 | 487 | 488 | [module/spotify] 489 | type = custom/ipc 490 | ; Default 491 | hook-0 = echo "" 492 | ; Playing/paused show song name and artist 493 | hook-1 = spotifyctl -q status --format '%artist%: %title%' 494 | 495 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 496 | 497 | [module/battery] 498 | type = internal/battery 499 | 500 | full-at = 99 501 | 502 | ; $ ls -1 /sys/class/power_supply/ 503 | battery = BAT0 504 | adapter = AC 505 | 506 | poll-interval = 2 507 | time-format = %H:%M 508 | 509 | ; Available tags: 510 | ; (default) 511 | ; 512 | ; 513 | ; 514 | format-charging = 515 | format-charging-background = ${color.bg-alt} 516 | format-charging-padding = 2 517 | 518 | ; Available tags: 519 | ; (default) 520 | ; 521 | ; 522 | ; 523 | format-discharging = 524 | format-discharging-background = ${root.background} 525 | format-discharging-padding = 2 526 | 527 | ; Available tags: 528 | ; (default) 529 | ; 530 | ; 531 | format-full = 532 | format-full-background = ${color.bg-alt} 533 | format-full-padding = 2 534 | 535 | ; Available tokens: 536 | ; %percentage% (default) 537 | ; %time% 538 | ; %consumption% (shows current charge rate in watts) 539 | label-charging = %percentage%% 540 | 541 | ; Available tokens: 542 | ; %percentage% (default) 543 | ; %time% 544 | ; %consumption% (shows current discharge rate in watts) 545 | label-discharging = %percentage%% 546 | 547 | ; Available tokens: 548 | ; %percentage% (default) 549 | ;label-full = Fully Charged 550 | label-full =  551 | label-full-foreground = ${color.green} 552 | 553 | ramp-capacity-0 =  554 | ramp-capacity-1 =  555 | ramp-capacity-2 =  556 | ramp-capacity-3 =  557 | ramp-capacity-4 =  558 | ramp-capacity-5 =  559 | ramp-capacity-6 =  560 | ramp-capacity-7 =  561 | ramp-capacity-8 =  562 | ramp-capacity-9 =  563 | 564 | animation-charging-0 =  565 | animation-charging-1 =  566 | animation-charging-2 =  567 | animation-charging-3 =  568 | animation-charging-4 =  569 | animation-charging-5 =  570 | animation-charging-6 =  571 | 572 | ; Framerate in milliseconds 573 | animation-charging-framerate = 750 574 | 575 | ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 576 | 577 | [module/date] 578 | type = internal/date 579 | 580 | interval = 1.0 581 | 582 | time = %I:%M %p 583 | ;;time-alt = %B %d, %Y 584 | 585 | format =