aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2020-12-24 00:06:27 +0530
committerAkshay Nair <phenax5@gmail.com>2020-12-24 00:06:27 +0530
commit865728068c965e066d0f8971c5b5ba26e12e7dce (patch)
treec16195f0a04cf7d004fe5b396255734f4d60bb00 /scripts
parent649ef5f225039e498358c3d056dfd7fcbc56f014 (diff)
downloadnixos-config-865728068c965e066d0f8971c5b5ba26e12e7dce.tar.gz
nixos-config-865728068c965e066d0f8971c5b5ba26e12e7dce.zip
Adds scripts and links scripts and wallpapers
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/artemis.sh52
-rwxr-xr-xscripts/battery-watch.sh49
-rwxr-xr-xscripts/bin/color-pick17
-rwxr-xr-xscripts/bin/dsudo4
-rwxr-xr-xscripts/bin/ecmd28
-rwxr-xr-xscripts/bin/escript16
-rwxr-xr-xscripts/bin/extract-urls8
-rwxr-xr-xscripts/bin/file-manager3
l---------scripts/bin/help1
-rwxr-xr-xscripts/bin/macho26
-rwxr-xr-xscripts/bin/open70
-rwxr-xr-xscripts/bin/search12
-rwxr-xr-xscripts/bin/swallow7
-rwxr-xr-xscripts/bin/tmpmail293
-rwxr-xr-xscripts/bin/torque66
-rwxr-xr-xscripts/bin/tst3
-rwxr-xr-xscripts/bin/upload-file19
-rwxr-xr-xscripts/bin/vimv38
-rwxr-xr-xscripts/bin/vman3
-rwxr-xr-xscripts/bin/web4
-rwxr-xr-xscripts/bin/with_zsh4
-rwxr-xr-xscripts/brightness.sh22
-rwxr-xr-xscripts/change-tagname.sh6
-rwxr-xr-xscripts/commands/:break14
-rwxr-xr-xscripts/commands/:brightness3
-rwxr-xr-xscripts/commands/:cal3
-rwxr-xr-xscripts/commands/:calc3
-rwxr-xr-xscripts/commands/:camera-off3
-rwxr-xr-xscripts/commands/:camera-on3
-rwxr-xr-xscripts/commands/:cheat5
-rwxr-xr-xscripts/commands/:codi9
-rwxr-xr-xscripts/commands/:color-pick4
-rwxr-xr-xscripts/commands/:day8
-rwxr-xr-xscripts/commands/:email4
-rwxr-xr-xscripts/commands/:files3
-rwxr-xr-xscripts/commands/:gamma11
-rwxr-xr-xscripts/commands/:install2
-rwxr-xr-xscripts/commands/:mic3
-rwxr-xr-xscripts/commands/:music3
-rwxr-xr-xscripts/commands/:night4
-rwxr-xr-xscripts/commands/:notes3
-rwxr-xr-xscripts/commands/:play-next17
-rwxr-xr-xscripts/commands/:power3
-rwxr-xr-xscripts/commands/:scratchpad4
l---------scripts/commands/:standup1
-rwxr-xr-xscripts/commands/:system-monitor3
-rwxr-xr-xscripts/commands/:tasks4
-rwxr-xr-xscripts/commands/:time3
-rwxr-xr-xscripts/commands/:today4
-rwxr-xr-xscripts/commands/:tord6
-rwxr-xr-xscripts/commands/:torrent4
-rwxr-xr-xscripts/commands/:type4
-rwxr-xr-xscripts/commands/:weather3
-rwxr-xr-xscripts/commands/:wiki3
-rwxr-xr-xscripts/commands/:work-start7
-rwxr-xr-xscripts/commands/:work-stop7
-rwxr-xr-xscripts/dotfiles.sh93
-rw-r--r--scripts/fontawesome-menu/.gitignore1
-rwxr-xr-xscripts/fontawesome-menu/fa-menu.sh23
-rw-r--r--scripts/fontawesome-menu/icons/brands438
-rw-r--r--scripts/fontawesome-menu/icons/icons-list3127
-rw-r--r--scripts/fontawesome-menu/icons/regular151
-rw-r--r--scripts/fontawesome-menu/icons/solid964
-rw-r--r--scripts/fontawesome-menu/package-lock.json317
-rw-r--r--scripts/fontawesome-menu/package.json21
-rw-r--r--scripts/fontawesome-menu/populate-fontsheet.js54
-rwxr-xr-xscripts/image.sh45
-rwxr-xr-xscripts/menuitems.sh85
-rw-r--r--scripts/modules/rofi-menu.sh6
-rw-r--r--scripts/modules/utils.sh10
-rwxr-xr-xscripts/monitor.sh26
-rwxr-xr-xscripts/mounter.sh10
-rwxr-xr-xscripts/mouse.sh25
-rwxr-xr-xscripts/music/player.sh56
-rwxr-xr-xscripts/music/split-album.sh72
-rwxr-xr-xscripts/music/tag-bulk.sh26
-rwxr-xr-xscripts/music/tag.sh59
-rwxr-xr-xscripts/notify.sh8
-rwxr-xr-xscripts/open-project.sh28
-rwxr-xr-xscripts/pass-migrate.sh19
-rwxr-xr-xscripts/password_prompt.sh4
-rwxr-xr-xscripts/powercontrol.sh45
-rwxr-xr-xscripts/qutebrowser/session-box.sh19
-rwxr-xr-xscripts/recording/camscreen.sh10
-rwxr-xr-xscripts/recording/screenrecord.sh7
-rwxr-xr-xscripts/recording/webcam.sh8
-rwxr-xr-xscripts/scheduler.sh64
-rwxr-xr-xscripts/screenshot.sh24
-rwxr-xr-xscripts/sessions/project.sh11
-rwxr-xr-xscripts/shotkey.sh26
-rwxr-xr-xscripts/sound.sh29
-rwxr-xr-xscripts/torrent.sh32
-rwxr-xr-xscripts/write-bootentry.sh28
93 files changed, 6883 insertions, 0 deletions
diff --git a/scripts/artemis.sh b/scripts/artemis.sh
new file mode 100755
index 0000000..8546a89
--- /dev/null
+++ b/scripts/artemis.sh
@@ -0,0 +1,52 @@
+#!/usr/bin/env bash
+
+host="192.168.0.10"
+port=6543
+
+run() { ssh "$host" -p $port -tt "$@"; }
+run_x() { ssh -X "$host" -p $port; }
+
+run_git() {
+ local cmd="$1"; shift 1;
+ case "$cmd" in
+ ls) run ls -1 /fagit ;;
+ esac;
+}
+
+run_cloud() {
+ local cmd="$1"; shift 1;
+ case "$cmd" in
+ ls) run ls -la "~/storage/public/$1" ;;
+ esac;
+}
+
+run_media() {
+ local cmd="$1"; shift 1;
+ case "$cmd" in
+ play) run mpc play ;;
+ pause) run mpc pause ;;
+ play-pause) run mpc toggle ;;
+ esac;
+}
+
+run_webui() {
+ local cmd="$1"; shift 1;
+ case "$cmd" in
+ pihole) ~/.bin/open "http://$host:9292/admin" ;;
+ sync) ~/.bin/open "http://$host:9191" ;;
+ esac;
+}
+
+cmd="$1"; shift 1;
+case "$cmd" in
+ shell) run bash ;;
+ web) run_webui "$@" ;;
+ top) run ytop ;;
+ update) run yay -Syyu ;;
+ git) run_git "$@" ;;
+ media) run_media "$@" ;;
+ cloud) run_cloud "$@" ;;
+ run) run "$@" ;;
+ x) run_x ;;
+esac
+
diff --git a/scripts/battery-watch.sh b/scripts/battery-watch.sh
new file mode 100755
index 0000000..dfff1cd
--- /dev/null
+++ b/scripts/battery-watch.sh
@@ -0,0 +1,49 @@
+#!/usr/bin/env bash
+
+PID_PATH="$HOME/.cache/my-battery-watcher.pid";
+[[ ! -f "$PID_PATH" ]] && touch $PID_PATH;
+
+battery_component() { cat "/sys/class/power_supply/BAT0/$1"; }
+
+get_level() { battery_component capacity; }
+get_state() { battery_component status; }
+
+LOW_BATTERY="30";
+CRITICAL_BATTERY="10";
+
+DELAY=1;
+LOW_DELAY=240;
+CRITICAL_DELAY=60;
+
+oldpid=$(cat $PID_PATH);
+cmd=${1:-"start"};
+
+if [[ ! -z "$oldpid" ]] || [[ "$cmd" == "stop" ]]; then
+ kill $oldpid;
+fi;
+
+# :: Min -> Max -> Number -> Bool
+between() { test "$3" -gt "$1" && test "$3" -le "$2"; }
+
+if [[ "$cmd" == "start" ]]; then
+ while true; do
+ battery_level=$(get_level);
+ state=$(get_state);
+
+ if [[ "$state" == "Discharging" ]]; then
+ if (between $CRITICAL_BATTERY $LOW_BATTERY $battery_level); then
+ notify-send "Please charge this shit. Battery is at $battery_level%" -u normal;
+ sleep $LOW_DELAY;
+ fi
+
+ if (between 0 $CRITICAL_BATTERY $battery_level); then
+ notify-send "HOLY SHIT DUDE. I'M DYING. Battery is at $battery_level%" -u critical;
+ sleep $CRITICAL_DELAY;
+ fi
+ fi
+
+ sleep $DELAY;
+ done &
+
+ echo $! > $PID_PATH;
+fi;
diff --git a/scripts/bin/color-pick b/scripts/bin/color-pick
new file mode 100755
index 0000000..249a20c
--- /dev/null
+++ b/scripts/bin/color-pick
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+notify_content() {
+ echo "Copied $1 to clipboard";
+ sleep 1;
+}
+
+show_color() {
+ notify_content "$1" | popcorn --bg "$1" --fg "#ffffff";
+}
+
+color=$(grabc);
+
+echo "$color" | xclip -selection clipboard -i;
+
+show_color "$color" & disown;
+
diff --git a/scripts/bin/dsudo b/scripts/bin/dsudo
new file mode 100755
index 0000000..f4d19dc
--- /dev/null
+++ b/scripts/bin/dsudo
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+SUDO_ASKPASS="$HOME/scripts/password_prompt.sh" sudo -A "$@";
+
diff --git a/scripts/bin/ecmd b/scripts/bin/ecmd
new file mode 100755
index 0000000..bc04a6d
--- /dev/null
+++ b/scripts/bin/ecmd
@@ -0,0 +1,28 @@
+#!/usr/bin/env zsh
+
+source ~/.config/zshconf/paths.zsh;
+
+cd $COMMANDS_DIR;
+
+selected=`fzf +i --print-query -e`;
+[[ -z "$selected" ]] && exit 0;
+
+query=`echo -e "$selected" | head -n 1`;
+selected=`echo -e "$selected" | tail -n 1`;
+
+if [[ "$1" == "rm" ]]; then
+ [[ ! -f $selected ]] && echo "Cant remove $selected. File not found" && exit 1;
+ # TODO: Add confirmation here maybe
+ rm $selected;
+ echo "Removed $selected";
+ exit 0;
+fi;
+
+if (echo "$query" | grep -e '^:') && [[ ! -f "$query" ]]; then
+ escript "$COMMANDS_DIR/$query";
+ echo "Added new command $query";
+else
+ escript "$COMMANDS_DIR/$selected" || echo "$selected command not found";
+ echo "Edited command $query";
+fi;
+
diff --git a/scripts/bin/escript b/scripts/bin/escript
new file mode 100755
index 0000000..a0373dd
--- /dev/null
+++ b/scripts/bin/escript
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+dir="";
+[[ -z "$1" ]] && return 1;
+if [[ ! -f "$1" ]]; then
+ dir=$(dirname "$1");
+ [[ ! -d "$dir" ]] && mkdir -p "$dir";
+
+ touch "$1";
+ echo -e "#!/usr/bin/env bash\n" > "$1";
+fi;
+
+chmod u+x "$1";
+
+sensible-editor "$1";
+
diff --git a/scripts/bin/extract-urls b/scripts/bin/extract-urls
new file mode 100755
index 0000000..b925e86
--- /dev/null
+++ b/scripts/bin/extract-urls
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+REGEX="(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}(/[^ ]*)?"
+
+while read line; do echo "$line"; done | \
+ egrep -o "$REGEX" | \
+ awk '!seen[$0]++';
+
diff --git a/scripts/bin/file-manager b/scripts/bin/file-manager
new file mode 100755
index 0000000..467d346
--- /dev/null
+++ b/scripts/bin/file-manager
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+sensible-terminal -d "$1" -e lf
diff --git a/scripts/bin/help b/scripts/bin/help
new file mode 120000
index 0000000..1fb83de
--- /dev/null
+++ b/scripts/bin/help
@@ -0,0 +1 @@
+vman \ No newline at end of file
diff --git a/scripts/bin/macho b/scripts/bin/macho
new file mode 100755
index 0000000..93b8f8f
--- /dev/null
+++ b/scripts/bin/macho
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+export FZF_DEFAULT_OPTS='
+--height=30%
+--layout=reverse
+--prompt="Manual: "
+--preview="echo {1} | sed -E \"s/^\((.+)\)/\1/\" | xargs -I{S} man -Pcat {S} {2} 2>/dev/null"';
+
+while getopts ":s:" opt; do
+ case $opt in
+ s ) SECTION=$OPTARG; shift; shift;;
+ \?) echo "Invalid option: -$OPTARG" >&2; exit 1;;
+ : ) echo "Option -$OPTARG requires an argument" >&2; exit 1;;
+ esac;
+done;
+
+manual=$(apropos -s ${SECTION:-''} ${@:-.} | \
+ grep -v -E '^.+ \(0\)' |\
+ awk '{print $2 " " $1}' | \
+ sort | \
+ fzf | \
+ sed -E 's/^\((.+)\)/\1/');
+
+[ -z "$manual" ] && exit 0;
+man $manual;
+
diff --git a/scripts/bin/open b/scripts/bin/open
new file mode 100755
index 0000000..9daa34a
--- /dev/null
+++ b/scripts/bin/open
@@ -0,0 +1,70 @@
+#!/usr/bin/env bash
+
+srun() { setsid -f "$@"; }
+run() { srun "$@" > /dev/null 2> /dev/null; }
+run_async() { run "$@" & disown; }
+
+open_by_mimetype() {
+ local file="$1";
+ local mime=`file "$file" --mime-type -bL`;
+
+ local is_opened=1;
+
+ echo "Opening $file ($mime)...";
+
+ case "$mime" in
+ inode/directory) lf "$file" ;;
+
+ application/x-bittorrent) ~/scripts/torrent.sh torrent "$file" ;;
+
+ text/*) sensible-editor "$file" ;;
+ application/javascript) sensible-editor "$file" ;;
+ application/json) sensible-editor "$file" ;;
+ application/xml) sensible-editor "$file" ;;
+ application/x-*) sensible-editor "$file" ;;
+ *pdf) run_async zathura "$file" ;;
+
+ video/*|image/gif) run_async mpv "$file" ;;
+ image/*) run_async sxiv "$file" ;;
+ audio/*)
+ mpc insert "file://$(readlink -e "$file")" && mpc play && \
+ echo "Adding song to queue";
+ ;;
+
+ *) is_opened=0 ;;
+ esac;
+
+ [[ "$is_opened" == 1 ]] && exit 0;
+}
+
+open_by_path() {
+ local file="$1";
+
+ # Magnet torrent url
+ if [[ "$file" =~ ^magnet: ]]; then
+ echo "opening magnet link...";
+ ~/scripts/torrent.sh magnet "$file";
+ exit 0;
+ fi;
+
+ # Https? and file urls
+ if [[ "$file" =~ ^https?:// ]] || [[ "$file" =~ ^file?:// ]]; then
+ echo "opening url $file...";
+ run_async sensible-browser "$file";
+ exit 0;
+ fi;
+}
+
+
+filepath="$1";
+[[ -z "$filepath" ]] && exit 1;
+
+open() {
+ open_by_path "$filepath";
+ open_by_mimetype "$filepath";
+
+ # If it doesn't exit out, it couldn't open the file
+ echo "Couldn't open file. Add rule to opener."; exit 1;
+}
+open;
+
diff --git a/scripts/bin/search b/scripts/bin/search
new file mode 100755
index 0000000..b443ad8
--- /dev/null
+++ b/scripts/bin/search
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+
+AG_PREFIX="ag --noheading --color --smart-case "
+
+export FZF_DEFAULT_COMMAND="$AG_PREFIX '.'";
+
+# TODO: Add preview
+filename=$(fzf --bind "change:reload:$AG_PREFIX {q} || true" --ansi --phony | cut -d':' -f1);
+
+[[ ! -z "$filename" ]] && [[ -f "$filename" ]] && \
+ open "$filename";
+
diff --git a/scripts/bin/swallow b/scripts/bin/swallow
new file mode 100755
index 0000000..0d10523
--- /dev/null
+++ b/scripts/bin/swallow
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+wid=$(xdo id);
+
+xdo hide && "$@";
+
+xdo show "$wid";
diff --git a/scripts/bin/tmpmail b/scripts/bin/tmpmail
new file mode 100755
index 0000000..27b474a
--- /dev/null
+++ b/scripts/bin/tmpmail
@@ -0,0 +1,293 @@
+#!/usr/bin/env bash
+#
+# by Siddharth Dushantha 2020
+#
+# Dependencies: jq, curl, w3m
+#
+
+export LC_CTYPE=C
+export LANG=C
+
+VERSION=1.0.0
+
+# By default 'tmpmail' uses 'w3m' as it's web browser to render
+# the HTML of the email
+BROWSER="w3m"
+
+# If the value is set to 'true' tmpmail will convert the HTML email
+# to raw text and send that to stdout
+RAW_TEXT=false
+
+# Everything related to 'tmpmail' will be stored in /tmp/tmpmail
+# so that the old emails and email addresses get cleared after
+# restarting the computer
+TMPMAIL_DIR="/tmp/tmpmail/"
+
+# TMPMAIL_EMAIL_ADDRESS is where we store the temporary email address
+# that gets generated. This prevents the user from providing
+# the email address everytime they run tmpmail
+TMPMAIL_EMAIL_ADDRESS="$TMPMAIL_DIR/email_address"
+TMPMAIL_HTML_EMAIL="$TMPMAIL_DIR/tmpmail.html"
+
+
+usage(){
+ # Using 'cat << EOF' we can easily output a multiline text. This is much
+ # better than using 'echo' for each line or using '\n' to create a new line.
+ cat << EOF
+usage: tmpmail [-h] [--generate] [--browser BROWSER] [--recent] ID
+
+optional arguments:
+-h, --help Show this help message
+ --version Print version
+-g, --generate Generate a new email address
+-r, --recent View the most recent email
+-t, --text View the email as raw text, where all the HTML tags are removed
+-b, --browser Change the browser that is used to render the HTML of the email (default: w3m)
+EOF
+}
+
+
+generate_email_address(){
+ # There are 2 ways which this function is called in this script.
+ # [1] The user wants to generate a new email and runs 'tmpmail --generate'
+ # [2] The user runs 'tmpmail' to check the inbox , but /tmp/tmpmail/email_address
+ # is empty or nonexistant. Therefore a new email gets automatically
+ # generated before showing the inbox. But of course the inbox will
+ # be empty as the newly generated email address has not been
+ # sent any emails.
+ #
+ # When the function 'generate_email()' is called with the arguement
+ # 'true', it means that the function was called because the user
+ # ran 'tmpmail --generate'.
+ #
+ # We need this variable so we can know whether or not we need to show the user
+ # what the email was. <-- More about this can be found further down in this function.
+ EXTERNALLY=${1:-false}
+
+ # Generate a random email address.
+ # This function is called whenever the user wants to generate a new email
+ # address by running 'tmpmail --generate' or when the user runs 'tmpmail'
+ # but /tmp/tmpmail/email_address is empty or nonexistent.
+ #
+ # We create a random username by taking the first 10 lines from /dev/random
+ # and delete all the characters which are *not* lower case letters from A to Z.
+ # So charcters such as dashes, periods, underscore, and numbers are all deleted,
+ # giving us a text which only contains lower case letters form A to Z. We then take
+ # the first 10 characters, which will be the username of the email address
+ USERNAME=$(head /dev/urandom | tr -dc a-z | cut -c1-11)
+
+ # This is an array of the valid TLDS which 1secmail provides.
+ TLDS=(com net org)
+
+ # Randomly pick one of the TLDS mentiond above.
+ # This is done by first echoing all the TLDS into 'tr' which then
+ # replaces the white spaces with a new line. This is done because we use
+ # 'sort' to put the TLDS in a random order, but 'sort' requires the TLDS to
+ # be on seperate lines. After the randomizing is done we take the first line
+ # which is one of the TLDS
+ TLD=$(echo "${TLDS[@]}" | tr " " "\n" | sort -R | head -n 1)
+
+ # Save the generated email address to the $TMPMAIL_EMAIL_ADDRESS file
+ # so that it can be whenever 'tmpmail' is run
+ echo "$USERNAME@1secmail.$TLD" > "$TMPMAIL_EMAIL_ADDRESS"
+
+ # If this function was called because the user wanted to generate a new
+ # email address, show them the email address
+ [ "$EXTERNALLY" = true ] && cat "$TMPMAIL_EMAIL_ADDRESS"
+}
+
+
+get_email_address(){
+ # This function is only called once and that is when this script
+ # get executed. The output of this function gets stored in $EMAIL_ADDRESS
+ #
+ # If the file that contains the email address is empty,
+ # that means we do not have an email address, so generate one.
+ [ ! -s "$TMPMAIL_EMAIL_ADDRESS" ] && generate_email_address
+
+ # Output the email address by getting the first line of $TMPMAIL_EMAIL
+ head -n 1 "$TMPMAIL_EMAIL_ADDRESS"
+}
+
+
+list_emails(){
+ # List all the received emails in a nicely formatted order
+ #
+ # Fetch the email data using 1secmail's API
+ DATA=$(curl -sL "http://1secmail.$TLD/api/v1/?action=getMessages&login=$USERNAME&domain=1secmail.$TLD")
+
+ # Using 'jq' we get the length of the JSON data. From this we can determine whether or not
+ # the email address has gotten any emails
+ DATA_LENGTH=$(jq length <<< "$DATA")
+
+ # We are showing what email address is currently being used
+ # in case the user has forgotten what the email address was.
+ echo -e "[ Inbox for $EMAIL_ADDRESS ]\n"
+
+ # If the length of the data we got is 0, that means the email address
+ # has not received any emails yet.
+ [ "$DATA_LENGTH" -eq 0 ] && echo "No new mail" && exit
+
+ # This is where we store all of our emails, which is then
+ # displayed using 'column'
+ INBOX=""
+
+ # This for loop goes through each mail that have been received.
+ #
+ # Since we need to go through all the data, we need to tell our for loop
+ # to loop from 1 to X, where X is legnth of the $DATA which contains all
+ # the emails.
+ #
+ # Normally to loop from 1 to 5, we would use shell expansion and write:
+ # for index in {1..5}; do
+ # do_something
+ # done
+ #
+ # But we a minor issue. We dont know what the final number is, and we are not allowed
+ # use to variables in shell expansions like this:
+ # {1..$X}
+ #
+ # where $X is the length of the $DATA.
+ #
+ # To fix this issue, we can use 'seq' which will allow us to create a sequence
+ # from X to Y.
+ # Example:
+ # $ seq 1 5
+ # 1
+ # 2
+ # 3
+ # 4
+ # 5
+ #
+ # We can then put those results into the foor loop
+ for index in $(seq 1 "$DATA_LENGTH"); do
+ # Since arrays in JSON data start at 0, we must subtract
+ # the value of $index by 1 so that we dont miss one of the
+ # emails in the array
+ MAIL_DATA=$(jq -r ".[$index-1]" <<< "$DATA")
+
+ ID=$(jq -r ".id" <<< "$MAIL_DATA")
+ FROM=$(jq -r ".from" <<< "$MAIL_DATA")
+ SUBJECT=$(jq -r ".subject" <<< "$MAIL_DATA")
+
+ # The '||' are used as a divideder for 'column'. 'column' will use this divider as
+ # a point of reference to create the division. By default 'column' uses a blank space
+ # but that would not work in our case as the email subject could have multiple white spaces
+ # and 'column' would split the words that are seperated by white space, in different columns.
+ #
+ # Yes, there a double quote all by it self on the line under this one.
+ # This serves as a new line. So that the 'column' command works properly.
+ # I know I could have used '\n' but 'column' does not intepret it as a new line.
+ INBOX+="$ID ||$FROM ||$SUBJECT
+"
+ done
+
+ # Show the emails cleanly
+ column -t -s "||" <<< "$INBOX"
+}
+
+
+view_email(){
+ # View an email by providing it's ID
+ #
+ # The first argument provided to this function will be the ID of the email
+ # that has been received
+ EMAIL_ID="$1"
+ DATA=$(curl -sL "http://www.1secmail.$TLD/api/v1/?action=readMessage&login=$USERNAME&domain=1secmail.$TLD&id=$EMAIL_ID")
+
+ # After the data is retrieved using the API, we have to check if we got any emails.
+ # Luckly 1secmail's API is not complicated and returns 'Message not found' as plain text
+ # if our email address as not received any emails.
+ # If we the error message from the API just quit because there is nothing to do
+ [[ "$DATA" == "Message not found" ]] && echo "Message not found" && exit 1
+
+ # We pass the $DATA to 'jq' which extracts the values
+ FROM=$(jq -r ".from" <<< "$DATA")
+ SUBJECT=$(jq -r ".subject" <<< "$DATA")
+ HTML_BODY=$(jq -r ".htmlBody" <<< "$DATA")
+
+ # Create the HTML with all the information that is relevant and then
+ # assigning that HTML to the variable HTML_MAIL. This is the best method
+ # to create a multiline variable
+ read -r -d '' HTML_MAIL << EOF
+<pre><b>To: </b>$EMAIL_ADDRESS
+<b>From: </b>$FROM
+<b>Subject: </b>$SUBJECT</pre>
+$HTML_BODY
+EOF
+ # Save the $HTML_MAIL into $TMPMAIL_HTML_EMAIL
+ echo "$HTML_MAIL" > "$TMPMAIL_HTML_EMAIL"
+
+ # If the '--text' flag is used, then use 'w3m' to convert the HTML of
+ # the email to pure text by removing all the HTML tags
+ [ "$RAW_TEXT" = true ] && w3m -dump "$TMPMAIL_HTML_EMAIL" && exit
+
+ # Open up the HTML file using $BROWSER. By default,
+ # this will be 'w3m'.
+ $BROWSER "$TMPMAIL_HTML_EMAIL"
+
+}
+
+
+view_recent_email(){
+ # View the most recent email.
+ #
+ # This is done by listing all the received email like you
+ # normally see on the terminal when running 'tmpmail'.
+ # We then use 'awk' to grab the ID of the most recent
+ # email, which the first line.
+ MAIL_ID=$(list_emails | awk 'NR==3{print $1}')
+ view_email "$MAIL_ID"
+}
+
+
+main(){
+ # Iterate of the array of dependencies and check if the user has them installed
+ dependencies=(jq w3m curl)
+ for dependency in "${dependencies[@]}"; do
+ type -p "$dependency" &>/dev/null || {
+ echo "error: Could not find '${dependency}', is it installed?" >&2
+ exit 1
+ }
+ done
+
+ # Create the $TMPMAIL_DIR directory and dont throw any errors
+ # if it already exists
+ mkdir -p "$TMPMAIL_DIR"
+
+ # Get the email address and save the value to the EMAIL_ADDRESS variable
+ EMAIL_ADDRESS="$(get_email_address)"
+
+ # ${VAR#PATTERN} Removes shortest match of pattern from start of a string.
+ # In this case, it takes the EMAIL_ADDRESS and removed everything after
+ # the '@' symbol which gives us the username.
+ USERNAME=${EMAIL_ADDRESS%@*}
+
+ # ${VAR%PATTERN} Remove shortest match of pattern from end of a string.
+ # In this case, it takes the EMAIL_ADDRESS and removes everything until the
+ # period '.' which gives us the TLD
+ TLD=${EMAIL_ADDRESS#*.}
+
+ # If no arguments are provided just the emails
+ [[ $# -eq 0 ]] && list_emails && exit
+
+ while [[ "$1" ]]; do
+ case "$1" in
+ --help|-h) usage && exit ;;
+ --generate|-g) generate_email_address true && exit;;
+ --browser|-b) BROWSER="$2" ;;
+ --text|-t) RAW_TEXT=true ;;
+ --version) echo "$VERSION" && exit;;
+ --recent|-r) view_recent_email && exit;;
+ # If the user provides number as an argument,
+ # assume its the ID of an email and try getting
+ # the email that belongs to the ID
+ *[0-9]*) view_email "$1" && exit;;
+ -*) echo "error: option $1 does not exist"
+ esac
+ shift
+ done
+}
+
+
+main "$@"
diff --git a/scripts/bin/torque b/scripts/bin/torque
new file mode 100755
index 0000000..b63b594
--- /dev/null
+++ b/scripts/bin/torque
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+#
+# Torque - minimal tui for transmission-daemon.
+
+refresh() {
+ printf '\e[?7l\e[?25l\e[2J\e[H'
+ shopt -s checkwinsize; (:;:)
+ [[ -z "$LINES" ]] && read -r LINES COLUMNS < <(stty size)
+ ((j=(LINES-2)/3))
+}
+
+status() {
+ printf '\e[2m\e[%s;H%s\e[m' "$((LINES-1))" "$1"
+}
+
+get_torrents() {
+ IFS=$'\n' read -d "" -ra t < <(transmission-remote -l)
+ unset 't[0]' 't[-1]' 2>/dev/null
+
+ t=("${t[@]//[0-9] [a-z][a-z][a-z]?/.}")
+ t=("${t[@]//Up & Down/Active}")
+ t=("${t[@]//Downloading/Active}")
+ t=("${t[@]// None/0 MB}")
+
+ for((i=${k:=0};i<(j=j>${#t[@]}?${#t[@]}:j);i++));{ t_print "${t[i]/n\/a/0}";}
+ status "[s]tart [p]ause [r]emove [o]pen [j/k] [q]uit scroll ($j/${#t[@]})"$'\e[H'
+}
+
+t_print() {
+ IFS=" %" read -r num perc have unit _ up down _ stat name <<< "$1"
+
+ ((size=perc!=0?${have/.*}*100/perc:0,c=perc==100?33271340:31000000))
+
+ printf '\e[K\e[2m%s\e[m \e[1m\e[%s%b%s\e[m\n' \
+ "$num:" "${c:0:2}m" "\\u${c:2:4}\\${c:6}" "$name"
+ printf '\e[K\e7%s\e8\e[14C%s\e8\e[32C%s\e8\e[42C%s\e8\e[52C%s\n\e[K\n' \
+ " $stat: " "$have / $size $unit" "(${perc}%)" "⇣ $down" "⇡ $up"
+}
+
+prompt() {
+ send() { transmission-remote "$@" >/dev/null; }
+ status $'\e[B\e[?25h'
+
+ case "$1" in
+ s) read -rp "start torrent: #"; send -t "$REPLY" -s ;;
+ p) read -rp "pause torrent: #"; send -t "$REPLY" -S ;;
+ r) read -rp "remove torrent: #"; send -t "$REPLY" -r; k=0 ;;
+ o) read -rp "load magnet: "; send -a "$REPLY"; k=0 ;;
+ j) ((j==${#t[@]}))||((k=k>=j?k:++k,j=j<${#t[@]}?++j:j)) ;;
+ k) ((k==0))||((k=k<=j?k>0?--k:0:j,j=j>0?--j:j)) ;;
+ q) exit 0 ;;
+ esac
+
+ [[ "$1" =~ (j|k) ]] || refresh && printf '\e[?25l\e[H'
+}
+
+main() {
+ refresh
+
+ trap $'printf \e[?25h\e[?7h\e[999B' EXIT
+ trap 'refresh; k=0' SIGWINCH
+
+ for ((;;)); { get_torrents; read -rsN1 -t1 && prompt "$REPLY"; }
+}
+
+main
diff --git a/scripts/bin/tst b/scripts/bin/tst
new file mode 100755
index 0000000..bf2778d
--- /dev/null
+++ b/scripts/bin/tst
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+tabbed -c -r 2 st -w '' "$@";
diff --git a/scripts/bin/upload-file b/scripts/bin/upload-file
new file mode 100755
index 0000000..c095e51
--- /dev/null
+++ b/scripts/bin/upload-file
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+if [ $# -eq 0 ]; then
+ echo -e "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md";
+ return 1;
+fi
+
+tmpfile=$( mktemp -t transferXXX );
+
+if tty -s; then
+ basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g');
+ curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile" >> $tmpfile;
+else
+ curl --progress-bar --upload-file "-" "https://transfer.sh/$1" >> $tmpfile ;
+fi;
+
+cat $tmpfile;
+rm -f $tmpfile;
+
diff --git a/scripts/bin/vimv b/scripts/bin/vimv
new file mode 100755
index 0000000..3c78afb
--- /dev/null
+++ b/scripts/bin/vimv
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# Lists the current directory's files in Vim, so you can edit it and save to rename them
+# USAGE: vimv [file1 file2]
+# https://github.com/thameera/vimv
+
+declare -r FILENAMES_FILE="$(mktemp --tmpdir vimv.XXX)"
+
+trap '{ rm -f "${FILENAMES_FILE}" ; }' EXIT
+
+if [ $# -ne 0 ]; then
+ src=( "$@" )
+else
+ IFS=$'\r\n' GLOBIGNORE='*' command eval 'src=($(ls))'
+fi
+
+for ((i=0;i<${#src[@]};++i)); do
+ echo "${src[i]}" >> "${FILENAMES_FILE}"
+done
+
+${EDITOR:-vi} "${FILENAMES_FILE}"
+
+IFS=$'\r\n' GLOBIGNORE='*' command eval 'dest=($(cat "${FILENAMES_FILE}"))'
+
+count=0
+for ((i=0;i<${#src[@]};++i)); do
+ if [ "${src[i]}" != "${dest[i]}" ]; then
+ mkdir -p "`dirname "${dest[i]}"`"
+ if git ls-files --error-unmatch "${src[i]}" > /dev/null 2>&1; then
+ git mv "${src[i]}" "${dest[i]}"
+ else
+ mv "${src[i]}" "${dest[i]}"
+ fi
+ ((count++))
+ fi
+done
+
+echo "$count" files renamed.
diff --git a/scripts/bin/vman b/scripts/bin/vman
new file mode 100755
index 0000000..cb78e4d
--- /dev/null
+++ b/scripts/bin/vman
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+man -f "$@" >/dev/null 2>&1 && nvim -R +":set ft=man" <(man "$@");
diff --git a/scripts/bin/web b/scripts/bin/web
new file mode 100755
index 0000000..958e844
--- /dev/null
+++ b/scripts/bin/web
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+w3m -o imgdisplay=/usr/lib/w3m/w3mimgdisplay "$@";
+
diff --git a/scripts/bin/with_zsh b/scripts/bin/with_zsh
new file mode 100755
index 0000000..0da2d95
--- /dev/null
+++ b/scripts/bin/with_zsh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+zsh -c "source ~/.zshrc && $@";
+
diff --git a/scripts/brightness.sh b/scripts/brightness.sh
new file mode 100755
index 0000000..71432d6
--- /dev/null
+++ b/scripts/brightness.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+read_brightness() { xbacklight -get; }
+
+get_brightness() { printf "%.0f%s" "$(read_brightness)" "%"; }
+
+set_brightness() { xbacklight -set $1; }
+
+increment() { xbacklight -inc $1; }
+decrement() { xbacklight -dec $1; }
+
+case $1 in
+ get) get_brightness ;;
+ set) set_brightness $2 ;;
+ inc) increment $2 ;;
+ dec) decrement $2 ;;
+ *) echo "For tools to work, you need to know how to use them" ;;
+esac
+
+#~/scripts/statusbar/statusbar.sh update brightness;
+update-dwmblock brightness;
+
diff --git a/scripts/change-tagname.sh b/scripts/change-tagname.sh
new file mode 100755
index 0000000..227d509
--- /dev/null
+++ b/scripts/change-tagname.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+name=$(echo -n "" | dmenu -p "tag name ::");
+
+[[ ! -z "$name" ]] && dwmc settagname "$name";
+
diff --git a/scripts/commands/:break b/scripts/commands/:break
new file mode 100755
index 0000000..e6bde66
--- /dev/null
+++ b/scripts/commands/:break
@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+reason=`echo -n "" | dmenu -p "Reason for break ::"`;
+
+operation=`[[ "$reason" =~ ^- ]] && echo "stop" || echo "start"`;
+
+reason=`echo $reason | sed 's/^-//g'`;
+([[ -z "$reason" ]]) && exit 1;
+
+if (ponos "$operation" "$reason"); then
+ notify-send "Break ${operation}ed";
+else
+ notify-send -u critical "Something went wrong";
+fi;
diff --git a/scripts/commands/:brightness b/scripts/commands/:brightness
new file mode 100755
index 0000000..cb36d70
--- /dev/null
+++ b/scripts/commands/:brightness
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+~/scripts/brightness.sh set $1;
diff --git a/scripts/commands/:cal b/scripts/commands/:cal
new file mode 100755
index 0000000..3fbd0ef
--- /dev/null
+++ b/scripts/commands/:cal
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+sensible-terminal -e nvim +Calendar
diff --git a/scripts/commands/:calc b/scripts/commands/:calc
new file mode 100755
index 0000000..8f804ba
--- /dev/null
+++ b/scripts/commands/:calc
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+sensible-terminal -e node;
diff --git a/scripts/commands/:camera-off b/scripts/commands/:camera-off
new file mode 100755
index 0000000..ba1429e
--- /dev/null
+++ b/scripts/commands/:camera-off
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+dsudo modprobe -r uvcvideo && notify-send "Camera turned off" || notify-send "Something went wrong"
diff --git a/scripts/commands/:camera-on b/scripts/commands/:camera-on
new file mode 100755
index 0000000..e6d8924
--- /dev/null
+++ b/scripts/commands/:camera-on
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+dsudo modprobe uvcvideo && notify-send "Camera turned on" || notify-send "Something went wrong"
diff --git a/scripts/commands/:cheat b/scripts/commands/:cheat
new file mode 100755
index 0000000..850557f
--- /dev/null
+++ b/scripts/commands/:cheat
@@ -0,0 +1,5 @@
+#!/usr/bin/env sh
+
+[[ ! -z "$1" ]] && file=$1 || file=Cheatsheets;
+
+sensible-terminal -e sensible-editor ~/.config/vimwiki/$file.md;
diff --git a/scripts/commands/:codi b/scripts/commands/:codi
new file mode 100755
index 0000000..09fb11b
--- /dev/null
+++ b/scripts/commands/:codi
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+filetype=${1:-javascript}
+tmpfile=$(mktemp /tmp/interpreter.XXXXXXX)
+
+sensible-terminal -e sh -c "~/.bin/with_zsh 'codi $filetype $tmpfile'";
+
+rm $tmpfile;
+
diff --git a/scripts/commands/:color-pick b/scripts/commands/:color-pick
new file mode 100755
index 0000000..7d7850a
--- /dev/null
+++ b/scripts/commands/:color-pick
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+~/.bin/color-pick;
+
diff --git a/scripts/commands/:day b/scripts/commands/:day
new file mode 100755
index 0000000..e090f5b
--- /dev/null
+++ b/scripts/commands/:day
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+~/scripts/brightness.sh set 100;
+
+:gamma 0.91 0.94 0.93;
+
+xgamma -gamma 1;
+
diff --git a/scripts/commands/:email b/scripts/commands/:email
new file mode 100755
index 0000000..0b7b63f
--- /dev/null
+++ b/scripts/commands/:email
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+sensible-terminal -e neomutt
+
diff --git a/scripts/commands/:files b/scripts/commands/:files
new file mode 100755
index 0000000..7ee64ce
--- /dev/null
+++ b/scripts/commands/:files
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+file-manager;
diff --git a/scripts/commands/:gamma b/scripts/commands/:gamma
new file mode 100755
index 0000000..2b2a1f8
--- /dev/null
+++ b/scripts/commands/:gamma
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+if [[ $# == 1 ]]; then
+ r=$1; g=$1; b=$1;
+else
+ r=${1:-'1'}; g=${2:-'1'}; b=${3:-'1'};
+fi;
+
+notify-send "Setting gamma to ($r, $g, $b)";
+xrandr --output eDP-1 --brightness 1 --gamma $r:$g:$b
+
diff --git a/scripts/commands/:install b/scripts/commands/:install
new file mode 100755
index 0000000..20d602b
--- /dev/null
+++ b/scripts/commands/:install
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+
diff --git a/scripts/commands/:mic b/scripts/commands/:mic
new file mode 100755
index 0000000..4815d3d
--- /dev/null
+++ b/scripts/commands/:mic
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+~/scripts/sound.sh mute-mic;
diff --git a/scripts/commands/:music b/scripts/commands/:music
new file mode 100755
index 0000000..8ac1653
--- /dev/null
+++ b/scripts/commands/:music
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+sensible-terminal -e ncmpcpp
diff --git a/scripts/commands/:night b/scripts/commands/:night
new file mode 100755
index 0000000..b97c90b
--- /dev/null
+++ b/scripts/commands/:night
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+~/scripts/brightness.sh set 2;
+
diff --git a/scripts/commands/:notes b/scripts/commands/:notes
new file mode 100755
index 0000000..cf5a8cc
--- /dev/null
+++ b/scripts/commands/:notes
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+sensible-terminal -e sensible-editor ~/.config/vimwiki/index.md;
diff --git a/scripts/commands/:play-next b/scripts/commands/:play-next
new file mode 100755
index 0000000..255fb9f
--- /dev/null
+++ b/scripts/commands/:play-next
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+musicdir=$HOME/Downloads/music;
+
+ls_songs() {
+ cd $musicdir;
+ find -follow | while read l; do [[ -f "$l" ]] && echo "$l"; done | sed 's/^\.\///';
+}
+
+song=$(ls_songs | sort | dmenu -p "Song :: ");
+
+[[ -z "$song" ]] && exit 1;
+
+mpc insert "file://$musicdir/$song";
+
+[[ "$(~/scripts/music/player.sh get_play_state)" == "Stopped" ]] && mpc play;
+update-dwmblock music;
diff --git a/scripts/commands/:power b/scripts/commands/:power
new file mode 100755
index 0000000..735e6bd
--- /dev/null
+++ b/scripts/commands/:power
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+~/scripts/powercontrol.sh menu
diff --git a/scripts/commands/:scratchpad b/scripts/commands/:scratchpad
new file mode 100755
index 0000000..69f0971
--- /dev/null
+++ b/scripts/commands/:scratchpad
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+sensible-terminal -e sensible-editor ~/.config/vimwiki/scratchpad.md;
+
diff --git a/scripts/commands/:standup b/scripts/commands/:standup
new file mode 120000
index 0000000..970efd7
--- /dev/null
+++ b/scripts/commands/:standup
@@ -0,0 +1 @@
+/home/imsohexy/.work-config/commands/:standup \ No newline at end of file
diff --git a/scripts/commands/:system-monitor b/scripts/commands/:system-monitor
new file mode 100755
index 0000000..5c8e784
--- /dev/null
+++ b/scripts/commands/:system-monitor
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+sensible-terminal -e ytop
diff --git a/scripts/commands/:tasks b/scripts/commands/:tasks
new file mode 100755
index 0000000..d020ddf
--- /dev/null
+++ b/scripts/commands/:tasks
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+sensible-terminal -e sensible-editor ~/.config/vimwiki/Work.md;
+
diff --git a/scripts/commands/:time b/scripts/commands/:time
new file mode 100755
index 0000000..0970ef9
--- /dev/null
+++ b/scripts/commands/:time
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+sensible-terminal -e tty-clock -t -b -c
diff --git a/scripts/commands/:today b/scripts/commands/:today
new file mode 100755
index 0000000..ec7b295
--- /dev/null
+++ b/scripts/commands/:today
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+sensible-terminal -e sensible-editor ~/.config/vimwiki/Today.md;
+
diff --git a/scripts/commands/:tord b/scripts/commands/:tord
new file mode 100755
index 0000000..83207fa
--- /dev/null
+++ b/scripts/commands/:tord
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+~/.bin/dsudo chown -R an:an /var/lib/tor;
+
+tor --runasdaemon 1 -f ~/.config/tor/torrc & disown;
+
diff --git a/scripts/commands/:torrent b/scripts/commands/:torrent
new file mode 100755
index 0000000..b3f1849
--- /dev/null
+++ b/scripts/commands/:torrent
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+sensible-terminal -e bash -c 'tremc';
+
diff --git a/scripts/commands/:type b/scripts/commands/:type
new file mode 100755
index 0000000..5a95508
--- /dev/null
+++ b/scripts/commands/:type
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+xdotool type "$1"
+
diff --git a/scripts/commands/:weather b/scripts/commands/:weather
new file mode 100755
index 0000000..e9006e7
--- /dev/null
+++ b/scripts/commands/:weather
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+sensible-terminal -e bash -c 'curl wttr.in/Virar && read'
diff --git a/scripts/commands/:wiki b/scripts/commands/:wiki
new file mode 100755
index 0000000..3a26283
--- /dev/null
+++ b/scripts/commands/:wiki
@@ -0,0 +1,3 @@
+#!/usr/bin/env sh
+
+~/scripts/wiki.sh;
diff --git a/scripts/commands/:work-start b/scripts/commands/:work-start
new file mode 100755
index 0000000..5603a8b
--- /dev/null
+++ b/scripts/commands/:work-start
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+if (ponos start work); then
+ notify-send "Started 'work' block";
+else
+ notify-send -u critical "Something went wrong";
+fi;
diff --git a/scripts/commands/:work-stop b/scripts/commands/:work-stop
new file mode 100755
index 0000000..e02ccd0
--- /dev/null
+++ b/scripts/commands/:work-stop
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+if (ponos stop work); then
+ notify-send "Stopped 'work' block";
+else
+ notify-send -u critical "Something went wrong";
+fi;
diff --git a/scripts/dotfiles.sh b/scripts/dotfiles.sh
new file mode 100755
index 0000000..6f70d7b
--- /dev/null
+++ b/scripts/dotfiles.sh
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+
+add() { yadm add "$@"; }
+add-public-config() {
+ # Base config
+ add ~/README.md;
+ add ~/.work-config;
+ add ~/.gitmodules ~/.config/git-config;
+ add ~/.config/linkedconf;
+ #add ~/.config/vimwiki;
+ #add ~/.config/password-store;
+ add ~/.config/sitesettings;
+ add ~/.config/crontab;
+ add ~/.config/gnupg/gpg-agent.conf;
+
+ # X and DM
+ add ~/.config/{bspwm,sxhkd}
+ add ~/.config/compton.conf;
+ add ~/.config/sx;
+ add ~/.config/xresources-schemes;
+ add ~/.config/dunst;
+ add ~/.config/xconfig;
+ add ~/.config/autostart.sh;
+
+ # Other config
+ add ~/.config/{gtk-3.0,mimeapps.list};
+
+ # Terminal and shell
+ add ~/.bashrc ~/.profile;
+ add ~/.zshrc ~/.zprofile ~/.config/{zshconf,zshplugins};
+
+ # Dev
+ add ~/scripts ~/.bin;
+ add ~/.config/nvim;
+
+ # Applications
+ add ~/.config/suckless;
+ add ~/.config/qutebrowser;
+ add ~/.config/{lf,mpv,sxiv,zathura,newsboat,neofetch};
+ add ~/.config/transmission-daemon/settings.json;
+ add ~/.config/{transmission-remote-cli,stig,tremc,udiskie};
+ add ~/.config/{calcurse,pet,shell-macros};
+ add ~/.config/neomutt;
+ add ~/.config/{ncmpcpp,mopidy,mpd};
+
+ # Wallpapers
+ add ~/.fehbg;
+ add ~/Pictures/wallpapers;
+}
+
+should_run() { [[ -z "$2" ]] || [[ "$2" == _ ]] || [[ "$1" == "$2" ]]; } # Should run command
+should_push() { [[ -z "$1" ]]; } # Should sync with remote
+
+commit-push-all() {
+ local oldir=$(pwd);
+ cd "$1";
+ git add .;
+ git commit -m "$2";
+ should_push "$3" && git push;
+ cd $oldir;
+}
+
+# Sync dotfiles to github (uses yadm)
+update-dotfiles() {
+ # Passwords push
+ if (should_run pass "$1"); then
+ echo -e "\n\n##### Pushing passwords";
+ should_push "$2" && pass git push;
+ fi;
+
+ # Vim wiki push
+ if (should_run notes "$1"); then
+ echo -e "\n\n##### Pushing vimwiki";
+ commit-push-all ~/.config/vimwiki "Notes updated" "$2";
+ fi;
+
+ # Push private config
+ if (should_run work "$1"); then
+ echo -e "\n\n##### Pushing private config";
+ commit-push-all ~/.work-config "Updated private config" "$2";
+ fi;
+
+ # Dotfiles
+ if (should_run dot "$1"); then
+ echo -e "\n\n##### Pushing public dotfiles";
+ yadm status;
+ add-public-config;
+ yadm commit -m "Updates dotfiles" && \
+ should_push "$2" && yadm push -u origin master;
+ fi;
+}
+
+update-dotfiles "$@";
diff --git a/scripts/fontawesome-menu/.gitignore b/scripts/fontawesome-menu/.gitignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/scripts/fontawesome-menu/.gitignore
@@ -0,0 +1 @@
+node_modules
diff --git a/scripts/fontawesome-menu/fa-menu.sh b/scripts/fontawesome-menu/fa-menu.sh
new file mode 100755
index 0000000..48be093
--- /dev/null
+++ b/scripts/fontawesome-menu/fa-menu.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+source "$HOME/scripts/modules/utils.sh";
+source "$HOME/scripts/modules/rofi-menu.sh";
+
+DIR="$HOME/scripts/fontawesome-menu";
+FONTS_DIR="$DIR/icons";
+SCRIPT_FILE="$DIR/fa-menu.sh";
+
+get_fonts() { cat $FONTS_DIR/$1; }
+
+show_menu() {
+ local icon=$(get_fonts icons-list | open-menu -p "Emoji :: " | awk '{print $1}');
+ if [[ ! -z "$icon" ]]; then
+ copy_str "$icon";
+ notify-send "Emoji ($icon) copied to clipboard";
+ fi;
+}
+
+case "$1" in
+ menu) show_menu ;;
+esac
+
diff --git a/scripts/fontawesome-menu/icons/brands b/scripts/fontawesome-menu/icons/brands
new file mode 100644
index 0000000..2883965
--- /dev/null
+++ b/scripts/fontawesome-menu/icons/brands
@@ -0,0 +1,438 @@
+|500px
+|accessible-icon
+|accusoft
+|acquisitions-incorporated
+|adn
+|adobe
+|adversal
+|affiliatetheme
+|airbnb
+|algolia
+|alipay
+|amazon
+|amazon-pay
+|amilia
+|android
+|angellist
+|angrycreative
+|angular
+|app-store
+|app-store-ios
+|apper
+|apple
+|apple-pay
+|artstation
+|asymmetrik
+|atlassian
+|audible
+|autoprefixer
+|avianex
+|aviato
+|aws
+|bandcamp
+|battle-net
+|behance
+|behance-square
+|bimobject
+|bitbucket
+|bitcoin
+|bity
+|black-tie
+|blackberry
+|blogger
+|blogger-b
+|bluetooth
+|bluetooth-b
+|bootstrap
+|btc
+|buffer
+|buromobelexperte
+|buy-n-large
+|buysellads
+|canadian-maple-leaf
+|cc-amazon-pay
+|cc-amex
+|cc-apple-pay
+|cc-diners-club
+|cc-discover
+|cc-jcb
+|cc-mastercard
+|cc-paypal
+|cc-stripe
+|cc-visa
+|centercode
+|centos
+|chrome
+|chromecast
+|cloudscale
+|cloudsmith
+|cloudversify
+|codepen
+|codiepie
+|confluence
+|connectdevelop
+|contao
+|cotton-bureau
+|cpanel
+|creative-commons
+|creative-commons-by
+|creative-commons-nc
+|creative-commons-nc-eu
+|creative-commons-nc-jp
+|creative-commons-nd
+|creative-commons-pd
+|creative-commons-pd-alt
+|creative-commons-remix
+|creative-commons-sa
+|creative-commons-sampling
+|creative-commons-sampling-plus
+|creative-commons-share
+|creative-commons-zero
+|critical-role
+|css3
+|css3-alt
+|cuttlefish
+|d-and-d
+|d-and-d-beyond
+|dashcube
+|delicious
+|deploydog
+|deskpro
+|dev
+|deviantart
+|dhl
+|diaspora
+|digg
+|digital-ocean
+|discord
+|discourse
+|dochub
+|docker
+|draft2digital
+|dribbble
+|dribbble-square
+|dropbox
+|drupal
+|dyalog
+|earlybirds
+|ebay
+|edge
+|elementor
+|ello
+|ember
+|empire
+|envira
+|erlang
+|ethereum
+|etsy
+|evernote
+|expeditedssl
+|facebook
+|facebook-f
+|facebook-messenger
+|facebook-square
+|fantasy-flight-games
+|fedex
+|fedora
+|figma
+|firefox
+龜|firefox-browser
+|first-order
+|first-order-alt
+|firstdraft
+|flickr
+|flipboard
+|fly
+|font-awesome
+|font-awesome-alt
+|font-awesome-flag
+|fonticons
+|fonticons-fi
+|fort-awesome
+|fort-awesome-alt
+|forumbee
+|foursquare
+|free-code-camp
+|freebsd
+|fulcrum
+|galactic-republic
+|galactic-senate
+|get-pocket
+|gg
+|gg-circle
+|git
+|git-alt
+|git-square
+|github
+|github-alt
+|github-square
+|gitkraken
+|gitlab
+|gitter
+|glide
+|glide-g
+|gofore
+|goodreads
+|goodreads-g
+|google
+|google-drive
+|google-play
+|google-plus
+|google-plus-g
+|google-plus-square
+|google-wallet
+|gratipay
+|grav
+|gripfire
+|grunt
+|gulp
+|hacker-news
+|hacker-news-square
+|hackerrank
+|hips
+|hire-a-helper
+|hooli
+|hornbill
+|hotjar
+|houzz
+|html5
+|hubspot
+邏|ideal
+|imdb
+|instagram
+|intercom
+|internet-explorer
+|invision
+|ioxhost
+|itch-io
+|itunes
+|itunes-note
+|java
+|jedi-order
+|jenkins
+|jira
+|joget
+|joomla
+|js
+|js-square
+|jsfiddle
+|kaggle
+|keybase
+|keycdn
+|kickstarter
+|kickstarter-k
+|korvue
+|laravel
+|lastfm
+|lastfm-square
+|leanpub
+|less
+|line
+|linkedin
+|linkedin-in
+|linode
+|linux
+|lyft
+|magento
+|mailchimp
+|mandalorian
+|markdown
+|mastodon
+|maxcdn
+|mdb
+|medapps
+|medium
+|medium-m
+|medrt
+|meetup
+|megaport
+|mendeley
+駱|microblog
+|microsoft
+|mix
+|mixcloud
+|mizuni
+|modx
+|monero
+|napster
+|neos
+|nimblr
+|node
+|node-js
+|npm
+|ns8
+|nutritionix
+|odnoklassniki
+|odnoklassniki-square
+|old-republic
+|opencart
+|openid
+|opera
+|optin-monster
+|orcid
+|osi
+|page4
+|pagelines
+|palfed
+|patreon
+|paypal
+|penny-arcade
+|periscope
+|phabricator
+|phoenix-framework
+|phoenix-squadron
+|php
+|pied-piper
+|pied-piper-alt
+|pied-piper-hat
+|pied-piper-pp
+爛|pied-piper-square
+|pinterest
+|pinterest-p
+|pinterest-square
+|playstation
+|product-hunt
+|pushed
+|python
+|qq
+|quinscape
+|quora
+|r-project
+|raspberry-pi
+|ravelry
+|react
+|reacteurope
+|readme
+|rebel
+|red-river
+|reddit
+|reddit-alien
+|reddit-square
+|redhat
+|renren
+|replyd
+|researchgate
+|resolving
+|rev
+|rocketchat
+|rockrms
+|safari
+|salesforce
+|sass
+|schlix
+|scribd
+|searchengin
+|sellcast
+|sellsy
+|servicestack
+|shirtsinbulk
+|shopware
+|simplybuilt
+|sistrix
+|sith
+|sketch
+|skyatlas
+|skype
+|slack
+|slack-hash
+|slideshare
+|snapchat
+|snapchat-ghost
+|snapchat-square
+|soundcloud
+|sourcetree
+|speakap
+|speaker-deck
+|spotify
+|squarespace
+|stack-exchange
+|stack-overflow
+|stackpath
+|staylinked
+|steam
+|steam-square
+|steam-symbol
+|sticker-mule
+|strava
+|stripe
+|stripe-s
+|studiovinari
+|stumbleupon
+|stumbleupon-circle
+|superpowers
+|supple
+|suse
+|swift
+|symfony
+|teamspeak
+|telegram
+|telegram-plane
+|tencent-weibo
+|the-red-yeti
+|themeco
+|themeisle
+|think-peaks
+|trade-federation
+|trello
+|tripadvisor
+|tumblr
+|tumblr-square
+|twitch
+|twitter
+|twitter-square
+|typo3
+|uber
+|ubuntu
+|uikit
+|umbraco
+|uniregistry
+雷|unity
+|untappd
+|ups
+|usb
+|usps
+|ussunnah
+|vaadin
+|viacoin
+|viadeo
+|viadeo-square
+|viber
+|vimeo
+|vimeo-square
+|vimeo-v
+|vine
+|vk
+|vnv
+|vuejs
+|waze
+|weebly
+|weibo
+|weixin
+|whatsapp
+|whatsapp-square
+|whmcs
+|wikipedia-w
+|windows
+|wix
+|wizards-of-the-coast
+|wolf-pack-battalion
+|wordpress
+|wordpress-simple
+|wpbeginner
+|wpexplorer
+|wpforms
+|wpressr
+|xbox
+|xing
+|xing-square
+|y-combinator
+|yahoo
+|yammer
+|yandex
+|yandex-international
+|yarn
+|yelp
+|yoast
+|youtube
+|youtube-square
+|zhihu \ No newline at end of file
diff --git a/scripts/fontawesome-menu/icons/icons-list b/scripts/fontawesome-menu/icons/icons-list
new file mode 100644
index 0000000..37607a6
--- /dev/null
+++ b/scripts/fontawesome-menu/icons/icons-list
@@ -0,0 +1,3127 @@
+😀 grinning face; U+1F600
+😃 grinning face with big eyes; U+1F603
+😄 grinning face with smiling eyes; U+1F604
+😁 beaming face with smiling eyes; U+1F601
+😆 grinning squinting face; U+1F606
+😅 grinning face with sweat; U+1F605
+🤣 rolling on the floor laughing; U+1F923
+😂 face with tears of joy; U+1F602
+🙂 slightly smiling face; U+1F642
+🙃 upside-down face; U+1F643
+😉 winking face; U+1F609
+😊 smiling face with smiling eyes; U+1F60A
+😇 smiling face with halo; U+1F607
+🥰 smiling face with 3 hearts; U+1F970
+😍 smiling face with heart-eyes; U+1F60D
+🤩 star-struck; U+1F929
+😘 face blowing a kiss; U+1F618
+😗 kissing face; U+1F617
+☺ smiling face; U+263A
+😚 kissing face with closed eyes; U+1F61A
+😙 kissing face with smiling eyes; U+1F619
+😋 face savoring food; U+1F60B
+😛 face with tongue; U+1F61B
+😜 winking face with tongue; U+1F61C
+🤪 zany face; U+1F92A
+😝 squinting face with tongue; U+1F61D
+🤑 money-mouth face; U+1F911
+🤗 hugging face; U+1F917
+🤭 face with hand over mouth; U+1F92D
+🤫 shushing face; U+1F92B
+🤔 thinking face; U+1F914
+🤐 zipper-mouth face; U+1F910
+🤨 face with raised eyebrow; U+1F928
+😐 neutral face; U+1F610
+😑 expressionless face; U+1F611
+😶 face without mouth; U+1F636
+😏 smirking face; U+1F60F
+😒 unamused face; U+1F612
+🙄 face with rolling eyes; U+1F644
+😬 grimacing face; U+1F62C
+🤥 lying face; U+1F925
+😌 relieved face; U+1F60C
+😔 pensive face; U+1F614
+😪 sleepy face; U+1F62A
+🤤 drooling face; U+1F924
+😴 sleeping face; U+1F634
+😷 face with medical mask; U+1F637
+🤒 face with thermometer; U+1F912
+🤕 face with head-bandage; U+1F915
+🤢 nauseated face; U+1F922
+🤮 face vomiting; U+1F92E
+🤧 sneezing face; U+1F927
+🥵 hot face; U+1F975
+🥶 cold face; U+1F976
+🥴 woozy face; U+1F974
+😵 dizzy face; U+1F635
+🤯 exploding head; U+1F92F
+🤠 cowboy hat face; U+1F920
+🥳 partying face; U+1F973
+😎 smiling face with sunglasses; U+1F60E
+🤓 nerd face; U+1F913
+🧐 face with monocle; U+1F9D0
+😕 confused face; U+1F615
+😟 worried face; U+1F61F
+🙁 slightly frowning face; U+1F641
+☹ frowning face; U+2639
+😮 face with open mouth; U+1F62E
+😯 hushed face; U+1F62F
+😲 astonished face; U+1F632
+😳 flushed face; U+1F633
+🥺 pleading face; U+1F97A
+😦 frowning face with open mouth; U+1F626
+😧 anguished face; U+1F627
+😨 fearful face; U+1F628
+😰 anxious face with sweat; U+1F630
+😥 sad but relieved face; U+1F625
+😢 crying face; U+1F622
+😭 loudly crying face; U+1F62D
+😱 face screaming in fear; U+1F631
+😖 confounded face; U+1F616
+😣 persevering face; U+1F623
+😞 disappointed face; U+1F61E
+😓 downcast face with sweat; U+1F613
+😩 weary face; U+1F629
+😫 tired face; U+1F62B
+😤 face with steam from nose; U+1F624
+😡 pouting face; U+1F621
+😠 angry face; U+1F620
+🤬 face with symbols on mouth; U+1F92C
+😈 smiling face with horns; U+1F608
+👿 angry face with horns; U+1F47F
+💀 skull; U+1F480
+☠ skull and crossbones; U+2620
+💩 pile of poo; U+1F4A9
+🤡 clown face; U+1F921
+👹 ogre; U+1F479
+👺 goblin; U+1F47A
+👻 ghost; U+1F47B
+👽 alien; U+1F47D
+👾 alien monster; U+1F47E
+🤖 robot face; U+1F916
+😺 grinning cat face; U+1F63A
+😸 grinning cat face with smiling eyes; U+1F638
+😹 cat face with tears of joy; U+1F639
+😻 smiling cat face with heart-eyes; U+1F63B
+😼 cat face with wry smile; U+1F63C
+😽 kissing cat face; U+1F63D
+🙀 weary cat face; U+1F640
+😿 crying cat face; U+1F63F
+😾 pouting cat face; U+1F63E
+🙈 see-no-evil monkey; U+1F648
+🙉 hear-no-evil monkey; U+1F649
+🙊 speak-no-evil monkey; U+1F64A
+💋 kiss mark; U+1F48B
+💌 love letter; U+1F48C
+💘 heart with arrow; U+1F498
+💝 heart with ribbon; U+1F49D
+💖 sparkling heart; U+1F496
+💗 growing heart; U+1F497
+💓 beating heart; U+1F493
+💞 revolving hearts; U+1F49E
+💕 two hearts; U+1F495
+💟 heart decoration; U+1F49F
+❣ heavy heart exclamation; U+2763
+💔 broken heart; U+1F494
+❤ red heart; U+2764
+🧡 orange heart; U+1F9E1
+💛 yellow heart; U+1F49B
+💚 green heart; U+1F49A
+💙 blue heart; U+1F499
+💜 purple heart; U+1F49C
+🖤 black heart; U+1F5A4
+💯 hundred points; U+1F4AF
+💢 anger symbol; U+1F4A2
+💥 collision; U+1F4A5
+💫 dizzy; U+1F4AB
+💦 sweat droplets; U+1F4A6
+💨 dashing away; U+1F4A8
+🕳 hole; U+1F573
+💣 bomb; U+1F4A3
+💬 speech balloon; U+1F4AC
+👁️‍🗨️ eye in speech bubble; U+1F441 U+FE0F U+200D U+1F5E8 U+FE0F
+🗨 left speech bubble; U+1F5E8
+🗯 right anger bubble; U+1F5EF
+💭 thought balloon; U+1F4AD
+💤 zzz; U+1F4A4
+👋 waving hand; U+1F44B
+🤚 raised back of hand; U+1F91A
+🖐 hand with fingers splayed; U+1F590
+✋ raised hand; U+270B
+🖖 vulcan salute; U+1F596
+👌 OK hand; U+1F44C
+✌ victory hand; U+270C
+🤞 crossed fingers; U+1F91E
+🤟 love-you gesture; U+1F91F
+🤘 sign of the horns; U+1F918
+🤙 call me hand; U+1F919
+👈 backhand index pointing left; U+1F448
+👉 backhand index pointing right; U+1F449
+👆 backhand index pointing up; U+1F446
+🖕 middle finger; U+1F595
+👇 backhand index pointing down; U+1F447
+☝ index pointing up; U+261D
+👍 thumbs up; U+1F44D
+👎 thumbs down; U+1F44E
+✊ raised fist; U+270A
+👊 oncoming fist; U+1F44A
+🤛 left-facing fist; U+1F91B
+🤜 right-facing fist; U+1F91C
+👏 clapping hands; U+1F44F
+🙌 raising hands; U+1F64C
+👐 open hands; U+1F450
+🤲 palms up together; U+1F932
+🤝 handshake; U+1F91D
+🙏 folded hands; U+1F64F
+✍ writing hand; U+270D
+💅 nail polish; U+1F485
+🤳 selfie; U+1F933
+💪 flexed biceps; U+1F4AA
+🦵 leg; U+1F9B5
+🦶 foot; U+1F9B6
+👂 ear; U+1F442
+👃 nose; U+1F443
+🧠 brain; U+1F9E0
+🦷 tooth; U+1F9B7
+🦴 bone; U+1F9B4
+👀 eyes; U+1F440
+👁 eye; U+1F441
+👅 tongue; U+1F445
+👄 mouth; U+1F444
+👶 baby; U+1F476
+🧒 child; U+1F9D2
+👦 boy; U+1F466
+👧 girl; U+1F467
+🧑 person; U+1F9D1
+👱 person: blond hair; U+1F471
+👨 man; U+1F468
+👱‍♂️ man: blond hair; U+1F471 U+200D U+2642 U+FE0F
+👨‍🦰 man: red hair; U+1F468 U+200D U+1F9B0
+👨‍🦱 man: curly hair; U+1F468 U+200D U+1F9B1
+👨‍🦳 man: white hair; U+1F468 U+200D U+1F9B3
+👨‍🦲 man: bald; U+1F468 U+200D U+1F9B2
+🧔 man: beard; U+1F9D4
+👩 woman; U+1F469
+👱‍♀️ woman: blond hair; U+1F471 U+200D U+2640 U+FE0F
+👩‍🦰 woman: red hair; U+1F469 U+200D U+1F9B0
+👩‍🦱 woman: curly hair; U+1F469 U+200D U+1F9B1
+👩‍🦳 woman: white hair; U+1F469 U+200D U+1F9B3
+👩‍🦲 woman: bald; U+1F469 U+200D U+1F9B2
+🧓 older person; U+1F9D3
+👴 old man; U+1F474
+👵 old woman; U+1F475
+🙍 person frowning; U+1F64D
+🙍‍♂️ man frowning; U+1F64D U+200D U+2642 U+FE0F
+🙍‍♀️ woman frowning; U+1F64D U+200D U+2640 U+FE0F
+🙎 person pouting; U+1F64E
+🙎‍♂️ man pouting; U+1F64E U+200D U+2642 U+FE0F
+🙎‍♀️ woman pouting; U+1F64E U+200D U+2640 U+FE0F
+🙅 person gesturing NO; U+1F645
+🙅‍♂️ man gesturing NO; U+1F645 U+200D U+2642 U+FE0F
+🙅‍♀️ woman gesturing NO; U+1F645 U+200D U+2640 U+FE0F
+🙆 person gesturing OK; U+1F646
+🙆‍♂️ man gesturing OK; U+1F646 U+200D U+2642 U+FE0F
+🙆‍♀️ woman gesturing OK; U+1F646 U+200D U+2640 U+FE0F
+💁 person tipping hand; U+1F481
+💁‍♂️ man tipping hand; U+1F481 U+200D U+2642 U+FE0F
+💁‍♀️ woman tipping hand; U+1F481 U+200D U+2640 U+FE0F
+🙋 person raising hand; U+1F64B
+🙋‍♂️ man raising hand; U+1F64B U+200D U+2642 U+FE0F
+🙋‍♀️ woman raising hand; U+1F64B U+200D U+2640 U+FE0F
+🙇 person bowing; U+1F647
+🙇‍♂️ man bowing; U+1F647 U+200D U+2642 U+FE0F
+🙇‍♀️ woman bowing; U+1F647 U+200D U+2640 U+FE0F
+🤦 person facepalming; U+1F926
+🤦‍♂️ man facepalming; U+1F926 U+200D U+2642 U+FE0F
+🤦‍♀️ woman facepalming; U+1F926 U+200D U+2640 U+FE0F
+🤷 person shrugging; U+1F937
+🤷‍♂️ man shrugging; U+1F937 U+200D U+2642 U+FE0F
+🤷‍♀️ woman shrugging; U+1F937 U+200D U+2640 U+FE0F
+👨‍⚕️ man health worker; U+1F468 U+200D U+2695 U+FE0F
+👩‍⚕️ woman health worker; U+1F469 U+200D U+2695 U+FE0F
+👨‍🎓 man student; U+1F468 U+200D U+1F393
+👩‍🎓 woman student; U+1F469 U+200D U+1F393
+👨‍🏫 man teacher; U+1F468 U+200D U+1F3EB
+👩‍🏫 woman teacher; U+1F469 U+200D U+1F3EB
+👨‍⚖️ man judge; U+1F468 U+200D U+2696 U+FE0F
+👩‍⚖️ woman judge; U+1F469 U+200D U+2696 U+FE0F
+👨‍🌾 man farmer; U+1F468 U+200D U+1F33E
+👩‍🌾 woman farmer; U+1F469 U+200D U+1F33E
+👨‍🍳 man cook; U+1F468 U+200D U+1F373
+👩‍🍳 woman cook; U+1F469 U+200D U+1F373
+👨‍🔧 man mechanic; U+1F468 U+200D U+1F527
+👩‍🔧 woman mechanic; U+1F469 U+200D U+1F527
+👨‍🏭 man factory worker; U+1F468 U+200D U+1F3ED
+👩‍🏭 woman factory worker; U+1F469 U+200D U+1F3ED
+👨‍💼 man office worker; U+1F468 U+200D U+1F4BC
+👩‍💼 woman office worker; U+1F469 U+200D U+1F4BC
+👨‍🔬 man scientist; U+1F468 U+200D U+1F52C
+👩‍🔬 woman scientist; U+1F469 U+200D U+1F52C
+👨‍💻 man technologist; U+1F468 U+200D U+1F4BB
+👩‍💻 woman technologist; U+1F469 U+200D U+1F4BB
+👨‍🎤 man singer; U+1F468 U+200D U+1F3A4
+👩‍🎤 woman singer; U+1F469 U+200D U+1F3A4
+👨‍🎨 man artist; U+1F468 U+200D U+1F3A8
+👩‍🎨 woman artist; U+1F469 U+200D U+1F3A8
+👨‍✈️ man pilot; U+1F468 U+200D U+2708 U+FE0F
+👩‍✈️ woman pilot; U+1F469 U+200D U+2708 U+FE0F
+👨‍🚀 man astronaut; U+1F468 U+200D U+1F680
+👩‍🚀 woman astronaut; U+1F469 U+200D U+1F680
+👨‍🚒 man firefighter; U+1F468 U+200D U+1F692
+👩‍🚒 woman firefighter; U+1F469 U+200D U+1F692
+👮 police officer; U+1F46E
+👮‍♂️ man police officer; U+1F46E U+200D U+2642 U+FE0F
+👮‍♀️ woman police officer; U+1F46E U+200D U+2640 U+FE0F
+🕵 detective; U+1F575
+🕵️‍♂️ man detective; U+1F575 U+FE0F U+200D U+2642 U+FE0F
+🕵️‍♀️ woman detective; U+1F575 U+FE0F U+200D U+2640 U+FE0F
+💂 guard; U+1F482
+💂‍♂️ man guard; U+1F482 U+200D U+2642 U+FE0F
+💂‍♀️ woman guard; U+1F482 U+200D U+2640 U+FE0F
+👷 construction worker; U+1F477
+👷‍♂️ man construction worker; U+1F477 U+200D U+2642 U+FE0F
+👷‍♀️ woman construction worker; U+1F477 U+200D U+2640 U+FE0F
+🤴 prince; U+1F934
+👸 princess; U+1F478
+👳 person wearing turban; U+1F473
+👳‍♂️ man wearing turban; U+1F473 U+200D U+2642 U+FE0F
+👳‍♀️ woman wearing turban; U+1F473 U+200D U+2640 U+FE0F
+👲 man with Chinese cap; U+1F472
+🧕 woman with headscarf; U+1F9D5
+🤵 man in tuxedo; U+1F935
+👰 bride with veil; U+1F470
+🤰 pregnant woman; U+1F930
+🤱 breast-feeding; U+1F931
+👼 baby angel; U+1F47C
+🎅 Santa Claus; U+1F385
+🤶 Mrs. Claus; U+1F936
+🦸 superhero; U+1F9B8
+🦸‍♂️ man superhero; U+1F9B8 U+200D U+2642 U+FE0F
+🦸‍♀️ woman superhero; U+1F9B8 U+200D U+2640 U+FE0F
+🦹 supervillain; U+1F9B9
+🦹‍♂️ man supervillain; U+1F9B9 U+200D U+2642 U+FE0F
+🦹‍♀️ woman supervillain; U+1F9B9 U+200D U+2640 U+FE0F
+🧙 mage; U+1F9D9
+🧙‍♂️ man mage; U+1F9D9 U+200D U+2642 U+FE0F
+🧙‍♀️ woman mage; U+1F9D9 U+200D U+2640 U+FE0F
+🧚 fairy; U+1F9DA
+🧚‍♂️ man fairy; U+1F9DA U+200D U+2642 U+FE0F
+🧚‍♀️ woman fairy; U+1F9DA U+200D U+2640 U+FE0F
+🧛 vampire; U+1F9DB
+🧛‍♂️ man vampire; U+1F9DB U+200D U+2642 U+FE0F
+🧛‍♀️ woman vampire; U+1F9DB U+200D U+2640 U+FE0F
+🧜 merperson; U+1F9DC
+🧜‍♂️ merman; U+1F9DC U+200D U+2642 U+FE0F
+🧜‍♀️ mermaid; U+1F9DC U+200D U+2640 U+FE0F
+🧝 elf; U+1F9DD
+🧝‍♂️ man elf; U+1F9DD U+200D U+2642 U+FE0F
+🧝‍♀️ woman elf; U+1F9DD U+200D U+2640 U+FE0F
+🧞 genie; U+1F9DE
+🧞‍♂️ man genie; U+1F9DE U+200D U+2642 U+FE0F
+🧞‍♀️ woman genie; U+1F9DE U+200D U+2640 U+FE0F
+🧟 zombie; U+1F9DF
+🧟‍♂️ man zombie; U+1F9DF U+200D U+2642 U+FE0F
+🧟‍♀️ woman zombie; U+1F9DF U+200D U+2640 U+FE0F
+💆 person getting massage; U+1F486
+💆‍♂️ man getting massage; U+1F486 U+200D U+2642 U+FE0F
+💆‍♀️ woman getting massage; U+1F486 U+200D U+2640 U+FE0F
+💇 person getting haircut; U+1F487
+💇‍♂️ man getting haircut; U+1F487 U+200D U+2642 U+FE0F
+💇‍♀️ woman getting haircut; U+1F487 U+200D U+2640 U+FE0F
+🚶 person walking; U+1F6B6
+🚶‍♂️ man walking; U+1F6B6 U+200D U+2642 U+FE0F
+🚶‍♀️ woman walking; U+1F6B6 U+200D U+2640 U+FE0F
+🏃 person running; U+1F3C3
+🏃‍♂️ man running; U+1F3C3 U+200D U+2642 U+FE0F
+🏃‍♀️ woman running; U+1F3C3 U+200D U+2640 U+FE0F
+💃 woman dancing; U+1F483
+🕺 man dancing; U+1F57A
+🕴 man in suit levitating; U+1F574
+👯 people with bunny ears; U+1F46F
+👯‍♂️ men with bunny ears; U+1F46F U+200D U+2642 U+FE0F
+👯‍♀️ women with bunny ears; U+1F46F U+200D U+2640 U+FE0F
+🧖 person in steamy room; U+1F9D6
+🧖‍♂️ man in steamy room; U+1F9D6 U+200D U+2642 U+FE0F
+🧖‍♀️ woman in steamy room; U+1F9D6 U+200D U+2640 U+FE0F
+🧗 person climbing; U+1F9D7
+🧗‍♂️ man climbing; U+1F9D7 U+200D U+2642 U+FE0F
+🧗‍♀️ woman climbing; U+1F9D7 U+200D U+2640 U+FE0F
+🤺 person fencing; U+1F93A
+🏇 horse racing; U+1F3C7
+⛷ skier; U+26F7
+🏂 snowboarder; U+1F3C2
+🏌 person golfing; U+1F3CC
+🏌️‍♂️ man golfing; U+1F3CC U+FE0F U+200D U+2642 U+FE0F
+🏌️‍♀️ woman golfing; U+1F3CC U+FE0F U+200D U+2640 U+FE0F
+🏄 person surfing; U+1F3C4
+🏄‍♂️ man surfing; U+1F3C4 U+200D U+2642 U+FE0F
+🏄‍♀️ woman surfing; U+1F3C4 U+200D U+2640 U+FE0F
+🚣 person rowing boat; U+1F6A3
+🚣‍♂️ man rowing boat; U+1F6A3 U+200D U+2642 U+FE0F
+🚣‍♀️ woman rowing boat; U+1F6A3 U+200D U+2640 U+FE0F
+🏊 person swimming; U+1F3CA
+🏊‍♂️ man swimming; U+1F3CA U+200D U+2642 U+FE0F
+🏊‍♀️ woman swimming; U+1F3CA U+200D U+2640 U+FE0F
+⛹ person bouncing ball; U+26F9
+⛹️‍♂️ man bouncing ball; U+26F9 U+FE0F U+200D U+2642 U+FE0F
+⛹️‍♀️ woman bouncing ball; U+26F9 U+FE0F U+200D U+2640 U+FE0F
+🏋 person lifting weights; U+1F3CB
+🏋️‍♂️ man lifting weights; U+1F3CB U+FE0F U+200D U+2642 U+FE0F
+🏋️‍♀️ woman lifting weights; U+1F3CB U+FE0F U+200D U+2640 U+FE0F
+🚴 person biking; U+1F6B4
+🚴‍♂️ man biking; U+1F6B4 U+200D U+2642 U+FE0F
+🚴‍♀️ woman biking; U+1F6B4 U+200D U+2640 U+FE0F
+🚵 person mountain biking; U+1F6B5
+🚵‍♂️ man mountain biking; U+1F6B5 U+200D U+2642 U+FE0F
+🚵‍♀️ woman mountain biking; U+1F6B5 U+200D U+2640 U+FE0F
+🤸 person cartwheeling; U+1F938
+🤸‍♂️ man cartwheeling; U+1F938 U+200D U+2642 U+FE0F
+🤸‍♀️ woman cartwheeling; U+1F938 U+200D U+2640 U+FE0F
+🤼 people wrestling; U+1F93C
+🤼‍♂️ men wrestling; U+1F93C U+200D U+2642 U+FE0F
+🤼‍♀️ women wrestling; U+1F93C U+200D U+2640 U+FE0F
+🤽 person playing water polo; U+1F93D
+🤽‍♂️ man playing water polo; U+1F93D U+200D U+2642 U+FE0F
+🤽‍♀️ woman playing water polo; U+1F93D U+200D U+2640 U+FE0F
+🤾 person playing handball; U+1F93E
+🤾‍♂️ man playing handball; U+1F93E U+200D U+2642 U+FE0F
+🤾‍♀️ woman playing handball; U+1F93E U+200D U+2640 U+FE0F
+🤹 person juggling; U+1F939
+🤹‍♂️ man juggling; U+1F939 U+200D U+2642 U+FE0F
+🤹‍♀️ woman juggling; U+1F939 U+200D U+2640 U+FE0F
+🧘 person in lotus position; U+1F9D8
+🧘‍♂️ man in lotus position; U+1F9D8 U+200D U+2642 U+FE0F
+🧘‍♀️ woman in lotus position; U+1F9D8 U+200D U+2640 U+FE0F
+🛀 person taking bath; U+1F6C0
+🛌 person in bed; U+1F6CC
+👭 women holding hands; U+1F46D
+👫 woman and man holding hands; U+1F46B
+👬 men holding hands; U+1F46C
+💏 kiss; U+1F48F
+👩‍❤️‍💋‍👨 kiss: woman, man; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468
+👨‍❤️‍💋‍👨 kiss: man, man; U+1F468 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F468
+👩‍❤️‍💋‍👩 kiss: woman, woman; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F48B U+200D U+1F469
+💑 couple with heart; U+1F491
+👩‍❤️‍👨 couple with heart: woman, man; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F468
+👨‍❤️‍👨 couple with heart: man, man; U+1F468 U+200D U+2764 U+FE0F U+200D U+1F468
+👩‍❤️‍👩 couple with heart: woman, woman; U+1F469 U+200D U+2764 U+FE0F U+200D U+1F469
+👪 family; U+1F46A
+👨‍👩‍👦 family: man, woman, boy; U+1F468 U+200D U+1F469 U+200D U+1F466
+👨‍👩‍👧 family: man, woman, girl; U+1F468 U+200D U+1F469 U+200D U+1F467
+👨‍👩‍👧‍👦 family: man, woman, girl, boy; U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
+👨‍👩‍👦‍👦 family: man, woman, boy, boy; U+1F468 U+200D U+1F469 U+200D U+1F466 U+200D U+1F466
+👨‍👩‍👧‍👧 family: man, woman, girl, girl; U+1F468 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
+👨‍👨‍👦 family: man, man, boy; U+1F468 U+200D U+1F468 U+200D U+1F466
+👨‍👨‍👧 family: man, man, girl; U+1F468 U+200D U+1F468 U+200D U+1F467
+👨‍👨‍👧‍👦 family: man, man, girl, boy; U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466
+👨‍👨‍👦‍👦 family: man, man, boy, boy; U+1F468 U+200D U+1F468 U+200D U+1F466 U+200D U+1F466
+👨‍👨‍👧‍👧 family: man, man, girl, girl; U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F467
+👩‍👩‍👦 family: woman, woman, boy; U+1F469 U+200D U+1F469 U+200D U+1F466
+👩‍👩‍👧 family: woman, woman, girl; U+1F469 U+200D U+1F469 U+200D U+1F467
+👩‍👩‍👧‍👦 family: woman, woman, girl, boy; U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
+👩‍👩‍👦‍👦 family: woman, woman, boy, boy; U+1F469 U+200D U+1F469 U+200D U+1F466 U+200D U+1F466
+👩‍👩‍👧‍👧 family: woman, woman, girl, girl; U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
+👨‍👦 family: man, boy; U+1F468 U+200D U+1F466
+👨‍👦‍👦 family: man, boy, boy; U+1F468 U+200D U+1F466 U+200D U+1F466
+👨‍👧 family: man, girl; U+1F468 U+200D U+1F467
+👨‍👧‍👦 family: man, girl, boy; U+1F468 U+200D U+1F467 U+200D U+1F466
+👨‍👧‍👧 family: man, girl, girl; U+1F468 U+200D U+1F467 U+200D U+1F467
+👩‍👦 family: woman, boy; U+1F469 U+200D U+1F466
+👩‍👦‍👦 family: woman, boy, boy; U+1F469 U+200D U+1F466 U+200D U+1F466
+👩‍👧 family: woman, girl; U+1F469 U+200D U+1F467
+👩‍👧‍👦 family: woman, girl, boy; U+1F469 U+200D U+1F467 U+200D U+1F466
+👩‍👧‍👧 family: woman, girl, girl; U+1F469 U+200D U+1F467 U+200D U+1F467
+🗣 speaking head; U+1F5E3
+👤 bust in silhouette; U+1F464
+👥 busts in silhouette; U+1F465
+👣 footprints; U+1F463
+🦰 red hair; U+1F9B0
+🦱 curly hair; U+1F9B1
+🦳 white hair; U+1F9B3
+🦲 bald; U+1F9B2
+🐵 monkey face; U+1F435
+🐒 monkey; U+1F412
+🦍 gorilla; U+1F98D
+🐶 dog face; U+1F436
+🐕 dog; U+1F415
+🐩 poodle; U+1F429
+🐺 wolf face; U+1F43A
+🦊 fox face; U+1F98A
+🦝 raccoon; U+1F99D
+🐱 cat face; U+1F431
+🐈 cat; U+1F408
+🦁 lion face; U+1F981
+🐯 tiger face; U+1F42F
+🐅 tiger; U+1F405
+🐆 leopard; U+1F406
+🐴 horse face; U+1F434
+🐎 horse; U+1F40E
+🦄 unicorn face; U+1F984
+🦓 zebra; U+1F993
+🦌 deer; U+1F98C
+🐮 cow face; U+1F42E
+🐂 ox; U+1F402
+🐃 water buffalo; U+1F403
+🐄 cow; U+1F404
+🐷 pig face; U+1F437
+🐖 pig; U+1F416
+🐗 boar; U+1F417
+🐽 pig nose; U+1F43D
+🐏 ram; U+1F40F
+🐑 ewe; U+1F411
+🐐 goat; U+1F410
+🐪 camel; U+1F42A
+🐫 two-hump camel; U+1F42B
+🦙 llama; U+1F999
+🦒 giraffe; U+1F992
+🐘 elephant; U+1F418
+🦏 rhinoceros; U+1F98F
+🦛 hippopotamus; U+1F99B
+🐭 mouse face; U+1F42D
+🐁 mouse; U+1F401
+🐀 rat; U+1F400
+🐹 hamster face; U+1F439
+🐰 rabbit face; U+1F430
+🐇 rabbit; U+1F407
+🐿 chipmunk; U+1F43F
+🦔 hedgehog; U+1F994
+🦇 bat; U+1F987
+🐻 bear face; U+1F43B
+🐨 koala; U+1F428
+🐼 panda face; U+1F43C
+🦘 kangaroo; U+1F998
+🦡 badger; U+1F9A1
+🐾 paw prints; U+1F43E
+🦃 turkey; U+1F983
+🐔 chicken; U+1F414
+🐓 rooster; U+1F413
+🐣 hatching chick; U+1F423
+🐤 baby chick; U+1F424
+🐥 front-facing baby chick; U+1F425
+🐦 bird; U+1F426
+🐧 penguin; U+1F427
+🕊 dove; U+1F54A
+🦅 eagle; U+1F985
+🦆 duck; U+1F986
+🦢 swan; U+1F9A2
+🦉 owl; U+1F989
+🦚 peacock; U+1F99A
+🦜 parrot; U+1F99C
+🐸 frog face; U+1F438
+🐊 crocodile; U+1F40A
+🐢 turtle; U+1F422
+🦎 lizard; U+1F98E
+🐍 snake; U+1F40D
+🐲 dragon face; U+1F432
+🐉 dragon; U+1F409
+🦕 sauropod; U+1F995
+🦖 T-Rex; U+1F996
+🐳 spouting whale; U+1F433
+🐋 whale; U+1F40B
+🐬 dolphin; U+1F42C
+🐟 fish; U+1F41F
+🐠 tropical fish; U+1F420
+🐡 blowfish; U+1F421
+🦈 shark; U+1F988
+🐙 octopus; U+1F419
+🐚 spiral shell; U+1F41A
+🐌 snail; U+1F40C
+🦋 butterfly; U+1F98B
+🐛 bug; U+1F41B
+🐜 ant; U+1F41C
+🐝 honeybee; U+1F41D
+🐞 lady beetle; U+1F41E
+🦗 cricket; U+1F997
+🕷 spider; U+1F577
+🕸 spider web; U+1F578
+🦂 scorpion; U+1F982
+🦟 mosquito; U+1F99F
+🦠 microbe; U+1F9A0
+💐 bouquet; U+1F490
+🌸 cherry blossom; U+1F338
+💮 white flower; U+1F4AE
+🏵 rosette; U+1F3F5
+🌹 rose; U+1F339
+🥀 wilted flower; U+1F940
+🌺 hibiscus; U+1F33A
+🌻 sunflower; U+1F33B
+🌼 blossom; U+1F33C
+🌷 tulip; U+1F337
+🌱 seedling; U+1F331
+🌲 evergreen tree; U+1F332
+🌳 deciduous tree; U+1F333
+🌴 palm tree; U+1F334
+🌵 cactus; U+1F335
+🌾 sheaf of rice; U+1F33E
+🌿 herb; U+1F33F
+☘ shamrock; U+2618
+🍀 four leaf clover; U+1F340
+🍁 maple leaf; U+1F341
+🍂 fallen leaf; U+1F342
+🍃 leaf fluttering in wind; U+1F343
+🍇 grapes; U+1F347
+🍈 melon; U+1F348
+🍉 watermelon; U+1F349
+🍊 tangerine; U+1F34A
+🍋 lemon; U+1F34B
+🍌 banana; U+1F34C
+🍍 pineapple; U+1F34D
+🥭 mango; U+1F96D
+🍎 red apple; U+1F34E
+🍏 green apple; U+1F34F
+🍐 pear; U+1F350
+🍑 peach; U+1F351
+🍒 cherries; U+1F352
+🍓 strawberry; U+1F353
+🥝 kiwi fruit; U+1F95D
+🍅 tomato; U+1F345
+🥥 coconut; U+1F965
+🥑 avocado; U+1F951
+🍆 eggplant; U+1F346
+🥔 potato; U+1F954
+🥕 carrot; U+1F955
+🌽 ear of corn; U+1F33D
+🌶 hot pepper; U+1F336
+🥒 cucumber; U+1F952
+🥬 leafy green; U+1F96C
+🥦 broccoli; U+1F966
+🍄 mushroom; U+1F344
+🥜 peanuts; U+1F95C
+🌰 chestnut; U+1F330
+🍞 bread; U+1F35E
+🥐 croissant; U+1F950
+🥖 baguette bread; U+1F956
+🥨 pretzel; U+1F968
+🥯 bagel; U+1F96F
+🥞 pancakes; U+1F95E
+🧀 cheese wedge; U+1F9C0
+🍖 meat on bone; U+1F356
+🍗 poultry leg; U+1F357
+🥩 cut of meat; U+1F969
+🥓 bacon; U+1F953
+🍔 hamburger; U+1F354
+🍟 french fries; U+1F35F
+🍕 pizza; U+1F355
+🌭 hot dog; U+1F32D
+🥪 sandwich; U+1F96A
+🌮 taco; U+1F32E
+🌯 burrito; U+1F32F
+🥙 stuffed flatbread; U+1F959
+🥚 egg; U+1F95A
+🍳 cooking; U+1F373
+🥘 shallow pan of food; U+1F958
+🍲 pot of food; U+1F372
+🥣 bowl with spoon; U+1F963
+🥗 green salad; U+1F957
+🍿 popcorn; U+1F37F
+🧂 salt; U+1F9C2
+🥫 canned food; U+1F96B
+🍱 bento box; U+1F371
+🍘 rice cracker; U+1F358
+🍙 rice ball; U+1F359
+🍚 cooked rice; U+1F35A
+🍛 curry rice; U+1F35B
+🍜 steaming bowl; U+1F35C
+🍝 spaghetti; U+1F35D
+🍠 roasted sweet potato; U+1F360
+🍢 oden; U+1F362
+🍣 sushi; U+1F363
+🍤 fried shrimp; U+1F364
+🍥 fish cake with swirl; U+1F365
+🥮 moon cake; U+1F96E
+🍡 dango; U+1F361
+🥟 dumpling; U+1F95F
+🥠 fortune cookie; U+1F960
+🥡 takeout box; U+1F961
+🦀 crab; U+1F980
+🦞 lobster; U+1F99E
+🦐 shrimp; U+1F990
+🦑 squid; U+1F991
+🍦 soft ice cream; U+1F366
+🍧 shaved ice; U+1F367
+🍨 ice cream; U+1F368
+🍩 doughnut; U+1F369
+🍪 cookie; U+1F36A
+🎂 birthday cake; U+1F382
+🍰 shortcake; U+1F370
+🧁 cupcake; U+1F9C1
+🥧 pie; U+1F967
+🍫 chocolate bar; U+1F36B
+🍬 candy; U+1F36C
+🍭 lollipop; U+1F36D
+🍮 custard; U+1F36E
+🍯 honey pot; U+1F36F
+🍼 baby bottle; U+1F37C
+🥛 glass of milk; U+1F95B
+☕ hot beverage; U+2615
+🍵 teacup without handle; U+1F375
+🍶 sake; U+1F376
+🍾 bottle with popping cork; U+1F37E
+🍷 wine glass; U+1F377
+🍸 cocktail glass; U+1F378
+🍹 tropical drink; U+1F379
+🍺 beer mug; U+1F37A
+🍻 clinking beer mugs; U+1F37B
+🥂 clinking glasses; U+1F942
+🥃 tumbler glass; U+1F943
+🥤 cup with straw; U+1F964
+🥢 chopsticks; U+1F962
+🍽 fork and knife with plate; U+1F37D
+🍴 fork and knife; U+1F374
+🥄 spoon; U+1F944
+🔪 kitchen knife; U+1F52A
+🏺 amphora; U+1F3FA
+🌍 globe showing Europe-Africa; U+1F30D
+🌎 globe showing Americas; U+1F30E
+🌏 globe showing Asia-Australia; U+1F30F
+🌐 globe with meridians; U+1F310
+🗺 world map; U+1F5FA
+🗾 map of Japan; U+1F5FE
+🧭 compass; U+1F9ED
+🏔 snow-capped mountain; U+1F3D4
+⛰ mountain; U+26F0
+🌋 volcano; U+1F30B
+🗻 mount fuji; U+1F5FB
+🏕 camping; U+1F3D5
+🏖 beach with umbrella; U+1F3D6
+🏜 desert; U+1F3DC
+🏝 desert island; U+1F3DD
+🏞 national park; U+1F3DE
+🏟 stadium; U+1F3DF
+🏛 classical building; U+1F3DB
+🏗 building construction; U+1F3D7
+🧱 brick; U+1F9F1
+🏘 houses; U+1F3D8
+🏚 derelict house; U+1F3DA
+🏠 house; U+1F3E0
+🏡 house with garden; U+1F3E1
+🏢 office building; U+1F3E2
+🏣 Japanese post office; U+1F3E3
+🏤 post office; U+1F3E4
+🏥 hospital; U+1F3E5
+🏦 bank; U+1F3E6
+🏨 hotel; U+1F3E8
+🏩 love hotel; U+1F3E9
+🏪 convenience store; U+1F3EA
+🏫 school; U+1F3EB
+🏬 department store; U+1F3EC
+🏭 factory; U+1F3ED
+🏯 Japanese castle; U+1F3EF
+🏰 castle; U+1F3F0
+💒 wedding; U+1F492
+🗼 Tokyo tower; U+1F5FC
+🗽 Statue of Liberty; U+1F5FD
+⛪ church; U+26EA
+🕌 mosque; U+1F54C
+🕍 synagogue; U+1F54D
+⛩ shinto shrine; U+26E9
+🕋 kaaba; U+1F54B
+⛲ fountain; U+26F2
+⛺ tent; U+26FA
+🌁 foggy; U+1F301
+🌃 night with stars; U+1F303
+🏙 cityscape; U+1F3D9
+🌄 sunrise over mountains; U+1F304
+🌅 sunrise; U+1F305
+🌆 cityscape at dusk; U+1F306
+🌇 sunset; U+1F307
+🌉 bridge at night; U+1F309
+♨ hot springs; U+2668
+🌌 milky way; U+1F30C
+🎠 carousel horse; U+1F3A0
+🎡 ferris wheel; U+1F3A1
+🎢 roller coaster; U+1F3A2
+💈 barber pole; U+1F488
+🎪 circus tent; U+1F3AA
+🚂 locomotive; U+1F682
+🚃 railway car; U+1F683
+🚄 high-speed train; U+1F684
+🚅 bullet train; U+1F685
+🚆 train; U+1F686
+🚇 metro; U+1F687
+🚈 light rail; U+1F688
+🚉 station; U+1F689
+🚊 tram; U+1F68A
+🚝 monorail; U+1F69D
+🚞 mountain railway; U+1F69E
+🚋 tram car; U+1F68B
+🚌 bus; U+1F68C
+🚍 oncoming bus; U+1F68D
+🚎 trolleybus; U+1F68E
+🚐 minibus; U+1F690
+🚑 ambulance; U+1F691
+🚒 fire engine; U+1F692
+🚓 police car; U+1F693
+🚔 oncoming police car; U+1F694
+🚕 taxi; U+1F695
+🚖 oncoming taxi; U+1F696
+🚗 automobile; U+1F697
+🚘 oncoming automobile; U+1F698
+🚙 sport utility vehicle; U+1F699
+🚚 delivery truck; U+1F69A
+🚛 articulated lorry; U+1F69B
+🚜 tractor; U+1F69C
+🏎 racing car; U+1F3CE
+🏍 motorcycle; U+1F3CD
+🛵 motor scooter; U+1F6F5
+🚲 bicycle; U+1F6B2
+🛴 kick scooter; U+1F6F4
+🛹 skateboard; U+1F6F9
+🚏 bus stop; U+1F68F
+🛣 motorway; U+1F6E3
+🛤 railway track; U+1F6E4
+🛢 oil drum; U+1F6E2
+⛽ fuel pump; U+26FD
+🚨 police car light; U+1F6A8
+🚥 horizontal traffic light; U+1F6A5
+🚦 vertical traffic light; U+1F6A6
+🛑 stop sign; U+1F6D1
+🚧 construction; U+1F6A7
+⚓ anchor; U+2693
+⛵ sailboat; U+26F5
+🛶 canoe; U+1F6F6
+🚤 speedboat; U+1F6A4
+🛳 passenger ship; U+1F6F3
+⛴ ferry; U+26F4
+🛥 motor boat; U+1F6E5
+🚢 ship; U+1F6A2
+✈ airplane; U+2708
+🛩 small airplane; U+1F6E9
+🛫 airplane departure; U+1F6EB
+🛬 airplane arrival; U+1F6EC
+💺 seat; U+1F4BA
+🚁 helicopter; U+1F681
+🚟 suspension railway; U+1F69F
+🚠 mountain cableway; U+1F6A0
+🚡 aerial tramway; U+1F6A1
+🛰 satellite; U+1F6F0
+🚀 rocket; U+1F680
+🛸 flying saucer; U+1F6F8
+🛎 bellhop bell; U+1F6CE
+🧳 luggage; U+1F9F3
+⌛ hourglass done; U+231B
+⏳ hourglass not done; U+23F3
+⌚ watch; U+231A
+⏰ alarm clock; U+23F0
+⏱ stopwatch; U+23F1
+⏲ timer clock; U+23F2
+🕰 mantelpiece clock; U+1F570
+🕛 twelve o’clock; U+1F55B
+🕧 twelve-thirty; U+1F567
+🕐 one o’clock; U+1F550
+🕜 one-thirty; U+1F55C
+🕑 two o’clock; U+1F551
+🕝 two-thirty; U+1F55D
+🕒 three o’clock; U+1F552
+🕞 three-thirty; U+1F55E
+🕓 four o’clock; U+1F553
+🕟 four-thirty; U+1F55F
+🕔 five o’clock; U+1F554
+🕠 five-thirty; U+1F560
+🕕 six o’clock; U+1F555
+🕡 six-thirty; U+1F561
+🕖 seven o’clock; U+1F556
+🕢 seven-thirty; U+1F562
+🕗 eight o’clock; U+1F557
+🕣 eight-thirty; U+1F563
+🕘 nine o’clock; U+1F558
+🕤 nine-thirty; U+1F564
+🕙 ten o’clock; U+1F559
+🕥 ten-thirty; U+1F565
+🕚 eleven o’clock; U+1F55A
+🕦 eleven-thirty; U+1F566
+🌑 new moon; U+1F311
+🌒 waxing crescent moon; U+1F312
+🌓 first quarter moon; U+1F313
+🌔 waxing gibbous moon; U+1F314
+🌕 full moon; U+1F315
+🌖 waning gibbous moon; U+1F316
+🌗 last quarter moon; U+1F317
+🌘 waning crescent moon; U+1F318
+🌙 crescent moon; U+1F319
+🌚 new moon face; U+1F31A
+🌛 first quarter moon face; U+1F31B
+🌜 last quarter moon face; U+1F31C
+🌡 thermometer; U+1F321
+☀ sun; U+2600
+🌝 full moon face; U+1F31D
+🌞 sun with face; U+1F31E
+⭐ star; U+2B50
+🌟 glowing star; U+1F31F
+🌠 shooting star; U+1F320
+☁ cloud; U+2601
+⛅ sun behind cloud; U+26C5
+⛈ cloud with lightning and rain; U+26C8
+🌤 sun behind small cloud; U+1F324
+🌥 sun behind large cloud; U+1F325
+🌦 sun behind rain cloud; U+1F326
+🌧 cloud with rain; U+1F327
+🌨 cloud with snow; U+1F328
+🌩 cloud with lightning; U+1F329
+🌪 tornado; U+1F32A
+🌫 fog; U+1F32B
+🌬 wind face; U+1F32C
+🌀 cyclone; U+1F300
+🌈 rainbow; U+1F308
+🌂 closed umbrella; U+1F302
+☂ umbrella; U+2602
+☔ umbrella with rain drops; U+2614
+⛱ umbrella on ground; U+26F1
+⚡ high voltage; U+26A1
+❄ snowflake; U+2744
+☃ snowman; U+2603
+⛄ snowman without snow; U+26C4
+☄ comet; U+2604
+🔥 fire; U+1F525
+💧 droplet; U+1F4A7
+🌊 water wave; U+1F30A
+🎃 jack-o-lantern; U+1F383
+🎄 Christmas tree; U+1F384
+🎆 fireworks; U+1F386
+🎇 sparkler; U+1F387
+🧨 firecracker; U+1F9E8
+✨ sparkles; U+2728
+🎈 balloon; U+1F388
+🎉 party popper; U+1F389
+🎊 confetti ball; U+1F38A
+🎋 tanabata tree; U+1F38B
+🎍 pine decoration; U+1F38D
+🎎 Japanese dolls; U+1F38E
+🎏 carp streamer; U+1F38F
+🎐 wind chime; U+1F390
+🎑 moon viewing ceremony; U+1F391
+🧧 red envelope; U+1F9E7
+🎀 ribbon; U+1F380
+🎁 wrapped gift; U+1F381
+🎗 reminder ribbon; U+1F397
+🎟 admission tickets; U+1F39F
+🎫 ticket; U+1F3AB
+🎖 military medal; U+1F396
+🏆 trophy; U+1F3C6
+🏅 sports medal; U+1F3C5
+1st place medal; U+1F947 🥇
+2nd place medal; U+1F948 🥈
+3rd place medal; U+1F949 🥉
+⚽ soccer ball; U+26BD
+⚾ baseball; U+26BE
+🥎 softball; U+1F94E
+🏀 basketball; U+1F3C0
+🏐 volleyball; U+1F3D0
+🏈 american football; U+1F3C8
+🏉 rugby football; U+1F3C9
+🎾 tennis; U+1F3BE
+🥏 flying disc; U+1F94F
+🎳 bowling; U+1F3B3
+🏏 cricket game; U+1F3CF
+🏑 field hockey; U+1F3D1
+🏒 ice hockey; U+1F3D2
+🥍 lacrosse; U+1F94D
+🏓 ping pong; U+1F3D3
+🏸 badminton; U+1F3F8
+🥊 boxing glove; U+1F94A
+🥋 martial arts uniform; U+1F94B
+🥅 goal net; U+1F945
+⛳ flag in hole; U+26F3
+⛸ ice skate; U+26F8
+🎣 fishing pole; U+1F3A3
+🎽 running shirt; U+1F3BD
+🎿 skis; U+1F3BF
+🛷 sled; U+1F6F7
+🥌 curling stone; U+1F94C
+🎯 direct hit; U+1F3AF
+🎱 pool 8 ball; U+1F3B1
+🔮 crystal ball; U+1F52E
+🧿 nazar amulet; U+1F9FF
+🎮 video game; U+1F3AE
+🕹 joystick; U+1F579
+🎰 slot machine; U+1F3B0
+🎲 game die; U+1F3B2
+🧩 jigsaw; U+1F9E9
+🧸 teddy bear; U+1F9F8
+♠ spade suit; U+2660
+♥ heart suit; U+2665
+♦ diamond suit; U+2666
+♣ club suit; U+2663
+♟ chess pawn; U+265F
+🃏 joker; U+1F0CF
+🀄 mahjong red dragon; U+1F004
+🎴 flower playing cards; U+1F3B4
+🎭 performing arts; U+1F3AD
+🖼 framed picture; U+1F5BC
+🎨 artist palette; U+1F3A8
+🧵 thread; U+1F9F5
+🧶 yarn; U+1F9F6
+👓 glasses; U+1F453
+🕶 sunglasses; U+1F576
+🥽 goggles; U+1F97D
+🥼 lab coat; U+1F97C
+👔 necktie; U+1F454
+👕 t-shirt; U+1F455
+👖 jeans; U+1F456
+🧣 scarf; U+1F9E3
+🧤 gloves; U+1F9E4
+🧥 coat; U+1F9E5
+🧦 socks; U+1F9E6
+👗 dress; U+1F457
+👘 kimono; U+1F458
+👙 bikini; U+1F459
+👚 woman’s clothes; U+1F45A
+👛 purse; U+1F45B
+👜 handbag; U+1F45C
+👝 clutch bag; U+1F45D
+🛍 shopping bags; U+1F6CD
+🎒 backpack; U+1F392
+👞 man’s shoe; U+1F45E
+👟 running shoe; U+1F45F
+🥾 hiking boot; U+1F97E
+🥿 flat shoe; U+1F97F
+👠 high-heeled shoe; U+1F460
+👡 woman’s sandal; U+1F461
+👢 woman’s boot; U+1F462
+👑 crown; U+1F451
+👒 woman’s hat; U+1F452
+🎩 top hat; U+1F3A9
+🎓 graduation cap; U+1F393
+🧢 billed cap; U+1F9E2
+⛑ rescue worker’s helmet; U+26D1
+📿 prayer beads; U+1F4FF
+💄 lipstick; U+1F484
+💍 ring; U+1F48D
+💎 gem stone; U+1F48E
+🔇 muted speaker; U+1F507
+🔈 speaker low volume; U+1F508
+🔉 speaker medium volume; U+1F509
+🔊 speaker high volume; U+1F50A
+📢 loudspeaker; U+1F4E2
+📣 megaphone; U+1F4E3
+📯 postal horn; U+1F4EF
+🔔 bell; U+1F514
+🔕 bell with slash; U+1F515
+🎼 musical score; U+1F3BC
+🎵 musical note; U+1F3B5
+🎶 musical notes; U+1F3B6
+🎙 studio microphone; U+1F399
+🎚 level slider; U+1F39A
+🎛 control knobs; U+1F39B
+🎤 microphone; U+1F3A4
+🎧 headphone; U+1F3A7
+📻 radio; U+1F4FB
+🎷 saxophone; U+1F3B7
+🎸 guitar; U+1F3B8
+🎹 musical keyboard; U+1F3B9
+🎺 trumpet; U+1F3BA
+🎻 violin; U+1F3BB
+🥁 drum; U+1F941
+📱 mobile phone; U+1F4F1
+📲 mobile phone with arrow; U+1F4F2
+☎ telephone; U+260E
+📞 telephone receiver; U+1F4DE
+📟 pager; U+1F4DF
+📠 fax machine; U+1F4E0
+🔋 battery; U+1F50B
+🔌 electric plug; U+1F50C
+💻 laptop computer; U+1F4BB
+🖥 desktop computer; U+1F5A5
+🖨 printer; U+1F5A8
+⌨ keyboard; U+2328
+🖱 computer mouse; U+1F5B1
+🖲 trackball; U+1F5B2
+💽 computer disk; U+1F4BD
+💾 floppy disk; U+1F4BE
+💿 optical disk; U+1F4BF
+📀 dvd; U+1F4C0
+🧮 abacus; U+1F9EE
+🎥 movie camera; U+1F3A5
+🎞 film frames; U+1F39E
+📽 film projector; U+1F4FD
+🎬 clapper board; U+1F3AC
+📺 television; U+1F4FA
+📷 camera; U+1F4F7
+📸 camera with flash; U+1F4F8
+📹 video camera; U+1F4F9
+📼 videocassette; U+1F4FC
+🔍 magnifying glass tilted left; U+1F50D
+🔎 magnifying glass tilted right; U+1F50E
+🕯 candle; U+1F56F
+💡 light bulb; U+1F4A1
+🔦 flashlight; U+1F526
+🏮 red paper lantern; U+1F3EE
+📔 notebook with decorative cover; U+1F4D4
+📕 closed book; U+1F4D5
+📖 open book; U+1F4D6
+📗 green book; U+1F4D7
+📘 blue book; U+1F4D8
+📙 orange book; U+1F4D9
+📚 books; U+1F4DA
+📓 notebook; U+1F4D3
+📒 ledger; U+1F4D2
+📃 page with curl; U+1F4C3
+📜 scroll; U+1F4DC
+📄 page facing up; U+1F4C4
+📰 newspaper; U+1F4F0
+🗞 rolled-up newspaper; U+1F5DE
+📑 bookmark tabs; U+1F4D1
+🔖 bookmark; U+1F516
+🏷 label; U+1F3F7
+💰 money bag; U+1F4B0
+💴 yen banknote; U+1F4B4
+💵 dollar banknote; U+1F4B5
+💶 euro banknote; U+1F4B6
+💷 pound banknote; U+1F4B7
+💸 money with wings; U+1F4B8
+💳 credit card; U+1F4B3
+🧾 receipt; U+1F9FE
+💹 chart increasing with yen; U+1F4B9
+💱 currency exchange; U+1F4B1
+💲 heavy dollar sign; U+1F4B2
+✉ envelope; U+2709
+📧 e-mail; U+1F4E7
+📨 incoming envelope; U+1F4E8
+📩 envelope with arrow; U+1F4E9
+📤 outbox tray; U+1F4E4
+📥 inbox tray; U+1F4E5
+📦 package; U+1F4E6
+📫 closed mailbox with raised flag; U+1F4EB
+📪 closed mailbox with lowered flag; U+1F4EA
+📬 open mailbox with raised flag; U+1F4EC
+📭 open mailbox with lowered flag; U+1F4ED
+📮 postbox; U+1F4EE
+🗳 ballot box with ballot; U+1F5F3
+✏ pencil; U+270F
+✒ black nib; U+2712
+🖋 fountain pen; U+1F58B
+🖊 pen; U+1F58A
+🖌 paintbrush; U+1F58C
+🖍 crayon; U+1F58D
+📝 memo; U+1F4DD
+💼 briefcase; U+1F4BC
+📁 file folder; U+1F4C1
+📂 open file folder; U+1F4C2
+🗂 card index dividers; U+1F5C2
+📅 calendar; U+1F4C5
+📆 tear-off calendar; U+1F4C6
+🗒 spiral notepad; U+1F5D2
+🗓 spiral calendar; U+1F5D3
+📇 card index; U+1F4C7
+📈 chart increasing; U+1F4C8
+📉 chart decreasing; U+1F4C9
+📊 bar chart; U+1F4CA
+📋 clipboard; U+1F4CB
+📌 pushpin; U+1F4CC
+📍 round pushpin; U+1F4CD
+📎 paperclip; U+1F4CE
+🖇 linked paperclips; U+1F587
+📏 straight ruler; U+1F4CF
+📐 triangular ruler; U+1F4D0
+✂ scissors; U+2702
+🗃 card file box; U+1F5C3
+🗄 file cabinet; U+1F5C4
+🗑 wastebasket; U+1F5D1
+🔒 locked; U+1F512
+🔓 unlocked; U+1F513
+🔏 locked with pen; U+1F50F
+🔐 locked with key; U+1F510
+🔑 key; U+1F511
+🗝 old key; U+1F5DD
+🔨 hammer; U+1F528
+⛏ pick; U+26CF
+⚒ hammer and pick; U+2692
+🛠 hammer and wrench; U+1F6E0
+🗡 dagger; U+1F5E1
+⚔ crossed swords; U+2694
+🔫 pistol; U+1F52B
+🏹 bow and arrow; U+1F3F9
+🛡 shield; U+1F6E1
+🔧 wrench; U+1F527
+🔩 nut and bolt; U+1F529
+⚙ gear; U+2699
+🗜 clamp; U+1F5DC
+⚖ balance scale; U+2696
+🔗 link; U+1F517
+⛓ chains; U+26D3
+🧰 toolbox; U+1F9F0
+🧲 magnet; U+1F9F2
+⚗ alembic; U+2697
+🧪 test tube; U+1F9EA
+🧫 petri dish; U+1F9EB
+🧬 dna; U+1F9EC
+🔬 microscope; U+1F52C
+🔭 telescope; U+1F52D
+📡 satellite antenna; U+1F4E1
+💉 syringe; U+1F489
+💊 pill; U+1F48A
+🚪 door; U+1F6AA
+🛏 bed; U+1F6CF
+🛋 couch and lamp; U+1F6CB
+🚽 toilet; U+1F6BD
+🚿 shower; U+1F6BF
+🛁 bathtub; U+1F6C1
+🧴 lotion bottle; U+1F9F4
+🧷 safety pin; U+1F9F7
+🧹 broom; U+1F9F9
+🧺 basket; U+1F9FA
+🧻 roll of paper; U+1F9FB
+🧼 soap; U+1F9FC
+🧽 sponge; U+1F9FD
+🧯 fire extinguisher; U+1F9EF
+🛒 shopping cart; U+1F6D2
+🚬 cigarette; U+1F6AC
+⚰ coffin; U+26B0
+⚱ funeral urn; U+26B1
+🗿 moai; U+1F5FF
+🏧 ATM sign; U+1F3E7
+🚮 litter in bin sign; U+1F6AE
+🚰 potable water; U+1F6B0
+♿ wheelchair symbol; U+267F
+🚹 men’s room; U+1F6B9
+🚺 women’s room; U+1F6BA
+🚻 restroom; U+1F6BB
+🚼 baby symbol; U+1F6BC
+🚾 water closet; U+1F6BE
+🛂 passport control; U+1F6C2
+🛃 customs; U+1F6C3
+🛄 baggage claim; U+1F6C4
+🛅 left luggage; U+1F6C5
+⚠ warning; U+26A0
+🚸 children crossing; U+1F6B8
+⛔ no entry; U+26D4
+🚫 prohibited; U+1F6AB
+🚳 no bicycles; U+1F6B3
+🚭 no smoking; U+1F6AD
+🚯 no littering; U+1F6AF
+🚱 non-potable water; U+1F6B1
+🚷 no pedestrians; U+1F6B7
+📵 no mobile phones; U+1F4F5
+🔞 no one under eighteen; U+1F51E
+☢ radioactive; U+2622
+☣ biohazard; U+2623
+⬆ up arrow; U+2B06
+↗ up-right arrow; U+2197
+➡ right arrow; U+27A1
+↘ down-right arrow; U+2198
+⬇ down arrow; U+2B07
+↙ down-left arrow; U+2199
+⬅ left arrow; U+2B05
+↖ up-left arrow; U+2196
+↕ up-down arrow; U+2195
+↔ left-right arrow; U+2194
+↩ right arrow curving left; U+21A9
+↪ left arrow curving right; U+21AA
+⤴ right arrow curving up; U+2934
+⤵ right arrow curving down; U+2935
+🔃 clockwise vertical arrows; U+1F503
+🔄 counterclockwise arrows button; U+1F504
+🔙 BACK arrow; U+1F519
+🔚 END arrow; U+1F51A
+🔛 ON! arrow; U+1F51B
+🔜 SOON arrow; U+1F51C
+🔝 TOP arrow; U+1F51D
+🛐 place of worship; U+1F6D0
+⚛ atom symbol; U+269B
+🕉 om; U+1F549
+✡ star of David; U+2721
+☸ wheel of dharma; U+2638
+☯ yin yang; U+262F
+✝ latin cross; U+271D
+☦ orthodox cross; U+2626
+☪ star and crescent; U+262A
+☮ peace symbol; U+262E
+🕎 menorah; U+1F54E
+🔯 dotted six-pointed star; U+1F52F
+♈ Aries; U+2648
+♉ Taurus; U+2649
+♊ Gemini; U+264A
+♋ Cancer; U+264B
+♌ Leo; U+264C
+♍ Virgo; U+264D
+♎ Libra; U+264E
+♏ Scorpio; U+264F
+♐ Sagittarius; U+2650
+♑ Capricorn; U+2651
+♒ Aquarius; U+2652
+♓ Pisces; U+2653
+⛎ Ophiuchus; U+26CE
+🔀 shuffle tracks button; U+1F500
+🔁 repeat button; U+1F501
+🔂 repeat single button; U+1F502
+▶ play button; U+25B6
+⏩ fast-forward button; U+23E9
+⏭ next track button; U+23ED
+⏯ play or pause button; U+23EF
+◀ reverse button; U+25C0
+⏪ fast reverse button; U+23EA
+⏮ last track button; U+23EE
+🔼 upwards button; U+1F53C
+⏫ fast up button; U+23EB
+🔽 downwards button; U+1F53D
+⏬ fast down button; U+23EC
+⏸ pause button; U+23F8
+⏹ stop button; U+23F9
+⏺ record button; U+23FA
+⏏ eject button; U+23CF
+🎦 cinema; U+1F3A6
+🔅 dim button; U+1F505
+🔆 bright button; U+1F506
+📶 antenna bars; U+1F4F6
+📳 vibration mode; U+1F4F3
+📴 mobile phone off; U+1F4F4
+♀ female sign; U+2640
+♂ male sign; U+2642
+⚕ medical symbol; U+2695
+♾ infinity; U+267E
+♻ recycling symbol; U+267B
+⚜ fleur-de-lis; U+269C
+🔱 trident emblem; U+1F531
+📛 name badge; U+1F4DB
+🔰 Japanese symbol for beginner; U+1F530
+⭕ heavy large circle; U+2B55
+✅ white heavy check mark; U+2705
+☑ ballot box with check; U+2611
+✔ heavy check mark; U+2714
+✖ heavy multiplication x; U+2716
+❌ cross mark; U+274C
+❎ cross mark button; U+274E
+➕ heavy plus sign; U+2795
+➖ heavy minus sign; U+2796
+➗ heavy division sign; U+2797
+➰ curly loop; U+27B0
+➿ double curly loop; U+27BF
+〽 part alternation mark; U+303D
+✳ eight-spoked asterisk; U+2733
+✴ eight-pointed star; U+2734
+❇ sparkle; U+2747
+‼ double exclamation mark; U+203C
+⁉ exclamation question mark; U+2049
+❓ question mark; U+2753
+❔ white question mark; U+2754
+❕ white exclamation mark; U+2755
+❗ exclamation mark; U+2757
+〰 wavy dash; U+3030
+© copyright; U+00A9
+® registered; U+00AE
+™ trade mark; U+2122
+#️⃣ keycap: #; U+0023 U+FE0F U+20E3
+*️⃣ keycap: *; U+002A U+FE0F U+20E3
+0️⃣ keycap: 0; U+0030 U+FE0F U+20E3
+1️⃣ keycap: 1; U+0031 U+FE0F U+20E3
+2️⃣ keycap: 2; U+0032 U+FE0F U+20E3
+3️⃣ keycap: 3; U+0033 U+FE0F U+20E3
+4️⃣ keycap: 4; U+0034 U+FE0F U+20E3
+5️⃣ keycap: 5; U+0035 U+FE0F U+20E3
+6️⃣ keycap: 6; U+0036 U+FE0F U+20E3
+7️⃣ keycap: 7; U+0037 U+FE0F U+20E3
+8️⃣ keycap: 8; U+0038 U+FE0F U+20E3
+9️⃣ keycap: 9; U+0039 U+FE0F U+20E3
+🔟 keycap: 10; U+1F51F
+🔠 input latin uppercase; U+1F520
+🔡 input latin lowercase; U+1F521
+🔢 input numbers; U+1F522
+🔣 input symbols; U+1F523
+🔤 input latin letters; U+1F524
+🅰 A button (blood type); U+1F170
+🆎 AB button (blood type); U+1F18E
+🅱 B button (blood type); U+1F171
+🆑 CL button; U+1F191
+🆒 COOL button; U+1F192
+🆓 FREE button; U+1F193
+ℹ information; U+2139
+🆔 ID button; U+1F194
+Ⓜ circled M; U+24C2
+🆕 NEW button; U+1F195
+🆖 NG button; U+1F196
+🅾 O button (blood type); U+1F17E
+🆗 OK button; U+1F197
+🅿 P button; U+1F17F
+🆘 SOS button; U+1F198
+🆙 UP! button; U+1F199
+🆚 VS button; U+1F19A
+🈁 Japanese “here” button; U+1F201
+🈂 Japanese “service charge” button; U+1F202
+🈷 Japanese “monthly amount” button; U+1F237
+🈶 Japanese “not free of charge” button; U+1F236
+🈯 Japanese “reserved” button; U+1F22F
+🉐 Japanese “bargain” button; U+1F250
+🈹 Japanese “discount” button; U+1F239
+🈚 Japanese “free of charge” button; U+1F21A
+🈲 Japanese “prohibited” button; U+1F232
+🉑 Japanese “acceptable” button; U+1F251
+🈸 Japanese “application” button; U+1F238
+🈴 Japanese “passing grade” button; U+1F234
+🈳 Japanese “vacancy” button; U+1F233
+㊗ Japanese “congratulations” button; U+3297
+㊙ Japanese “secret” button; U+3299
+🈺 Japanese “open for business” button; U+1F23A
+🈵 Japanese “no vacancy” button; U+1F235
+🔴 red circle; U+1F534
+🔵 blue circle; U+1F535
+⚪ white circle; U+26AA
+⚫ black circle; U+26AB
+⬜ white large square; U+2B1C
+⬛ black large square; U+2B1B
+◼ black medium square; U+25FC
+◻ white medium square; U+25FB
+◽ white medium-small square; U+25FD
+◾ black medium-small square; U+25FE
+▫ white small square; U+25AB
+▪ black small square; U+25AA
+🔶 large orange diamond; U+1F536
+🔷 large blue diamond; U+1F537
+🔸 small orange diamond; U+1F538
+🔹 small blue diamond; U+1F539
+🔺 red triangle pointed up; U+1F53A
+🔻 red triangle pointed down; U+1F53B
+💠 diamond with a dot; U+1F4A0
+🔘 radio button; U+1F518
+🔲 black square button; U+1F532
+🔳 white square button; U+1F533
+🏁 chequered flag; U+1F3C1
+🚩 triangular flag; U+1F6A9
+🎌 crossed flags; U+1F38C
+🏴 black flag; U+1F3F4
+🏳 white flag; U+1F3F3
+🏳️‍🌈 rainbow flag; U+1F3F3 U+FE0F U+200D U+1F308
+🏴‍☠️ pirate flag; U+1F3F4 U+200D U+2620 U+FE0F
+🇦🇨 flag: Ascension Island; U+1F1E6 U+1F1E8
+🇦🇩 flag: Andorra; U+1F1E6 U+1F1E9
+🇦🇪 flag: United Arab Emirates; U+1F1E6 U+1F1EA
+🇦🇫 flag: Afghanistan; U+1F1E6 U+1F1EB
+🇦🇬 flag: Antigua & Barbuda; U+1F1E6 U+1F1EC
+🇦🇮 flag: Anguilla; U+1F1E6 U+1F1EE
+🇦🇱 flag: Albania; U+1F1E6 U+1F1F1
+🇦🇲 flag: Armenia; U+1F1E6 U+1F1F2
+🇦🇴 flag: Angola; U+1F1E6 U+1F1F4
+🇦🇶 flag: Antarctica; U+1F1E6 U+1F1F6
+🇦🇷 flag: Argentina; U+1F1E6 U+1F1F7
+🇦🇸 flag: American Samoa; U+1F1E6 U+1F1F8
+🇦🇹 flag: Austria; U+1F1E6 U+1F1F9
+🇦🇺 flag: Australia; U+1F1E6 U+1F1FA
+🇦🇼 flag: Aruba; U+1F1E6 U+1F1FC
+🇦🇽 flag: Åland Islands; U+1F1E6 U+1F1FD
+🇦🇿 flag: Azerbaijan; U+1F1E6 U+1F1FF
+🇧🇦 flag: Bosnia & Herzegovina; U+1F1E7 U+1F1E6
+🇧🇧 flag: Barbados; U+1F1E7 U+1F1E7
+🇧🇩 flag: Bangladesh; U+1F1E7 U+1F1E9
+🇧🇪 flag: Belgium; U+1F1E7 U+1F1EA
+🇧🇫 flag: Burkina Faso; U+1F1E7 U+1F1EB
+🇧🇬 flag: Bulgaria; U+1F1E7 U+1F1EC
+🇧🇭 flag: Bahrain; U+1F1E7 U+1F1ED
+🇧🇮 flag: Burundi; U+1F1E7 U+1F1EE
+🇧🇯 flag: Benin; U+1F1E7 U+1F1EF
+🇧🇱 flag: St. Barthélemy; U+1F1E7 U+1F1F1
+🇧🇲 flag: Bermuda; U+1F1E7 U+1F1F2
+🇧🇳 flag: Brunei; U+1F1E7 U+1F1F3
+🇧🇴 flag: Bolivia; U+1F1E7 U+1F1F4
+🇧🇶 flag: Caribbean Netherlands; U+1F1E7 U+1F1F6
+🇧🇷 flag: Brazil; U+1F1E7 U+1F1F7
+🇧🇸 flag: Bahamas; U+1F1E7 U+1F1F8
+🇧🇹 flag: Bhutan; U+1F1E7 U+1F1F9
+🇧🇻 flag: Bouvet Island; U+1F1E7 U+1F1FB
+🇧🇼 flag: Botswana; U+1F1E7 U+1F1FC
+🇧🇾 flag: Belarus; U+1F1E7 U+1F1FE
+🇧🇿 flag: Belize; U+1F1E7 U+1F1FF
+🇨🇦 flag: Canada; U+1F1E8 U+1F1E6
+🇨🇨 flag: Cocos (Keeling) Islands; U+1F1E8 U+1F1E8
+🇨🇩 flag: Congo - Kinshasa; U+1F1E8 U+1F1E9
+🇨🇫 flag: Central African Republic; U+1F1E8 U+1F1EB
+🇨🇬 flag: Congo - Brazzaville; U+1F1E8 U+1F1EC
+🇨🇭 flag: Switzerland; U+1F1E8 U+1F1ED
+🇨🇮 flag: Côte d’Ivoire; U+1F1E8 U+1F1EE
+🇨🇰 flag: Cook Islands; U+1F1E8 U+1F1F0
+🇨🇱 flag: Chile; U+1F1E8 U+1F1F1
+🇨🇲 flag: Cameroon; U+1F1E8 U+1F1F2
+🇨🇳 flag: China; U+1F1E8 U+1F1F3
+🇨🇴 flag: Colombia; U+1F1E8 U+1F1F4
+🇨🇵 flag: Clipperton Island; U+1F1E8 U+1F1F5
+🇨🇷 flag: Costa Rica; U+1F1E8 U+1F1F7
+🇨🇺 flag: Cuba; U+1F1E8 U+1F1FA
+🇨🇻 flag: Cape Verde; U+1F1E8 U+1F1FB
+🇨🇼 flag: Curaçao; U+1F1E8 U+1F1FC
+🇨🇽 flag: Christmas Island; U+1F1E8 U+1F1FD
+🇨🇾 flag: Cyprus; U+1F1E8 U+1F1FE
+🇨🇿 flag: Czechia; U+1F1E8 U+1F1FF
+🇩🇪 flag: Germany; U+1F1E9 U+1F1EA
+🇩🇬 flag: Diego Garcia; U+1F1E9 U+1F1EC
+🇩🇯 flag: Djibouti; U+1F1E9 U+1F1EF
+🇩🇰 flag: Denmark; U+1F1E9 U+1F1F0
+🇩🇲 flag: Dominica; U+1F1E9 U+1F1F2
+🇩🇴 flag: Dominican Republic; U+1F1E9 U+1F1F4
+🇩🇿 flag: Algeria; U+1F1E9 U+1F1FF
+🇪🇦 flag: Ceuta & Melilla; U+1F1EA U+1F1E6
+🇪🇨 flag: Ecuador; U+1F1EA U+1F1E8
+🇪🇪 flag: Estonia; U+1F1EA U+1F1EA
+🇪🇬 flag: Egypt; U+1F1EA U+1F1EC
+🇪🇭 flag: Western Sahara; U+1F1EA U+1F1ED
+🇪🇷 flag: Eritrea; U+1F1EA U+1F1F7
+🇪🇸 flag: Spain; U+1F1EA U+1F1F8
+🇪🇹 flag: Ethiopia; U+1F1EA U+1F1F9
+🇪🇺 flag: European Union; U+1F1EA U+1F1FA
+🇫🇮 flag: Finland; U+1F1EB U+1F1EE
+🇫🇯 flag: Fiji; U+1F1EB U+1F1EF
+🇫🇰 flag: Falkland Islands; U+1F1EB U+1F1F0
+🇫🇲 flag: Micronesia; U+1F1EB U+1F1F2
+🇫🇴 flag: Faroe Islands; U+1F1EB U+1F1F4
+🇫🇷 flag: France; U+1F1EB U+1F1F7
+🇬🇦 flag: Gabon; U+1F1EC U+1F1E6
+🇬🇧 flag: United Kingdom; U+1F1EC U+1F1E7
+🇬🇩 flag: Grenada; U+1F1EC U+1F1E9
+🇬🇪 flag: Georgia; U+1F1EC U+1F1EA
+🇬🇫 flag: French Guiana; U+1F1EC U+1F1EB
+🇬🇬 flag: Guernsey; U+1F1EC U+1F1EC
+🇬🇭 flag: Ghana; U+1F1EC U+1F1ED
+🇬🇮 flag: Gibraltar; U+1F1EC U+1F1EE
+🇬🇱 flag: Greenland; U+1F1EC U+1F1F1
+🇬🇲 flag: Gambia; U+1F1EC U+1F1F2
+🇬🇳 flag: Guinea; U+1F1EC U+1F1F3
+🇬🇵 flag: Guadeloupe; U+1F1EC U+1F1F5
+🇬🇶 flag: Equatorial Guinea; U+1F1EC U+1F1F6
+🇬🇷 flag: Greece; U+1F1EC U+1F1F7
+🇬🇸 flag: South Georgia & South Sandwich Islands; U+1F1EC U+1F1F8
+🇬🇹 flag: Guatemala; U+1F1EC U+1F1F9
+🇬🇺 flag: Guam; U+1F1EC U+1F1FA
+🇬🇼 flag: Guinea-Bissau; U+1F1EC U+1F1FC
+🇬🇾 flag: Guyana; U+1F1EC U+1F1FE
+🇭🇰 flag: Hong Kong SAR China; U+1F1ED U+1F1F0
+🇭🇲 flag: Heard & McDonald Islands; U+1F1ED U+1F1F2
+🇭🇳 flag: Honduras; U+1F1ED U+1F1F3
+🇭🇷 flag: Croatia; U+1F1ED U+1F1F7
+🇭🇹 flag: Haiti; U+1F1ED U+1F1F9
+🇭🇺 flag: Hungary; U+1F1ED U+1F1FA
+🇮🇨 flag: Canary Islands; U+1F1EE U+1F1E8
+🇮🇩 flag: Indonesia; U+1F1EE U+1F1E9
+🇮🇪 flag: Ireland; U+1F1EE U+1F1EA
+🇮🇱 flag: Israel; U+1F1EE U+1F1F1
+🇮🇲 flag: Isle of Man; U+1F1EE U+1F1F2
+🇮🇳 flag: India; U+1F1EE U+1F1F3
+🇮🇴 flag: British Indian Ocean Territory; U+1F1EE U+1F1F4
+🇮🇶 flag: Iraq; U+1F1EE U+1F1F6
+🇮🇷 flag: Iran; U+1F1EE U+1F1F7
+🇮🇸 flag: Iceland; U+1F1EE U+1F1F8
+🇮🇹 flag: Italy; U+1F1EE U+1F1F9
+🇯🇪 flag: Jersey; U+1F1EF U+1F1EA
+🇯🇲 flag: Jamaica; U+1F1EF U+1F1F2
+🇯🇴 flag: Jordan; U+1F1EF U+1F1F4
+🇯🇵 flag: Japan; U+1F1EF U+1F1F5
+🇰🇪 flag: Kenya; U+1F1F0 U+1F1EA
+🇰🇬 flag: Kyrgyzstan; U+1F1F0 U+1F1EC
+🇰🇭 flag: Cambodia; U+1F1F0 U+1F1ED
+🇰🇮 flag: Kiribati; U+1F1F0 U+1F1EE
+🇰🇲 flag: Comoros; U+1F1F0 U+1F1F2
+🇰🇳 flag: St. Kitts & Nevis; U+1F1F0 U+1F1F3
+🇰🇵 flag: North Korea; U+1F1F0 U+1F1F5
+🇰🇷 flag: South Korea; U+1F1F0 U+1F1F7
+🇰🇼 flag: Kuwait; U+1F1F0 U+1F1FC
+🇰🇾 flag: Cayman Islands; U+1F1F0 U+1F1FE
+🇰🇿 flag: Kazakhstan; U+1F1F0 U+1F1FF
+🇱🇦 flag: Laos; U+1F1F1 U+1F1E6
+🇱🇧 flag: Lebanon; U+1F1F1 U+1F1E7
+🇱🇨 flag: St. Lucia; U+1F1F1 U+1F1E8
+🇱🇮 flag: Liechtenstein; U+1F1F1 U+1F1EE
+🇱🇰 flag: Sri Lanka; U+1F1F1 U+1F1F0
+🇱🇷 flag: Liberia; U+1F1F1 U+1F1F7
+🇱🇸 flag: Lesotho; U+1F1F1 U+1F1F8
+🇱🇹 flag: Lithuania; U+1F1F1 U+1F1F9
+🇱🇺 flag: Luxembourg; U+1F1F1 U+1F1FA
+🇱🇻 flag: Latvia; U+1F1F1 U+1F1FB
+🇱🇾 flag: Libya; U+1F1F1 U+1F1FE
+🇲🇦 flag: Morocco; U+1F1F2 U+1F1E6
+🇲🇨 flag: Monaco; U+1F1F2 U+1F1E8
+🇲🇩 flag: Moldova; U+1F1F2 U+1F1E9
+🇲🇪 flag: Montenegro; U+1F1F2 U+1F1EA
+🇲🇫 flag: St. Martin; U+1F1F2 U+1F1EB
+🇲🇬 flag: Madagascar; U+1F1F2 U+1F1EC
+🇲🇭 flag: Marshall Islands; U+1F1F2 U+1F1ED
+🇲🇰 flag: Macedonia; U+1F1F2 U+1F1F0
+🇲🇱 flag: Mali; U+1F1F2 U+1F1F1
+🇲🇲 flag: Myanmar (Burma); U+1F1F2 U+1F1F2
+🇲🇳 flag: Mongolia; U+1F1F2 U+1F1F3
+🇲🇴 flag: Macau SAR China; U+1F1F2 U+1F1F4
+🇲🇵 flag: Northern Mariana Islands; U+1F1F2 U+1F1F5
+🇲🇶 flag: Martinique; U+1F1F2 U+1F1F6
+🇲🇷 flag: Mauritania; U+1F1F2 U+1F1F7
+🇲🇸 flag: Montserrat; U+1F1F2 U+1F1F8
+🇲🇹 flag: Malta; U+1F1F2 U+1F1F9
+🇲🇺 flag: Mauritius; U+1F1F2 U+1F1FA
+🇲🇻 flag: Maldives; U+1F1F2 U+1F1FB
+🇲🇼 flag: Malawi; U+1F1F2 U+1F1FC
+🇲🇽 flag: Mexico; U+1F1F2 U+1F1FD
+🇲🇾 flag: Malaysia; U+1F1F2 U+1F1FE
+🇲🇿 flag: Mozambique; U+1F1F2 U+1F1FF
+🇳🇦 flag: Namibia; U+1F1F3 U+1F1E6
+🇳🇨 flag: New Caledonia; U+1F1F3 U+1F1E8
+🇳🇪 flag: Niger; U+1F1F3 U+1F1EA
+🇳🇫 flag: Norfolk Island; U+1F1F3 U+1F1EB
+🇳🇬 flag: Nigeria; U+1F1F3 U+1F1EC
+🇳🇮 flag: Nicaragua; U+1F1F3 U+1F1EE
+🇳🇱 flag: Netherlands; U+1F1F3 U+1F1F1
+🇳🇴 flag: Norway; U+1F1F3 U+1F1F4
+🇳🇵 flag: Nepal; U+1F1F3 U+1F1F5
+🇳🇷 flag: Nauru; U+1F1F3 U+1F1F7
+🇳🇺 flag: Niue; U+1F1F3 U+1F1FA
+🇳🇿 flag: New Zealand; U+1F1F3 U+1F1FF
+🇴🇲 flag: Oman; U+1F1F4 U+1F1F2
+🇵🇦 flag: Panama; U+1F1F5 U+1F1E6
+🇵🇪 flag: Peru; U+1F1F5 U+1F1EA
+🇵🇫 flag: French Polynesia; U+1F1F5 U+1F1EB
+🇵🇬 flag: Papua New Guinea; U+1F1F5 U+1F1EC
+🇵🇭 flag: Philippines; U+1F1F5 U+1F1ED
+🇵🇰 flag: Pakistan; U+1F1F5 U+1F1F0
+🇵🇱 flag: Poland; U+1F1F5 U+1F1F1
+🇵🇲 flag: St. Pierre & Miquelon; U+1F1F5 U+1F1F2
+🇵🇳 flag: Pitcairn Islands; U+1F1F5 U+1F1F3
+🇵🇷 flag: Puerto Rico; U+1F1F5 U+1F1F7
+🇵🇸 flag: Palestinian Territories; U+1F1F5 U+1F1F8
+🇵🇹 flag: Portugal; U+1F1F5 U+1F1F9
+🇵🇼 flag: Palau; U+1F1F5 U+1F1FC
+🇵🇾 flag: Paraguay; U+1F1F5 U+1F1FE
+🇶🇦 flag: Qatar; U+1F1F6 U+1F1E6
+🇷🇪 flag: Réunion; U+1F1F7 U+1F1EA
+🇷🇴 flag: Romania; U+1F1F7 U+1F1F4
+🇷🇸 flag: Serbia; U+1F1F7 U+1F1F8
+🇷🇺 flag: Russia; U+1F1F7 U+1F1FA
+🇷🇼 flag: Rwanda; U+1F1F7 U+1F1FC
+🇸🇦 flag: Saudi Arabia; U+1F1F8 U+1F1E6
+🇸🇧 flag: Solomon Islands; U+1F1F8 U+1F1E7
+🇸🇨 flag: Seychelles; U+1F1F8 U+1F1E8
+🇸🇩 flag: Sudan; U+1F1F8 U+1F1E9
+🇸🇪 flag: Sweden; U+1F1F8 U+1F1EA
+🇸🇬 flag: Singapore; U+1F1F8 U+1F1EC
+🇸🇭 flag: St. Helena; U+1F1F8 U+1F1ED
+🇸🇮 flag: Slovenia; U+1F1F8 U+1F1EE
+🇸🇯 flag: Svalbard & Jan Mayen; U+1F1F8 U+1F1EF
+🇸🇰 flag: Slovakia; U+1F1F8 U+1F1F0
+🇸🇱 flag: Sierra Leone; U+1F1F8 U+1F1F1
+🇸🇲 flag: San Marino; U+1F1F8 U+1F1F2
+🇸🇳 flag: Senegal; U+1F1F8 U+1F1F3
+🇸🇴 flag: Somalia; U+1F1F8 U+1F1F4
+🇸🇷 flag: Suriname; U+1F1F8 U+1F1F7
+🇸🇸 flag: South Sudan; U+1F1F8 U+1F1F8
+🇸🇹 flag: São Tomé & Príncipe; U+1F1F8 U+1F1F9
+🇸🇻 flag: El Salvador; U+1F1F8 U+1F1FB
+🇸🇽 flag: Sint Maarten; U+1F1F8 U+1F1FD
+🇸🇾 flag: Syria; U+1F1F8 U+1F1FE
+🇸🇿 flag: Swaziland; U+1F1F8 U+1F1FF
+🇹🇦 flag: Tristan da Cunha; U+1F1F9 U+1F1E6
+🇹🇨 flag: Turks & Caicos Islands; U+1F1F9 U+1F1E8
+🇹🇩 flag: Chad; U+1F1F9 U+1F1E9
+🇹🇫 flag: French Southern Territories; U+1F1F9 U+1F1EB
+🇹🇬 flag: Togo; U+1F1F9 U+1F1EC
+🇹🇭 flag: Thailand; U+1F1F9 U+1F1ED
+🇹🇯 flag: Tajikistan; U+1F1F9 U+1F1EF
+🇹🇰 flag: Tokelau; U+1F1F9 U+1F1F0
+🇹🇱 flag: Timor-Leste; U+1F1F9 U+1F1F1
+🇹🇲 flag: Turkmenistan; U+1F1F9 U+1F1F2
+🇹🇳 flag: Tunisia; U+1F1F9 U+1F1F3
+🇹🇴 flag: Tonga; U+1F1F9 U+1F1F4
+🇹🇷 flag: Turkey; U+1F1F9 U+1F1F7
+🇹🇹 flag: Trinidad & Tobago; U+1F1F9 U+1F1F9
+🇹🇻 flag: Tuvalu; U+1F1F9 U+1F1FB
+🇹🇼 flag: Taiwan; U+1F1F9 U+1F1FC
+🇹🇿 flag: Tanzania; U+1F1F9 U+1F1FF
+🇺🇦 flag: Ukraine; U+1F1FA U+1F1E6
+🇺🇬 flag: Uganda; U+1F1FA U+1F1EC
+🇺🇲 flag: U.S. Outlying Islands; U+1F1FA U+1F1F2
+🇺🇳 flag: United Nations; U+1F1FA U+1F1F3
+🇺🇸 flag: United States; U+1F1FA U+1F1F8
+🇺🇾 flag: Uruguay; U+1F1FA U+1F1FE
+🇺🇿 flag: Uzbekistan; U+1F1FA U+1F1FF
+🇻🇦 flag: Vatican City; U+1F1FB U+1F1E6
+🇻🇨 flag: St. Vincent & Grenadines; U+1F1FB U+1F1E8
+🇻🇪 flag: Venezuela; U+1F1FB U+1F1EA
+🇻🇬 flag: British Virgin Islands; U+1F1FB U+1F1EC
+🇻🇮 flag: U.S. Virgin Islands; U+1F1FB U+1F1EE
+🇻🇳 flag: Vietnam; U+1F1FB U+1F1F3
+🇻🇺 flag: Vanuatu; U+1F1FB U+1F1FA
+🇼🇫 flag: Wallis & Futuna; U+1F1FC U+1F1EB
+🇼🇸 flag: Samoa; U+1F1FC U+1F1F8
+🇽🇰 flag: Kosovo; U+1F1FD U+1F1F0
+🇾🇪 flag: Yemen; U+1F1FE U+1F1EA
+🇾🇹 flag: Mayotte; U+1F1FE U+1F1F9
+🇿🇦 flag: South Africa; U+1F1FF U+1F1E6
+🇿🇲 flag: Zambia; U+1F1FF U+1F1F2
+🇿🇼 flag: Zimbabwe; U+1F1FF U+1F1FC
+🏴󠁧󠁢󠁥󠁮󠁧󠁿 flag: England; U+1F3F4 U+E0067 U+E0062 U+E0065 U+E006E U+E0067 U+E007F
+🏴󠁧󠁢󠁳󠁣󠁴󠁿 flag: Scotland; U+1F3F4 U+E0067 U+E0062 U+E0073 U+E0063 U+E0074 U+E007F
+🏴󠁧󠁢󠁷󠁬󠁳󠁿 flag: Wales; U+1F3F4 U+E0067 U+E0062 U+E0077 U+E006C U+E0073 U+E007F
+ fa-ad; U+F641
+ fa-address-book; U+F2B9
+ fa-address-card; U+F2BB
+ fa-adjust; U+F042
+ fa-air-freshener; U+F5D0
+ fa-align-center; U+F037
+ fa-align-justify; U+F039
+ fa-align-left; U+F036
+ fa-align-right; U+F038
+ fa-allergies; U+F461
+ fa-ambulance; U+F0F9
+ fa-american-sign-language-interpreting; U+F2A3
+ fa-anchor; U+F13D
+ fa-angle-double-down; U+F103
+ fa-angle-double-left; U+F100
+ fa-angle-double-right; U+F101
+ fa-angle-double-up; U+F102
+ fa-angle-down; U+F107
+ fa-angle-left; U+F104
+ fa-angle-right; U+F105
+ fa-angle-up; U+F106
+ fa-angry; U+F556
+ fa-ankh; U+F644
+ fa-apple-alt; U+F5D1
+ fa-archive; U+F187
+ fa-archway; U+F557
+ fa-arrow-alt-circle-down; U+F358
+ fa-arrow-alt-circle-left; U+F359
+ fa-arrow-alt-circle-right; U+F35A
+ fa-arrow-alt-circle-up; U+F35B
+ fa-arrow-circle-down; U+F0AB
+ fa-arrow-circle-left; U+F0A8
+ fa-arrow-circle-right; U+F0A9
+ fa-arrow-circle-up; U+F0AA
+ fa-arrow-down; U+F063
+ fa-arrow-left; U+F060
+ fa-arrow-right; U+F061
+ fa-arrow-up; U+F062
+ fa-arrows-alt; U+F0B2
+ fa-arrows-alt-h; U+F337
+ fa-arrows-alt-v; U+F338
+ fa-assistive-listening-systems; U+F2A2
+ fa-asterisk; U+F069
+ fa-at; U+F1FA
+ fa-atlas; U+F558
+ fa-atom; U+F5D2
+ fa-audio-description; U+F29E
+ fa-award; U+F559
+ fa-baby; U+F77C
+ fa-baby-carriage; U+F77D
+ fa-backspace; U+F55A
+ fa-backward; U+F04A
+ fa-balance-scale; U+F24E
+ fa-ban; U+F05E
+ fa-band-aid; U+F462
+ fa-barcode; U+F02A
+ fa-bars; U+F0C9
+ fa-baseball-ball; U+F433
+ fa-basketball-ball; U+F434
+ fa-bath; U+F2CD
+ fa-battery-empty; U+F244
+ fa-battery-full; U+F240
+ fa-battery-half; U+F242
+ fa-battery-quarter; U+F243
+ fa-battery-three-quarters; U+F241
+ fa-bed; U+F236
+ fa-beer; U+F0FC
+ fa-bell; U+F0F3
+ fa-bell-slash; U+F1F6
+ fa-bezier-curve; U+F55B
+ fa-bible; U+F647
+ fa-bicycle; U+F206
+ fa-binoculars; U+F1E5
+ fa-biohazard; U+F780
+ fa-birthday-cake; U+F1FD
+ fa-blender; U+F517
+ fa-blender-phone; U+F6B6
+ fa-blind; U+F29D
+ fa-blog; U+F781
+ fa-bold; U+F032
+ fa-bolt; U+F0E7
+ fa-bomb; U+F1E2
+ fa-bone; U+F5D7
+ fa-bong; U+F55C
+ fa-book; U+F02D
+ fa-book-dead; U+F6B7
+ fa-book-open; U+F518
+ fa-book-reader; U+F5DA
+ fa-bookmark; U+F02E
+ fa-bowling-ball; U+F436
+ fa-box; U+F466
+ fa-box-open; U+F49E
+ fa-boxes; U+F468
+ fa-braille; U+F2A1
+ fa-brain; U+F5DC
+ fa-briefcase; U+F0B1
+ fa-briefcase-medical; U+F469
+ fa-broadcast-tower; U+F519
+ fa-broom; U+F51A
+ fa-brush; U+F55D
+ fa-bug; U+F188
+ fa-building; U+F1AD
+ fa-bullhorn; U+F0A1
+ fa-bullseye; U+F140
+ fa-burn; U+F46A
+ fa-bus; U+F207
+ fa-bus-alt; U+F55E
+ fa-business-time; U+F64A
+ fa-calculator; U+F1EC
+ fa-calendar; U+F133
+ fa-calendar-alt; U+F073
+ fa-calendar-check; U+F274
+ fa-calendar-day; U+F783
+ fa-calendar-minus; U+F272
+ fa-calendar-plus; U+F271
+ fa-calendar-times; U+F273
+ fa-calendar-week; U+F784
+ fa-camera; U+F030
+ fa-camera-retro; U+F083
+ fa-campground; U+F6BB
+ fa-candy-cane; U+F786
+ fa-cannabis; U+F55F
+ fa-capsules; U+F46B
+ fa-car; U+F1B9
+ fa-car-alt; U+F5DE
+ fa-car-battery; U+F5DF
+ fa-car-crash; U+F5E1
+ fa-car-side; U+F5E4
+ fa-caret-down; U+F0D7
+ fa-caret-left; U+F0D9
+ fa-caret-right; U+F0DA
+ fa-caret-square-down; U+F150
+ fa-caret-square-left; U+F191
+ fa-caret-square-right; U+F152
+ fa-caret-square-up; U+F151
+ fa-caret-up; U+F0D8
+ fa-carrot; U+F787
+ fa-cart-arrow-down; U+F218
+ fa-cart-plus; U+F217
+ fa-cash-register; U+F788
+ fa-cat; U+F6BE
+ fa-certificate; U+F0A3
+ fa-chair; U+F6C0
+ fa-chalkboard; U+F51B
+ fa-chalkboard-teacher; U+F51C
+ fa-charging-station; U+F5E7
+ fa-chart-area; U+F1FE
+ fa-chart-bar; U+F080
+ fa-chart-line; U+F201
+ fa-chart-pie; U+F200
+ fa-check; U+F00C
+ fa-check-circle; U+F058
+ fa-check-double; U+F560
+ fa-check-square; U+F14A
+ fa-chess; U+F439
+ fa-chess-bishop; U+F43A
+ fa-chess-board; U+F43C
+ fa-chess-king; U+F43F
+ fa-chess-knight; U+F441
+ fa-chess-pawn; U+F443
+ fa-chess-queen; U+F445
+ fa-chess-rook; U+F447
+ fa-chevron-circle-down; U+F13A
+ fa-chevron-circle-left; U+F137
+ fa-chevron-circle-right; U+F138
+ fa-chevron-circle-up; U+F139
+ fa-chevron-down; U+F078
+ fa-chevron-left; U+F053
+ fa-chevron-right; U+F054
+ fa-chevron-up; U+F077
+ fa-child; U+F1AE
+ fa-church; U+F51D
+ fa-circle; U+F111
+ fa-circle-notch; U+F1CE
+ fa-city; U+F64F
+ fa-clipboard; U+F328
+ fa-clipboard-check; U+F46C
+ fa-clipboard-list; U+F46D
+ fa-clock; U+F017
+ fa-clone; U+F24D
+ fa-closed-captioning; U+F20A
+ fa-cloud; U+F0C2
+ fa-cloud-download-alt; U+F381
+ fa-cloud-meatball; U+F73B
+ fa-cloud-moon; U+F6C3
+ fa-cloud-moon-rain; U+F73C
+ fa-cloud-rain; U+F73D
+ fa-cloud-showers-heavy; U+F740
+ fa-cloud-sun; U+F6C4
+ fa-cloud-sun-rain; U+F743
+ fa-cloud-upload-alt; U+F382
+ fa-cocktail; U+F561
+ fa-code; U+F121
+ fa-code-branch; U+F126
+ fa-coffee; U+F0F4
+ fa-cog; U+F013
+ fa-cogs; U+F085
+ fa-coins; U+F51E
+ fa-columns; U+F0DB
+ fa-comment; U+F075
+ fa-comment-alt; U+F27A
+ fa-comment-dollar; U+F651
+ fa-comment-dots; U+F4AD
+ fa-comment-slash; U+F4B3
+ fa-comments; U+F086
+ fa-comments-dollar; U+F653
+ fa-compact-disc; U+F51F
+ fa-compass; U+F14E
+ fa-compress; U+F066
+ fa-compress-arrows-alt; U+F78C
+ fa-concierge-bell; U+F562
+ fa-cookie; U+F563
+ fa-cookie-bite; U+F564
+ fa-copy; U+F0C5
+ fa-copyright; U+F1F9
+ fa-couch; U+F4B8
+ fa-credit-card; U+F09D
+ fa-crop; U+F125
+ fa-crop-alt; U+F565
+ fa-cross; U+F654
+ fa-crosshairs; U+F05B
+ fa-crow; U+F520
+ fa-crown; U+F521
+ fa-cube; U+F1B2
+ fa-cubes; U+F1B3
+ fa-cut; U+F0C4
+ fa-database; U+F1C0
+ fa-deaf; U+F2A4
+ fa-democrat; U+F747
+ fa-desktop; U+F108
+ fa-dharmachakra; U+F655
+ fa-diagnoses; U+F470
+ fa-dice; U+F522
+ fa-dice-d20; U+F6CF
+ fa-dice-d6; U+F6D1
+ fa-dice-five; U+F523
+ fa-dice-four; U+F524
+ fa-dice-one; U+F525
+ fa-dice-six; U+F526
+ fa-dice-three; U+F527
+ fa-dice-two; U+F528
+ fa-digital-tachograph; U+F566
+ fa-directions; U+F5EB
+ fa-divide; U+F529
+ fa-dizzy; U+F567
+ fa-dna; U+F471
+ fa-dog; U+F6D3
+ fa-dollar-sign; U+F155
+ fa-dolly; U+F472
+ fa-dolly-flatbed; U+F474
+ fa-donate; U+F4B9
+ fa-door-closed; U+F52A
+ fa-door-open; U+F52B
+ fa-dot-circle; U+F192
+ fa-dove; U+F4BA
+ fa-download; U+F019
+ fa-drafting-compass; U+F568
+ fa-dragon; U+F6D5
+ fa-draw-polygon; U+F5EE
+ fa-drum; U+F569
+ fa-drum-steelpan; U+F56A
+ fa-drumstick-bite; U+F6D7
+ fa-dumbbell; U+F44B
+ fa-dumpster; U+F793
+ fa-dumpster-fire; U+F794
+ fa-dungeon; U+F6D9
+ fa-edit; U+F044
+ fa-eject; U+F052
+ fa-ellipsis-h; U+F141
+ fa-ellipsis-v; U+F142
+ fa-envelope; U+F0E0
+ fa-envelope-open; U+F2B6
+ fa-envelope-open-text; U+F658
+ fa-envelope-square; U+F199
+ fa-equals; U+F52C
+ fa-eraser; U+F12D
+ fa-ethernet; U+F796
+ fa-euro-sign; U+F153
+ fa-exchange-alt; U+F362
+ fa-exclamation; U+F12A
+ fa-exclamation-circle; U+F06A
+ fa-exclamation-triangle; U+F071
+ fa-expand; U+F065
+ fa-expand-arrows-alt; U+F31E
+ fa-external-link-alt; U+F35D
+ fa-external-link-square-alt; U+F360
+ fa-eye; U+F06E
+ fa-eye-dropper; U+F1FB
+ fa-eye-slash; U+F070
+ fa-fast-backward; U+F049
+ fa-fast-forward; U+F050
+ fa-fax; U+F1AC
+ fa-feather; U+F52D
+ fa-feather-alt; U+F56B
+ fa-female; U+F182
+ fa-fighter-jet; U+F0FB
+ fa-file; U+F15B
+ fa-file-alt; U+F15C
+ fa-file-archive; U+F1C6
+ fa-file-audio; U+F1C7
+ fa-file-code; U+F1C9
+ fa-file-contract; U+F56C
+ fa-file-csv; U+F6DD
+ fa-file-download; U+F56D
+ fa-file-excel; U+F1C3
+ fa-file-export; U+F56E
+ fa-file-image; U+F1C5
+ fa-file-import; U+F56F
+ fa-file-invoice; U+F570
+ fa-file-invoice-dollar; U+F571
+ fa-file-medical; U+F477
+ fa-file-medical-alt; U+F478
+ fa-file-pdf; U+F1C1
+ fa-file-powerpoint; U+F1C4
+ fa-file-prescription; U+F572
+ fa-file-signature; U+F573
+ fa-file-upload; U+F574
+ fa-file-video; U+F1C8
+ fa-file-word; U+F1C2
+ fa-fill; U+F575
+ fa-fill-drip; U+F576
+ fa-film; U+F008
+ fa-filter; U+F0B0
+ fa-fingerprint; U+F577
+ fa-fire; U+F06D
+ fa-fire-alt; U+F7E4
+ fa-fire-extinguisher; U+F134
+ fa-first-aid; U+F479
+ fa-fish; U+F578
+ fa-fist-raised; U+F6DE
+ fa-flag; U+F024
+ fa-flag-checkered; U+F11E
+ fa-flag-usa; U+F74D
+ fa-flask; U+F0C3
+ fa-flushed; U+F579
+ fa-folder; U+F07B
+ fa-folder-minus; U+F65D
+ fa-folder-open; U+F07C
+ fa-folder-plus; U+F65E
+ fa-font; U+F031
+ fa-font-awesome-logo-full; U+F4E6
+ fa-football-ball; U+F44E
+ fa-forward; U+F04E
+ fa-frog; U+F52E
+ fa-frown; U+F119
+ fa-frown-open; U+F57A
+ fa-funnel-dollar; U+F662
+ fa-futbol; U+F1E3
+ fa-gamepad; U+F11B
+ fa-gas-pump; U+F52F
+ fa-gavel; U+F0E3
+ fa-gem; U+F3A5
+ fa-genderless; U+F22D
+ fa-ghost; U+F6E2
+ fa-gift; U+F06B
+ fa-gifts; U+F79C
+ fa-glass-cheers; U+F79F
+ fa-glass-martini; U+F000
+ fa-glass-martini-alt; U+F57B
+ fa-glass-whiskey; U+F7A0
+ fa-glasses; U+F530
+ fa-globe; U+F0AC
+ fa-globe-africa; U+F57C
+ fa-globe-americas; U+F57D
+ fa-globe-asia; U+F57E
+ fa-globe-europe; U+F7A2
+ fa-golf-ball; U+F450
+ fa-gopuram; U+F664
+ fa-graduation-cap; U+F19D
+ fa-greater-than; U+F531
+ fa-greater-than-equal; U+F532
+ fa-grimace; U+F57F
+ fa-grin; U+F580
+ fa-grin-alt; U+F581
+ fa-grin-beam; U+F582
+ fa-grin-beam-sweat; U+F583
+ fa-grin-hearts; U+F584
+ fa-grin-squint; U+F585
+ fa-grin-squint-tears; U+F586
+ fa-grin-stars; U+F587
+ fa-grin-tears; U+F588
+ fa-grin-tongue; U+F589
+ fa-grin-tongue-squint; U+F58A
+ fa-grin-tongue-wink; U+F58B
+ fa-grin-wink; U+F58C
+ fa-grip-horizontal; U+F58D
+ fa-grip-lines; U+F7A4
+ fa-grip-lines-vertical; U+F7A5
+ fa-grip-vertical; U+F58E
+ fa-guitar; U+F7A6
+ fa-h-square; U+F0FD
+ fa-hammer; U+F6E3
+ fa-hamsa; U+F665
+ fa-hand-holding; U+F4BD
+ fa-hand-holding-heart; U+F4BE
+ fa-hand-holding-usd; U+F4C0
+ fa-hand-lizard; U+F258
+ fa-hand-paper; U+F256
+ fa-hand-peace; U+F25B
+ fa-hand-point-down; U+F0A7
+ fa-hand-point-left; U+F0A5
+ fa-hand-point-right; U+F0A4
+ fa-hand-point-up; U+F0A6
+ fa-hand-pointer; U+F25A
+ fa-hand-rock; U+F255
+ fa-hand-scissors; U+F257
+ fa-hand-spock; U+F259
+ fa-hands; U+F4C2
+ fa-hands-helping; U+F4C4
+ fa-handshake; U+F2B5
+ fa-hanukiah; U+F6E6
+ fa-hashtag; U+F292
+ fa-hat-wizard; U+F6E8
+ fa-haykal; U+F666
+ fa-hdd; U+F0A0
+ fa-heading; U+F1DC
+ fa-headphones; U+F025
+ fa-headphones-alt; U+F58F
+ fa-headset; U+F590
+ fa-heart; U+F004
+ fa-heart-broken; U+F7A9
+ fa-heartbeat; U+F21E
+ fa-helicopter; U+F533
+ fa-highlighter; U+F591
+ fa-hiking; U+F6EC
+ fa-hippo; U+F6ED
+ fa-history; U+F1DA
+ fa-hockey-puck; U+F453
+ fa-holly-berry; U+F7AA
+ fa-home; U+F015
+ fa-horse; U+F6F0
+ fa-horse-head; U+F7AB
+ fa-hospital; U+F0F8
+ fa-hospital-alt; U+F47D
+ fa-hospital-symbol; U+F47E
+ fa-hot-tub; U+F593
+ fa-hotel; U+F594
+ fa-hourglass; U+F254
+ fa-hourglass-end; U+F253
+ fa-hourglass-half; U+F252
+ fa-hourglass-start; U+F251
+ fa-house-damage; U+F6F1
+ fa-hryvnia; U+F6F2
+ fa-i-cursor; U+F246
+ fa-icicles; U+F7AD
+ fa-id-badge; U+F2C1
+ fa-id-card; U+F2C2
+ fa-id-card-alt; U+F47F
+ fa-igloo; U+F7AE
+ fa-image; U+F03E
+ fa-images; U+F302
+ fa-inbox; U+F01C
+ fa-indent; U+F03C
+ fa-industry; U+F275
+ fa-infinity; U+F534
+ fa-info; U+F129
+ fa-info-circle; U+F05A
+ fa-italic; U+F033
+ fa-jedi; U+F669
+ fa-joint; U+F595
+ fa-journal-whills; U+F66A
+ fa-kaaba; U+F66B
+ fa-key; U+F084
+ fa-keyboard; U+F11C
+ fa-khanda; U+F66D
+ fa-kiss; U+F596
+ fa-kiss-beam; U+F597
+ fa-kiss-wink-heart; U+F598
+ fa-kiwi-bird; U+F535
+ fa-landmark; U+F66F
+ fa-language; U+F1AB
+ fa-laptop; U+F109
+ fa-laptop-code; U+F5FC
+ fa-laugh; U+F599
+ fa-laugh-beam; U+F59A
+ fa-laugh-squint; U+F59B
+ fa-laugh-wink; U+F59C
+ fa-layer-group; U+F5FD
+ fa-leaf; U+F06C
+ fa-lemon; U+F094
+ fa-less-than; U+F536
+ fa-less-than-equal; U+F537
+ fa-level-down-alt; U+F3BE
+ fa-level-up-alt; U+F3BF
+ fa-life-ring; U+F1CD
+ fa-lightbulb; U+F0EB
+ fa-link; U+F0C1
+ fa-lira-sign; U+F195
+ fa-list; U+F03A
+ fa-list-alt; U+F022
+ fa-list-ol; U+F0CB
+ fa-list-ul; U+F0CA
+ fa-location-arrow; U+F124
+ fa-lock; U+F023
+ fa-lock-open; U+F3C1
+ fa-long-arrow-alt-down; U+F309
+ fa-long-arrow-alt-left; U+F30A
+ fa-long-arrow-alt-right; U+F30B
+ fa-long-arrow-alt-up; U+F30C
+ fa-low-vision; U+F2A8
+ fa-luggage-cart; U+F59D
+ fa-magic; U+F0D0
+ fa-magnet; U+F076
+ fa-mail-bulk; U+F674
+ fa-male; U+F183
+ fa-map; U+F279
+ fa-map-marked; U+F59F
+ fa-map-marked-alt; U+F5A0
+ fa-map-marker; U+F041
+ fa-map-marker-alt; U+F3C5
+ fa-map-pin; U+F276
+ fa-map-signs; U+F277
+ fa-marker; U+F5A1
+ fa-mars; U+F222
+ fa-mars-double; U+F227
+ fa-mars-stroke; U+F229
+ fa-mars-stroke-h; U+F22B
+ fa-mars-stroke-v; U+F22A
+ fa-mask; U+F6FA
+ fa-medal; U+F5A2
+ fa-medkit; U+F0FA
+ fa-meh; U+F11A
+ fa-meh-blank; U+F5A4
+ fa-meh-rolling-eyes; U+F5A5
+ fa-memory; U+F538
+ fa-menorah; U+F676
+ fa-mercury; U+F223
+ fa-meteor; U+F753
+ fa-microchip; U+F2DB
+ fa-microphone; U+F130
+ fa-microphone-alt; U+F3C9
+ fa-microphone-alt-slash; U+F539
+ fa-microphone-slash; U+F131
+ fa-microscope; U+F610
+ fa-minus; U+F068
+ fa-minus-circle; U+F056
+ fa-minus-square; U+F146
+ fa-mitten; U+F7B5
+ fa-mobile; U+F10B
+ fa-mobile-alt; U+F3CD
+ fa-money-bill; U+F0D6
+ fa-money-bill-alt; U+F3D1
+ fa-money-bill-wave; U+F53A
+ fa-money-bill-wave-alt; U+F53B
+ fa-money-check; U+F53C
+ fa-money-check-alt; U+F53D
+ fa-monument; U+F5A6
+ fa-moon; U+F186
+ fa-mortar-pestle; U+F5A7
+ fa-mosque; U+F678
+ fa-motorcycle; U+F21C
+ fa-mountain; U+F6FC
+ fa-mouse-pointer; U+F245
+ fa-mug-hot; U+F7B6
+ fa-music; U+F001
+ fa-network-wired; U+F6FF
+ fa-neuter; U+F22C
+ fa-newspaper; U+F1EA
+ fa-not-equal; U+F53E
+ fa-notes-medical; U+F481
+ fa-object-group; U+F247
+ fa-object-ungroup; U+F248
+ fa-oil-can; U+F613
+ fa-om; U+F679
+ fa-otter; U+F700
+ fa-outdent; U+F03B
+ fa-paint-brush; U+F1FC
+ fa-paint-roller; U+F5AA
+ fa-palette; U+F53F
+ fa-pallet; U+F482
+ fa-paper-plane; U+F1D8
+ fa-paperclip; U+F0C6
+ fa-parachute-box; U+F4CD
+ fa-paragraph; U+F1DD
+ fa-parking; U+F540
+ fa-passport; U+F5AB
+ fa-pastafarianism; U+F67B
+ fa-paste; U+F0EA
+ fa-pause; U+F04C
+ fa-pause-circle; U+F28B
+ fa-paw; U+F1B0
+ fa-peace; U+F67C
+ fa-pen; U+F304
+ fa-pen-alt; U+F305
+ fa-pen-fancy; U+F5AC
+ fa-pen-nib; U+F5AD
+ fa-pen-square; U+F14B
+ fa-pencil-alt; U+F303
+ fa-pencil-ruler; U+F5AE
+ fa-people-carry; U+F4CE
+ fa-percent; U+F295
+ fa-percentage; U+F541
+ fa-person-booth; U+F756
+ fa-phone; U+F095
+ fa-phone-slash; U+F3DD
+ fa-phone-square; U+F098
+ fa-phone-volume; U+F2A0
+ fa-piggy-bank; U+F4D3
+ fa-pills; U+F484
+ fa-place-of-worship; U+F67F
+ fa-plane; U+F072
+ fa-plane-arrival; U+F5AF
+ fa-plane-departure; U+F5B0
+ fa-play; U+F04B
+ fa-play-circle; U+F144
+ fa-plug; U+F1E6
+ fa-plus; U+F067
+ fa-plus-circle; U+F055
+ fa-plus-square; U+F0FE
+ fa-podcast; U+F2CE
+ fa-poll; U+F681
+ fa-poll-h; U+F682
+ fa-poo; U+F2FE
+ fa-poo-storm; U+F75A
+ fa-poop; U+F619
+ fa-portrait; U+F3E0
+ fa-pound-sign; U+F154
+ fa-power-off; U+F011
+ fa-pray; U+F683
+ fa-praying-hands; U+F684
+ fa-prescription; U+F5B1
+ fa-prescription-bottle; U+F485
+ fa-prescription-bottle-alt; U+F486
+ fa-print; U+F02F
+ fa-procedures; U+F487
+ fa-project-diagram; U+F542
+ fa-puzzle-piece; U+F12E
+ fa-qrcode; U+F029
+ fa-question; U+F128
+ fa-question-circle; U+F059
+ fa-quidditch; U+F458
+ fa-quote-left; U+F10D
+ fa-quote-right; U+F10E
+ fa-quran; U+F687
+ fa-radiation; U+F7B9
+ fa-radiation-alt; U+F7BA
+ fa-rainbow; U+F75B
+ fa-random; U+F074
+ fa-receipt; U+F543
+ fa-recycle; U+F1B8
+ fa-redo; U+F01E
+ fa-redo-alt; U+F2F9
+ fa-registered; U+F25D
+ fa-reply; U+F3E5
+ fa-reply-all; U+F122
+ fa-republican; U+F75E
+ fa-restroom; U+F7BD
+ fa-retweet; U+F079
+ fa-ribbon; U+F4D6
+ fa-ring; U+F70B
+ fa-road; U+F018
+ fa-robot; U+F544
+ fa-rocket; U+F135
+ fa-route; U+F4D7
+ fa-rss; U+F09E
+ fa-rss-square; U+F143
+ fa-ruble-sign; U+F158
+ fa-ruler; U+F545
+ fa-ruler-combined; U+F546
+ fa-ruler-horizontal; U+F547
+ fa-ruler-vertical; U+F548
+ fa-running; U+F70C
+ fa-rupee-sign; U+F156
+ fa-sad-cry; U+F5B3
+ fa-sad-tear; U+F5B4
+ fa-satellite; U+F7BF
+ fa-satellite-dish; U+F7C0
+ fa-save; U+F0C7
+ fa-school; U+F549
+ fa-screwdriver; U+F54A
+ fa-scroll; U+F70E
+ fa-sd-card; U+F7C2
+ fa-search; U+F002
+ fa-search-dollar; U+F688
+ fa-search-location; U+F689
+ fa-search-minus; U+F010
+ fa-search-plus; U+F00E
+ fa-seedling; U+F4D8
+ fa-server; U+F233
+ fa-shapes; U+F61F
+ fa-share; U+F064
+ fa-share-alt; U+F1E0
+ fa-share-alt-square; U+F1E1
+ fa-share-square; U+F14D
+ fa-shekel-sign; U+F20B
+ fa-shield-alt; U+F3ED
+ fa-ship; U+F21A
+ fa-shipping-fast; U+F48B
+ fa-shoe-prints; U+F54B
+ fa-shopping-bag; U+F290
+ fa-shopping-basket; U+F291
+ fa-shopping-cart; U+F07A
+ fa-shower; U+F2CC
+ fa-shuttle-van; U+F5B6
+ fa-sign; U+F4D9
+ fa-sign-in-alt; U+F2F6
+ fa-sign-language; U+F2A7
+ fa-sign-out-alt; U+F2F5
+ fa-signal; U+F012
+ fa-signature; U+F5B7
+ fa-sim-card; U+F7C4
+ fa-sitemap; U+F0E8
+ fa-skating; U+F7C5
+ fa-skiing; U+F7C9
+ fa-skiing-nordic; U+F7CA
+ fa-skull; U+F54C
+ fa-skull-crossbones; U+F714
+ fa-slash; U+F715
+ fa-sleigh; U+F7CC
+ fa-sliders-h; U+F1DE
+ fa-smile; U+F118
+ fa-smile-beam; U+F5B8
+ fa-smile-wink; U+F4DA
+ fa-smog; U+F75F
+ fa-smoking; U+F48D
+ fa-smoking-ban; U+F54D
+ fa-sms; U+F7CD
+ fa-snowboarding; U+F7CE
+ fa-snowflake; U+F2DC
+ fa-snowman; U+F7D0
+ fa-snowplow; U+F7D2
+ fa-socks; U+F696
+ fa-solar-panel; U+F5BA
+ fa-sort; U+F0DC
+ fa-sort-alpha-down; U+F15D
+ fa-sort-alpha-up; U+F15E
+ fa-sort-amount-down; U+F160
+ fa-sort-amount-up; U+F161
+ fa-sort-down; U+F0DD
+ fa-sort-numeric-down; U+F162
+ fa-sort-numeric-up; U+F163
+ fa-sort-up; U+F0DE
+ fa-spa; U+F5BB
+ fa-space-shuttle; U+F197
+ fa-spider; U+F717
+ fa-spinner; U+F110
+ fa-splotch; U+F5BC
+ fa-spray-can; U+F5BD
+ fa-square; U+F0C8
+ fa-square-full; U+F45C
+ fa-square-root-alt; U+F698
+ fa-stamp; U+F5BF
+ fa-star; U+F005
+ fa-star-and-crescent; U+F699
+ fa-star-half; U+F089
+ fa-star-half-alt; U+F5C0
+ fa-star-of-david; U+F69A
+ fa-star-of-life; U+F621
+ fa-step-backward; U+F048
+ fa-step-forward; U+F051
+ fa-stethoscope; U+F0F1
+ fa-sticky-note; U+F249
+ fa-stop; U+F04D
+ fa-stop-circle; U+F28D
+ fa-stopwatch; U+F2F2
+ fa-store; U+F54E
+ fa-store-alt; U+F54F
+ fa-stream; U+F550
+ fa-street-view; U+F21D
+ fa-strikethrough; U+F0CC
+ fa-stroopwafel; U+F551
+ fa-subscript; U+F12C
+ fa-subway; U+F239
+ fa-suitcase; U+F0F2
+ fa-suitcase-rolling; U+F5C1
+ fa-sun; U+F185
+ fa-superscript; U+F12B
+ fa-surprise; U+F5C2
+ fa-swatchbook; U+F5C3
+ fa-swimmer; U+F5C4
+ fa-swimming-pool; U+F5C5
+ fa-synagogue; U+F69B
+ fa-sync; U+F021
+ fa-sync-alt; U+F2F1
+ fa-syringe; U+F48E
+ fa-table; U+F0CE
+ fa-table-tennis; U+F45D
+ fa-tablet; U+F10A
+ fa-tablet-alt; U+F3FA
+ fa-tablets; U+F490
+ fa-tachometer-alt; U+F3FD
+ fa-tag; U+F02B
+ fa-tags; U+F02C
+ fa-tape; U+F4DB
+ fa-tasks; U+F0AE
+ fa-taxi; U+F1BA
+ fa-teeth; U+F62E
+ fa-teeth-open; U+F62F
+ fa-temperature-high; U+F769
+ fa-temperature-low; U+F76B
+ fa-tenge; U+F7D7
+ fa-terminal; U+F120
+ fa-text-height; U+F034
+ fa-text-width; U+F035
+ fa-th; U+F00A
+ fa-th-large; U+F009
+ fa-th-list; U+F00B
+ fa-theater-masks; U+F630
+ fa-thermometer; U+F491
+ fa-thermometer-empty; U+F2CB
+ fa-thermometer-full; U+F2C7
+ fa-thermometer-half; U+F2C9
+ fa-thermometer-quarter; U+F2CA
+ fa-thermometer-three-quarters; U+F2C8
+ fa-thumbs-down; U+F165
+ fa-thumbs-up; U+F164
+ fa-thumbtack; U+F08D
+ fa-ticket-alt; U+F3FF
+ fa-times; U+F00D
+ fa-times-circle; U+F057
+ fa-tint; U+F043
+ fa-tint-slash; U+F5C7
+ fa-tired; U+F5C8
+ fa-toggle-off; U+F204
+ fa-toggle-on; U+F205
+ fa-toilet; U+F7D8
+ fa-toilet-paper; U+F71E
+ fa-toolbox; U+F552
+ fa-tools; U+F7D9
+ fa-tooth; U+F5C9
+ fa-torah; U+F6A0
+ fa-torii-gate; U+F6A1
+ fa-tractor; U+F722
+ fa-trademark; U+F25C
+ fa-traffic-light; U+F637
+ fa-train; U+F238
+ fa-tram; U+F7DA
+ fa-transgender; U+F224
+ fa-transgender-alt; U+F225
+ fa-trash; U+F1F8
+ fa-trash-alt; U+F2ED
+ fa-tree; U+F1BB
+ fa-trophy; U+F091
+ fa-truck; U+F0D1
+ fa-truck-loading; U+F4DE
+ fa-truck-monster; U+F63B
+ fa-truck-moving; U+F4DF
+ fa-truck-pickup; U+F63C
+ fa-tshirt; U+F553
+ fa-tty; U+F1E4
+ fa-tv; U+F26C
+ fa-umbrella; U+F0E9
+ fa-umbrella-beach; U+F5CA
+ fa-underline; U+F0CD
+ fa-undo; U+F0E2
+ fa-undo-alt; U+F2EA
+ fa-universal-access; U+F29A
+ fa-university; U+F19C
+ fa-unlink; U+F127
+ fa-unlock; U+F09C
+ fa-unlock-alt; U+F13E
+ fa-upload; U+F093
+ fa-user; U+F007
+ fa-user-alt; U+F406
+ fa-user-alt-slash; U+F4FA
+ fa-user-astronaut; U+F4FB
+ fa-user-check; U+F4FC
+ fa-user-circle; U+F2BD
+ fa-user-clock; U+F4FD
+ fa-user-cog; U+F4FE
+ fa-user-edit; U+F4FF
+ fa-user-friends; U+F500
+ fa-user-graduate; U+F501
+ fa-user-injured; U+F728
+ fa-user-lock; U+F502
+ fa-user-md; U+F0F0
+ fa-user-minus; U+F503
+ fa-user-ninja; U+F504
+ fa-user-plus; U+F234
+ fa-user-secret; U+F21B
+ fa-user-shield; U+F505
+ fa-user-slash; U+F506
+ fa-user-tag; U+F507
+ fa-user-tie; U+F508
+ fa-user-times; U+F235
+ fa-users; U+F0C0
+ fa-users-cog; U+F509
+ fa-utensil-spoon; U+F2E5
+ fa-utensils; U+F2E7
+ fa-vector-square; U+F5CB
+ fa-venus; U+F221
+ fa-venus-double; U+F226
+ fa-venus-mars; U+F228
+ fa-vial; U+F492
+ fa-vials; U+F493
+ fa-video; U+F03D
+ fa-video-slash; U+F4E2
+ fa-vihara; U+F6A7
+ fa-volleyball-ball; U+F45F
+ fa-volume-down; U+F027
+ fa-volume-mute; U+F6A9
+ fa-volume-off; U+F026
+ fa-volume-up; U+F028
+ fa-vote-yea; U+F772
+ fa-vr-cardboard; U+F729
+ fa-walking; U+F554
+ fa-wallet; U+F555
+ fa-warehouse; U+F494
+ fa-water; U+F773
+ fa-weight; U+F496
+ fa-weight-hanging; U+F5CD
+ fa-wheelchair; U+F193
+ fa-wifi; U+F1EB
+ fa-wind; U+F72E
+ fa-window-close; U+F410
+ fa-window-maximize; U+F2D0
+ fa-window-minimize; U+F2D1
+ fa-window-restore; U+F2D2
+ fa-wine-bottle; U+F72F
+ fa-wine-glass; U+F4E3
+ fa-wine-glass-alt; U+F5CE
+ fa-won-sign; U+F159
+ fa-wrench; U+F0AD
+ fa-x-ray; U+F497
+ fa-yen-sign; U+F157
+ fa-yin-yang; U+F6AD
+ fa-address-book; U+F2B9
+ fa-address-card; U+F2BB
+ fa-angry; U+F556
+ fa-arrow-alt-circle-down; U+F358
+ fa-arrow-alt-circle-left; U+F359
+ fa-arrow-alt-circle-right; U+F35A
+ fa-arrow-alt-circle-up; U+F35B
+ fa-bell; U+F0F3
+ fa-bell-slash; U+F1F6
+ fa-bookmark; U+F02E
+ fa-building; U+F1AD
+ fa-calendar; U+F133
+ fa-calendar-alt; U+F073
+ fa-calendar-check; U+F274
+ fa-calendar-minus; U+F272
+ fa-calendar-plus; U+F271
+ fa-calendar-times; U+F273
+ fa-caret-square-down; U+F150
+ fa-caret-square-left; U+F191
+ fa-caret-square-right; U+F152
+ fa-caret-square-up; U+F151
+ fa-chart-bar; U+F080
+ fa-check-circle; U+F058
+ fa-check-square; U+F14A
+ fa-circle; U+F111
+ fa-clipboard; U+F328
+ fa-clock; U+F017
+ fa-clone; U+F24D
+ fa-closed-captioning; U+F20A
+ fa-comment; U+F075
+ fa-comment-alt; U+F27A
+ fa-comment-dots; U+F4AD
+ fa-comments; U+F086
+ fa-compass; U+F14E
+ fa-copy; U+F0C5
+ fa-copyright; U+F1F9
+ fa-credit-card; U+F09D
+ fa-dizzy; U+F567
+ fa-dot-circle; U+F192
+ fa-edit; U+F044
+ fa-envelope; U+F0E0
+ fa-envelope-open; U+F2B6
+ fa-eye; U+F06E
+ fa-eye-slash; U+F070
+ fa-file; U+F15B
+ fa-file-alt; U+F15C
+ fa-file-archive; U+F1C6
+ fa-file-audio; U+F1C7
+ fa-file-code; U+F1C9
+ fa-file-excel; U+F1C3
+ fa-file-image; U+F1C5
+ fa-file-pdf; U+F1C1
+ fa-file-powerpoint; U+F1C4
+ fa-file-video; U+F1C8
+ fa-file-word; U+F1C2
+ fa-flag; U+F024
+ fa-flushed; U+F579
+ fa-folder; U+F07B
+ fa-folder-open; U+F07C
+ fa-font-awesome-logo-full; U+F4E6
+ fa-frown; U+F119
+ fa-frown-open; U+F57A
+ fa-futbol; U+F1E3
+ fa-gem; U+F3A5
+ fa-grimace; U+F57F
+ fa-grin; U+F580
+ fa-grin-alt; U+F581
+ fa-grin-beam; U+F582
+ fa-grin-beam-sweat; U+F583
+ fa-grin-hearts; U+F584
+ fa-grin-squint; U+F585
+ fa-grin-squint-tears; U+F586
+ fa-grin-stars; U+F587
+ fa-grin-tears; U+F588
+ fa-grin-tongue; U+F589
+ fa-grin-tongue-squint; U+F58A
+ fa-grin-tongue-wink; U+F58B
+ fa-grin-wink; U+F58C
+ fa-hand-lizard; U+F258
+ fa-hand-paper; U+F256
+ fa-hand-peace; U+F25B
+ fa-hand-point-down; U+F0A7
+ fa-hand-point-left; U+F0A5
+ fa-hand-point-right; U+F0A4
+ fa-hand-point-up; U+F0A6
+ fa-hand-pointer; U+F25A
+ fa-hand-rock; U+F255
+ fa-hand-scissors; U+F257
+ fa-hand-spock; U+F259
+ fa-handshake; U+F2B5
+ fa-hdd; U+F0A0
+ fa-heart; U+F004
+ fa-hospital; U+F0F8
+ fa-hourglass; U+F254
+ fa-id-badge; U+F2C1
+ fa-id-card; U+F2C2
+ fa-image; U+F03E
+ fa-images; U+F302
+ fa-keyboard; U+F11C
+ fa-kiss; U+F596
+ fa-kiss-beam; U+F597
+ fa-kiss-wink-heart; U+F598
+ fa-laugh; U+F599
+ fa-laugh-beam; U+F59A
+ fa-laugh-squint; U+F59B
+ fa-laugh-wink; U+F59C
+ fa-lemon; U+F094
+ fa-life-ring; U+F1CD
+ fa-lightbulb; U+F0EB
+ fa-list-alt; U+F022
+ fa-map; U+F279
+ fa-meh; U+F11A
+ fa-meh-blank; U+F5A4
+ fa-meh-rolling-eyes; U+F5A5
+ fa-minus-square; U+F146
+ fa-money-bill-alt; U+F3D1
+ fa-moon; U+F186
+ fa-newspaper; U+F1EA
+ fa-object-group; U+F247
+ fa-object-ungroup; U+F248
+ fa-paper-plane; U+F1D8
+ fa-pause-circle; U+F28B
+ fa-play-circle; U+F144
+ fa-plus-square; U+F0FE
+ fa-question-circle; U+F059
+ fa-registered; U+F25D
+ fa-sad-cry; U+F5B3
+ fa-sad-tear; U+F5B4
+ fa-save; U+F0C7
+ fa-share-square; U+F14D
+ fa-smile; U+F118
+ fa-smile-beam; U+F5B8
+ fa-smile-wink; U+F4DA
+ fa-snowflake; U+F2DC
+ fa-square; U+F0C8
+ fa-star; U+F005
+ fa-star-half; U+F089
+ fa-sticky-note; U+F249
+ fa-stop-circle; U+F28D
+ fa-sun; U+F185
+ fa-surprise; U+F5C2
+ fa-thumbs-down; U+F165
+ fa-thumbs-up; U+F164
+ fa-times-circle; U+F057
+ fa-tired; U+F5C8
+ fa-trash-alt; U+F2ED
+ fa-user; U+F007
+ fa-user-circle; U+F2BD
+ fa-window-close; U+F410
+ fa-window-maximize; U+F2D0
+ fa-window-minimize; U+F2D1
+ fa-window-restore; U+F2D2
+ fa-500px; U+F26E
+ fa-accessible-icon; U+F368
+ fa-accusoft; U+F369
+ fa-acquisitions-incorporated; U+F6AF
+ fa-adn; U+F170
+ fa-adobe; U+F778
+ fa-adversal; U+F36A
+ fa-affiliatetheme; U+F36B
+ fa-algolia; U+F36C
+ fa-alipay; U+F642
+ fa-amazon; U+F270
+ fa-amazon-pay; U+F42C
+ fa-amilia; U+F36D
+ fa-android; U+F17B
+ fa-angellist; U+F209
+ fa-angrycreative; U+F36E
+ fa-angular; U+F420
+ fa-app-store; U+F36F
+ fa-app-store-ios; U+F370
+ fa-apper; U+F371
+ fa-apple; U+F179
+ fa-apple-pay; U+F415
+ fa-artstation; U+F77A
+ fa-asymmetrik; U+F372
+ fa-atlassian; U+F77B
+ fa-audible; U+F373
+ fa-autoprefixer; U+F41C
+ fa-avianex; U+F374
+ fa-aviato; U+F421
+ fa-aws; U+F375
+ fa-bandcamp; U+F2D5
+ fa-behance; U+F1B4
+ fa-behance-square; U+F1B5
+ fa-bimobject; U+F378
+ fa-bitbucket; U+F171
+ fa-bitcoin; U+F379
+ fa-bity; U+F37A
+ fa-black-tie; U+F27E
+ fa-blackberry; U+F37B
+ fa-blogger; U+F37C
+ fa-blogger-b; U+F37D
+ fa-bluetooth; U+F293
+ fa-bluetooth-b; U+F294
+ fa-btc; U+F15A
+ fa-buromobelexperte; U+F37F
+ fa-buysellads; U+F20D
+ fa-canadian-maple-leaf; U+F785
+ fa-cc-amazon-pay; U+F42D
+ fa-cc-amex; U+F1F3
+ fa-cc-apple-pay; U+F416
+ fa-cc-diners-club; U+F24C
+ fa-cc-discover; U+F1F2
+ fa-cc-jcb; U+F24B
+ fa-cc-mastercard; U+F1F1
+ fa-cc-paypal; U+F1F4
+ fa-cc-stripe; U+F1F5
+ fa-cc-visa; U+F1F0
+ fa-centercode; U+F380
+ fa-centos; U+F789
+ fa-chrome; U+F268
+ fa-cloudscale; U+F383
+ fa-cloudsmith; U+F384
+ fa-cloudversify; U+F385
+ fa-codepen; U+F1CB
+ fa-codiepie; U+F284
+ fa-confluence; U+F78D
+ fa-connectdevelop; U+F20E
+ fa-contao; U+F26D
+ fa-cpanel; U+F388
+ fa-creative-commons; U+F25E
+ fa-creative-commons-by; U+F4E7
+ fa-creative-commons-nc; U+F4E8
+ fa-creative-commons-nc-eu; U+F4E9
+ fa-creative-commons-nc-jp; U+F4EA
+ fa-creative-commons-nd; U+F4EB
+ fa-creative-commons-pd; U+F4EC
+ fa-creative-commons-pd-alt; U+F4ED
+ fa-creative-commons-remix; U+F4EE
+ fa-creative-commons-sa; U+F4EF
+ fa-creative-commons-sampling; U+F4F0
+ fa-creative-commons-sampling-plus; U+F4F1
+ fa-creative-commons-share; U+F4F2
+ fa-creative-commons-zero; U+F4F3
+ fa-critical-role; U+F6C9
+ fa-css3; U+F13C
+ fa-css3-alt; U+F38B
+ fa-cuttlefish; U+F38C
+ fa-d-and-d; U+F38D
+ fa-d-and-d-beyond; U+F6CA
+ fa-dashcube; U+F210
+ fa-delicious; U+F1A5
+ fa-deploydog; U+F38E
+ fa-deskpro; U+F38F
+ fa-dev; U+F6CC
+ fa-deviantart; U+F1BD
+ fa-dhl; U+F790
+ fa-diaspora; U+F791
+ fa-digg; U+F1A6
+ fa-digital-ocean; U+F391
+ fa-discord; U+F392
+ fa-discourse; U+F393
+ fa-dochub; U+F394
+ fa-docker; U+F395
+ fa-draft2digital; U+F396
+ fa-dribbble; U+F17D
+ fa-dribbble-square; U+F397
+ fa-dropbox; U+F16B
+ fa-drupal; U+F1A9
+ fa-dyalog; U+F399
+ fa-earlybirds; U+F39A
+ fa-ebay; U+F4F4
+ fa-edge; U+F282
+ fa-elementor; U+F430
+ fa-ello; U+F5F1
+ fa-ember; U+F423
+ fa-empire; U+F1D1
+ fa-envira; U+F299
+ fa-erlang; U+F39D
+ fa-ethereum; U+F42E
+ fa-etsy; U+F2D7
+ fa-expeditedssl; U+F23E
+ fa-facebook; U+F09A
+ fa-facebook-f; U+F39E
+ fa-facebook-messenger; U+F39F
+ fa-facebook-square; U+F082
+ fa-fantasy-flight-games; U+F6DC
+ fa-fedex; U+F797
+ fa-fedora; U+F798
+ fa-figma; U+F799
+ fa-firefox; U+F269
+ fa-first-order; U+F2B0
+ fa-first-order-alt; U+F50A
+ fa-firstdraft; U+F3A1
+ fa-flickr; U+F16E
+ fa-flipboard; U+F44D
+ fa-fly; U+F417
+ fa-font-awesome; U+F2B4
+ fa-font-awesome-alt; U+F35C
+ fa-font-awesome-flag; U+F425
+ fa-font-awesome-logo-full; U+F4E6
+ fa-fonticons; U+F280
+ fa-fonticons-fi; U+F3A2
+ fa-fort-awesome; U+F286
+ fa-fort-awesome-alt; U+F3A3
+ fa-forumbee; U+F211
+ fa-foursquare; U+F180
+ fa-free-code-camp; U+F2C5
+ fa-freebsd; U+F3A4
+ fa-fulcrum; U+F50B
+ fa-galactic-republic; U+F50C
+ fa-galactic-senate; U+F50D
+ fa-get-pocket; U+F265
+ fa-gg; U+F260
+ fa-gg-circle; U+F261
+ fa-git; U+F1D3
+ fa-git-square; U+F1D2
+ fa-github; U+F09B
+ fa-github-alt; U+F113
+ fa-github-square; U+F092
+ fa-gitkraken; U+F3A6
+ fa-gitlab; U+F296
+ fa-gitter; U+F426
+ fa-glide; U+F2A5
+ fa-glide-g; U+F2A6
+ fa-gofore; U+F3A7
+ fa-goodreads; U+F3A8
+ fa-goodreads-g; U+F3A9
+ fa-google; U+F1A0
+ fa-google-drive; U+F3AA
+ fa-google-play; U+F3AB
+ fa-google-plus; U+F2B3
+ fa-google-plus-g; U+F0D5
+ fa-google-plus-square; U+F0D4
+ fa-google-wallet; U+F1EE
+ fa-gratipay; U+F184
+ fa-grav; U+F2D6
+ fa-gripfire; U+F3AC
+ fa-grunt; U+F3AD
+ fa-gulp; U+F3AE
+ fa-hacker-news; U+F1D4
+ fa-hacker-news-square; U+F3AF
+ fa-hackerrank; U+F5F7
+ fa-hips; U+F452
+ fa-hire-a-helper; U+F3B0
+ fa-hooli; U+F427
+ fa-hornbill; U+F592
+ fa-hotjar; U+F3B1
+ fa-houzz; U+F27C
+ fa-html5; U+F13B
+ fa-hubspot; U+F3B2
+ fa-imdb; U+F2D8
+ fa-instagram; U+F16D
+ fa-intercom; U+F7AF
+ fa-internet-explorer; U+F26B
+ fa-invision; U+F7B0
+ fa-ioxhost; U+F208
+ fa-itunes; U+F3B4
+ fa-itunes-note; U+F3B5
+ fa-java; U+F4E4
+ fa-jedi-order; U+F50E
+ fa-jenkins; U+F3B6
+ fa-jira; U+F7B1
+ fa-joget; U+F3B7
+ fa-joomla; U+F1AA
+ fa-js; U+F3B8
+ fa-js-square; U+F3B9
+ fa-jsfiddle; U+F1CC
+ fa-kaggle; U+F5FA
+ fa-keybase; U+F4F5
+ fa-keycdn; U+F3BA
+ fa-kickstarter; U+F3BB
+ fa-kickstarter-k; U+F3BC
+ fa-korvue; U+F42F
+ fa-laravel; U+F3BD
+ fa-lastfm; U+F202
+ fa-lastfm-square; U+F203
+ fa-leanpub; U+F212
+ fa-less; U+F41D
+ fa-line; U+F3C0
+ fa-linkedin; U+F08C
+ fa-linkedin-in; U+F0E1
+ fa-linode; U+F2B8
+ fa-linux; U+F17C
+ fa-lyft; U+F3C3
+ fa-magento; U+F3C4
+ fa-mailchimp; U+F59E
+ fa-mandalorian; U+F50F
+ fa-markdown; U+F60F
+ fa-mastodon; U+F4F6
+ fa-maxcdn; U+F136
+ fa-medapps; U+F3C6
+ fa-medium; U+F23A
+ fa-medium-m; U+F3C7
+ fa-medrt; U+F3C8
+ fa-meetup; U+F2E0
+ fa-megaport; U+F5A3
+ fa-mendeley; U+F7B3
+ fa-microsoft; U+F3CA
+ fa-mix; U+F3CB
+ fa-mixcloud; U+F289
+ fa-mizuni; U+F3CC
+ fa-modx; U+F285
+ fa-monero; U+F3D0
+ fa-napster; U+F3D2
+ fa-neos; U+F612
+ fa-nimblr; U+F5A8
+ fa-nintendo-switch; U+F418
+ fa-node; U+F419
+ fa-node-js; U+F3D3
+ fa-npm; U+F3D4
+ fa-ns8; U+F3D5
+ fa-nutritionix; U+F3D6
+ fa-odnoklassniki; U+F263
+ fa-odnoklassniki-square; U+F264
+ fa-old-republic; U+F510
+ fa-opencart; U+F23D
+ fa-openid; U+F19B
+ fa-opera; U+F26A
+ fa-optin-monster; U+F23C
+ fa-osi; U+F41A
+ fa-page4; U+F3D7
+ fa-pagelines; U+F18C
+ fa-palfed; U+F3D8
+ fa-patreon; U+F3D9
+ fa-paypal; U+F1ED
+ fa-penny-arcade; U+F704
+ fa-periscope; U+F3DA
+ fa-phabricator; U+F3DB
+ fa-phoenix-framework; U+F3DC
+ fa-phoenix-squadron; U+F511
+ fa-php; U+F457
+ fa-pied-piper; U+F2AE
+ fa-pied-piper-alt; U+F1A8
+ fa-pied-piper-hat; U+F4E5
+ fa-pied-piper-pp; U+F1A7
+ fa-pinterest; U+F0D2
+ fa-pinterest-p; U+F231
+ fa-pinterest-square; U+F0D3
+ fa-playstation; U+F3DF
+ fa-product-hunt; U+F288
+ fa-pushed; U+F3E1
+ fa-python; U+F3E2
+ fa-qq; U+F1D6
+ fa-quinscape; U+F459
+ fa-quora; U+F2C4
+ fa-r-project; U+F4F7
+ fa-raspberry-pi; U+F7BB
+ fa-ravelry; U+F2D9
+ fa-react; U+F41B
+ fa-reacteurope; U+F75D
+ fa-readme; U+F4D5
+ fa-rebel; U+F1D0
+ fa-red-river; U+F3E3
+ fa-reddit; U+F1A1
+ fa-reddit-alien; U+F281
+ fa-reddit-square; U+F1A2
+ fa-redhat; U+F7BC
+ fa-renren; U+F18B
+ fa-replyd; U+F3E6
+ fa-researchgate; U+F4F8
+ fa-resolving; U+F3E7
+ fa-rev; U+F5B2
+ fa-rocketchat; U+F3E8
+ fa-rockrms; U+F3E9
+ fa-safari; U+F267
+ fa-sass; U+F41E
+ fa-schlix; U+F3EA
+ fa-scribd; U+F28A
+ fa-searchengin; U+F3EB
+ fa-sellcast; U+F2DA
+ fa-sellsy; U+F213
+ fa-servicestack; U+F3EC
+ fa-shirtsinbulk; U+F214
+ fa-shopware; U+F5B5
+ fa-simplybuilt; U+F215
+ fa-sistrix; U+F3EE
+ fa-sith; U+F512
+ fa-sketch; U+F7C6
+ fa-skyatlas; U+F216
+ fa-skype; U+F17E
+ fa-slack; U+F198
+ fa-slack-hash; U+F3EF
+ fa-slideshare; U+F1E7
+ fa-snapchat; U+F2AB
+ fa-snapchat-ghost; U+F2AC
+ fa-snapchat-square; U+F2AD
+ fa-soundcloud; U+F1BE
+ fa-sourcetree; U+F7D3
+ fa-speakap; U+F3F3
+ fa-spotify; U+F1BC
+ fa-squarespace; U+F5BE
+ fa-stack-exchange; U+F18D
+ fa-stack-overflow; U+F16C
+ fa-staylinked; U+F3F5
+ fa-steam; U+F1B6
+ fa-steam-square; U+F1B7
+ fa-steam-symbol; U+F3F6
+ fa-sticker-mule; U+F3F7
+ fa-strava; U+F428
+ fa-stripe; U+F429
+ fa-stripe-s; U+F42A
+ fa-studiovinari; U+F3F8
+ fa-stumbleupon; U+F1A4
+ fa-stumbleupon-circle; U+F1A3
+ fa-superpowers; U+F2DD
+ fa-supple; U+F3F9
+ fa-suse; U+F7D6
+ fa-teamspeak; U+F4F9
+ fa-telegram; U+F2C6
+ fa-telegram-plane; U+F3FE
+ fa-tencent-weibo; U+F1D5
+ fa-the-red-yeti; U+F69D
+ fa-themeco; U+F5C6
+ fa-themeisle; U+F2B2
+ fa-think-peaks; U+F731
+ fa-trade-federation; U+F513
+ fa-trello; U+F181
+ fa-tripadvisor; U+F262
+ fa-tumblr; U+F173
+ fa-tumblr-square; U+F174
+ fa-twitch; U+F1E8
+ fa-twitter; U+F099
+ fa-twitter-square; U+F081
+ fa-typo3; U+F42B
+ fa-uber; U+F402
+ fa-ubuntu; U+F7DF
+ fa-uikit; U+F403
+ fa-uniregistry; U+F404
+ fa-untappd; U+F405
+ fa-ups; U+F7E0
+ fa-usb; U+F287
+ fa-usps; U+F7E1
+ fa-ussunnah; U+F407
+ fa-vaadin; U+F408
+ fa-viacoin; U+F237
+ fa-viadeo; U+F2A9
+ fa-viadeo-square; U+F2AA
+ fa-viber; U+F409
+ fa-vimeo; U+F40A
+ fa-vimeo-square; U+F194
+ fa-vimeo-v; U+F27D
+ fa-vine; U+F1CA
+ fa-vk; U+F189
+ fa-vnv; U+F40B
+ fa-vuejs; U+F41F
+ fa-weebly; U+F5CC
+ fa-weibo; U+F18A
+ fa-weixin; U+F1D7
+ fa-whatsapp; U+F232
+ fa-whatsapp-square; U+F40C
+ fa-whmcs; U+F40D
+ fa-wikipedia-w; U+F266
+ fa-windows; U+F17A
+ fa-wix; U+F5CF
+ fa-wizards-of-the-coast; U+F730
+ fa-wolf-pack-battalion; U+F514
+ fa-wordpress; U+F19A
+ fa-wordpress-simple; U+F411
+ fa-wpbeginner; U+F297
+ fa-wpexplorer; U+F2DE
+ fa-wpforms; U+F298
+ fa-wpressr; U+F3E4
+ fa-xbox; U+F412
+ fa-xing; U+F168
+ fa-xing-square; U+F169
+ fa-y-combinator; U+F23B
+ fa-yahoo; U+F19E
+ fa-yandex; U+F413
+ fa-yandex-international; U+F414
+ fa-yarn; U+F7E3
+ fa-yelp; U+F1E9
+ fa-yoast; U+F2B1
+ fa-youtube; U+F167
+ fa-youtube-square; U+F431
+ fa-zhihu; U+F63F
diff --git a/scripts/fontawesome-menu/icons/regular b/scripts/fontawesome-menu/icons/regular
new file mode 100644
index 0000000..86f31b2
--- /dev/null
+++ b/scripts/fontawesome-menu/icons/regular
@@ -0,0 +1,151 @@
+|address-book
+|address-card
+|angry
+|arrow-alt-circle-down
+|arrow-alt-circle-left
+|arrow-alt-circle-right
+|arrow-alt-circle-up
+|bell
+|bell-slash
+|bookmark
+|building
+|calendar
+|calendar-alt
+|calendar-check
+|calendar-minus
+|calendar-plus
+|calendar-times
+|caret-square-down
+|caret-square-left
+|caret-square-right
+|caret-square-up
+|chart-bar
+|check-circle
+|check-square
+|circle
+|clipboard
+|clock
+|clone
+|closed-captioning
+|comment
+|comment-alt
+|comment-dots
+|comments
+|compass
+|copy
+|copyright
+|credit-card
+|dizzy
+|dot-circle
+|edit
+|envelope
+|envelope-open
+|eye
+|eye-slash
+|file
+|file-alt
+|file-archive
+|file-audio
+|file-code
+|file-excel
+|file-image
+|file-pdf
+|file-powerpoint
+|file-video
+|file-word
+|flag
+|flushed
+|folder
+|folder-open
+|frown
+|frown-open
+|futbol
+|gem
+|grimace
+|grin
+|grin-alt
+|grin-beam
+|grin-beam-sweat
+|grin-hearts
+|grin-squint
+|grin-squint-tears
+|grin-stars
+|grin-tears
+|grin-tongue
+|grin-tongue-squint
+|grin-tongue-wink
+|grin-wink
+|hand-lizard
+|hand-paper
+|hand-peace
+|hand-point-down
+|hand-point-left
+|hand-point-right
+|hand-point-up
+|hand-pointer
+|hand-rock
+|hand-scissors
+|hand-spock
+|handshake
+|hdd
+|heart
+|hospital
+|hourglass
+|id-badge
+|id-card
+|image
+|images
+|keyboard
+|kiss
+|kiss-beam
+|kiss-wink-heart
+|laugh
+|laugh-beam
+|laugh-squint
+|laugh-wink
+|lemon
+|life-ring
+|lightbulb
+|list-alt
+|map
+|meh
+|meh-blank
+|meh-rolling-eyes
+|minus-square
+|money-bill-alt
+|moon
+|newspaper
+|object-group
+|object-ungroup
+|paper-plane
+|pause-circle
+|play-circle
+|plus-square
+|question-circle
+|registered
+|sad-cry
+|sad-tear
+|save
+|share-square
+|smile
+|smile-beam
+|smile-wink
+|snowflake
+|square
+|star
+|star-half
+|sticky-note
+|stop-circle
+|sun
+|surprise
+|thumbs-down
+|thumbs-up
+|times-circle
+|tired
+|trash-alt
+|user
+|user-circle
+|window-close
+|window-maximize
+|window-minimize
+|window-restore \ No newline at end of file
diff --git a/scripts/fontawesome-menu/icons/solid b/scripts/fontawesome-menu/icons/solid
new file mode 100644
index 0000000..b77889d
--- /dev/null
+++ b/scripts/fontawesome-menu/icons/solid
@@ -0,0 +1,964 @@
+|ad
+|address-book
+|address-card
+|adjust
+|air-freshener
+|align-center
+|align-justify
+|align-left
+|align-right
+|allergies
+|ambulance
+|american-sign-language-interpreting
+|anchor
+|angle-double-down
+|angle-double-left
+|angle-double-right
+|angle-double-up
+|angle-down
+|angle-left
+|angle-right
+|angle-up
+|angry
+|ankh
+|apple-alt
+|archive
+|archway
+|arrow-alt-circle-down
+|arrow-alt-circle-left
+|arrow-alt-circle-right
+|arrow-alt-circle-up
+|arrow-circle-down
+|arrow-circle-left
+|arrow-circle-right
+|arrow-circle-up
+|arrow-down
+|arrow-left
+|arrow-right
+|arrow-up
+|arrows-alt
+|arrows-alt-h
+|arrows-alt-v
+|assistive-listening-systems
+|asterisk
+|at
+|atlas
+|atom
+|audio-description
+|award
+|baby
+|baby-carriage
+|backspace
+|backward
+|bacon
+|bahai
+|balance-scale
+|balance-scale-left
+|balance-scale-right
+|ban
+|band-aid
+|barcode
+|bars
+|baseball-ball
+|basketball-ball
+|bath
+|battery-empty
+|battery-full
+|battery-half
+|battery-quarter
+|battery-three-quarters
+|bed
+|beer
+|bell
+|bell-slash
+|bezier-curve
+|bible
+|bicycle
+|biking
+|binoculars
+|biohazard
+|birthday-cake
+|blender
+|blender-phone
+|blind
+|blog
+|bold
+|bolt
+|bomb
+|bone
+|bong
+|book
+|book-dead
+|book-medical
+|book-open
+|book-reader
+|bookmark
+|border-all
+|border-none
+|border-style
+|bowling-ball
+|box
+|box-open
+|boxes
+|braille
+|brain
+|bread-slice
+|briefcase
+|briefcase-medical
+|broadcast-tower
+|broom
+|brush
+|bug
+|building
+|bullhorn
+|bullseye
+|burn
+|bus
+|bus-alt
+|business-time
+|calculator
+|calendar
+|calendar-alt
+|calendar-check
+|calendar-day
+|calendar-minus
+|calendar-plus
+|calendar-times
+|calendar-week
+|camera
+|camera-retro
+|campground
+|candy-cane
+|cannabis
+|capsules
+|car
+|car-alt
+|car-battery
+|car-crash
+|car-side
+|caravan
+|caret-down
+|caret-left
+|caret-right
+|caret-square-down
+|caret-square-left
+|caret-square-right
+|caret-square-up
+|caret-up
+|carrot
+|cart-arrow-down
+|cart-plus
+|cash-register
+|cat
+|certificate
+|chair
+|chalkboard
+|chalkboard-teacher
+|charging-station
+|chart-area
+|chart-bar
+|chart-line
+|chart-pie
+|check
+|check-circle
+|check-double
+|check-square
+|cheese
+|chess
+|chess-bishop
+|chess-board
+|chess-king
+|chess-knight
+|chess-pawn
+|chess-queen
+|chess-rook
+|chevron-circle-down
+|chevron-circle-left
+|chevron-circle-right
+|chevron-circle-up
+|chevron-down
+|chevron-left
+|chevron-right
+|chevron-up
+|child
+|church
+|circle
+|circle-notch
+|city
+|clinic-medical
+|clipboard
+|clipboard-check
+|clipboard-list
+|clock
+|clone
+|closed-captioning
+|cloud
+|cloud-download-alt
+|cloud-meatball
+|cloud-moon
+|cloud-moon-rain
+|cloud-rain
+|cloud-showers-heavy
+|cloud-sun
+|cloud-sun-rain
+|cloud-upload-alt
+|cocktail
+|code
+|code-branch
+|coffee
+|cog
+|cogs
+|coins
+|columns
+|comment
+|comment-alt
+|comment-dollar
+|comment-dots
+|comment-medical
+|comment-slash
+|comments
+|comments-dollar
+|compact-disc
+|compass
+|compress
+|compress-alt
+|compress-arrows-alt
+|concierge-bell
+|cookie
+|cookie-bite
+|copy
+|copyright
+|couch
+|credit-card
+|crop
+|crop-alt
+|cross
+|crosshairs
+|crow
+|crown
+|crutch
+|cube
+|cubes
+|cut
+|database
+|deaf
+|democrat
+|desktop
+|dharmachakra
+|diagnoses
+|dice
+|dice-d20
+|dice-d6
+|dice-five
+|dice-four
+|dice-one
+|dice-six
+|dice-three
+|dice-two
+|digital-tachograph
+|directions
+|divide
+|dizzy
+|dna
+|dog
+|dollar-sign
+|dolly
+|dolly-flatbed
+|donate
+|door-closed
+|door-open
+|dot-circle
+|dove
+|download
+|drafting-compass
+|dragon
+|draw-polygon
+|drum
+|drum-steelpan
+|drumstick-bite
+|dumbbell
+|dumpster
+|dumpster-fire
+|dungeon
+|edit
+|egg
+|eject
+|ellipsis-h
+|ellipsis-v
+|envelope
+|envelope-open
+|envelope-open-text
+|envelope-square
+|equals
+|eraser
+|ethernet
+|euro-sign
+|exchange-alt
+|exclamation
+|exclamation-circle
+|exclamation-triangle
+|expand
+|expand-alt
+|expand-arrows-alt
+|external-link-alt
+|external-link-square-alt
+|eye
+|eye-dropper
+|eye-slash
+|fan
+|fast-backward
+|fast-forward
+|fax
+|feather
+|feather-alt
+|female
+|fighter-jet
+|file
+|file-alt
+|file-archive
+|file-audio
+|file-code
+|file-contract
+|file-csv
+|file-download
+|file-excel
+|file-export
+|file-image
+|file-import
+|file-invoice
+|file-invoice-dollar
+|file-medical
+|file-medical-alt
+|file-pdf
+|file-powerpoint
+|file-prescription
+|file-signature
+|file-upload
+|file-video
+|file-word
+|fill
+|fill-drip
+|film
+|filter
+|fingerprint
+|fire
+|fire-alt
+|fire-extinguisher
+|first-aid
+|fish
+|fist-raised
+|flag
+|flag-checkered
+|flag-usa
+|flask
+|flushed
+|folder
+|folder-minus
+|folder-open
+|folder-plus
+|font
+|football-ball
+|forward
+|frog
+|frown
+|frown-open
+|funnel-dollar
+|futbol
+|gamepad
+|gas-pump
+|gavel
+|gem
+|genderless
+|ghost
+|gift
+|gifts
+|glass-cheers
+|glass-martini
+|glass-martini-alt
+|glass-whiskey
+|glasses
+|globe
+|globe-africa
+|globe-americas
+|globe-asia
+|globe-europe
+|golf-ball
+|gopuram
+|graduation-cap
+|greater-than
+|greater-than-equal
+|grimace
+|grin
+|grin-alt
+|grin-beam
+|grin-beam-sweat
+|grin-hearts
+|grin-squint
+|grin-squint-tears
+|grin-stars
+|grin-tears
+|grin-tongue
+|grin-tongue-squint
+|grin-tongue-wink
+|grin-wink
+|grip-horizontal
+|grip-lines
+|grip-lines-vertical
+|grip-vertical
+|guitar
+|h-square
+|hamburger
+|hammer
+|hamsa
+|hand-holding
+|hand-holding-heart
+|hand-holding-usd
+|hand-lizard
+|hand-middle-finger
+|hand-paper
+|hand-peace
+|hand-point-down
+|hand-point-left
+|hand-point-right
+|hand-point-up
+|hand-pointer
+|hand-rock
+|hand-scissors
+|hand-spock
+|hands
+|hands-helping
+|handshake
+|hanukiah
+|hard-hat
+|hashtag
+|hat-cowboy
+|hat-cowboy-side
+|hat-wizard
+|hdd
+|heading
+|headphones
+|headphones-alt
+|headset
+|heart
+|heart-broken
+|heartbeat
+|helicopter
+|highlighter
+|hiking
+|hippo
+|history
+|hockey-puck
+|holly-berry
+|home
+|horse
+|horse-head
+|hospital
+|hospital-alt
+|hospital-symbol
+|hot-tub
+|hotdog
+|hotel
+|hourglass
+|hourglass-end
+|hourglass-half
+|hourglass-start
+|house-damage
+|hryvnia
+|i-cursor
+|ice-cream
+|icicles
+|icons
+|id-badge
+|id-card
+|id-card-alt
+|igloo
+|image
+|images
+|inbox
+|indent
+|industry
+|infinity
+|info
+|info-circle
+|italic
+|jedi
+|joint
+|journal-whills
+|kaaba
+|key
+|keyboard
+|khanda
+|kiss
+|kiss-beam
+|kiss-wink-heart
+|kiwi-bird
+|landmark
+|language
+|laptop
+|laptop-code
+|laptop-medical
+|laugh
+|laugh-beam
+|laugh-squint
+|laugh-wink
+|layer-group
+|leaf
+|lemon
+|less-than
+|less-than-equal
+|level-down-alt
+|level-up-alt
+|life-ring
+|lightbulb
+|link
+|lira-sign
+|list
+|list-alt
+|list-ol
+|list-ul
+|location-arrow
+|lock
+|lock-open
+|long-arrow-alt-down
+|long-arrow-alt-left
+|long-arrow-alt-right
+|long-arrow-alt-up
+|low-vision
+|luggage-cart
+|magic
+|magnet
+|mail-bulk
+|male
+|map
+|map-marked
+|map-marked-alt
+|map-marker
+|map-marker-alt
+|map-pin
+|map-signs
+|marker
+|mars
+|mars-double
+|mars-stroke
+|mars-stroke-h
+|mars-stroke-v
+|mask
+|medal
+|medkit
+|meh
+|meh-blank
+|meh-rolling-eyes
+|memory
+|menorah
+|mercury
+|meteor
+|microchip
+|microphone
+|microphone-alt
+|microphone-alt-slash
+|microphone-slash
+|microscope
+|minus
+|minus-circle
+|minus-square
+|mitten
+|mobile
+|mobile-alt
+|money-bill
+|money-bill-alt
+|money-bill-wave
+|money-bill-wave-alt
+|money-check
+|money-check-alt
+|monument
+|moon
+|mortar-pestle
+|mosque
+|motorcycle
+|mountain
+|mouse
+|mouse-pointer
+|mug-hot
+|music
+|network-wired
+|neuter
+|newspaper
+|not-equal
+|notes-medical
+|object-group
+|object-ungroup
+|oil-can
+|om
+|otter
+|outdent
+|pager
+|paint-brush
+|paint-roller
+|palette
+|pallet
+|paper-plane
+|paperclip
+|parachute-box
+|paragraph
+|parking
+|passport
+|pastafarianism
+|paste
+|pause
+|pause-circle
+|paw
+|peace
+|pen
+|pen-alt
+|pen-fancy
+|pen-nib
+|pen-square
+|pencil-alt
+|pencil-ruler
+|people-carry
+|pepper-hot
+|percent
+|percentage
+|person-booth
+|phone
+|phone-alt
+|phone-slash
+|phone-square
+|phone-square-alt
+|phone-volume
+|photo-video
+|piggy-bank
+|pills
+|pizza-slice
+|place-of-worship
+|plane
+|plane-arrival
+|plane-departure
+|play
+|play-circle
+|plug
+|plus
+|plus-circle
+|plus-square
+|podcast
+|poll
+|poll-h
+|poo
+|poo-storm
+|poop
+|portrait
+|pound-sign
+|power-off
+|pray
+|praying-hands
+|prescription
+|prescription-bottle
+|prescription-bottle-alt
+|print
+|procedures
+|project-diagram
+|puzzle-piece
+|qrcode
+|question
+|question-circle
+|quidditch
+|quote-left
+|quote-right
+|quran
+|radiation
+|radiation-alt
+|rainbow
+|random
+|receipt
+|record-vinyl
+|recycle
+|redo
+|redo-alt
+|registered
+|remove-format
+|reply
+|reply-all
+|republican
+|restroom
+|retweet
+|ribbon
+|ring
+|road
+|robot
+|rocket
+|route
+|rss
+|rss-square
+|ruble-sign
+|ruler
+|ruler-combined
+|ruler-horizontal
+|ruler-vertical
+|running
+|rupee-sign
+|sad-cry
+|sad-tear
+|satellite
+|satellite-dish
+|save
+|school
+|screwdriver
+|scroll
+|sd-card
+|search
+|search-dollar
+|search-location
+|search-minus
+|search-plus
+|seedling
+|server
+|shapes
+|share
+|share-alt
+|share-alt-square
+|share-square
+|shekel-sign
+|shield-alt
+|ship
+|shipping-fast
+|shoe-prints
+|shopping-bag
+|shopping-basket
+|shopping-cart
+|shower
+|shuttle-van
+|sign
+|sign-in-alt
+|sign-language
+|sign-out-alt
+|signal
+|signature
+|sim-card
+|sitemap
+|skating
+|skiing
+|skiing-nordic
+|skull
+|skull-crossbones
+|slash
+|sleigh
+|sliders-h
+|smile
+|smile-beam
+|smile-wink
+|smog
+|smoking
+|smoking-ban
+|sms
+|snowboarding
+|snowflake
+|snowman
+|snowplow
+|socks
+|solar-panel
+|sort
+|sort-alpha-down
+|sort-alpha-down-alt
+|sort-alpha-up
+|sort-alpha-up-alt
+|sort-amount-down
+|sort-amount-down-alt
+|sort-amount-up
+|sort-amount-up-alt
+|sort-down
+|sort-numeric-down
+|sort-numeric-down-alt
+|sort-numeric-up
+|sort-numeric-up-alt
+|sort-up
+|spa
+|space-shuttle
+|spell-check
+|spider
+|spinner
+|splotch
+|spray-can
+|square
+|square-full
+|square-root-alt
+|stamp
+|star
+|star-and-crescent
+|star-half
+|star-half-alt
+|star-of-david
+|star-of-life
+|step-backward
+|step-forward
+|stethoscope
+|sticky-note
+|stop
+|stop-circle
+|stopwatch
+|store
+|store-alt
+|stream
+|street-view
+|strikethrough
+|stroopwafel
+|subscript
+|subway
+|suitcase
+|suitcase-rolling
+|sun
+|superscript
+|surprise
+|swatchbook
+|swimmer
+|swimming-pool
+|synagogue
+|sync
+|sync-alt
+|syringe
+|table
+|table-tennis
+|tablet
+|tablet-alt
+|tablets
+|tachometer-alt
+|tag
+|tags
+|tape
+|tasks
+|taxi
+|teeth
+|teeth-open
+|temperature-high
+|temperature-low
+|tenge
+|terminal
+|text-height
+|text-width
+|th
+|th-large
+|th-list
+|theater-masks
+|thermometer
+|thermometer-empty
+|thermometer-full
+|thermometer-half
+|thermometer-quarter
+|thermometer-three-quarters
+|thumbs-down
+|thumbs-up
+|thumbtack
+|ticket-alt
+|times
+|times-circle
+|tint
+|tint-slash
+|tired
+|toggle-off
+|toggle-on
+|toilet
+|toilet-paper
+|toolbox
+|tools
+|tooth
+|torah
+|torii-gate
+|tractor
+|trademark
+|traffic-light
+論|trailer
+|train
+|tram
+|transgender
+|transgender-alt
+|trash
+|trash-alt
+|trash-restore
+|trash-restore-alt
+|tree
+|trophy
+|truck
+|truck-loading
+|truck-monster
+|truck-moving
+|truck-pickup
+|tshirt
+|tty
+|tv
+|umbrella
+|umbrella-beach
+|underline
+|undo
+|undo-alt
+|universal-access
+|university
+|unlink
+|unlock
+|unlock-alt
+|upload
+|user
+|user-alt
+|user-alt-slash
+|user-astronaut
+|user-check
+|user-circle
+|user-clock
+|user-cog
+|user-edit
+|user-friends
+|user-graduate
+|user-injured
+|user-lock
+|user-md
+|user-minus
+|user-ninja
+|user-nurse
+|user-plus
+|user-secret
+|user-shield
+|user-slash
+|user-tag
+|user-tie
+|user-times
+|users
+|users-cog
+|utensil-spoon
+|utensils
+|vector-square
+|venus
+|venus-double
+|venus-mars
+|vial
+|vials
+|video
+|video-slash
+|vihara
+|voicemail
+|volleyball-ball
+|volume-down
+|volume-mute
+|volume-off
+|volume-up
+|vote-yea
+|vr-cardboard
+|walking
+|wallet
+|warehouse
+|water
+|wave-square
+|weight
+|weight-hanging
+|wheelchair
+|wifi
+|wind
+|window-close
+|window-maximize
+|window-minimize
+|window-restore
+|wine-bottle
+|wine-glass
+|wine-glass-alt
+|won-sign
+|wrench
+|x-ray
+|yen-sign
+|yin-yang \ No newline at end of file
diff --git a/scripts/fontawesome-menu/package-lock.json b/scripts/fontawesome-menu/package-lock.json
new file mode 100644
index 0000000..5fcb473
--- /dev/null
+++ b/scripts/fontawesome-menu/package-lock.json
@@ -0,0 +1,317 @@
+{
+ "name": "fontawesome-menu",
+ "version": "0.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "agent-base": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
+ "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
+ "requires": {
+ "es6-promisify": "^5.0.0"
+ }
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "debug": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "es6-promise": {
+ "version": "4.2.8",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
+ "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
+ },
+ "es6-promisify": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
+ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
+ "requires": {
+ "es6-promise": "^4.0.3"
+ }
+ },
+ "extract-zip": {
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
+ "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
+ "requires": {
+ "concat-stream": "1.6.2",
+ "debug": "2.6.9",
+ "mkdirp": "0.5.1",
+ "yauzl": "2.4.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "fd-slicer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
+ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "requires": {
+ "pend": "~1.2.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "https-proxy-agent": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz",
+ "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==",
+ "requires": {
+ "agent-base": "^4.3.0",
+ "debug": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "mime": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+ "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA=="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
+ },
+ "proxy-from-env": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
+ "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4="
+ },
+ "puppeteer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.0.0.tgz",
+ "integrity": "sha512-t3MmTWzQxPRP71teU6l0jX47PHXlc4Z52sQv4LJQSZLq1ttkKS2yGM3gaI57uQwZkNaoGd0+HPPMELZkcyhlqA==",
+ "requires": {
+ "debug": "^4.1.0",
+ "extract-zip": "^1.6.6",
+ "https-proxy-agent": "^3.0.0",
+ "mime": "^2.0.3",
+ "progress": "^2.0.1",
+ "proxy-from-env": "^1.0.0",
+ "rimraf": "^2.6.1",
+ "ws": "^6.1.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "ws": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+ "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "yauzl": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
+ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "requires": {
+ "fd-slicer": "~1.0.1"
+ }
+ }
+ }
+}
diff --git a/scripts/fontawesome-menu/package.json b/scripts/fontawesome-menu/package.json
new file mode 100644
index 0000000..470b65c
--- /dev/null
+++ b/scripts/fontawesome-menu/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "fontawesome-menu",
+ "version": "0.0.0",
+ "description": "__",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "__"
+ },
+ "keywords": [
+ "__"
+ ],
+ "author": "Akshay Nair",
+ "license": "MIT",
+ "dependencies": {
+ "puppeteer": "^2.0.0"
+ }
+}
diff --git a/scripts/fontawesome-menu/populate-fontsheet.js b/scripts/fontawesome-menu/populate-fontsheet.js
new file mode 100644
index 0000000..c41f7ad
--- /dev/null
+++ b/scripts/fontawesome-menu/populate-fontsheet.js
@@ -0,0 +1,54 @@
+const puppeteer = require('puppeteer');
+const fs = require('fs');
+const path = require('path');
+
+const getTabBtnSelector = type => `[href="/cheatsheet/free/${type}"]`;
+
+
+const types = ['solid', 'regular', 'brands'];
+
+async function start() {
+ const b = await puppeteer.launch({ headless: true });
+
+ const p = await b.newPage();
+
+ console.log('Downloading...');
+ await p.goto('https://fontawesome.com/cheatsheet/free/solid');
+
+ const icons = {};
+
+ for (const type of types) {
+ await p.click(getTabBtnSelector(type));
+
+ const data = await p.evaluate((type) => {
+ const getClass = type => ({
+ solid: '.fas',
+ regular: '.far',
+ brands: '.fab',
+ })[type];
+
+ return [...document.querySelectorAll(`section article`)]
+ .map($el => ({
+ label: $el.id,
+ icon: $el.querySelector(getClass(type)).textContent,
+ // group: type,
+ }));
+ }, type);
+
+ icons[type] = data;
+ }
+
+ b.close();
+
+ console.log('Saving to icons...');
+ Object.entries(icons).forEach(([type, icons]) => {
+ const iconsContent = icons
+ .map(({ label, icon, group }) => `${icon}|${label}`)
+ .join('\n');
+
+ fs.writeFileSync(path.resolve(__dirname, `icons/${type}`), iconsContent);
+ });
+}
+
+start();
+
diff --git a/scripts/image.sh b/scripts/image.sh
new file mode 100755
index 0000000..66031ec
--- /dev/null
+++ b/scripts/image.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+source "`ueberzug library`";
+
+readonly ID_PREVIEW="preview";
+
+#case "$1" in
+ #"clear") ImageLayer 0< <(
+ #ImageLayer::remove [identifier]="$ID_PREVIEW"
+ #) ;;
+ #"draw") ImageLayer 0< <(
+ #ImageLayer::add \
+ #[identifier]="$ID_PREVIEW" \
+ #[x]="$3" [y]="$4" \
+ #[max_width]="$5" [max_height]="$6" \
+ #[path]="$2";
+ #read -ern 1;
+ #) ;;
+ #"*") echo "Unknown command: '$1'" ;;
+#esac
+
+LAST_IMAGE=$([[ -f "$LAST_IMAGE_F" ]] && cat $LAST_IMAGE_F);
+
+clear_img() {
+ echo "" > $FIFO_UEBERZUG;
+
+ if [[ ! -z "$LAST_IMAGE" ]]; then
+ declare -p -A cmd=([action]=remove [identifier]="$LAST_IMAGE") \
+ > "$FIFO_UEBERZUG";
+ fi;
+}
+
+clear_img;
+
+case "$1" in
+ "clear") clear_img ;;
+ "draw")
+ LAST_IMAGE="preview-$2";
+ declare -p -A cmd=([action]=add [identifier]="$LAST_IMAGE" \
+ [x]="$3" [y]="$4" [max_width]="$5" [max_height]="$6" \
+ [path]="$2") > "$FIFO_UEBERZUG";
+ echo -e "$LAST_IMAGE" > $LAST_IMAGE_F;
+ ;;
+ "*") echo "Unknown command: '$1', '$2'" ;;
+esac
+
diff --git a/scripts/menuitems.sh b/scripts/menuitems.sh
new file mode 100755
index 0000000..92e24d4
--- /dev/null
+++ b/scripts/menuitems.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+
+volume_component() { amixer get Master | awk -F'[][]' '/dB/ {print $C}' C="$1"; }
+mic_component() { amixer get Capture | awk -F'[][]' '/dB/ {print $C}' C="$1" | head -n 1; }
+
+playerctl_icon() {
+ local playstate="$(~/scripts/music/player.sh get_play_state)";
+ case "$playstate" in
+ Paused) echo "" ;;
+ Playing) echo "" ;;
+ Stopped) echo "" ;;
+ *) ;;
+ esac
+}
+
+network_state() {
+ local state=$(nmcli dev show wlp5s0);
+ local ssid=$(echo -e "$state" | grep '^GENERAL.CONNECTION:' | sed 's/^GENERAL.CONNECTION:\s*//g');
+
+ [[ "$ssid" == "--" ]] && ssid="";
+
+ echo "$([[ -z "$ssid" ]] && echo "offline" || echo "online") ${ssid:0:12}...";
+}
+
+volume_icon() { volume_component 6 | sed 's/on//; s/off/🔇/'; }
+mic_icon() { mic_component 6 | sed 's/on//; s/off/✖/'; }
+
+icon() {
+ case "$1" in
+ date) echo "" ;;
+ battery) echo "" ;;
+ music) playerctl_icon ;;
+ volume) echo -n "[$(mic_icon)] $(volume_icon)" ;;
+ brightness) echo "" ;;
+ network) network_state | sed 's/online//; s/idle//; s/offline/❌/' ;;
+ *) ;;
+ esac
+}
+
+date_module() {
+ echo "$(icon date) $(date +"%A, %e %b - %I:%M %p")";
+}
+
+battery_module() {
+ local capacity=$(cat "/sys/class/power_supply/BAT0/capacity");
+ echo "$(icon battery) $capacity%";
+}
+
+music_module() {
+ local label=$(~/scripts/music/player.sh get_label);
+ echo "$(icon music) $label";
+}
+
+brightness_module() {
+ echo "$(icon brightness) $(printf "%.0f%s" "$(xbacklight -get)" "%")"
+}
+
+volume_module() {
+ echo "$(icon volume) $(volume_component 2)";
+}
+
+keymode_module() {
+ echo "$(~/scripts/shotkey.sh mode)";
+}
+
+network_module() {
+ echo "$(icon network)";
+}
+
+
+get_module() {
+ case "$1" in
+ date) date_module ;;
+ battery) battery_module ;;
+ volume) volume_module ;;
+ music) music_module ;;
+ brightness) brightness_module ;;
+ keymode) keymode_module ;;
+ network) network_module ;;
+ esac;
+}
+
+padding=" ";
+
+echo "$padding$(get_module $1)$padding";
diff --git a/scripts/modules/rofi-menu.sh b/scripts/modules/rofi-menu.sh
new file mode 100644
index 0000000..adff2d9
--- /dev/null
+++ b/scripts/modules/rofi-menu.sh
@@ -0,0 +1,6 @@
+
+ROFI_BLOCK_THEME="$HOME/.config/rofi-themes/phenax-block-theme.rasi"
+
+open-menu() { dmenu "$@"; }
+open-block-menu() { rofi -i -dmenu -theme "$ROFI_BLOCK_THEME" "$@"; }
+
diff --git a/scripts/modules/utils.sh b/scripts/modules/utils.sh
new file mode 100644
index 0000000..0cb43b0
--- /dev/null
+++ b/scripts/modules/utils.sh
@@ -0,0 +1,10 @@
+
+trim() { sed '/^$/ d'; }
+trim_line() { sed -e 's/^\s*//' -e 's/\s*$//'; }
+
+clipboard() { xclip -selection clipboard "$@"; }
+
+copy() { clipboard -i; }
+read_clipboard() { clipboard -o; }
+
+copy_str() { echo -n "$@" | copy; }
diff --git a/scripts/monitor.sh b/scripts/monitor.sh
new file mode 100755
index 0000000..93a0282
--- /dev/null
+++ b/scripts/monitor.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+source "$HOME/scripts/modules/rofi-menu.sh";
+
+PRIMARY="eDP1";
+
+list-monitors() { xrandr --listmonitors | grep -v 'Monitors:' | awk '{print $4 " (" $3 ")"}'; }
+
+monitor-off() { xrandr --output ${1:-"HDMI-1"} --off; };
+
+monitor-on() {
+ xrandr --output ${2:-"HDMI-1"} --auto --${1:-"right-of"} $PRIMARY;
+}
+
+show-menu() {
+ list-monitors | open-menu -p "Monitors";
+}
+
+case $1 in
+ ls) list-monitors ;;
+ on) monitor-on "$2" "$3" ;;
+ off) monitor-off "$2" ;;
+ menu) show-menu ;;
+ *) echo "Fuck off" ;;
+esac;
+
diff --git a/scripts/mounter.sh b/scripts/mounter.sh
new file mode 100755
index 0000000..972b329
--- /dev/null
+++ b/scripts/mounter.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+host="192.168.0.10";
+mount_dir=~/Downloads/shared;
+
+user=artemis;
+pass=$(pass show Artemis/smb.artemis);
+
+sudo mount -t cifs //$host/public $mount_dir -o rw,username=$user,password=$pass;
+
diff --git a/scripts/mouse.sh b/scripts/mouse.sh
new file mode 100755
index 0000000..271f1a0
--- /dev/null
+++ b/scripts/mouse.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env bash
+
+MOVE_DEFAULT=20;
+
+click() { xdotool click 1; }
+rclick() { xdotool click 3; }
+
+move() {
+ case "$1" in
+ left) xdotool mousemove_relative -- -$2 0 ;;
+ right) xdotool mousemove_relative -- $2 0 ;;
+ up) xdotool mousemove_relative -- 0 -$2 ;;
+ down) xdotool mousemove_relative -- 0 $2 ;;
+ *) exit 1 ;;
+ esac
+}
+
+case "$1" in
+ move) move "$2" "${3:-$MOVE_DEFAULT}" ;;
+ #divide) divide "$2" ;;
+ click) click ;;
+ rclick) rclick ;;
+ *) echo "no"; exit 1; ;;
+esac
+
diff --git a/scripts/music/player.sh b/scripts/music/player.sh
new file mode 100755
index 0000000..76f4988
--- /dev/null
+++ b/scripts/music/player.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+player() { playerctl --player=mopidy "$@"; }
+
+# Get player state
+#get_play_state() { player metadata --format '{{status}}' || echo 'Stopped'; }
+get_play_state() {
+ local state=$(mpc status | awk '/\[\w*\]/ {print $1}');
+ case "$state" in
+ '[playing]') echo "Playing" ;;
+ '[paused]') echo "Paused" ;;
+ *) echo "Stopped" ;;
+ esac;
+}
+
+# Get title - artist (song label)
+#get_label() { player metadata --format '{{title}} - {{artist}}' || echo '...'; }
+get_label() {
+ echo -n "$(mpc current | cut -c1-20)";
+ echo "...";
+}
+
+# Play/Pause toggle:
+play_pause() {
+ #player play-pause;
+ mpc toggle;
+ update-dwmblock music;
+}
+
+# Next/Prev
+next() {
+ #player next;
+ mpc next;
+ update-dwmblock music;
+}
+prev() {
+ #player previous;
+ mpc prev;
+ update-dwmblock music;
+}
+
+notify() {
+ update-dwmblock music;
+}
+
+case "$1" in
+ play_pause|pp) play_pause ;;
+ next|n) next ;;
+ prev|p) prev ;;
+ dump_metadata) get_metadata ;;
+ get_label) get_label ;;
+ get_play_state) get_play_state ;;
+ notify) notify ;;
+ *) echo "Learn how to use shit before you use them" ;;
+esac
+
diff --git a/scripts/music/split-album.sh b/scripts/music/split-album.sh
new file mode 100755
index 0000000..d7a23a4
--- /dev/null
+++ b/scripts/music/split-album.sh
@@ -0,0 +1,72 @@
+#!/usr/bin/env bash
+
+MUSIC_DIR="$HOME/Downloads/music";
+EXT=opus;
+
+AUDIO_FILE="$1";
+TIMESTAMPS_FILE="$2";
+
+ALBUM_ARTIST=$(echo "$TIMESTAMPS_FILE" | sed -e 's/^.*\///g' -e 's/\.splits$//');
+
+ARTIST="$(echo $ALBUM_ARTIST | awk -F' - ' '{print $1}')";
+ALBUM="$(echo $ALBUM_ARTIST | awk -F' - ' '{print $2}')";
+
+OUT_DIR="$MUSIC_DIR/$ARTIST/$ALBUM";
+[[ ! -d "$OUT_DIR" ]] && mkdir -p "$OUT_DIR";
+
+AUDIOINFO=$(mediainfo "$AUDIO_FILE" --Output=JSON);
+DURATION=$(echo -e "$AUDIOINFO" | jq -r '.media.track[0].Duration');
+
+TOTAL_TRACKS=$(cat "$TIMESTAMPS_FILE" | wc -l);
+
+add_tags() { ~/scripts/music/tag.sh "$@"; }
+
+padd() { printf "%0${2:-2}d" $(echo $1 | cut -d'.' -f1); }
+
+to_timestamp() {
+ local duration=$1;
+ local hours=$(echo "$duration / 3600" | bc);
+ duration=$(echo "$duration % 3600" | bc);
+ local mins=$(echo "$duration / 60" | bc);
+ local secs=$(echo "$duration % 60" | bc);
+ echo "$(padd $hours):$(padd $mins):$(padd $secs)";
+}
+
+starttime="";
+music="";
+index=0;
+
+(cat "$TIMESTAMPS_FILE"; echo "<<END") | while read split; do
+ if [[ ! -z "$split" ]]; then
+ if [[ "$split" == "<<END" ]]; then
+ endtime=$(to_timestamp $DURATION);
+ else
+ endtime="$(echo $split | cut -d' ' -f1)";
+ nextmusic="$(echo $split | cut -d' ' -f 2-)";
+ fi;
+
+ if [[ ! -z "$music" ]]; then
+ output="$OUT_DIR/$(padd $index) - $music.$EXT";
+ echo "$starttime - $endtime ($output)";
+ ffmpeg \
+ -nostdin -y \
+ -loglevel -8 \
+ -i "$AUDIO_FILE" \
+ -ss "$starttime" \
+ -to "$endtime" \
+ -vn "$output" && \
+ add_tags \
+ -a "$ARTIST" \
+ -A "$ALBUM" \
+ -t "$music" \
+ -n "$music" \
+ -N "$TOTAL_TRACKS" \
+ "$output" \
+ ;
+ fi;
+
+ music=$nextmusic;
+ starttime=$endtime;
+ index=$((index + 1));
+ fi;
+done;
diff --git a/scripts/music/tag-bulk.sh b/scripts/music/tag-bulk.sh
new file mode 100755
index 0000000..bd93205
--- /dev/null
+++ b/scripts/music/tag-bulk.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+artist=$1;
+album=$2;
+
+ext=${3:-'opus'};
+
+file=${4:-'taginfo'};
+
+total=$(cat $file | wc -l);
+
+cat $file | while read n song; do
+ song_file="$song.$ext";
+ if [[ -f "$song_file" ]]; then
+ ~/scripts/music/tag.sh \
+ -a "$artist" \
+ -A "$album" \
+ -t "$song" \
+ -n "$n" \
+ -N "$total" \
+ "$song_file";
+ else
+ echo "File $song_file not found";
+ fi;
+done;
+
diff --git a/scripts/music/tag.sh b/scripts/music/tag.sh
new file mode 100755
index 0000000..325dec3
--- /dev/null
+++ b/scripts/music/tag.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+err() { echo "Usage:
+ tag [OPTIONS] file
+Options:
+ -a: artist
+ -t: song
+ -A: album
+ -n: track
+ -N: total number of tracks
+ -d: year of publication
+ -g: genre
+ -c: comment
+You will be prompted for title, artist, album and track if not given." && exit 1 ;}
+
+while getopts "a:t:A:n:N:d:g:c:f:" o; do case "${o}" in
+ a) artist="${OPTARG}" ;;
+ t) title="${OPTARG}" ;;
+ A) album="${OPTARG}" ;;
+ n) track="${OPTARG}" ;;
+ N) total="${OPTARG}" ;;
+ d) date="${OPTARG}" ;;
+ g) genre="${OPTARG}" ;;
+ c) comment="${OPTARG}" ;;
+ f) file="${OPTARG}" ;;
+ *) printf "Invalid option: -%s\\n" "$OPTARG" && err ;;
+esac; done;
+
+shift $((OPTIND - 1));
+
+file="$1"
+
+[ ! -f "$file" ] && echo "Provide file to tag." && err
+
+[ -z "$title" ] && echo "Enter a title." && read -r title
+[ -z "$artist" ] && echo "Enter an artist." && read -r artist
+[ -z "$album" ] && echo "Enter an album." && read -r album
+[ -z "$track" ] && echo "Enter a track number." && read -r track
+
+case "$file" in
+ *.ogg) echo "Title=$title
+Artist=$artist
+Album=$album
+Track=$track
+Total=$total
+Date=$date
+Genre=$genre
+Comment=$comment" | vorbiscomment -w "$file" ;;
+ *.opus) echo "Title=$title
+Artist=$artist
+Album=$album
+Track=$track
+Total=$total
+Date=$date
+Genre=$genre
+Comment=$comment" | opustags -i -S "$file" ;;
+ *.mp3) eyeD3 -Q --remove-all -a "$artist" -A "$album" -t "$title" -n "$track" -N "$total" -Y "$date" "$file" ;;
+ *) echo "File type not implemented yet." ;;
+esac
diff --git a/scripts/notify.sh b/scripts/notify.sh
new file mode 100755
index 0000000..5111b87
--- /dev/null
+++ b/scripts/notify.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+# All the wrapping wierdness to add support for cron
+# https://wiki.archlinux.org/index.php/Desktop_notifications#Usage_in_programming
+
+user=$(whoami);
+
+sudo -u $user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u $user)/dbus-1 notify-send "$@";
+
diff --git a/scripts/open-project.sh b/scripts/open-project.sh
new file mode 100755
index 0000000..d452655
--- /dev/null
+++ b/scripts/open-project.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+PROJECTS_DIR="$HOME/dev/projects";
+SUCKLESS_DIR="$HOME/.config/suckless";
+
+get_projects() {
+ ls -t "$PROJECTS_DIR" | sed 's/^/dev:/g';
+ ls -t "$SUCKLESS_DIR" | sed 's/^/suckless:/g';
+}
+
+project=$(get_projects | dmenu -p "Project name :: ");
+
+if [ -z "$project" ]; then
+ exit 1;
+fi;
+
+projtype=$(echo "$project" | cut -d: -f1);
+projdir=$(echo "$project" | cut -d: -f2-);
+
+fulldir="";
+
+case "$projtype" in
+ dev) fulldir="$PROJECTS_DIR/$projdir" ;;
+ suckless) fulldir="$SUCKLESS_DIR/$projdir" ;;
+esac
+
+[ ! -z "$fulldir" ] && [ -d "$fulldir" ] && ~/scripts/sessions/project.sh "$fulldir";
+
diff --git a/scripts/pass-migrate.sh b/scripts/pass-migrate.sh
new file mode 100755
index 0000000..01adab9
--- /dev/null
+++ b/scripts/pass-migrate.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+[[ $# != 2 ]] && echo "Usage: pass-migrate.sh <pass_dir> <key_file>" && exit 1;
+
+PASS_DIR="$1";
+KEY_FILE="$2";
+
+to_passnames() { sed -e 's/^[./]*//g' -e 's/\.gpg$//g'; }
+
+get_gpg_files() {
+ cd "$PASS_DIR" 2> /dev/null;
+ find . -regex '.*\.gpg';
+}
+
+get_gpg_files | to_passnames | while read key; do
+ pass=$(pass show "$key");
+ echo "$pass";
+done;
+
diff --git a/scripts/password_prompt.sh b/scripts/password_prompt.sh
new file mode 100755
index 0000000..439db6c
--- /dev/null
+++ b/scripts/password_prompt.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+echo -n '' | dmenu -P -p "Password :: ";
+
diff --git a/scripts/powercontrol.sh b/scripts/powercontrol.sh
new file mode 100755
index 0000000..90304d0
--- /dev/null
+++ b/scripts/powercontrol.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+source "$HOME/scripts/modules/rofi-menu.sh";
+source "$HOME/scripts/modules/utils.sh";
+
+optn_poweroff="[] off";
+optn_reboot="[] reboot";
+optn_suspend="[] suspend";
+optn_logout="[] logout";
+optn_lock="[] lock";
+optn_cancel="[] cancel";
+
+OPTIONS=$(echo -e "
+$optn_poweroff
+$optn_reboot
+$optn_suspend
+$optn_logout
+$optn_lock
+$optn_cancel
+" | trim);
+
+lock() { bslock; }
+logout_() { ~/.config/autostart.sh kill; killall dwm; }
+poweroff_() { systemctl shutdown; }
+reboot_() { systemctl reboot; }
+suspend_() { lock & disown; sleep 0.3; sudo zzz; }
+
+menu() {
+ result=$(echo -e "$OPTIONS" | open-menu -l 0 -p "Power button");
+ case "$result" in
+ "$optn_lock") lock ;;
+ "$optn_logout") logout_ ;;
+ "$optn_poweroff") poweroff_ ;;
+ "$optn_reboot") reboot_ ;;
+ "$optn_suspend") suspend_ ;;
+ esac
+}
+
+case "$1" in
+ menu) menu ;;
+ lock) lock ;;
+ poweroff) poweroff_ ;;
+ reboot) reboot_ ;;
+ *) exit 1 ;;
+esac
+
diff --git a/scripts/qutebrowser/session-box.sh b/scripts/qutebrowser/session-box.sh
new file mode 100755
index 0000000..76d32c2
--- /dev/null
+++ b/scripts/qutebrowser/session-box.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+session_dir=$(mktemp -d /tmp/qb-sessionbox.XXXXX);
+
+data=$session_dir/data;
+config=$session_dir/config;
+
+mkdir -p $config;
+cp -r ~/.config/qutebrowser/* $config;
+
+mkdir -p $data;
+cp -r ~/.local/share/qutebrowser/* $data;
+
+rm $data/sessions/default.yml
+rm -rf $data/webengine;
+
+qutebrowser --basedir $session_dir;
+
+rm -rf $session_dir;
diff --git a/scripts/recording/camscreen.sh b/scripts/recording/camscreen.sh
new file mode 100755
index 0000000..4b2b594
--- /dev/null
+++ b/scripts/recording/camscreen.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+
+outfile=${1:-"$HOME/Pictures/recordings/video-cs-$(date -Iminutes).mp4"};
+
+[[ -f "$outfile" ]] && echo "[File already exists]: $outfile" && exit 1;
+
+ffplay /dev/video0 -s 300x200 -an &
+
+ffmpeg -f x11grab -s 1920x1080 -i :0.0 -f alsa -i hw:0,0 $outfile;
+
diff --git a/scripts/recording/screenrecord.sh b/scripts/recording/screenrecord.sh
new file mode 100755
index 0000000..bc5d6a3
--- /dev/null
+++ b/scripts/recording/screenrecord.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+
+prefix=${2:-"video"};
+
+outfile=${1:-"$HOME/Pictures/recordings/$prefix-screen-$(date -Iminutes).mp4"};
+
+ffmpeg -f x11grab -s 1920x1080 -i :0.0 -f alsa -i hw:0,0 $outfile;
diff --git a/scripts/recording/webcam.sh b/scripts/recording/webcam.sh
new file mode 100755
index 0000000..2bc47e1
--- /dev/null
+++ b/scripts/recording/webcam.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+outfile=${1:-"$HOME/Pictures/recordings/video-webcam-$(date -Iminutes).mp4"};
+
+[[ -f "$outfile" ]] && echo "[File already exists]: $outfile" && exit 1;
+
+# ffmpeg -i /dev/video0 out.mkv
+ffmpeg -i /dev/video0 -f alsa -i default $outfile;
diff --git a/scripts/scheduler.sh b/scripts/scheduler.sh
new file mode 100755
index 0000000..2ea1dc2
--- /dev/null
+++ b/scripts/scheduler.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+
+source "$HOME/scripts/modules/utils.sh";
+
+SCH_PATH="$HOME/.config/vimwiki/schedule/";
+SCH_TAG="SCH_AUTO_GENERATED";
+CRON_PATH="$HOME/.config/crontab/crontab";
+
+get_schedule_files() {
+ ls "$SCH_PATH" | sed -e '/index.md$/d' | awk "{print \"$SCH_PATH\" \$0}";
+}
+
+get_time() { awk -F'|' '{print $2}' | trim_line; }
+get_label() { awk -F'|' '{print $3}' | trim_line; }
+get_level() {
+ local l=$(awk -F'|' '{print $4}' | trim_line);
+ case $l in
+ 1) echo "critical" ;;
+ 2) echo "normal" ;;
+ 3) echo "low" ;;
+ *) echo "" ;;
+ esac
+}
+
+parse_schedule() {
+ local days="$1";
+
+ sed -e '/^#/d' -e '/^\s*$/d' | while read line; do
+ local time=$(echo "$line" | get_time);
+ local level=$(echo "$line" | get_level);
+
+ if [[ ! $time == "-" ]] && [[ ! $level == "" ]]; then
+ local label=$(echo "$line" | get_label);
+ local time_cron=$(echo $time | awk '{print $2 " " $1}');
+ # TODO: Use notify sub command
+ local command="notify-send '$label' -u $level -a Schedule -t 10000";
+
+ echo "$time_cron $days $command ##$SCH_TAG";
+ fi;
+ done;
+}
+
+generate_crontab() {
+ get_schedule_files | while read file; do
+ days=$(cat $file | awk -F'#' '/^# / {print $2}' | head -n 1 | trim_line)
+ parse_schedule "$days" < $file;
+ done
+}
+
+update_crontab() {
+ cat $CRON_PATH | sed -e "/##$CRON_TAG/d";
+ generate_crontab;
+}
+
+# TODO: Make generate and notify sub commands
+# case "$1" in
+ # *) ;;
+# esac
+
+tmpfile=$(mktemp /tmp/crontemp.XXX);
+update_crontab > $tmpfile;
+cat $tmpfile > $CRON_PATH;
+rm $tmpfile;
+
diff --git a/scripts/screenshot.sh b/scripts/screenshot.sh
new file mode 100755
index 0000000..59770dd
--- /dev/null
+++ b/scripts/screenshot.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+SCREENSHOTS=$HOME/Pictures/screenshots;
+
+notify() { notify-send "$@"; }
+
+scrsht() {
+ local type=$1;
+ local window=$([ -z "$2" ] && echo "" || echo "-window $2");
+ magick import $window "$SCREENSHOTS/$type-$(date '+%Y_%m_%d_%H_%M_%S').jpg";
+ notify "Screenshot ($type) captured";
+}
+
+full_screenshot() { scrsht full root; }
+part_screenshot() { sleep 0.2; scrsht part & disown; }
+window_screenshot() { scrsht window "${1:-"$(xdo id)"}"; }
+
+case $1 in
+ full) full_screenshot ;;
+ part) part_screenshot ;;
+ window) window_screenshot "$2" ;;
+ *) echo "no"; exit 1 ;;
+esac
+
diff --git a/scripts/sessions/project.sh b/scripts/sessions/project.sh
new file mode 100755
index 0000000..ffe9cc9
--- /dev/null
+++ b/scripts/sessions/project.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+
+dir="$1";
+
+sensible-terminal -d "$dir" -e sensible-editor . &
+sleep 0.1;
+sensible-terminal -d "$dir" &
+sensible-terminal -d "$dir" &
+
+disown;
+
diff --git a/scripts/shotkey.sh b/scripts/shotkey.sh
new file mode 100755
index 0000000..8a638d4
--- /dev/null
+++ b/scripts/shotkey.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+STATE_DIR=$HOME/.local/share/shotkey;
+[[ ! -d "$STATE_DIR" ]] && mkdir $STATE_DIR;
+
+MODE_FILE=$STATE_DIR/mode;
+
+NORMAL_MODE="-";
+
+get_mode() {
+ local mode=$(cat $MODE_FILE);
+ echo "${mode:-$NORMAL_MODE}";
+}
+
+save_mode() {
+ local mode_label=$SHOTKEY_MODE_LABEL;
+ echo "${mode_label:-$NORMAL_MODE}" > $MODE_FILE;
+ update-dwmblock keymode;
+}
+
+case $1 in
+ on-mode-change) save_mode ;;
+ mode) get_mode ;;
+ *) echo "no"; exit 1; ;;
+esac
+
diff --git a/scripts/sound.sh b/scripts/sound.sh
new file mode 100755
index 0000000..090a805
--- /dev/null
+++ b/scripts/sound.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env bash
+
+mic_keep_on() {
+ while true; do
+ local audio_state=$(amixer get Capture | awk "/: Capture.*\[/ {print \$7}" | head -n 1);
+ [[ "$audio_state" != "[on]" ]] && amixer set Capture cap;
+ sleep 1;
+ done;
+}
+
+case "$1" in
+ mute-mic) amixer set Capture toggle ;;
+ mic-keep-on) mic_keep_on ;;
+ mic-vol) case "$2" in
+ up) amixer sset 'Mic Boost' '1%+' && amixer sset 'Internal Mic Boost' '1%+' ;;
+ down) amixer sset 'Mic Boost' '1%-' && amixer sset 'Internal Mic Boost' '1%-' ;;
+ full) amixer sset 'Mic Boost' '100%' && amixer sset 'Internal Mic Boost' '100%' ;;
+ esac ;;
+
+ mute) amixer set Master toggle ;;
+ volume) case "$2" in
+ up) amixer sset Master '5%+' ;;
+ down) amixer sset Master '5%-' ;;
+ esac ;;
+ *) echo "Wrong command" ;;
+esac
+
+#~/scripts/statusbar/statusbar.sh update volume;
+update-dwmblock volume;
diff --git a/scripts/torrent.sh b/scripts/torrent.sh
new file mode 100755
index 0000000..12804a8
--- /dev/null
+++ b/scripts/torrent.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+
+source "$HOME/scripts/modules/utils.sh";
+
+DOWNLOAD_LOCATION=$HOME/Downloads/dl;
+
+is_magnet() { echo "$1" | grep '^magnet:'; }
+
+add_magnet_link() {
+ is_magnet "$1" && \
+ transmission-remote -a "$1" && \
+ notify-send "Torrent" "Added torrent for downloading";
+}
+
+add_from_clipboard() {
+ add_torrent "$(read_clipboard)";
+}
+
+add_torrent() {
+ transmission-remote -a "$1" && \
+ notify-send "Torrent" "Added torrent for downloading";
+ #local name=$(btinfo "$1" | awk -F': ' '/Name:/ {print $2}');
+ #btcli add -d "$DOWNLOAD_LOCATION/$name" "$1";
+}
+
+case "$1" in
+ add) add_magnet_link "$2" ;;
+ magnet) add_magnet_link "$2" ;;
+ torrent) add_torrent "$2" ;;
+ add_from_clipboard) add_from_clipboard ;;
+esac;
+
diff --git a/scripts/write-bootentry.sh b/scripts/write-bootentry.sh
new file mode 100755
index 0000000..ffa57ed
--- /dev/null
+++ b/scripts/write-bootentry.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+boot_device=/dev/nvme0n1;
+root_device=/dev/nvme0n1p2;
+
+linux_params="i8042.nopnp=1 pci=nocrs i915.enable_dpcd_backlight=1 acpi_backlight=vendor loglevel=3";
+# rd.udev.log-priority=3
+# acpi_backlight=video acpi_backlight=vendor acpi_backlight=native
+# acpi=off
+
+uuid=$(sudo blkid -s UUID -o value "$root_device");
+
+params=$(printf "%s " \
+ "root=UUID=$uuid rw" \
+ "initrd=\intel-ucode.img initrd=\initramfs-linux.img" \
+ "$linux_params" \
+);
+
+echo -e "----------------------------";
+echo "UUID: $uuid";
+echo "PARAMS: $params";
+echo -e "----------------------------\n";
+
+sudo efibootmgr -d "$boot_device" -p 1 \
+ -c -L "Artix Linux" \
+ -l /vmlinuz-linux \
+ -u "$params" \
+ --verbose;