summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.config/dunst/dunstrc149
-rwxr-xr-x.config/fontconfig/fonts.conf1
-rwxr-xr-x.config/lf/cleaner4
-rw-r--r--.config/lf/lfrc57
-rwxr-xr-x.config/lf/scope88
m---------.config/mpv/script_modules/mpvSockets0
-rw-r--r--.config/mpv/scripts/modules.lua4
m---------.config/mpv/scripts/mpvSockets0
-rw-r--r--.config/newsboat/config2
-rw-r--r--.config/newsboat/urls6
-rw-r--r--.config/nvim/init.vim17
-rwxr-xr-x.config/pinentry/preexec5
-rw-r--r--.config/pipewire/pipewire.conf247
-rw-r--r--.config/shell/aliasrc16
-rw-r--r--.config/shell/bm-dirs1
-rwxr-xr-x.config/sxiv/exec/key-handler8
-rwxr-xr-x.config/wal/postrun31
-rw-r--r--.config/wal/templates/dunstrc157
-rwxr-xr-x.config/x11/xprofile22
-rw-r--r--.config/zsh/.zshrc15
-rw-r--r--.gitmodules4
l---------.gtkrc-2.01
-rwxr-xr-x.local/bin/booksplit45
-rwxr-xr-x.local/bin/compiler6
-rwxr-xr-x.local/bin/cron/checkup2
-rwxr-xr-x.local/bin/cron/newsup4
-rwxr-xr-x.local/bin/dmenuhandler14
-rwxr-xr-x.local/bin/dmenumount8
-rwxr-xr-x.local/bin/dmenurecord4
-rwxr-xr-x.local/bin/dmenuumount2
-rwxr-xr-x.local/bin/ext45
-rwxr-xr-x.local/bin/getbib2
-rwxr-xr-x.local/bin/ifinstalled7
-rwxr-xr-x.local/bin/lf-select9
-rwxr-xr-x.local/bin/lfub24
-rwxr-xr-x.local/bin/linkhandler21
-rwxr-xr-x.local/bin/maimpick16
-rwxr-xr-x[-rw-r--r--].local/bin/noisereduce6
-rwxr-xr-x.local/bin/opout2
-rwxr-xr-x.local/bin/otp53
-rwxr-xr-x.local/bin/peertubetorrent6
-rwxr-xr-x.local/bin/qndl2
-rwxr-xr-x.local/bin/queueandnotify4
-rwxr-xr-x.local/bin/remaps12
-rwxr-xr-x.local/bin/samedir6
-rwxr-xr-x.local/bin/setbg15
-rwxr-xr-x.local/bin/shortcuts25
-rwxr-xr-x.local/bin/statusbar/sb-battery7
-rwxr-xr-x.local/bin/statusbar/sb-clock2
-rwxr-xr-x.local/bin/statusbar/sb-doppler414
-rwxr-xr-x.local/bin/statusbar/sb-internet10
-rwxr-xr-x.local/bin/statusbar/sb-mailbox2
-rwxr-xr-x.local/bin/statusbar/sb-music2
-rwxr-xr-x.local/bin/statusbar/sb-nettraf4
-rwxr-xr-x.local/bin/statusbar/sb-price26
-rwxr-xr-x.local/bin/statusbar/sb-volume6
-rwxr-xr-x.local/bin/sysact34
-rwxr-xr-x.local/bin/torwrap2
-rwxr-xr-x.local/bin/tutorialvids34
-rw-r--r--.local/share/applications/file.desktop2
-rw-r--r--.local/share/larbs/emoji3223
-rw-r--r--.local/share/larbs/getkeys/ranger35
-rw-r--r--README.md4
63 files changed, 2568 insertions, 2414 deletions
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
index abf5586..d03af62 100644
--- a/.config/dunst/dunstrc
+++ b/.config/dunst/dunstrc
@@ -1,152 +1,27 @@
[global]
monitor = 0
follow = keyboard
- geometry = "350x5-0+24"
- indicate_hidden = yes
- shrink = yes
- transparency = 20
- notification_height = 0
- separator_height = 2
- padding = 0
- horizontal_padding = 8
- frame_width = 3
- frame_color = "#282828"
-
- # Define a color for the separator.
- # possible values are:
- # * auto: dunst tries to find a color fitting to the background;
- # * foreground: use the same color as the foreground;
- # * frame: use the same color as the frame;
- # * anything else will be interpreted as a X color.
- separator_color = frame
-
- # Sort messages by urgency.
- sort = yes
-
- idle_threshold = 120
- font = Monospace 14
- line_height = 0
- markup = full
-
- # The format of the message. Possible variables are:
- # %a appname
- # %s summary
- # %b body
- # %i iconname (including its path)
- # %I iconname (without its path)
- # %p progress value if set ([ 0%] to [100%]) or nothing
- # %n progress value if set without any extra characters
- # %% Literal %
- # Markup is allowed
+ width = 370
+ height = 350
+ offset = 0x19
+ padding = 2
+ horizontal_padding = 2
+ transparency = 25
+ font = Monospace 12
format = "<b>%s</b>\n%b"
- alignment = left
- show_age_threshold = 60
- word_wrap = yes
- ellipsize = middle
- ignore_newline = no
- stack_duplicates = true
- hide_duplicate_count = true
- show_indicators = yes
- icon_position = left
- max_icon_size = 40
- #icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/share/icons/Adwaita/256x256/status/
- sticky_history = yes
- history_length = 20
- dmenu = /usr/bin/dmenu -p dunst:
- browser = /usr/bin/firefox -new-tab
-
- # Always run rule-defined scripts, even if the notification is suppressed
- always_run_script = true
-
- title = Dunst
- class = Dunst
- startup_notification = false
- force_xinerama = false
-[experimental]
- per_monitor_dpi = false
-
-[shortcuts]
- close = ctrl+space
- close_all = ctrl+shift+space
- history = ctrl+grave
- context = ctrl+shift+period
-
[urgency_low]
- # IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the "#" and following would be interpreted as a comment.
- background = "#282828"
+ background = "#1d2021"
foreground = "#928374"
- timeout = 5
- # Icon for notifications with low urgency, uncomment to enable
- #icon = /path/to/icon
+ timeout = 3
[urgency_normal]
- background = "#458588"
foreground = "#ebdbb2"
+ background = "#458588"
timeout = 5
[urgency_critical]
- background = "#cc2421"
+ background = "#1cc24d"
foreground = "#ebdbb2"
frame_color = "#fabd2f"
- timeout = 0
-
-# Every section that isn't one of the above is interpreted as a rules to
-# override settings for certain messages.
-# Messages can be matched by "appname", "summary", "body", "icon", "category",
-# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
-# "background", "new_icon" and "format".
-# Shell-like globbing will get expanded.
-#
-# SCRIPTING
-# You can specify a script that gets run when the rule matches by
-# setting the "script" option.
-# The script will be called as follows:
-# script appname summary body icon urgency
-# where urgency can be "LOW", "NORMAL" or "CRITICAL".
-#
-# NOTE: if you don't want a notification to be displayed, set the format
-# to "".
-# NOTE: It might be helpful to run dunst -print in a terminal in order
-# to find fitting options for rules.
-
-#[espeak]
-# summary = "*"
-# script = dunst_espeak.sh
-
-#[script-test]
-# summary = "*script*"
-# script = dunst_test.sh
-
-#[ignore]
-# # This notification will not be displayed
-# summary = "foobar"
-# format = ""
-
-#[history-ignore]
-# # This notification will not be saved in history
-# summary = "foobar"
-# history_ignore = yes
-
-#[signed_on]
-# appname = Pidgin
-# summary = "*signed on*"
-# urgency = low
-#
-#[signed_off]
-# appname = Pidgin
-# summary = *signed off*
-# urgency = low
-#
-#[says]
-# appname = Pidgin
-# summary = *says*
-# urgency = critical
-#
-#[twitter]
-# appname = Pidgin
-# summary = *twitter.com*
-# urgency = normal
-#
-# vim: ft=cfg
+ timeout = 10
diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf
index 2d58803..be47e01 100755
--- a/.config/fontconfig/fonts.conf
+++ b/.config/fontconfig/fonts.conf
@@ -30,6 +30,7 @@
<prefer>
<family>Noto Sans Mono</family>
<family>Liberation Mono</family>
+ <family>Braille</family>
</prefer>
</alias>
</fontconfig>
diff --git a/.config/lf/cleaner b/.config/lf/cleaner
new file mode 100755
index 0000000..a184d84
--- /dev/null
+++ b/.config/lf/cleaner
@@ -0,0 +1,4 @@
+#!/bin/sh
+if [ -n "$FIFO_UEBERZUG" ]; then
+ printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG"
+fi
diff --git a/.config/lf/lfrc b/.config/lf/lfrc
index b7e8a3c..315ac3f 100644
--- a/.config/lf/lfrc
+++ b/.config/lf/lfrc
@@ -1,28 +1,49 @@
# Luke's lf settings
+
+# Note on Image Previews
+# For those wanting image previews, like this system, there are four steps to
+# set it up. These are done automatically for LARBS users, but I will state
+# them here for others doing it manually.
+#
+# 1. ueberzug must be installed.
+# 2. The scope file (~/.config/lf/scope for me), must have a command similar to
+# mine to generate ueberzug images.
+# 3. A `set cleaner` line as below is a cleaner script.
+# 4. lf should be started through a wrapper script (~/.local/bin/lfub for me)
+# that creates the environment for ueberzug. This command can be be aliased
+# in your shellrc (`alias lf="lfub") or if set to a binding, should be
+# called directly instead of normal lf.
+
# Basic vars
-set shell bash
set shellopts '-eu'
set ifs "\n"
set scrolloff 10
set icons
set period 1
set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml"
-
-# Vars that depend on environmental variables
-$lf -remote "send $id set previewer ${XDG_CONFIG_HOME:-$HOME/.config}/lf/scope"
+set cleaner '~/.config/lf/cleaner'
+set previewer '~/.config/lf/scope'
# cmds/functions
cmd open ${{
- case $(file --mime-type $f -b) in
- image/vnd.djvu|application/pdf|application/octet-stream) setsid -f zathura $fx >/dev/null 2>&1 ;;
- text/*) $EDITOR $fx;;
+ case $(file --mime-type "$(readlink -f $f)" -b) in
+ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;;
+ image/vnd.djvu|application/pdf|application/octet-stream|application/postscript) setsid -f zathura $fx >/dev/null 2>&1 ;;
+ text/*|application/json|inode/x-empty) $EDITOR $fx;;
image/x-xcf) setsid -f gimp $f >/dev/null 2>&1 ;;
image/svg+xml) display -- $f ;;
- image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|tif\|ico\)\(_large\)*$" | sxiv -aio 2>/dev/null | lf-select ;;
+ image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|webp\|tif\|ico\)\(_large\)*$" |
+ setsid -f sxiv -aio 2>/dev/null | while read -r file; do
+ [ -z "$file" ] && continue
+ lf -remote "send select \"$file\""
+ lf -remote "send toggle"
+ done &
+ ;;
audio/*) mpv --audio-display=no $f ;;
video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;;
application/pdf|application/vnd*|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;;
+ application/pgp-encrypted) $EDITOR $fx ;;
*) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;;
esac
}}
@@ -35,7 +56,7 @@ cmd extract ${{
printf "%s\n\t" "$fx"
printf "extract?[y/N]"
read ans
- [ $ans = "y" ] && ext $fx
+ [ $ans = "y" ] && aunpack $fx
}}
cmd delete ${{
@@ -51,7 +72,7 @@ cmd moveto ${{
clear; tput cup $(($(tput lines)/3)); tput bold
set -f
clear; echo "Move to where?"
- dest="$(cut -d' ' -f2- ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|' )" &&
+ dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" &&
for x in $fx; do
eval mv -iv \"$x\" \"$dest\"
done &&
@@ -62,7 +83,7 @@ cmd copyto ${{
clear; tput cup $(($(tput lines)/3)); tput bold
set -f
clear; echo "Copy to where?"
- dest="$(cut -d' ' -f2- ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|' )" &&
+ dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" &&
for x in $fx; do
eval cp -ivr \"$x\" \"$dest\"
done &&
@@ -73,8 +94,8 @@ cmd setbg "$1"
cmd bulkrename $vidir
# Bindings
-map <c-f> $lf -remote "send $id select '$(fzf)'"
-map J $lf -remote "send $id cd $(cut -d' ' -f2 ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)"
+map <c-f> $lf -remote "send $id select \"$(fzf)\""
+map J $lf -remote "send $id cd $(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)"
map gh
map g top
map D delete
@@ -93,8 +114,8 @@ map O $mimeopen --ask $f
map A rename # at the very end
map c push A<c-u> # new rename
map I push A<c-a> # at the very beginning
-map i push A<a-b><a-b><a-f> # before extention
-map a push A<a-b> # after extention
+map i push A<a-b><a-b><a-f> # before extension
+map a push A<a-b> # after extension
map B bulkrename
map b $setbg $f
@@ -102,5 +123,9 @@ map <c-e> down
map <c-y> up
map V push :!nvim<space>
+map W $setsid -f $TERMINAL >/dev/null 2>&1
+
+map Y $printf "%s" "$fx" | xclip -selection clipboard
+
# Source Bookmarks
-source "~/.config/lf/shortcutrc" \ No newline at end of file
+source "~/.config/lf/shortcutrc"
diff --git a/.config/lf/scope b/.config/lf/scope
index 45f9f33..180c294 100755
--- a/.config/lf/scope
+++ b/.config/lf/scope
@@ -1,58 +1,44 @@
-#!/bin/bash
+#!/bin/sh
-set -C -f -u
-#IFS=$'\n'
-IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
-
-# ANSI color codes are supported.
-# STDIN is disabled, so interactive scripts won't work properly
-
-# This script is considered a configuration file and must be updated manually.
-
-# Meanings of exit codes:
-# code | meaning | action of ranger
-# -----+------------+-------------------------------------------
-# 0 | success | Display stdout as preview
-# 1 | no preview | Display no preview at all
-# 2 | plain text | Display the plain content of the file
-
-# Script arguments
-FILE_PATH="${1}" # Full path of the highlighted file
-HEIGHT="${2}"
+# File preview handler for lf.
-#FILE_EXTENSION="${FILE_PATH##*.}"
-#FILE_EXTENSION_LOWER=$(echo ${FILE_EXTENSION} | tr '[:upper:]' '[:lower:]')
-
-# Settings
-HIGHLIGHT_SIZE_MAX=262143 # 256KiB
-HIGHLIGHT_TABWIDTH=8
-HIGHLIGHT_STYLE='pablo'
+set -C -f
+IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
+image() {
+ if [ -f "$1" ] && [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then
+ printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG"
+ else
+ mediainfo "$6"
+ fi
+}
-handle_mime() {
- local mimetype="${1}"
- case "${mimetype}" in
- text/html) w3m -dump "${FILE_PATH}" ;;
- text/troff) man ./ "${FILE_PATH}" | col -b ;;
- text/* | */xml)
- if [ "$( stat --printf='%s' -- "${FILE_PATH}" )" -gt "${HIGHLIGHT_SIZE_MAX}" ]; then
- exit 2
- fi
- if [ "$( tput colors )" -ge 256 ]; then
- local highlight_format='xterm256'
- else
- local highlight_format='ansi'
- fi
- highlight --replace-tabs="${HIGHLIGHT_TABWIDTH}" --out-format="${highlight_format}" \
- --style="${HIGHLIGHT_STYLE}" --force -- "${FILE_PATH}" ;;
- application/zip) atool --list -- "${FILE_PATH}" ;;
- image/*) chafa --fill=block --symbols=block -c 256 -s 80x"${HEIGHT}" "${FILE_PATH}" || exit 1;;
- video/* | audio/*|application/octet-stream) mediainfo "${FILE_PATH}" || exit 1;;
- */pdf) pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - ;;
- *opendocument*) odt2txt "${FILE_PATH}" ;;
- esac
+ifub() {
+ [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1
}
-MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )"
-handle_mime "${MIMETYPE}"
+# Note that the cache file name is a function of file information, meaning if
+# an image appears in multiple places across the machine, it will not have to
+# be regenerated once seen.
+
+case "$(file --dereference --brief --mime-type -- "$1")" in
+ image/*) image "$1" "$2" "$3" "$4" "$5" "$1" ;;
+ text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
+ text/troff) man ./ "$1" | col -b ;;
+ text/* | */xml | application/json) bat --terminal-width "$(($4-2))" -f "$1" ;;
+ application/zip) atool --list -- "$1" ;;
+ audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
+ video/* )
+ CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
+ [ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
+ image "$CACHE" "$2" "$3" "$4" "$5" "$1"
+ ;;
+ */pdf)
+ CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
+ [ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
+ image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
+ ;;
+ *opendocument*) odt2txt "$1" ;;
+ application/pgp-encrypted) gpg -d -- "$1" ;;
+esac
exit 1
diff --git a/.config/mpv/script_modules/mpvSockets b/.config/mpv/script_modules/mpvSockets
new file mode 160000
+Subproject be9b7ca84456466e54331bab59441ac207659c1
diff --git a/.config/mpv/scripts/modules.lua b/.config/mpv/scripts/modules.lua
index 37b69b3..703f372 100644
--- a/.config/mpv/scripts/modules.lua
+++ b/.config/mpv/scripts/modules.lua
@@ -1,3 +1,3 @@
-local mpv_scripts_dir_path = os.getenv("HOME") .. "/.config/mpv/scripts/"
-function load(relative_path) dofile(mpv_scripts_dir_path .. relative_path) end
+local mpv_config_dir_path = require("mp").command_native({"expand-path", "~~/"})
+function load(relative_path) dofile(mpv_config_dir_path .. "/script_modules/" .. relative_path) end
load("mpvSockets/mpvSockets.lua")
diff --git a/.config/mpv/scripts/mpvSockets b/.config/mpv/scripts/mpvSockets
deleted file mode 160000
-Subproject 8415a08d99a46213c918613cfe1e088071018db
diff --git a/.config/newsboat/config b/.config/newsboat/config
index 69d8960..b7a78da 100644
--- a/.config/newsboat/config
+++ b/.config/newsboat/config
@@ -32,7 +32,7 @@ color article white default bold
browser linkhandler
macro , open-in-browser
macro t set browser "qndl" ; open-in-browser ; set browser linkhandler
-macro a set browser "tsp youtube-dl --add-metadata -xic -f bestaudio/best" ; open-in-browser ; set browser linkhandler
+macro a set browser "tsp yt-dlp --embed-metadata -xic -f bestaudio/best" ; open-in-browser ; set browser linkhandler
macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler
macro w set browser "lynx" ; open-in-browser ; set browser linkhandler
macro d set browser "dmenuhandler" ; open-in-browser ; set browser linkhandler
diff --git a/.config/newsboat/urls b/.config/newsboat/urls
index 9a762a8..73a1f3e 100644
--- a/.config/newsboat/urls
+++ b/.config/newsboat/urls
@@ -1,4 +1,8 @@
https://lukesmith.xyz/rss.xml
-https://notrelated.libsyn.com/rss
+https://lindypress.net/rss
+https://notrelated.xyz/rss
https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~Luke Smith (YouTube)"
+https://landchad.net/rss.xml
+https://based.cooking/index.xml
+https://artixlinux.org/feed.php "tech"
https://www.archlinux.org/feeds/news/ "tech"
diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
index ce0db87..5707eae 100644
--- a/.config/nvim/init.vim
+++ b/.config/nvim/init.vim
@@ -14,7 +14,7 @@ Plug 'junegunn/goyo.vim'
Plug 'jreybert/vimagit'
Plug 'lukesmithxyz/vimling'
Plug 'vimwiki/vimwiki'
-Plug 'bling/vim-airline'
+Plug 'vim-airline/vim-airline'
Plug 'tpope/vim-commentary'
Plug 'ap/vim-css-color'
call plug#end()
@@ -96,8 +96,8 @@ set noshowcmd
" Ensure files are read as what I want:
let g:vimwiki_ext2syntax = {'.Rmd': 'markdown', '.rmd': 'markdown','.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'}
- map <leader>v :VimwikiIndex
- let g:vimwiki_list = [{'path': '~/vimwiki', 'syntax': 'markdown', 'ext': '.md'}]
+ map <leader>v :VimwikiIndex<CR>
+ let g:vimwiki_list = [{'path': '~/.local/share/nvim/vimwiki', 'syntax': 'markdown', 'ext': '.md'}]
autocmd BufRead,BufNewFile /tmp/calcurse*,~/.calcurse/notes/* set filetype=markdown
autocmd BufRead,BufNewFile *.ms,*.me,*.mom,*.man set filetype=groff
autocmd BufRead,BufNewFile *.tex set filetype=tex
@@ -111,10 +111,12 @@ set noshowcmd
autocmd BufRead,BufNewFile /tmp/neomutt* map ZZ :Goyo\|x!<CR>
autocmd BufRead,BufNewFile /tmp/neomutt* map ZQ :Goyo\|q!<CR>
-" Automatically deletes all trailing whitespace and newlines at end of file on save.
+" Automatically deletes all trailing whitespace and newlines at end of file on save. & reset cursor position
+ autocmd BufWritePre * let currPos = getpos(".")
autocmd BufWritePre * %s/\s\+$//e
autocmd BufWritePre * %s/\n\+\%$//e
autocmd BufWritePre *.[ch] %s/\%$/\r/e
+ autocmd BufWritePre * cal cursor(currPos[1], currPos[2])
" When shortcut files are updated, renew bash and ranger configs with new material:
autocmd BufWritePost bm-files,bm-dirs !shortcuts
@@ -130,7 +132,7 @@ if &diff
endif
" Function for toggling the bottom statusbar:
-let s:hidden_all = 1
+let s:hidden_all = 0
function! ToggleHiddenAll()
if s:hidden_all == 0
let s:hidden_all = 1
@@ -147,3 +149,8 @@ function! ToggleHiddenAll()
endif
endfunction
nnoremap <leader>h :call ToggleHiddenAll()<CR>
+" Load command shortcuts generated from bm-dirs and bm-files via shortcuts script.
+" Here leader is ";".
+" So ":vs ;cfz" will expand into ":vs /home/<user>/.config/zsh/.zshrc"
+" if typed fast without the timeout.
+source ~/.config/nvim/shortcuts.vim
diff --git a/.config/pinentry/preexec b/.config/pinentry/preexec
new file mode 100755
index 0000000..93603c7
--- /dev/null
+++ b/.config/pinentry/preexec
@@ -0,0 +1,5 @@
+#!/hint/sh
+
+# Define additional functionality for pinentry. For example
+test -e /usr/lib/libgcr-base-3.so.1 && exec /usr/bin/pinentry-gnome3 "$@"
+#test -e /usr/lib/libQt5Widgets.so.5 && exec /usr/bin/pinentry-qt "$@"
diff --git a/.config/pipewire/pipewire.conf b/.config/pipewire/pipewire.conf
new file mode 100644
index 0000000..ae5c76e
--- /dev/null
+++ b/.config/pipewire/pipewire.conf
@@ -0,0 +1,247 @@
+# Daemon config file for PipeWire version "0.3.40" #
+#
+# Copy and edit this file in /etc/pipewire for system-wide changes
+# or in ~/.config/pipewire for local changes.
+
+context.properties = {
+ ## Configure properties in the system.
+ #library.name.system = support/libspa-support
+ #context.data-loop.library.name.system = support/libspa-support
+ #support.dbus = true
+ #link.max-buffers = 64
+ link.max-buffers = 16 # version < 3 clients can't handle more
+ #mem.warn-mlock = false
+ #mem.allow-mlock = true
+ #mem.mlock-all = false
+ #clock.power-of-two-quantum = true
+ #log.level = 2
+ #cpu.zero.denormals = true
+
+ core.daemon = true # listening for socket connections
+ core.name = pipewire-0 # core name and socket name
+
+ ## Properties for the DSP configuration.
+ #default.clock.rate = 48000
+ #default.clock.allowed-rates = [ 48000 ]
+ #default.clock.quantum = 1024
+ #default.clock.min-quantum = 32
+ #default.clock.max-quantum = 8192
+ #default.video.width = 640
+ #default.video.height = 480
+ #default.video.rate.num = 25
+ #default.video.rate.denom = 1
+ #
+ # These overrides are only applied when running in a vm.
+ vm.overrides = {
+ default.clock.min-quantum = 1024
+ }
+}
+
+context.spa-libs = {
+ #<factory-name regex> = <library-name>
+ #
+ # Used to find spa factory names. It maps an spa factory name
+ # regular expression to a library name that should contain
+ # that factory.
+ #
+ audio.convert.* = audioconvert/libspa-audioconvert
+ api.alsa.* = alsa/libspa-alsa
+ api.v4l2.* = v4l2/libspa-v4l2
+ api.libcamera.* = libcamera/libspa-libcamera
+ api.bluez5.* = bluez5/libspa-bluez5
+ api.vulkan.* = vulkan/libspa-vulkan
+ api.jack.* = jack/libspa-jack
+ support.* = support/libspa-support
+ #videotestsrc = videotestsrc/libspa-videotestsrc
+ #audiotestsrc = audiotestsrc/libspa-audiotestsrc
+}
+
+context.modules = [
+ #{ name = <module-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ ifexists ] [ nofail ] ]
+ #}
+ #
+ # Loads a module with the given parameters.
+ # If ifexists is given, the module is ignored when it is not found.
+ # If nofail is given, module initialization failures are ignored.
+ #
+
+ # Uses RTKit to boost the data thread priority.
+ { name = libpipewire-module-rtkit
+ args = {
+ #nice.level = -11
+ #rt.prio = 88
+ #rt.time.soft = 2000000
+ #rt.time.hard = 2000000
+ }
+ flags = [ ifexists nofail ]
+ }
+
+ # Set thread priorities without using RTKit.
+ #{ name = libpipewire-module-rt
+ # args = {
+ # nice.level = -11
+ # rt.prio = 88
+ # rt.time.soft = 2000000
+ # rt.time.hard = 2000000
+ # }
+ # flags = [ ifexists nofail ]
+ #}
+
+ # The native communication protocol.
+ { name = libpipewire-module-protocol-native }
+
+ # The profile module. Allows application to access profiler
+ # and performance data. It provides an interface that is used
+ # by pw-top and pw-profiler.
+ { name = libpipewire-module-profiler }
+
+ # Allows applications to create metadata objects. It creates
+ # a factory for Metadata objects.
+ { name = libpipewire-module-metadata }
+
+ # Creates a factory for making devices that run in the
+ # context of the PipeWire server.
+ { name = libpipewire-module-spa-device-factory }
+
+ # Creates a factory for making nodes that run in the
+ # context of the PipeWire server.
+ { name = libpipewire-module-spa-node-factory }
+
+ # Allows creating nodes that run in the context of the
+ # client. Is used by all clients that want to provide
+ # data to PipeWire.
+ { name = libpipewire-module-client-node }
+
+ # Allows creating devices that run in the context of the
+ # client. Is used by the session manager.
+ { name = libpipewire-module-client-device }
+
+ # The portal module monitors the PID of the portal process
+ # and tags connections with the same PID as portal
+ # connections.
+ { name = libpipewire-module-portal
+ flags = [ ifexists nofail ]
+ }
+
+ # The access module can perform access checks and block
+ # new clients.
+ { name = libpipewire-module-access
+ args = {
+ # access.allowed to list an array of paths of allowed
+ # apps.
+ #access.allowed = [
+ # /usr/bin/pipewire-media-session
+ #]
+
+ # An array of rejected paths.
+ #access.rejected = [ ]
+
+ # An array of paths with restricted access.
+ #access.restricted = [ ]
+
+ # Anything not in the above lists gets assigned the
+ # access.force permission.
+ #access.force = flatpak
+ }
+ }
+
+ # Makes a factory for wrapping nodes in an adapter with a
+ # converter and resampler.
+ { name = libpipewire-module-adapter }
+
+ # Makes a factory for creating links between ports.
+ { name = libpipewire-module-link-factory }
+
+ # Provides factories to make session manager objects.
+ { name = libpipewire-module-session-manager }
+]
+
+context.objects = [
+ #{ factory = <factory-name>
+ # [ args = { <key> = <value> ... } ]
+ # [ flags = [ [ nofail ] ]
+ #}
+ #
+ # Creates an object from a PipeWire factory with the given parameters.
+ # If nofail is given, errors are ignored (and no object is created).
+ #
+ #{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } }
+ #{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
+ #{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
+ #{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
+ #{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test } }
+ #{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
+
+ # A default dummy driver. This handles nodes marked with the "node.always-driver"
+ # property when no other driver is currently active. JACK clients need this.
+ { factory = spa-node-factory
+ args = {
+ factory.name = support.node.driver
+ node.name = Dummy-Driver
+ node.group = pipewire.dummy
+ priority.driver = 20000
+ }
+ }
+ { factory = spa-node-factory
+ args = {
+ factory.name = support.node.driver
+ node.name = Freewheel-Driver
+ priority.driver = 19000
+ node.group = pipewire.freewheel
+ node.freewheel = true
+ }
+ }
+ # This creates a new Source node. It will have input ports
+ # that you can link, to provide audio for this source.
+ #{ factory = adapter
+ # args = {
+ # factory.name = support.null-audio-sink
+ # node.name = "my-mic"
+ # node.description = "Microphone"
+ # media.class = "Audio/Source/Virtual"
+ # audio.position = "FL,FR"
+ # }
+ #}
+
+ # This creates a single PCM source device for the given
+ # alsa device path hw:0. You can change source to sink
+ # to make a sink in the same way.
+ #{ factory = adapter
+ # args = {
+ # factory.name = api.alsa.pcm.source
+ # node.name = "alsa-source"
+ # node.description = "PCM Source"
+ # media.class = "Audio/Source"
+ # api.alsa.path = "hw:0"
+ # api.alsa.period-size = 1024
+ # api.alsa.headroom = 0
+ # api.alsa.disable-mmap = false
+ # api.alsa.disable-batch = false
+ # audio.format = "S16LE"
+ # audio.rate = 48000
+ # audio.channels = 2
+ # audio.position = "FL,FR"
+ # }
+ #}
+]
+
+context.exec = [
+ #{ path = <program-name> [ args = "<arguments>" ] }
+ #
+ # Execute the given program with arguments.
+ #
+ # You can optionally start the session manager here,
+ # but it is better to start it as a systemd service.
+ # Run the session manager with -h for options.
+ #
+ { path = "/usr/bin/pipewire-media-session" args = "" }
+ #
+ # You can optionally start the pulseaudio-server here as well
+ # but it is better to start it as a systemd service.
+ # It can be interesting to start another daemon here that listens
+ # on another address with the -a option (eg. -a tcp:4713).
+ #
+ { path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
+]
diff --git a/.config/shell/aliasrc b/.config/shell/aliasrc
index 1f048ed..27d4527 100644
--- a/.config/shell/aliasrc
+++ b/.config/shell/aliasrc
@@ -7,9 +7,9 @@
[ -f "$XINITRC" ] && alias startx="startx $XINITRC"
# sudo not required for some system commands
-for x in mount umount sv pacman updatedb su ; do
- alias $x="sudo $x"
-done
+for command in mount umount sv pacman updatedb su shutdown poweroff reboot ; do
+ alias $command="sudo $command"
+done; unset command
# Verbosity and settings that you pretty much just always are going to want.
alias \
@@ -18,7 +18,7 @@ alias \
rm="rm -vI" \
bc="bc -ql" \
mkd="mkdir -pv" \
- yt="youtube-dl --add-metadata -i" \
+ yt="yt-dlp --embed-metadata -i" \
yta="yt -x -f bestaudio/best" \
ffmpeg="ffmpeg -hide_banner"
@@ -27,7 +27,8 @@ alias \
ls="ls -hN --color=auto --group-directories-first" \
grep="grep --color=auto" \
diff="diff --color=auto" \
- ccat="highlight --out-format=ansi"
+ ccat="highlight --out-format=ansi" \
+ ip="ip -color=auto"
# These common commands are just too long! Abbreviate them.
alias \
@@ -35,16 +36,17 @@ alias \
g="git" \
trem="transmission-remote" \
YT="youtube-viewer" \
- sdn="sudo shutdown -h now" \
+ sdn="shutdown -h now" \
e="$EDITOR" \
v="$EDITOR" \
- p="sudo pacman" \
+ p="pacman" \
xi="sudo xbps-install" \
xr="sudo xbps-remove -R" \
xq="xbps-query" \
z="zathura"
alias \
+ lf="lfub" \
magit="nvim -c MagitOnly" \
ref="shortcuts >/dev/null; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc ; source ${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" \
weath="less -S ${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport" \
diff --git a/.config/shell/bm-dirs b/.config/shell/bm-dirs
index b3807cd..9d212ec 100644
--- a/.config/shell/bm-dirs
+++ b/.config/shell/bm-dirs
@@ -4,6 +4,7 @@ cf ${XDG_CONFIG_HOME:-$HOME/.config}
D ${XDG_DOWNLOAD_DIR:-$HOME/Downloads}
d ${XDG_DOCUMENTS_DIR:-$HOME/Documents}
dt ${XDG_DATA_HOME:-$HOME/.local/share}
+rr $HOME/.local/src
h $HOME
m ${XDG_MUSIC_DIR:-$HOME/Music}
mn /mnt
diff --git a/.config/sxiv/exec/key-handler b/.config/sxiv/exec/key-handler
index 3d9565f..4a4f10a 100755
--- a/.config/sxiv/exec/key-handler
+++ b/.config/sxiv/exec/key-handler
@@ -1,15 +1,15 @@
#!/bin/sh
-while read file
+while read -r file
do
case "$1" in
"w") setbg "$file" & ;;
"c")
- [ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
+ [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Copy file(s) to where?" | sed "s|~|$HOME|g")"
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
cp "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file copied to $destdir." &
;;
"m")
- [ -z "$destdir" ] && destdir="$(sed "s/\s.*#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
+ [ -z "$destdir" ] && destdir="$(sed "s/#.*$//;/^\s*$/d" ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | awk '{print $2}' | dmenu -l 20 -i -p "Move file(s) to where?" | sed "s|~|$HOME|g")"
[ ! -d "$destdir" ] && notify-send "$destdir is not a directory, cancelled." && exit
mv "$file" "$destdir" && notify-send -i "$(readlink -f "$file")" "$file moved to $destdir." &
;;
@@ -20,7 +20,7 @@ do
"f")
convert -flop "$file" "$file" ;;
"y")
- echo -n "$file" | tr -d '\n' | xclip -selection clipboard &&
+ printf "%s" "$file" | tr -d '\n' | xclip -selection clipboard &&
notify-send "$file copied to clipboard" & ;;
"Y")
readlink -f "$file" | tr -d '\n' | xclip -selection clipboard &&
diff --git a/.config/wal/postrun b/.config/wal/postrun
index 74d551b..61d8a41 100755
--- a/.config/wal/postrun
+++ b/.config/wal/postrun
@@ -1,11 +1,17 @@
#!/bin/bash
-source "${HOME}/.cache/wal/colors.sh"
+dunstconf="${XDG_CONFIG_HOME:-$HOME/.config}/dunst/dunstrc"
+zathuraconf="${XDG_CONFIG_HOME:-$HOME/.config}/zathura/zathurarc"
-mkdir -p "${HOME}/.config/dunst"
-mkdir -p "${HOME}/.config/zathura"
-ln -sf "${HOME}/.cache/wal/dunstrc" "${HOME}/.config/dunst/dunstrc"
-ln -sf "${HOME}/.cache/wal/zathurarc" "${HOME}/.config/zathura/zathurarc"
+source "${XDG_CACHE_HOME:-$HOME/.cache}/wal/colors.sh"
+
+mkdir -p "${dunstconf%/*}" "${zathuraconf%/*}"
+
+mv -n "$dunstconf" "$dunstconf.bak"
+mv -n "$zathuraconf" "$zathuraconf.bak"
+
+ln -sf "${XDG_CACHE_HOME:-$HOME/.cache}/wal/dunstrc" "$dunstconf"
+ln -sf "${XDG_CACHE_HOME:-$HOME/.cache}/wal/zathurarc" "$zathuraconf"
fix_sequences() {
e=$'\e'
@@ -14,14 +20,13 @@ fix_sequences() {
background_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]11[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
cursor_color="$(echo -e "${sequences}\c" | grep --color=never -Eo "${e}]12[^${e}\\\\]*?${e}\\\\" | grep --color=never -Eo "#[0-9A-Fa-f]{6}")"
-for term in /dev/pts/{0..9}*
-do
-echo -e "\e]4;256;${cursor_color}\a\c" > "${term}" 2>/dev/null
-echo -e "\e]4;258;${background_color}\a\c" > "${term}" 2>/dev/null
-echo -e "\e]4;259;${foreground_color}\a\c" > "${term}" 2>/dev/null
-done
+ for term in /dev/pts/{0..9}*; do
+ echo -e "\e]4;256;${cursor_color}\a\c" > "${term}" 2>/dev/null
+ echo -e "\e]4;258;${background_color}\a\c" > "${term}" 2>/dev/null
+ echo -e "\e]4;259;${foreground_color}\a\c" > "${term}" 2>/dev/null
+ done
}
-fix_sequences <"${HOME}/.cache/wal/sequences"
+fix_sequences <"${XDG_CACHE_HOME:-$HOME/.cache}/wal/sequences"
-pkill dunst; dunst &
+pkill dunst; setsid -f dunst
diff --git a/.config/wal/templates/dunstrc b/.config/wal/templates/dunstrc
index 9a62500..5a2e020 100644
--- a/.config/wal/templates/dunstrc
+++ b/.config/wal/templates/dunstrc
@@ -1,152 +1,27 @@
[global]
monitor = 0
follow = keyboard
- geometry = "350x5-0+24"
- indicate_hidden = yes
- shrink = yes
- transparency = 20
- notification_height = 0
- separator_height = 2
- padding = 0
- horizontal_padding = 8
- frame_width = 3
- frame_color = "{color4}"
-
- # Define a color for the separator.
- # possible values are:
- # * auto: dunst tries to find a color fitting to the background;
- # * foreground: use the same color as the foreground;
- # * frame: use the same color as the frame;
- # * anything else will be interpreted as a X color.
- separator_color = frame
-
- # Sort messages by urgency.
- sort = yes
-
- idle_threshold = 120
- font = Monospace 14
- line_height = 0
- markup = full
-
- # The format of the message. Possible variables are:
- # %a appname
- # %s summary
- # %b body
- # %i iconname (including its path)
- # %I iconname (without its path)
- # %p progress value if set ([ 0%] to [100%]) or nothing
- # %n progress value if set without any extra characters
- # %% Literal %
- # Markup is allowed
+ width = 370
+ height = 350
+ offset = 0x19
+ padding = 2
+ horizontal_padding = 2
+ transparency = 25
+ font = Monospace 12
format = "<b>%s</b>\n%b"
- alignment = left
- show_age_threshold = 60
- word_wrap = yes
- ellipsize = middle
- ignore_newline = no
- stack_duplicates = true
- hide_duplicate_count = true
- show_indicators = yes
- icon_position = left
- max_icon_size = 40
- #icon_path = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/:/usr/share/icons/Adwaita/256x256/status/
- sticky_history = yes
- history_length = 20
- dmenu = /usr/bin/dmenu -p dunst:
- browser = /usr/bin/firefox -new-tab
-
- # Always run rule-defined scripts, even if the notification is suppressed
- always_run_script = true
-
- title = Dunst
- class = Dunst
- startup_notification = false
- force_xinerama = false
-[experimental]
- per_monitor_dpi = false
-
-[shortcuts]
- close = ctrl+space
- close_all = ctrl+shift+space
- history = ctrl+grave
- context = ctrl+shift+period
-
[urgency_low]
- # IMPORTANT: colors have to be defined in quotation marks.
- # Otherwise the "#" and following would be interpreted as a comment.
- background = "{background}"
- foreground = "{foreground}"
- timeout = 5
- # Icon for notifications with low urgency, uncomment to enable
- #icon = /path/to/icon
+ background = "{color0}" # color0
+ foreground = "{color8}" # color8
+ timeout = 3
[urgency_normal]
- background = "{background}"
- foreground = "{foreground}"
+ foreground = "{color15}" # color15
+ background = "{color4}" # color4
timeout = 5
[urgency_critical]
- background = "{background}"
- foreground = "{foreground}"
- frame_color = "#fabd2f"
- timeout = 0
-
-# Every section that isn't one of the above is interpreted as a rules to
-# override settings for certain messages.
-# Messages can be matched by "appname", "summary", "body", "icon", "category",
-# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
-# "background", "new_icon" and "format".
-# Shell-like globbing will get expanded.
-#
-# SCRIPTING
-# You can specify a script that gets run when the rule matches by
-# setting the "script" option.
-# The script will be called as follows:
-# script appname summary body icon urgency
-# where urgency can be "LOW", "NORMAL" or "CRITICAL".
-#
-# NOTE: if you don't want a notification to be displayed, set the format
-# to "".
-# NOTE: It might be helpful to run dunst -print in a terminal in order
-# to find fitting options for rules.
-
-#[espeak]
-# summary = "*"
-# script = dunst_espeak.sh
-
-#[script-test]
-# summary = "*script*"
-# script = dunst_test.sh
-
-#[ignore]
-# # This notification will not be displayed
-# summary = "foobar"
-# format = ""
-
-#[history-ignore]
-# # This notification will not be saved in history
-# summary = "foobar"
-# history_ignore = yes
-
-#[signed_on]
-# appname = Pidgin
-# summary = "*signed on*"
-# urgency = low
-#
-#[signed_off]
-# appname = Pidgin
-# summary = *signed off*
-# urgency = low
-#
-#[says]
-# appname = Pidgin
-# summary = *says*
-# urgency = critical
-#
-#[twitter]
-# appname = Pidgin
-# summary = *twitter.com*
-# urgency = normal
-#
-# vim: ft=cfg
+ background = "{color1}" # color1
+ foreground = "{color15}" # color15
+ frame_color = "{color11}" # color11
+ timeout = 10
diff --git a/.config/x11/xprofile b/.config/x11/xprofile
index f7182e1..0e22628 100755
--- a/.config/x11/xprofile
+++ b/.config/x11/xprofile
@@ -3,18 +3,16 @@
# This file runs when a DM logs you into a graphical session.
# If you use startx/xinit like a Chad, this file will also be sourced.
+xrandr --dpi 96 # Set DPI. User may want to use a larger number for larger screens.
setbg & # set the background with the `setbg` script
-#xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & # Uncomment to use Xresources colors/settings on startup
-mpd & # music player daemon-you might prefer it as a service though
+#xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & xrdbpid=$! # Uncomment to use Xresources colors/settings on startup
remaps & # run the remaps script, switching caps/esc and more; check it for more info
-xcompmgr & # xcompmgr for transparency
-dunst & # dunst for notifications
-xset r rate 300 50 & # Speed xrate up
-unclutter & # Remove mouse when idle
-# This line autostarts an instance of Pulseaudio that does not exit on idle.
-# This is "necessary" on Artix due to a current bug between PA and
-# Chromium-based browsers where they fail to start PA and use dummy output.
-pidof -s runit &&
- ! pidof -s pulseaudio >/dev/null 2>&1 &&
- setsid -f pulseaudio --start --exit-idle-time=-1 >/dev/null 2>&1
+autostart="mpd xcompmgr dunst unclutter pipewire"
+
+for program in $autostart; do
+ pidof -s "$program" || "$program" &
+done >/dev/null 2>&1
+
+# Ensure that xrdb has finished running before moving on to start the WM/DE.
+[ -n "$xrdbpid" ] && wait "$xrdbpid"
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
index 22a166e..7e96734 100644
--- a/.config/zsh/.zshrc
+++ b/.config/zsh/.zshrc
@@ -10,7 +10,7 @@ setopt interactive_comments
# History in cache directory:
HISTSIZE=10000000
SAVEHIST=10000000
-HISTFILE=~/.cache/zsh/history
+HISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}/zsh/history"
# Load aliases and shortcuts if existent.
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
@@ -53,25 +53,28 @@ preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
# Use lf to switch directories and bind it to ctrl-o
lfcd () {
- tmp="$(mktemp)"
+ tmp="$(mktemp -uq)"
+ trap 'rm -f $tmp >/dev/null 2>&1' HUP INT QUIT TERM PWR EXIT
lf -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then
dir="$(cat "$tmp")"
- rm -f "$tmp" >/dev/null
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi
}
-bindkey -s '^o' 'lfcd\n'
+bindkey -s '^o' '^ulfcd\n'
-bindkey -s '^a' 'bc -lq\n'
+bindkey -s '^a' '^ubc -lq\n'
-bindkey -s '^f' 'cd "$(dirname "$(fzf)")"\n'
+bindkey -s '^f' '^ucd "$(dirname "$(fzf)")"\n'
bindkey '^[[P' delete-char
# Edit line in vim with ctrl-e:
autoload edit-command-line; zle -N edit-command-line
bindkey '^e' edit-command-line
+bindkey -M vicmd '^[[P' vi-delete-char
+bindkey -M vicmd '^e' edit-command-line
+bindkey -M visual '^[[P' vi-delete
# Load syntax highlighting; should be last.
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
diff --git a/.gitmodules b/.gitmodules
index 4f7c5dd..c8bf5fa 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,3 @@
-[submodule ".config/mpv/scripts/mpvSockets"]
- path = .config/mpv/scripts/mpvSockets
+[submodule ".config/mpv/script_modules/mpvSockets"]
+ path = .config/mpv/script_modules/mpvSockets
url = https://github.com/wis/mpvSockets.git
diff --git a/.gtkrc-2.0 b/.gtkrc-2.0
new file mode 120000
index 0000000..20593d7
--- /dev/null
+++ b/.gtkrc-2.0
@@ -0,0 +1 @@
+.config/gtk-2.0/gtkrc-2.0 \ No newline at end of file
diff --git a/.local/bin/booksplit b/.local/bin/booksplit
index 7730ac2..69e4f36 100755
--- a/.local/bin/booksplit
+++ b/.local/bin/booksplit
@@ -1,46 +1,43 @@
#!/bin/sh
-# Requires ffmpeg (audio splitting) and my `tag` wrapper script.
+# Requires ffmpeg
[ ! -f "$2" ] && printf "The first file should be the audio, the second should be the timecodes.\\n" && exit
echo "Enter the album/book title:"; read -r booktitle
-
echo "Enter the artist/author:"; read -r author
-
echo "Enter the publication year:"; read -r year
inputaudio="$1"
+ext="${1#*.}"
# Get a safe file name from the book.
escbook="$(echo "$booktitle" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
-! mkdir -p "$escbook" && echo "Do you have write access in this directory?" && exit 1
-
-# As long as the extension is in the tag script, it'll work.
-ext="opus"
-#ext="${1#*.}"
+! mkdir -p "$escbook" &&
+ echo "Do you have write access in this directory?" &&
+ exit 1
# Get the total number of tracks from the number of lines.
total="$(wc -l < "$2")"
+cmd="ffmpeg -i \"$inputaudio\" -nostdin -y"
+
while read -r x;
do
- end="$(echo "$x" | cut -d' ' -f1)"
-
- [ -n "$start" ] &&
- echo "From $start to $end; $track $title"
- file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
- [ -n "$start" ] && echo "Splitting \"$title\"..." &&
- ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -to "$end" -vn -c copy "$file" &&
- echo "Tagging \"$title\"..." && tag -a "$author" -A "$booktitle" -t "$title" -n "$track" -N "$total" -d "$year" "$file"
- title="$(echo "$x" | cut -d' ' -f 2-)"
- esctitle="$(echo "$title" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
- track="$((track+1))"
- start="$end"
+ end="$(echo "$x" | cut -d' ' -f1)"
+ file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
+ if [ -n "$start" ]; then
+ cmd="$cmd -metadata artist=\"$author\" -metadata title=\"$title\" -metadata album=\"$booktitle\" -metadata year=\"$year\" -metadata track=\"$track\" -metadata total=\"$total\" -ss \"$start\" -to \"$end\" -vn -c:a copy \"$file\" "
+ fi
+ title="$(echo "$x" | cut -d' ' -f2-)"
+ esctitle="$(echo "$title" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | sed "s/-\+/-/g;s/\(^-\|-\$\)//g")"
+ track="$((track+1))"
+ start="$end"
done < "$2"
-# The last track must be done outside the loop.
-echo "From $start to the end: $title"
+
+# Last track must be added out of the loop.
file="$escbook/$(printf "%.2d" "$track")-$esctitle.$ext"
-echo "Splitting \"$title\"..." && ffmpeg -nostdin -y -loglevel -8 -i "$inputaudio" -ss "$start" -vn -c copy "$file" &&
- echo "Tagging \"$title\"..." && tag -a "$author" -A "$booktitle" -t "$title" -n "$track" -N "$total" -d "$year" "$file" \ No newline at end of file
+cmd="$cmd -metadata artist=\"$author\" -metadata title=\"$title\" -metadata album=\"$booktitle\" -metadata year=\"$year\" -metadata track=\"$track\" -ss \"$start\" -vn -c copy \"$file\""
+
+eval "$cmd"
diff --git a/.local/bin/compiler b/.local/bin/compiler
index 39e149e..67992be 100755
--- a/.local/bin/compiler
+++ b/.local/bin/compiler
@@ -4,7 +4,7 @@
# have this script run via vim.
#
# Compiles .tex. groff (.mom, .ms), .rmd, .md, .org. Opens .sent files as sent
-# presentations. Runs scripts based on extention or shebang.
+# presentations. Runs scripts based on extension or shebang.
#
# Note that .tex files which you wish to compile with XeLaTeX should have the
# string "xelatex" somewhere in a comment/command in the first 5 lines.
@@ -37,7 +37,7 @@ case "$ext" in
java) javac -d classes "$file" && java -cp classes "${1%.*}" ;;
m) octave "$file" ;;
md) if [ -x "$(command -v lowdown)" ]; then
- lowdown -d nointem -e super "$file" -Tms | groff -mpdfmark -ms -kept > "$base".pdf
+ lowdown --parse-no-intraemph "$file" -Tms | groff -mpdfmark -ms -kept > "$base".pdf
elif [ -x "$(command -v groffdown)" ]; then
groffdown -i "$file" | groff > "$base.pdf"
else
@@ -53,5 +53,5 @@ case "$ext" in
scad) openscad -o "$base".stl "$file" ;;
sent) setsid -f sent "$file" 2>/dev/null ;;
tex) textype "$file" ;;
- *) head -n1 "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;;
+ *) sed -n '/^#!/s/^#!//p; q' "$file" | xargs -r -I % "$file" ;;
esac
diff --git a/.local/bin/cron/checkup b/.local/bin/cron/checkup
index 4cfb856..bd3c634 100755
--- a/.local/bin/cron/checkup
+++ b/.local/bin/cron/checkup
@@ -2,8 +2,6 @@
# Syncs repositories and downloads updates, meant to be run as a cronjob.
-ping -q -c 1 example.org > /dev/null || exit
-
notify-send "๐Ÿ“ฆ Repository Sync" "Checking for package updates..."
sudo pacman -Syyuw --noconfirm || notify-send "Error downloading updates.
diff --git a/.local/bin/cron/newsup b/.local/bin/cron/newsup
index 29f2b3c..ed266d7 100755
--- a/.local/bin/cron/newsup
+++ b/.local/bin/cron/newsup
@@ -3,11 +3,9 @@
# Set as a cron job to check for new RSS entries for newsboat.
# If newsboat is open, sends it an "R" key to refresh.
-ping -q -c 1 example.org > /dev/null || exit
-
/usr/bin/notify-send "๐Ÿ“ฐ Updating RSS feeds..."
-pgrep -f newsboat$ && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit
+pgrep -f newsboat$ && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name "^newsboat$")" R && exit
echo ๐Ÿ”ƒ > /tmp/newsupdate
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
diff --git a/.local/bin/dmenuhandler b/.local/bin/dmenuhandler
index e5de8ef..1c48f3a 100755
--- a/.local/bin/dmenuhandler
+++ b/.local/bin/dmenuhandler
@@ -4,17 +4,17 @@
# some choice programs to use to open it.
feed="${1:-$(printf "%s" | dmenu -p 'Paste URL or file path')}"
-case "$(printf "Copy URL\\nsxiv\\nsetbg\\nPDF\\nbrowser\\nlynx\\nvim\\nmpv\\nmpv loop\\nmpv float\\nqueue download\\nqueue yt-dl\\nqueue yt-dl audio" | dmenu -i -p "Open it with?")" in
- "copy url") echo "$feed" | xclip -selection clipboard ;;
+case "$(printf "Copy URL\\nsxiv\\nsetbg\\nPDF\\nbrowser\\nlynx\\nvim\\nmpv\\nmpv loop\\nmpv float\\nqueue download\\nqueue yt-dlp\\nqueue yt-dlp audio" | dmenu -i -p "Open it with?")" in
+ "Copy URL") echo "$feed" | xclip -selection clipboard ;;
mpv) setsid -f mpv -quiet "$feed" >/dev/null 2>&1 ;;
"mpv loop") setsid -f mpv -quiet --loop "$feed" >/dev/null 2>&1 ;;
"mpv float") setsid -f "$TERMINAL" -e mpv --geometry=+0-0 --autofit=30% --title="mpvfloat" "$feed" >/dev/null 2>&1 ;;
- "queue yt-dl") qndl "$feed" >/dev/null 2>&1 ;;
- "queue yt-dl audio") qndl "$feed" 'youtube-dl --add-metadata -icx -f bestaudio/best' >/dev/null 2>&1 ;;
+ "queue yt-dlp") qndl "$feed" >/dev/null 2>&1 ;;
+ "queue yt-dlp audio") qndl "$feed" 'yt-dlp --embed-metadata -icx -f bestaudio/best' >/dev/null 2>&1 ;;
"queue download") qndl "$feed" 'curl -LO' >/dev/null 2>&1 ;;
- PDF) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
- sxiv) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
- vim) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
+ PDF) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && zathura "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
+ sxiv) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
+ vim) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" && setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$feed" | sed "s|.*/||;s/%20/ /g")" >/dev/null 2>&1 ;;
setbg) curl -L "$feed" > $XDG_CACHE_HOME/pic ; xwallpaper --zoom $XDG_CACHE_HOME/pic >/dev/null 2>&1 ;;
browser) setsid -f "$BROWSER" "$feed" >/dev/null 2>&1 ;;
lynx) lynx "$feed" >/dev/null 2>&1 ;;
diff --git a/.local/bin/dmenumount b/.local/bin/dmenumount
index 825ff56..abeb0ce 100755
--- a/.local/bin/dmenumount
+++ b/.local/bin/dmenumount
@@ -9,7 +9,7 @@ getmount() { \
[ -z "$chosen" ] && exit 1
# shellcheck disable=SC2086
mp="$(find $1 2>/dev/null | dmenu -i -p "Type in mount point.")" || exit 1
- [ "$mp" = "" ] && exit 1
+ test -z "$mp" && exit 1
if [ ! -d "$mp" ]; then
mkdiryn=$(printf "No\\nYes" | dmenu -i -p "$mp does not exist. Create it?") || exit 1
[ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp")
@@ -50,11 +50,7 @@ asktype() { \
}
anddrives=$(simple-mtpfs -l 2>/dev/null)
-# Get all block devices which are parents of other devices
-parentnames="$(lsblk -rpo "pkname" | awk 'NR!=1 && $0 != ""' | uniq | xargs printf '^%s$|' | sed 's/|$//')"
-# Get all `part` and `rom` devices, which aren't a parent to another device
-# This allows ommiting partitions which have i.e. crypt or lvm childs
-usbdrives="$(lsblk -rpo "name,type,size,mountpoint" | awk -v parentnames="$parentnames" '$2 ~ "part|rom" && $4=="" && $1 !~ parentnames {printf "%s (%s)\n",$1,$3}')"
+usbdrives="$(lsblk -rpo "name,type,size,label,mountpoint,fstype" | grep -v crypto_LUKS | grep 'part\|rom' | sed 's/ /:/g' | awk -F':' '$5==""{printf "%s (%s) %s\n",$1,$3,$4}')"
if [ -z "$usbdrives" ]; then
[ -z "$anddrives" ] && echo "No USB drive or Android device detected" && exit
diff --git a/.local/bin/dmenurecord b/.local/bin/dmenurecord
index b1a034a..b83a7c5 100755
--- a/.local/bin/dmenurecord
+++ b/.local/bin/dmenurecord
@@ -31,7 +31,7 @@ screencast() { \
ffmpeg -y \
-f x11grab \
-framerate 60 \
- -s "$(xdpyinfo | grep dimensions | awk '{print $2;}')" \
+ -s "$(xdpyinfo | awk '/dimensions/ {print $2;}')" \
-i "$DISPLAY" \
-f alsa -i default \
-r 30 \
@@ -43,7 +43,7 @@ screencast() { \
video() { ffmpeg \
-f x11grab \
- -s "$(xdpyinfo | grep dimensions | awk '{print $2;}')" \
+ -s "$(xdpyinfo | awk '/dimensions/ {print $2;}')" \
-i "$DISPLAY" \
-c:v libx264 -qp 0 -r 30 \
"$HOME/video-$(date '+%y%m%d-%H%M-%S').mkv" &
diff --git a/.local/bin/dmenuumount b/.local/bin/dmenuumount
index 26612ef..946d12c 100755
--- a/.local/bin/dmenuumount
+++ b/.local/bin/dmenuumount
@@ -26,7 +26,7 @@ asktype() { \
esac
}
-drives=$(lsblk -nrpo "name,type,size,mountpoint" | awk '$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')
+drives=$(lsblk -nrpo "name,type,size,mountpoint,label" | awk -F':' '{gsub(/ /,":")}$4!~/\/boot|\/efi|\/home$|SWAP/&&length($4)>1{printf "%s (%s) %s\n",$4,$3,$5}')
if ! grep simple-mtpfs /etc/mtab; then
[ -z "$drives" ] && echo "No drives to unmount." && exit
diff --git a/.local/bin/ext b/.local/bin/ext
deleted file mode 100755
index 927fb5b..0000000
--- a/.local/bin/ext
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-# A general, all-purpose extraction script. Not all extraction programs here
-# are installed by LARBS automatically.
-#
-# Default behavior: Extract archive into new directory
-# Behavior with `-c` option: Extract contents into current directory
-
-while getopts "hc" o; do case "${o}" in
- c) extracthere="True" ;;
- *) printf "Options:\\n -c: Extract archive into current directory rather than a new one.\\n" && exit 1 ;;
-esac done
-
-if [ -z "$extracthere" ]; then
- archive="$(readlink -f "$*")" &&
- directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" &&
- mkdir -p "$directory" &&
- cd "$directory" || exit 1
-else
- archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)" 2>/dev/null)"
-fi
-
-[ -z "$archive" ] && printf "Give archive to extract as argument.\\n" && exit 1
-
-if [ -f "$archive" ] ; then
- case "$archive" in
- *.tar.bz2|*.tbz2) tar xvjf "$archive" ;;
- *.tar.xz) tar -xf "$archive" ;;
- *.tar.gz|*.tgz) tar xvzf "$archive" ;;
- *.tar.zst) tar -I zstd -xf "$archive" ;;
- *.lzma) unlzma "$archive" ;;
- *.bz2) bunzip2 "$archive" ;;
- *.rar) unrar x -ad "$archive" ;;
- *.gz) gunzip "$archive" ;;
- *.tar) tar xvf "$archive" ;;
- *.zip) unzip "$archive" ;;
- *.Z) uncompress "$archive" ;;
- *.7z) 7z x "$archive" ;;
- *.xz) unxz "$archive" ;;
- *.exe) cabextract "$archive" ;;
- *) printf "extract: '%s' - unknown archive method\\n" "$archive" ;;
- esac
-else
- printf "File \"%s\" not found.\\n" "$archive"
-fi
diff --git a/.local/bin/getbib b/.local/bin/getbib
index ed441c5..8675aae 100755
--- a/.local/bin/getbib
+++ b/.local/bin/getbib
@@ -11,4 +11,4 @@ else
fi
# Check crossref.org for the bib citation.
-curl -s "http://api.crossref.org/works/$doi/transform/application/x-bibtex" -w "\\n"
+curl -s "https://api.crossref.org/works/$doi/transform/application/x-bibtex" -w "\\n"
diff --git a/.local/bin/ifinstalled b/.local/bin/ifinstalled
index be3ac24..c192eba 100755
--- a/.local/bin/ifinstalled
+++ b/.local/bin/ifinstalled
@@ -5,7 +5,8 @@
# it informs the user that they need that command to continue. This is used in
# various other scripts for clarity's sake.
-for x in "$@";do
- pacman -Qq "$x" >/dev/null 2>&1 ||
- { notify-send "๐Ÿ“ฆ $x" "must be installed for this function." && exit 1 ;}
+for x in "$@"; do
+ if ! which "$x" >/dev/null 2>&1 && ! pacman -Qq "$x" >/dev/null 2>&1; then
+ notify-send "๐Ÿ“ฆ $x" "must be installed for this function." && exit 1 ;
+ fi
done
diff --git a/.local/bin/lf-select b/.local/bin/lf-select
deleted file mode 100755
index 3b2a17a..0000000
--- a/.local/bin/lf-select
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-
-# Reads file names from stdin and selects them in lf.
-
-while read -r file; do
- [ -z "$file" ] && continue
- lf -remote "send select \"$file\""
- lf -remote "send toggle"
-done
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/linkhandler b/.local/bin/linkhandler
index 04934e5..cc971fc 100755
--- a/.local/bin/linkhandler
+++ b/.local/bin/linkhandler
@@ -6,18 +6,21 @@
# if a music file or pdf, it will download,
# otherwise it opens link in browser.
-# If no url given. Opens browser. For using script as $BROWSER.
-[ -z "$1" ] && { "$BROWSER"; exit; }
+if [ -z "$1" ]; then
+ url="$(xclip -o)"
+else
+ url="$1"
+fi
-case "$1" in
- *mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*)
- setsid -f mpv -quiet "$1" >/dev/null 2>&1 ;;
+case "$url" in
+ *mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*|*odysee.com*)
+ setsid -f mpv -quiet "$url" >/dev/null 2>&1 ;;
*png|*jpg|*jpe|*jpeg|*gif)
- curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
+ curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
*pdf|*cbz|*cbr)
- curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
+ curl -sL "$url" > "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$url" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
*mp3|*flac|*opus|*mp3?source*)
- qndl "$1" 'curl -LO' >/dev/null 2>&1 ;;
+ qndl "$url" 'curl -LO' >/dev/null 2>&1 ;;
*)
- [ -f "$1" ] && setsid -f "$TERMINAL" -e "$EDITOR" "$1" >/dev/null 2>&1 || setsid -f "$BROWSER" "$1" >/dev/null 2>&1
+ [ -f "$url" ] && setsid -f "$TERMINAL" -e "$EDITOR" "$url" >/dev/null 2>&1 || setsid -f "$BROWSER" "$url" >/dev/null 2>&1
esac
diff --git a/.local/bin/maimpick b/.local/bin/maimpick
index 7125e61..8ea9f5e 100755
--- a/.local/bin/maimpick
+++ b/.local/bin/maimpick
@@ -4,11 +4,15 @@
# choose the kind of screenshot to take, including copying the image or even
# highlighting an area to copy. scrotcucks on suicidewatch right now.
+# variables
+output="$(date '+%y%m%d-%H%M-%S').png"
+xclip_cmd="xclip -sel clip -t image/png"
+
case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)" | dmenu -l 6 -i -p "Screenshot which area?")" in
- "a selected area") maim -s pic-selected-"$(date '+%y%m%d-%H%M-%S').png" ;;
- "current window") maim -i "$(xdotool getactivewindow)" pic-window-"$(date '+%y%m%d-%H%M-%S').png" ;;
- "full screen") maim pic-full-"$(date '+%y%m%d-%H%M-%S').png" ;;
- "a selected area (copy)") maim -s | xclip -selection clipboard -t image/png ;;
- "current window (copy)") maim -i "$(xdotool getactivewindow)" | xclip -selection clipboard -t image/png ;;
- "full screen (copy)") maim | xclip -selection clipboard -t image/png ;;
+ "a selected area") maim -s pic-selected-"${output}" ;;
+ "current window") maim -q -d 0.2 -i "$(xdotool getactivewindow)" pic-window-"${output}" ;;
+ "full screen") maim -q -d 0.2 pic-full-"${output}" ;;
+ "a selected area (copy)") maim -s | ${xclip_cmd} ;;
+ "current window (copy)") maim -q -d 0.2 -i "$(xdotool getactivewindow)" | ${xclip_cmd} ;;
+ "full screen (copy)") maim -q -d 0.2 | ${xclip_cmd} ;;
esac
diff --git a/.local/bin/noisereduce b/.local/bin/noisereduce
index 8d9598c..c344760 100644..100755
--- a/.local/bin/noisereduce
+++ b/.local/bin/noisereduce
@@ -7,8 +7,8 @@ usage ()
}
# Tests for requirements
-ffmpeg -version >/dev/null || { echo >&2 "We require 'ffmpeg' but it's not installed. Install it by 'sudo apt-get install ffmpeg' Aborting."; exit 1; }
-sox --version >/dev/null || { echo >&2 "We require 'sox' but it's not installed. Install it by 'sudo apt-get install sox' Aborting."; exit 1; }
+ifinstalled ffmpeg || { echo >&2 "We require 'ffmpeg' but it's not installed."; exit 1; }
+ifinstalled sox || { echo >&2 "We require 'ffmpeg' but it's not installed."; exit 1; }
if [ "$#" -ne 2 ]
then
@@ -50,7 +50,7 @@ if [ -z "$sampleStart" ] ; then sampleStart="00:00:00"; fi
printf "Sample noise end time [00:00:00.900]: "
read -r sampleEnd
if [ -z "$sampleEnd" ] ; then sampleEnd="00:00:00.900"; fi
-printf "Noise reduction amount [0.21]: "
+printf "Noise reduction amount [0.21]: "
read -r sensitivity
if [ -z "$sensitivity" ] ; then sensitivity="0.21"; fi
diff --git a/.local/bin/opout b/.local/bin/opout
index 7f452df..faf6575 100755
--- a/.local/bin/opout
+++ b/.local/bin/opout
@@ -4,7 +4,7 @@
# usually the pdf of a compiled document. I find this useful especially
# running from vim.
-basename="$(echo "${*}" | sed 's/\.[^\/.]*$//')"
+basename="${1%.*}"
case "${*}" in
*.tex|*.m[dse]|*.[rR]md|*.mom|*.[0-9]) setsid -f xdg-open "$basename".pdf >/dev/null 2>&1 ;;
diff --git a/.local/bin/otp b/.local/bin/otp
new file mode 100755
index 0000000..1726b1a
--- /dev/null
+++ b/.local/bin/otp
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# Get a one-time password, or add a OTP secret to your pass-otp store.
+
+# The assumption of this script is that all otp passwords are stored with the
+# suffix `-otp`. This script automatically appends newly added otps as such.
+
+# For OTP passwords to be generated properly, it is important for the local
+# computer to have its time properly synced. This can be done with the command
+# below which requires the package `ntp`.
+
+ifinstalled pass pass-otp
+
+dir="${PASSWORD_STORE_DIR}"
+
+choice="$({ echo "๐Ÿ†•add" ; echo "๐Ÿ•™sync-time" ; ls ${dir}/*-otp.gpg ;} | sed "s/.*\///;s/-otp.gpg//" | dmenu -p "Pick a 2FA:")"
+
+case $choice in
+ ๐Ÿ†•add )
+ ifinstalled maim zbar xclip || exit 1
+
+ temp="$dir/temp.png"
+ otp="otp-test-script"
+ trap 'shred -fu $temp; pass rm $otp' HUP INT QUIT TERM PWR EXIT
+
+ notify-send "Scan the image." "Scan the OTP QR code."
+
+ maim -s "$temp" || exit 1
+ info="$(zbarimg -q "$temp")"
+ info="${info#QR-Code:}"
+ issuer="$(echo "$info" | grep -o "issuer=[A-z0-9]\+")"
+ name="${issuer#issuer=}"
+
+ if echo "$info" | pass otp insert "$otp"; then
+ while true ; do
+ export name="$(dmenu -p "Give this One Time Password a one-word name:")"
+ echo "$name" | grep -q -- "^[A-z0-9-]\+$" && break
+ done
+ pass mv "$otp" "$name-otp"
+ notify-send "Successfully added." "$name-otp has been created."
+ else
+ notify-send "No OTP data found." "Try to scan the image again more precisely."
+ fi
+
+ ;;
+ ๐Ÿ•™sync-time )
+ ifinstalled ntp || exit 1
+ notify-send -u low "๐Ÿ•™ Synchronizing Time..." "Synching time with remote NTP servers..."
+ updatedata="$(sudo ntpdate pool.ntp.org)" &&
+ notify-send -u low "๐Ÿ•™ Synchronizing Time..." "Done. Time changed by ${updatedata#*offset }"
+ ;;
+ *) pass otp -c ${choice}-otp ;;
+esac
diff --git a/.local/bin/peertubetorrent b/.local/bin/peertubetorrent
index 56f2476..4d8f630 100755
--- a/.local/bin/peertubetorrent
+++ b/.local/bin/peertubetorrent
@@ -1,7 +1,9 @@
#!/bin/sh
# torrent peertube videos, requires the transadd script
-# first argument is the video link, second is the quality (480 or 1080)
+# first argument is the video link, second is the quality (360, 480 or 1080)
# 13/07/20 - Arthur Bais
-link="$(echo "$1" | sed "s/videos\/watch/download\/torrents/")""-$2.torrent"
+instance=$(echo "$1" | sed "s|/w.\+||")
+vidid=$(echo "$1" | sed "s|.\+/||")
+link=$(curl -s "$instance/api/v1/videos/$vidid" | grep -o "$instance/download/torrents/.\{37\}$2.torrent")
transadd "$link"
diff --git a/.local/bin/qndl b/.local/bin/qndl
index f6fbe87..48bc61e 100755
--- a/.local/bin/qndl
+++ b/.local/bin/qndl
@@ -5,7 +5,7 @@
base="$(basename "$1")"
notify-send "โณ Queuing $base..."
cmd="$2"
-[ -z "$cmd" ] && cmd="youtube-dl --add-metadata -ic"
+[ -z "$cmd" ] && cmd="yt-dlp --embed-metadata -ic"
idnum="$(tsp $cmd "$1")"
realname="$(echo "$base" | sed "s/?\(source\|dest\).*//;s/%20/ /g")"
tsp -D "$idnum" mv "$base" "$realname"
diff --git a/.local/bin/queueandnotify b/.local/bin/queueandnotify
index a54b13e..1c3025c 100755
--- a/.local/bin/queueandnotify
+++ b/.local/bin/queueandnotify
@@ -2,12 +2,12 @@
# Podboat sucks. This script replaces it.
# It reads the newsboat queue, queuing downloads with taskspooler.
-# It also removes the junk from extentions.
+# It also removes the junk from extensions.
queuefile="${XDG_DATA_HOME:-$HOME/.local/share}/newsboat/queue"
while read -r line; do
[ -z "$line" ] && continue
- url="$(echo "$line" | awk '{print $1}')"
+ url="${line%%[ ]*}"
qndl "$url" "curl -LO"
done < "$queuefile"
diff --git a/.local/bin/remaps b/.local/bin/remaps
index 3cb41e4..c95ac84 100755
--- a/.local/bin/remaps
+++ b/.local/bin/remaps
@@ -1,13 +1,11 @@
#!/bin/sh
# This script is called on startup to remap keys.
-# Increase key speed via a rate change
+# Decrease key repeat delay to 300ms and increase key repeat rate to 50 per second.
xset r rate 300 50
-# Map the caps lock key to super...
-setxkbmap -option caps:super
-# But when it is pressed only once, treat it as escape.
+# Map the caps lock key to super, and map the menu key to right super.
+setxkbmap -option caps:super,altwin:menu_win
+# When caps lock is pressed only once, treat it as escape.
killall xcape 2>/dev/null ; xcape -e 'Super_L=Escape'
-# Map the menu button to right super as well.
-xmodmap -e 'keycode 135 = Super_R'
-# Turn off the caps lock if on since there is no longer a key for it.
+# Turn off caps lock if on since there is no longer a key for it.
xset -q | grep "Caps Lock:\s*on" && xdotool key Caps_Lock
diff --git a/.local/bin/samedir b/.local/bin/samedir
index 73facfd..371ec64 100755
--- a/.local/bin/samedir
+++ b/.local/bin/samedir
@@ -2,7 +2,9 @@
# Open a terminal window in the same directory as the currently active window.
-PID=$(xprop -id "$(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')" | grep -m 1 PID | cut -d " " -f 3)
-PID="$(pstree -lpA "$PID" | tail -n 1 | awk -F'---' '{print $NF}' | sed -re 's/[^0-9]//g')"
+PID=$(xprop -id "$(xprop -root | xprop -root | sed -n "/_NET_ACTIVE_WINDOW/ s/^.*# // p")" | sed -n "/PID/ s/^.*= // p")
+PID="$(pstree -lpA "$PID")"
+PID="${PID##*"${SHELL##*/}"(}"
+PID="${PID%%)*}"
cd "$(readlink /proc/"$PID"/cwd)" || return 1
"$TERMINAL"
diff --git a/.local/bin/setbg b/.local/bin/setbg
index 8112bcd..2829896 100755
--- a/.local/bin/setbg
+++ b/.local/bin/setbg
@@ -7,7 +7,11 @@
# If wal is installed, also generates a colorscheme.
# Location of link to wallpaper link.
-bgloc="${XDG_DATA_HOME:-$HOME/.local/share/}/bg"
+bgloc="${XDG_DATA_HOME:-$HOME/.local/share}/bg"
+
+# Configuration files of applications that have their themes changed by pywal.
+dunstconf="${XDG_CONFIG_HOME:-$HOME/.config}/dunst/dunstrc"
+zathuraconf="${XDG_CONFIG_HOME:-$HOME/.config}/zathura/zathurarc"
trueloc="$(readlink -f "$1")" &&
case "$(file --mime-type -b "$trueloc")" in
@@ -17,8 +21,13 @@ case "$(file --mime-type -b "$trueloc")" in
esac
# If pywal is installed, use it.
-command -v wal >/dev/null 2>&1 &&
- wal -i "$trueloc" -o "${XDG_CONFIG_HOME:-$HOME/.config}/wal/postrun" >/dev/null 2>&1 &&
+if command -v wal >/dev/null 2>&1 ; then
+ wal -i "$(readlink -f $bgloc)" -o "${XDG_CONFIG_HOME:-$HOME/.config}/wal/postrun" >/dev/null 2>&1 &&
pidof dwm >/dev/null && xdotool key super+F12
+# If pywal is removed, return config files to normal.
+else
+ [ -f "$dunstconf.bak" ] && unlink "$dunstconf" && mv "$dunstconf.bak" "$dunstconf"
+ [ -f "$zathuraconf.bak" ] && unlink "$zathuraconf" && mv "$zathuraconf.bak" "$zathuraconf"
+fi
xwallpaper --zoom "$bgloc"
diff --git a/.local/bin/shortcuts b/.local/bin/shortcuts
index 5497345..8fecea2 100755
--- a/.local/bin/shortcuts
+++ b/.local/bin/shortcuts
@@ -7,13 +7,14 @@ bmfiles="${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-files"
shell_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
zsh_named_dirs="${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
lf_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcutrc"
+vim_shortcuts="${XDG_CONFIG_HOME:-$HOME/.config}/nvim/shortcuts.vim"
ranger_shortcuts="/dev/null"
qute_shortcuts="/dev/null"
fish_shortcuts="/dev/null"
vifm_shortcuts="/dev/null"
# Remove, prepare files
-rm -f "$lf_shortcuts" "$ranger_shortcuts" "$qute_shortcuts" "$zsh_named_dirs" 2>/dev/null
+rm -f "$lf_shortcuts" "$ranger_shortcuts" "$qute_shortcuts" "$zsh_named_dirs" "$vim_shortcuts" 2>/dev/null
printf "# vim: filetype=sh\\n" > "$fish_shortcuts"
printf "# vim: filetype=sh\\nalias " > "$shell_shortcuts"
printf "\" vim: filetype=vim\\n" > "$vifm_shortcuts"
@@ -21,20 +22,22 @@ printf "\" vim: filetype=vim\\n" > "$vifm_shortcuts"
# Format the `directories` file in the correct syntax and sent it to all three configs.
eval "echo \"$(cat "$bmdirs")\"" | \
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
- printf(\"%s=\42cd %s && ls -a\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
- printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
- printf(\"abbr %s \42cd %s; and ls -a\42\n\",\$1,\$2) >> \"$fish_shortcuts\" ;
- printf(\"map g%s :cd %s<CR>\nmap t%s <tab>:cd %s<CR><tab>\nmap M%s <tab>:cd %s<CR><tab>:mo<CR>\nmap Y%s <tab>:cd %s<CR><tab>:co<CR> \n\",\$1,\$2, \$1, \$2, \$1, \$2, \$1, \$2) >> \"$vifm_shortcuts\" ;
- printf(\"config.bind(';%s', \42set downloads.location.directory %s ;; hint links download\42) \n\",\$1,\$2) >> \"$qute_shortcuts\" ;
- printf(\"map g%s cd %s\nmap t%s tab_new %s\nmap m%s shell mv -v %%s %s\nmap Y%s shell cp -rv %%s %s \n\",\$1,\$2,\$1,\$2, \$1, \$2, \$1, \$2) >> \"$ranger_shortcuts\" ;
- printf(\"map C%s cd \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" }"
+ printf(\"%s=\42cd %s && ls -a\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
+ printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
+ printf(\"abbr %s \42cd %s; and ls -a\42\n\",\$1,\$2) >> \"$fish_shortcuts\" ;
+ printf(\"map g%s :cd %s<CR>\nmap t%s <tab>:cd %s<CR><tab>\nmap M%s <tab>:cd %s<CR><tab>:mo<CR>\nmap Y%s <tab>:cd %s<CR><tab>:co<CR> \n\",\$1,\$2, \$1, \$2, \$1, \$2, \$1, \$2) >> \"$vifm_shortcuts\" ;
+ printf(\"config.bind(';%s', \42set downloads.location.directory %s ;; hint links download\42) \n\",\$1,\$2) >> \"$qute_shortcuts\" ;
+ printf(\"map g%s cd %s\nmap t%s tab_new %s\nmap m%s shell mv -v %%s %s\nmap Y%s shell cp -rv %%s %s \n\",\$1,\$2,\$1,\$2, \$1, \$2, \$1, \$2) >> \"$ranger_shortcuts\" ;
+ printf(\"map C%s cd \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" ;
+ printf(\"cmap ;%s %s\n\",\$1,\$2) >> \"$vim_shortcuts\" }"
# Format the `files` file in the correct syntax and sent it to both configs.
eval "echo \"$(cat "$bmfiles")\"" | \
awk "!/^\s*#/ && !/^\s*\$/ {gsub(\"\\\s*#.*$\",\"\");
- printf(\"%s=\42\$EDITOR %s\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
- printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
+ printf(\"%s=\42\$EDITOR %s\42 \\\\\n\",\$1,\$2) >> \"$shell_shortcuts\" ;
+ printf(\"hash -d %s=%s \n\",\$1,\$2) >> \"$zsh_named_dirs\" ;
printf(\"abbr %s \42\$EDITOR %s\42 \n\",\$1,\$2) >> \"$fish_shortcuts\" ;
printf(\"map %s :e %s<CR> \n\",\$1,\$2) >> \"$vifm_shortcuts\" ;
printf(\"map %s shell \$EDITOR %s \n\",\$1,\$2) >> \"$ranger_shortcuts\" ;
- printf(\"map E%s \$\$EDITOR \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" }"
+ printf(\"map E%s \$\$EDITOR \42%s\42 \n\",\$1,\$2) >> \"$lf_shortcuts\" ;
+ printf(\"cmap ;%s %s\n\",\$1,\$2) >> \"$vim_shortcuts\" }"
diff --git a/.local/bin/statusbar/sb-battery b/.local/bin/statusbar/sb-battery
index 382b31b..93cbe08 100755
--- a/.local/bin/statusbar/sb-battery
+++ b/.local/bin/statusbar/sb-battery
@@ -21,16 +21,17 @@ for battery in /sys/class/power_supply/BAT?*; do
# If non-first battery, print a space separator.
[ -n "${capacity+x}" ] && printf " "
# Sets up the status and capacity
- case "$(cat "$battery/status")" in
+ case "$(cat "$battery/status" 2>&1)" in
"Full") status="โšก" ;;
"Discharging") status="๐Ÿ”‹" ;;
"Charging") status="๐Ÿ”Œ" ;;
"Not charging") status="๐Ÿ›‘" ;;
"Unknown") status="โ™ป๏ธ" ;;
+ *) exit 1 ;;
esac
- capacity=$(cat "$battery/capacity")
+ capacity="$(cat "$battery/capacity" 2>&1)"
# Will make a warn variable if discharging and low
[ "$status" = "๐Ÿ”‹" ] && [ "$capacity" -le 25 ] && warn="โ—"
# Prints the info
printf "%s%s%d%%" "$status" "$warn" "$capacity"; unset warn
-done && exit 0
+done && printf "\\n"
diff --git a/.local/bin/statusbar/sb-clock b/.local/bin/statusbar/sb-clock
index d25e8d0..e1ca8c7 100755
--- a/.local/bin/statusbar/sb-clock
+++ b/.local/bin/statusbar/sb-clock
@@ -19,7 +19,7 @@ case "$clock" in
esac
case $BLOCK_BUTTON in
- 1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"red\">/;s/..27m/<\/span><\/b>/")" && notify-send "Appointments" "$(calcurse -d3)" ;;
+ 1) notify-send "This Month" "$(cal --color=always | sed "s/..7m/<b><span color=\"red\">/;s|..27m|</span></b>|")" && notify-send "Appointments" "$(calcurse -d3)" ;;
2) setsid -f "$TERMINAL" -e calcurse ;;
3) notify-send "๐Ÿ“… Time/date module" "\- Left click to show upcoming appointments for the next three days via \`calcurse -d3\` and show the month via \`cal\`
- Middle click opens calcurse if installed" ;;
diff --git a/.local/bin/statusbar/sb-doppler b/.local/bin/statusbar/sb-doppler
index dc93db0..dabf18b 100755
--- a/.local/bin/statusbar/sb-doppler
+++ b/.local/bin/statusbar/sb-doppler
@@ -1,194 +1,248 @@
#!/bin/sh
-# Show a Doppler RADAR of an American user's preferred location.
+# Show a Doppler RADAR of a user's preferred location.
secs=600 # Download a new doppler radar if one hasn't been downloaded in $secs seconds.
radarloc="${XDG_CACHE_HOME:-$HOME/.cache}/radar"
doppler="${XDG_CACHE_HOME:-$HOME/.cache}/doppler.gif"
-pickloc() { chosen="$(echo "Northeast
-Southeast
-PacNorthWest
-PacSouthWest
-UpperMissVly
-SouthMissVly
-SouthPlains
-NorthRockies
-SouthRockies
-Alaska
-Carib
-Hawaii
-CentGrLakes
-Conus-Large
-KABR: Aberdeen, SD
-KBIS: Bismarck, ND
-KFTG: Denver/Boulder, CO
-KDMX: Des Moines, IA
-KDTX: Detroit, MI
-KDDC: Dodge City, KS
-KDLH: Duluth, MN
-KCYS: Cheyenne, WY
-KLOT: Chicago, IL
-KGLD: Goodland, KS
-KUEX: Hastings, NE
-KGJX: Grand Junction, CO
-KGRR: Grand Rapids, MI
-KMVX: Fargo/Grand Forks, ND
-KGRB: Green Bay, WI
-KIND: Indianapolis, IN
-KJKL: Jackson, KY
-KARX: La Crosse, WI
-KILX: Lincoln/Central Illinois, IL
-KLVX: Louisville, KY
-KMQT: Marquette
-KMKX: Milwaukee, WI
-KMPX: Minneapolis, MN
-KAPX: Gaylord/Alpena, MI
-KLNX: North Platte, NE
-KIWX: N. Webster/Northern, IN
-KOAX: Omaha, NE
-KPAH: Paducah, KY
-KEAX: Pleasant Hill, MO
-KPUX: Pueblo, CO
-KDVN: Quad Cities, IA
-KUDX: Rapid City, SD
-KRIW: Riverton, WY
-KSGF: Springfield, MO
-KLSX: St. LOUIS, MO
-KFSD: Sioux Falls, IA
-KTWX: Topeka, KS
-KICT: Wichita, KS
-KVWX: Paducah, KY
-ICAO: Responsible Wfo
-KLTX: WILMINGTON, NC
-KCCX: State College/Central, PA
-KLWX: Sterling, VA
-KFCX: Blacksburg/Roanoke, VA
-KRAX: Raleigh/Durham, NC
-KGYX: Portland, ME
-KDIX: Mt Holly/Philadelphia, PA
-KPBZ: Pittsburgh, PA
-KAKQ: Wakefield, VA
-KMHX: Morehead City, NC
-KGSP: Greer/Greenville/Sprtbg, SC
-KILN: Wilmington/Cincinnati, OH
-KCLE: Cleveland, OH
-KCAE: Columbia, SC
-KBGM: Binghamton, NY
-KENX: Albany, NY
-KBUF: Buffalo, NY
-KCXX: Burlington, VT
-KCBW: Caribou, ME
-KBOX: Boston /Taunton, MA
-KOKX: New York City, NY
-KCLX: Charleston, SC
-KRLX: Charleston, WV
-ICAO: Responsible WFO
-KBRO: Brownsville, TX
-KABX: Albuquerque, NM
-KAMA: Amarillo, TX
-KFFC: Peachtree City/Atlanta, GA
-KEWX: Austin/Sanantonio, TX
-KBMX: Birmingham, AL
-KCRP: Corpus Christi, TX
-KFWS: Dallas / Ft. Worth, TX
-KEPZ: El Paso, TX
-KHGX: Houston/ Galveston, TX
-KJAX: Jacksonville, FL
-KBYX: Key West, FL
-KMRX: Morristown/knoxville, TN
-KLBB: Lubbock, TX
-KLZK: Little Rock, AR
-KLCH: Lake Charles, LA
-KOHX: Nashville, TN
-KMLB: Melbourne, FL
-KNQA: Memphis, TN
-KAMX: Miami, FL
-KMAF: Midland/odessa, TX
-KTLX: Norman, OK
-KHTX: Huntsville, AL
-KMOB: Mobile, AL
-KTLH: Tallahassee, FL
-KTBW: Tampa Bay Area, FL
-KSJT: San Angelo, TX
-KINX: Tulsa, OK
-KSRX: Tulsa, OK
-KLIX: New Orleans/slidell, LA
-KDGX: Jackson, MS
-KSHV: Shreveport, LA
-ICAO: Responsible WFO
-KLGX: Seattle / Tacoma, WA
-KOTX: Spokane, WA
-KEMX: Tucson, AZ
-KYUX: Phoenix, AZ
-KNKX: San Diego, CA
-KMUX: Monterey/san Francisco, CA
-KHNX: San Joaquin/hanford, CA
-KSOX: San Diego, CA
-KATX: Seattle / Tacoma, WA
-KIWA: Phoenix, AZ
-KRTX: Portland, OR
-KSFX: Pocatello, ID
-KRGX: Reno, NV
-KDAX: Sacramento, CA
-KMTX: Salt Lake City, UT
-KPDT: Pendleton, OR
-KMSX: Missoula, MT
-KESX: Las Vegas, NV
-KVTX: Los Angeles, CA
-KMAX: Medford, OR
-KFSX: Flagstaff, AZ
-KGGW: Glasgow, MT
-KLRX: Elko, NV
-KBHX: Eureka, CA
-KTFX: Great Falls, MT
-KCBX: Boise, ID
-KBLX: Billings, MT
-KICX: Salt Lake City, UT
-ICAO: Responsible Wfo W/ MSCF
-PABC: Anchorage, AK
-PAPD: Fairbanks, AK
-PHKM: Honolulu, HI
-PAHG: Anchorage, AK
-PAKC: Anchorage, AK
-PAIH: Anchorage, AK
-PHMO: Honolulu, HI
-PAEC: Fairbanks, AK
-TJUA: San Juan, PR
-PACG: Juneau, AK
-PHKI: Honolulu, HI
-PHWA: Honolulu, HI
-ICAO: Responsible Wfo W/ MSCF
-KFDR: Norman, OK
-PGUA: Guam
-KBBX: Sacramento, CA
-KFDX: Albuquerque, NM
-KGWX: Jackson, MS
-KDOX: Wakefield, VA
-KDYX: San Angelo, TX
-KEYX: Las Vegas, NV
-KEVX: Mobile, AL
-KHPX: Paducah, KY
-KTYX: Burlington, VT
-KGRK: Dallas / Ft. Worth, TX
-KPOE: Lake Charles, LA
-KEOX: Tallahassee, FL
-KHDX: El Paso, TX
-KDFX: San Antonio, TX
-KMXX: Birmingham, AL
-KMBX: Bismarck, ND
-KVAX: Jacksonville, FL
-KJGX: Peachtree City/atlanta, GA
-KVNX: Norman, OK
-KVBX: Vandenberg Afb: Orcutt, CA" | dmenu -r -i -l 50 -p "Select a National Weather Service radar to use as default:" | sed "s/:.*//" | tr "[:lower:]" "[:upper:]")"
+pickloc() { chosen="$(echo "US: Northeast
+US: Southeast
+US: PacNorthWest
+US: PacSouthWest
+US: UpperMissVly
+US: SouthMissVly
+US: SouthPlains
+US: NorthRockies
+US: SouthRockies
+US: Alaska
+US: Carib
+US: Hawaii
+US: CentGrLakes
+US: Conus-Large
+US: KABR: Aberdeen, SD
+US: KBIS: Bismarck, ND
+US: KFTG: Denver/Boulder, CO
+US: KDMX: Des Moines, IA
+US: KDTX: Detroit, MI
+US: KDDC: Dodge City, KS
+US: KDLH: Duluth, MN
+US: KCYS: Cheyenne, WY
+US: KLOT: Chicago, IL
+US: KGLD: Goodland, KS
+US: KUEX: Hastings, NE
+US: KGJX: Grand Junction, CO
+US: KGRR: Grand Rapids, MI
+US: KMVX: Fargo/Grand Forks, ND
+US: KGRB: Green Bay, WI
+US: KIND: Indianapolis, IN
+US: KJKL: Jackson, KY
+US: KARX: La Crosse, WI
+US: KILX: Lincoln/Central Illinois, IL
+US: KLVX: Louisville, KY
+US: KMQT: Marquette
+US: KMKX: Milwaukee, WI
+US: KMPX: Minneapolis, MN
+US: KAPX: Gaylord/Alpena, MI
+US: KLNX: North Platte, NE
+US: KIWX: N. Webster/Northern, IN
+US: KOAX: Omaha, NE
+US: KPAH: Paducah, KY
+US: KEAX: Pleasant Hill, MO
+US: KPUX: Pueblo, CO
+US: KDVN: Quad Cities, IA
+US: KUDX: Rapid City, SD
+US: KRIW: Riverton, WY
+US: KSGF: Springfield, MO
+US: KLSX: St. LOUIS, MO
+US: KFSD: Sioux Falls, IA
+US: KTWX: Topeka, KS
+US: KICT: Wichita, KS
+US: KVWX: Paducah, KY
+US: ICAO: Responsible Wfo
+US: KLTX: WILMINGTON, NC
+US: KCCX: State College/Central, PA
+US: KLWX: Sterling, VA
+US: KFCX: Blacksburg/Roanoke, VA
+US: KRAX: Raleigh/Durham, NC
+US: KGYX: Portland, ME
+US: KDIX: Mt Holly/Philadelphia, PA
+US: KPBZ: Pittsburgh, PA
+US: KAKQ: Wakefield, VA
+US: KMHX: Morehead City, NC
+US: KGSP: Greer/Greenville/Sprtbg, SC
+US: KILN: Wilmington/Cincinnati, OH
+US: KCLE: Cleveland, OH
+US: KCAE: Columbia, SC
+US: KBGM: Binghamton, NY
+US: KENX: Albany, NY
+US: KBUF: Buffalo, NY
+US: KCXX: Burlington, VT
+US: KCBW: Caribou, ME
+US: KBOX: Boston /Taunton, MA
+US: KOKX: New York City, NY
+US: KCLX: Charleston, SC
+US: KRLX: Charleston, WV
+US: ICAO: Responsible WFO
+US: KBRO: Brownsville, TX
+US: KABX: Albuquerque, NM
+US: KAMA: Amarillo, TX
+US: KFFC: Peachtree City/Atlanta, GA
+US: KEWX: Austin/Sanantonio, TX
+US: KBMX: Birmingham, AL
+US: KCRP: Corpus Christi, TX
+US: KFWS: Dallas / Ft. Worth, TX
+US: KEPZ: El Paso, TX
+US: KHGX: Houston/ Galveston, TX
+US: KJAX: Jacksonville, FL
+US: KBYX: Key West, FL
+US: KMRX: Morristown/knoxville, TN
+US: KLBB: Lubbock, TX
+US: KLZK: Little Rock, AR
+US: KLCH: Lake Charles, LA
+US: KOHX: Nashville, TN
+US: KMLB: Melbourne, FL
+US: KNQA: Memphis, TN
+US: KAMX: Miami, FL
+US: KMAF: Midland/odessa, TX
+US: KTLX: Norman, OK
+US: KHTX: Huntsville, AL
+US: KMOB: Mobile, AL
+US: KTLH: Tallahassee, FL
+US: KTBW: Tampa Bay Area, FL
+US: KSJT: San Angelo, TX
+US: KINX: Tulsa, OK
+US: KSRX: Tulsa, OK
+US: KLIX: New Orleans/slidell, LA
+US: KDGX: Jackson, MS
+US: KSHV: Shreveport, LA
+US: ICAO: Responsible WFO
+US: KLGX: Seattle / Tacoma, WA
+US: KOTX: Spokane, WA
+US: KEMX: Tucson, AZ
+US: KYUX: Phoenix, AZ
+US: KNKX: San Diego, CA
+US: KMUX: Monterey/san Francisco, CA
+US: KHNX: San Joaquin/hanford, CA
+US: KSOX: San Diego, CA
+US: KATX: Seattle / Tacoma, WA
+US: KIWA: Phoenix, AZ
+US: KRTX: Portland, OR
+US: KSFX: Pocatello, ID
+US: KRGX: Reno, NV
+US: KDAX: Sacramento, CA
+US: KMTX: Salt Lake City, UT
+US: KPDT: Pendleton, OR
+US: KMSX: Missoula, MT
+US: KESX: Las Vegas, NV
+US: KVTX: Los Angeles, CA
+US: KMAX: Medford, OR
+US: KFSX: Flagstaff, AZ
+US: KGGW: Glasgow, MT
+US: KLRX: Elko, NV
+US: KBHX: Eureka, CA
+US: KTFX: Great Falls, MT
+US: KCBX: Boise, ID
+US: KBLX: Billings, MT
+US: KICX: Salt Lake City, UT
+US: ICAO: Responsible Wfo W/ MSCF
+US: PABC: Anchorage, AK
+US: PAPD: Fairbanks, AK
+US: PHKM: Honolulu, HI
+US: PAHG: Anchorage, AK
+US: PAKC: Anchorage, AK
+US: PAIH: Anchorage, AK
+US: PHMO: Honolulu, HI
+US: PAEC: Fairbanks, AK
+US: TJUA: San Juan, PR
+US: PACG: Juneau, AK
+US: PHKI: Honolulu, HI
+US: PHWA: Honolulu, HI
+US: ICAO: Responsible Wfo W/ MSCF
+US: KFDR: Norman, OK
+US: PGUA: Guam
+US: KBBX: Sacramento, CA
+US: KFDX: Albuquerque, NM
+US: KGWX: Jackson, MS
+US: KDOX: Wakefield, VA
+US: KDYX: San Angelo, TX
+US: KEYX: Las Vegas, NV
+US: KEVX: Mobile, AL
+US: KHPX: Paducah, KY
+US: KTYX: Burlington, VT
+US: KGRK: Dallas / Ft. Worth, TX
+US: KPOE: Lake Charles, LA
+US: KEOX: Tallahassee, FL
+US: KHDX: El Paso, TX
+US: KDFX: San Antonio, TX
+US: KMXX: Birmingham, AL
+US: KMBX: Bismarck, ND
+US: KVAX: Jacksonville, FL
+US: KJGX: Peachtree City/atlanta, GA
+US: KVNX: Norman, OK
+US: KVBX: Vandenberg Afb: Orcutt, CA
+EU: Europe
+EU: GB: Great Brittain
+EU: SCAN: Scandinavia
+EU: ALPS: The Alps
+EU: NL: The Netherlands
+EU: DE: Germany
+EU: SP: Spain
+EU: FR: France
+EU: IT: Italy
+EU: PL: Poland
+EU: GR: Greece
+EU: TU: Turkey
+EU: RU: Russia
+EU: BA: Bahrain
+EU: BC: Botswana
+EU: SE: Republic of Seychelles
+EU: HU: Hungary
+EU: UK: Ukraine
+AF: AF: Africa
+AF: WA: West Africa
+AF: ZA: South Africa
+AF: DZ: Algeria
+AF: CE: Canary Islands
+AF: NG: Nigeria
+AF: TD: Chad
+AF: CG: Democratic Republic of Congo
+AF: EG: Egypt
+AF: ET: Ethiopia
+AF: CM: Cameroon
+AF: IS: Israel
+AF: LY: Libya
+AF: MG: Madagascar
+AF: MO: Morocco
+AF: BW: Namibia
+AF: SA: Saudi Arabia
+AF: SO: Somalia
+AF: SD: Sudan
+AF: TZ: Tanzania
+AF: TN: Tunisia
+AF: ZM: Zambia
+AF: KE: Kenya
+AF: AO: Angola" | dmenu -r -i -l 50 -p "Select a radar to use as default:" | tr "[:lower:]" "[:upper:]")"
+
+# Set continent code and radar code.
+continentcode=$(echo "$chosen" | sed "s/:.*//")
+radarcode=$(echo "$chosen" | sed "s/..: // ; s/:.*//")
# Sanity check of selection and ensure user did not escape.
-echo "$chosen" | grep -q "^[A-Z]\+$" && echo "$chosen" > "$radarloc" ;}
+echo "$radarcode" | grep -q "^[A-Z]\+$" && printf "%s,%s\\n" "$continentcode" "$radarcode" > "$radarloc" ;}
getdoppler() {
- loc="$(cat "$radarloc")"
+ cont="$(sed "s/,.*//" "$radarloc")"
+ loc="$(cut -c 4- "$radarloc")"
notify-send "๐ŸŒฆ๏ธ Doppler RADAR" "Pulling most recent Doppler RADAR for $loc."
- curl -sL "https://radar.weather.gov/ridge/lite/${loc}_loop.gif" > "$doppler" ;}
+ if [ "$cont" = "US" ] ; then
+ curl -sL "https://radar.weather.gov/ridge/lite/${loc}_loop.gif" > "$doppler" ;
+ elif [ "$cont" = "EU" ] ; then
+ curl -sL "https://api.sat24.com/animated/${loc}/rainTMC/2/" > "$doppler" ;
+ elif [ "$cont" = "AF" ] ; then
+ curl -sL "https://api.sat24.com/animated/${loc}/rain/2/" > "$doppler" ;
+ fi
+}
showdoppler() { setsid -f mpv --no-osc --loop=inf --no-terminal "$doppler" ;}
@@ -198,7 +252,7 @@ case $BLOCK_BUTTON in
showdoppler ;;
2) pickloc && getdoppler && showdoppler ;;
3) notify-send "๐Ÿ—บ๏ธ Doppler RADAR module" "\- Left click for local Doppler RADAR.
-- Middle click to update change RADAR location.
+- Middle click to update RADAR location.
After $secs seconds, new clicks will also automatically update the doppler RADAR." ;;
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
esac
diff --git a/.local/bin/statusbar/sb-internet b/.local/bin/statusbar/sb-internet
index ee1a160..94b7da2 100755
--- a/.local/bin/statusbar/sb-internet
+++ b/.local/bin/statusbar/sb-internet
@@ -7,6 +7,7 @@
case $BLOCK_BUTTON in
1) "$TERMINAL" -e nmtui; pkill -RTMIN+4 dwmblocks ;;
3) notify-send "๐ŸŒ Internet module" "\- Click to connect
+โŒ: wifi disabled
๐Ÿ“ก: no wifi connection
๐Ÿ“ถ: wifi connection with quality
โŽ: no ethernet
@@ -16,9 +17,10 @@ case $BLOCK_BUTTON in
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
esac
-case "$(cat /sys/class/net/w*/operstate 2>/dev/null)" in
- down) wifiicon="๐Ÿ“ก " ;;
- up) wifiicon="$(awk '/^\s*w/ { print "๐Ÿ“ถ", int($3 * 100 / 70) "% " }' /proc/net/wireless)" ;;
-esac
+if grep -xq 'up' /sys/class/net/w*/operstate 2>/dev/null ; then
+ wifiicon="$(awk '/^\s*w/ { print "๐Ÿ“ถ", int($3 * 100 / 70) "% " }' /proc/net/wireless)"
+elif grep -xq 'down' /sys/class/net/w*/operstate 2>/dev/null ; then
+ grep -xq '0x1003' /sys/class/net/w*/flags && wifiicon="๐Ÿ“ก " || wifiicon="โŒ "
+fi
printf "%s%s%s\n" "$wifiicon" "$(sed "s/down/โŽ/;s/up/๐ŸŒ/" /sys/class/net/e*/operstate 2>/dev/null)" "$(sed "s/.*/๐Ÿ”’/" /sys/class/net/tun*/operstate 2>/dev/null)"
diff --git a/.local/bin/statusbar/sb-mailbox b/.local/bin/statusbar/sb-mailbox
index 5a67428..2132184 100755
--- a/.local/bin/statusbar/sb-mailbox
+++ b/.local/bin/statusbar/sb-mailbox
@@ -5,7 +5,7 @@
case $BLOCK_BUTTON in
1) setsid -f "$TERMINAL" -e neomutt ;;
- 2) setsid -f mw sync >/dev/null ;;
+ 2) setsid -f mw -Y >/dev/null ;;
3) notify-send "๐Ÿ“ฌ Mail module" "\- Shows unread mail
- Shows ๐Ÿ”ƒ if syncing mail
- Left click opens neomutt
diff --git a/.local/bin/statusbar/sb-music b/.local/bin/statusbar/sb-music
index 7504313..7ea7032 100755
--- a/.local/bin/statusbar/sb-music
+++ b/.local/bin/statusbar/sb-music
@@ -1,6 +1,6 @@
#!/bin/sh
-filter() { mpc | sed "/^volume:/d;s/\\&/&amp;/g;s/\\[paused\\].*/โธ/g;/\\[playing\\].*/d" | paste -sd ' ' -;}
+filter() { mpc | sed "/^volume:/d;s/\\&/&amp;/g;s/\\[paused\\].*/โธ/g;/\\[playing\\].*/d;/^ERROR/Q" | paste -sd ' ' -;}
pidof -x sb-mpdup >/dev/null 2>&1 || sb-mpdup >/dev/null 2>&1 &
diff --git a/.local/bin/statusbar/sb-nettraf b/.local/bin/statusbar/sb-nettraf
index eb7a73b..178f677 100755
--- a/.local/bin/statusbar/sb-nettraf
+++ b/.local/bin/statusbar/sb-nettraf
@@ -17,7 +17,7 @@ update() {
read -r i < "$arg"
sum=$(( sum + i ))
done
- cache=${XDG_CACHE_HOME:-$HOME/.cache}/${1##*/}
+ cache=/tmp/${1##*/}
[ -f "$cache" ] && read -r old < "$cache" || old=0
printf %d\\n "$sum" > "$cache"
printf %d\\n $(( sum - old ))
@@ -26,4 +26,4 @@ update() {
rx=$(update /sys/class/net/[ew]*/statistics/rx_bytes)
tx=$(update /sys/class/net/[ew]*/statistics/tx_bytes)
-printf "๐Ÿ”ป%4sB ๐Ÿ”บ%4sB\\n" $(numfmt --to=iec $rx) $(numfmt --to=iec $tx)
+printf "๐Ÿ”ป%4sB ๐Ÿ”บ%4sB\\n" $(numfmt --to=iec $rx $tx)
diff --git a/.local/bin/statusbar/sb-price b/.local/bin/statusbar/sb-price
index 35b072f..42c84c1 100755
--- a/.local/bin/statusbar/sb-price
+++ b/.local/bin/statusbar/sb-price
@@ -1,19 +1,24 @@
#!/bin/sh
# Usage:
-# price <url> <Name of currency> <icon>
+# price <url> <Name of currency> <icon> <Price to show in>
# price bat "Basic Attention Token" ๐Ÿฆ
# When the name of the currency is multi-word, put it in quotes.
[ -z "$3" ] && exit 1
+
+# use $4 as currency, if not passed in use "usd" as default
+currency="${4:-usd}"
interval="@14d" # History contained in chart preceded by '@' (7d = 7 days)
dir="${XDG_DATA_HOME:-$HOME/.local/share}/crypto-prices"
-pricefile="$dir/$1"
-chartfile="$dir/$1-chart"
+pricefile="$dir/$1-$currency"
+chartfile="$dir/$1-$currency-chart"
-updateprice() { ping -q -c 1 example.org >/dev/null 2>&1 &&
- curl -s "rate.sx/1$1" > "$pricefile" &&
- curl -s "rate.sx/$1$interval" > "$chartfile" ;}
+updateprice() { temp="$(mktemp)"
+ curl -s "$currency.rate.sx/1$1" > "$temp" &&
+ mv -f "$temp" "$pricefile" &&
+ curl -s "$currency.rate.sx/$1$interval" > "$temp" &&
+ mv -f "$temp" "$chartfile" ;}
[ -d "$dir" ] || mkdir -p "$dir"
@@ -35,4 +40,11 @@ case $BLOCK_BUTTON in
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
esac
-printf "$3$%0.2f" "$(cat "$pricefile")"
+case "$currency" in
+ usd) symb="$" ;;
+ gbp) symb="ยฃ" ;;
+ eur) symb="โ‚ฌ" ;;
+ btc) symb="โ‚ฟ" ;;
+esac
+
+printf "$3$symb%0.2f$after" "$(cat "$pricefile")"
diff --git a/.local/bin/statusbar/sb-volume b/.local/bin/statusbar/sb-volume
index 61588c3..3cfdc45 100755
--- a/.local/bin/statusbar/sb-volume
+++ b/.local/bin/statusbar/sb-volume
@@ -19,10 +19,12 @@ vol="$(pamixer --get-volume)"
if [ "$vol" -gt "70" ]; then
icon="๐Ÿ”Š"
-elif [ "$vol" -lt "30" ]; then
+elif [ "$vol" -gt "30" ]; then
+ icon="๐Ÿ”‰"
+elif [ "$vol" -gt "0" ]; then
icon="๐Ÿ”ˆ"
else
- icon="๐Ÿ”‰"
+ echo ๐Ÿ”‡ && exit
fi
echo "$icon$vol%"
diff --git a/.local/bin/sysact b/.local/bin/sysact
index 5e3acf5..64c2f32 100755
--- a/.local/bin/sysact
+++ b/.local/bin/sysact
@@ -1,22 +1,26 @@
#!/bin/sh
# A dmenu wrapper script for system functions.
-
-# For non-systemd init systems.
+export WM="dwm"
case "$(readlink -f /sbin/init)" in
- *runit*) hib="sudo -A zzz" ;;
- *openrc*) reb="sudo -A openrc-shutdown -r"; shut="sudo -A openrc-shutdown -p 0" ;;
+ *systemd*) ctl='systemctl' ;;
+ *) ctl='loginctl' ;;
esac
-cmds="\
-๐Ÿ”’ lock slock
-๐Ÿšช leave dwm kill -TERM $(pgrep -u $USER "\bdwm$")
-โ™ป renew dwm kill -HUP $(pgrep -u $USER "\bdwm$")
-๐Ÿป hibernate slock ${hib:-systemctl suspend-then-hibernate -i}
-๐Ÿ”ƒ reboot ${reb:-sudo -A reboot}
-๐Ÿ–ฅ shutdown ${shut:-sudo -A shutdown -h now}
-๐Ÿ“บ display off xset dpms force off"
-
-choice="$(echo "$cmds" | cut -d' ' -f 1 | dmenu)" || exit 1
+wmpid(){ # This function is needed if there are multiple instances of the window manager.
+ tree="$(pstree -ps $$)"
+ tree="${tree#*$WM(}"
+ echo "${tree%%)*}"
+}
-`echo "$cmds" | grep "^$choice " | cut -d ' ' -f2-`
+case "$(printf "๐Ÿ”’ lock\n๐Ÿšช leave $WM\nโ™ป๏ธ renew $WM\n๐Ÿป hibernate\n๐Ÿ”ƒ reboot\n๐Ÿ–ฅ๏ธshutdown\n๐Ÿ’ค sleep\n๐Ÿ“บ display off" | dmenu -i -p 'Action: ')" in
+ '๐Ÿ”’ lock') slock ;;
+ "๐Ÿšช leave $WM") kill -TERM "$(wmpid)" ;;
+ "โ™ป๏ธ renew $WM") kill -HUP "$(wmpid)" ;;
+ '๐Ÿป hibernate') slock $ctl hibernate -i ;;
+ '๐Ÿ’ค sleep') slock $ctl suspend -i ;;
+ '๐Ÿ”ƒ reboot') $ctl reboot -i ;;
+ '๐Ÿ–ฅ๏ธshutdown') $ctl poweroff -i ;;
+ '๐Ÿ“บ display off') xset dpms force off ;;
+ *) exit 1 ;;
+esac
diff --git a/.local/bin/torwrap b/.local/bin/torwrap
index 4f94053..8b20ad4 100755
--- a/.local/bin/torwrap
+++ b/.local/bin/torwrap
@@ -1,6 +1,6 @@
#!/bin/sh
-ifinstalled tremc-git transmission-cli || exit
+ifinstalled tremc transmission-cli || exit
! pidof transmission-daemon >/dev/null && transmission-daemon && notify-send "Starting torrent daemon..."
diff --git a/.local/bin/tutorialvids b/.local/bin/tutorialvids
index 4a35db9..6d4914b 100755
--- a/.local/bin/tutorialvids
+++ b/.local/bin/tutorialvids
@@ -5,22 +5,22 @@
# add/remove videos from this list as I go on.
vidlist="
-dwm (window manager) https://www.youtube.com/watch?v=xnREqY-oyzM
-pacman (installing/managing programs) https://www.youtube.com/watch?v=-dEuXTMzRKs
-status bar https://www.youtube.com/watch?v=UP2QpHmcgyk
-sxiv (image viewer) https://www.youtube.com/watch?v=GYW9i_u5PYs
-st (terminal) https://www.youtube.com/watch?v=9H75enWM22k
-i3 (old window manager) https://www.youtube.com/watch?v=GKviflL9XeI
-neomutt (email) https://www.youtube.com/watch?v=2U3vRbF7v5A
-ncmpcpp (music player) https://www.youtube.com/watch?v=sZIEdI9TS2U
-newsboat (RSS reader) https://www.youtube.com/watch?v=dUFCRqs822w
-ranger (file manager) https://www.youtube.com/watch?v=L6Vu7WPkoJo
-zathura (pdf viewer) https://www.youtube.com/watch?v=V_Iz4zdyRM4
-gpg keys https://www.youtube.com/watch?v=DMGIlj7u7Eo
-calcurse (calendar) https://www.youtube.com/watch?v=hvc-pHjbhdE
-urlview https://www.youtube.com/watch?v=IgzpAjFgbCw
-colorschemes with pywal https://www.youtube.com/watch?v=Es79N_9BblE
-vi mode in shell https://www.youtube.com/watch?v=GqoJQft5R2E
-pass (password manager) https://www.youtube.com/watch?v=sVkURNfxPd4
+dwm (window manager) https://videos.lukesmith.xyz/videos/watch/f6b78db7-b368-4647-bc64-28c08fff1988
+pacman (installing/managing programs) https://videos.lukesmith.xyz/videos/watch/8e7cadb9-0fed-47ce-a2a8-6635fa48614b
+status bar https://videos.lukesmith.xyz/videos/watch/a4d5326b-0aac-496e-bfc3-5acd5cee89f0
+sxiv (image viewer) https://videos.lukesmith.xyz/videos/watch/ad4c8d85-90c3-4f3d-a1f3-89129e64a3c2
+st (terminal) https://videos.lukesmith.xyz/videos/watch/efddd39d-bac5-4599-b572-177beb4ce6e8
+i3 (old window manager) https://videos.lukesmith.xyz/videos/watch/b861525c-7ada-40ee-a2bb-b5e1ffe0f48b
+neomutt (email) https://videos.lukesmith.xyz/videos/watch/83122e83-52d9-4278-ae1a-7d1beeb50c8e
+ncmpcpp (music player) https://videos.lukesmith.xyz/videos/watch/b5ac6f0d-a220-4433-88e3-e98fc791dc0a
+newsboat (RSS reader) https://videos.lukesmith.xyz/videos/watch/bd2c3fff-40fa-47ea-aa98-5b1ec0c903b6
+lf (file manager) https://videos.lukesmith.xyz/w/rKeHsF5ZHDNDbR1buUKB1c
+zathura (pdf viewer) https://videos.lukesmith.xyz/videos/watch/c780f75a-11f6-48a9-a191-d079ebc36ea4
+gpg keys https://videos.lukesmith.xyz/videos/watch/040f5530-4830-4583-9ddc-2080b421531b
+calcurse (calendar) https://videos.lukesmith.xyz/videos/watch/4b937e8b-7654-46e3-8d01-79392ec5b3d1
+urlview https://videos.lukesmith.xyz/videos/watch/31a4918f-633b-4bd6-b08e-956ac75d0324
+colorschemes with pywal https://videos.lukesmith.xyz/videos/watch/1b476003-61b2-4609-ac4b-820c3d128643
+vi mode in shell https://videos.lukesmith.xyz/videos/watch/228aa50c-836f-456f-9f0d-a45157fe4313
+pass (password manager) https://videos.lukesmith.xyz/videos/watch/432fc942-5e28-4682-9beb-f5cb237a1dd6
"
echo "$vidlist" | grep -P "^$(echo "$vidlist" | grep "https:" | sed 's/\t.*//g' | dmenu -i -p "Learn about what? (ESC to cancel)" -l 20 | awk '{print $1}')\s" | sed 's/.*\t//' | xargs -r mpv
diff --git a/.local/share/applications/file.desktop b/.local/share/applications/file.desktop
index 369bdc0..5df1633 100644
--- a/.local/share/applications/file.desktop
+++ b/.local/share/applications/file.desktop
@@ -1,4 +1,4 @@
[Desktop Entry]
Type=Application
Name=File Manager
-Exec=/usr/local/bin/st -e lf %u
+Exec=/usr/local/bin/st -e lfub %u
diff --git a/.local/share/larbs/emoji b/.local/share/larbs/emoji
index 2925c82..6803731 100644
--- a/.local/share/larbs/emoji
+++ b/.local/share/larbs/emoji
@@ -1,1593 +1,1630 @@
-๐Ÿ˜€ grinning face; 1F600;
-๐Ÿ˜ƒ grinning face with big eyes; 1F603;
-๐Ÿ˜„ grinning face with smiling eyes; 1F604;
-๐Ÿ˜ beaming face with smiling eyes; 1F601;
-๐Ÿ˜† grinning squinting face; 1F606;
-๐Ÿ˜… grinning face with sweat; 1F605;
-๐Ÿคฃ rolling on the floor laughing; 1F923;
-๐Ÿ˜‚ face with tears of joy; 1F602;
-๐Ÿ™‚ slightly smiling face; 1F642;
-๐Ÿ™ƒ upside-down face; 1F643;
-๐Ÿ˜‰ winking face; 1F609;
-๐Ÿ˜Š smiling face with smiling eyes; 1F60A;
-๐Ÿ˜‡ smiling face with halo; 1F607;
-๐Ÿฅฐ smiling face with hearts; 1F970;
-๐Ÿ˜ smiling face with heart-eyes; 1F60D;
-๐Ÿคฉ star-struck; 1F929;
-๐Ÿ˜˜ face blowing a kiss; 1F618;
-๐Ÿ˜— kissing face; 1F617;
-โ˜บ๏ธ smiling face; 263A FE0F;
-๐Ÿ˜š kissing face with closed eyes; 1F61A;
-๐Ÿ˜™ kissing face with smiling eyes; 1F619;
-๐Ÿฅฒ smiling face with tear; 1F972;
-๐Ÿ˜‹ face savoring food; 1F60B;
-๐Ÿ˜› face with tongue; 1F61B;
-๐Ÿ˜œ winking face with tongue; 1F61C;
-๐Ÿคช zany face; 1F92A;
-๐Ÿ˜ squinting face with tongue; 1F61D;
-๐Ÿค‘ money-mouth face; 1F911;
-๐Ÿค— hugging face; 1F917;
-๐Ÿคญ face with hand over mouth; 1F92D;
-๐Ÿคซ shushing face; 1F92B;
-๐Ÿค” thinking face; 1F914;
-๐Ÿค zipper-mouth face; 1F910;
-๐Ÿคจ face with raised eyebrow; 1F928;
-๐Ÿ˜ neutral face; 1F610;
-๐Ÿ˜‘ expressionless face; 1F611;
-๐Ÿ˜ถ face without mouth; 1F636;
-๐Ÿ˜ smirking face; 1F60F;
-๐Ÿ˜’ unamused face; 1F612;
-๐Ÿ™„ face with rolling eyes; 1F644;
-๐Ÿ˜ฌ grimacing face; 1F62C;
-๐Ÿคฅ lying face; 1F925;
-๐Ÿ˜Œ relieved face; 1F60C;
-๐Ÿ˜” pensive face; 1F614;
-๐Ÿ˜ช sleepy face; 1F62A;
-๐Ÿคค drooling face; 1F924;
-๐Ÿ˜ด sleeping face; 1F634;
-๐Ÿ˜ท face with medical mask; 1F637;
-๐Ÿค’ face with thermometer; 1F912;
-๐Ÿค• face with head-bandage; 1F915;
-๐Ÿคข nauseated face; 1F922;
-๐Ÿคฎ face vomiting; 1F92E;
-๐Ÿคง sneezing face; 1F927;
-๐Ÿฅต hot face; 1F975;
-๐Ÿฅถ cold face; 1F976;
-๐Ÿฅด woozy face; 1F974;
-๐Ÿ˜ต dizzy face; 1F635;
-๐Ÿคฏ exploding head; 1F92F;
-๐Ÿค  cowboy hat face; 1F920;
-๐Ÿฅณ partying face; 1F973;
-๐Ÿฅธ disguised face; 1F978;
-๐Ÿ˜Ž smiling face with sunglasses; 1F60E;
-๐Ÿค“ nerd face; 1F913;
-๐Ÿง face with monocle; 1F9D0;
-๐Ÿ˜• confused face; 1F615;
-๐Ÿ˜Ÿ worried face; 1F61F;
-๐Ÿ™ slightly frowning face; 1F641;
-โ˜น๏ธ frowning face; 2639 FE0F;
-๐Ÿ˜ฎ face with open mouth; 1F62E;
-๐Ÿ˜ฏ hushed face; 1F62F;
-๐Ÿ˜ฒ astonished face; 1F632;
-๐Ÿ˜ณ flushed face; 1F633;
-๐Ÿฅบ pleading face; 1F97A;
-๐Ÿ˜ฆ frowning face with open mouth; 1F626;
-๐Ÿ˜ง anguished face; 1F627;
-๐Ÿ˜จ fearful face; 1F628;
-๐Ÿ˜ฐ anxious face with sweat; 1F630;
-๐Ÿ˜ฅ sad but relieved face; 1F625;
-๐Ÿ˜ข crying face; 1F622;
-๐Ÿ˜ญ loudly crying face; 1F62D;
-๐Ÿ˜ฑ face screaming in fear; 1F631;
-๐Ÿ˜– confounded face; 1F616;
-๐Ÿ˜ฃ persevering face; 1F623;
-๐Ÿ˜ž disappointed face; 1F61E;
-๐Ÿ˜“ downcast face with sweat; 1F613;
-๐Ÿ˜ฉ weary face; 1F629;
-๐Ÿ˜ซ tired face; 1F62B;
-๐Ÿฅฑ yawning face; 1F971;
-๐Ÿ˜ค face with steam from nose; 1F624;
-๐Ÿ˜ก pouting face; 1F621;
-๐Ÿ˜  angry face; 1F620;
-๐Ÿคฌ face with symbols on mouth; 1F92C;
-๐Ÿ˜ˆ smiling face with horns; 1F608;
-๐Ÿ‘ฟ angry face with horns; 1F47F;
-๐Ÿ’€ skull; 1F480;
-โ˜ ๏ธ skull and crossbones; 2620 FE0F;
-๐Ÿ’ฉ pile of poo; 1F4A9;
-๐Ÿคก clown face; 1F921;
-๐Ÿ‘น ogre; 1F479;
-๐Ÿ‘บ goblin; 1F47A;
-๐Ÿ‘ป ghost; 1F47B;
-๐Ÿ‘ฝ alien; 1F47D;
-๐Ÿ‘พ alien monster; 1F47E;
-๐Ÿค– robot; 1F916;
-๐Ÿ˜บ grinning cat; 1F63A;
-๐Ÿ˜ธ grinning cat with smiling eyes; 1F638;
-๐Ÿ˜น cat with tears of joy; 1F639;
-๐Ÿ˜ป smiling cat with heart-eyes; 1F63B;
-๐Ÿ˜ผ cat with wry smile; 1F63C;
-๐Ÿ˜ฝ kissing cat; 1F63D;
-๐Ÿ™€ weary cat; 1F640;
-๐Ÿ˜ฟ crying cat; 1F63F;
-๐Ÿ˜พ pouting cat; 1F63E;
-๐Ÿ™ˆ see-no-evil monkey; 1F648;
-๐Ÿ™‰ hear-no-evil monkey; 1F649;
-๐Ÿ™Š speak-no-evil monkey; 1F64A;
-๐Ÿ’‹ kiss mark; 1F48B;
-๐Ÿ’Œ love letter; 1F48C;
-๐Ÿ’˜ heart with arrow; 1F498;
-๐Ÿ’ heart with ribbon; 1F49D;
-๐Ÿ’– sparkling heart; 1F496;
-๐Ÿ’— growing heart; 1F497;
-๐Ÿ’“ beating heart; 1F493;
-๐Ÿ’ž revolving hearts; 1F49E;
-๐Ÿ’• two hearts; 1F495;
-๐Ÿ’Ÿ heart decoration; 1F49F;
-โฃ๏ธ heart exclamation; 2763 FE0F;
-๐Ÿ’” broken heart; 1F494;
-โค๏ธ red heart; 2764 FE0F;
-๐Ÿงก orange heart; 1F9E1;
-๐Ÿ’› yellow heart; 1F49B;
-๐Ÿ’š green heart; 1F49A;
-๐Ÿ’™ blue heart; 1F499;
-๐Ÿ’œ purple heart; 1F49C;
-๐ŸคŽ brown heart; 1F90E;
-๐Ÿ–ค black heart; 1F5A4;
-๐Ÿค white heart; 1F90D;
-๐Ÿ’ฏ hundred points; 1F4AF;
-๐Ÿ’ข anger symbol; 1F4A2;
-๐Ÿ’ฅ collision; 1F4A5;
-๐Ÿ’ซ dizzy; 1F4AB;
-๐Ÿ’ฆ sweat droplets; 1F4A6;
-๐Ÿ’จ dashing away; 1F4A8;
-๐Ÿ•ณ๏ธ hole; 1F573 FE0F;
-๐Ÿ’ฃ bomb; 1F4A3;
-๐Ÿ’ฌ speech balloon; 1F4AC;
-๐Ÿ—จ๏ธ left speech bubble; 1F5E8 FE0F;
-๐Ÿ—ฏ๏ธ right anger bubble; 1F5EF FE0F;
-๐Ÿ’ญ thought balloon; 1F4AD;
-๐Ÿ’ค zzz; 1F4A4;
-๐Ÿ‘‹ waving hand; 1F44B;
-๐Ÿคš raised back of hand; 1F91A;
-๐Ÿ–๏ธ hand with fingers splayed; 1F590 FE0F;
-โœ‹ raised hand; 270B;
-๐Ÿ–– vulcan salute; 1F596;
-๐Ÿ‘Œ OK hand; 1F44C;
-๐ŸคŒ pinched fingers; 1F90C;
-๐Ÿค pinching hand; 1F90F;
-โœŒ๏ธ victory hand; 270C FE0F;
-๐Ÿคž crossed fingers; 1F91E;
-๐ŸคŸ love-you gesture; 1F91F;
-๐Ÿค˜ sign of the horns; 1F918;
-๐Ÿค™ call me hand; 1F919;
-๐Ÿ‘ˆ backhand index pointing left; 1F448;
-๐Ÿ‘‰ backhand index pointing right; 1F449;
-๐Ÿ‘† backhand index pointing up; 1F446;
-๐Ÿ–• middle finger; 1F595;
-๐Ÿ‘‡ backhand index pointing down; 1F447;
-โ˜๏ธ index pointing up; 261D FE0F;
-๐Ÿ‘ thumbs up; 1F44D;
-๐Ÿ‘Ž thumbs down; 1F44E;
-โœŠ raised fist; 270A;
-๐Ÿ‘Š oncoming fist; 1F44A;
-๐Ÿค› left-facing fist; 1F91B;
-๐Ÿคœ right-facing fist; 1F91C;
-๐Ÿ‘ clapping hands; 1F44F;
-๐Ÿ™Œ raising hands; 1F64C;
-๐Ÿ‘ open hands; 1F450;
-๐Ÿคฒ palms up together; 1F932;
-๐Ÿค handshake; 1F91D;
-๐Ÿ™ folded hands; 1F64F;
-โœ๏ธ writing hand; 270D FE0F;
-๐Ÿ’… nail polish; 1F485;
-๐Ÿคณ selfie; 1F933;
-๐Ÿ’ช flexed biceps; 1F4AA;
-๐Ÿฆพ mechanical arm; 1F9BE;
-๐Ÿฆฟ mechanical leg; 1F9BF;
-๐Ÿฆต leg; 1F9B5;
-๐Ÿฆถ foot; 1F9B6;
-๐Ÿ‘‚ ear; 1F442;
-๐Ÿฆป ear with hearing aid; 1F9BB;
-๐Ÿ‘ƒ nose; 1F443;
-๐Ÿง  brain; 1F9E0;
-๐Ÿซ€ anatomical heart; 1FAC0;
-๐Ÿซ lungs; 1FAC1;
-๐Ÿฆท tooth; 1F9B7;
-๐Ÿฆด bone; 1F9B4;
-๐Ÿ‘€ eyes; 1F440;
-๐Ÿ‘๏ธ eye; 1F441 FE0F;
-๐Ÿ‘… tongue; 1F445;
-๐Ÿ‘„ mouth; 1F444;
-๐Ÿ‘ถ baby; 1F476;
-๐Ÿง’ child; 1F9D2;
-๐Ÿ‘ฆ boy; 1F466;
-๐Ÿ‘ง girl; 1F467;
-๐Ÿง‘ person; 1F9D1;
-๐Ÿ‘ฑ person: blond hair; 1F471;
-๐Ÿ‘จ man; 1F468;
-๐Ÿง” man: beard; 1F9D4;
-๐Ÿ‘ฉ woman; 1F469;
-๐Ÿง“ older person; 1F9D3;
-๐Ÿ‘ด old man; 1F474;
-๐Ÿ‘ต old woman; 1F475;
-๐Ÿ™ person frowning; 1F64D;
-๐Ÿ™Ž person pouting; 1F64E;
-๐Ÿ™… person gesturing NO; 1F645;
-๐Ÿ™† person gesturing OK; 1F646;
-๐Ÿ’ person tipping hand; 1F481;
-๐Ÿ™‹ person raising hand; 1F64B;
-๐Ÿง deaf person; 1F9CF;
-๐Ÿ™‡ person bowing; 1F647;
-๐Ÿคฆ person facepalming; 1F926;
-๐Ÿคท person shrugging; 1F937;
-๐Ÿ‘ฎ police officer; 1F46E;
-๐Ÿ•ต๏ธ detective; 1F575 FE0F;
-๐Ÿ’‚ guard; 1F482;
-๐Ÿฅท ninja; 1F977;
-๐Ÿ‘ท construction worker; 1F477;
-๐Ÿคด prince; 1F934;
-๐Ÿ‘ธ princess; 1F478;
-๐Ÿ‘ณ person wearing turban; 1F473;
-๐Ÿ‘ฒ person with skullcap; 1F472;
-๐Ÿง• woman with headscarf; 1F9D5;
-๐Ÿคต person in tuxedo; 1F935;
-๐Ÿ‘ฐ person with veil; 1F470;
-๐Ÿคฐ pregnant woman; 1F930;
-๐Ÿคฑ breast-feeding; 1F931;
-๐Ÿ‘ผ baby angel; 1F47C;
-๐ŸŽ… Santa Claus; 1F385;
-๐Ÿคถ Mrs. Claus; 1F936;
-๐Ÿฆธ superhero; 1F9B8;
-๐Ÿฆน supervillain; 1F9B9;
-๐Ÿง™ mage; 1F9D9;
-๐Ÿงš fairy; 1F9DA;
-๐Ÿง› vampire; 1F9DB;
-๐Ÿงœ merperson; 1F9DC;
-๐Ÿง elf; 1F9DD;
-๐Ÿงž genie; 1F9DE;
-๐ŸงŸ zombie; 1F9DF;
-๐Ÿ’† person getting massage; 1F486;
-๐Ÿ’‡ person getting haircut; 1F487;
-๐Ÿšถ person walking; 1F6B6;
-๐Ÿง person standing; 1F9CD;
-๐ŸงŽ person kneeling; 1F9CE;
-๐Ÿƒ person running; 1F3C3;
-๐Ÿ’ƒ woman dancing; 1F483;
-๐Ÿ•บ man dancing; 1F57A;
-๐Ÿ•ด๏ธ person in suit levitating; 1F574 FE0F;
-๐Ÿ‘ฏ people with bunny ears; 1F46F;
-๐Ÿง– person in steamy room; 1F9D6;
-๐Ÿง— person climbing; 1F9D7;
-๐Ÿคบ person fencing; 1F93A;
-๐Ÿ‡ horse racing; 1F3C7;
-โ›ท๏ธ skier; 26F7 FE0F;
-๐Ÿ‚ snowboarder; 1F3C2;
-๐ŸŒ๏ธ person golfing; 1F3CC FE0F;
-๐Ÿ„ person surfing; 1F3C4;
-๐Ÿšฃ person rowing boat; 1F6A3;
-๐ŸŠ person swimming; 1F3CA;
-โ›น๏ธ person bouncing ball; 26F9 FE0F;
-๐Ÿ‹๏ธ person lifting weights; 1F3CB FE0F;
-๐Ÿšด person biking; 1F6B4;
-๐Ÿšต person mountain biking; 1F6B5;
-๐Ÿคธ person cartwheeling; 1F938;
-๐Ÿคผ people wrestling; 1F93C;
-๐Ÿคฝ person playing water polo; 1F93D;
-๐Ÿคพ person playing handball; 1F93E;
-๐Ÿคน person juggling; 1F939;
-๐Ÿง˜ person in lotus position; 1F9D8;
-๐Ÿ›€ person taking bath; 1F6C0;
-๐Ÿ›Œ person in bed; 1F6CC;
-๐Ÿ‘ญ women holding hands; 1F46D;
-๐Ÿ‘ซ woman and man holding hands; 1F46B;
-๐Ÿ‘ฌ men holding hands; 1F46C;
-๐Ÿ’ kiss; 1F48F;
-๐Ÿ’‘ couple with heart; 1F491;
-๐Ÿ‘ช family; 1F46A;
-๐Ÿ—ฃ๏ธ speaking head; 1F5E3 FE0F;
-๐Ÿ‘ค bust in silhouette; 1F464;
-๐Ÿ‘ฅ busts in silhouette; 1F465;
-๐Ÿซ‚ people hugging; 1FAC2;
-๐Ÿ‘ฃ footprints; 1F463;
-๐Ÿต monkey face; 1F435;
-๐Ÿ’ monkey; 1F412;
-๐Ÿฆ gorilla; 1F98D;
-๐Ÿฆง orangutan; 1F9A7;
-๐Ÿถ dog face; 1F436;
-๐Ÿ• dog; 1F415;
-๐Ÿฆฎ guide dog; 1F9AE;
-๐Ÿฉ poodle; 1F429;
-๐Ÿบ wolf; 1F43A;
-๐ŸฆŠ fox; 1F98A;
-๐Ÿฆ raccoon; 1F99D;
-๐Ÿฑ cat face; 1F431;
-๐Ÿˆ cat; 1F408;
-๐Ÿฆ lion; 1F981;
-๐Ÿฏ tiger face; 1F42F;
-๐Ÿ… tiger; 1F405;
-๐Ÿ† leopard; 1F406;
-๐Ÿด horse face; 1F434;
-๐ŸŽ horse; 1F40E;
-๐Ÿฆ„ unicorn; 1F984;
-๐Ÿฆ“ zebra; 1F993;
-๐ŸฆŒ deer; 1F98C;
-๐Ÿฆฌ bison; 1F9AC;
-๐Ÿฎ cow face; 1F42E;
-๐Ÿ‚ ox; 1F402;
-๐Ÿƒ water buffalo; 1F403;
-๐Ÿ„ cow; 1F404;
-๐Ÿท pig face; 1F437;
-๐Ÿ– pig; 1F416;
-๐Ÿ— boar; 1F417;
-๐Ÿฝ pig nose; 1F43D;
-๐Ÿ ram; 1F40F;
-๐Ÿ‘ ewe; 1F411;
-๐Ÿ goat; 1F410;
-๐Ÿช camel; 1F42A;
-๐Ÿซ two-hump camel; 1F42B;
-๐Ÿฆ™ llama; 1F999;
-๐Ÿฆ’ giraffe; 1F992;
-๐Ÿ˜ elephant; 1F418;
-๐Ÿฆฃ mammoth; 1F9A3;
-๐Ÿฆ rhinoceros; 1F98F;
-๐Ÿฆ› hippopotamus; 1F99B;
-๐Ÿญ mouse face; 1F42D;
-๐Ÿ mouse; 1F401;
-๐Ÿ€ rat; 1F400;
-๐Ÿน hamster; 1F439;
-๐Ÿฐ rabbit face; 1F430;
-๐Ÿ‡ rabbit; 1F407;
-๐Ÿฟ๏ธ chipmunk; 1F43F FE0F;
-๐Ÿฆซ beaver; 1F9AB;
-๐Ÿฆ” hedgehog; 1F994;
-๐Ÿฆ‡ bat; 1F987;
-๐Ÿป bear; 1F43B;
-๐Ÿจ koala; 1F428;
-๐Ÿผ panda; 1F43C;
-๐Ÿฆฅ sloth; 1F9A5;
-๐Ÿฆฆ otter; 1F9A6;
-๐Ÿฆจ skunk; 1F9A8;
-๐Ÿฆ˜ kangaroo; 1F998;
-๐Ÿฆก badger; 1F9A1;
-๐Ÿพ paw prints; 1F43E;
-๐Ÿฆƒ turkey; 1F983;
-๐Ÿ” chicken; 1F414;
-๐Ÿ“ rooster; 1F413;
-๐Ÿฃ hatching chick; 1F423;
-๐Ÿค baby chick; 1F424;
-๐Ÿฅ front-facing baby chick; 1F425;
-๐Ÿฆ bird; 1F426;
-๐Ÿง penguin; 1F427;
-๐Ÿ•Š๏ธ dove; 1F54A FE0F;
-๐Ÿฆ… eagle; 1F985;
-๐Ÿฆ† duck; 1F986;
-๐Ÿฆข swan; 1F9A2;
-๐Ÿฆ‰ owl; 1F989;
-๐Ÿฆค dodo; 1F9A4;
-๐Ÿชถ feather; 1FAB6;
-๐Ÿฆฉ flamingo; 1F9A9;
-๐Ÿฆš peacock; 1F99A;
-๐Ÿฆœ parrot; 1F99C;
-๐Ÿธ frog; 1F438;
-๐ŸŠ crocodile; 1F40A;
-๐Ÿข turtle; 1F422;
-๐ŸฆŽ lizard; 1F98E;
-๐Ÿ snake; 1F40D;
-๐Ÿฒ dragon face; 1F432;
-๐Ÿ‰ dragon; 1F409;
-๐Ÿฆ• sauropod; 1F995;
-๐Ÿฆ– T-Rex; 1F996;
-๐Ÿณ spouting whale; 1F433;
-๐Ÿ‹ whale; 1F40B;
-๐Ÿฌ dolphin; 1F42C;
-๐Ÿฆญ seal; 1F9AD;
-๐ŸŸ fish; 1F41F;
-๐Ÿ  tropical fish; 1F420;
-๐Ÿก blowfish; 1F421;
-๐Ÿฆˆ shark; 1F988;
-๐Ÿ™ octopus; 1F419;
-๐Ÿš spiral shell; 1F41A;
-๐ŸŒ snail; 1F40C;
-๐Ÿฆ‹ butterfly; 1F98B;
-๐Ÿ› bug; 1F41B;
-๐Ÿœ ant; 1F41C;
-๐Ÿ honeybee; 1F41D;
-๐Ÿชฒ beetle; 1FAB2;
-๐Ÿž lady beetle; 1F41E;
-๐Ÿฆ— cricket; 1F997;
-๐Ÿชณ cockroach; 1FAB3;
-๐Ÿ•ท๏ธ spider; 1F577 FE0F;
-๐Ÿ•ธ๏ธ spider web; 1F578 FE0F;
-๐Ÿฆ‚ scorpion; 1F982;
-๐ŸฆŸ mosquito; 1F99F;
-๐Ÿชฐ fly; 1FAB0;
-๐Ÿชฑ worm; 1FAB1;
-๐Ÿฆ  microbe; 1F9A0;
-๐Ÿ’ bouquet; 1F490;
-๐ŸŒธ cherry blossom; 1F338;
-๐Ÿ’ฎ white flower; 1F4AE;
-๐Ÿต๏ธ rosette; 1F3F5 FE0F;
-๐ŸŒน rose; 1F339;
-๐Ÿฅ€ wilted flower; 1F940;
-๐ŸŒบ hibiscus; 1F33A;
-๐ŸŒป sunflower; 1F33B;
-๐ŸŒผ blossom; 1F33C;
-๐ŸŒท tulip; 1F337;
-๐ŸŒฑ seedling; 1F331;
-๐Ÿชด potted plant; 1FAB4;
-๐ŸŒฒ evergreen tree; 1F332;
-๐ŸŒณ deciduous tree; 1F333;
-๐ŸŒด palm tree; 1F334;
-๐ŸŒต cactus; 1F335;
-๐ŸŒพ sheaf of rice; 1F33E;
-๐ŸŒฟ herb; 1F33F;
-โ˜˜๏ธ shamrock; 2618 FE0F;
-๐Ÿ€ four leaf clover; 1F340;
-๐Ÿ maple leaf; 1F341;
-๐Ÿ‚ fallen leaf; 1F342;
-๐Ÿƒ leaf fluttering in wind; 1F343;
-๐Ÿ‡ grapes; 1F347;
-๐Ÿˆ melon; 1F348;
-๐Ÿ‰ watermelon; 1F349;
-๐ŸŠ tangerine; 1F34A;
-๐Ÿ‹ lemon; 1F34B;
-๐ŸŒ banana; 1F34C;
-๐Ÿ pineapple; 1F34D;
-๐Ÿฅญ mango; 1F96D;
-๐ŸŽ red apple; 1F34E;
-๐Ÿ green apple; 1F34F;
-๐Ÿ pear; 1F350;
-๐Ÿ‘ peach; 1F351;
-๐Ÿ’ cherries; 1F352;
-๐Ÿ“ strawberry; 1F353;
-๐Ÿซ blueberries; 1FAD0;
-๐Ÿฅ kiwi fruit; 1F95D;
-๐Ÿ… tomato; 1F345;
-๐Ÿซ’ olive; 1FAD2;
-๐Ÿฅฅ coconut; 1F965;
-๐Ÿฅ‘ avocado; 1F951;
-๐Ÿ† eggplant; 1F346;
-๐Ÿฅ” potato; 1F954;
-๐Ÿฅ• carrot; 1F955;
-๐ŸŒฝ ear of corn; 1F33D;
-๐ŸŒถ๏ธ hot pepper; 1F336 FE0F;
-๐Ÿซ‘ bell pepper; 1FAD1;
-๐Ÿฅ’ cucumber; 1F952;
-๐Ÿฅฌ leafy green; 1F96C;
-๐Ÿฅฆ broccoli; 1F966;
-๐Ÿง„ garlic; 1F9C4;
-๐Ÿง… onion; 1F9C5;
-๐Ÿ„ mushroom; 1F344;
-๐Ÿฅœ peanuts; 1F95C;
-๐ŸŒฐ chestnut; 1F330;
-๐Ÿž bread; 1F35E;
-๐Ÿฅ croissant; 1F950;
-๐Ÿฅ– baguette bread; 1F956;
-๐Ÿซ“ flatbread; 1FAD3;
-๐Ÿฅจ pretzel; 1F968;
-๐Ÿฅฏ bagel; 1F96F;
-๐Ÿฅž pancakes; 1F95E;
-๐Ÿง‡ waffle; 1F9C7;
-๐Ÿง€ cheese wedge; 1F9C0;
-๐Ÿ– meat on bone; 1F356;
-๐Ÿ— poultry leg; 1F357;
-๐Ÿฅฉ cut of meat; 1F969;
-๐Ÿฅ“ bacon; 1F953;
-๐Ÿ” hamburger; 1F354;
-๐ŸŸ french fries; 1F35F;
-๐Ÿ• pizza; 1F355;
-๐ŸŒญ hot dog; 1F32D;
-๐Ÿฅช sandwich; 1F96A;
-๐ŸŒฎ taco; 1F32E;
-๐ŸŒฏ burrito; 1F32F;
-๐Ÿซ” tamale; 1FAD4;
-๐Ÿฅ™ stuffed flatbread; 1F959;
-๐Ÿง† falafel; 1F9C6;
-๐Ÿฅš egg; 1F95A;
-๐Ÿณ cooking; 1F373;
-๐Ÿฅ˜ shallow pan of food; 1F958;
-๐Ÿฒ pot of food; 1F372;
-๐Ÿซ• fondue; 1FAD5;
-๐Ÿฅฃ bowl with spoon; 1F963;
-๐Ÿฅ— green salad; 1F957;
-๐Ÿฟ popcorn; 1F37F;
-๐Ÿงˆ butter; 1F9C8;
-๐Ÿง‚ salt; 1F9C2;
-๐Ÿฅซ canned food; 1F96B;
-๐Ÿฑ bento box; 1F371;
-๐Ÿ˜ rice cracker; 1F358;
-๐Ÿ™ rice ball; 1F359;
-๐Ÿš cooked rice; 1F35A;
-๐Ÿ› curry rice; 1F35B;
-๐Ÿœ steaming bowl; 1F35C;
-๐Ÿ spaghetti; 1F35D;
-๐Ÿ  roasted sweet potato; 1F360;
-๐Ÿข oden; 1F362;
-๐Ÿฃ sushi; 1F363;
-๐Ÿค fried shrimp; 1F364;
-๐Ÿฅ fish cake with swirl; 1F365;
-๐Ÿฅฎ moon cake; 1F96E;
-๐Ÿก dango; 1F361;
-๐ŸฅŸ dumpling; 1F95F;
-๐Ÿฅ  fortune cookie; 1F960;
-๐Ÿฅก takeout box; 1F961;
-๐Ÿฆ€ crab; 1F980;
-๐Ÿฆž lobster; 1F99E;
-๐Ÿฆ shrimp; 1F990;
-๐Ÿฆ‘ squid; 1F991;
-๐Ÿฆช oyster; 1F9AA;
-๐Ÿฆ soft ice cream; 1F366;
-๐Ÿง shaved ice; 1F367;
-๐Ÿจ ice cream; 1F368;
-๐Ÿฉ doughnut; 1F369;
-๐Ÿช cookie; 1F36A;
-๐ŸŽ‚ birthday cake; 1F382;
-๐Ÿฐ shortcake; 1F370;
-๐Ÿง cupcake; 1F9C1;
-๐Ÿฅง pie; 1F967;
-๐Ÿซ chocolate bar; 1F36B;
-๐Ÿฌ candy; 1F36C;
-๐Ÿญ lollipop; 1F36D;
-๐Ÿฎ custard; 1F36E;
-๐Ÿฏ honey pot; 1F36F;
-๐Ÿผ baby bottle; 1F37C;
-๐Ÿฅ› glass of milk; 1F95B;
-โ˜• hot beverage; 2615;
-๐Ÿซ– teapot; 1FAD6;
-๐Ÿต teacup without handle; 1F375;
-๐Ÿถ sake; 1F376;
-๐Ÿพ bottle with popping cork; 1F37E;
-๐Ÿท wine glass; 1F377;
-๐Ÿธ cocktail glass; 1F378;
-๐Ÿน tropical drink; 1F379;
-๐Ÿบ beer mug; 1F37A;
-๐Ÿป clinking beer mugs; 1F37B;
-๐Ÿฅ‚ clinking glasses; 1F942;
-๐Ÿฅƒ tumbler glass; 1F943;
-๐Ÿฅค cup with straw; 1F964;
-๐Ÿง‹ bubble tea; 1F9CB;
-๐Ÿงƒ beverage box; 1F9C3;
-๐Ÿง‰ mate; 1F9C9;
-๐ŸงŠ ice; 1F9CA;
-๐Ÿฅข chopsticks; 1F962;
-๐Ÿฝ๏ธ fork and knife with plate; 1F37D FE0F;
-๐Ÿด fork and knife; 1F374;
-๐Ÿฅ„ spoon; 1F944;
-๐Ÿ”ช kitchen knife; 1F52A;
-๐Ÿบ amphora; 1F3FA;
-๐ŸŒ globe showing Europe-Africa; 1F30D;
-๐ŸŒŽ globe showing Americas; 1F30E;
-๐ŸŒ globe showing Asia-Australia; 1F30F;
-๐ŸŒ globe with meridians; 1F310;
-๐Ÿ—บ๏ธ world map; 1F5FA FE0F;
-๐Ÿ—พ map of Japan; 1F5FE;
-๐Ÿงญ compass; 1F9ED;
-๐Ÿ”๏ธ snow-capped mountain; 1F3D4 FE0F;
-โ›ฐ๏ธ mountain; 26F0 FE0F;
-๐ŸŒ‹ volcano; 1F30B;
-๐Ÿ—ป mount fuji; 1F5FB;
-๐Ÿ•๏ธ camping; 1F3D5 FE0F;
-๐Ÿ–๏ธ beach with umbrella; 1F3D6 FE0F;
-๐Ÿœ๏ธ desert; 1F3DC FE0F;
-๐Ÿ๏ธ desert island; 1F3DD FE0F;
-๐Ÿž๏ธ national park; 1F3DE FE0F;
-๐ŸŸ๏ธ stadium; 1F3DF FE0F;
-๐Ÿ›๏ธ classical building; 1F3DB FE0F;
-๐Ÿ—๏ธ building construction; 1F3D7 FE0F;
-๐Ÿงฑ brick; 1F9F1;
-๐Ÿชจ rock; 1FAA8;
-๐Ÿชต wood; 1FAB5;
-๐Ÿ›– hut; 1F6D6;
-๐Ÿ˜๏ธ houses; 1F3D8 FE0F;
-๐Ÿš๏ธ derelict house; 1F3DA FE0F;
-๐Ÿ  house; 1F3E0;
-๐Ÿก house with garden; 1F3E1;
-๐Ÿข office building; 1F3E2;
-๐Ÿฃ Japanese post office; 1F3E3;
-๐Ÿค post office; 1F3E4;
-๐Ÿฅ hospital; 1F3E5;
-๐Ÿฆ bank; 1F3E6;
-๐Ÿจ hotel; 1F3E8;
-๐Ÿฉ love hotel; 1F3E9;
-๐Ÿช convenience store; 1F3EA;
-๐Ÿซ school; 1F3EB;
-๐Ÿฌ department store; 1F3EC;
-๐Ÿญ factory; 1F3ED;
-๐Ÿฏ Japanese castle; 1F3EF;
-๐Ÿฐ castle; 1F3F0;
-๐Ÿ’’ wedding; 1F492;
-๐Ÿ—ผ Tokyo tower; 1F5FC;
-๐Ÿ—ฝ Statue of Liberty; 1F5FD;
-โ›ช church; 26EA;
-๐Ÿ•Œ mosque; 1F54C;
-๐Ÿ›• hindu temple; 1F6D5;
-๐Ÿ• synagogue; 1F54D;
-โ›ฉ๏ธ shinto shrine; 26E9 FE0F;
-๐Ÿ•‹ kaaba; 1F54B;
-โ›ฒ fountain; 26F2;
-โ›บ tent; 26FA;
-๐ŸŒ foggy; 1F301;
-๐ŸŒƒ night with stars; 1F303;
-๐Ÿ™๏ธ cityscape; 1F3D9 FE0F;
-๐ŸŒ„ sunrise over mountains; 1F304;
-๐ŸŒ… sunrise; 1F305;
-๐ŸŒ† cityscape at dusk; 1F306;
-๐ŸŒ‡ sunset; 1F307;
-๐ŸŒ‰ bridge at night; 1F309;
-โ™จ๏ธ hot springs; 2668 FE0F;
-๐ŸŽ  carousel horse; 1F3A0;
-๐ŸŽก ferris wheel; 1F3A1;
-๐ŸŽข roller coaster; 1F3A2;
-๐Ÿ’ˆ barber pole; 1F488;
-๐ŸŽช circus tent; 1F3AA;
-๐Ÿš‚ locomotive; 1F682;
-๐Ÿšƒ railway car; 1F683;
-๐Ÿš„ high-speed train; 1F684;
-๐Ÿš… bullet train; 1F685;
-๐Ÿš† train; 1F686;
-๐Ÿš‡ metro; 1F687;
-๐Ÿšˆ light rail; 1F688;
-๐Ÿš‰ station; 1F689;
-๐ŸšŠ tram; 1F68A;
-๐Ÿš monorail; 1F69D;
-๐Ÿšž mountain railway; 1F69E;
-๐Ÿš‹ tram car; 1F68B;
-๐ŸšŒ bus; 1F68C;
-๐Ÿš oncoming bus; 1F68D;
-๐ŸšŽ trolleybus; 1F68E;
-๐Ÿš minibus; 1F690;
-๐Ÿš‘ ambulance; 1F691;
-๐Ÿš’ fire engine; 1F692;
-๐Ÿš“ police car; 1F693;
-๐Ÿš” oncoming police car; 1F694;
-๐Ÿš• taxi; 1F695;
-๐Ÿš– oncoming taxi; 1F696;
-๐Ÿš— automobile; 1F697;
-๐Ÿš˜ oncoming automobile; 1F698;
-๐Ÿš™ sport utility vehicle; 1F699;
-๐Ÿ›ป pickup truck; 1F6FB;
-๐Ÿšš delivery truck; 1F69A;
-๐Ÿš› articulated lorry; 1F69B;
-๐Ÿšœ tractor; 1F69C;
-๐ŸŽ๏ธ racing car; 1F3CE FE0F;
-๐Ÿ๏ธ motorcycle; 1F3CD FE0F;
-๐Ÿ›ต motor scooter; 1F6F5;
-๐Ÿฆฝ manual wheelchair; 1F9BD;
-๐Ÿฆผ motorized wheelchair; 1F9BC;
-๐Ÿ›บ auto rickshaw; 1F6FA;
-๐Ÿšฒ bicycle; 1F6B2;
-๐Ÿ›ด kick scooter; 1F6F4;
-๐Ÿ›น skateboard; 1F6F9;
-๐Ÿ›ผ roller skate; 1F6FC;
-๐Ÿš bus stop; 1F68F;
-๐Ÿ›ฃ๏ธ motorway; 1F6E3 FE0F;
-๐Ÿ›ค๏ธ railway track; 1F6E4 FE0F;
-๐Ÿ›ข๏ธ oil drum; 1F6E2 FE0F;
-โ›ฝ fuel pump; 26FD;
-๐Ÿšจ police car light; 1F6A8;
-๐Ÿšฅ horizontal traffic light; 1F6A5;
-๐Ÿšฆ vertical traffic light; 1F6A6;
-๐Ÿ›‘ stop sign; 1F6D1;
-๐Ÿšง construction; 1F6A7;
-โš“ anchor; 2693;
-โ›ต sailboat; 26F5;
-๐Ÿ›ถ canoe; 1F6F6;
-๐Ÿšค speedboat; 1F6A4;
-๐Ÿ›ณ๏ธ passenger ship; 1F6F3 FE0F;
-โ›ด๏ธ ferry; 26F4 FE0F;
-๐Ÿ›ฅ๏ธ motor boat; 1F6E5 FE0F;
-๐Ÿšข ship; 1F6A2;
-โœˆ๏ธ airplane; 2708 FE0F;
-๐Ÿ›ฉ๏ธ small airplane; 1F6E9 FE0F;
-๐Ÿ›ซ airplane departure; 1F6EB;
-๐Ÿ›ฌ airplane arrival; 1F6EC;
-๐Ÿช‚ parachute; 1FA82;
-๐Ÿ’บ seat; 1F4BA;
-๐Ÿš helicopter; 1F681;
-๐ŸšŸ suspension railway; 1F69F;
-๐Ÿš  mountain cableway; 1F6A0;
-๐Ÿšก aerial tramway; 1F6A1;
-๐Ÿ›ฐ๏ธ satellite; 1F6F0 FE0F;
-๐Ÿš€ rocket; 1F680;
-๐Ÿ›ธ flying saucer; 1F6F8;
-๐Ÿ›Ž๏ธ bellhop bell; 1F6CE FE0F;
-๐Ÿงณ luggage; 1F9F3;
-โŒ› hourglass done; 231B;
-โณ hourglass not done; 23F3;
-โŒš watch; 231A;
-โฐ alarm clock; 23F0;
-โฑ๏ธ stopwatch; 23F1 FE0F;
-โฒ๏ธ timer clock; 23F2 FE0F;
-๐Ÿ•ฐ๏ธ mantelpiece clock; 1F570 FE0F;
-๐Ÿ•› twelve oโ€™clock; 1F55B;
-๐Ÿ•ง twelve-thirty; 1F567;
-๐Ÿ• one oโ€™clock; 1F550;
-๐Ÿ•œ one-thirty; 1F55C;
-๐Ÿ•‘ two oโ€™clock; 1F551;
-๐Ÿ• two-thirty; 1F55D;
-๐Ÿ•’ three oโ€™clock; 1F552;
-๐Ÿ•ž three-thirty; 1F55E;
-๐Ÿ•“ four oโ€™clock; 1F553;
-๐Ÿ•Ÿ four-thirty; 1F55F;
-๐Ÿ•” five oโ€™clock; 1F554;
-๐Ÿ•  five-thirty; 1F560;
-๐Ÿ•• six oโ€™clock; 1F555;
-๐Ÿ•ก six-thirty; 1F561;
-๐Ÿ•– seven oโ€™clock; 1F556;
-๐Ÿ•ข seven-thirty; 1F562;
-๐Ÿ•— eight oโ€™clock; 1F557;
-๐Ÿ•ฃ eight-thirty; 1F563;
-๐Ÿ•˜ nine oโ€™clock; 1F558;
-๐Ÿ•ค nine-thirty; 1F564;
-๐Ÿ•™ ten oโ€™clock; 1F559;
-๐Ÿ•ฅ ten-thirty; 1F565;
-๐Ÿ•š eleven oโ€™clock; 1F55A;
-๐Ÿ•ฆ eleven-thirty; 1F566;
-๐ŸŒ‘ new moon; 1F311;
-๐ŸŒ’ waxing crescent moon; 1F312;
-๐ŸŒ“ first quarter moon; 1F313;
-๐ŸŒ” waxing gibbous moon; 1F314;
-๐ŸŒ• full moon; 1F315;
-๐ŸŒ– waning gibbous moon; 1F316;
-๐ŸŒ— last quarter moon; 1F317;
-๐ŸŒ˜ waning crescent moon; 1F318;
-๐ŸŒ™ crescent moon; 1F319;
-๐ŸŒš new moon face; 1F31A;
-๐ŸŒ› first quarter moon face; 1F31B;
-๐ŸŒœ last quarter moon face; 1F31C;
-๐ŸŒก๏ธ thermometer; 1F321 FE0F;
-โ˜€๏ธ sun; 2600 FE0F;
-๐ŸŒ full moon face; 1F31D;
-๐ŸŒž sun with face; 1F31E;
-๐Ÿช ringed planet; 1FA90;
-โญ star; 2B50;
-๐ŸŒŸ glowing star; 1F31F;
-๐ŸŒ  shooting star; 1F320;
-๐ŸŒŒ milky way; 1F30C;
-โ˜๏ธ cloud; 2601 FE0F;
-โ›… sun behind cloud; 26C5;
-โ›ˆ๏ธ cloud with lightning and rain; 26C8 FE0F;
-๐ŸŒค๏ธ sun behind small cloud; 1F324 FE0F;
-๐ŸŒฅ๏ธ sun behind large cloud; 1F325 FE0F;
-๐ŸŒฆ๏ธ sun behind rain cloud; 1F326 FE0F;
-๐ŸŒง๏ธ cloud with rain; 1F327 FE0F;
-๐ŸŒจ๏ธ cloud with snow; 1F328 FE0F;
-๐ŸŒฉ๏ธ cloud with lightning; 1F329 FE0F;
-๐ŸŒช๏ธ tornado; 1F32A FE0F;
-๐ŸŒซ๏ธ fog; 1F32B FE0F;
-๐ŸŒฌ๏ธ wind face; 1F32C FE0F;
-๐ŸŒ€ cyclone; 1F300;
-๐ŸŒˆ rainbow; 1F308;
-๐ŸŒ‚ closed umbrella; 1F302;
-โ˜‚๏ธ umbrella; 2602 FE0F;
-โ˜” umbrella with rain drops; 2614;
-โ›ฑ๏ธ umbrella on ground; 26F1 FE0F;
-โšก high voltage; 26A1;
-โ„๏ธ snowflake; 2744 FE0F;
-โ˜ƒ๏ธ snowman; 2603 FE0F;
-โ›„ snowman without snow; 26C4;
-โ˜„๏ธ comet; 2604 FE0F;
-๐Ÿ”ฅ fire; 1F525;
-๐Ÿ’ง droplet; 1F4A7;
-๐ŸŒŠ water wave; 1F30A;
-๐ŸŽƒ jack-o-lantern; 1F383;
-๐ŸŽ„ Christmas tree; 1F384;
-๐ŸŽ† fireworks; 1F386;
-๐ŸŽ‡ sparkler; 1F387;
-๐Ÿงจ firecracker; 1F9E8;
-โœจ sparkles; 2728;
-๐ŸŽˆ balloon; 1F388;
-๐ŸŽ‰ party popper; 1F389;
-๐ŸŽŠ confetti ball; 1F38A;
-๐ŸŽ‹ tanabata tree; 1F38B;
-๐ŸŽ pine decoration; 1F38D;
-๐ŸŽŽ Japanese dolls; 1F38E;
-๐ŸŽ carp streamer; 1F38F;
-๐ŸŽ wind chime; 1F390;
-๐ŸŽ‘ moon viewing ceremony; 1F391;
-๐Ÿงง red envelope; 1F9E7;
-๐ŸŽ€ ribbon; 1F380;
-๐ŸŽ wrapped gift; 1F381;
-๐ŸŽ—๏ธ reminder ribbon; 1F397 FE0F;
-๐ŸŽŸ๏ธ admission tickets; 1F39F FE0F;
-๐ŸŽซ ticket; 1F3AB;
-๐ŸŽ–๏ธ military medal; 1F396 FE0F;
-๐Ÿ† trophy; 1F3C6;
-๐Ÿ… sports medal; 1F3C5;
-๐Ÿฅ‡ 1st place medal; 1F947;
-๐Ÿฅˆ 2nd place medal; 1F948;
-๐Ÿฅ‰ 3rd place medal; 1F949;
-โšฝ soccer ball; 26BD;
-โšพ baseball; 26BE;
-๐ŸฅŽ softball; 1F94E;
-๐Ÿ€ basketball; 1F3C0;
-๐Ÿ volleyball; 1F3D0;
-๐Ÿˆ american football; 1F3C8;
-๐Ÿ‰ rugby football; 1F3C9;
-๐ŸŽพ tennis; 1F3BE;
-๐Ÿฅ flying disc; 1F94F;
-๐ŸŽณ bowling; 1F3B3;
-๐Ÿ cricket game; 1F3CF;
-๐Ÿ‘ field hockey; 1F3D1;
-๐Ÿ’ ice hockey; 1F3D2;
-๐Ÿฅ lacrosse; 1F94D;
-๐Ÿ“ ping pong; 1F3D3;
-๐Ÿธ badminton; 1F3F8;
-๐ŸฅŠ boxing glove; 1F94A;
-๐Ÿฅ‹ martial arts uniform; 1F94B;
-๐Ÿฅ… goal net; 1F945;
-โ›ณ flag in hole; 26F3;
-โ›ธ๏ธ ice skate; 26F8 FE0F;
-๐ŸŽฃ fishing pole; 1F3A3;
-๐Ÿคฟ diving mask; 1F93F;
-๐ŸŽฝ running shirt; 1F3BD;
-๐ŸŽฟ skis; 1F3BF;
-๐Ÿ›ท sled; 1F6F7;
-๐ŸฅŒ curling stone; 1F94C;
-๐ŸŽฏ direct hit; 1F3AF;
-๐Ÿช€ yo-yo; 1FA80;
-๐Ÿช kite; 1FA81;
-๐ŸŽฑ pool 8 ball; 1F3B1;
-๐Ÿ”ฎ crystal ball; 1F52E;
-๐Ÿช„ magic wand; 1FA84;
-๐Ÿงฟ nazar amulet; 1F9FF;
-๐ŸŽฎ video game; 1F3AE;
-๐Ÿ•น๏ธ joystick; 1F579 FE0F;
-๐ŸŽฐ slot machine; 1F3B0;
-๐ŸŽฒ game die; 1F3B2;
-๐Ÿงฉ puzzle piece; 1F9E9;
-๐Ÿงธ teddy bear; 1F9F8;
-๐Ÿช… piรฑata; 1FA85;
-๐Ÿช† nesting dolls; 1FA86;
-โ™ ๏ธ spade suit; 2660 FE0F;
-โ™ฅ๏ธ heart suit; 2665 FE0F;
-โ™ฆ๏ธ diamond suit; 2666 FE0F;
-โ™ฃ๏ธ club suit; 2663 FE0F;
-โ™Ÿ๏ธ chess pawn; 265F FE0F;
-๐Ÿƒ joker; 1F0CF;
-๐Ÿ€„ mahjong red dragon; 1F004;
-๐ŸŽด flower playing cards; 1F3B4;
-๐ŸŽญ performing arts; 1F3AD;
-๐Ÿ–ผ๏ธ framed picture; 1F5BC FE0F;
-๐ŸŽจ artist palette; 1F3A8;
-๐Ÿงต thread; 1F9F5;
-๐Ÿชก sewing needle; 1FAA1;
-๐Ÿงถ yarn; 1F9F6;
-๐Ÿชข knot; 1FAA2;
-๐Ÿ‘“ glasses; 1F453;
-๐Ÿ•ถ๏ธ sunglasses; 1F576 FE0F;
-๐Ÿฅฝ goggles; 1F97D;
-๐Ÿฅผ lab coat; 1F97C;
-๐Ÿฆบ safety vest; 1F9BA;
-๐Ÿ‘” necktie; 1F454;
-๐Ÿ‘• t-shirt; 1F455;
-๐Ÿ‘– jeans; 1F456;
-๐Ÿงฃ scarf; 1F9E3;
-๐Ÿงค gloves; 1F9E4;
-๐Ÿงฅ coat; 1F9E5;
-๐Ÿงฆ socks; 1F9E6;
-๐Ÿ‘— dress; 1F457;
-๐Ÿ‘˜ kimono; 1F458;
-๐Ÿฅป sari; 1F97B;
-๐Ÿฉฑ one-piece swimsuit; 1FA71;
-๐Ÿฉฒ briefs; 1FA72;
-๐Ÿฉณ shorts; 1FA73;
-๐Ÿ‘™ bikini; 1F459;
-๐Ÿ‘š womanโ€™s clothes; 1F45A;
-๐Ÿ‘› purse; 1F45B;
-๐Ÿ‘œ handbag; 1F45C;
-๐Ÿ‘ clutch bag; 1F45D;
-๐Ÿ›๏ธ shopping bags; 1F6CD FE0F;
-๐ŸŽ’ backpack; 1F392;
-๐Ÿฉด thong sandal; 1FA74;
-๐Ÿ‘ž manโ€™s shoe; 1F45E;
-๐Ÿ‘Ÿ running shoe; 1F45F;
-๐Ÿฅพ hiking boot; 1F97E;
-๐Ÿฅฟ flat shoe; 1F97F;
-๐Ÿ‘  high-heeled shoe; 1F460;
-๐Ÿ‘ก womanโ€™s sandal; 1F461;
-๐Ÿฉฐ ballet shoes; 1FA70;
-๐Ÿ‘ข womanโ€™s boot; 1F462;
-๐Ÿ‘‘ crown; 1F451;
-๐Ÿ‘’ womanโ€™s hat; 1F452;
-๐ŸŽฉ top hat; 1F3A9;
-๐ŸŽ“ graduation cap; 1F393;
-๐Ÿงข billed cap; 1F9E2;
-๐Ÿช– military helmet; 1FA96;
-โ›‘๏ธ rescue workerโ€™s helmet; 26D1 FE0F;
-๐Ÿ“ฟ prayer beads; 1F4FF;
-๐Ÿ’„ lipstick; 1F484;
-๐Ÿ’ ring; 1F48D;
-๐Ÿ’Ž gem stone; 1F48E;
-๐Ÿ”‡ muted speaker; 1F507;
-๐Ÿ”ˆ speaker low volume; 1F508;
-๐Ÿ”‰ speaker medium volume; 1F509;
-๐Ÿ”Š speaker high volume; 1F50A;
-๐Ÿ“ข loudspeaker; 1F4E2;
-๐Ÿ“ฃ megaphone; 1F4E3;
-๐Ÿ“ฏ postal horn; 1F4EF;
-๐Ÿ”” bell; 1F514;
-๐Ÿ”• bell with slash; 1F515;
-๐ŸŽผ musical score; 1F3BC;
-๐ŸŽต musical note; 1F3B5;
-๐ŸŽถ musical notes; 1F3B6;
-๐ŸŽ™๏ธ studio microphone; 1F399 FE0F;
-๐ŸŽš๏ธ level slider; 1F39A FE0F;
-๐ŸŽ›๏ธ control knobs; 1F39B FE0F;
-๐ŸŽค microphone; 1F3A4;
-๐ŸŽง headphone; 1F3A7;
-๐Ÿ“ป radio; 1F4FB;
-๐ŸŽท saxophone; 1F3B7;
-๐Ÿช— accordion; 1FA97;
-๐ŸŽธ guitar; 1F3B8;
-๐ŸŽน musical keyboard; 1F3B9;
-๐ŸŽบ trumpet; 1F3BA;
-๐ŸŽป violin; 1F3BB;
-๐Ÿช• banjo; 1FA95;
-๐Ÿฅ drum; 1F941;
-๐Ÿช˜ long drum; 1FA98;
-๐Ÿ“ฑ mobile phone; 1F4F1;
-๐Ÿ“ฒ mobile phone with arrow; 1F4F2;
-โ˜Ž๏ธ telephone; 260E FE0F;
-๐Ÿ“ž telephone receiver; 1F4DE;
-๐Ÿ“Ÿ pager; 1F4DF;
-๐Ÿ“  fax machine; 1F4E0;
-๐Ÿ”‹ battery; 1F50B;
-๐Ÿ”Œ electric plug; 1F50C;
-๐Ÿ’ป laptop; 1F4BB;
-๐Ÿ–ฅ๏ธ desktop computer; 1F5A5 FE0F;
-๐Ÿ–จ๏ธ printer; 1F5A8 FE0F;
-โŒจ๏ธ keyboard; 2328 FE0F;
-๐Ÿ–ฑ๏ธ computer mouse; 1F5B1 FE0F;
-๐Ÿ–ฒ๏ธ trackball; 1F5B2 FE0F;
-๐Ÿ’ฝ computer disk; 1F4BD;
-๐Ÿ’พ floppy disk; 1F4BE;
-๐Ÿ’ฟ optical disk; 1F4BF;
-๐Ÿ“€ dvd; 1F4C0;
-๐Ÿงฎ abacus; 1F9EE;
-๐ŸŽฅ movie camera; 1F3A5;
-๐ŸŽž๏ธ film frames; 1F39E FE0F;
-๐Ÿ“ฝ๏ธ film projector; 1F4FD FE0F;
-๐ŸŽฌ clapper board; 1F3AC;
-๐Ÿ“บ television; 1F4FA;
-๐Ÿ“ท camera; 1F4F7;
-๐Ÿ“ธ camera with flash; 1F4F8;
-๐Ÿ“น video camera; 1F4F9;
-๐Ÿ“ผ videocassette; 1F4FC;
-๐Ÿ” magnifying glass tilted left; 1F50D;
-๐Ÿ”Ž magnifying glass tilted right; 1F50E;
-๐Ÿ•ฏ๏ธ candle; 1F56F FE0F;
-๐Ÿ’ก light bulb; 1F4A1;
-๐Ÿ”ฆ flashlight; 1F526;
-๐Ÿฎ red paper lantern; 1F3EE;
-๐Ÿช” diya lamp; 1FA94;
-๐Ÿ“” notebook with decorative cover; 1F4D4;
-๐Ÿ“• closed book; 1F4D5;
-๐Ÿ“– open book; 1F4D6;
-๐Ÿ“— green book; 1F4D7;
-๐Ÿ“˜ blue book; 1F4D8;
-๐Ÿ“™ orange book; 1F4D9;
-๐Ÿ“š books; 1F4DA;
-๐Ÿ““ notebook; 1F4D3;
-๐Ÿ“’ ledger; 1F4D2;
-๐Ÿ“ƒ page with curl; 1F4C3;
-๐Ÿ“œ scroll; 1F4DC;
-๐Ÿ“„ page facing up; 1F4C4;
-๐Ÿ“ฐ newspaper; 1F4F0;
-๐Ÿ—ž๏ธ rolled-up newspaper; 1F5DE FE0F;
-๐Ÿ“‘ bookmark tabs; 1F4D1;
-๐Ÿ”– bookmark; 1F516;
-๐Ÿท๏ธ label; 1F3F7 FE0F;
-๐Ÿ’ฐ money bag; 1F4B0;
-๐Ÿช™ coin; 1FA99;
-๐Ÿ’ด yen banknote; 1F4B4;
-๐Ÿ’ต dollar banknote; 1F4B5;
-๐Ÿ’ถ euro banknote; 1F4B6;
-๐Ÿ’ท pound banknote; 1F4B7;
-๐Ÿ’ธ money with wings; 1F4B8;
-๐Ÿ’ณ credit card; 1F4B3;
-๐Ÿงพ receipt; 1F9FE;
-๐Ÿ’น chart increasing with yen; 1F4B9;
-โœ‰๏ธ envelope; 2709 FE0F;
-๐Ÿ“ง e-mail; 1F4E7;
-๐Ÿ“จ incoming envelope; 1F4E8;
-๐Ÿ“ฉ envelope with arrow; 1F4E9;
-๐Ÿ“ค outbox tray; 1F4E4;
-๐Ÿ“ฅ inbox tray; 1F4E5;
-๐Ÿ“ฆ package; 1F4E6;
-๐Ÿ“ซ closed mailbox with raised flag; 1F4EB;
-๐Ÿ“ช closed mailbox with lowered flag; 1F4EA;
-๐Ÿ“ฌ open mailbox with raised flag; 1F4EC;
-๐Ÿ“ญ open mailbox with lowered flag; 1F4ED;
-๐Ÿ“ฎ postbox; 1F4EE;
-๐Ÿ—ณ๏ธ ballot box with ballot; 1F5F3 FE0F;
-โœ๏ธ pencil; 270F FE0F;
-โœ’๏ธ black nib; 2712 FE0F;
-๐Ÿ–‹๏ธ fountain pen; 1F58B FE0F;
-๐Ÿ–Š๏ธ pen; 1F58A FE0F;
-๐Ÿ–Œ๏ธ paintbrush; 1F58C FE0F;
-๐Ÿ–๏ธ crayon; 1F58D FE0F;
-๐Ÿ“ memo; 1F4DD;
-๐Ÿ’ผ briefcase; 1F4BC;
-๐Ÿ“ file folder; 1F4C1;
-๐Ÿ“‚ open file folder; 1F4C2;
-๐Ÿ—‚๏ธ card index dividers; 1F5C2 FE0F;
-๐Ÿ“… calendar; 1F4C5;
-๐Ÿ“† tear-off calendar; 1F4C6;
-๐Ÿ—’๏ธ spiral notepad; 1F5D2 FE0F;
-๐Ÿ—“๏ธ spiral calendar; 1F5D3 FE0F;
-๐Ÿ“‡ card index; 1F4C7;
-๐Ÿ“ˆ chart increasing; 1F4C8;
-๐Ÿ“‰ chart decreasing; 1F4C9;
-๐Ÿ“Š bar chart; 1F4CA;
-๐Ÿ“‹ clipboard; 1F4CB;
-๐Ÿ“Œ pushpin; 1F4CC;
-๐Ÿ“ round pushpin; 1F4CD;
-๐Ÿ“Ž paperclip; 1F4CE;
-๐Ÿ–‡๏ธ linked paperclips; 1F587 FE0F;
-๐Ÿ“ straight ruler; 1F4CF;
-๐Ÿ“ triangular ruler; 1F4D0;
-โœ‚๏ธ scissors; 2702 FE0F;
-๐Ÿ—ƒ๏ธ card file box; 1F5C3 FE0F;
-๐Ÿ—„๏ธ file cabinet; 1F5C4 FE0F;
-๐Ÿ—‘๏ธ wastebasket; 1F5D1 FE0F;
-๐Ÿ”’ locked; 1F512;
-๐Ÿ”“ unlocked; 1F513;
-๐Ÿ” locked with pen; 1F50F;
-๐Ÿ” locked with key; 1F510;
-๐Ÿ”‘ key; 1F511;
-๐Ÿ—๏ธ old key; 1F5DD FE0F;
-๐Ÿ”จ hammer; 1F528;
-๐Ÿช“ axe; 1FA93;
-โ›๏ธ pick; 26CF FE0F;
-โš’๏ธ hammer and pick; 2692 FE0F;
-๐Ÿ› ๏ธ hammer and wrench; 1F6E0 FE0F;
-๐Ÿ—ก๏ธ dagger; 1F5E1 FE0F;
-โš”๏ธ crossed swords; 2694 FE0F;
-๐Ÿ”ซ pistol; 1F52B;
-๐Ÿชƒ boomerang; 1FA83;
-๐Ÿน bow and arrow; 1F3F9;
-๐Ÿ›ก๏ธ shield; 1F6E1 FE0F;
-๐Ÿชš carpentry saw; 1FA9A;
-๐Ÿ”ง wrench; 1F527;
-๐Ÿช› screwdriver; 1FA9B;
-๐Ÿ”ฉ nut and bolt; 1F529;
-โš™๏ธ gear; 2699 FE0F;
-๐Ÿ—œ๏ธ clamp; 1F5DC FE0F;
-โš–๏ธ balance scale; 2696 FE0F;
-๐Ÿฆฏ white cane; 1F9AF;
-๐Ÿ”— link; 1F517;
-โ›“๏ธ chains; 26D3 FE0F;
-๐Ÿช hook; 1FA9D;
-๐Ÿงฐ toolbox; 1F9F0;
-๐Ÿงฒ magnet; 1F9F2;
-๐Ÿชœ ladder; 1FA9C;
-โš—๏ธ alembic; 2697 FE0F;
-๐Ÿงช test tube; 1F9EA;
-๐Ÿงซ petri dish; 1F9EB;
-๐Ÿงฌ dna; 1F9EC;
-๐Ÿ”ฌ microscope; 1F52C;
-๐Ÿ”ญ telescope; 1F52D;
-๐Ÿ“ก satellite antenna; 1F4E1;
-๐Ÿ’‰ syringe; 1F489;
-๐Ÿฉธ drop of blood; 1FA78;
-๐Ÿ’Š pill; 1F48A;
-๐Ÿฉน adhesive bandage; 1FA79;
-๐Ÿฉบ stethoscope; 1FA7A;
-๐Ÿšช door; 1F6AA;
-๐Ÿ›— elevator; 1F6D7;
-๐Ÿชž mirror; 1FA9E;
-๐ŸชŸ window; 1FA9F;
-๐Ÿ›๏ธ bed; 1F6CF FE0F;
-๐Ÿ›‹๏ธ couch and lamp; 1F6CB FE0F;
-๐Ÿช‘ chair; 1FA91;
-๐Ÿšฝ toilet; 1F6BD;
-๐Ÿช  plunger; 1FAA0;
-๐Ÿšฟ shower; 1F6BF;
-๐Ÿ› bathtub; 1F6C1;
-๐Ÿชค mouse trap; 1FAA4;
-๐Ÿช’ razor; 1FA92;
-๐Ÿงด lotion bottle; 1F9F4;
-๐Ÿงท safety pin; 1F9F7;
-๐Ÿงน broom; 1F9F9;
-๐Ÿงบ basket; 1F9FA;
-๐Ÿงป roll of paper; 1F9FB;
-๐Ÿชฃ bucket; 1FAA3;
-๐Ÿงผ soap; 1F9FC;
-๐Ÿชฅ toothbrush; 1FAA5;
-๐Ÿงฝ sponge; 1F9FD;
-๐Ÿงฏ fire extinguisher; 1F9EF;
-๐Ÿ›’ shopping cart; 1F6D2;
-๐Ÿšฌ cigarette; 1F6AC;
-โšฐ๏ธ coffin; 26B0 FE0F;
-๐Ÿชฆ headstone; 1FAA6;
-โšฑ๏ธ funeral urn; 26B1 FE0F;
-๐Ÿ—ฟ moai; 1F5FF;
-๐Ÿชง placard; 1FAA7;
-๐Ÿง ATM sign; 1F3E7;
-๐Ÿšฎ litter in bin sign; 1F6AE;
-๐Ÿšฐ potable water; 1F6B0;
-โ™ฟ wheelchair symbol; 267F;
-๐Ÿšน menโ€™s room; 1F6B9;
-๐Ÿšบ womenโ€™s room; 1F6BA;
-๐Ÿšป restroom; 1F6BB;
-๐Ÿšผ baby symbol; 1F6BC;
-๐Ÿšพ water closet; 1F6BE;
-๐Ÿ›‚ passport control; 1F6C2;
-๐Ÿ›ƒ customs; 1F6C3;
-๐Ÿ›„ baggage claim; 1F6C4;
-๐Ÿ›… left luggage; 1F6C5;
-โš ๏ธ warning; 26A0 FE0F;
-๐Ÿšธ children crossing; 1F6B8;
-โ›” no entry; 26D4;
-๐Ÿšซ prohibited; 1F6AB;
-๐Ÿšณ no bicycles; 1F6B3;
-๐Ÿšญ no smoking; 1F6AD;
-๐Ÿšฏ no littering; 1F6AF;
-๐Ÿšฑ non-potable water; 1F6B1;
-๐Ÿšท no pedestrians; 1F6B7;
-๐Ÿ“ต no mobile phones; 1F4F5;
-๐Ÿ”ž no one under eighteen; 1F51E;
-โ˜ข๏ธ radioactive; 2622 FE0F;
-โ˜ฃ๏ธ biohazard; 2623 FE0F;
-โฌ†๏ธ up arrow; 2B06 FE0F;
-โ†—๏ธ up-right arrow; 2197 FE0F;
-โžก๏ธ right arrow; 27A1 FE0F;
-โ†˜๏ธ down-right arrow; 2198 FE0F;
-โฌ‡๏ธ down arrow; 2B07 FE0F;
-โ†™๏ธ down-left arrow; 2199 FE0F;
-โฌ…๏ธ left arrow; 2B05 FE0F;
-โ†–๏ธ up-left arrow; 2196 FE0F;
-โ†•๏ธ up-down arrow; 2195 FE0F;
-โ†”๏ธ left-right arrow; 2194 FE0F;
-โ†ฉ๏ธ right arrow curving left; 21A9 FE0F;
-โ†ช๏ธ left arrow curving right; 21AA FE0F;
-โคด๏ธ right arrow curving up; 2934 FE0F;
-โคต๏ธ right arrow curving down; 2935 FE0F;
-๐Ÿ”ƒ clockwise vertical arrows; 1F503;
-๐Ÿ”„ counterclockwise arrows button; 1F504;
-๐Ÿ”™ BACK arrow; 1F519;
-๐Ÿ”š END arrow; 1F51A;
-๐Ÿ”› ON! arrow; 1F51B;
-๐Ÿ”œ SOON arrow; 1F51C;
-๐Ÿ” TOP arrow; 1F51D;
-๐Ÿ› place of worship; 1F6D0;
-โš›๏ธ atom symbol; 269B FE0F;
-๐Ÿ•‰๏ธ om; 1F549 FE0F;
-โœก๏ธ star of David; 2721 FE0F;
-โ˜ธ๏ธ wheel of dharma; 2638 FE0F;
-โ˜ฏ๏ธ yin yang; 262F FE0F;
-โœ๏ธ latin cross; 271D FE0F;
-โ˜ฆ๏ธ orthodox cross; 2626 FE0F;
-โ˜ช๏ธ star and crescent; 262A FE0F;
-โ˜ฎ๏ธ peace symbol; 262E FE0F;
-๐Ÿ•Ž menorah; 1F54E;
-๐Ÿ”ฏ dotted six-pointed star; 1F52F;
-โ™ˆ Aries; 2648;
-โ™‰ Taurus; 2649;
-โ™Š Gemini; 264A;
-โ™‹ Cancer; 264B;
-โ™Œ Leo; 264C;
-โ™ Virgo; 264D;
-โ™Ž Libra; 264E;
-โ™ Scorpio; 264F;
-โ™ Sagittarius; 2650;
-โ™‘ Capricorn; 2651;
-โ™’ Aquarius; 2652;
-โ™“ Pisces; 2653;
-โ›Ž Ophiuchus; 26CE;
-๐Ÿ”€ shuffle tracks button; 1F500;
-๐Ÿ” repeat button; 1F501;
-๐Ÿ”‚ repeat single button; 1F502;
-โ–ถ๏ธ play button; 25B6 FE0F;
-โฉ fast-forward button; 23E9;
-โญ๏ธ next track button; 23ED FE0F;
-โฏ๏ธ play or pause button; 23EF FE0F;
-โ—€๏ธ reverse button; 25C0 FE0F;
-โช fast reverse button; 23EA;
-โฎ๏ธ last track button; 23EE FE0F;
-๐Ÿ”ผ upwards button; 1F53C;
-โซ fast up button; 23EB;
-๐Ÿ”ฝ downwards button; 1F53D;
-โฌ fast down button; 23EC;
-โธ๏ธ pause button; 23F8 FE0F;
-โน๏ธ stop button; 23F9 FE0F;
-โบ๏ธ record button; 23FA FE0F;
-โ๏ธ eject button; 23CF FE0F;
-๐ŸŽฆ cinema; 1F3A6;
-๐Ÿ”… dim button; 1F505;
-๐Ÿ”† bright button; 1F506;
-๐Ÿ“ถ antenna bars; 1F4F6;
-๐Ÿ“ณ vibration mode; 1F4F3;
-๐Ÿ“ด mobile phone off; 1F4F4;
-โ™€๏ธ female sign; 2640 FE0F;
-โ™‚๏ธ male sign; 2642 FE0F;
-โšง๏ธ transgender symbol; 26A7 FE0F;
-โœ–๏ธ multiply; 2716 FE0F;
-โž• plus; 2795;
-โž– minus; 2796;
-โž— divide; 2797;
-โ™พ๏ธ infinity; 267E FE0F;
-โ€ผ๏ธ double exclamation mark; 203C FE0F;
-โ‰๏ธ exclamation question mark; 2049 FE0F;
-โ“ question mark; 2753;
-โ” white question mark; 2754;
-โ• white exclamation mark; 2755;
-โ— exclamation mark; 2757;
-ใ€ฐ๏ธ wavy dash; 3030 FE0F;
-๐Ÿ’ฑ currency exchange; 1F4B1;
-๐Ÿ’ฒ heavy dollar sign; 1F4B2;
-โš•๏ธ medical symbol; 2695 FE0F;
-โ™ป๏ธ recycling symbol; 267B FE0F;
-โšœ๏ธ fleur-de-lis; 269C FE0F;
-๐Ÿ”ฑ trident emblem; 1F531;
-๐Ÿ“› name badge; 1F4DB;
-๐Ÿ”ฐ Japanese symbol for beginner; 1F530;
-โญ• hollow red circle; 2B55;
-โœ… check mark button; 2705;
-โ˜‘๏ธ check box with check; 2611 FE0F;
-โœ”๏ธ check mark; 2714 FE0F;
-โŒ cross mark; 274C;
-โŽ cross mark button; 274E;
-โžฐ curly loop; 27B0;
-โžฟ double curly loop; 27BF;
-ใ€ฝ๏ธ part alternation mark; 303D FE0F;
-โœณ๏ธ eight-spoked asterisk; 2733 FE0F;
-โœด๏ธ eight-pointed star; 2734 FE0F;
-โ‡๏ธ sparkle; 2747 FE0F;
-ยฉ๏ธ copyright; 00A9 FE0F;
-ยฎ๏ธ registered; 00AE FE0F;
-โ„ข๏ธ trade mark; 2122 FE0F;
-#๏ธโƒฃ keycap: #; 0023 FE0F 20E3;
-*๏ธโƒฃ keycap: *; 002A FE0F 20E3;
-0๏ธโƒฃ keycap: 0; 0030 FE0F 20E3;
-1๏ธโƒฃ keycap: 1; 0031 FE0F 20E3;
-2๏ธโƒฃ keycap: 2; 0032 FE0F 20E3;
-3๏ธโƒฃ keycap: 3; 0033 FE0F 20E3;
-4๏ธโƒฃ keycap: 4; 0034 FE0F 20E3;
-5๏ธโƒฃ keycap: 5; 0035 FE0F 20E3;
-6๏ธโƒฃ keycap: 6; 0036 FE0F 20E3;
-7๏ธโƒฃ keycap: 7; 0037 FE0F 20E3;
-8๏ธโƒฃ keycap: 8; 0038 FE0F 20E3;
-9๏ธโƒฃ keycap: 9; 0039 FE0F 20E3;
-๐Ÿ”Ÿ keycap: 10; 1F51F;
-๐Ÿ”  input latin uppercase; 1F520;
-๐Ÿ”ก input latin lowercase; 1F521;
-๐Ÿ”ข input numbers; 1F522;
-๐Ÿ”ฃ input symbols; 1F523;
-๐Ÿ”ค input latin letters; 1F524;
-๐Ÿ…ฐ๏ธ A button (blood type); 1F170 FE0F;
-๐Ÿ†Ž AB button (blood type); 1F18E;
-๐Ÿ…ฑ๏ธ B button (blood type); 1F171 FE0F;
-๐Ÿ†‘ CL button; 1F191;
-๐Ÿ†’ COOL button; 1F192;
-๐Ÿ†“ FREE button; 1F193;
-โ„น๏ธ information; 2139 FE0F;
-๐Ÿ†” ID button; 1F194;
-โ“‚๏ธ circled M; 24C2 FE0F;
-๐Ÿ†• NEW button; 1F195;
-๐Ÿ†– NG button; 1F196;
-๐Ÿ…พ๏ธ O button (blood type); 1F17E FE0F;
-๐Ÿ†— OK button; 1F197;
-๐Ÿ…ฟ๏ธ P button; 1F17F FE0F;
-๐Ÿ†˜ SOS button; 1F198;
-๐Ÿ†™ UP! button; 1F199;
-๐Ÿ†š VS button; 1F19A;
-๐Ÿˆ Japanese โ€œhereโ€ button; 1F201;
-๐Ÿˆ‚๏ธ Japanese โ€œservice chargeโ€ button; 1F202 FE0F;
-๐Ÿˆท๏ธ Japanese โ€œmonthly amountโ€ button; 1F237 FE0F;
-๐Ÿˆถ Japanese โ€œnot free of chargeโ€ button; 1F236;
-๐Ÿˆฏ Japanese โ€œreservedโ€ button; 1F22F;
-๐Ÿ‰ Japanese โ€œbargainโ€ button; 1F250;
-๐Ÿˆน Japanese โ€œdiscountโ€ button; 1F239;
-๐Ÿˆš Japanese โ€œfree of chargeโ€ button; 1F21A;
-๐Ÿˆฒ Japanese โ€œprohibitedโ€ button; 1F232;
-๐Ÿ‰‘ Japanese โ€œacceptableโ€ button; 1F251;
-๐Ÿˆธ Japanese โ€œapplicationโ€ button; 1F238;
-๐Ÿˆด Japanese โ€œpassing gradeโ€ button; 1F234;
-๐Ÿˆณ Japanese โ€œvacancyโ€ button; 1F233;
-ใŠ—๏ธ Japanese โ€œcongratulationsโ€ button; 3297 FE0F;
-ใŠ™๏ธ Japanese โ€œsecretโ€ button; 3299 FE0F;
-๐Ÿˆบ Japanese โ€œopen for businessโ€ button; 1F23A;
-๐Ÿˆต Japanese โ€œno vacancyโ€ button; 1F235;
-๐Ÿ”ด red circle; 1F534;
-๐ŸŸ  orange circle; 1F7E0;
-๐ŸŸก yellow circle; 1F7E1;
-๐ŸŸข green circle; 1F7E2;
-๐Ÿ”ต blue circle; 1F535;
-๐ŸŸฃ purple circle; 1F7E3;
-๐ŸŸค brown circle; 1F7E4;
-โšซ black circle; 26AB;
-โšช white circle; 26AA;
-๐ŸŸฅ red square; 1F7E5;
-๐ŸŸง orange square; 1F7E7;
-๐ŸŸจ yellow square; 1F7E8;
-๐ŸŸฉ green square; 1F7E9;
-๐ŸŸฆ blue square; 1F7E6;
-๐ŸŸช purple square; 1F7EA;
-๐ŸŸซ brown square; 1F7EB;
-โฌ› black large square; 2B1B;
-โฌœ white large square; 2B1C;
-โ—ผ๏ธ black medium square; 25FC FE0F;
-โ—ป๏ธ white medium square; 25FB FE0F;
-โ—พ black medium-small square; 25FE;
-โ—ฝ white medium-small square; 25FD;
-โ–ช๏ธ black small square; 25AA FE0F;
-โ–ซ๏ธ white small square; 25AB FE0F;
-๐Ÿ”ถ large orange diamond; 1F536;
-๐Ÿ”ท large blue diamond; 1F537;
-๐Ÿ”ธ small orange diamond; 1F538;
-๐Ÿ”น small blue diamond; 1F539;
-๐Ÿ”บ red triangle pointed up; 1F53A;
-๐Ÿ”ป red triangle pointed down; 1F53B;
-๐Ÿ’  diamond with a dot; 1F4A0;
-๐Ÿ”˜ radio button; 1F518;
-๐Ÿ”ณ white square button; 1F533;
-๐Ÿ”ฒ black square button; 1F532;
-๐Ÿ chequered flag; 1F3C1;
-๐Ÿšฉ triangular flag; 1F6A9;
-๐ŸŽŒ crossed flags; 1F38C;
-๐Ÿด black flag; 1F3F4;
-๐Ÿณ๏ธ white flag; 1F3F3 FE0F;
-๐Ÿ‡ฆ๐Ÿ‡จ flag: Ascension Island; 1F1E6 1F1E8;
-๐Ÿ‡ฆ๐Ÿ‡ฉ flag: Andorra; 1F1E6 1F1E9;
-๐Ÿ‡ฆ๐Ÿ‡ช flag: United Arab Emirates; 1F1E6 1F1EA;
-๐Ÿ‡ฆ๐Ÿ‡ซ flag: Afghanistan; 1F1E6 1F1EB;
-๐Ÿ‡ฆ๐Ÿ‡ฌ flag: Antigua & Barbuda; 1F1E6 1F1EC;
-๐Ÿ‡ฆ๐Ÿ‡ฎ flag: Anguilla; 1F1E6 1F1EE;
-๐Ÿ‡ฆ๐Ÿ‡ฑ flag: Albania; 1F1E6 1F1F1;
-๐Ÿ‡ฆ๐Ÿ‡ฒ flag: Armenia; 1F1E6 1F1F2;
-๐Ÿ‡ฆ๐Ÿ‡ด flag: Angola; 1F1E6 1F1F4;
-๐Ÿ‡ฆ๐Ÿ‡ถ flag: Antarctica; 1F1E6 1F1F6;
-๐Ÿ‡ฆ๐Ÿ‡ท flag: Argentina; 1F1E6 1F1F7;
-๐Ÿ‡ฆ๐Ÿ‡ธ flag: American Samoa; 1F1E6 1F1F8;
-๐Ÿ‡ฆ๐Ÿ‡น flag: Austria; 1F1E6 1F1F9;
-๐Ÿ‡ฆ๐Ÿ‡บ flag: Australia; 1F1E6 1F1FA;
-๐Ÿ‡ฆ๐Ÿ‡ผ flag: Aruba; 1F1E6 1F1FC;
-๐Ÿ‡ฆ๐Ÿ‡ฝ flag: ร…land Islands; 1F1E6 1F1FD;
-๐Ÿ‡ฆ๐Ÿ‡ฟ flag: Azerbaijan; 1F1E6 1F1FF;
-๐Ÿ‡ง๐Ÿ‡ฆ flag: Bosnia & Herzegovina; 1F1E7 1F1E6;
-๐Ÿ‡ง๐Ÿ‡ง flag: Barbados; 1F1E7 1F1E7;
-๐Ÿ‡ง๐Ÿ‡ฉ flag: Bangladesh; 1F1E7 1F1E9;
-๐Ÿ‡ง๐Ÿ‡ช flag: Belgium; 1F1E7 1F1EA;
-๐Ÿ‡ง๐Ÿ‡ซ flag: Burkina Faso; 1F1E7 1F1EB;
-๐Ÿ‡ง๐Ÿ‡ฌ flag: Bulgaria; 1F1E7 1F1EC;
-๐Ÿ‡ง๐Ÿ‡ญ flag: Bahrain; 1F1E7 1F1ED;
-๐Ÿ‡ง๐Ÿ‡ฎ flag: Burundi; 1F1E7 1F1EE;
-๐Ÿ‡ง๐Ÿ‡ฏ flag: Benin; 1F1E7 1F1EF;
-๐Ÿ‡ง๐Ÿ‡ฑ flag: St. Barthรฉlemy; 1F1E7 1F1F1;
-๐Ÿ‡ง๐Ÿ‡ฒ flag: Bermuda; 1F1E7 1F1F2;
-๐Ÿ‡ง๐Ÿ‡ณ flag: Brunei; 1F1E7 1F1F3;
-๐Ÿ‡ง๐Ÿ‡ด flag: Bolivia; 1F1E7 1F1F4;
-๐Ÿ‡ง๐Ÿ‡ถ flag: Caribbean Netherlands; 1F1E7 1F1F6;
-๐Ÿ‡ง๐Ÿ‡ท flag: Brazil; 1F1E7 1F1F7;
-๐Ÿ‡ง๐Ÿ‡ธ flag: Bahamas; 1F1E7 1F1F8;
-๐Ÿ‡ง๐Ÿ‡น flag: Bhutan; 1F1E7 1F1F9;
-๐Ÿ‡ง๐Ÿ‡ป flag: Bouvet Island; 1F1E7 1F1FB;
-๐Ÿ‡ง๐Ÿ‡ผ flag: Botswana; 1F1E7 1F1FC;
-๐Ÿ‡ง๐Ÿ‡พ flag: Belarus; 1F1E7 1F1FE;
-๐Ÿ‡ง๐Ÿ‡ฟ flag: Belize; 1F1E7 1F1FF;
-๐Ÿ‡จ๐Ÿ‡ฆ flag: Canada; 1F1E8 1F1E6;
-๐Ÿ‡จ๐Ÿ‡จ flag: Cocos (Keeling) Islands; 1F1E8 1F1E8;
-๐Ÿ‡จ๐Ÿ‡ฉ flag: Congo - Kinshasa; 1F1E8 1F1E9;
-๐Ÿ‡จ๐Ÿ‡ซ flag: Central African Republic; 1F1E8 1F1EB;
-๐Ÿ‡จ๐Ÿ‡ฌ flag: Congo - Brazzaville; 1F1E8 1F1EC;
-๐Ÿ‡จ๐Ÿ‡ญ flag: Switzerland; 1F1E8 1F1ED;
-๐Ÿ‡จ๐Ÿ‡ฎ flag: Cรดte dโ€™Ivoire; 1F1E8 1F1EE;
-๐Ÿ‡จ๐Ÿ‡ฐ flag: Cook Islands; 1F1E8 1F1F0;
-๐Ÿ‡จ๐Ÿ‡ฑ flag: Chile; 1F1E8 1F1F1;
-๐Ÿ‡จ๐Ÿ‡ฒ flag: Cameroon; 1F1E8 1F1F2;
-๐Ÿ‡จ๐Ÿ‡ณ flag: China; 1F1E8 1F1F3;
-๐Ÿ‡จ๐Ÿ‡ด flag: Colombia; 1F1E8 1F1F4;
-๐Ÿ‡จ๐Ÿ‡ต flag: Clipperton Island; 1F1E8 1F1F5;
-๐Ÿ‡จ๐Ÿ‡ท flag: Costa Rica; 1F1E8 1F1F7;
-๐Ÿ‡จ๐Ÿ‡บ flag: Cuba; 1F1E8 1F1FA;
-๐Ÿ‡จ๐Ÿ‡ป flag: Cape Verde; 1F1E8 1F1FB;
-๐Ÿ‡จ๐Ÿ‡ผ flag: Curaรงao; 1F1E8 1F1FC;
-๐Ÿ‡จ๐Ÿ‡ฝ flag: Christmas Island; 1F1E8 1F1FD;
-๐Ÿ‡จ๐Ÿ‡พ flag: Cyprus; 1F1E8 1F1FE;
-๐Ÿ‡จ๐Ÿ‡ฟ flag: Czechia; 1F1E8 1F1FF;
-๐Ÿ‡ฉ๐Ÿ‡ช flag: Germany; 1F1E9 1F1EA;
-๐Ÿ‡ฉ๐Ÿ‡ฌ flag: Diego Garcia; 1F1E9 1F1EC;
-๐Ÿ‡ฉ๐Ÿ‡ฏ flag: Djibouti; 1F1E9 1F1EF;
-๐Ÿ‡ฉ๐Ÿ‡ฐ flag: Denmark; 1F1E9 1F1F0;
-๐Ÿ‡ฉ๐Ÿ‡ฒ flag: Dominica; 1F1E9 1F1F2;
-๐Ÿ‡ฉ๐Ÿ‡ด flag: Dominican Republic; 1F1E9 1F1F4;
-๐Ÿ‡ฉ๐Ÿ‡ฟ flag: Algeria; 1F1E9 1F1FF;
-๐Ÿ‡ช๐Ÿ‡ฆ flag: Ceuta & Melilla; 1F1EA 1F1E6;
-๐Ÿ‡ช๐Ÿ‡จ flag: Ecuador; 1F1EA 1F1E8;
-๐Ÿ‡ช๐Ÿ‡ช flag: Estonia; 1F1EA 1F1EA;
-๐Ÿ‡ช๐Ÿ‡ฌ flag: Egypt; 1F1EA 1F1EC;
-๐Ÿ‡ช๐Ÿ‡ญ flag: Western Sahara; 1F1EA 1F1ED;
-๐Ÿ‡ช๐Ÿ‡ท flag: Eritrea; 1F1EA 1F1F7;
-๐Ÿ‡ช๐Ÿ‡ธ flag: Spain; 1F1EA 1F1F8;
-๐Ÿ‡ช๐Ÿ‡น flag: Ethiopia; 1F1EA 1F1F9;
-๐Ÿ‡ช๐Ÿ‡บ flag: European Union; 1F1EA 1F1FA;
-๐Ÿ‡ซ๐Ÿ‡ฎ flag: Finland; 1F1EB 1F1EE;
-๐Ÿ‡ซ๐Ÿ‡ฏ flag: Fiji; 1F1EB 1F1EF;
-๐Ÿ‡ซ๐Ÿ‡ฐ flag: Falkland Islands; 1F1EB 1F1F0;
-๐Ÿ‡ซ๐Ÿ‡ฒ flag: Micronesia; 1F1EB 1F1F2;
-๐Ÿ‡ซ๐Ÿ‡ด flag: Faroe Islands; 1F1EB 1F1F4;
-๐Ÿ‡ซ๐Ÿ‡ท flag: France; 1F1EB 1F1F7;
-๐Ÿ‡ฌ๐Ÿ‡ฆ flag: Gabon; 1F1EC 1F1E6;
-๐Ÿ‡ฌ๐Ÿ‡ง flag: United Kingdom; 1F1EC 1F1E7;
-๐Ÿ‡ฌ๐Ÿ‡ฉ flag: Grenada; 1F1EC 1F1E9;
-๐Ÿ‡ฌ๐Ÿ‡ช flag: Georgia; 1F1EC 1F1EA;
-๐Ÿ‡ฌ๐Ÿ‡ซ flag: French Guiana; 1F1EC 1F1EB;
-๐Ÿ‡ฌ๐Ÿ‡ฌ flag: Guernsey; 1F1EC 1F1EC;
-๐Ÿ‡ฌ๐Ÿ‡ญ flag: Ghana; 1F1EC 1F1ED;
-๐Ÿ‡ฌ๐Ÿ‡ฎ flag: Gibraltar; 1F1EC 1F1EE;
-๐Ÿ‡ฌ๐Ÿ‡ฑ flag: Greenland; 1F1EC 1F1F1;
-๐Ÿ‡ฌ๐Ÿ‡ฒ flag: Gambia; 1F1EC 1F1F2;
-๐Ÿ‡ฌ๐Ÿ‡ณ flag: Guinea; 1F1EC 1F1F3;
-๐Ÿ‡ฌ๐Ÿ‡ต flag: Guadeloupe; 1F1EC 1F1F5;
-๐Ÿ‡ฌ๐Ÿ‡ถ flag: Equatorial Guinea; 1F1EC 1F1F6;
-๐Ÿ‡ฌ๐Ÿ‡ท flag: Greece; 1F1EC 1F1F7;
-๐Ÿ‡ฌ๐Ÿ‡ธ flag: South Georgia & South Sandwich Islands; 1F1EC 1F1F8;
-๐Ÿ‡ฌ๐Ÿ‡น flag: Guatemala; 1F1EC 1F1F9;
-๐Ÿ‡ฌ๐Ÿ‡บ flag: Guam; 1F1EC 1F1FA;
-๐Ÿ‡ฌ๐Ÿ‡ผ flag: Guinea-Bissau; 1F1EC 1F1FC;
-๐Ÿ‡ฌ๐Ÿ‡พ flag: Guyana; 1F1EC 1F1FE;
-๐Ÿ‡ญ๐Ÿ‡ฐ flag: Hong Kong SAR China; 1F1ED 1F1F0;
-๐Ÿ‡ญ๐Ÿ‡ฒ flag: Heard & McDonald Islands; 1F1ED 1F1F2;
-๐Ÿ‡ญ๐Ÿ‡ณ flag: Honduras; 1F1ED 1F1F3;
-๐Ÿ‡ญ๐Ÿ‡ท flag: Croatia; 1F1ED 1F1F7;
-๐Ÿ‡ญ๐Ÿ‡น flag: Haiti; 1F1ED 1F1F9;
-๐Ÿ‡ญ๐Ÿ‡บ flag: Hungary; 1F1ED 1F1FA;
-๐Ÿ‡ฎ๐Ÿ‡จ flag: Canary Islands; 1F1EE 1F1E8;
-๐Ÿ‡ฎ๐Ÿ‡ฉ flag: Indonesia; 1F1EE 1F1E9;
-๐Ÿ‡ฎ๐Ÿ‡ช flag: Ireland; 1F1EE 1F1EA;
-๐Ÿ‡ฎ๐Ÿ‡ฑ flag: Israel; 1F1EE 1F1F1;
-๐Ÿ‡ฎ๐Ÿ‡ฒ flag: Isle of Man; 1F1EE 1F1F2;
-๐Ÿ‡ฎ๐Ÿ‡ณ flag: India; 1F1EE 1F1F3;
-๐Ÿ‡ฎ๐Ÿ‡ด flag: British Indian Ocean Territory; 1F1EE 1F1F4;
-๐Ÿ‡ฎ๐Ÿ‡ถ flag: Iraq; 1F1EE 1F1F6;
-๐Ÿ‡ฎ๐Ÿ‡ท flag: Iran; 1F1EE 1F1F7;
-๐Ÿ‡ฎ๐Ÿ‡ธ flag: Iceland; 1F1EE 1F1F8;
-๐Ÿ‡ฎ๐Ÿ‡น flag: Italy; 1F1EE 1F1F9;
-๐Ÿ‡ฏ๐Ÿ‡ช flag: Jersey; 1F1EF 1F1EA;
-๐Ÿ‡ฏ๐Ÿ‡ฒ flag: Jamaica; 1F1EF 1F1F2;
-๐Ÿ‡ฏ๐Ÿ‡ด flag: Jordan; 1F1EF 1F1F4;
-๐Ÿ‡ฏ๐Ÿ‡ต flag: Japan; 1F1EF 1F1F5;
-๐Ÿ‡ฐ๐Ÿ‡ช flag: Kenya; 1F1F0 1F1EA;
-๐Ÿ‡ฐ๐Ÿ‡ฌ flag: Kyrgyzstan; 1F1F0 1F1EC;
-๐Ÿ‡ฐ๐Ÿ‡ญ flag: Cambodia; 1F1F0 1F1ED;
-๐Ÿ‡ฐ๐Ÿ‡ฎ flag: Kiribati; 1F1F0 1F1EE;
-๐Ÿ‡ฐ๐Ÿ‡ฒ flag: Comoros; 1F1F0 1F1F2;
-๐Ÿ‡ฐ๐Ÿ‡ณ flag: St. Kitts & Nevis; 1F1F0 1F1F3;
-๐Ÿ‡ฐ๐Ÿ‡ต flag: North Korea; 1F1F0 1F1F5;
-๐Ÿ‡ฐ๐Ÿ‡ท flag: South Korea; 1F1F0 1F1F7;
-๐Ÿ‡ฐ๐Ÿ‡ผ flag: Kuwait; 1F1F0 1F1FC;
-๐Ÿ‡ฐ๐Ÿ‡พ flag: Cayman Islands; 1F1F0 1F1FE;
-๐Ÿ‡ฐ๐Ÿ‡ฟ flag: Kazakhstan; 1F1F0 1F1FF;
-๐Ÿ‡ฑ๐Ÿ‡ฆ flag: Laos; 1F1F1 1F1E6;
-๐Ÿ‡ฑ๐Ÿ‡ง flag: Lebanon; 1F1F1 1F1E7;
-๐Ÿ‡ฑ๐Ÿ‡จ flag: St. Lucia; 1F1F1 1F1E8;
-๐Ÿ‡ฑ๐Ÿ‡ฎ flag: Liechtenstein; 1F1F1 1F1EE;
-๐Ÿ‡ฑ๐Ÿ‡ฐ flag: Sri Lanka; 1F1F1 1F1F0;
-๐Ÿ‡ฑ๐Ÿ‡ท flag: Liberia; 1F1F1 1F1F7;
-๐Ÿ‡ฑ๐Ÿ‡ธ flag: Lesotho; 1F1F1 1F1F8;
-๐Ÿ‡ฑ๐Ÿ‡น flag: Lithuania; 1F1F1 1F1F9;
-๐Ÿ‡ฑ๐Ÿ‡บ flag: Luxembourg; 1F1F1 1F1FA;
-๐Ÿ‡ฑ๐Ÿ‡ป flag: Latvia; 1F1F1 1F1FB;
-๐Ÿ‡ฑ๐Ÿ‡พ flag: Libya; 1F1F1 1F1FE;
-๐Ÿ‡ฒ๐Ÿ‡ฆ flag: Morocco; 1F1F2 1F1E6;
-๐Ÿ‡ฒ๐Ÿ‡จ flag: Monaco; 1F1F2 1F1E8;
-๐Ÿ‡ฒ๐Ÿ‡ฉ flag: Moldova; 1F1F2 1F1E9;
-๐Ÿ‡ฒ๐Ÿ‡ช flag: Montenegro; 1F1F2 1F1EA;
-๐Ÿ‡ฒ๐Ÿ‡ซ flag: St. Martin; 1F1F2 1F1EB;
-๐Ÿ‡ฒ๐Ÿ‡ฌ flag: Madagascar; 1F1F2 1F1EC;
-๐Ÿ‡ฒ๐Ÿ‡ญ flag: Marshall Islands; 1F1F2 1F1ED;
-๐Ÿ‡ฒ๐Ÿ‡ฐ flag: North Macedonia; 1F1F2 1F1F0;
-๐Ÿ‡ฒ๐Ÿ‡ฑ flag: Mali; 1F1F2 1F1F1;
-๐Ÿ‡ฒ๐Ÿ‡ฒ flag: Myanmar (Burma); 1F1F2 1F1F2;
-๐Ÿ‡ฒ๐Ÿ‡ณ flag: Mongolia; 1F1F2 1F1F3;
-๐Ÿ‡ฒ๐Ÿ‡ด flag: Macao SAR China; 1F1F2 1F1F4;
-๐Ÿ‡ฒ๐Ÿ‡ต flag: Northern Mariana Islands; 1F1F2 1F1F5;
-๐Ÿ‡ฒ๐Ÿ‡ถ flag: Martinique; 1F1F2 1F1F6;
-๐Ÿ‡ฒ๐Ÿ‡ท flag: Mauritania; 1F1F2 1F1F7;
-๐Ÿ‡ฒ๐Ÿ‡ธ flag: Montserrat; 1F1F2 1F1F8;
-๐Ÿ‡ฒ๐Ÿ‡น flag: Malta; 1F1F2 1F1F9;
-๐Ÿ‡ฒ๐Ÿ‡บ flag: Mauritius; 1F1F2 1F1FA;
-๐Ÿ‡ฒ๐Ÿ‡ป flag: Maldives; 1F1F2 1F1FB;
-๐Ÿ‡ฒ๐Ÿ‡ผ flag: Malawi; 1F1F2 1F1FC;
-๐Ÿ‡ฒ๐Ÿ‡ฝ flag: Mexico; 1F1F2 1F1FD;
-๐Ÿ‡ฒ๐Ÿ‡พ flag: Malaysia; 1F1F2 1F1FE;
-๐Ÿ‡ฒ๐Ÿ‡ฟ flag: Mozambique; 1F1F2 1F1FF;
-๐Ÿ‡ณ๐Ÿ‡ฆ flag: Namibia; 1F1F3 1F1E6;
-๐Ÿ‡ณ๐Ÿ‡จ flag: New Caledonia; 1F1F3 1F1E8;
-๐Ÿ‡ณ๐Ÿ‡ช flag: Niger; 1F1F3 1F1EA;
-๐Ÿ‡ณ๐Ÿ‡ซ flag: Norfolk Island; 1F1F3 1F1EB;
-๐Ÿ‡ณ๐Ÿ‡ฌ flag: Nigeria; 1F1F3 1F1EC;
-๐Ÿ‡ณ๐Ÿ‡ฎ flag: Nicaragua; 1F1F3 1F1EE;
-๐Ÿ‡ณ๐Ÿ‡ฑ flag: Netherlands; 1F1F3 1F1F1;
-๐Ÿ‡ณ๐Ÿ‡ด flag: Norway; 1F1F3 1F1F4;
-๐Ÿ‡ณ๐Ÿ‡ต flag: Nepal; 1F1F3 1F1F5;
-๐Ÿ‡ณ๐Ÿ‡ท flag: Nauru; 1F1F3 1F1F7;
-๐Ÿ‡ณ๐Ÿ‡บ flag: Niue; 1F1F3 1F1FA;
-๐Ÿ‡ณ๐Ÿ‡ฟ flag: New Zealand; 1F1F3 1F1FF;
-๐Ÿ‡ด๐Ÿ‡ฒ flag: Oman; 1F1F4 1F1F2;
-๐Ÿ‡ต๐Ÿ‡ฆ flag: Panama; 1F1F5 1F1E6;
-๐Ÿ‡ต๐Ÿ‡ช flag: Peru; 1F1F5 1F1EA;
-๐Ÿ‡ต๐Ÿ‡ซ flag: French Polynesia; 1F1F5 1F1EB;
-๐Ÿ‡ต๐Ÿ‡ฌ flag: Papua New Guinea; 1F1F5 1F1EC;
-๐Ÿ‡ต๐Ÿ‡ญ flag: Philippines; 1F1F5 1F1ED;
-๐Ÿ‡ต๐Ÿ‡ฐ flag: Pakistan; 1F1F5 1F1F0;
-๐Ÿ‡ต๐Ÿ‡ฑ flag: Poland; 1F1F5 1F1F1;
-๐Ÿ‡ต๐Ÿ‡ฒ flag: St. Pierre & Miquelon; 1F1F5 1F1F2;
-๐Ÿ‡ต๐Ÿ‡ณ flag: Pitcairn Islands; 1F1F5 1F1F3;
-๐Ÿ‡ต๐Ÿ‡ท flag: Puerto Rico; 1F1F5 1F1F7;
-๐Ÿ‡ต๐Ÿ‡ธ flag: Palestinian Territories; 1F1F5 1F1F8;
-๐Ÿ‡ต๐Ÿ‡น flag: Portugal; 1F1F5 1F1F9;
-๐Ÿ‡ต๐Ÿ‡ผ flag: Palau; 1F1F5 1F1FC;
-๐Ÿ‡ต๐Ÿ‡พ flag: Paraguay; 1F1F5 1F1FE;
-๐Ÿ‡ถ๐Ÿ‡ฆ flag: Qatar; 1F1F6 1F1E6;
-๐Ÿ‡ท๐Ÿ‡ช flag: Rรฉunion; 1F1F7 1F1EA;
-๐Ÿ‡ท๐Ÿ‡ด flag: Romania; 1F1F7 1F1F4;
-๐Ÿ‡ท๐Ÿ‡ธ flag: Serbia; 1F1F7 1F1F8;
-๐Ÿ‡ท๐Ÿ‡บ flag: Russia; 1F1F7 1F1FA;
-๐Ÿ‡ท๐Ÿ‡ผ flag: Rwanda; 1F1F7 1F1FC;
-๐Ÿ‡ธ๐Ÿ‡ฆ flag: Saudi Arabia; 1F1F8 1F1E6;
-๐Ÿ‡ธ๐Ÿ‡ง flag: Solomon Islands; 1F1F8 1F1E7;
-๐Ÿ‡ธ๐Ÿ‡จ flag: Seychelles; 1F1F8 1F1E8;
-๐Ÿ‡ธ๐Ÿ‡ฉ flag: Sudan; 1F1F8 1F1E9;
-๐Ÿ‡ธ๐Ÿ‡ช flag: Sweden; 1F1F8 1F1EA;
-๐Ÿ‡ธ๐Ÿ‡ฌ flag: Singapore; 1F1F8 1F1EC;
-๐Ÿ‡ธ๐Ÿ‡ญ flag: St. Helena; 1F1F8 1F1ED;
-๐Ÿ‡ธ๐Ÿ‡ฎ flag: Slovenia; 1F1F8 1F1EE;
-๐Ÿ‡ธ๐Ÿ‡ฏ flag: Svalbard & Jan Mayen; 1F1F8 1F1EF;
-๐Ÿ‡ธ๐Ÿ‡ฐ flag: Slovakia; 1F1F8 1F1F0;
-๐Ÿ‡ธ๐Ÿ‡ฑ flag: Sierra Leone; 1F1F8 1F1F1;
-๐Ÿ‡ธ๐Ÿ‡ฒ flag: San Marino; 1F1F8 1F1F2;
-๐Ÿ‡ธ๐Ÿ‡ณ flag: Senegal; 1F1F8 1F1F3;
-๐Ÿ‡ธ๐Ÿ‡ด flag: Somalia; 1F1F8 1F1F4;
-๐Ÿ‡ธ๐Ÿ‡ท flag: Suriname; 1F1F8 1F1F7;
-๐Ÿ‡ธ๐Ÿ‡ธ flag: South Sudan; 1F1F8 1F1F8;
-๐Ÿ‡ธ๐Ÿ‡น flag: Sรฃo Tomรฉ & Prรญncipe; 1F1F8 1F1F9;
-๐Ÿ‡ธ๐Ÿ‡ป flag: El Salvador; 1F1F8 1F1FB;
-๐Ÿ‡ธ๐Ÿ‡ฝ flag: Sint Maarten; 1F1F8 1F1FD;
-๐Ÿ‡ธ๐Ÿ‡พ flag: Syria; 1F1F8 1F1FE;
-๐Ÿ‡ธ๐Ÿ‡ฟ flag: Eswatini; 1F1F8 1F1FF;
-๐Ÿ‡น๐Ÿ‡ฆ flag: Tristan da Cunha; 1F1F9 1F1E6;
-๐Ÿ‡น๐Ÿ‡จ flag: Turks & Caicos Islands; 1F1F9 1F1E8;
-๐Ÿ‡น๐Ÿ‡ฉ flag: Chad; 1F1F9 1F1E9;
-๐Ÿ‡น๐Ÿ‡ซ flag: French Southern Territories; 1F1F9 1F1EB;
-๐Ÿ‡น๐Ÿ‡ฌ flag: Togo; 1F1F9 1F1EC;
-๐Ÿ‡น๐Ÿ‡ญ flag: Thailand; 1F1F9 1F1ED;
-๐Ÿ‡น๐Ÿ‡ฏ flag: Tajikistan; 1F1F9 1F1EF;
-๐Ÿ‡น๐Ÿ‡ฐ flag: Tokelau; 1F1F9 1F1F0;
-๐Ÿ‡น๐Ÿ‡ฑ flag: Timor-Leste; 1F1F9 1F1F1;
-๐Ÿ‡น๐Ÿ‡ฒ flag: Turkmenistan; 1F1F9 1F1F2;
-๐Ÿ‡น๐Ÿ‡ณ flag: Tunisia; 1F1F9 1F1F3;
-๐Ÿ‡น๐Ÿ‡ด flag: Tonga; 1F1F9 1F1F4;
-๐Ÿ‡น๐Ÿ‡ท flag: Turkey; 1F1F9 1F1F7;
-๐Ÿ‡น๐Ÿ‡น flag: Trinidad & Tobago; 1F1F9 1F1F9;
-๐Ÿ‡น๐Ÿ‡ป flag: Tuvalu; 1F1F9 1F1FB;
-๐Ÿ‡น๐Ÿ‡ผ flag: Taiwan; 1F1F9 1F1FC;
-๐Ÿ‡น๐Ÿ‡ฟ flag: Tanzania; 1F1F9 1F1FF;
-๐Ÿ‡บ๐Ÿ‡ฆ flag: Ukraine; 1F1FA 1F1E6;
-๐Ÿ‡บ๐Ÿ‡ฌ flag: Uganda; 1F1FA 1F1EC;
-๐Ÿ‡บ๐Ÿ‡ฒ flag: U.S. Outlying Islands; 1F1FA 1F1F2;
-๐Ÿ‡บ๐Ÿ‡ณ flag: United Nations; 1F1FA 1F1F3;
-๐Ÿ‡บ๐Ÿ‡ธ flag: United States; 1F1FA 1F1F8;
-๐Ÿ‡บ๐Ÿ‡พ flag: Uruguay; 1F1FA 1F1FE;
-๐Ÿ‡บ๐Ÿ‡ฟ flag: Uzbekistan; 1F1FA 1F1FF;
-๐Ÿ‡ป๐Ÿ‡ฆ flag: Vatican City; 1F1FB 1F1E6;
-๐Ÿ‡ป๐Ÿ‡จ flag: St. Vincent & Grenadines; 1F1FB 1F1E8;
-๐Ÿ‡ป๐Ÿ‡ช flag: Venezuela; 1F1FB 1F1EA;
-๐Ÿ‡ป๐Ÿ‡ฌ flag: British Virgin Islands; 1F1FB 1F1EC;
-๐Ÿ‡ป๐Ÿ‡ฎ flag: U.S. Virgin Islands; 1F1FB 1F1EE;
-๐Ÿ‡ป๐Ÿ‡ณ flag: Vietnam; 1F1FB 1F1F3;
-๐Ÿ‡ป๐Ÿ‡บ flag: Vanuatu; 1F1FB 1F1FA;
-๐Ÿ‡ผ๐Ÿ‡ซ flag: Wallis & Futuna; 1F1FC 1F1EB;
-๐Ÿ‡ผ๐Ÿ‡ธ flag: Samoa; 1F1FC 1F1F8;
-๐Ÿ‡ฝ๐Ÿ‡ฐ flag: Kosovo; 1F1FD 1F1F0;
-๐Ÿ‡พ๐Ÿ‡ช flag: Yemen; 1F1FE 1F1EA;
-๐Ÿ‡พ๐Ÿ‡น flag: Mayotte; 1F1FE 1F1F9;
-๐Ÿ‡ฟ๐Ÿ‡ฆ flag: South Africa; 1F1FF 1F1E6;
-๐Ÿ‡ฟ๐Ÿ‡ฒ flag: Zambia; 1F1FF 1F1F2;
-๐Ÿ‡ฟ๐Ÿ‡ผ flag: Zimbabwe; 1F1FF 1F1FC;
-๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ flag: England; 1F3F4725E7F;
-๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ flag: Scotland; 1F3F472334F;
-๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ flag: Wales; 1F3F4727C3F;
+๐Ÿ˜€ grinning face
+๐Ÿ˜ƒ grinning face with big eyes
+๐Ÿ˜„ grinning face with smiling eyes
+๐Ÿ˜ beaming face with smiling eyes
+๐Ÿ˜† grinning squinting face
+๐Ÿ˜… grinning face with sweat
+๐Ÿคฃ rolling on the floor laughing
+๐Ÿ˜‚ face with tears of joy
+๐Ÿ™‚ slightly smiling face
+๐Ÿ™ƒ upside-down face
+๐Ÿซ  melting face
+๐Ÿ˜‰ winking face
+๐Ÿ˜Š smiling face with smiling eyes
+๐Ÿ˜‡ smiling face with halo
+๐Ÿฅฐ smiling face with hearts
+๐Ÿ˜ smiling face with heart-eyes
+๐Ÿคฉ star-struck
+๐Ÿ˜˜ face blowing a kiss
+๐Ÿ˜— kissing face
+โ˜บ๏ธ smiling face
+๐Ÿ˜š kissing face with closed eyes
+๐Ÿ˜™ kissing face with smiling eyes
+๐Ÿฅฒ smiling face with tear
+๐Ÿ˜‹ face savoring food
+๐Ÿ˜› face with tongue
+๐Ÿ˜œ winking face with tongue
+๐Ÿคช zany face
+๐Ÿ˜ squinting face with tongue
+๐Ÿค‘ money-mouth face
+๐Ÿค— smiling face with open hands
+๐Ÿคญ face with hand over mouth
+๐Ÿซข face with open eyes and hand over mouth
+๐Ÿซฃ face with peeking eye
+๐Ÿคซ shushing face
+๐Ÿค” thinking face
+๐Ÿซก saluting face
+๐Ÿค zipper-mouth face
+๐Ÿคจ face with raised eyebrow
+๐Ÿ˜ neutral face
+๐Ÿ˜‘ expressionless face
+๐Ÿ˜ถ face without mouth
+๐Ÿซฅ dotted line face
+๐Ÿ˜ smirking face
+๐Ÿ˜’ unamused face
+๐Ÿ™„ face with rolling eyes
+๐Ÿ˜ฌ grimacing face
+๐Ÿคฅ lying face
+๐Ÿ˜Œ relieved face
+๐Ÿ˜” pensive face
+๐Ÿ˜ช sleepy face
+๐Ÿคค drooling face
+๐Ÿ˜ด sleeping face
+๐Ÿ˜ท face with medical mask
+๐Ÿค’ face with thermometer
+๐Ÿค• face with head-bandage
+๐Ÿคข nauseated face
+๐Ÿคฎ face vomiting
+๐Ÿคง sneezing face
+๐Ÿฅต hot face
+๐Ÿฅถ cold face
+๐Ÿฅด woozy face
+๐Ÿ˜ต face with crossed-out eyes
+๐Ÿคฏ exploding head
+๐Ÿค  cowboy hat face
+๐Ÿฅณ partying face
+๐Ÿฅธ disguised face
+๐Ÿ˜Ž smiling face with sunglasses
+๐Ÿค“ nerd face
+๐Ÿง face with monocle
+๐Ÿ˜• confused face
+๐Ÿซค face with diagonal mouth
+๐Ÿ˜Ÿ worried face
+๐Ÿ™ slightly frowning face
+โ˜น๏ธ frowning face
+๐Ÿ˜ฎ face with open mouth
+๐Ÿ˜ฏ hushed face
+๐Ÿ˜ฒ astonished face
+๐Ÿ˜ณ flushed face
+๐Ÿฅบ pleading face
+๐Ÿฅน face holding back tears
+๐Ÿ˜ฆ frowning face with open mouth
+๐Ÿ˜ง anguished face
+๐Ÿ˜จ fearful face
+๐Ÿ˜ฐ anxious face with sweat
+๐Ÿ˜ฅ sad but relieved face
+๐Ÿ˜ข crying face
+๐Ÿ˜ญ loudly crying face
+๐Ÿ˜ฑ face screaming in fear
+๐Ÿ˜– confounded face
+๐Ÿ˜ฃ persevering face
+๐Ÿ˜ž disappointed face
+๐Ÿ˜“ downcast face with sweat
+๐Ÿ˜ฉ weary face
+๐Ÿ˜ซ tired face
+๐Ÿฅฑ yawning face
+๐Ÿ˜ค face with steam from nose
+๐Ÿ˜ก pouting face
+๐Ÿ˜  angry face
+๐Ÿคฌ face with symbols on mouth
+๐Ÿ˜ˆ smiling face with horns
+๐Ÿ‘ฟ angry face with horns
+๐Ÿ’€ skull
+โ˜ ๏ธ skull and crossbones
+๐Ÿ’ฉ pile of poo
+๐Ÿคก clown face
+๐Ÿ‘น ogre
+๐Ÿ‘บ goblin
+๐Ÿ‘ป ghost
+๐Ÿ‘ฝ alien
+๐Ÿ‘พ alien monster
+๐Ÿค– robot
+๐Ÿ˜บ grinning cat
+๐Ÿ˜ธ grinning cat with smiling eyes
+๐Ÿ˜น cat with tears of joy
+๐Ÿ˜ป smiling cat with heart-eyes
+๐Ÿ˜ผ cat with wry smile
+๐Ÿ˜ฝ kissing cat
+๐Ÿ™€ weary cat
+๐Ÿ˜ฟ crying cat
+๐Ÿ˜พ pouting cat
+๐Ÿ™ˆ see-no-evil monkey
+๐Ÿ™‰ hear-no-evil monkey
+๐Ÿ™Š speak-no-evil monkey
+๐Ÿ’‹ kiss mark
+๐Ÿ’Œ love letter
+๐Ÿ’˜ heart with arrow
+๐Ÿ’ heart with ribbon
+๐Ÿ’– sparkling heart
+๐Ÿ’— growing heart
+๐Ÿ’“ beating heart
+๐Ÿ’ž revolving hearts
+๐Ÿ’• two hearts
+๐Ÿ’Ÿ heart decoration
+โฃ๏ธ heart exclamation
+๐Ÿ’” broken heart
+โค๏ธ red heart
+๐Ÿงก orange heart
+๐Ÿ’› yellow heart
+๐Ÿ’š green heart
+๐Ÿ’™ blue heart
+๐Ÿ’œ purple heart
+๐ŸคŽ brown heart
+๐Ÿ–ค black heart
+๐Ÿค white heart
+๐Ÿ’ฏ hundred points
+๐Ÿ’ข anger symbol
+๐Ÿ’ฅ collision
+๐Ÿ’ซ dizzy
+๐Ÿ’ฆ sweat droplets
+๐Ÿ’จ dashing away
+๐Ÿ•ณ๏ธ hole
+๐Ÿ’ฃ bomb
+๐Ÿ’ฌ speech balloon
+๐Ÿ—จ๏ธ left speech bubble
+๐Ÿ—ฏ๏ธ right anger bubble
+๐Ÿ’ญ thought balloon
+๐Ÿ’ค zzz
+๐Ÿ‘‹ waving hand
+๐Ÿคš raised back of hand
+๐Ÿ–๏ธ hand with fingers splayed
+โœ‹ raised hand
+๐Ÿ–– vulcan salute
+๐Ÿซฑ rightwards hand
+๐Ÿซฒ leftwards hand
+๐Ÿซณ palm down hand
+๐Ÿซด palm up hand
+๐Ÿ‘Œ OK hand
+๐ŸคŒ pinched fingers
+๐Ÿค pinching hand
+โœŒ๏ธ victory hand
+๐Ÿคž crossed fingers
+๐Ÿซฐ hand with index finger and thumb crossed
+๐ŸคŸ love-you gesture
+๐Ÿค˜ sign of the horns
+๐Ÿค™ call me hand
+๐Ÿ‘ˆ backhand index pointing left
+๐Ÿ‘‰ backhand index pointing right
+๐Ÿ‘† backhand index pointing up
+๐Ÿ–• middle finger
+๐Ÿ‘‡ backhand index pointing down
+โ˜๏ธ index pointing up
+๐Ÿซต index pointing at the viewer
+๐Ÿ‘ thumbs up
+๐Ÿ‘Ž thumbs down
+โœŠ raised fist
+๐Ÿ‘Š oncoming fist
+๐Ÿค› left-facing fist
+๐Ÿคœ right-facing fist
+๐Ÿ‘ clapping hands
+๐Ÿ™Œ raising hands
+๐Ÿซถ heart hands
+๐Ÿ‘ open hands
+๐Ÿคฒ palms up together
+๐Ÿค handshake
+๐Ÿ™ folded hands
+โœ๏ธ writing hand
+๐Ÿ’… nail polish
+๐Ÿคณ selfie
+๐Ÿ’ช flexed biceps
+๐Ÿฆพ mechanical arm
+๐Ÿฆฟ mechanical leg
+๐Ÿฆต leg
+๐Ÿฆถ foot
+๐Ÿ‘‚ ear
+๐Ÿฆป ear with hearing aid
+๐Ÿ‘ƒ nose
+๐Ÿง  brain
+๐Ÿซ€ anatomical heart
+๐Ÿซ lungs
+๐Ÿฆท tooth
+๐Ÿฆด bone
+๐Ÿ‘€ eyes
+๐Ÿ‘๏ธ eye
+๐Ÿ‘… tongue
+๐Ÿ‘„ mouth
+๐Ÿซฆ biting lip
+๐Ÿ‘ถ baby
+๐Ÿง’ child
+๐Ÿ‘ฆ boy
+๐Ÿ‘ง girl
+๐Ÿง‘ person
+๐Ÿ‘ฑ person: blond hair
+๐Ÿ‘จ man
+๐Ÿง” person: beard
+๐Ÿ‘ฉ woman
+๐Ÿง“ older person
+๐Ÿ‘ด old man
+๐Ÿ‘ต old woman
+๐Ÿ™ person frowning
+๐Ÿ™Ž person pouting
+๐Ÿ™… person gesturing NO
+๐Ÿ™† person gesturing OK
+๐Ÿ’ person tipping hand
+๐Ÿ™‹ person raising hand
+๐Ÿง deaf person
+๐Ÿ™‡ person bowing
+๐Ÿคฆ person facepalming
+๐Ÿคท person shrugging
+๐Ÿ‘ฎ police officer
+๐Ÿ•ต๏ธ detective
+๐Ÿ’‚ guard
+๐Ÿฅท ninja
+๐Ÿ‘ท construction worker
+๐Ÿซ… person with crown
+๐Ÿคด prince
+๐Ÿ‘ธ princess
+๐Ÿ‘ณ person wearing turban
+๐Ÿ‘ฒ person with skullcap
+๐Ÿง• woman with headscarf
+๐Ÿคต person in tuxedo
+๐Ÿ‘ฐ person with veil
+๐Ÿคฐ pregnant woman
+๐Ÿซƒ pregnant man
+๐Ÿซ„ pregnant person
+๐Ÿคฑ breast-feeding
+๐Ÿ‘ผ baby angel
+๐ŸŽ… Santa Claus
+๐Ÿคถ Mrs. Claus
+๐Ÿฆธ superhero
+๐Ÿฆน supervillain
+๐Ÿง™ mage
+๐Ÿงš fairy
+๐Ÿง› vampire
+๐Ÿงœ merperson
+๐Ÿง elf
+๐Ÿงž genie
+๐ŸงŸ zombie
+๐ŸงŒ troll
+๐Ÿ’† person getting massage
+๐Ÿ’‡ person getting haircut
+๐Ÿšถ person walking
+๐Ÿง person standing
+๐ŸงŽ person kneeling
+๐Ÿƒ person running
+๐Ÿ’ƒ woman dancing
+๐Ÿ•บ man dancing
+๐Ÿ•ด๏ธ person in suit levitating
+๐Ÿ‘ฏ people with bunny ears
+๐Ÿง– person in steamy room
+๐Ÿง— person climbing
+๐Ÿคบ person fencing
+๐Ÿ‡ horse racing
+โ›ท๏ธ skier
+๐Ÿ‚ snowboarder
+๐ŸŒ๏ธ person golfing
+๐Ÿ„ person surfing
+๐Ÿšฃ person rowing boat
+๐ŸŠ person swimming
+โ›น๏ธ person bouncing ball
+๐Ÿ‹๏ธ person lifting weights
+๐Ÿšด person biking
+๐Ÿšต person mountain biking
+๐Ÿคธ person cartwheeling
+๐Ÿคผ people wrestling
+๐Ÿคฝ person playing water polo
+๐Ÿคพ person playing handball
+๐Ÿคน person juggling
+๐Ÿง˜ person in lotus position
+๐Ÿ›€ person taking bath
+๐Ÿ›Œ person in bed
+๐Ÿ‘ญ women holding hands
+๐Ÿ‘ซ woman and man holding hands
+๐Ÿ‘ฌ men holding hands
+๐Ÿ’ kiss
+๐Ÿ’‘ couple with heart
+๐Ÿ‘ช family
+๐Ÿ—ฃ๏ธ speaking head
+๐Ÿ‘ค bust in silhouette
+๐Ÿ‘ฅ busts in silhouette
+๐Ÿซ‚ people hugging
+๐Ÿ‘ฃ footprints
+๐Ÿต monkey face
+๐Ÿ’ monkey
+๐Ÿฆ gorilla
+๐Ÿฆง orangutan
+๐Ÿถ dog face
+๐Ÿ• dog
+๐Ÿฆฎ guide dog
+๐Ÿฉ poodle
+๐Ÿบ wolf
+๐ŸฆŠ fox
+๐Ÿฆ raccoon
+๐Ÿฑ cat face
+๐Ÿˆ cat
+๐Ÿฆ lion
+๐Ÿฏ tiger face
+๐Ÿ… tiger
+๐Ÿ† leopard
+๐Ÿด horse face
+๐ŸŽ horse
+๐Ÿฆ„ unicorn
+๐Ÿฆ“ zebra
+๐ŸฆŒ deer
+๐Ÿฆฌ bison
+๐Ÿฎ cow face
+๐Ÿ‚ ox
+๐Ÿƒ water buffalo
+๐Ÿ„ cow
+๐Ÿท pig face
+๐Ÿ– pig
+๐Ÿ— boar
+๐Ÿฝ pig nose
+๐Ÿ ram
+๐Ÿ‘ ewe
+๐Ÿ goat
+๐Ÿช camel
+๐Ÿซ two-hump camel
+๐Ÿฆ™ llama
+๐Ÿฆ’ giraffe
+๐Ÿ˜ elephant
+๐Ÿฆฃ mammoth
+๐Ÿฆ rhinoceros
+๐Ÿฆ› hippopotamus
+๐Ÿญ mouse face
+๐Ÿ mouse
+๐Ÿ€ rat
+๐Ÿน hamster
+๐Ÿฐ rabbit face
+๐Ÿ‡ rabbit
+๐Ÿฟ๏ธ chipmunk
+๐Ÿฆซ beaver
+๐Ÿฆ” hedgehog
+๐Ÿฆ‡ bat
+๐Ÿป bear
+๐Ÿจ koala
+๐Ÿผ panda
+๐Ÿฆฅ sloth
+๐Ÿฆฆ otter
+๐Ÿฆจ skunk
+๐Ÿฆ˜ kangaroo
+๐Ÿฆก badger
+๐Ÿพ paw prints
+๐Ÿฆƒ turkey
+๐Ÿ” chicken
+๐Ÿ“ rooster
+๐Ÿฃ hatching chick
+๐Ÿค baby chick
+๐Ÿฅ front-facing baby chick
+๐Ÿฆ bird
+๐Ÿง penguin
+๐Ÿ•Š๏ธ dove
+๐Ÿฆ… eagle
+๐Ÿฆ† duck
+๐Ÿฆข swan
+๐Ÿฆ‰ owl
+๐Ÿฆค dodo
+๐Ÿชถ feather
+๐Ÿฆฉ flamingo
+๐Ÿฆš peacock
+๐Ÿฆœ parrot
+๐Ÿธ frog
+๐ŸŠ crocodile
+๐Ÿข turtle
+๐ŸฆŽ lizard
+๐Ÿ snake
+๐Ÿฒ dragon face
+๐Ÿ‰ dragon
+๐Ÿฆ• sauropod
+๐Ÿฆ– T-Rex
+๐Ÿณ spouting whale
+๐Ÿ‹ whale
+๐Ÿฌ dolphin
+๐Ÿฆญ seal
+๐ŸŸ fish
+๐Ÿ  tropical fish
+๐Ÿก blowfish
+๐Ÿฆˆ shark
+๐Ÿ™ octopus
+๐Ÿš spiral shell
+๐Ÿชธ coral
+๐ŸŒ snail
+๐Ÿฆ‹ butterfly
+๐Ÿ› bug
+๐Ÿœ ant
+๐Ÿ honeybee
+๐Ÿชฒ beetle
+๐Ÿž lady beetle
+๐Ÿฆ— cricket
+๐Ÿชณ cockroach
+๐Ÿ•ท๏ธ spider
+๐Ÿ•ธ๏ธ spider web
+๐Ÿฆ‚ scorpion
+๐ŸฆŸ mosquito
+๐Ÿชฐ fly
+๐Ÿชฑ worm
+๐Ÿฆ  microbe
+๐Ÿ’ bouquet
+๐ŸŒธ cherry blossom
+๐Ÿ’ฎ white flower
+๐Ÿชท lotus
+๐Ÿต๏ธ rosette
+๐ŸŒน rose
+๐Ÿฅ€ wilted flower
+๐ŸŒบ hibiscus
+๐ŸŒป sunflower
+๐ŸŒผ blossom
+๐ŸŒท tulip
+๐ŸŒฑ seedling
+๐Ÿชด potted plant
+๐ŸŒฒ evergreen tree
+๐ŸŒณ deciduous tree
+๐ŸŒด palm tree
+๐ŸŒต cactus
+๐ŸŒพ sheaf of rice
+๐ŸŒฟ herb
+โ˜˜๏ธ shamrock
+๐Ÿ€ four leaf clover
+๐Ÿ maple leaf
+๐Ÿ‚ fallen leaf
+๐Ÿƒ leaf fluttering in wind
+๐Ÿชน empty nest
+๐Ÿชบ nest with eggs
+๐Ÿ‡ grapes
+๐Ÿˆ melon
+๐Ÿ‰ watermelon
+๐ŸŠ tangerine
+๐Ÿ‹ lemon
+๐ŸŒ banana
+๐Ÿ pineapple
+๐Ÿฅญ mango
+๐ŸŽ red apple
+๐Ÿ green apple
+๐Ÿ pear
+๐Ÿ‘ peach
+๐Ÿ’ cherries
+๐Ÿ“ strawberry
+๐Ÿซ blueberries
+๐Ÿฅ kiwi fruit
+๐Ÿ… tomato
+๐Ÿซ’ olive
+๐Ÿฅฅ coconut
+๐Ÿฅ‘ avocado
+๐Ÿ† eggplant
+๐Ÿฅ” potato
+๐Ÿฅ• carrot
+๐ŸŒฝ ear of corn
+๐ŸŒถ๏ธ hot pepper
+๐Ÿซ‘ bell pepper
+๐Ÿฅ’ cucumber
+๐Ÿฅฌ leafy green
+๐Ÿฅฆ broccoli
+๐Ÿง„ garlic
+๐Ÿง… onion
+๐Ÿ„ mushroom
+๐Ÿฅœ peanuts
+๐Ÿซ˜ beans
+๐ŸŒฐ chestnut
+๐Ÿž bread
+๐Ÿฅ croissant
+๐Ÿฅ– baguette bread
+๐Ÿซ“ flatbread
+๐Ÿฅจ pretzel
+๐Ÿฅฏ bagel
+๐Ÿฅž pancakes
+๐Ÿง‡ waffle
+๐Ÿง€ cheese wedge
+๐Ÿ– meat on bone
+๐Ÿ— poultry leg
+๐Ÿฅฉ cut of meat
+๐Ÿฅ“ bacon
+๐Ÿ” hamburger
+๐ŸŸ french fries
+๐Ÿ• pizza
+๐ŸŒญ hot dog
+๐Ÿฅช sandwich
+๐ŸŒฎ taco
+๐ŸŒฏ burrito
+๐Ÿซ” tamale
+๐Ÿฅ™ stuffed flatbread
+๐Ÿง† falafel
+๐Ÿฅš egg
+๐Ÿณ cooking
+๐Ÿฅ˜ shallow pan of food
+๐Ÿฒ pot of food
+๐Ÿซ• fondue
+๐Ÿฅฃ bowl with spoon
+๐Ÿฅ— green salad
+๐Ÿฟ popcorn
+๐Ÿงˆ butter
+๐Ÿง‚ salt
+๐Ÿฅซ canned food
+๐Ÿฑ bento box
+๐Ÿ˜ rice cracker
+๐Ÿ™ rice ball
+๐Ÿš cooked rice
+๐Ÿ› curry rice
+๐Ÿœ steaming bowl
+๐Ÿ spaghetti
+๐Ÿ  roasted sweet potato
+๐Ÿข oden
+๐Ÿฃ sushi
+๐Ÿค fried shrimp
+๐Ÿฅ fish cake with swirl
+๐Ÿฅฎ moon cake
+๐Ÿก dango
+๐ŸฅŸ dumpling
+๐Ÿฅ  fortune cookie
+๐Ÿฅก takeout box
+๐Ÿฆ€ crab
+๐Ÿฆž lobster
+๐Ÿฆ shrimp
+๐Ÿฆ‘ squid
+๐Ÿฆช oyster
+๐Ÿฆ soft ice cream
+๐Ÿง shaved ice
+๐Ÿจ ice cream
+๐Ÿฉ doughnut
+๐Ÿช cookie
+๐ŸŽ‚ birthday cake
+๐Ÿฐ shortcake
+๐Ÿง cupcake
+๐Ÿฅง pie
+๐Ÿซ chocolate bar
+๐Ÿฌ candy
+๐Ÿญ lollipop
+๐Ÿฎ custard
+๐Ÿฏ honey pot
+๐Ÿผ baby bottle
+๐Ÿฅ› glass of milk
+โ˜• hot beverage
+๐Ÿซ– teapot
+๐Ÿต teacup without handle
+๐Ÿถ sake
+๐Ÿพ bottle with popping cork
+๐Ÿท wine glass
+๐Ÿธ cocktail glass
+๐Ÿน tropical drink
+๐Ÿบ beer mug
+๐Ÿป clinking beer mugs
+๐Ÿฅ‚ clinking glasses
+๐Ÿฅƒ tumbler glass
+๐Ÿซ— pouring liquid
+๐Ÿฅค cup with straw
+๐Ÿง‹ bubble tea
+๐Ÿงƒ beverage box
+๐Ÿง‰ mate
+๐ŸงŠ ice
+๐Ÿฅข chopsticks
+๐Ÿฝ๏ธ fork and knife with plate
+๐Ÿด fork and knife
+๐Ÿฅ„ spoon
+๐Ÿ”ช kitchen knife
+๐Ÿซ™ jar
+๐Ÿบ amphora
+๐ŸŒ globe showing Europe-Africa
+๐ŸŒŽ globe showing Americas
+๐ŸŒ globe showing Asia-Australia
+๐ŸŒ globe with meridians
+๐Ÿ—บ๏ธ world map
+๐Ÿ—พ map of Japan
+๐Ÿงญ compass
+๐Ÿ”๏ธ snow-capped mountain
+โ›ฐ๏ธ mountain
+๐ŸŒ‹ volcano
+๐Ÿ—ป mount fuji
+๐Ÿ•๏ธ camping
+๐Ÿ–๏ธ beach with umbrella
+๐Ÿœ๏ธ desert
+๐Ÿ๏ธ desert island
+๐Ÿž๏ธ national park
+๐ŸŸ๏ธ stadium
+๐Ÿ›๏ธ classical building
+๐Ÿ—๏ธ building construction
+๐Ÿงฑ brick
+๐Ÿชจ rock
+๐Ÿชต wood
+๐Ÿ›– hut
+๐Ÿ˜๏ธ houses
+๐Ÿš๏ธ derelict house
+๐Ÿ  house
+๐Ÿก house with garden
+๐Ÿข office building
+๐Ÿฃ Japanese post office
+๐Ÿค post office
+๐Ÿฅ hospital
+๐Ÿฆ bank
+๐Ÿจ hotel
+๐Ÿฉ love hotel
+๐Ÿช convenience store
+๐Ÿซ school
+๐Ÿฌ department store
+๐Ÿญ factory
+๐Ÿฏ Japanese castle
+๐Ÿฐ castle
+๐Ÿ’’ wedding
+๐Ÿ—ผ Tokyo tower
+๐Ÿ—ฝ Statue of Liberty
+โ›ช church
+๐Ÿ•Œ mosque
+๐Ÿ›• hindu temple
+๐Ÿ• synagogue
+โ›ฉ๏ธ shinto shrine
+๐Ÿ•‹ kaaba
+โ›ฒ fountain
+โ›บ tent
+๐ŸŒ foggy
+๐ŸŒƒ night with stars
+๐Ÿ™๏ธ cityscape
+๐ŸŒ„ sunrise over mountains
+๐ŸŒ… sunrise
+๐ŸŒ† cityscape at dusk
+๐ŸŒ‡ sunset
+๐ŸŒ‰ bridge at night
+โ™จ๏ธ hot springs
+๐ŸŽ  carousel horse
+๐Ÿ› playground slide
+๐ŸŽก ferris wheel
+๐ŸŽข roller coaster
+๐Ÿ’ˆ barber pole
+๐ŸŽช circus tent
+๐Ÿš‚ locomotive
+๐Ÿšƒ railway car
+๐Ÿš„ high-speed train
+๐Ÿš… bullet train
+๐Ÿš† train
+๐Ÿš‡ metro
+๐Ÿšˆ light rail
+๐Ÿš‰ station
+๐ŸšŠ tram
+๐Ÿš monorail
+๐Ÿšž mountain railway
+๐Ÿš‹ tram car
+๐ŸšŒ bus
+๐Ÿš oncoming bus
+๐ŸšŽ trolleybus
+๐Ÿš minibus
+๐Ÿš‘ ambulance
+๐Ÿš’ fire engine
+๐Ÿš“ police car
+๐Ÿš” oncoming police car
+๐Ÿš• taxi
+๐Ÿš– oncoming taxi
+๐Ÿš— automobile
+๐Ÿš˜ oncoming automobile
+๐Ÿš™ sport utility vehicle
+๐Ÿ›ป pickup truck
+๐Ÿšš delivery truck
+๐Ÿš› articulated lorry
+๐Ÿšœ tractor
+๐ŸŽ๏ธ racing car
+๐Ÿ๏ธ motorcycle
+๐Ÿ›ต motor scooter
+๐Ÿฆฝ manual wheelchair
+๐Ÿฆผ motorized wheelchair
+๐Ÿ›บ auto rickshaw
+๐Ÿšฒ bicycle
+๐Ÿ›ด kick scooter
+๐Ÿ›น skateboard
+๐Ÿ›ผ roller skate
+๐Ÿš bus stop
+๐Ÿ›ฃ๏ธ motorway
+๐Ÿ›ค๏ธ railway track
+๐Ÿ›ข๏ธ oil drum
+โ›ฝ fuel pump
+๐Ÿ›ž wheel
+๐Ÿšจ police car light
+๐Ÿšฅ horizontal traffic light
+๐Ÿšฆ vertical traffic light
+๐Ÿ›‘ stop sign
+๐Ÿšง construction
+โš“ anchor
+๐Ÿ›Ÿ ring buoy
+โ›ต sailboat
+๐Ÿ›ถ canoe
+๐Ÿšค speedboat
+๐Ÿ›ณ๏ธ passenger ship
+โ›ด๏ธ ferry
+๐Ÿ›ฅ๏ธ motor boat
+๐Ÿšข ship
+โœˆ๏ธ airplane
+๐Ÿ›ฉ๏ธ small airplane
+๐Ÿ›ซ airplane departure
+๐Ÿ›ฌ airplane arrival
+๐Ÿช‚ parachute
+๐Ÿ’บ seat
+๐Ÿš helicopter
+๐ŸšŸ suspension railway
+๐Ÿš  mountain cableway
+๐Ÿšก aerial tramway
+๐Ÿ›ฐ๏ธ satellite
+๐Ÿš€ rocket
+๐Ÿ›ธ flying saucer
+๐Ÿ›Ž๏ธ bellhop bell
+๐Ÿงณ luggage
+โŒ› hourglass done
+โณ hourglass not done
+โŒš watch
+โฐ alarm clock
+โฑ๏ธ stopwatch
+โฒ๏ธ timer clock
+๐Ÿ•ฐ๏ธ mantelpiece clock
+๐Ÿ•› twelve oโ€™clock
+๐Ÿ•ง twelve-thirty
+๐Ÿ• one oโ€™clock
+๐Ÿ•œ one-thirty
+๐Ÿ•‘ two oโ€™clock
+๐Ÿ• two-thirty
+๐Ÿ•’ three oโ€™clock
+๐Ÿ•ž three-thirty
+๐Ÿ•“ four oโ€™clock
+๐Ÿ•Ÿ four-thirty
+๐Ÿ•” five oโ€™clock
+๐Ÿ•  five-thirty
+๐Ÿ•• six oโ€™clock
+๐Ÿ•ก six-thirty
+๐Ÿ•– seven oโ€™clock
+๐Ÿ•ข seven-thirty
+๐Ÿ•— eight oโ€™clock
+๐Ÿ•ฃ eight-thirty
+๐Ÿ•˜ nine oโ€™clock
+๐Ÿ•ค nine-thirty
+๐Ÿ•™ ten oโ€™clock
+๐Ÿ•ฅ ten-thirty
+๐Ÿ•š eleven oโ€™clock
+๐Ÿ•ฆ eleven-thirty
+๐ŸŒ‘ new moon
+๐ŸŒ’ waxing crescent moon
+๐ŸŒ“ first quarter moon
+๐ŸŒ” waxing gibbous moon
+๐ŸŒ• full moon
+๐ŸŒ– waning gibbous moon
+๐ŸŒ— last quarter moon
+๐ŸŒ˜ waning crescent moon
+๐ŸŒ™ crescent moon
+๐ŸŒš new moon face
+๐ŸŒ› first quarter moon face
+๐ŸŒœ last quarter moon face
+๐ŸŒก๏ธ thermometer
+โ˜€๏ธ sun
+๐ŸŒ full moon face
+๐ŸŒž sun with face
+๐Ÿช ringed planet
+โญ star
+๐ŸŒŸ glowing star
+๐ŸŒ  shooting star
+๐ŸŒŒ milky way
+โ˜๏ธ cloud
+โ›… sun behind cloud
+โ›ˆ๏ธ cloud with lightning and rain
+๐ŸŒค๏ธ sun behind small cloud
+๐ŸŒฅ๏ธ sun behind large cloud
+๐ŸŒฆ๏ธ sun behind rain cloud
+๐ŸŒง๏ธ cloud with rain
+๐ŸŒจ๏ธ cloud with snow
+๐ŸŒฉ๏ธ cloud with lightning
+๐ŸŒช๏ธ tornado
+๐ŸŒซ๏ธ fog
+๐ŸŒฌ๏ธ wind face
+๐ŸŒ€ cyclone
+๐ŸŒˆ rainbow
+๐ŸŒ‚ closed umbrella
+โ˜‚๏ธ umbrella
+โ˜” umbrella with rain drops
+โ›ฑ๏ธ umbrella on ground
+โšก high voltage
+โ„๏ธ snowflake
+โ˜ƒ๏ธ snowman
+โ›„ snowman without snow
+โ˜„๏ธ comet
+๐Ÿ”ฅ fire
+๐Ÿ’ง droplet
+๐ŸŒŠ water wave
+๐ŸŽƒ jack-o-lantern
+๐ŸŽ„ Christmas tree
+๐ŸŽ† fireworks
+๐ŸŽ‡ sparkler
+๐Ÿงจ firecracker
+โœจ sparkles
+๐ŸŽˆ balloon
+๐ŸŽ‰ party popper
+๐ŸŽŠ confetti ball
+๐ŸŽ‹ tanabata tree
+๐ŸŽ pine decoration
+๐ŸŽŽ Japanese dolls
+๐ŸŽ carp streamer
+๐ŸŽ wind chime
+๐ŸŽ‘ moon viewing ceremony
+๐Ÿงง red envelope
+๐ŸŽ€ ribbon
+๐ŸŽ wrapped gift
+๐ŸŽ—๏ธ reminder ribbon
+๐ŸŽŸ๏ธ admission tickets
+๐ŸŽซ ticket
+๐ŸŽ–๏ธ military medal
+๐Ÿ† trophy
+๐Ÿ… sports medal
+๐Ÿฅ‡ 1st place medal
+๐Ÿฅˆ 2nd place medal
+๐Ÿฅ‰ 3rd place medal
+โšฝ soccer ball
+โšพ baseball
+๐ŸฅŽ softball
+๐Ÿ€ basketball
+๐Ÿ volleyball
+๐Ÿˆ american football
+๐Ÿ‰ rugby football
+๐ŸŽพ tennis
+๐Ÿฅ flying disc
+๐ŸŽณ bowling
+๐Ÿ cricket game
+๐Ÿ‘ field hockey
+๐Ÿ’ ice hockey
+๐Ÿฅ lacrosse
+๐Ÿ“ ping pong
+๐Ÿธ badminton
+๐ŸฅŠ boxing glove
+๐Ÿฅ‹ martial arts uniform
+๐Ÿฅ… goal net
+โ›ณ flag in hole
+โ›ธ๏ธ ice skate
+๐ŸŽฃ fishing pole
+๐Ÿคฟ diving mask
+๐ŸŽฝ running shirt
+๐ŸŽฟ skis
+๐Ÿ›ท sled
+๐ŸฅŒ curling stone
+๐ŸŽฏ bullseye
+๐Ÿช€ yo-yo
+๐Ÿช kite
+๐ŸŽฑ pool 8 ball
+๐Ÿ”ฎ crystal ball
+๐Ÿช„ magic wand
+๐Ÿงฟ nazar amulet
+๐Ÿชฌ hamsa
+๐ŸŽฎ video game
+๐Ÿ•น๏ธ joystick
+๐ŸŽฐ slot machine
+๐ŸŽฒ game die
+๐Ÿงฉ puzzle piece
+๐Ÿงธ teddy bear
+๐Ÿช… piรฑata
+๐Ÿชฉ mirror ball
+๐Ÿช† nesting dolls
+โ™ ๏ธ spade suit
+โ™ฅ๏ธ heart suit
+โ™ฆ๏ธ diamond suit
+โ™ฃ๏ธ club suit
+โ™Ÿ๏ธ chess pawn
+๐Ÿƒ joker
+๐Ÿ€„ mahjong red dragon
+๐ŸŽด flower playing cards
+๐ŸŽญ performing arts
+๐Ÿ–ผ๏ธ framed picture
+๐ŸŽจ artist palette
+๐Ÿงต thread
+๐Ÿชก sewing needle
+๐Ÿงถ yarn
+๐Ÿชข knot
+๐Ÿ‘“ glasses
+๐Ÿ•ถ๏ธ sunglasses
+๐Ÿฅฝ goggles
+๐Ÿฅผ lab coat
+๐Ÿฆบ safety vest
+๐Ÿ‘” necktie
+๐Ÿ‘• t-shirt
+๐Ÿ‘– jeans
+๐Ÿงฃ scarf
+๐Ÿงค gloves
+๐Ÿงฅ coat
+๐Ÿงฆ socks
+๐Ÿ‘— dress
+๐Ÿ‘˜ kimono
+๐Ÿฅป sari
+๐Ÿฉฑ one-piece swimsuit
+๐Ÿฉฒ briefs
+๐Ÿฉณ shorts
+๐Ÿ‘™ bikini
+๐Ÿ‘š womanโ€™s clothes
+๐Ÿ‘› purse
+๐Ÿ‘œ handbag
+๐Ÿ‘ clutch bag
+๐Ÿ›๏ธ shopping bags
+๐ŸŽ’ backpack
+๐Ÿฉด thong sandal
+๐Ÿ‘ž manโ€™s shoe
+๐Ÿ‘Ÿ running shoe
+๐Ÿฅพ hiking boot
+๐Ÿฅฟ flat shoe
+๐Ÿ‘  high-heeled shoe
+๐Ÿ‘ก womanโ€™s sandal
+๐Ÿฉฐ ballet shoes
+๐Ÿ‘ข womanโ€™s boot
+๐Ÿ‘‘ crown
+๐Ÿ‘’ womanโ€™s hat
+๐ŸŽฉ top hat
+๐ŸŽ“ graduation cap
+๐Ÿงข billed cap
+๐Ÿช– military helmet
+โ›‘๏ธ rescue workerโ€™s helmet
+๐Ÿ“ฟ prayer beads
+๐Ÿ’„ lipstick
+๐Ÿ’ ring
+๐Ÿ’Ž gem stone
+๐Ÿ”‡ muted speaker
+๐Ÿ”ˆ speaker low volume
+๐Ÿ”‰ speaker medium volume
+๐Ÿ”Š speaker high volume
+๐Ÿ“ข loudspeaker
+๐Ÿ“ฃ megaphone
+๐Ÿ“ฏ postal horn
+๐Ÿ”” bell
+๐Ÿ”• bell with slash
+๐ŸŽผ musical score
+๐ŸŽต musical note
+๐ŸŽถ musical notes
+๐ŸŽ™๏ธ studio microphone
+๐ŸŽš๏ธ level slider
+๐ŸŽ›๏ธ control knobs
+๐ŸŽค microphone
+๐ŸŽง headphone
+๐Ÿ“ป radio
+๐ŸŽท saxophone
+๐Ÿช— accordion
+๐ŸŽธ guitar
+๐ŸŽน musical keyboard
+๐ŸŽบ trumpet
+๐ŸŽป violin
+๐Ÿช• banjo
+๐Ÿฅ drum
+๐Ÿช˜ long drum
+๐Ÿ“ฑ mobile phone
+๐Ÿ“ฒ mobile phone with arrow
+โ˜Ž๏ธ telephone
+๐Ÿ“ž telephone receiver
+๐Ÿ“Ÿ pager
+๐Ÿ“  fax machine
+๐Ÿ”‹ battery
+๐Ÿชซ low battery
+๐Ÿ”Œ electric plug
+๐Ÿ’ป laptop
+๐Ÿ–ฅ๏ธ desktop computer
+๐Ÿ–จ๏ธ printer
+โŒจ๏ธ keyboard
+๐Ÿ–ฑ๏ธ computer mouse
+๐Ÿ–ฒ๏ธ trackball
+๐Ÿ’ฝ computer disk
+๐Ÿ’พ floppy disk
+๐Ÿ’ฟ optical disk
+๐Ÿ“€ dvd
+๐Ÿงฎ abacus
+๐ŸŽฅ movie camera
+๐ŸŽž๏ธ film frames
+๐Ÿ“ฝ๏ธ film projector
+๐ŸŽฌ clapper board
+๐Ÿ“บ television
+๐Ÿ“ท camera
+๐Ÿ“ธ camera with flash
+๐Ÿ“น video camera
+๐Ÿ“ผ videocassette
+๐Ÿ” magnifying glass tilted left
+๐Ÿ”Ž magnifying glass tilted right
+๐Ÿ•ฏ๏ธ candle
+๐Ÿ’ก light bulb
+๐Ÿ”ฆ flashlight
+๐Ÿฎ red paper lantern
+๐Ÿช” diya lamp
+๐Ÿ“” notebook with decorative cover
+๐Ÿ“• closed book
+๐Ÿ“– open book
+๐Ÿ“— green book
+๐Ÿ“˜ blue book
+๐Ÿ“™ orange book
+๐Ÿ“š books
+๐Ÿ““ notebook
+๐Ÿ“’ ledger
+๐Ÿ“ƒ page with curl
+๐Ÿ“œ scroll
+๐Ÿ“„ page facing up
+๐Ÿ“ฐ newspaper
+๐Ÿ—ž๏ธ rolled-up newspaper
+๐Ÿ“‘ bookmark tabs
+๐Ÿ”– bookmark
+๐Ÿท๏ธ label
+๐Ÿ’ฐ money bag
+๐Ÿช™ coin
+๐Ÿ’ด yen banknote
+๐Ÿ’ต dollar banknote
+๐Ÿ’ถ euro banknote
+๐Ÿ’ท pound banknote
+๐Ÿ’ธ money with wings
+๐Ÿ’ณ credit card
+๐Ÿงพ receipt
+๐Ÿ’น chart increasing with yen
+โœ‰๏ธ envelope
+๐Ÿ“ง e-mail
+๐Ÿ“จ incoming envelope
+๐Ÿ“ฉ envelope with arrow
+๐Ÿ“ค outbox tray
+๐Ÿ“ฅ inbox tray
+๐Ÿ“ฆ package
+๐Ÿ“ซ closed mailbox with raised flag
+๐Ÿ“ช closed mailbox with lowered flag
+๐Ÿ“ฌ open mailbox with raised flag
+๐Ÿ“ญ open mailbox with lowered flag
+๐Ÿ“ฎ postbox
+๐Ÿ—ณ๏ธ ballot box with ballot
+โœ๏ธ pencil
+โœ’๏ธ black nib
+๐Ÿ–‹๏ธ fountain pen
+๐Ÿ–Š๏ธ pen
+๐Ÿ–Œ๏ธ paintbrush
+๐Ÿ–๏ธ crayon
+๐Ÿ“ memo
+๐Ÿ’ผ briefcase
+๐Ÿ“ file folder
+๐Ÿ“‚ open file folder
+๐Ÿ—‚๏ธ card index dividers
+๐Ÿ“… calendar
+๐Ÿ“† tear-off calendar
+๐Ÿ—’๏ธ spiral notepad
+๐Ÿ—“๏ธ spiral calendar
+๐Ÿ“‡ card index
+๐Ÿ“ˆ chart increasing
+๐Ÿ“‰ chart decreasing
+๐Ÿ“Š bar chart
+๐Ÿ“‹ clipboard
+๐Ÿ“Œ pushpin
+๐Ÿ“ round pushpin
+๐Ÿ“Ž paperclip
+๐Ÿ–‡๏ธ linked paperclips
+๐Ÿ“ straight ruler
+๐Ÿ“ triangular ruler
+โœ‚๏ธ scissors
+๐Ÿ—ƒ๏ธ card file box
+๐Ÿ—„๏ธ file cabinet
+๐Ÿ—‘๏ธ wastebasket
+๐Ÿ”’ locked
+๐Ÿ”“ unlocked
+๐Ÿ” locked with pen
+๐Ÿ” locked with key
+๐Ÿ”‘ key
+๐Ÿ—๏ธ old key
+๐Ÿ”จ hammer
+๐Ÿช“ axe
+โ›๏ธ pick
+โš’๏ธ hammer and pick
+๐Ÿ› ๏ธ hammer and wrench
+๐Ÿ—ก๏ธ dagger
+โš”๏ธ crossed swords
+๐Ÿ”ซ water pistol
+๐Ÿชƒ boomerang
+๐Ÿน bow and arrow
+๐Ÿ›ก๏ธ shield
+๐Ÿชš carpentry saw
+๐Ÿ”ง wrench
+๐Ÿช› screwdriver
+๐Ÿ”ฉ nut and bolt
+โš™๏ธ gear
+๐Ÿ—œ๏ธ clamp
+โš–๏ธ balance scale
+๐Ÿฆฏ white cane
+๐Ÿ”— link
+โ›“๏ธ chains
+๐Ÿช hook
+๐Ÿงฐ toolbox
+๐Ÿงฒ magnet
+๐Ÿชœ ladder
+โš—๏ธ alembic
+๐Ÿงช test tube
+๐Ÿงซ petri dish
+๐Ÿงฌ dna
+๐Ÿ”ฌ microscope
+๐Ÿ”ญ telescope
+๐Ÿ“ก satellite antenna
+๐Ÿ’‰ syringe
+๐Ÿฉธ drop of blood
+๐Ÿ’Š pill
+๐Ÿฉน adhesive bandage
+๐Ÿฉผ crutch
+๐Ÿฉบ stethoscope
+๐Ÿฉป x-ray
+๐Ÿšช door
+๐Ÿ›— elevator
+๐Ÿชž mirror
+๐ŸชŸ window
+๐Ÿ›๏ธ bed
+๐Ÿ›‹๏ธ couch and lamp
+๐Ÿช‘ chair
+๐Ÿšฝ toilet
+๐Ÿช  plunger
+๐Ÿšฟ shower
+๐Ÿ› bathtub
+๐Ÿชค mouse trap
+๐Ÿช’ razor
+๐Ÿงด lotion bottle
+๐Ÿงท safety pin
+๐Ÿงน broom
+๐Ÿงบ basket
+๐Ÿงป roll of paper
+๐Ÿชฃ bucket
+๐Ÿงผ soap
+๐Ÿซง bubbles
+๐Ÿชฅ toothbrush
+๐Ÿงฝ sponge
+๐Ÿงฏ fire extinguisher
+๐Ÿ›’ shopping cart
+๐Ÿšฌ cigarette
+โšฐ๏ธ coffin
+๐Ÿชฆ headstone
+โšฑ๏ธ funeral urn
+๐Ÿ—ฟ moai
+๐Ÿชง placard
+๐Ÿชช identification card
+๐Ÿง ATM sign
+๐Ÿšฎ litter in bin sign
+๐Ÿšฐ potable water
+โ™ฟ wheelchair symbol
+๐Ÿšน menโ€™s room
+๐Ÿšบ womenโ€™s room
+๐Ÿšป restroom
+๐Ÿšผ baby symbol
+๐Ÿšพ water closet
+๐Ÿ›‚ passport control
+๐Ÿ›ƒ customs
+๐Ÿ›„ baggage claim
+๐Ÿ›… left luggage
+โš ๏ธ warning
+๐Ÿšธ children crossing
+โ›” no entry
+๐Ÿšซ prohibited
+๐Ÿšณ no bicycles
+๐Ÿšญ no smoking
+๐Ÿšฏ no littering
+๐Ÿšฑ non-potable water
+๐Ÿšท no pedestrians
+๐Ÿ“ต no mobile phones
+๐Ÿ”ž no one under eighteen
+โ˜ข๏ธ radioactive
+โ˜ฃ๏ธ biohazard
+โฌ†๏ธ up arrow
+โ†—๏ธ up-right arrow
+โžก๏ธ right arrow
+โ†˜๏ธ down-right arrow
+โฌ‡๏ธ down arrow
+โ†™๏ธ down-left arrow
+โฌ…๏ธ left arrow
+โ†–๏ธ up-left arrow
+โ†•๏ธ up-down arrow
+โ†”๏ธ left-right arrow
+โ†ฉ๏ธ right arrow curving left
+โ†ช๏ธ left arrow curving right
+โคด๏ธ right arrow curving up
+โคต๏ธ right arrow curving down
+๐Ÿ”ƒ clockwise vertical arrows
+๐Ÿ”„ counterclockwise arrows button
+๐Ÿ”™ BACK arrow
+๐Ÿ”š END arrow
+๐Ÿ”› ON! arrow
+๐Ÿ”œ SOON arrow
+๐Ÿ” TOP arrow
+๐Ÿ› place of worship
+โš›๏ธ atom symbol
+๐Ÿ•‰๏ธ om
+โœก๏ธ star of David
+โ˜ธ๏ธ wheel of dharma
+โ˜ฏ๏ธ yin yang
+โœ๏ธ latin cross
+โ˜ฆ๏ธ orthodox cross
+โ˜ช๏ธ star and crescent
+โ˜ฎ๏ธ peace symbol
+๐Ÿ•Ž menorah
+๐Ÿ”ฏ dotted six-pointed star
+โ™ˆ Aries
+โ™‰ Taurus
+โ™Š Gemini
+โ™‹ Cancer
+โ™Œ Leo
+โ™ Virgo
+โ™Ž Libra
+โ™ Scorpio
+โ™ Sagittarius
+โ™‘ Capricorn
+โ™’ Aquarius
+โ™“ Pisces
+โ›Ž Ophiuchus
+๐Ÿ”€ shuffle tracks button
+๐Ÿ” repeat button
+๐Ÿ”‚ repeat single button
+โ–ถ๏ธ play button
+โฉ fast-forward button
+โญ๏ธ next track button
+โฏ๏ธ play or pause button
+โ—€๏ธ reverse button
+โช fast reverse button
+โฎ๏ธ last track button
+๐Ÿ”ผ upwards button
+โซ fast up button
+๐Ÿ”ฝ downwards button
+โฌ fast down button
+โธ๏ธ pause button
+โน๏ธ stop button
+โบ๏ธ record button
+โ๏ธ eject button
+๐ŸŽฆ cinema
+๐Ÿ”… dim button
+๐Ÿ”† bright button
+๐Ÿ“ถ antenna bars
+๐Ÿ“ณ vibration mode
+๐Ÿ“ด mobile phone off
+โ™€๏ธ female sign
+โ™‚๏ธ male sign
+โšง๏ธ transgender symbol
+โœ–๏ธ multiply
+โž• plus
+โž– minus
+โž— divide
+๐ŸŸฐ heavy equals sign
+โ™พ๏ธ infinity
+โ€ผ๏ธ double exclamation mark
+โ‰๏ธ exclamation question mark
+โ“ red question mark
+โ” white question mark
+โ• white exclamation mark
+โ— red exclamation mark
+ใ€ฐ๏ธ wavy dash
+๐Ÿ’ฑ currency exchange
+๐Ÿ’ฒ heavy dollar sign
+โš•๏ธ medical symbol
+โ™ป๏ธ recycling symbol
+โšœ๏ธ fleur-de-lis
+๐Ÿ”ฑ trident emblem
+๐Ÿ“› name badge
+๐Ÿ”ฐ Japanese symbol for beginner
+โญ• hollow red circle
+โœ… check mark button
+โ˜‘๏ธ check box with check
+โœ”๏ธ check mark
+โŒ cross mark
+โŽ cross mark button
+โžฐ curly loop
+โžฟ double curly loop
+ใ€ฝ๏ธ part alternation mark
+โœณ๏ธ eight-spoked asterisk
+โœด๏ธ eight-pointed star
+โ‡๏ธ sparkle
+ยฉ๏ธ copyright
+ยฎ๏ธ registered
+โ„ข๏ธ trade mark
+#๏ธโƒฃ keycap: #
+*๏ธโƒฃ keycap: *
+0๏ธโƒฃ keycap: 0
+1๏ธโƒฃ keycap: 1
+2๏ธโƒฃ keycap: 2
+3๏ธโƒฃ keycap: 3
+4๏ธโƒฃ keycap: 4
+5๏ธโƒฃ keycap: 5
+6๏ธโƒฃ keycap: 6
+7๏ธโƒฃ keycap: 7
+8๏ธโƒฃ keycap: 8
+9๏ธโƒฃ keycap: 9
+๐Ÿ”Ÿ keycap: 10
+๐Ÿ”  input latin uppercase
+๐Ÿ”ก input latin lowercase
+๐Ÿ”ข input numbers
+๐Ÿ”ฃ input symbols
+๐Ÿ”ค input latin letters
+๐Ÿ…ฐ๏ธ A button (blood type)
+๐Ÿ†Ž AB button (blood type)
+๐Ÿ…ฑ๏ธ B button (blood type)
+๐Ÿ†‘ CL button
+๐Ÿ†’ COOL button
+๐Ÿ†“ FREE button
+โ„น๏ธ information
+๐Ÿ†” ID button
+โ“‚๏ธ circled M
+๐Ÿ†• NEW button
+๐Ÿ†– NG button
+๐Ÿ…พ๏ธ O button (blood type)
+๐Ÿ†— OK button
+๐Ÿ…ฟ๏ธ P button
+๐Ÿ†˜ SOS button
+๐Ÿ†™ UP! button
+๐Ÿ†š VS button
+๐Ÿˆ Japanese โ€œhereโ€ button
+๐Ÿˆ‚๏ธ Japanese โ€œservice chargeโ€ button
+๐Ÿˆท๏ธ Japanese โ€œmonthly amountโ€ button
+๐Ÿˆถ Japanese โ€œnot free of chargeโ€ button
+๐Ÿˆฏ Japanese โ€œreservedโ€ button
+๐Ÿ‰ Japanese โ€œbargainโ€ button
+๐Ÿˆน Japanese โ€œdiscountโ€ button
+๐Ÿˆš Japanese โ€œfree of chargeโ€ button
+๐Ÿˆฒ Japanese โ€œprohibitedโ€ button
+๐Ÿ‰‘ Japanese โ€œacceptableโ€ button
+๐Ÿˆธ Japanese โ€œapplicationโ€ button
+๐Ÿˆด Japanese โ€œpassing gradeโ€ button
+๐Ÿˆณ Japanese โ€œvacancyโ€ button
+ใŠ—๏ธ Japanese โ€œcongratulationsโ€ button
+ใŠ™๏ธ Japanese โ€œsecretโ€ button
+๐Ÿˆบ Japanese โ€œopen for businessโ€ button
+๐Ÿˆต Japanese โ€œno vacancyโ€ button
+๐Ÿ”ด red circle
+๐ŸŸ  orange circle
+๐ŸŸก yellow circle
+๐ŸŸข green circle
+๐Ÿ”ต blue circle
+๐ŸŸฃ purple circle
+๐ŸŸค brown circle
+โšซ black circle
+โšช white circle
+๐ŸŸฅ red square
+๐ŸŸง orange square
+๐ŸŸจ yellow square
+๐ŸŸฉ green square
+๐ŸŸฆ blue square
+๐ŸŸช purple square
+๐ŸŸซ brown square
+โฌ› black large square
+โฌœ white large square
+โ—ผ๏ธ black medium square
+โ—ป๏ธ white medium square
+โ—พ black medium-small square
+โ—ฝ white medium-small square
+โ–ช๏ธ black small square
+โ–ซ๏ธ white small square
+๐Ÿ”ถ large orange diamond
+๐Ÿ”ท large blue diamond
+๐Ÿ”ธ small orange diamond
+๐Ÿ”น small blue diamond
+๐Ÿ”บ red triangle pointed up
+๐Ÿ”ป red triangle pointed down
+๐Ÿ’  diamond with a dot
+๐Ÿ”˜ radio button
+๐Ÿ”ณ white square button
+๐Ÿ”ฒ black square button
+๐Ÿ chequered flag
+๐Ÿšฉ triangular flag
+๐ŸŽŒ crossed flags
+๐Ÿด black flag
+๐Ÿณ๏ธ white flag
+๐Ÿ‡ฆ๐Ÿ‡จ flag: Ascension Island
+๐Ÿ‡ฆ๐Ÿ‡ฉ flag: Andorra
+๐Ÿ‡ฆ๐Ÿ‡ช flag: United Arab Emirates
+๐Ÿ‡ฆ๐Ÿ‡ซ flag: Afghanistan
+๐Ÿ‡ฆ๐Ÿ‡ฌ flag: Antigua & Barbuda
+๐Ÿ‡ฆ๐Ÿ‡ฎ flag: Anguilla
+๐Ÿ‡ฆ๐Ÿ‡ฑ flag: Albania
+๐Ÿ‡ฆ๐Ÿ‡ฒ flag: Armenia
+๐Ÿ‡ฆ๐Ÿ‡ด flag: Angola
+๐Ÿ‡ฆ๐Ÿ‡ถ flag: Antarctica
+๐Ÿ‡ฆ๐Ÿ‡ท flag: Argentina
+๐Ÿ‡ฆ๐Ÿ‡ธ flag: American Samoa
+๐Ÿ‡ฆ๐Ÿ‡น flag: Austria
+๐Ÿ‡ฆ๐Ÿ‡บ flag: Australia
+๐Ÿ‡ฆ๐Ÿ‡ผ flag: Aruba
+๐Ÿ‡ฆ๐Ÿ‡ฝ flag: ร…land Islands
+๐Ÿ‡ฆ๐Ÿ‡ฟ flag: Azerbaijan
+๐Ÿ‡ง๐Ÿ‡ฆ flag: Bosnia & Herzegovina
+๐Ÿ‡ง๐Ÿ‡ง flag: Barbados
+๐Ÿ‡ง๐Ÿ‡ฉ flag: Bangladesh
+๐Ÿ‡ง๐Ÿ‡ช flag: Belgium
+๐Ÿ‡ง๐Ÿ‡ซ flag: Burkina Faso
+๐Ÿ‡ง๐Ÿ‡ฌ flag: Bulgaria
+๐Ÿ‡ง๐Ÿ‡ญ flag: Bahrain
+๐Ÿ‡ง๐Ÿ‡ฎ flag: Burundi
+๐Ÿ‡ง๐Ÿ‡ฏ flag: Benin
+๐Ÿ‡ง๐Ÿ‡ฑ flag: St. Barthรฉlemy
+๐Ÿ‡ง๐Ÿ‡ฒ flag: Bermuda
+๐Ÿ‡ง๐Ÿ‡ณ flag: Brunei
+๐Ÿ‡ง๐Ÿ‡ด flag: Bolivia
+๐Ÿ‡ง๐Ÿ‡ถ flag: Caribbean Netherlands
+๐Ÿ‡ง๐Ÿ‡ท flag: Brazil
+๐Ÿ‡ง๐Ÿ‡ธ flag: Bahamas
+๐Ÿ‡ง๐Ÿ‡น flag: Bhutan
+๐Ÿ‡ง๐Ÿ‡ป flag: Bouvet Island
+๐Ÿ‡ง๐Ÿ‡ผ flag: Botswana
+๐Ÿ‡ง๐Ÿ‡พ flag: Belarus
+๐Ÿ‡ง๐Ÿ‡ฟ flag: Belize
+๐Ÿ‡จ๐Ÿ‡ฆ flag: Canada
+๐Ÿ‡จ๐Ÿ‡จ flag: Cocos (Keeling) Islands
+๐Ÿ‡จ๐Ÿ‡ฉ flag: Congo - Kinshasa
+๐Ÿ‡จ๐Ÿ‡ซ flag: Central African Republic
+๐Ÿ‡จ๐Ÿ‡ฌ flag: Congo - Brazzaville
+๐Ÿ‡จ๐Ÿ‡ญ flag: Switzerland
+๐Ÿ‡จ๐Ÿ‡ฎ flag: Cรดte dโ€™Ivoire
+๐Ÿ‡จ๐Ÿ‡ฐ flag: Cook Islands
+๐Ÿ‡จ๐Ÿ‡ฑ flag: Chile
+๐Ÿ‡จ๐Ÿ‡ฒ flag: Cameroon
+๐Ÿ‡จ๐Ÿ‡ณ flag: China
+๐Ÿ‡จ๐Ÿ‡ด flag: Colombia
+๐Ÿ‡จ๐Ÿ‡ต flag: Clipperton Island
+๐Ÿ‡จ๐Ÿ‡ท flag: Costa Rica
+๐Ÿ‡จ๐Ÿ‡บ flag: Cuba
+๐Ÿ‡จ๐Ÿ‡ป flag: Cape Verde
+๐Ÿ‡จ๐Ÿ‡ผ flag: Curaรงao
+๐Ÿ‡จ๐Ÿ‡ฝ flag: Christmas Island
+๐Ÿ‡จ๐Ÿ‡พ flag: Cyprus
+๐Ÿ‡จ๐Ÿ‡ฟ flag: Czechia
+๐Ÿ‡ฉ๐Ÿ‡ช flag: Germany
+๐Ÿ‡ฉ๐Ÿ‡ฌ flag: Diego Garcia
+๐Ÿ‡ฉ๐Ÿ‡ฏ flag: Djibouti
+๐Ÿ‡ฉ๐Ÿ‡ฐ flag: Denmark
+๐Ÿ‡ฉ๐Ÿ‡ฒ flag: Dominica
+๐Ÿ‡ฉ๐Ÿ‡ด flag: Dominican Republic
+๐Ÿ‡ฉ๐Ÿ‡ฟ flag: Algeria
+๐Ÿ‡ช๐Ÿ‡ฆ flag: Ceuta & Melilla
+๐Ÿ‡ช๐Ÿ‡จ flag: Ecuador
+๐Ÿ‡ช๐Ÿ‡ช flag: Estonia
+๐Ÿ‡ช๐Ÿ‡ฌ flag: Egypt
+๐Ÿ‡ช๐Ÿ‡ญ flag: Western Sahara
+๐Ÿ‡ช๐Ÿ‡ท flag: Eritrea
+๐Ÿ‡ช๐Ÿ‡ธ flag: Spain
+๐Ÿ‡ช๐Ÿ‡น flag: Ethiopia
+๐Ÿ‡ช๐Ÿ‡บ flag: European Union
+๐Ÿ‡ซ๐Ÿ‡ฎ flag: Finland
+๐Ÿ‡ซ๐Ÿ‡ฏ flag: Fiji
+๐Ÿ‡ซ๐Ÿ‡ฐ flag: Falkland Islands
+๐Ÿ‡ซ๐Ÿ‡ฒ flag: Micronesia
+๐Ÿ‡ซ๐Ÿ‡ด flag: Faroe Islands
+๐Ÿ‡ซ๐Ÿ‡ท flag: France
+๐Ÿ‡ฌ๐Ÿ‡ฆ flag: Gabon
+๐Ÿ‡ฌ๐Ÿ‡ง flag: United Kingdom
+๐Ÿ‡ฌ๐Ÿ‡ฉ flag: Grenada
+๐Ÿ‡ฌ๐Ÿ‡ช flag: Georgia
+๐Ÿ‡ฌ๐Ÿ‡ซ flag: French Guiana
+๐Ÿ‡ฌ๐Ÿ‡ฌ flag: Guernsey
+๐Ÿ‡ฌ๐Ÿ‡ญ flag: Ghana
+๐Ÿ‡ฌ๐Ÿ‡ฎ flag: Gibraltar
+๐Ÿ‡ฌ๐Ÿ‡ฑ flag: Greenland
+๐Ÿ‡ฌ๐Ÿ‡ฒ flag: Gambia
+๐Ÿ‡ฌ๐Ÿ‡ณ flag: Guinea
+๐Ÿ‡ฌ๐Ÿ‡ต flag: Guadeloupe
+๐Ÿ‡ฌ๐Ÿ‡ถ flag: Equatorial Guinea
+๐Ÿ‡ฌ๐Ÿ‡ท flag: Greece
+๐Ÿ‡ฌ๐Ÿ‡ธ flag: South Georgia & South Sandwich Islands
+๐Ÿ‡ฌ๐Ÿ‡น flag: Guatemala
+๐Ÿ‡ฌ๐Ÿ‡บ flag: Guam
+๐Ÿ‡ฌ๐Ÿ‡ผ flag: Guinea-Bissau
+๐Ÿ‡ฌ๐Ÿ‡พ flag: Guyana
+๐Ÿ‡ญ๐Ÿ‡ฐ flag: Hong Kong SAR China
+๐Ÿ‡ญ๐Ÿ‡ฒ flag: Heard & McDonald Islands
+๐Ÿ‡ญ๐Ÿ‡ณ flag: Honduras
+๐Ÿ‡ญ๐Ÿ‡ท flag: Croatia
+๐Ÿ‡ญ๐Ÿ‡น flag: Haiti
+๐Ÿ‡ญ๐Ÿ‡บ flag: Hungary
+๐Ÿ‡ฎ๐Ÿ‡จ flag: Canary Islands
+๐Ÿ‡ฎ๐Ÿ‡ฉ flag: Indonesia
+๐Ÿ‡ฎ๐Ÿ‡ช flag: Ireland
+๐Ÿ‡ฎ๐Ÿ‡ฑ flag: Israel
+๐Ÿ‡ฎ๐Ÿ‡ฒ flag: Isle of Man
+๐Ÿ‡ฎ๐Ÿ‡ณ flag: India
+๐Ÿ‡ฎ๐Ÿ‡ด flag: British Indian Ocean Territory
+๐Ÿ‡ฎ๐Ÿ‡ถ flag: Iraq
+๐Ÿ‡ฎ๐Ÿ‡ท flag: Iran
+๐Ÿ‡ฎ๐Ÿ‡ธ flag: Iceland
+๐Ÿ‡ฎ๐Ÿ‡น flag: Italy
+๐Ÿ‡ฏ๐Ÿ‡ช flag: Jersey
+๐Ÿ‡ฏ๐Ÿ‡ฒ flag: Jamaica
+๐Ÿ‡ฏ๐Ÿ‡ด flag: Jordan
+๐Ÿ‡ฏ๐Ÿ‡ต flag: Japan
+๐Ÿ‡ฐ๐Ÿ‡ช flag: Kenya
+๐Ÿ‡ฐ๐Ÿ‡ฌ flag: Kyrgyzstan
+๐Ÿ‡ฐ๐Ÿ‡ญ flag: Cambodia
+๐Ÿ‡ฐ๐Ÿ‡ฎ flag: Kiribati
+๐Ÿ‡ฐ๐Ÿ‡ฒ flag: Comoros
+๐Ÿ‡ฐ๐Ÿ‡ณ flag: St. Kitts & Nevis
+๐Ÿ‡ฐ๐Ÿ‡ต flag: North Korea
+๐Ÿ‡ฐ๐Ÿ‡ท flag: South Korea
+๐Ÿ‡ฐ๐Ÿ‡ผ flag: Kuwait
+๐Ÿ‡ฐ๐Ÿ‡พ flag: Cayman Islands
+๐Ÿ‡ฐ๐Ÿ‡ฟ flag: Kazakhstan
+๐Ÿ‡ฑ๐Ÿ‡ฆ flag: Laos
+๐Ÿ‡ฑ๐Ÿ‡ง flag: Lebanon
+๐Ÿ‡ฑ๐Ÿ‡จ flag: St. Lucia
+๐Ÿ‡ฑ๐Ÿ‡ฎ flag: Liechtenstein
+๐Ÿ‡ฑ๐Ÿ‡ฐ flag: Sri Lanka
+๐Ÿ‡ฑ๐Ÿ‡ท flag: Liberia
+๐Ÿ‡ฑ๐Ÿ‡ธ flag: Lesotho
+๐Ÿ‡ฑ๐Ÿ‡น flag: Lithuania
+๐Ÿ‡ฑ๐Ÿ‡บ flag: Luxembourg
+๐Ÿ‡ฑ๐Ÿ‡ป flag: Latvia
+๐Ÿ‡ฑ๐Ÿ‡พ flag: Libya
+๐Ÿ‡ฒ๐Ÿ‡ฆ flag: Morocco
+๐Ÿ‡ฒ๐Ÿ‡จ flag: Monaco
+๐Ÿ‡ฒ๐Ÿ‡ฉ flag: Moldova
+๐Ÿ‡ฒ๐Ÿ‡ช flag: Montenegro
+๐Ÿ‡ฒ๐Ÿ‡ซ flag: St. Martin
+๐Ÿ‡ฒ๐Ÿ‡ฌ flag: Madagascar
+๐Ÿ‡ฒ๐Ÿ‡ญ flag: Marshall Islands
+๐Ÿ‡ฒ๐Ÿ‡ฐ flag: North Macedonia
+๐Ÿ‡ฒ๐Ÿ‡ฑ flag: Mali
+๐Ÿ‡ฒ๐Ÿ‡ฒ flag: Myanmar (Burma)
+๐Ÿ‡ฒ๐Ÿ‡ณ flag: Mongolia
+๐Ÿ‡ฒ๐Ÿ‡ด flag: Macao SAR China
+๐Ÿ‡ฒ๐Ÿ‡ต flag: Northern Mariana Islands
+๐Ÿ‡ฒ๐Ÿ‡ถ flag: Martinique
+๐Ÿ‡ฒ๐Ÿ‡ท flag: Mauritania
+๐Ÿ‡ฒ๐Ÿ‡ธ flag: Montserrat
+๐Ÿ‡ฒ๐Ÿ‡น flag: Malta
+๐Ÿ‡ฒ๐Ÿ‡บ flag: Mauritius
+๐Ÿ‡ฒ๐Ÿ‡ป flag: Maldives
+๐Ÿ‡ฒ๐Ÿ‡ผ flag: Malawi
+๐Ÿ‡ฒ๐Ÿ‡ฝ flag: Mexico
+๐Ÿ‡ฒ๐Ÿ‡พ flag: Malaysia
+๐Ÿ‡ฒ๐Ÿ‡ฟ flag: Mozambique
+๐Ÿ‡ณ๐Ÿ‡ฆ flag: Namibia
+๐Ÿ‡ณ๐Ÿ‡จ flag: New Caledonia
+๐Ÿ‡ณ๐Ÿ‡ช flag: Niger
+๐Ÿ‡ณ๐Ÿ‡ซ flag: Norfolk Island
+๐Ÿ‡ณ๐Ÿ‡ฌ flag: Nigeria
+๐Ÿ‡ณ๐Ÿ‡ฎ flag: Nicaragua
+๐Ÿ‡ณ๐Ÿ‡ฑ flag: Netherlands
+๐Ÿ‡ณ๐Ÿ‡ด flag: Norway
+๐Ÿ‡ณ๐Ÿ‡ต flag: Nepal
+๐Ÿ‡ณ๐Ÿ‡ท flag: Nauru
+๐Ÿ‡ณ๐Ÿ‡บ flag: Niue
+๐Ÿ‡ณ๐Ÿ‡ฟ flag: New Zealand
+๐Ÿ‡ด๐Ÿ‡ฒ flag: Oman
+๐Ÿ‡ต๐Ÿ‡ฆ flag: Panama
+๐Ÿ‡ต๐Ÿ‡ช flag: Peru
+๐Ÿ‡ต๐Ÿ‡ซ flag: French Polynesia
+๐Ÿ‡ต๐Ÿ‡ฌ flag: Papua New Guinea
+๐Ÿ‡ต๐Ÿ‡ญ flag: Philippines
+๐Ÿ‡ต๐Ÿ‡ฐ flag: Pakistan
+๐Ÿ‡ต๐Ÿ‡ฑ flag: Poland
+๐Ÿ‡ต๐Ÿ‡ฒ flag: St. Pierre & Miquelon
+๐Ÿ‡ต๐Ÿ‡ณ flag: Pitcairn Islands
+๐Ÿ‡ต๐Ÿ‡ท flag: Puerto Rico
+๐Ÿ‡ต๐Ÿ‡ธ flag: Palestinian Territories
+๐Ÿ‡ต๐Ÿ‡น flag: Portugal
+๐Ÿ‡ต๐Ÿ‡ผ flag: Palau
+๐Ÿ‡ต๐Ÿ‡พ flag: Paraguay
+๐Ÿ‡ถ๐Ÿ‡ฆ flag: Qatar
+๐Ÿ‡ท๐Ÿ‡ช flag: Rรฉunion
+๐Ÿ‡ท๐Ÿ‡ด flag: Romania
+๐Ÿ‡ท๐Ÿ‡ธ flag: Serbia
+๐Ÿ‡ท๐Ÿ‡บ flag: Russia
+๐Ÿ‡ท๐Ÿ‡ผ flag: Rwanda
+๐Ÿ‡ธ๐Ÿ‡ฆ flag: Saudi Arabia
+๐Ÿ‡ธ๐Ÿ‡ง flag: Solomon Islands
+๐Ÿ‡ธ๐Ÿ‡จ flag: Seychelles
+๐Ÿ‡ธ๐Ÿ‡ฉ flag: Sudan
+๐Ÿ‡ธ๐Ÿ‡ช flag: Sweden
+๐Ÿ‡ธ๐Ÿ‡ฌ flag: Singapore
+๐Ÿ‡ธ๐Ÿ‡ญ flag: St. Helena
+๐Ÿ‡ธ๐Ÿ‡ฎ flag: Slovenia
+๐Ÿ‡ธ๐Ÿ‡ฏ flag: Svalbard & Jan Mayen
+๐Ÿ‡ธ๐Ÿ‡ฐ flag: Slovakia
+๐Ÿ‡ธ๐Ÿ‡ฑ flag: Sierra Leone
+๐Ÿ‡ธ๐Ÿ‡ฒ flag: San Marino
+๐Ÿ‡ธ๐Ÿ‡ณ flag: Senegal
+๐Ÿ‡ธ๐Ÿ‡ด flag: Somalia
+๐Ÿ‡ธ๐Ÿ‡ท flag: Suriname
+๐Ÿ‡ธ๐Ÿ‡ธ flag: South Sudan
+๐Ÿ‡ธ๐Ÿ‡น flag: Sรฃo Tomรฉ & Prรญncipe
+๐Ÿ‡ธ๐Ÿ‡ป flag: El Salvador
+๐Ÿ‡ธ๐Ÿ‡ฝ flag: Sint Maarten
+๐Ÿ‡ธ๐Ÿ‡พ flag: Syria
+๐Ÿ‡ธ๐Ÿ‡ฟ flag: Eswatini
+๐Ÿ‡น๐Ÿ‡ฆ flag: Tristan da Cunha
+๐Ÿ‡น๐Ÿ‡จ flag: Turks & Caicos Islands
+๐Ÿ‡น๐Ÿ‡ฉ flag: Chad
+๐Ÿ‡น๐Ÿ‡ซ flag: French Southern Territories
+๐Ÿ‡น๐Ÿ‡ฌ flag: Togo
+๐Ÿ‡น๐Ÿ‡ญ flag: Thailand
+๐Ÿ‡น๐Ÿ‡ฏ flag: Tajikistan
+๐Ÿ‡น๐Ÿ‡ฐ flag: Tokelau
+๐Ÿ‡น๐Ÿ‡ฑ flag: Timor-Leste
+๐Ÿ‡น๐Ÿ‡ฒ flag: Turkmenistan
+๐Ÿ‡น๐Ÿ‡ณ flag: Tunisia
+๐Ÿ‡น๐Ÿ‡ด flag: Tonga
+๐Ÿ‡น๐Ÿ‡ท flag: Turkey
+๐Ÿ‡น๐Ÿ‡น flag: Trinidad & Tobago
+๐Ÿ‡น๐Ÿ‡ป flag: Tuvalu
+๐Ÿ‡น๐Ÿ‡ผ flag: Taiwan
+๐Ÿ‡น๐Ÿ‡ฟ flag: Tanzania
+๐Ÿ‡บ๐Ÿ‡ฆ flag: Ukraine
+๐Ÿ‡บ๐Ÿ‡ฌ flag: Uganda
+๐Ÿ‡บ๐Ÿ‡ฒ flag: U.S. Outlying Islands
+๐Ÿ‡บ๐Ÿ‡ณ flag: United Nations
+๐Ÿ‡บ๐Ÿ‡ธ flag: United States
+๐Ÿ‡บ๐Ÿ‡พ flag: Uruguay
+๐Ÿ‡บ๐Ÿ‡ฟ flag: Uzbekistan
+๐Ÿ‡ป๐Ÿ‡ฆ flag: Vatican City
+๐Ÿ‡ป๐Ÿ‡จ flag: St. Vincent & Grenadines
+๐Ÿ‡ป๐Ÿ‡ช flag: Venezuela
+๐Ÿ‡ป๐Ÿ‡ฌ flag: British Virgin Islands
+๐Ÿ‡ป๐Ÿ‡ฎ flag: U.S. Virgin Islands
+๐Ÿ‡ป๐Ÿ‡ณ flag: Vietnam
+๐Ÿ‡ป๐Ÿ‡บ flag: Vanuatu
+๐Ÿ‡ผ๐Ÿ‡ซ flag: Wallis & Futuna
+๐Ÿ‡ผ๐Ÿ‡ธ flag: Samoa
+๐Ÿ‡ฝ๐Ÿ‡ฐ flag: Kosovo
+๐Ÿ‡พ๐Ÿ‡ช flag: Yemen
+๐Ÿ‡พ๐Ÿ‡น flag: Mayotte
+๐Ÿ‡ฟ๐Ÿ‡ฆ flag: South Africa
+๐Ÿ‡ฟ๐Ÿ‡ฒ flag: Zambia
+๐Ÿ‡ฟ๐Ÿ‡ผ flag: Zimbabwe
+๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ flag: England
+๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ flag: Scotland
+๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ flag: Wales
diff --git a/.local/share/larbs/getkeys/ranger b/.local/share/larbs/getkeys/ranger
deleted file mode 100644
index bcf784b..0000000
--- a/.local/share/larbs/getkeys/ranger
+++ /dev/null
@@ -1,35 +0,0 @@
- _ __ __ _ _ __ __ _ ___ _ __
-| '__/ _` | '_ \ / _` |/ _ \ '__|
-| | | (_| | | | | (_| | __/ |
-|_| \__,_|_| |_|\__, |\___|_|
- |___/
-
-ranger is the file manager.
- j/k - Down/up
- h - Left/higher in directory structure
- l - Right/open/lower in directory structure
- gg - Go to top
- G - Go to bottom
- cw - Rename file
- I - Rename file, with cursor at beginning
- A - Rename file, with cursor at end
- aa - Rename file, with cursor right before extension
- mkd - Make directory
- bg - Change background/wallpaper to selected file
- X - Extract archive
- Z - Compress into tar.gz
- Space - Highlight/select file
- va - Highlight/(de)select all
- vs - Toggle visual selection mode
- uv - Deselect all
- dd - Cut file(s)
- yy - Yank/copy file(s)
- pp - Paste cut/copied file(s)
- po - Paste cut/copied file(s), overwriting originals
- cW - Rename all selected files in text editor
- D - Delete file(s) (press enter to confirm)
- dD - Delete file(s) (press enter to confirm)
- ctrl-f - Fuzzy find (fzf)
- ctrl-l - Search via mlocate
- q - Quit
- Q - Immediate quit
diff --git a/README.md b/README.md
index 0ea1a8c..1594423 100644
--- a/README.md
+++ b/README.md
@@ -43,3 +43,7 @@ curl -LO larbs.xyz/larbs.sh
or clone the repo files directly to your home directory and install the
[dependencies](https://github.com/LukeSmithxyz/LARBS/blob/master/progs.csv).
+
+## Default Desktop Artwork
+
+Thomas Thiemeyer's *The Road to Samarkand* ([fb](https://www.facebook.com/t.thiemeyer/), [insta](https://www.instagram.com/tthiemeyer/), [shop](https://www.redbubble.com/de/people/TThiemeyer/shop))