diff --git a/.config/X11/dwm-xinit b/.config/X11/dwm-xinit index 4975ce5..48a1d22 100644 --- a/.config/X11/dwm-xinit +++ b/.config/X11/dwm-xinit @@ -7,8 +7,8 @@ exec xrdb ~/.cache/wal/colors.Xresources & exec xrdb -merge ~/.config/Xresources & exec slstatus & exec picom -CG --config ~/.config/picom.conf & -exec xmodmap ~/.config/Xmodmap & -#exec setxkbmap -model -layout us,us -variant ,workman -option grp:lctrl_rshift_toggle & +#setxkbmap -model -layout us,us -variant ,workman -option grp:lctrl_rshift_toggle & +xmodmap ~/.config/Xmodmap & sleep 0.5s exec mpd & source ~/.config/env & @@ -21,7 +21,8 @@ umask 002 & eval $(keychain --absolute --dir "$XDG_RUNTIME_DIR"/keychain --eval --quiet id_ed25519) exec dstartup & exec xhost +si:localuser:"$USER" & -exec unclutter --timeouts 2 --start-hidden & +exec unclutter --timeout 2 --start-hidden & +exec toggle_touchpad & exec xsetroot -xcf /usr/share/icons/WhiteSur-cursors/cursors/left_ptr 24 & #exec xsnow & exec emacs --daemon & diff --git a/.config/alacritty.yml b/.config/alacritty.yml index 355a8e6..23878d8 100644 --- a/.config/alacritty.yml +++ b/.config/alacritty.yml @@ -33,12 +33,12 @@ window: # # Blank space added around the window in pixels. This padding is scaled # by DPI and the specified value is always added at both opposing sides. - #padding: - # x: 0 - # y: 0 + padding: + x: 3 + y: 3 # Spread additional padding evenly around the terminal content. - #dynamic_padding: false + dynamic_padding: true # Window decorations # diff --git a/.config/emacs/config.org b/.config/emacs/config.org index 3262c04..0cce597 100644 --- a/.config/emacs/config.org +++ b/.config/emacs/config.org @@ -93,7 +93,7 @@ Use =modus-vivendi= theme. (define-key global-map (kbd "") #'modus-themes-toggle) #+END_SRC - + Setup icons. #+BEGIN_SRC emacs-lisp @@ -567,15 +567,6 @@ Use =darkroom=. :config (org-roam-setup)) #+END_SRC -** =org-capture= -#+BEGIN_SRC emacs-lisp - (define-key global-map "\C-cc" 'org-capture) - (setq org-capture-templates - '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks") - "* TODO %?\n %i\n %a") - ("j" "Journal" entry (file+datetree "~/org/journal.org") - "* %?\nEntered on %U\n %i\n %a"))) -#+END_SRC ** =simple-httpd= #+BEGIN_SRC emacs-lisp diff --git a/.config/emacs/init.el b/.config/emacs/init.el index 1b94de2..9fadae0 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -26,9 +26,9 @@ '(awesome-tray-mode-line-inactive-color "#323232") '(company-quickhelp-color-background "#3E4452") '(company-quickhelp-color-foreground "#ABB2BF") - '(custom-enabled-themes '(modus-vivendi)) + '(custom-enabled-themes '(xresources)) '(custom-safe-themes - '("b89a4f5916c29a235d0600ad5a0849b1c50fab16c2c518e1d98f0412367e7f97" "0dd2666921bd4c651c7f8a724b3416e95228a13fca1aa27dc0022f4e023bf197" "b73a23e836b3122637563ad37ae8c7533121c2ac2c8f7c87b381dd7322714cd0" "d0fb0c463d5d61e93f920e0fd1aa4c023bf719874b4d08f7f473b46c4adc0682" "6fc03df7304728b1346091dd6737cb0379f348ddc9c307f8b410fba991b3e475" "9f1d0627e756e58e0263fe3f00b16d8f7b2aca0882faacdc20ddd56a95acb7c2" "7397cc72938446348521d8061d3f2e288165f65a2dbb6366bb666224de2629bb" default)) + '("e5dc5b39fecbeeb027c13e8bfbf57a865be6e0ed703ac1ffa96476b62d1fae84" "dad622637530638a2140b83812e159a06b4791eb2f67ffd4abb4ff671b062d0b" "aa72e5b41780bfff2ff55d0cc6fcd4b42153386088a4025fed606c1099c2d9b8" "5d6cc3e22172f051d68c0c95d79f3dff0e800f2d107f6f6b9220ed5380285c50" "b89a4f5916c29a235d0600ad5a0849b1c50fab16c2c518e1d98f0412367e7f97" "0dd2666921bd4c651c7f8a724b3416e95228a13fca1aa27dc0022f4e023bf197" "b73a23e836b3122637563ad37ae8c7533121c2ac2c8f7c87b381dd7322714cd0" "d0fb0c463d5d61e93f920e0fd1aa4c023bf719874b4d08f7f473b46c4adc0682" "6fc03df7304728b1346091dd6737cb0379f348ddc9c307f8b410fba991b3e475" "9f1d0627e756e58e0263fe3f00b16d8f7b2aca0882faacdc20ddd56a95acb7c2" "7397cc72938446348521d8061d3f2e288165f65a2dbb6366bb666224de2629bb" default)) '(exwm-floating-border-color "#646464") '(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-fringe-red)) '(flymake-note-bitmap '(exclamation-mark modus-themes-fringe-cyan)) @@ -58,7 +58,7 @@ '(ibuffer-title-face 'default) '(org-src-block-faces 'nil) '(package-selected-packages - '(cyberpunk-theme one-themes kotlin-mode good-scroll org-contrib borg consult general emmet-mode web-mode embark-consult marginalia orderless vertico exec-path-from-shell exec-patch-from-shell uniquify simple-httpd auctex dap-mode lsp-mode focus avy elfeed monokai-theme use-package magit)) + '(xresources-theme 2048-game cyberpunk-theme one-themes kotlin-mode good-scroll org-contrib borg consult general emmet-mode web-mode embark-consult marginalia orderless vertico exec-path-from-shell exec-patch-from-shell uniquify simple-httpd auctex dap-mode lsp-mode focus avy elfeed monokai-theme use-package magit)) '(pdf-view-midnight-colors '("#ffffff" . "#100f10")) '(vc-annotate-background nil) '(vc-annotate-background-mode nil) @@ -82,6 +82,11 @@ (340 . "#00bcff") (360 . "#b6a0ff"))) '(vc-annotate-very-old-color nil) + '(widget-link-prefix " ") + '(widget-link-suffix " ") + '(widget-mouse-face '(highlight widget-button)) + '(widget-push-button-prefix " ") + '(widget-push-button-suffix " ") '(xterm-color-names ["black" "#ff8059" "#44bc44" "#d0bc00" "#2fafff" "#feacd0" "#00d3d0" "gray65"]) '(xterm-color-names-bright diff --git a/.local/bin/demoji b/.local/bin/demoji index baae2a1..fcec777 100755 --- a/.local/bin/demoji +++ b/.local/bin/demoji @@ -1,3 +1,18 @@ #!/bin/bash -cat ~/.local/share/demoji/emojidb | dmenu -l 10 -p "Search for your emoji:" | awk '{ print $2 }' | dmenu -l 10 -p "Pick your emoji:" | xclip -sel clip +# The famous "get a menu of emojis to copy" script. + +# Get user selection via dmenu from emoji file. +chosen=$(cut -d ';' -f1 ~/.local/share/emoji | dmenu -i -l 30 | sed "s/ .*//") + +# Exit if none chosen. +[ -z "$chosen" ] && exit + +# If you run this command with an argument, it will automatically insert the +# character. Otherwise, show a message that the emoji has been copied. +if [ -n "$1" ]; then + xdotool type "$chosen" +else + printf "$chosen" | xclip -selection clipboard + notify-send "'$chosen' copied to clipboard." & +fi diff --git a/.local/bin/dweb b/.local/bin/dweb index 52e8bcb..c51bc7e 100755 --- a/.local/bin/dweb +++ b/.local/bin/dweb @@ -10,13 +10,14 @@ search_engine='https://duckduckgo.com/?q=' # Set menu options: SearchWeb='0. Search the web.' -OpenBrowser='1. Open a browser.' -MenuOpen='2. Open a bookmark.' -MenuSave='3. Create new bookmark.' -RunFirefox='4. Run Firejailed Firefox.' +OpenLink='1. Open a link.' +OpenBrowser='2. Open a browser.' +MenuOpen='3. Open a bookmark.' +MenuSave='4. Create new bookmark.' +RunFirefox='5. Run Firejailed Firefox.' -ChosenMenu=$(printf '%s\n%s\n%s\n%s\n%s' \ - "$SearchWeb" "$OpenBrowser" "$MenuOpen" "$MenuSave" "$RunFirefox" \ +ChosenMenu=$(printf '%s\n%s\n%s\n%s\n%s\n%s' \ + "$SearchWeb" "$OpenLink" "$OpenBrowser" "$MenuOpen" "$MenuSave" "$RunFirefox" \ | dmenu -i -l 10 -p "$ScriptName:") # Open browser diff --git a/.local/bin/lfub b/.local/bin/lfub new file mode 100755 index 0000000..9012f50 --- /dev/null +++ b/.local/bin/lfub @@ -0,0 +1,24 @@ +#!/bin/sh + +# This is a wrapper script for lb that allows it to create image previews with +# ueberzug. This works in concert with the lf configuration file and the +# lf-cleaner script. + +set -e + +cleanup() { + exec 3>&- + rm "$FIFO_UEBERZUG" +} + +if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then + lf "$@" +else + [ ! -d "$HOME/.cache/lf" ] && mkdir -p "$HOME/.cache/lf" + export FIFO_UEBERZUG="$HOME/.cache/lf/ueberzug-$$" + mkfifo "$FIFO_UEBERZUG" + ueberzug layer -s <"$FIFO_UEBERZUG" -p json & + exec 3>"$FIFO_UEBERZUG" + trap cleanup HUP INT QUIT TERM PWR EXIT + lf "$@" 3>&- +fi diff --git a/.local/bin/mid3cp b/.local/bin/mid3cp new file mode 100755 index 0000000..5b7e70d --- /dev/null +++ b/.local/bin/mid3cp @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mutagen._tools.mid3cp import entry_point +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(entry_point()) diff --git a/.local/bin/mid3iconv b/.local/bin/mid3iconv new file mode 100755 index 0000000..e7eeee9 --- /dev/null +++ b/.local/bin/mid3iconv @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mutagen._tools.mid3iconv import entry_point +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(entry_point()) diff --git a/.local/bin/mid3v2 b/.local/bin/mid3v2 new file mode 100755 index 0000000..dc565a0 --- /dev/null +++ b/.local/bin/mid3v2 @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mutagen._tools.mid3v2 import entry_point +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(entry_point()) diff --git a/.local/bin/moggsplit b/.local/bin/moggsplit new file mode 100755 index 0000000..c7f76f3 --- /dev/null +++ b/.local/bin/moggsplit @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mutagen._tools.moggsplit import entry_point +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(entry_point()) diff --git a/.local/bin/mutagen-inspect b/.local/bin/mutagen-inspect new file mode 100755 index 0000000..76508b6 --- /dev/null +++ b/.local/bin/mutagen-inspect @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mutagen._tools.mutagen_inspect import entry_point +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(entry_point()) diff --git a/.local/bin/mutagen-pony b/.local/bin/mutagen-pony new file mode 100755 index 0000000..992f7c6 --- /dev/null +++ b/.local/bin/mutagen-pony @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mutagen._tools.mutagen_pony import entry_point +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(entry_point()) diff --git a/.local/bin/yt-dlp b/.local/bin/yt-dlp new file mode 100755 index 0000000..5a89f64 --- /dev/null +++ b/.local/bin/yt-dlp @@ -0,0 +1,8 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from yt_dlp import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/.local/bin/z.sh b/.local/bin/z.sh deleted file mode 100644 index 13008a6..0000000 --- a/.local/bin/z.sh +++ /dev/null @@ -1,263 +0,0 @@ -# Copyright (c) 2009 rupa deadwyler. Licensed under the WTFPL license, Version 2 - -# maintains a jump-list of the directories you actually use -# -# INSTALL: -# * put something like this in your .bashrc/.zshrc: -# . /path/to/z.sh -# * cd around for a while to build up the db -# * PROFIT!! -# * optionally: -# set $_Z_CMD in .bashrc/.zshrc to change the command (default z). -# set $_Z_DATA in .bashrc/.zshrc to change the datafile (default ~/.z). -# set $_Z_MAX_SCORE lower to age entries out faster (default 9000). -# set $_Z_NO_RESOLVE_SYMLINKS to prevent symlink resolution. -# set $_Z_NO_PROMPT_COMMAND if you're handling PROMPT_COMMAND yourself. -# set $_Z_EXCLUDE_DIRS to an array of directories to exclude. -# set $_Z_OWNER to your username if you want use z while sudo with $HOME kept -# -# USE: -# * z foo # cd to most frecent dir matching foo -# * z foo bar # cd to most frecent dir matching foo and bar -# * z -r foo # cd to highest ranked dir matching foo -# * z -t foo # cd to most recently accessed dir matching foo -# * z -l foo # list matches instead of cd -# * z -e foo # echo the best match, don't cd -# * z -c foo # restrict matches to subdirs of $PWD -# * z -x # remove the current directory from the datafile -# * z -h # show a brief help message - -[ -d "${_Z_DATA:-$HOME/.z}" ] && { - echo "ERROR: z.sh's datafile (${_Z_DATA:-$HOME/.z}) is a directory." -} - -_z() { - - local datafile="${_Z_DATA:-$HOME/.z}" - - # if symlink, dereference - [ -h "$datafile" ] && datafile=$(readlink "$datafile") - - # bail if we don't own ~/.z and $_Z_OWNER not set - [ -z "$_Z_OWNER" -a -f "$datafile" -a ! -O "$datafile" ] && return - - _z_dirs () { - local line - while read line; do - # only count directories - [ -d "${line%%\|*}" ] && echo "$line" - done < "$datafile" - return 0 - } - - # add entries - if [ "$1" = "--add" ]; then - shift - - # $HOME isn't worth matching - [ "$*" = "$HOME" ] && return - - # don't track excluded directory trees - local exclude - for exclude in "${_Z_EXCLUDE_DIRS[@]}"; do - case "$*" in "$exclude*") return;; esac - done - - # maintain the data file - local tempfile="$datafile.$RANDOM" - local score=${_Z_MAX_SCORE:-9000} - _z_dirs | awk -v path="$*" -v now="$(date +%s)" -v score=$score -F"|" ' - BEGIN { - rank[path] = 1 - time[path] = now - } - $2 >= 1 { - # drop ranks below 1 - if( $1 == path ) { - rank[$1] = $2 + 1 - time[$1] = now - } else { - rank[$1] = $2 - time[$1] = $3 - } - count += $2 - } - END { - if( count > score ) { - # aging - for( x in rank ) print x "|" 0.99*rank[x] "|" time[x] - } else for( x in rank ) print x "|" rank[x] "|" time[x] - } - ' 2>/dev/null >| "$tempfile" - # do our best to avoid clobbering the datafile in a race condition. - if [ $? -ne 0 -a -f "$datafile" ]; then - env rm -f "$tempfile" - else - [ "$_Z_OWNER" ] && chown $_Z_OWNER:"$(id -ng $_Z_OWNER)" "$tempfile" - env mv -f "$tempfile" "$datafile" || env rm -f "$tempfile" - fi - - # tab completion - elif [ "$1" = "--complete" -a -s "$datafile" ]; then - _z_dirs | awk -v q="$2" -F"|" ' - BEGIN { - q = substr(q, 3) - if( q == tolower(q) ) imatch = 1 - gsub(/ /, ".*", q) - } - { - if( imatch ) { - if( tolower($1) ~ q ) print $1 - } else if( $1 ~ q ) print $1 - } - ' 2>/dev/null - - else - # list/go - local echo fnd last list opt typ - while [ "$1" ]; do case "$1" in - --) while [ "$1" ]; do shift; fnd="$fnd${fnd:+ }$1";done;; - -*) opt=${1:1}; while [ "$opt" ]; do case ${opt:0:1} in - c) fnd="^$PWD $fnd";; - e) echo=1;; - h) echo "${_Z_CMD:-z} [-cehlrtx] args" >&2; return;; - l) list=1;; - r) typ="rank";; - t) typ="recent";; - x) sed -i -e "\:^${PWD}|.*:d" "$datafile";; - esac; opt=${opt:1}; done;; - *) fnd="$fnd${fnd:+ }$1";; - esac; last=$1; [ "$#" -gt 0 ] && shift; done - [ "$fnd" -a "$fnd" != "^$PWD " ] || list=1 - - # if we hit enter on a completion just go there - case "$last" in - # completions will always start with / - /*) [ -z "$list" -a -d "$last" ] && builtin cd "$last" && return;; - esac - - # no file yet - [ -f "$datafile" ] || return - - local cd - cd="$( < <( _z_dirs ) awk -v t="$(date +%s)" -v list="$list" -v typ="$typ" -v q="$fnd" -F"|" ' - function frecent(rank, time) { - # relate frequency and time - dx = t - time - return int(10000 * rank * (3.75/((0.0001 * dx + 1) + 0.25))) - } - function output(matches, best_match, common) { - # list or return the desired directory - if( list ) { - if( common ) { - printf "%-10s %s\n", "common:", common > "/dev/stderr" - } - cmd = "sort -n >&2" - for( x in matches ) { - if( matches[x] ) { - printf "%-10s %s\n", matches[x], x | cmd - } - } - } else { - if( common && !typ ) best_match = common - print best_match - } - } - function common(matches) { - # find the common root of a list of matches, if it exists - for( x in matches ) { - if( matches[x] && (!short || length(x) < length(short)) ) { - short = x - } - } - if( short == "/" ) return - for( x in matches ) if( matches[x] && index(x, short) != 1 ) { - return - } - return short - } - BEGIN { - gsub(" ", ".*", q) - hi_rank = ihi_rank = -9999999999 - } - { - if( typ == "rank" ) { - rank = $2 - } else if( typ == "recent" ) { - rank = $3 - t - } else rank = frecent($2, $3) - if( $1 ~ q ) { - matches[$1] = rank - } else if( tolower($1) ~ tolower(q) ) imatches[$1] = rank - if( matches[$1] && matches[$1] > hi_rank ) { - best_match = $1 - hi_rank = matches[$1] - } else if( imatches[$1] && imatches[$1] > ihi_rank ) { - ibest_match = $1 - ihi_rank = imatches[$1] - } - } - END { - # prefer case sensitive - if( best_match ) { - output(matches, best_match, common(matches)) - exit - } else if( ibest_match ) { - output(imatches, ibest_match, common(imatches)) - exit - } - exit(1) - } - ')" - - if [ "$?" -eq 0 ]; then - if [ "$cd" ]; then - if [ "$echo" ]; then echo "$cd"; else builtin cd "$cd"; fi - fi - else - return $? - fi - fi -} - -alias ${_Z_CMD:-z}='_z 2>&1' - -[ "$_Z_NO_RESOLVE_SYMLINKS" ] || _Z_RESOLVE_SYMLINKS="-P" - -if type compctl >/dev/null 2>&1; then - # zsh - [ "$_Z_NO_PROMPT_COMMAND" ] || { - # populate directory list, avoid clobbering any other precmds. - if [ "$_Z_NO_RESOLVE_SYMLINKS" ]; then - _z_precmd() { - (_z --add "${PWD:a}" &) - : $RANDOM - } - else - _z_precmd() { - (_z --add "${PWD:A}" &) - : $RANDOM - } - fi - [[ -n "${precmd_functions[(r)_z_precmd]}" ]] || { - precmd_functions[$(($#precmd_functions+1))]=_z_precmd - } - } - _z_zsh_tab_completion() { - # tab completion - local compl - read -l compl - reply=(${(f)"$(_z --complete "$compl")"}) - } - compctl -U -K _z_zsh_tab_completion _z -elif type complete >/dev/null 2>&1; then - # bash - # tab completion - complete -o filenames -C '_z --complete "$COMP_LINE"' ${_Z_CMD:-z} - [ "$_Z_NO_PROMPT_COMMAND" ] || { - # populate directory list. avoid clobbering other PROMPT_COMMANDs. - grep "_z --add" <<< "$PROMPT_COMMAND" >/dev/null || { - PROMPT_COMMAND="$PROMPT_COMMAND"$'\n''(_z --add "$(command pwd '$_Z_RESOLVE_SYMLINKS' 2>/dev/null)" 2>/dev/null &);' - } - } -fi diff --git a/.zprofile b/.zprofile index 5c75564..a6989fb 100755 --- a/.zprofile +++ b/.zprofile @@ -39,3 +39,82 @@ done #if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec ssh-agent sx sh ~/.config/X11/dwm-xinit; fi #if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec ssh-agent startx ~/.config/X11/dwm-xinit; fi + +# This is the list for lf icons: +export LF_ICONS="di=📁:\ +fi=📃:\ +tw=🤝:\ +ow=📂:\ +ln=⛓:\ +or=❌:\ +ex=🎯:\ +*.txt=✍:\ +*.mom=✍:\ +*.me=✍:\ +*.ms=✍:\ +*.png=🖼:\ +*.webp=🖼:\ +*.ico=🖼:\ +*.jpg=📸:\ +*.jpe=📸:\ +*.jpeg=📸:\ +*.gif=🖼:\ +*.svg=🗺:\ +*.tif=🖼:\ +*.tiff=🖼:\ +*.xcf=🖌:\ +*.html=🌎:\ +*.xml=📰:\ +*.gpg=🔒:\ +*.css=🎨:\ +*.pdf=📚:\ +*.djvu=📚:\ +*.epub=📚:\ +*.csv=📓:\ +*.xlsx=📓:\ +*.tex=📜:\ +*.md=📘:\ +*.r=📊:\ +*.R=📊:\ +*.rmd=📊:\ +*.Rmd=📊:\ +*.m=📊:\ +*.mp3=🎵:\ +*.opus=🎵:\ +*.ogg=🎵:\ +*.m4a=🎵:\ +*.flac=🎼:\ +*.wav=🎼:\ +*.mkv=🎥:\ +*.mp4=🎥:\ +*.webm=🎥:\ +*.mpeg=🎥:\ +*.avi=🎥:\ +*.mov=🎥:\ +*.mpg=🎥:\ +*.wmv=🎥:\ +*.m4b=🎥:\ +*.flv=🎥:\ +*.zip=📦:\ +*.rar=📦:\ +*.7z=📦:\ +*.tar.gz=📦:\ +*.z64=🎮:\ +*.v64=🎮:\ +*.n64=🎮:\ +*.gba=🎮:\ +*.nes=🎮:\ +*.gdi=🎮:\ +*.1=ℹ:\ +*.nfo=ℹ:\ +*.info=ℹ:\ +*.log=📙:\ +*.iso=📀:\ +*.img=📀:\ +*.bib=🎓:\ +*.ged=👪:\ +*.part=💔:\ +*.torrent=🔽:\ +*.jar=♨:\ +*.java=♨:\ +"