diff options
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/\\&/&/g;s/\\[paused\\].*/โธ/g;/\\[playing\\].*/d" | paste -sd ' ' -;} +filter() { mpc | sed "/^volume:/d;s/\\&/&/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 @@ -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)) |
