From 82df70eff06e7b44ee84283070d7f801f7fc1d92 Mon Sep 17 00:00:00 2001 From: Sam Chudnick Date: Sat, 6 Nov 2021 20:25:45 -0400 Subject: initial commit --- .config/calcurse/conf | 33 + .config/calcurse/keys | 55 ++ .config/cava/config | 19 + .config/cmus/rc | 89 +++ .config/dunst/dunstrc | 69 ++ .config/firejail/steam.profile | 95 +++ .config/gtk-2.0/gtkrc-2.0 | 4 + .config/gtk-3.0/settings.ini | 4 + .config/htop/htoprc | 39 ++ .config/picom/picom.conf | 5 + .config/ranger/rc.conf | 2 + .config/shell/.bashrc | 27 + .config/shell/aliasrc | 39 ++ .config/shell/profile | 22 + .config/shell/shortcutsrc | 27 + .config/sxhkd/sxhkdrc | 89 +++ .config/wget/wgetrc | 1 + .config/x11/xinitrc | 24 + .config/x11/xresources | 63 ++ .config/zathura/zathurarc | 9 + .config/zsh/.zprofile | 19 + .config/zsh/.zshrc | 33 + .local/bin/alarm | 17 + .local/bin/backups/borg-offsite | 25 + .local/bin/backups/borg-onsite | 25 + .local/bin/bgscript | 4 + .local/bin/cmus/toggle-mode | 14 + .local/bin/cmus/toggle-shuf | 7 + .local/bin/compile | 14 + .local/bin/cryptusb/create-cryptusb | 34 + .local/bin/cryptusb/handle-cryptusb | 8 + .local/bin/cryptusb/mount-cryptusb | 5 + .local/bin/cryptusb/sync-cryptusb | 6 + .local/bin/cryptusb/umount-cryptusb | 5 + .local/bin/dmenu/mount-device | 27 + .local/bin/dmenu/unicode-select | 9 + .local/bin/dmenu/unmount-device | 19 + .local/bin/exiti3 | 4 + .local/bin/ffmpeg-convert | 60 ++ .local/bin/get-pkgs | 8 + .local/bin/kbremaps | 7 + .local/bin/kill-steam | 3 + .local/bin/lock | 7 + .local/bin/mount-media | 6 + .local/bin/pdf-preview | 8 + .local/bin/screenshot | 8 + .local/bin/signal-vol | 4 + .local/bin/statusbar/bar-calcurse | 15 + .local/bin/statusbar/bar-cmus | 25 + .local/bin/statusbar/bar-cpu | 7 + .local/bin/statusbar/bar-gpu | 6 + .local/bin/statusbar/bar-ipv4 | 9 + .local/bin/statusbar/bar-memory | 8 + .local/bin/statusbar/bar-storage | 7 + .local/bin/statusbar/bar-time | 7 + .local/bin/statusbar/bar-volume | 13 + .local/bin/stop-alarm | 5 + .local/bin/sync-music | 4 + .local/bin/theme/get-gradient | 13 + .local/bin/theme/gradient.py | 24 + .local/bin/volctl | 12 + .local/bin/who-depends | 13 + .local/bin/windowshot | 9 + .local/bin/yt-fix | 42 ++ .local/share/unicode_list | 1326 +++++++++++++++++++++++++++++++++++ .vim/vimrc | 104 +++ .zprofile | 1 + 67 files changed, 2751 insertions(+) create mode 100644 .config/calcurse/conf create mode 100644 .config/calcurse/keys create mode 100644 .config/cava/config create mode 100644 .config/cmus/rc create mode 100644 .config/dunst/dunstrc create mode 100644 .config/firejail/steam.profile create mode 100644 .config/gtk-2.0/gtkrc-2.0 create mode 100644 .config/gtk-3.0/settings.ini create mode 100644 .config/htop/htoprc create mode 100644 .config/picom/picom.conf create mode 100644 .config/ranger/rc.conf create mode 100644 .config/shell/.bashrc create mode 100644 .config/shell/aliasrc create mode 100644 .config/shell/profile create mode 100644 .config/shell/shortcutsrc create mode 100644 .config/sxhkd/sxhkdrc create mode 100644 .config/wget/wgetrc create mode 100644 .config/x11/xinitrc create mode 100644 .config/x11/xresources create mode 100644 .config/zathura/zathurarc create mode 100644 .config/zsh/.zprofile create mode 100644 .config/zsh/.zshrc create mode 100755 .local/bin/alarm create mode 100755 .local/bin/backups/borg-offsite create mode 100755 .local/bin/backups/borg-onsite create mode 100755 .local/bin/bgscript create mode 100755 .local/bin/cmus/toggle-mode create mode 100755 .local/bin/cmus/toggle-shuf create mode 100755 .local/bin/compile create mode 100755 .local/bin/cryptusb/create-cryptusb create mode 100755 .local/bin/cryptusb/handle-cryptusb create mode 100755 .local/bin/cryptusb/mount-cryptusb create mode 100755 .local/bin/cryptusb/sync-cryptusb create mode 100755 .local/bin/cryptusb/umount-cryptusb create mode 100755 .local/bin/dmenu/mount-device create mode 100755 .local/bin/dmenu/unicode-select create mode 100755 .local/bin/dmenu/unmount-device create mode 100755 .local/bin/exiti3 create mode 100755 .local/bin/ffmpeg-convert create mode 100755 .local/bin/get-pkgs create mode 100755 .local/bin/kbremaps create mode 100755 .local/bin/kill-steam create mode 100755 .local/bin/lock create mode 100755 .local/bin/mount-media create mode 100755 .local/bin/pdf-preview create mode 100755 .local/bin/screenshot create mode 100755 .local/bin/signal-vol create mode 100755 .local/bin/statusbar/bar-calcurse create mode 100755 .local/bin/statusbar/bar-cmus create mode 100755 .local/bin/statusbar/bar-cpu create mode 100755 .local/bin/statusbar/bar-gpu create mode 100755 .local/bin/statusbar/bar-ipv4 create mode 100755 .local/bin/statusbar/bar-memory create mode 100755 .local/bin/statusbar/bar-storage create mode 100755 .local/bin/statusbar/bar-time create mode 100755 .local/bin/statusbar/bar-volume create mode 100755 .local/bin/stop-alarm create mode 100755 .local/bin/sync-music create mode 100755 .local/bin/theme/get-gradient create mode 100755 .local/bin/theme/gradient.py create mode 100755 .local/bin/volctl create mode 100755 .local/bin/who-depends create mode 100755 .local/bin/windowshot create mode 100755 .local/bin/yt-fix create mode 100644 .local/share/unicode_list create mode 100644 .vim/vimrc create mode 120000 .zprofile diff --git a/.config/calcurse/conf b/.config/calcurse/conf new file mode 100644 index 0000000..b46b0a7 --- /dev/null +++ b/.config/calcurse/conf @@ -0,0 +1,33 @@ +appearance.calendarview=monthly +appearance.compactpanels=no +appearance.defaultpanel=calendar +appearance.layout=5 +appearance.notifybar=yes +appearance.sidebarwidth=2 +appearance.theme=blue on default +appearance.todoview=hide-completed +appearance.headingpos=right-justified +daemon.enable=no +daemon.log=no +format.inputdate=1 +format.notifydate=%a %F +format.notifytime=%T +format.outputdate=%D +format.dayheading=%B %-d, %Y +general.autogc=no +general.autosave=yes +general.confirmdelete=yes +general.confirmquit=no +general.firstdayofweek=monday +general.periodicsave=0 +general.systemdialogs=yes +notification.command=printf '\a' +notification.notifyall=flagged-only +notification.warning=300 +appearance.headerline=yes +appearance.eventseparator=yes +appearance.dayseparator=yes +appearance.emptyline=yes +appearance.emptyday=-- +general.multipledays=yes +general.systemevents=yes diff --git a/.config/calcurse/keys b/.config/calcurse/keys new file mode 100644 index 0000000..301d367 --- /dev/null +++ b/.config/calcurse/keys @@ -0,0 +1,55 @@ +# +# Calcurse keys configuration file +# +# In this file the keybindings used by Calcurse are defined. +# It is generated automatically by Calcurse and is maintained +# via the key configuration menu of the interactive user +# interface. It should not be edited directly. + +generic-cancel ESC +generic-select SPC +generic-credits @ +generic-help ? +generic-quit q Q +generic-save s S ^S +generic-reload R +generic-copy c +generic-paste p ^V +generic-change-view TAB +generic-import i I +generic-export x X +generic-goto g G +generic-other-cmd o O +generic-config-menu C +generic-redraw ^R +generic-add-appt ^A +generic-add-todo ^T +generic-prev-day T ^H +generic-next-day t ^L +generic-prev-week W ^K +generic-next-week w RET +generic-prev-month M +generic-next-month m +generic-prev-year Y +generic-next-year y +generic-scroll-down ^N +generic-scroll-up ^P +generic-goto-today ^G +generic-command : +move-right l L RGT +move-left h H LFT +move-down j J DWN +move-up k K UP +start-of-week 0 +end-of-week $ +add-item a A +del-item d D +edit-item e E +view-item v V +pipe-item | +flag-item ! +repeat r +edit-note n N +view-note > +raise-priority + +lower-priority - diff --git a/.config/cava/config b/.config/cava/config new file mode 100644 index 0000000..3082f55 --- /dev/null +++ b/.config/cava/config @@ -0,0 +1,19 @@ +[color] + +gradient = 1 +gradient_count = 8 +gradient_color_1 = '#5350b9' +gradient_color_2 = '#6d47c2' +gradient_color_3 = '#903ecb' +gradient_color_4 = '#be35d4' +gradient_color_5 = '#dd2cc5' +gradient_color_6 = '#e62395' +gradient_color_7 = '#ef1a5c' +gradient_color_8 = '#f81118' + + +[smoothing] + +integral = 75 +gravity = 85 + diff --git a/.config/cmus/rc b/.config/cmus/rc new file mode 100644 index 0000000..4ffe095 --- /dev/null +++ b/.config/cmus/rc @@ -0,0 +1,89 @@ +# Colorscheme "night" +set color_cmdline_attr=default +set color_cmdline_bg=default +set color_cmdline_fg=255 +set color_cur_sel_attr=default +set color_error=196 +set color_info=220 +set color_separator=green +set color_statusline_attr=default +set color_statusline_bg=234 +set color_statusline_fg=45 +set color_titleline_attr=default +set color_titleline_bg=default +set color_titleline_fg=46 +set color_trackwin_album_attr=bold +set color_trackwin_album_bg=default +set color_trackwin_album_fg=default +set color_win_attr=default +set color_win_bg=default +set color_win_cur=46 +set color_win_cur_attr=default +set color_win_cur_sel_attr=default +set color_win_cur_sel_bg=235 +set color_win_cur_sel_fg=118 +set color_win_dir=250 +set color_win_fg=255 +set color_win_inactive_cur_sel_attr=default +set color_win_inactive_cur_sel_bg=233 +set color_win_inactive_cur_sel_fg=46 +set color_win_inactive_sel_attr=default +set color_win_inactive_sel_bg=234 +set color_win_inactive_sel_fg=green +set color_win_sel_attr=default +set color_win_sel_bg=235 +set color_win_sel_fg=45 +set color_win_title_attr=default +set color_win_title_bg=234 +set color_win_title_fg=45 + +# Settings +set aaa_mode=all +set auto_expand_albums_follow=false +set auto_expand_albums_search=false +set auto_expand_albums_selcur=false +set auto_reshuffle=true +set confirm_run=true +set continue=true +set continue_album=true +set display_artist_sort_name=false +set dsp.alsa.device=default +set follow=true +set lib_sort=album tracknumber title date +set mixer.alsa.channel=Master +set mixer.alsa.device=default +set mixer.pulse.restore_volume=1 +set mouse=false +set mpris=false +set output_plugin=alsa +set play_library=true +set play_sorted=false +set repeat=true +set resume=true +set set_term_title=true +set show_all_tracks=true +set show_current_bitrate=false +set show_playback_position=true +set show_remaining_time=false +set shuffle=true +set smart_artist_sort=true + +# Keybindings +bind -f common [ vol -1% -1% +bind -f common ] vol +1% +1% +bind -f common D win-remove +bind -f common h win-next +bind -f common j win-down +bind -f common k win-up +bind -f common l win-next +bind -f common n search-next +bind -f common N search-prev +bind -f common ^D win-page-down +bind -f common ^U win-page-up +bind -f common q quit +bind -f common { vol -5% -5% +bind -f common } vol +5% +5% +bind -f common g win-top +bind -f common G win-bottom +bind -f common left seek -5 +bind -f common right seek +5 diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..fda72f3 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,69 @@ +[global] + ### Display ### + monitor = 0 + follow = none + geometry = "0x5-2+25" + indicate_hidden = yes + shrink = no + transparency = 10 + notification_height = 0 + separator_height = 2 + padding = 8 + horizontal_padding = 8 + frame_width = 3 + frame_color = "#666666" + separator_color = frame + sort = yes + idle_threshold = 120 + font = Monospace 10 + line_height = 0 + markup = full + format = "%s\n%b" + alignment = left + show_age_threshold = 60 + word_wrap = yes + ellipsize = middle + ignore_newline = no + stack_duplicates = false + hide_duplicate_count = false + show_indicators = yes + + ### Icons ### + icon_position = off + max_icon_size = 32 + sticky_history = yes + history_length = 20 + + ### Misc/Advanced ### + dmenu = /usr/bin/dmenu -p dunst: + browser = /usr/bin/firejail /usr/bin/firefox-esr -new-tab + always_run_script = true + title = Dunst + class = Dunst + startup_notification = false + force_xinerama = false + +[experimental] + per_monitor_dpi = false + +[shortcuts] + close = ctrl+space + close_all = ctrl+shift+space + history = ctrl+grave + context = ctrl+shift+period + +[urgency_low] + background = "#131313" + foreground = "#d6dbe5" + timeout = 10 + +[urgency_normal] + background = "#131313" + foreground = "#d6dbe5" + timeout = 10 + +[urgency_critical] + background = "#131313" + foreground = "#d6dbe5" + frame_color = "#5294e2" + timeout = 0 diff --git a/.config/firejail/steam.profile b/.config/firejail/steam.profile new file mode 100644 index 0000000..b29c801 --- /dev/null +++ b/.config/firejail/steam.profile @@ -0,0 +1,95 @@ +# Firejail profile for steam +# Description: Valve's Steam digital software delivery system +# This file is overwritten after every install/update +# Persistent local customizations +include steam.local +# Persistent global definitions +include globals.local + +noblacklist ${HOME}/.local/share/aspyr-media +noblacklist ${HOME}/.local/share/feral-interactive +noblacklist ${HOME}/.local/share/Paradox Interactive +noblacklist ${HOME}/.local/share/Steam +noblacklist ${HOME}/.local/share/vulkan +noblacklist ${HOME}/.paradoxinteractive +noblacklist ${HOME}/.paradoxlauncher +noblacklist ${HOME}/.steam +noblacklist ${HOME}/.steampath +noblacklist ${HOME}/.steampid +# needed for STEAM_RUNTIME_PREFER_HOST_LIBRARIES=1 to work +noblacklist /sbin +noblacklist /usr/sbin + +# Allow java (blacklisted by disable-devel.inc) +include allow-java.inc + +# Allow python (blacklisted by disable-interpreters.inc) +include allow-python2.inc +include allow-python3.inc + +include disable-common.inc +include disable-devel.inc +include disable-interpreters.inc +include disable-passwdmgr.inc +include disable-programs.inc + +mkdir ${HOME}/.local/share/aspyr-media +mkdir ${HOME}/.local/share/feral-interactive +mkdir ${HOME}/.local/share/Paradox Interactive +mkdir ${HOME}/.local/share/Steam +mkdir ${HOME}/.local/share/vulkan +mkdir ${HOME}/.paradoxinteractive +mkdir ${HOME}/.paradoxlauncher +mkdir ${HOME}/.steam +mkfile ${HOME}/.steampath +mkfile ${HOME}/.steampid +whitelist ${HOME}/.local/share/aspyr-media +whitelist ${HOME}/.local/share/feral-interactive +whitelist ${HOME}/.local/share/Paradox Interactive +whitelist ${HOME}/.local/share/Steam +whitelist ${HOME}/.local/share/vulkan +whitelist ${HOME}/.paradoxinteractive +whitelist ${HOME}/.paradoxlauncher +whitelist ${HOME}/.steam +whitelist ${HOME}/.steampath +whitelist ${HOME}/.steampid +include whitelist-common.inc +include whitelist-var-common.inc + +caps.drop all +#ipc-namespace +netfilter +nodvd +# nVidia users may need to comment / ignore nogroups and noroot +nogroups +nonewprivs +noroot +notv +nou2f +# novideo should be commented for VR +novideo +net none +#protocol unix,inet,inet6,netlink +# seccomp sometimes causes issues (see #2951, #3267), +# comment it or add 'ignore seccomp' to steam.local if so. +# seccomp +shell none +# tracelog breaks integrated browser +#tracelog + +# private-bin is disabled while in testing, but has been tested working with multiple games +private-bin awk,basename,bash,bsdtar,bzip2,cat,chmod,cksum,cmp,comm,compress,cp,curl,cut,date,dbus-launch,dbus-send,desktop-file-edit,desktop-file-install,desktop-file-validate,dirname,echo,env,expr,file,find,getopt,grep,gtar,gzip,head,hostname,id,lbzip2,ldconfig,ldd,ln,ls,lsb_release,lsof,lspci,lz4,lzip,lzma,lzop,md5sum,mkdir,mktemp,mv,netstat,ps,pulseaudio,python*,readlink,realpath,rm,sed,sh,sha1sum,sha256sum,sha512sum,sleep,sort,steam,steamdeps,steam-native,steam-runtime,sum,tail,tar,tclsh,test,touch,tr,umask,uname,update-desktop-database,wc,wget,which,whoami,xterm,xz,zenity +# extra programs are available which might be needed for select games +#private-bin java,java-config,mono +# picture viewers are needed for viewing screenshots +#private-bin eog,eom,gthumb,pix,viewnior,xviewer + +# comment the following line if you need controller support +private-dev +# private-etc breaks a small selection of games on some systems, comment to support those +private-etc alsa,alternatives,asound.conf,bumblebee,ca-certificates,crypto-policies,dbus-1,drirc,fonts,group,gtk-2.0,gtk-3.0,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,localtime,lsb-release,machine-id,mime.types,nvidia,os-release,passwd,pki,pulse,resolv.conf,services,ssl +private-tmp + +# breaks appindicator support +dbus-user none +dbus-system none diff --git a/.config/gtk-2.0/gtkrc-2.0 b/.config/gtk-2.0/gtkrc-2.0 new file mode 100644 index 0000000..f028395 --- /dev/null +++ b/.config/gtk-2.0/gtkrc-2.0 @@ -0,0 +1,4 @@ +gtk-theme-name="Arc-Dark" +gtk-icon-theme-name="Adwaita" +gtk-font-name="Sans 10" +gtk-cursor-theme-name="Adwaita" diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 100644 index 0000000..5000f09 --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1,4 @@ +[Settings] +gtk-theme-name=Arc-Dark +gtk-icon-theme-name="Adwaita" +gtk-font-name=Sans 10 diff --git a/.config/htop/htoprc b/.config/htop/htoprc new file mode 100644 index 0000000..4f6016b --- /dev/null +++ b/.config/htop/htoprc @@ -0,0 +1,39 @@ +# Beware! This file is rewritten by htop when settings are changed in the interface. +# The parser is also very primitive, and not human-friendly. +fields=0 48 20 46 47 1 +sort_key=47 +sort_direction=1 +tree_sort_key=0 +tree_sort_direction=1 +hide_kernel_threads=1 +hide_userland_threads=1 +shadow_other_users=0 +show_thread_names=0 +show_program_path=0 +highlight_base_name=0 +highlight_megabytes=1 +highlight_threads=1 +highlight_changes=0 +highlight_changes_delay_secs=5 +find_comm_in_cmdline=0 +strip_exe_from_cmdline=0 +show_merged_command=0 +tree_view=1 +tree_view_always_by_pid=0 +header_margin=1 +detailed_cpu_time=0 +cpu_count_from_one=1 +show_cpu_usage=1 +show_cpu_frequency=0 +show_cpu_temperature=1 +degree_fahrenheit=0 +update_process_names=0 +account_guest_in_cpu_meter=0 +color_scheme=0 +enable_mouse=1 +delay=15 +left_meters=Memory Blank Uptime +left_meter_modes=1 2 2 +right_meters=CPU Blank NetworkIO +right_meter_modes=1 2 2 +hide_function_bar=0 diff --git a/.config/picom/picom.conf b/.config/picom/picom.conf new file mode 100644 index 0000000..4723dcd --- /dev/null +++ b/.config/picom/picom.conf @@ -0,0 +1,5 @@ +opacity-rule = [ + "90:class_g = 'URxvt'", + "90:class_g = 'Steam'", + "95:class_g = 'KeePassXC'" +]; diff --git a/.config/ranger/rc.conf b/.config/ranger/rc.conf new file mode 100644 index 0000000..89ed69b --- /dev/null +++ b/.config/ranger/rc.conf @@ -0,0 +1,2 @@ +set colorscheme solarized +set preview_images True diff --git a/.config/shell/.bashrc b/.config/shell/.bashrc new file mode 100644 index 0000000..1a66eb0 --- /dev/null +++ b/.config/shell/.bashrc @@ -0,0 +1,27 @@ +# Source aliases and shortcuts +source ~/.config/shell/aliasrc +source ~/.config/shell/shortcutsrc + +# History file settings +HISTSIZE= +HISTFILE="~/.cache/bash_history" +HISTFILESIZE= +HISTTIMEFORMAT="%a, %d %b %Y %T %z " + +# Shell Options +set -o vi +shopt -s autocd +shopt -s histappend +shopt -s checkwinsize + +# Prompt +color_prompt=yes +PS1='\[\033[1;30m\][\u@\h:]\[\033[1;31m\]\W\[\033[1;30m\]\[\033[0m\]\$ ' + +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi diff --git a/.config/shell/aliasrc b/.config/shell/aliasrc new file mode 100644 index 0000000..c1a2de9 --- /dev/null +++ b/.config/shell/aliasrc @@ -0,0 +1,39 @@ +#!/bin/sh + +# Add color to commands +alias \ + diff="diff --color=auto" \ + dir="dir --color=auto" \ + vdir="vdir --color=auto" \ + egrep="egrep --color=auto" \ + fgrep="fgrep --color=auto" \ + grep="grep --color=auto" \ + ls="ls --group-directories-first --color=auto" + +# Git +alias \ + g='git' \ + gd='git --git-dir=$HOME/dotfiles/ --work-tree=$HOME' + +# Shorten other commands +alias \ + ports="ss -tuanp" \ + py="python3" \ + rb="/usr/sbin/reboot" \ + sd="/usr/sbin/shutdown now" \ + sx="startx" \ + svm="sudo systemctl start libvirtd" \ + v="vim" \ + yta="youtube-dl -f bestaudio --download-archive ~/media/youtube/archive" \ + ytv="youtube-dl -f bestvideo[height\<=1080]+bestaudio/best[height\<=1080] --download-archive ~/media/youtube/archive" \ + z="zathura" + +# Start commands with specific options always +alias \ + calcurse="calcurse -D ~/.config/calcurse" \ + cp="cp -iv" \ + ffmpeg="ffmpeg -hide_banner" \ + mv="mv -iv" \ + rm="rm -Iv" + +source $XDG_CONFIG_HOME/shell/private-aliasrc diff --git a/.config/shell/profile b/.config/shell/profile new file mode 100644 index 0000000..e806ba1 --- /dev/null +++ b/.config/shell/profile @@ -0,0 +1,22 @@ +#!/bin/bash +# Profile file - executed by login shells + +# Add ~/.local/bin and all subdirectories to path +script_dirs="$(find ~/.local/bin/ -type d | grep -v "git")" +script_dirs="$(echo $script_dirs | tr ' ' ':')" +export PATH=$PATH:$script_dirs + +export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' +export LESSHISTFILE='-' +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$HOME/.local/share" +export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc" +export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc" +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" +export BROWSER="firefox" +export EDITOR="vim" +export TERMINAL="urxvtc" + +eval `ssh-agent -s` +[ "$(tty)" = "/dev/tty1" ] && startx "$XINITRC" diff --git a/.config/shell/shortcutsrc b/.config/shell/shortcutsrc new file mode 100644 index 0000000..b8486be --- /dev/null +++ b/.config/shell/shortcutsrc @@ -0,0 +1,27 @@ +#!/bin/sh +alias \ + bin='cd $HOME/.local/bin' \ + brc='vim $HOME/.bashrc' \ + cac='cd $HOME/.cache' \ + cfa='vim $HOME/.config/shell/aliasrc' \ + cff='vim $XDG_CONFIG_HOME/fontconfig/fonts.conf' \ + cfg='cd $HOME/.config/' \ + cfs='vim $HOME/.config/shell/shortcutsrc' \ + dat='cd $HOME/.local/share' \ + dbc='cd $HOME/.local/src/dwmblocks; vim ~/.local/src/dwmblocks/blocks.h' \ + dwc='cd $HOME/.local/src/dwm; vim ~/.local/src/dwm/config.h' \ + dws='cd $HOME/.local/src/dwm' \ + gms='cd $HOME/.steam/debian-installation/steamapps/common' \ + h='cd $HOME' \ + hkc='vim $HOME/.config/sxhkd/sxhkdrc' \ + i3b='cd $HOME/.config/i3blocks/' \ + i3c='vim $HOME/.config/i3/config' \ + mus='cd ~/media/music' \ + pro='cd $HOME/programs/' \ + pic='cd $HOME/pictures/' \ + sbs='cd $HOME/.local/bin/statusbar' \ + src='cd $HOME/.local/src' \ + vrc='vim $HOME/.vim/vimrc' \ + xrc='vim $HOME/.config/x11/xinitrc' \ + xrs='vim $HOME/.config/x11/xresources' \ + zrc='vim $HOME/.config/zsh/.zshrc' diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc new file mode 100644 index 0000000..315b852 --- /dev/null +++ b/.config/sxhkd/sxhkdrc @@ -0,0 +1,89 @@ +# Lock screen +super + shift + x + lock + +# Take a screenshot +super + Print + screenshot +super + Shift + Print + windowshot + +# Wallpaper bindings +super + w + bgscript + +# Show Keybinding Help +super + F1 + bind-help + +# Cmus Bindings +super + m + urxvt -name "cmus" -e cmus; sleep 1; pkill -RTMIN+12 dwmblocks +super + shift + m + cmus-remote --raw q; pkill -RTMIN+12 dwmblocks +super + {comma, greater, less} + cmus-remote --{pause,next,prev}; pkill -RTMIN+12 dwmblocks +super + {period, slash} + $HOME/.local/bin/cmus/toggle-{mode,shuf} + +# Volume Control +super + {bracketleft, bracketright} + volctl 5 {-,+} +super + shift + {braceleft, braceright} + volctl 10 {-,+} +super + equal + amixer sset Master 50% unmute && signal-vol +super + backslash + amixer sset Master toggle && signal-vol + +# Program Bindings +super + q + urxvt -e htop +super + w + wireshark +super + e + urxvt -e vim +super + r + urxvt -e ranger +super + a + urxvt -e calcurse -D ~/.config/calcurse +super + s + firejail steam +super + shift + s + kill-steam +super + d + dmenu_run +super + f + firejail firefox +super + shift + f + firefox +super + x + keepassxc +super + c + urxvt -e cli-brary +super + v + virt-manager +super + Return + urxvt + +# Function Key Bindings + +# Most if not all bindings here should be redundant, as I do not want to have to +# rely on these keys for primary and/or common bindings + +Pause + cmus-remote --pause; pkill -RTMIN+12 dwmblocks +XF86AudioStop + cmus-remote --pause; pkill -RTMIN+12 dwmblocks +XF86AudioPlay + cmus-remote --pause; pkill -RTMIN+12 dwmblocks +XF86AudioNext + cmus-remote --seek +5 +shift + XF86AudioPrev + cmus-remote --seek -1m +shift + XF86AudioNext + cmus-remote --seek +1m +XF86AudioLowerVolume + volctl 1 - +XF86AudioRaiseVolume + volctl 1 + diff --git a/.config/wget/wgetrc b/.config/wget/wgetrc new file mode 100644 index 0000000..4fd7999 --- /dev/null +++ b/.config/wget/wgetrc @@ -0,0 +1 @@ +hsts-file=~/.cache/wget-hsts diff --git a/.config/x11/xinitrc b/.config/x11/xinitrc new file mode 100644 index 0000000..25b2fab --- /dev/null +++ b/.config/x11/xinitrc @@ -0,0 +1,24 @@ +# disable screensaver +xset s off +# disable power saving +xset -dpms +# set refresh rate +xrandr -r 144 +# set background +bgscript +# remap keys +kbremaps +# load Xresources +xrdb ~/.config/x11/xresources +# start compositor +picom --config ~/.config/picom/picom.conf & +# start notification daemon +dunst & +# start unclutter +unclutter & +# start keybind daemon +sxhkd & +# start status bar +dwmblocks & +# start window manager (and keep starting when shutdown) +dwm diff --git a/.config/x11/xresources b/.config/x11/xresources new file mode 100644 index 0000000..33df06e --- /dev/null +++ b/.config/x11/xresources @@ -0,0 +1,63 @@ +URxvt.scrollBar: false +*.font: xft:monospace:size=12 + +! Brogrammer +*.foreground: #d6dbe5 +*.background: #131313 +*.color0: #1f1f1f +*.color1: #f81118 +*.color2: #2dc55e +*.color3: #ecba0f +*.color4: #2a84d2 +*.color5: #4e5ab7 +*.color6: #1081d6 +*.color7: #d6dbe5 +*.color8: #d6dbe5 +*.color9: #de352e +*.color10: #1dd361 +*.color11: #f3bd09 +*.color12: #1081d6 +*.color13: #5350b9 +*.color14: #0f7ddb +*.color15: #ffffff +*.colorBD: #d6dbe5 + +! Dracula +!*.foreground: #F8F8F2 +!*.background: #282A36 +!*.color0: #000000 +!*.color8: #4D4D4D +!*.color1: #FF5555 +!*.color9: #FF6E67 +!*.color2: #50FA7B +!*.color10: #5AF78E +!*.color3: #F1FA8C +!*.color11: #F4F99D +!*.color4: #BD93F9 +!*.color12: #CAA9FA +!*.color5: #FF79C6 +!*.color13: #FF92D0 +!*.color6: #8BE9FD +!*.color14: #9AEDFE +!*.color7: #BFBFBF +!*.color15: #E6E6E6 + +! Gruvbox +!*.color0: #1d2021 +!*.color1: #cc241d +!*.color2: #98971a +!*.color3: #d79921 +!*.color4: #458588 +!*.color5: #b16286 +!*.color6: #689d6a +!*.color7: #a89984 +!*.color8: #928374 +!*.color9: #fb4934 +!*.color10: #b8bb26 +!*.color11: #fabd2f +!*.color12: #83a598 +!*.color13: #d3869b +!*.color14: #8ec07c +!*.color15: #ebdbb2 +!*.color256: #1d2021 +!*.color257: #ebdbb2 diff --git a/.config/zathura/zathurarc b/.config/zathura/zathurarc new file mode 100644 index 0000000..5e7a57d --- /dev/null +++ b/.config/zathura/zathurarc @@ -0,0 +1,9 @@ +set sandbox normal +set statusbar-h-padding 0 +set statusbar-v-padding 0 +set page-padding 1 +set selection-clipboard clipboard +map u scroll half-up +map d scroll half-down +map c recolor +map g goto top diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile new file mode 100644 index 0000000..59a6032 --- /dev/null +++ b/.config/zsh/.zprofile @@ -0,0 +1,19 @@ +#!/bin/zsh +# Profile file - executed by login shells + +export PATH=$PATH:~/.local/bin:~/.local/bin/cryptusb:~/.local/bin/private:~/.local/bin/statusbar:~/.local/bin/theme:~/.local/bin/cmus:~/.local/bin/dmenu:~/.local/bin/backups:~/.local/bin/backups/borg +export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' +export LESSHISTFILE='-' +export XDG_CACHE_HOME="$HOME/.cache" +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$HOME/.local/share" +export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc" +export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc" +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" + +export BROWSER="firefox" +export EDITOR="vim" +export TERMINAL="urxvtc" + +eval `ssh-agent -s` +[ "$(tty)" = "/dev/tty1" ] && startx "$XINITRC" diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc new file mode 100644 index 0000000..30e3f64 --- /dev/null +++ b/.config/zsh/.zshrc @@ -0,0 +1,33 @@ +# Source aliases and shortcuts +source ~/.config/shell/aliasrc +source ~/.config/shell/shortcutsrc + +# History file settings +HISTSIZE=100000000 +SAVEHIST=100000000 +HISTFILE="$HOME/.cache/zsh/history" + +# Shell options +bindkey -v +export KEYTIMEOUT=1 +setopt autocd +stty stop undef +setopt histappend + +# Prompt +autoload -U colors && colors +PS1="%B%{$fg[black]%}[%b%{$fg[yellow]%}%n%B%{$fg[black]%}-at-%b%{$fg[yellow]%}%M%B%{$fg[black]%}]%b%{$fg[red]%}%1~%{$reset_color%}$ " + +# Autocomplete Settings +autoload -U compinit +zstyle ":completion:*" menu select +zmodload zsh/complist +compinit +_comp_options+=(globdots) +# Vim keys in menu select +bindkey -M menuselect 'h' vi-backward-char +bindkey -M menuselect 'k' vi-up-line-or-history +bindkey -M menuselect 'l' vi-forward-char +bindkey -M menuselect 'j' vi-down-line-or-history + +source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2>/dev/null diff --git a/.local/bin/alarm b/.local/bin/alarm new file mode 100755 index 0000000..2909ecf --- /dev/null +++ b/.local/bin/alarm @@ -0,0 +1,17 @@ +#!/bin/sh + +[ $1 = "-h" -o $1 = "--help" ] && echo "usage: alarm time sound_file" && exit 0 +[ $# != 2 ] && echo "usage: alarm time sound_file" && exit 1 + +echo "alarm set for $1" +echo "$(basename "$2") is the alarm tone" + +while [ $(date +%H:%M) != "$1" ] +do + sleep 1 +done + +amixer -q sset Master 100% unmute +pkill -RTMIN+10 i3blocks +mpv --loop=inf $2 + diff --git a/.local/bin/backups/borg-offsite b/.local/bin/backups/borg-offsite new file mode 100755 index 0000000..dfc9c01 --- /dev/null +++ b/.local/bin/backups/borg-offsite @@ -0,0 +1,25 @@ +#!/bin/sh +# Full system backup with Borg + +# Backup root partition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + --exclude '/dev/*' \ + --exclude '/proc/*' \ + --exclude '/sys/*' \ + --exclude '/tmp/*' \ + --exclude '/mnt/*' \ + --exclude '/media/*' \ + "/mnt/offsite-backup/titan::root-{now:%Y-%m-%d}" / + +# Backup boot parition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + "/mnt/offsite-backup/titan::boot-{now:%Y-%m-%d}" /boot + +# Backup home partition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + "/mnt/offsite-backup/titan::home-{now:%Y-%m-%d}" /home + +# Backup var partition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + "/mnt/offsite-backup/titan::var-{now:%Y-%m-%d}" /var + diff --git a/.local/bin/backups/borg-onsite b/.local/bin/backups/borg-onsite new file mode 100755 index 0000000..658c425 --- /dev/null +++ b/.local/bin/backups/borg-onsite @@ -0,0 +1,25 @@ +#!/bin/sh +# Full system backup with Borg + +# Backup root partition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + --exclude '/dev/*' \ + --exclude '/proc/*' \ + --exclude '/sys/*' \ + --exclude '/tmp/*' \ + --exclude '/mnt/*' \ + --exclude '/media/*' \ + "/mnt/onsite-backup/titan::root-{now:%Y-%m-%d}" / + +# Backup boot parition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + "/mnt/onsite-backup/titan::boot-{now:%Y-%m-%d}" /boot + +# Backup home partition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + "/mnt/onsite-backup/titan::home-{now:%Y-%m-%d}" /home + +# Backup var partition +sudo borg create --verbose --list --stats --show-rc --exclude-caches --one-file-system \ + "/mnt/onsite-backup/titan::var-{now:%Y-%m-%d}" /var + diff --git a/.local/bin/bgscript b/.local/bin/bgscript new file mode 100755 index 0000000..4ec7706 --- /dev/null +++ b/.local/bin/bgscript @@ -0,0 +1,4 @@ +#!/bin/sh + +#feh --no-fehbg --recursive --randomize --bg-scale ~/pictures/wallpapers +feh --no-fehbg --bg-scale ~/pictures/wallpapers/miscbest/4.jpg diff --git a/.local/bin/cmus/toggle-mode b/.local/bin/cmus/toggle-mode new file mode 100755 index 0000000..e73edc6 --- /dev/null +++ b/.local/bin/cmus/toggle-mode @@ -0,0 +1,14 @@ +#!/bin/sh +# Toggles the cmus aaa mode (all,album,artist) + +cmus-remote -C "toggle aaa_mode" +mode=$(cmus-remote -Q | grep "aaa_mode" | cut -d ' ' -f 3) +artist=$(cmus-remote -Q | grep "tag artist" | cut -d ' ' -f 3-) +album=$(cmus-remote -Q | grep "tag album" | cut -d ' ' -f 3-) + +[ "$mode" = "all" ] && dunstctl close-all && notify-send "Playing from full library" \ + && exit +[ "$mode" = "artist" ] && dunstctl close-all && notify-send "Playing by artist: $artist" \ + && exit +[ "$mode" = "album" ] && dunstctl close-all && notify-send "Playing from album: $album" \ + && exit diff --git a/.local/bin/cmus/toggle-shuf b/.local/bin/cmus/toggle-shuf new file mode 100755 index 0000000..57c2606 --- /dev/null +++ b/.local/bin/cmus/toggle-shuf @@ -0,0 +1,7 @@ +#!/bin/sh +# Toggle and report status of shuffle mode in cmus + +cmus-remote --shuffle +status=$(cmus-remote -Q | grep shuffle | cut -d ' ' -f 3) +dunstctl close-all +[ "$status" = "true" ] && notify-send "Shuffle on" || notify-send "Shuffle off" diff --git a/.local/bin/compile b/.local/bin/compile new file mode 100755 index 0000000..837766b --- /dev/null +++ b/.local/bin/compile @@ -0,0 +1,14 @@ +#!/bin/sh + +# Script for automatic compilation (or interpretation) of various file types +# The filename needs to be passed to this script as the only argument +file="$1" +base="${file%.*}" +ext="${file##*.}" + +case $ext in + mom) groff -mom -Tpdf "$file" > "$base.pdf" ;; + ms) groff -me -Tpdf "$file" > "$base.pdf" ;; + me) groff -me -Tpdf "$file" > "$base.pdf" ;; + py) python3 "$file" ;; +esac diff --git a/.local/bin/cryptusb/create-cryptusb b/.local/bin/cryptusb/create-cryptusb new file mode 100755 index 0000000..e0f49fe --- /dev/null +++ b/.local/bin/cryptusb/create-cryptusb @@ -0,0 +1,34 @@ +#!/bin/sh +# Prompts for and creates a LUKS encrypted partition on a device + +# Get disks connected to the system that are hotpluggable (USBs) +devices="$(lsblk -lp -o NAME,SIZE,HOTPLUG,TYPE | grep "1 disk" | awk '{print $1,"-",$2}')" +[ "$devices" = "" ] && echo "no devices available" && exit 0 + +# Prompt for device selection from the user +select=$(echo "$devices" | dmenu -i -p "Select a device") +[ "$select" = "" ] && echo "no device selected" && exit 0 + +# Get confirmation since this is a potentially dangerous operation +yn=$(echo "No\nYes" | dmenu -i -p "Create encrypted partition on $select") +[ "$yn" != "Yes" ] && exit 0 + +# Get device path from selection string +usb=$(echo $select | cut -d ' ' -f 1) +echo $usb + +# Create LUKS partition on selected device (user will be promted for password to encrypt) +sudo cryptsetup --type luks2 luksFormat "$usb" + +# Open device and create filesystem on partition +echo "creating filesystem" +map_name="crypt-create" +sudo cryptsetup open "$usb" "$map_name" +sudo mkfs.ext4 "/dev/mapper/$map_name" + +# Close device after creating filesystem +sudo cryptsetup close "$map_name" + +echo "done" + + diff --git a/.local/bin/cryptusb/handle-cryptusb b/.local/bin/cryptusb/handle-cryptusb new file mode 100755 index 0000000..63d6ef4 --- /dev/null +++ b/.local/bin/cryptusb/handle-cryptusb @@ -0,0 +1,8 @@ +#!/bin/sh +# Single script for easy handling of encrypted USB +# Calls mount, sync, and umount scripts to automatically handle what is commonly +# run for encrypted USBs + +mount-cryptusb && notify-send "Encrypted USB mounted" +sync-cryptusb && notify-send "Encrypted USB synced" +umount-cryptusb && notify-send "Encrypted USB unmounted" diff --git a/.local/bin/cryptusb/mount-cryptusb b/.local/bin/cryptusb/mount-cryptusb new file mode 100755 index 0000000..882734c --- /dev/null +++ b/.local/bin/cryptusb/mount-cryptusb @@ -0,0 +1,5 @@ +#!/bin/sh +# Mounts LUKS encrypted USB + +sudo cryptsetup open /dev/sdc cryptusb +sudo mount /dev/mapper/cryptusb /mnt/cryptusb diff --git a/.local/bin/cryptusb/sync-cryptusb b/.local/bin/cryptusb/sync-cryptusb new file mode 100755 index 0000000..e9d3f1a --- /dev/null +++ b/.local/bin/cryptusb/sync-cryptusb @@ -0,0 +1,6 @@ +#!/bin/sh +# Syncs important files to encrypted USB + +rsync -avP --exclude=".steam*" --exclude="virtual_machines*" --exclude="media*" \ + --exclude="*.iso" --exclude="*.qcow2" \ + $HOME/ /mnt/cryptusb/$USER@$(hostname)/ diff --git a/.local/bin/cryptusb/umount-cryptusb b/.local/bin/cryptusb/umount-cryptusb new file mode 100755 index 0000000..c3c4b93 --- /dev/null +++ b/.local/bin/cryptusb/umount-cryptusb @@ -0,0 +1,5 @@ +#!/bin/sh +# Unmounts LUKS encrypted USB + +sudo umount /mnt/cryptusb +sudo cryptsetup close cryptusb diff --git a/.local/bin/dmenu/mount-device b/.local/bin/dmenu/mount-device new file mode 100755 index 0000000..e325a65 --- /dev/null +++ b/.local/bin/dmenu/mount-device @@ -0,0 +1,27 @@ +#!/bin/sh +# Script for mounting block devices + +# Set askpass program for authentication +export SUDO_ASKPASS=/usr/bin/ssh-askpass + +# Check for and get device to mount from user +devs="$(lsblk -lp | grep "part $" | awk '{print $1,"-",$4}')" +[ "$devs" = "" ] && exit 0 +dev="$(echo $devs | dmenu -i -p "Select device" | cut -d ' ' -f 1)" +[ "$dev" = "" ] && exit 0 + +# Attempt to mount without mountpoint for devices in /etc/fstab +sudo -A mount "$dev" 2>/dev/null && exit 0 + +# Get mountpoint from user +mntpnt="$(find /mnt -maxdepth 3 -type d 2>/dev/null | dmenu -i -p "Select mountpoint")" +[ "$mntpnt" = "" ] && exit 1 + +# If selected mountpoint does not exist ask to create it +# If user decides not to create non-existent drive, exit +[ ! -d $mntpnt ] && create="$(echo "No\nYes" | \ + dmenu -i -p "$mntpnt does not exist, would you like to create it?")" && \ + ([ "$create" = "Yes" ] && sudo -A mkdir -p $mntpnt || exit 0) + +sudo -A mount $dev $mntpnt && pgrep -x dunst && notify-send "$dev mounted to $mntpnt" + diff --git a/.local/bin/dmenu/unicode-select b/.local/bin/dmenu/unicode-select new file mode 100755 index 0000000..f42cd6e --- /dev/null +++ b/.local/bin/dmenu/unicode-select @@ -0,0 +1,9 @@ +#!/bin/sh +# Select unicode character via dmenu and copy to clipboard + +line="$(cat ~/.local/share/unicode_list | dmenu -i -l 10)" +grep "$line" ~/.local/src/unicode_list | tr -d [:print:] | + xclip -r -selection "clipboard" && + notify-send "$(xclip -selection "clipboard" -o) copied to clipboard" + + diff --git a/.local/bin/dmenu/unmount-device b/.local/bin/dmenu/unmount-device new file mode 100755 index 0000000..75cb10f --- /dev/null +++ b/.local/bin/dmenu/unmount-device @@ -0,0 +1,19 @@ +#!/bin/sh +# Script for unmounting filesystems + +# Set askpass program for authentication +export SUDO_ASKPASS=/usr/bin/ssh-askpass + +# Get list of unmountable filesystems excluding critical ones (/, /home, /boot, etc...) +exclude="\(/\|/boot\|/boot/efi\|/var\|/tmp\|/home\)$" +parts="$(lsblk -lp | grep "part /" | grep -v "$exclude" | awk '{print $7,"-",$4}')" +[ "$parts" = "" ] && exit 0 + +# Get filesystem to unmount from user +select="$(echo "$parts" | dmenu -i -p "Select filesystem to unmount" | cut -d ' ' -f 1)" +[ "$select" = "" ] && exit 0 +dev="$(lsblk -lp | grep "$select" | awk '{print $1}')" + +# Unmount the filesystem +sudo -A umount $select && pgrep -x dunst && notify-send "Unmounted $select ($dev)" \ + || notify-send "Error: unable to unmount $select" "Are you in it?" diff --git a/.local/bin/exiti3 b/.local/bin/exiti3 new file mode 100755 index 0000000..0fe76bf --- /dev/null +++ b/.local/bin/exiti3 @@ -0,0 +1,4 @@ +#!/bin/sh +read -p "Exit i3 [Y]/n?" exit +[ "$exit" = "Y" ] && i3-msg exit + diff --git a/.local/bin/ffmpeg-convert b/.local/bin/ffmpeg-convert new file mode 100755 index 0000000..171a97b --- /dev/null +++ b/.local/bin/ffmpeg-convert @@ -0,0 +1,60 @@ +#!/bin/sh + +# Converts audio/video files to a different specified container format with ffmpeg +# Depends on the youtube-filename-fixer script for cleaining up YouTube filenames + +usage() { + echo "usage: ffmpeg-convert [options] container video_codec audio_codec files" + echo "\npositional parameters" + echo "\tcontainer\textension of the container that is being converted to" + echo "\tvideo_codec\tvideo codec of the output file" + echo "\taudio_codec\taudio codec of the output file" + echo "\noptions" + echo "\t-d\tdelete original files after conversion" + echo "\t-h\tshow this help and exit" +} +stdin() { + while read -r infile + do + outfile="$(echo $infile | rev | cut -d '.' -f 2 | rev)$container" + echo "converting $infile -> $outfile..." + ffmpeg -nostdin -loglevel 16 -i "$infile" -c:v $video -c:a $audio "$outfile" + [ $delete -eq 1 ] && rm -v "$infile" + done +} +cli() { + for infile in $@ + do + outfile="$(echo $infile | rev | cut -d '.' -f 2 | rev)$container" + echo "converting $infile -> $outfile..." + ffmpeg -nostdin -loglevel 16 -i "$infile" -c:v $video -c:a $audio "$outfile" + [ $delete -eq 1 ] && rm -v "$infile" + done +} + +options=$(getopt -o 'dhs' -- "$@") +eval set -- "$options" +delete=0 +stdin=0 +while true +do + case $1 in + '-h') usage ; exit 0 ;; + '-d') delete=1; shift; continue ;; + '-s') stdin=1; shift; continue ;; + '--') shift; break;; + *) echo "internal error"; exit 1 ;; + esac +done +[ $# -ge 3 ] || (usage && exit 1) + +# Set variables specified on command line +container="$1"; shift; video="$1"; shift; audio="$1"; shift; + +# Prepend a dot to the container name if not specified already +[ "${container#.}" = "$container" ] && container=".$container" + +# If there is only one file argument and it is "-" +[ $stdin -eq 1 ] && stdin || cli $@ + + diff --git a/.local/bin/get-pkgs b/.local/bin/get-pkgs new file mode 100755 index 0000000..19e64f3 --- /dev/null +++ b/.local/bin/get-pkgs @@ -0,0 +1,8 @@ +#!/bin/sh +# Creates files containing lists of installed and manually installed packages +# in cache directory + +pkgdir="$HOME/.cache/packages" +apt list --installed | tail -n+2 | cut -d '/' -f 1 > $pkgdir/installed +apt list --manual-installed | tail -n+2 | + cut -d '/' -f 1 > $pkgdir/manual-installed diff --git a/.local/bin/kbremaps b/.local/bin/kbremaps new file mode 100755 index 0000000..b914b7f --- /dev/null +++ b/.local/bin/kbremaps @@ -0,0 +1,7 @@ +#!/bin/sh +# Script for keyboard changes + +# Change autorepeat rate +xset r rate 300 50 +# Remap caps lock and escape +setxkbmap -option caps:swapescape diff --git a/.local/bin/kill-steam b/.local/bin/kill-steam new file mode 100755 index 0000000..5572ae7 --- /dev/null +++ b/.local/bin/kill-steam @@ -0,0 +1,3 @@ +#!/bin/sh + +pkill -f steam diff --git a/.local/bin/lock b/.local/bin/lock new file mode 100755 index 0000000..223ac59 --- /dev/null +++ b/.local/bin/lock @@ -0,0 +1,7 @@ +#!/bin/sh +# Locks the screen with a blurred screenshot of the current window as the lock image +# Also pauses any music that is playing + +maim | convert - -paint 5 ~/.cache/lock.png +[ "$(cmus-remote -Q | head -1 | cut -d ' ' -f 2)" != "playing" ] || cmus-remote --pause +i3lock -u -e -i ~/.cache/lock.png diff --git a/.local/bin/mount-media b/.local/bin/mount-media new file mode 100755 index 0000000..e748941 --- /dev/null +++ b/.local/bin/mount-media @@ -0,0 +1,6 @@ +#!/bin/sh +# Uses sshfs to locally mount media directories +# Check if the media computer is reachable and if so mount the media +ping -W 0.01 -c 1 prometheus >/dev/null && \ + sshfs sisko@prometheus:/mnt/raid/media/ $HOME/media/prometheus/ + diff --git a/.local/bin/pdf-preview b/.local/bin/pdf-preview new file mode 100755 index 0000000..1587f36 --- /dev/null +++ b/.local/bin/pdf-preview @@ -0,0 +1,8 @@ +#!/bin/sh + +# Typically called from vim +# Displays a pdf preview of an in-progress groff document +# Takes the filename as the only argument +# The pdf file is expected to have the same name as the groff document + +zathura "${1%.*}.pdf" & diff --git a/.local/bin/screenshot b/.local/bin/screenshot new file mode 100755 index 0000000..3f24f70 --- /dev/null +++ b/.local/bin/screenshot @@ -0,0 +1,8 @@ +#!/bin/sh +# Take screenshot with interactive area selection +# Saves screenshot with timestamp in directory named after the date + +time=$(date +%b-%d-%Y-%T.%N) +day=$(date +%b-%d-%Y) +[ -d ~/pictures/screenshots/$day ] || mkdir ~/pictures/screenshots/$day +maim -s > ~/pictures/screenshots/$day/$time.png && notify-send "Screenshot Taken" diff --git a/.local/bin/signal-vol b/.local/bin/signal-vol new file mode 100755 index 0000000..e5739f6 --- /dev/null +++ b/.local/bin/signal-vol @@ -0,0 +1,4 @@ +#!/bin/sh +# Signals the dwmblocks volume block to update + +pkill -RTMIN+10 dwmblocks diff --git a/.local/bin/statusbar/bar-calcurse b/.local/bin/statusbar/bar-calcurse new file mode 100755 index 0000000..dca82f3 --- /dev/null +++ b/.local/bin/statusbar/bar-calcurse @@ -0,0 +1,15 @@ +#!/bin/sh + +#i3blocks calcurse module + +case $BUTTON in + 3)notify-send -t 5000 "$(calcurse -D ~/.config/calcurse/ -c ~/.config/calcurse/apts -a)";; + 1)notify-send -t 20000 "$(calcurse -D ~/.config/calcurse/ -c ~/.config/calcurse/apts -r7)";; + 2)notify-send -t 5000 "$(calcurse -D ~/.config/calcurse/ -t)" +esac + +name="$(calcurse -D ~/.config/calcurse/ -c ~/.config/calcurse/apts -n | grep "\[" | sed "s/\s*\[/\[/" | cut -d ' ' -f 2-)" +[ "$name" = "" ] && echo "Nothing Scheduled" && exit 0 +time="$(grep "$name" ~/.config/calcurse/apts | head -1 | cut -d ' ' -f 3)" +[ ${time%%:*} -gt 12 ] && time="$((${time%%:*}-12)):${time##*:} PM" || time="$time AM" +echo "$name @ $time" diff --git a/.local/bin/statusbar/bar-cmus b/.local/bin/statusbar/bar-cmus new file mode 100755 index 0000000..947f950 --- /dev/null +++ b/.local/bin/statusbar/bar-cmus @@ -0,0 +1,25 @@ +#!/bin/sh + +case $BUTTON in + 1)notify-send "$(cmus-remote -Q | grep position | awk '{ printf "%02i:%02i", $2/60, $2%60}')/$(cmus-remote -Q | grep duration | awk '{ printf "%02i:%02i\n", $2/60, $2%60} ') ($(cmus-remote -Q | grep status | cut -d ' ' -f 2-)) +Artist: $(cmus-remote -Q | grep "tag artist " | cut -d ' ' -f 3-) +Album: $(cmus-remote -Q | grep "tag album " | cut -d ' ' -f 3-) +Track: $(cmus-remote -Q | grep "tag title " | cut -d ' ' -f 3-) +Genre: $(cmus-remote -Q | grep "tag genre " | cut -d ' ' -f 3-) +Mode: $(cmus-remote -Q | grep "aaa_mode" | cut -d ' ' -f 3) +Format: $(cmus-remote -Q | grep file | rev | cut -d '.' -f 1 | rev) +Shuffle: $(cmus-remote -Q | grep "set shuffle " | cut -d ' ' -f 3-) +Repeat: $(cmus-remote -Q | grep "set repeat_current " | cut -d ' ' -f 3-)";; + + 3)urxvt -e vim ~/.local/bin/statusbar/cmus;; + 4)cmus-remote --next;; + 5)cmus-remote --prev;; +esac + +pgrep -x cmus >/dev/null || exit 0 + +status="$(cmus-remote -Q | grep status | cut -d ' ' -f 2)" +artist="$(cmus-remote -Q | grep "tag artist" | cut -d ' ' -f 3- | tr -d "\n")" +track="$(cmus-remote -Q | grep "tag title" | cut -d ' ' -f 3- | tr -d "\n")" +echo -n "$artist - $track" +[ "$status" = "playing" ] || echo -n " [P]" diff --git a/.local/bin/statusbar/bar-cpu b/.local/bin/statusbar/bar-cpu new file mode 100755 index 0000000..c21fe20 --- /dev/null +++ b/.local/bin/statusbar/bar-cpu @@ -0,0 +1,7 @@ +#!/bin/sh +case $BUTTON in + 1) notify-send "$(ps axc -o cmd:15,%cpu --sort=-%cpu | head -6)";; + 3) urxvt -e vim ~/.local/bin/statusbar/cpu +esac +mpstat 1 1 | awk '/Average/ { printf "%.2f% ",100-$12 }' +temp="$(sensors | awk '/Tctl/ { print $2 } ')"; echo -n ${temp#+} diff --git a/.local/bin/statusbar/bar-gpu b/.local/bin/statusbar/bar-gpu new file mode 100755 index 0000000..5351a2f --- /dev/null +++ b/.local/bin/statusbar/bar-gpu @@ -0,0 +1,6 @@ +#!/bin/sh + +temp="$(sensors | awk '/edge/ { print $2 } ')" +fan="$(sensors | awk '/fan1/ { print $2 } ')" +power="$(sensors | awk '/power1/ { print $2 } ')" +echo -n "${temp#+} $fan RPM" diff --git a/.local/bin/statusbar/bar-ipv4 b/.local/bin/statusbar/bar-ipv4 new file mode 100755 index 0000000..4e51eca --- /dev/null +++ b/.local/bin/statusbar/bar-ipv4 @@ -0,0 +1,9 @@ +#!/bin/sh + +case $BUTTON in + 1)notify-send --expire-time=60000 "IP Addresses" "$(ip a | awk '/\/24|\/64/ {if($5=="temporary")print $2 " " $5;else print $2;}')";; + 3)urxvt -e ~/.local/bin/statusbar/ipv4 +esac +ip a | awk '/\/24/ { print $2 }' | cut -d '/' -f 1 + + diff --git a/.local/bin/statusbar/bar-memory b/.local/bin/statusbar/bar-memory new file mode 100755 index 0000000..1e98cca --- /dev/null +++ b/.local/bin/statusbar/bar-memory @@ -0,0 +1,8 @@ +#!/bin/sh + +case $BUTTON in + 1)notify-send "$(ps axc -o cmd:15,%mem --sort=-%mem | head -6)";; + 3)urxvt -e vim ~/.local/bin/statusbar/memory +esac +free --si -h | grep Mem | awk '{ print $3 "/" $2 }' + diff --git a/.local/bin/statusbar/bar-storage b/.local/bin/statusbar/bar-storage new file mode 100755 index 0000000..d7b5fcf --- /dev/null +++ b/.local/bin/statusbar/bar-storage @@ -0,0 +1,7 @@ +#!/bin/sh + +case $BUTTON in + 1)notify-send "$(df -H | grep "Filesystem\|/dev/sd")";; + 3)urxvt -e vim ~/.local/bin/statusbar/storage +esac +df -H | awk '/\/home/ { print $4 }' diff --git a/.local/bin/statusbar/bar-time b/.local/bin/statusbar/bar-time new file mode 100755 index 0000000..f61a268 --- /dev/null +++ b/.local/bin/statusbar/bar-time @@ -0,0 +1,7 @@ +#!/bin/sh + +case $BUTTON in + 1)notify-send "$(ncal -hb)";; + 3)urxvt -e vim ~/.local/bin/statusbar/time +esac +date +"%r %A %D" diff --git a/.local/bin/statusbar/bar-volume b/.local/bin/statusbar/bar-volume new file mode 100755 index 0000000..d9bcc9d --- /dev/null +++ b/.local/bin/statusbar/bar-volume @@ -0,0 +1,13 @@ +#!/bin/sh +# i3blocks volume module + +case $BUTTON in + 1)urxvt -e alsamixer;; + 3)urxvt -e vim ~/.local/bin/statusbar/volume;; + 4)amixer -q sset Master 1%+ unmute;; + 5)amixer -q sset Master 1%- unmute;; +esac + +stats=$(amixer sget Master | grep "Front Left:" | cut -d ' ' -f 7,8 | tr -d '[]') +[ "${stats##* }" = "on" ] && echo -n "${stats%% *}" || echo -n "${stats%% *}" + diff --git a/.local/bin/stop-alarm b/.local/bin/stop-alarm new file mode 100755 index 0000000..4607b11 --- /dev/null +++ b/.local/bin/stop-alarm @@ -0,0 +1,5 @@ +#!/bin/sh + +pkill mpv +amixer -q sset Master 50% +pkill -RTMIN+10 i3blocks diff --git a/.local/bin/sync-music b/.local/bin/sync-music new file mode 100755 index 0000000..4619a23 --- /dev/null +++ b/.local/bin/sync-music @@ -0,0 +1,4 @@ +#!/bin/sh +# Sync music from media computer to local computer + +rsync -av sisko@prometheus:/mnt/raid/media/music/ $HOME/media/music/ diff --git a/.local/bin/theme/get-gradient b/.local/bin/theme/get-gradient new file mode 100755 index 0000000..91f9391 --- /dev/null +++ b/.local/bin/theme/get-gradient @@ -0,0 +1,13 @@ +#!/bin/sh +# Gets and sets a color gradient for cava + +start="$1" +end="$2" +colors=$(~/.local/bin/theme/gradient.py $start $end 7) + +num=1 +path="$HOME/.config/cava/config" +for color in $colors; do + sed -i "s/gradient_color_$num.*$/gradient_color_$num = '$color'/" $path + num=$((num+1)) +done diff --git a/.local/bin/theme/gradient.py b/.local/bin/theme/gradient.py new file mode 100755 index 0000000..f95bb07 --- /dev/null +++ b/.local/bin/theme/gradient.py @@ -0,0 +1,24 @@ +#!/usr/bin/python3 +# Gets a color gradient based on input color and number +# Depends on python3-colour + +import colour,sys + +if len(sys.argv) != 4: + print("arg error") + sys.exit(1) + +start = sys.argv[1] +end = sys.argv[2] +num = int(sys.argv[3]) + +grad = colour.color_scale(colour.hex2hsl(start),colour.hex2hsl(end),num) +grad_hex = [] +for hsl in grad: + grad_hex.append(colour.hsl2hex(hsl)) + +for color in grad_hex: + sys.stdout.write(color + "\n") + + + diff --git a/.local/bin/volctl b/.local/bin/volctl new file mode 100755 index 0000000..faa8de6 --- /dev/null +++ b/.local/bin/volctl @@ -0,0 +1,12 @@ +#!/bin/sh +# Script for volume control +# +# Accepts either a number and a +,- operator (volctl 5 +) or "toggle" (volctl toggle) + +# If the lone argument is "toggle", toggle mute/unmute +[ "$1" = "toggle" ] && amixer -q sset Master toggle && signal-vol && exit + +num=$1 +dir=$2 + +amixer -q sset Master $num%$dir unmute && signal-vol diff --git a/.local/bin/who-depends b/.local/bin/who-depends new file mode 100755 index 0000000..d1fb0c2 --- /dev/null +++ b/.local/bin/who-depends @@ -0,0 +1,13 @@ +#!/bin/sh + +# Script that takes a package as an argument and returns installed packages +# that are dependent on it + +[ $# -eq 1 ] || echo "usage: who-depends package" +apt list --installed | tail -n+2 | cut -d '/' -f 1 > /tmp/whodepends +pkg="$1" +deps_all=$(apt-cache rdepends $pkg | tail -n+3 | sed "s/^\s*//") +for dep in $deps_all +do + grep -lq "$dep" /tmp/whodepends && echo "$dep" +done diff --git a/.local/bin/windowshot b/.local/bin/windowshot new file mode 100755 index 0000000..a7b143b --- /dev/null +++ b/.local/bin/windowshot @@ -0,0 +1,9 @@ +#!/bin/sh +# Take screenshot of current window +# Saves screenshot with timestamp in directory named after the date + +time=$(date +%b-%d-%Y-%T.%N) +day=$(date +%b-%d-%Y) +[ -d "~/pictures/screenshots/$day" ] || mkdir -p ~/pictures/screenshots/$day +maim > ~/pictures/screenshots/$day/$time.png && notify-send "Screenshot Taken" + diff --git a/.local/bin/yt-fix b/.local/bin/yt-fix new file mode 100755 index 0000000..69e771a --- /dev/null +++ b/.local/bin/yt-fix @@ -0,0 +1,42 @@ +#!/bin/sh + +# Takes files downloaded through youtube-dl and cleans up their filenames + +stdin() { + while read -r infile + do + ext=".$(echo $infile | rev | cut -d '.' -f 1 | rev)" + ext_length=${#ext} + remove=$((12+$ext_length)) + filename="$(echo $infile | rev | cut -c $remove- | rev)" + mv "$infile" "$filename$ext" + done +} + +cli() { + for infile in "$@" + do + ext=".$(echo $infile | rev | cut -d '.' -f 1 | rev)" + ext_length=${#ext} + remove=$((12+$ext_length)) + filename="$(echo $infile | rev | cut -c $remove- | rev)" + mv "$infile" "$filename$ext" + done +} + +options=$(getopt -o 'hsx' -- "$@") +eval set -- "$options" +read_stdin=0 +noext=0 +while true +do + case "$1" in + '-h') echo "usage: yt-fix [options] [files]\n\th\tprint this help and exit\n\tx\tdo not include extension in output\n\ts\tread from stdin"; exit 0;; + '-s') read_stdin=1; shift; continue;; + '-x') noext=1; shift; continue;; + '--') shift; break;; + esac +done + +[ $read_stdin -eq 0 ] && cli "$@" || stdin + diff --git a/.local/share/unicode_list b/.local/share/unicode_list new file mode 100644 index 0000000..39d5aa1 --- /dev/null +++ b/.local/share/unicode_list @@ -0,0 +1,1326 @@ +U+00A9 COPYRIGHT SIGN © +U+00AE REGISTERED SIGN ® +U+203C DOUBLE EXCLAMATION MARK !! +U+2049 EXCLAMATION QUESTION MARK ⁉ +U+2122 TRADE MARK SIGN ™ +U+2139 INFORMATION SOURCE Media controls +U+2194 LEFT RIGHT ARROW ↔ +U+2195 UP DOWN ARROW Vertical +U+2196 NORTH WEST ARROW ↖ +U+2197 NORTH EAST ARROW ↗ +U+2198 SOUTH EAST ARROW ↘ +U+2199 SOUTH WEST ARROW ↙ +U+21A9 LEFTWARDS ARROW WITH HOOK ↩ +U+21AA RIGHTWARDS ARROW WITH HOOK ↪ +U+231A WATCH ⌚ +U+231B HOURGLASS ⌛ +U+2328 KEYBOARD ⌨ +U+23CF EJECT SYMBOL ⏏ +U+23E9 BLACK RIGHT-POINTING DOUBLE TRIANGLE Media Controls⏩ +U+23EA BLACK LEFT-POINTING DOUBLE TRIANGLE Media Controls ⏪ +U+23EB BLACK UP-POINTING DOUBLE TRIANGLE Media Controls ⏫ +U+23EC BLACK DOWN-POINTING DOUBLE TRIANGLE Media Controls ⏬ +U+23ED BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR Media Controls ⏭ +U+23EE BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR Media Controls ⏮ +U+23EF BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR Media Controls ⏯ +U+23F0 ALARM CLOCK ⏰ +U+23F1 STOPWATCH ⏱ +U+23F2 TIMER CLOCK ⏲ +U+23F3 HOURGLASS WITH FLOWING SAND ⏳ +U+23F8 DOUBLE VERTICAL BAR Media Controls ⏸ +U+23F9 BLACK SQUARE FOR STOP Media Controls ⏹ +U+23FA BLACK CIRCLE FOR RECORD Media Controls ⏺ +U+24C2 CIRCLED LATIN CAPITAL LETTER M Ⓜ +U+25AA BLACK SMALL SQUARE ▪ +U+25AB WHITE SMALL SQUARE ▫ +U+25B6 BLACK RIGHT-POINTING TRIANGLE Media Controls ▶ +U+25C0 BLACK LEFT-POINTING TRIANGLE Media Controls ◀ +U+25FB WHITE MEDIUM SQUARE ◻ +U+25FC BLACK MEDIUM SQUARE ◼ +U+25FD WHITE MEDIUM SMALL SQUARE ◽ +U+25FE BLACK MEDIUM SMALL SQUARE ◾ +U+2600 BLACK SUN WITH RAYS ☀ +U+2601 CLOUD ☁ +U+2602 UMBRELLA ☂ +U+2603 SNOWMAN ☃ +U+2604 COMET ☄ +U+260E BLACK TELEPHONE ☎ +U+2611 BALLOT BOX WITH CHECK ☑ +U+2614 UMBRELLA WITH RAIN DROPS ☔ +U+2615 HOT BEVERAGE ☕ +U+2618 SHAMROCK ☘ +U+261D WHITE UP POINTING INDEX ☝ +U+2620 SKULL AND CROSSBONES ☠ +U+2622 RADIOACTIVE SIGN ☢ +U+2623 BIOHAZARD SIGN ☣ +U+2626 ORTHODOX CROSS ☦ +U+262A STAR AND CRESCENT ☪ +U+262E PEACE SYMBOL ☮ +U+262F YIN YANG ☯ +U+2638 WHEEL OF DHARMA ☸ +U+2639 WHITE FROWNING FACE ☹ +U+263A WHITE SMILING FACE ☺ +U+2640 FEMALE SIGN ♀ +U+2642 MALE SIGN ♂ +U+2648 ARIES ♈ +U+2649 TAURUS ♉ +U+264A GEMINI ♊ +U+264B CANCER ♋ +U+264C LEO ♌ +U+264D VIRGO ♍ +U+264E LIBRA ♎ +U+264F SCORPIUS ♏ +U+2650 SAGITTARIUS ♐ +U+2651 CAPRICORN ♑ +U+2652 AQUARIUS ♒ +U+2653 PISCES ♓ +U+265F BLACK CHESS PAWN ♟ +U+2660 BLACK SPADE SUIT Suit (cards) ♠ +U+2663 BLACK CLUB SUIT Suit (cards) ♣ +U+2665 BLACK HEART SUIT Suit (cards) ♥ +U+2666 BLACK DIAMOND SUIT Suit (cards) ♦ +U+2668 HOT SPRINGS ♨ +U+267B BLACK UNIVERSAL RECYCLING SYMBOL ♻ +U+267E PERMANENT PAPER SIGN ♾ +U+267F WHEELCHAIR SYMBOL ♿ +U+2692 HAMMER AND PICK ⚒ +U+2693 ANCHOR ⚓ +U+2694 CROSSED SWORDS ⚔ +U+2695 STAFF OF AESCULAPIUS ⚕ +U+2696 SCALES ⚖ +U+2697 ALEMBIC ⚗ +U+2699 GEAR ⚙ +U+269B ATOM SYMBOL ⚛ +U+269C FLEUR-DE-LIS ⚜ +U+26A0 WARNING SIGN ⚠ +U+26A1 HIGH VOLTAGE SIGN ⚡ +U+26A7 MALE WITH STROKE AND MALE AND FEMALE SIGN ⚧ +U+26AA MEDIUM WHITE CIRCLE ⚪ +U+26AB MEDIUM BLACK CIRCLE Media controls ⚫ +U+26B0 COFFIN ⚰ +U+26B1 FUNERAL URN ⚱ +U+26BD SOCCER BALL ⚽ +U+26BE BASEBALL ⚾ +U+26C4 SNOWMAN WITHOUT SNOW ⛄ +U+26C5 SUN BEHIND CLOUD ⛅ +U+26C8 THUNDER CLOUD AND RAIN ⛈ +U+26CE OPHIUCHUS ⛎ +U+26CF PICK ⛏ +U+26D1 HELMET WITH WHITE CROSS ⛑ +U+26D3 CHAINS ⛓ +U+26D4 NO ENTRY ⛔ +U+26E9 SHINTO SHRINE ⛩ +U+26EA CHURCH ⛪ +U+26F0 MOUNTAIN ⛰ +U+26F1 UMBRELLA ON GROUND ⛱ +U+26F2 FOUNTAIN ⛲ +U+26F3 FLAG IN HOLE ⛳ +U+26F4 FERRY ⛴ +U+26F5 SAILBOAT ⛵ +U+26F7 SKIER ⛷ +U+26F8 ICE SKATE ⛸ +U+26F9 PERSON WITH BALL ⛹ +U+26FA TENT ⛺ +U+26FD FUEL PUMP ⛽ +U+2702 BLACK SCISSORS ✂ +U+2705 WHITE HEAVY CHECK MARK ✅ +U+2708 AIRPLANE ✈ +U+2709 ENVELOPE ✉ +U+270A RAISED FIST ✊ +U+270B RAISED HAND ✋ +U+270C VICTORY HAND ✌ +U+270D WRITING HAND ✍ +U+270F PENCIL ✏ +U+2712 BLACK NIB ✒ +U+2714 HEAVY CHECK MARK ✔ +U+2716 HEAVY MULTIPLICATION X X mark +U+271D LATIN CROSS ✝ +U+2721 STAR OF DAVID ✡ +U+2728 SPARKLES ✨ +U+2733 EIGHT SPOKED ASTERISK ✳ +U+2734 EIGHT POINTED BLACK STAR ✴ +U+2744 SNOWFLAKE ❄ +U+2747 SPARKLE ❇ +U+274C CROSS MARK ❌ +U+274E NEGATIVE SQUARED CROSS MARK ❎ +U+2753 BLACK QUESTION MARK ORNAMENT ❓ +U+2754 WHITE QUESTION MARK ORNAMENT ❔ +U+2755 WHITE EXCLAMATION MARK ORNAMENT ❕ +U+2757 HEAVY EXCLAMATION MARK SYMBOL ❗ +U+2763 HEAVY HEART EXCLAMATION MARK ORNAMENT ❣ +U+2764 HEAVY BLACK HEART ❤ +U+2795 HEAVY PLUS SIGN ➕ +U+2796 HEAVY MINUS SIGN ➖ +U+2797 HEAVY DIVISION SIGN ➗ +U+27A1 BLACK RIGHTWARDS ARROW ➡ +U+27B0 CURLY LOOP Loop the loop +U+27BF DOUBLE CURLY LOOP Loop the loop +U+2934 ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS ⤴ +U+2935 ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS ⤵ +U+2B05 LEFTWARDS BLACK ARROW ⬅ +U+2B06 UPWARDS BLACK ARROW ⬆ +U+2B07 DOWNWARDS BLACK ARROW ↓ +U+2B1B BLACK LARGE SQUARE ⬛ +U+2B1C WHITE LARGE SQUARE ⬜ +U+2B50 WHITE MEDIUM STAR ⭐ +U+2B55 HEAVY LARGE CIRCLE ⭕ +U+3030 WAVY DASH 〰 +U+303D PART ALTERNATION MARK 〽 +U+3297 CIRCLED IDEOGRAPH CONGRATULATION 祝い +U+3299 CIRCLED IDEOGRAPH SECRET 秘 +U+1F004 MAHJONG TILE RED DRAGON 🀄 +U+1F0CF PLAYING CARD BLACK JOKER 🃏 +U+1F170 NEGATIVE SQUARED LATIN CAPITAL LETTER A 🅰 +U+1F171 NEGATIVE SQUARED LATIN CAPITAL LETTER B 🅱 +U+1F17E NEGATIVE SQUARED LATIN CAPITAL LETTER O 🅾 +U+1F17F NEGATIVE SQUARED LATIN CAPITAL LETTER P 🅿 +U+1F18E NEGATIVE SQUARED AB 🆎 +U+1F191 SQUARED CL CL +U+1F192 SQUARED COOL 🆒 +U+1F193 SQUARED FREE 🆓 +U+1F194 SQUARED ID 🆔 +U+1F195 SQUARED NEW New 🆕 +U+1F196 SQUARED NG No Good 🆖 +U+1F197 SQUARED OK 🆗 +U+1F198 SQUARED SOS 🆘 +U+1F199 SQUARED UP WITH EXCLAMATION MARK Up 🆙 +U+1F19A SQUARED VS Versus 🆚 +U+1F201 SQUARED KATAKANA KOKO 🈁 +U+1F202 SQUARED KATAKANA SA 🈂 +U+1F21A SQUARED CJK UNIFIED IDEOGRAPH-7121 🈚 +U+1F232 SQUARED CJK UNIFIED IDEOGRAPH-7981 禁 +U+1F233 SQUARED CJK UNIFIED IDEOGRAPH-7A7A 空 +U+1F234 SQUARED CJK UNIFIED IDEOGRAPH-5408 合 +U+1F235 SQUARED CJK UNIFIED IDEOGRAPH-6E80 満 +U+1F236 SQUARED CJK UNIFIED IDEOGRAPH-6709 有 +U+1F237 SQUARED CJK UNIFIED IDEOGRAPH-6708 月 +U+1F238 SQUARED CJK UNIFIED IDEOGRAPH-7533 申 +U+1F239 SQUARED CJK UNIFIED IDEOGRAPH-5272 割 +U+1F23A SQUARED CJK UNIFIED IDEOGRAPH-55B6 営 +U+1F250 CIRCLED IDEOGRAPH ADVANTAGE 得 +U+1F251 CIRCLED IDEOGRAPH ACCEPT 可 +U+1F300 CYCLONE 🌀 +U+1F301 FOGGY 🌁 +U+1F302 CLOSED UMBRELLA 🌂 +U+1F303 NIGHT WITH STARS 🌃 +U+1F304 SUNRISE OVER MOUNTAINS 🌄 +U+1F305 SUNRISE 🌅 +U+1F306 CITYSCAPE AT DUSK 🌆 +U+1F307 SUNSET OVER BUILDINGS 🌇 +U+1F308 RAINBOW 🌈 +U+1F309 BRIDGE AT NIGHT 🌉 +U+1F30A WATER WAVE 🌊 +U+1F30B VOLCANO 🌋 +U+1F30C MILKY WAY 🌌 +U+1F30D EARTH GLOBE EUROPE-AFRICA 🌍 +U+1F30E EARTH GLOBE AMERICAS 🌎 +U+1F30F EARTH GLOBE ASIA-AUSTRALIA 🌏 +U+1F310 GLOBE WITH MERIDIANS 🌐 +U+1F311 NEW MOON SYMBOL 🌑 +U+1F312 WAXING CRESCENT MOON SYMBOL 🌒 +U+1F313 FIRST QUARTER MOON SYMBOL 🌓 +U+1F314 WAXING GIBBOUS MOON SYMBOL 🌔 +U+1F315 FULL MOON SYMBOL 🌕 +U+1F316 WANING GIBBOUS MOON SYMBOL 🌖 +U+1F317 LAST QUARTER MOON SYMBOL 🌗 +U+1F318 WANING CRESCENT MOON SYMBOL 🌘 +U+1F319 CRESCENT MOON 🌙 +U+1F31A NEW MOON WITH FACE 🌚 +U+1F31B FIRST QUARTER MOON WITH FACE 🌛 +U+1F31C LAST QUARTER MOON WITH FACE 🌜 +U+1F31D FULL MOON WITH FACE 🌝 +U+1F31E SUN WITH FACE 🌞 +U+1F31F GLOWING STAR 🌟 +U+1F320 SHOOTING STAR 🌠 +U+1F321 THERMOMETER 🌡 +U+1F324 WHITE SUN WITH SMALL CLOUD 🌤 +U+1F325 WHITE SUN BEHIND CLOUD 🌥 +U+1F326 WHITE SUN BEHIND CLOUD WITH RAIN 🌦 +U+1F327 CLOUD WITH RAIN 🌧 +U+1F328 CLOUD WITH SNOW 🌨 +U+1F329 CLOUD WITH LIGHTNING 🌩 +U+1F32A CLOUD WITH TORNADO 🌪 +U+1F32B FOG 🌫 +U+1F32C WIND BLOWING FACE 🌬 +U+1F32D HOT DOG 🌭 +U+1F32E TACO 🌮 +U+1F32F BURRITO 🌯 +U+1F330 CHESTNUT 🌰 +U+1F331 SEEDLING 🌱 +U+1F332 EVERGREEN TREE 🌲 +U+1F333 DECIDUOUS TREE 🌳 +U+1F334 PALM TREE 🌴 +U+1F335 CACTUS 🌵 +U+1F336 HOT PEPPER 🌶 +U+1F337 TULIP 🌷 +U+1F338 CHERRY BLOSSOM 🌸 +U+1F339 ROSE 🌹 +U+1F33A HIBISCUS 🌺 +U+1F33B SUNFLOWER 🌻 +U+1F33C BLOSSOM 🌼 +U+1F33D EAR OF MAIZE 🌽 +U+1F33E EAR OF RICE 🌾 +U+1F33F HERB 🌿 +U+1F340 FOUR LEAF CLOVER 🍀 +U+1F341 MAPLE LEAF 🍁 +U+1F342 FALLEN LEAF 🍂 +U+1F343 LEAF FLUTTERING IN WIND 🍃 +U+1F344 MUSHROOM 🍄 +U+1F345 TOMATO 🍅 +U+1F346 AUBERGINE 🍆 +U+1F347 GRAPES 🍇 +U+1F348 MELON 🍈 +U+1F349 WATERMELON 🍉 +U+1F34A TANGERINE 🍊 +U+1F34B LEMON 🍋 +U+1F34C BANANA 🍌 +U+1F34D PINEAPPLE 🍍 +U+1F34E RED APPLE 🍎 +U+1F34F GREEN APPLE 🍏 +U+1F350 PEAR 🍐 +U+1F351 PEACH 🍑 +U+1F352 CHERRIES 🍒 +U+1F353 STRAWBERRY 🍓 +U+1F354 HAMBURGER 🍔 +U+1F355 SLICE OF PIZZA 🍕 +U+1F356 MEAT ON BONE 🍖 +U+1F357 POULTRY LEG 🍗 +U+1F358 RICE CRACKER 🍘 +U+1F359 RICE BALL 🍙 +U+1F35A COOKED RICE 🍚 +U+1F35B CURRY AND RICE 🍛 +U+1F35C STEAMING BOWL 🍜 +U+1F35D SPAGHETTI 🍝 +U+1F35E BREAD 🍞 +U+1F35F FRENCH FRIES 🍟 +U+1F360 ROASTED SWEET POTATO 🍠 +U+1F361 DANGO 🍡 +U+1F362 ODEN 🍢 +U+1F363 SUSHI 🍣 +U+1F364 FRIED SHRIMP 🍤 +U+1F365 FISH CAKE WITH SWIRL DESIGN 🍥 +U+1F366 SOFT ICE CREAM 🍦 +U+1F367 SHAVED ICE 🍧 +U+1F368 ICE CREAM 🍨 +U+1F369 DOUGHNUT 🍩 +U+1F36A COOKIE 🍪 +U+1F36B CHOCOLATE BAR 🍫 +U+1F36C CANDY 🍬 +U+1F36D LOLLIPOP 🍭 +U+1F36E CUSTARD 🍮 +U+1F36F HONEY POT 🍯 +U+1F370 SHORTCAKE 🍰 +U+1F371 BENTO BOX 🍱 +U+1F372 POT OF FOOD 🍲 +U+1F373 COOKING 🍳 +U+1F374 FORK AND KNIFE 🍴 +U+1F375 TEACUP WITHOUT HANDLE 🍵 +U+1F376 SAKE BOTTLE AND CUP 🍶 +U+1F377 WINE GLASS 🍷 +U+1F378 COCKTAIL GLASS 🍸 +U+1F379 TROPICAL DRINK 🍹 +U+1F37A BEER MUG 🍺 +U+1F37B CLINKING BEER MUGS 🍻 +U+1F37C BABY BOTTLE 🍼 +U+1F37D FORK AND KNIFE WITH PLATE 🍽 +U+1F37E BOTTLE WITH POPPING CORK 🍾 +U+1F37F POPCORN 🍿 +U+1F380 RIBBON 🎀 +U+1F381 WRAPPED PRESENT 🎁 +U+1F382 BIRTHDAY CAKE 🎂 +U+1F383 JACK-O-LANTERN 🎃 +U+1F384 CHRISTMAS TREE 🎄 +U+1F385 FATHER CHRISTMAS 🎅 +U+1F386 FIREWORKS 🎆 +U+1F387 FIREWORK SPARKLER 🎇 +U+1F388 BALLOON 🎈 +U+1F389 PARTY POPPER 🎉 +U+1F38A CONFETTI BALL 🎊 +U+1F38B TANABATA TREE 🎋 +U+1F38C CROSSED FLAGS 🎌 +U+1F38D PINE DECORATION 🎍 +U+1F38E JAPANESE DOLLS 🎎 +U+1F38F CARP STREAMER 🎏 +U+1F390 WIND CHIME 🎐 +U+1F391 MOON VIEWING CEREMONY 🎑 +U+1F392 SCHOOL SATCHEL 🎒 +U+1F393 GRADUATION CAP 🎓 +U+1F396 MILITARY MEDAL 🎖 +U+1F397 REMINDER RIBBON 🎗 +U+1F399 STUDIO MICROPHONE 🎙 +U+1F39A LEVEL SLIDER 🎚 +U+1F39B CONTROL KNOBS 🎛 +U+1F39E FILM FRAMES 🎞 +U+1F39F ADMISSION TICKETS 🎟 +U+1F3A0 CAROUSEL HORSE 🎠 +U+1F3A1 FERRIS WHEEL 🎡 +U+1F3A2 ROLLER COASTER 🎢 +U+1F3A3 FISHING POLE AND FISH 🎣 +U+1F3A4 MICROPHONE 🎤 +U+1F3A5 MOVIE CAMERA 🎥 +U+1F3A6 CINEMA 🎦 +U+1F3A7 HEADPHONE 🎧 +U+1F3A8 ARTIST PALETTE 🎨 +U+1F3A9 TOP HAT 🎩 +U+1F3AA CIRCUS TENT 🎪 +U+1F3AB TICKET 🎫 +U+1F3AC CLAPPER BOARD 🎬 +U+1F3AD PERFORMING ARTS 🎭 +U+1F3AE VIDEO GAME 🎮 +U+1F3AF DIRECT HIT 🎯 +U+1F3B0 SLOT MACHINE 🎰 +U+1F3B1 BILLIARDS 🎱 +U+1F3B2 GAME DIE 🎲 +U+1F3B3 BOWLING 🎳 +U+1F3B4 FLOWER PLAYING CARDS 🎴 +U+1F3B5 MUSICAL NOTE 🎵 +U+1F3B6 MULTIPLE MUSICAL NOTES 🎶 +U+1F3B7 SAXOPHONE 🎷 +U+1F3B8 GUITAR 🎸 +U+1F3B9 MUSICAL KEYBOARD 🎹 +U+1F3BA TRUMPET 🎺 +U+1F3BB VIOLIN 🎻 +U+1F3BC MUSICAL SCORE 🎼 +U+1F3BD RUNNING SHIRT WITH SASH 🎽 +U+1F3BE TENNIS RACQUET AND BALL 🎾 +U+1F3BF SKI AND SKI BOOT 🎿 +U+1F3C0 BASKETBALL AND HOOP 🏀 +U+1F3C1 CHEQUERED FLAG 🏁 +U+1F3C2 SNOWBOARDER 🏂 +U+1F3C3 RUNNER 🏃 +U+1F3C4 SURFER 🏄 +U+1F3C5 SPORTS MEDAL 🏅 +U+1F3C6 TROPHY 🏆 +U+1F3C7 HORSE RACING 🏇 +U+1F3C8 AMERICAN FOOTBALL 🏈 +U+1F3C9 RUGBY FOOTBALL 🏉 +U+1F3CA SWIMMER 🏊 +U+1F3CB WEIGHT LIFTER 🏋 +U+1F3CC GOLFER 🏌 +U+1F3CD RACING MOTORCYCLE 🏍 +U+1F3CE RACING CAR 🏎 +U+1F3CF CRICKET BAT AND BALL 🏏 +U+1F3D0 VOLLEYBALL 🏐 +U+1F3D1 FIELD HOCKEY STICK AND BALL 🏑 +U+1F3D2 ICE HOCKEY STICK AND PUCK 🏒 +U+1F3D3 TABLE TENNIS PADDLE AND BALL 🏓 +U+1F3D4 SNOW CAPPED MOUNTAIN 🏔 +U+1F3D5 CAMPING 🏕 +U+1F3D6 BEACH WITH UMBRELLA 🏖 +U+1F3D7 BUILDING CONSTRUCTION 🏗 +U+1F3D8 HOUSE BUILDINGS 🏘 +U+1F3D9 CITYSCAPE 🏙 +U+1F3DA DERELICT HOUSE BUILDING 🏚 +U+1F3DB CLASSICAL BUILDING 🏛 +U+1F3DC DESERT 🏜 +U+1F3DD DESERT ISLAND 🏝 +U+1F3DE NATIONAL PARK 🏞 +U+1F3DF STADIUM 🏟 +U+1F3E0 HOUSE BUILDING 🏠 +U+1F3E1 HOUSE WITH GARDEN 🏡 +U+1F3E2 OFFICE BUILDING 🏢 +U+1F3E3 JAPANESE POST OFFICE 〒 +U+1F3E4 EUROPEAN POST OFFICE 🏤 +U+1F3E5 HOSPITAL 🏥 +U+1F3E6 BANK 🏦 +U+1F3E7 AUTOMATED TELLER MACHINE 🏧 +U+1F3E8 HOTEL 🏨 +U+1F3E9 LOVE HOTEL 🏩 +U+1F3EA CONVENIENCE STORE 🏪 +U+1F3EB SCHOOL 🏫 +U+1F3EC DEPARTMENT STORE 🏬 +U+1F3ED FACTORY 🏭 +U+1F3EE IZAKAYA LANTERN 🏮 +U+1F3EF JAPANESE CASTLE 🏯 +U+1F3F0 EUROPEAN CASTLE 🏰 +U+1F3F3 WAVING WHITE FLAG 🏳 +U+1F3F4 WAVING BLACK FLAG 🏴 +U+1F3F5 ROSETTE 🏵 +U+1F3F7 LABEL 🏷 +U+1F3F8 BADMINTON RACQUET AND SHUTTLECOCK 🏸 +U+1F3F9 BOW AND ARROW 🏹 +U+1F3FA AMPHORA 🏺 +U+1F3FB EMOJI MODIFIER FITZPATRICK TYPE-1-2 🏻 +U+1F3FC EMOJI MODIFIER FITZPATRICK TYPE-3 🏼 +U+1F3FD EMOJI MODIFIER FITZPATRICK TYPE-4 🏽 +U+1F3FE EMOJI MODIFIER FITZPATRICK TYPE-5 🏾 +U+1F3FF EMOJI MODIFIER FITZPATRICK TYPE-6 🏿 +U+1F400 RAT 🐀 +U+1F401 MOUSE 🐁 +U+1F402 OX 🐂 +U+1F403 WATER BUFFALO 🐃 +U+1F404 COW 🐄 +U+1F405 TIGER 🐅 +U+1F406 LEOPARD 🐆 +U+1F407 RABBIT 🐇 +U+1F408 CAT 🐈 +U+1F409 DRAGON 🐉 +U+1F40A CROCODILE 🐊 +U+1F40B WHALE 🐋 +U+1F40C SNAIL 🐌 +U+1F40D SNAKE 🐍 +U+1F40E HORSE 🐎 +U+1F40F RAM 🐏 +U+1F410 GOAT 🐐 +U+1F411 SHEEP 🐑 +U+1F412 MONKEY 🐒 +U+1F413 ROOSTER 🐓 +U+1F414 CHICKEN 🐔 +U+1F415 DOG 🐕 +U+1F416 PIG 🐖 +U+1F417 BOAR 🐗 +U+1F418 ELEPHANT 🐘 +U+1F419 OCTOPUS 🐙 +U+1F41A SPIRAL SHELL 🐚 +U+1F41B BUG Bug +U+1F41C ANT 🐜 +U+1F41D HONEYBEE 🐝 +U+1F41E LADY BEETLE 🐞 +U+1F41F FISH 🐟 +U+1F420 TROPICAL FISH 🐠 +U+1F421 BLOWFISH 🐡 +U+1F422 TURTLE 🐢 +U+1F423 HATCHING CHICK 🐣 +U+1F424 BABY CHICK 🐤 +U+1F425 FRONT-FACING BABY CHICK 🐥 +U+1F426 BIRD 🐦 +U+1F427 PENGUIN 🐧 +U+1F428 KOALA 🐨 +U+1F429 POODLE 🐩 +U+1F42A DROMEDARY CAMEL 🐪 +U+1F42B BACTRIAN CAMEL 🐫 +U+1F42C DOLPHIN 🐬 +U+1F42D MOUSE FACE 🐭 +U+1F42E COW FACE 🐮 +U+1F42F TIGER FACE 🐯 +U+1F430 RABBIT FACE 🐰 +U+1F431 CAT FACE 🐱 +U+1F432 DRAGON FACE 🐲 +U+1F433 SPOUTING WHALE 🐳 +U+1F434 HORSE FACE 🐴 +U+1F435 MONKEY FACE 🐵 +U+1F436 DOG FACE 🐶 +U+1F437 PIG FACE 🐷 +U+1F438 FROG FACE 🐸 +U+1F439 HAMSTER FACE 🐹 +U+1F43A WOLF FACE 🐺 +U+1F43B BEAR FACE 🐻 +U+1F43C PANDA FACE 🐼 +U+1F43D PIG NOSE 🐽 +U+1F43E PAW PRINTS 🐾 +U+1F43F CHIPMUNK 🐿 +U+1F440 EYES 👀 +U+1F441 EYE 👁 +U+1F442 EAR 👂 +U+1F443 NOSE 👃 +U+1F444 MOUTH 👄 +U+1F445 TONGUE 👅 +U+1F446 WHITE UP POINTING BACKHAND INDEX 👆 +U+1F447 WHITE DOWN POINTING BACKHAND INDEX 👇 +U+1F448 WHITE LEFT POINTING BACKHAND INDEX 👈 +U+1F449 WHITE RIGHT POINTING BACKHAND INDEX 👉 +U+1F44A FISTED HAND SIGN Fist (hand) 👊 +U+1F44B WAVING HAND SIGN 👋 +U+1F44C OK HAND SIGN 👌 +U+1F44D THUMBS UP SIGN 👍 +U+1F44E THUMBS DOWN SIGN 👎 +U+1F44F CLAPPING HANDS SIGN 👏 +U+1F450 OPEN HANDS SIGN 👐 +U+1F451 CROWN 👑 +U+1F452 WOMANS HAT 👒 +U+1F453 EYEGLASSES 👓 +U+1F454 NECKTIE 👔 +U+1F455 T-SHIRT 👕 +U+1F456 JEANS 👖 +U+1F457 DRESS 👗 +U+1F458 KIMONO 👘 +U+1F459 BIKINI 👙 +U+1F45A WOMANS CLOTHES 👚 +U+1F45B PURSE 👛 +U+1F45C HANDBAG 👜 +U+1F45D POUCH Pouch +U+1F45E MANS SHOE 👞 +U+1F45F ATHLETIC SHOE 👟 +U+1F460 HIGH-HEELED SHOE 👠 +U+1F461 WOMANS SANDAL 👡 +U+1F462 WOMANS BOOTS 👢 +U+1F463 FOOTPRINTS 👣 +U+1F464 BUST IN SILHOUETTE 👤 +U+1F465 BUSTS IN SILHOUETTE 👥 +U+1F466 BOY 👦 +U+1F467 GIRL 👧 +U+1F468 MAN 👨 +U+1F469 WOMAN 👩 +U+1F46A FAMILY 👪 +U+1F46B MAN AND WOMAN HOLDING HANDS 👫 +U+1F46C TWO MEN HOLDING HANDS 👬 +U+1F46D TWO WOMEN HOLDING HANDS 👭 +U+1F46E POLICE OFFICER 👮 +U+1F46F WOMAN WITH BUNNY EARS 👯 +U+1F470 BRIDE WITH VEIL 👰 +U+1F471 PERSON WITH BLOND HAIR 👱 +U+1F472 MAN WITH GUA PI MAO 👲 +U+1F473 MAN WITH TURBAN 👳 +U+1F474 OLDER MAN 👴 +U+1F475 OLDER WOMAN 👵 +U+1F476 BABY 👶 +U+1F477 CONSTRUCTION WORKER 👷 +U+1F478 PRINCESS 👸 +U+1F479 JAPANESE OGRE 👹 +U+1F47A JAPANESE GOBLIN 👺 +U+1F47B GHOST 👻 +U+1F47C BABY ANGEL 👼 +U+1F47D EXTRATERRESTRIAL ALIEN 👽 +U+1F47F IMP 👿 +U+1F480 SKULL 💀 +U+1F482 GUARDSMAN 💂 +U+1F483 DANCER 💃 +U+1F484 LIPSTICK 💄 +U+1F485 NAIL POLISH 💅 +U+1F486 FACE MASSAGE 💆 +U+1F487 HAIRCUT 💇 +U+1F488 BARBER POLE 💈 +U+1F489 SYRINGE 💉 +U+1F48A PILL 💊 +U+1F48B KISS MARK 💋 +U+1F48C LOVE LETTER 💌 +U+1F48D RING 💍 +U+1F48E GEM STONE 💎 +U+1F48F KISS 💏 +U+1F490 BOUQUET 💐 +U+1F491 COUPLE WITH HEART 💑 +U+1F492 WEDDING 💒 +U+1F493 BEATING HEART 💓 +U+1F494 BROKEN HEART 💔 +U+1F495 TWO HEARTS 💕 +U+1F496 SPARKLING HEART 💖 +U+1F497 GROWING HEART 💗 +U+1F498 HEART WITH ARROW 💘 +U+1F499 BLUE HEART 💙 +U+1F49A GREEN HEART 💚 +U+1F49B YELLOW HEART 💛 +U+1F49C PURPLE HEART 💜 +U+1F49D HEART WITH RIBBON 💝 +U+1F49E REVOLVING HEARTS 💞 +U+1F49F HEART DECORATION 💟 +U+1F4A0 DIAMOND SHAPE WITH A DOT INSIDE 💠 +U+1F4A1 ELECTRIC LIGHT BULB 💡 +U+1F4A2 ANGER SYMBOL 💢 +U+1F4A3 BOMB 💣 +U+1F4A4 SLEEPING SYMBOL 💤 +U+1F4A5 COLLISION SYMBOL 💥 +U+1F4A6 SPLASHING SWEAT SYMBOL 💦 +U+1F4A7 DROPLET 💧 +U+1F4A8 DASH SYMBOL 💨 +U+1F4A9 PILE OF POO 💩 +U+1F4AA FLEXED BICEPS 💪 +U+1F4AB DIZZY SYMBOL 💫 +U+1F4AC SPEECH BALLOON 💬 +U+1F4AD THOUGHT BALLOON 💭 +U+1F4AE WHITE FLOWER 💮 +U+1F4AF HUNDRED POINTS SYMBOL 💯 +U+1F4B0 MONEY BAG 💰 +U+1F4B1 CURRENCY EXCHANGE 💱 +U+1F4B2 HEAVY DOLLAR SIGN 💲 +U+1F4B3 CREDIT CARD 💳 +U+1F4B4 BANKNOTE WITH YEN SIGN 💴 +U+1F4B5 BANKNOTE WITH DOLLAR SIGN 💵 +U+1F4B6 BANKNOTE WITH EURO SIGN 💶 +U+1F4B7 BANKNOTE WITH POUND SIGN 💷 +U+1F4B8 MONEY WITH WINGS 💸 +U+1F4B9 CHART WITH UPWARDS TREND AND YEN SIGN 💹 +U+1F4BA SEAT 💺 +U+1F4BB PERSONAL COMPUTER 💻 +U+1F4BC BRIEFCASE 💼 +U+1F4BD MINIDISC 💽 +U+1F4BE FLOPPY DISK 💾 +U+1F4BF OPTICAL DISC 💿 +U+1F4C0 DVD 📀 +U+1F4C1 FILE FOLDER 📁 +U+1F4C2 OPEN FILE FOLDER 📂 +U+1F4C3 PAGE WITH CURL 📃 +U+1F4C4 PAGE FACING UP 📄 +U+1F4C5 CALENDAR 📅 +U+1F4C6 TEAR-OFF CALENDAR 📆 +U+1F4C7 CARD INDEX 📇 +U+1F4C8 CHART WITH UPWARDS TREND 📈 +U+1F4C9 CHART WITH DOWNWARDS TREND 📉 +U+1F4CA BAR CHART 📊 +U+1F4CB CLIPBOARD 📋 +U+1F4CC PUSHPIN 📌 +U+1F4CD ROUND PUSHPIN 📍 +U+1F4CE PAPERCLIP 📎 +U+1F4CF STRAIGHT RULER 📏 +U+1F4D0 TRIANGULAR RULER 📐 +U+1F4D1 BOOKMARK TABS 📑 +U+1F4D2 LEDGER 📒 +U+1F4D3 NOTEBOOK 📓 +U+1F4D4 NOTEBOOK WITH DECORATIVE COVER 📔 +U+1F4D5 CLOSED BOOK 📕 +U+1F4D6 OPEN BOOK 📖 +U+1F4D7 GREEN BOOK 📗 +U+1F4D8 BLUE BOOK 📘 +U+1F4D9 ORANGE BOOK 📙 +U+1F4DA BOOKS 📚 +U+1F4DB NAME BADGE 📛 +U+1F4DC SCROLL 📜 +U+1F4DD MEMO 📝 +U+1F4DE TELEPHONE RECEIVER 📞 +U+1F4DF PAGER 📟 +U+1F4E0 FAX MACHINE 📠 +U+1F4E1 SATELLITE ANTENNA 📡 +U+1F4E2 PUBLIC ADDRESS LOUDSPEAKER 📢 +U+1F4E3 CHEERING MEGAPHONE 📣 +U+1F4E4 OUTBOX TRAY 📤 +U+1F4E5 INBOX TRAY 📥 +U+1F4E6 PACKAGE 📦 +U+1F4E7 E-MAIL SYMBOL 📧 +U+1F4E8 INCOMING ENVELOPE 📨 +U+1F4E9 ENVELOPE WITH DOWNWARDS ARROW ABOVE 📩 +U+1F4EA CLOSED MAILBOX WITH LOWERED FLAG 📪 +U+1F4EB CLOSED MAILBOX WITH RAISED FLAG 📫 +U+1F4EC OPEN MAILBOX WITH RAISED FLAG 📬 +U+1F4ED OPEN MAILBOX WITH LOWERED FLAG 📭 +U+1F4EE POSTBOX 📮 +U+1F4EF POSTAL HORN 📯 +U+1F4F0 NEWSPAPER 📰 +U+1F4F1 MOBILE PHONE 📱 +U+1F4F2 MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT 📲 +U+1F4F3 VIBRATION MODE 📳 +U+1F4F4 MOBILE PHONE OFF 📴 +U+1F4F5 NO MOBILE PHONES 📵 +U+1F4F6 ANTENNA WITH BARS 📶 +U+1F4F7 CAMERA 📷 +U+1F4F8 CAMERA WITH FLASH 📸 +U+1F4F9 VIDEO CAMERA 📹 +U+1F4FA TELEVISION 📺 +U+1F4FB RADIO 📻 +U+1F4FC VIDEOCASSETTE 📼 +U+1F4FD FILM PROJECTOR 📽 +U+1F4FF PRAYER BEADS 📿 +U+1F500 TWISTED RIGHTWARDS ARROWS 🔀 +U+1F501 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS 🔁 +U+1F502 CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY 🔂 +U+1F503 CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS 🔃 +U+1F504 ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS 🔄 +U+1F505 LOW BRIGHTNESS SYMBOL 🔅 +U+1F506 HIGH BRIGHTNESS SYMBOL 🔆 +U+1F507 SPEAKER WITH CANCELLATION STROKE Mute +U+1F508 SPEAKER 🔈 +U+1F509 SPEAKER WITH ONE SOUND WAVE 🔉 +U+1F50A SPEAKER WITH THREE SOUND WAVES 🔊 +U+1F50B BATTERY 🔋 +U+1F50C ELECTRIC PLUG 🔌 +U+1F50D LEFT-POINTING MAGNIFYING GLASS 🔍 +U+1F50E RIGHT-POINTING MAGNIFYING GLASS 🔎 +U+1F50F LOCK WITH INK PEN 🔏 +U+1F510 CLOSED LOCK WITH KEY 🔐 +U+1F511 KEY 🔑 +U+1F512 LOCK 🔒 +U+1F513 OPEN LOCK 🔓 +U+1F514 BELL Bell character +U+1F515 BELL WITH CANCELLATION STROKE 🔕 +U+1F516 BOOKMARK 🔖 +U+1F517 LINK SYMBOL 🔗 +U+1F518 RADIO BUTTON 🔘 +U+1F519 BACK WITH LEFTWARDS ARROW ABOVE 🔙 +U+1F51A END WITH LEFTWARDS ARROW ABOVE 🔚 +U+1F51B ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE 🔛 +U+1F51C SOON WITH RIGHTWARDS ARROW ABOVE 🔜 +U+1F51D TOP WITH UPWARDS ARROW ABOVE 🔝 +U+1F51E NO ONE UNDER EIGHTEEN SYMBOL Age of majority 🔞 +U+1F51F KEYCAP TEN 🔟 +U+1F520 INPUT SYMBOL FOR LATIN CAPITAL LETTERS 🔠 +U+1F521 INPUT SYMBOL FOR LATIN SMALL LETTERS 🔡 +U+1F522 INPUT SYMBOL FOR NUMBERS 🔢 +U+1F523 INPUT SYMBOL FOR SYMBOLS 🔣 +U+1F524 INPUT SYMBOL FOR LATIN LETTERS 🔤 +U+1F525 FIRE 🔥 +U+1F526 ELECTRIC TORCH 🔦 +U+1F527 WRENCH 🔧 +U+1F528 HAMMER 🔨 +U+1F529 NUT AND BOLT 🔩 +U+1F52A HOCHO 🔪 +U+1F52B PISTOL 🔫 +U+1F52C MICROSCOPE 🔬 +U+1F52D TELESCOPE 🔭 +U+1F52E CRYSTAL BALL 🔮 +U+1F52F SIX POINTED STAR WITH MIDDLE DOT 🔯 +U+1F530 JAPANESE SYMBOL FOR BEGINNER 🔰 +U+1F531 TRIDENT EMBLEM 🔱 +U+1F532 BLACK SQUARE BUTTON 🔲 +U+1F533 WHITE SQUARE BUTTON 🔳 +U+1F534 LARGE RED CIRCLE 🔴 +U+1F535 LARGE BLUE CIRCLE 🔵 +U+1F536 LARGE ORANGE DIAMOND 🔶 +U+1F537 LARGE BLUE DIAMOND 🔷 +U+1F538 SMALL ORANGE DIAMOND 🔸 +U+1F539 SMALL BLUE DIAMOND 🔹 +U+1F53A UP-POINTING RED TRIANGLE 🔺 +U+1F53B DOWN-POINTING RED TRIANGLE 🔻 +U+1F53C UP-POINTING SMALL RED TRIANGLE 🔼 +U+1F53D DOWN-POINTING SMALL RED TRIANGLE 🔽 +U+1F549 OM SYMBOL 🕉 +U+1F54A DOVE OF PEACE 🕊 +U+1F54B KAABA 🕋 +U+1F54C MOSQUE 🕌 +U+1F54D SYNAGOGUE 🕍 +U+1F54E MENORAH WITH NINE BRANCHES 🕎 +U+1F550 CLOCK FACE ONE OCLOCK 🕐 +U+1F551 CLOCK FACE TWO OCLOCK 🕑 +U+1F552 CLOCK FACE THREE OCLOCK 🕒 +U+1F553 CLOCK FACE FOUR OCLOCK 🕓 +U+1F554 CLOCK FACE FIVE OCLOCK 🕔 +U+1F555 CLOCK FACE SIX OCLOCK 🕕 +U+1F556 CLOCK FACE SEVEN OCLOCK 🕖 +U+1F557 CLOCK FACE EIGHT OCLOCK 🕗 +U+1F558 CLOCK FACE NINE OCLOCK 🕘 +U+1F559 CLOCK FACE TEN OCLOCK 🕙 +U+1F55A CLOCK FACE ELEVEN OCLOCK 🕚 +U+1F55B CLOCK FACE TWELVE OCLOCK 🕛 +U+1F55C CLOCK FACE ONE-THIRTY 🕜 +U+1F55D CLOCK FACE TWO-THIRTY 🕝 +U+1F55E CLOCK FACE THREE-THIRTY 🕞 +U+1F55F CLOCK FACE FOUR-THIRTY 🕟 +U+1F560 CLOCK FACE FIVE-THIRTY 🕠 +U+1F561 CLOCK FACE SIX-THIRTY 🕡 +U+1F562 CLOCK FACE SEVEN-THIRTY 🕢 +U+1F563 CLOCK FACE EIGHT-THIRTY 🕣 +U+1F564 CLOCK FACE NINE-THIRTY 🕤 +U+1F565 CLOCK FACE TEN-THIRTY 🕥 +U+1F566 CLOCK FACE ELEVEN-THIRTY 🕦 +U+1F567 CLOCK FACE TWELVE-THIRTY 🕧 +U+1F56F CANDLE 🕯 +U+1F570 MANTELPIECE CLOCK 🕰 +U+1F573 HOLE Hole 🕳 +U+1F574 MAN IN BUSINESS SUIT LEVITATING 🕴 +U+1F575 SLEUTH OR SPY 🕵 +U+1F576 DARK SUNGLASSES 🕶 +U+1F577 SPIDER 🕷 +U+1F578 SPIDER WEB 🕸 +U+1F579 JOYSTICK 🕹 +U+1F57A MAN DANCING 🕺 +U+1F587 LINKED PAPERCLIPS 🖇 +U+1F58A LOWER LEFT BALLPOINT PEN 🖊 +U+1F58B LOWER LEFT FOUNTAIN PEN 🖋 +U+1F58C LOWER LEFT PAINTBRUSH 🖌 +U+1F58D LOWER LEFT CRAYON 🖍 +U+1F590 RAISED HAND WITH FINGERS SPLAYED 🖐 +U+1F595 REVERSED HAND WITH MIDDLE FINGER EXTENDED 🖕 +U+1F596 RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS 🖖 +U+1F5A4 BLACK HEART 🖤 +U+1F5A5 DESKTOP COMPUTER 🖥 +U+1F5A8 PRINTER 🖨 +U+1F5B1 THREE BUTTON MOUSE 🖱 +U+1F5B2 TRACKBALL 🖲 +U+1F5BC FRAME WITH PICTURE 🖼 +U+1F5C2 CARD INDEX DIVIDERS 🗂 +U+1F5C3 CARD FILE BOX 🗃 +U+1F5C4 FILE CABINET 🗄 +U+1F5D1 WASTEBASKET 🗑 +U+1F5D2 SPIRAL NOTE PAD 🗒 +U+1F5D3 SPIRAL CALENDAR PAD 🗓 +U+1F5DC COMPRESSION 🗜 +U+1F5DD OLD KEY 🗝 +U+1F5DE ROLLED-UP NEWSPAPER 🗞 +U+1F5E1 DAGGER KNIFE 🗡 +U+1F5E3 SPEAKING HEAD IN SILHOUETTE 🗣 +U+1F5E8 LEFT SPEECH BUBBLE 🗨 +U+1F5EF RIGHT ANGER BUBBLE 🗯 +U+1F5F3 BALLOT BOX WITH BALLOT 🗳 +U+1F5FA WORLD MAP 🗺 +U+1F5FB MOUNT FUJI 🗻 +U+1F5FC TOKYO TOWER 🗼 +U+1F5FD STATUE OF LIBERTY 🗽 +U+1F5FE SILHOUETTE OF JAPAN 🗾 +U+1F5FF MOYAI 🗿 +U+1F600 GRINNING FACE 😀 +U+1F601 GRINNING FACE WITH SMILING EYES 😁 +U+1F602 FACE WITH TEARS OF JOY 😂 +U+1F603 SMILING FACE WITH OPEN MOUTH 😃 +U+1F604 SMILING FACE WITH OPEN MOUTH AND SMILING EYES 😄 +U+1F605 SMILING FACE WITH OPEN MOUTH AND COLD SWEAT 😅 +U+1F606 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES 😆 +U+1F607 SMILING FACE WITH HALO 😇 +U+1F608 SMILING FACE WITH HORNS 😈 +U+1F609 WINKING FACE 😉 +U+1F60A SMILING FACE WITH SMILING EYES 😊 +U+1F60B FACE SAVOURING DELICIOUS FOOD 😋 +U+1F60C RELIEVED FACE 😌 +U+1F60D SMILING FACE WITH HEART-SHAPED EYES 😍 +U+1F60E SMILING FACE WITH SUNGLASSES 😎 +U+1F60F SMIRKING FACE 😏 +U+1F610 NEUTRAL FACE 😐 +U+1F611 EXPRESSIONLESS FACE 😑 +U+1F612 UNAMUSED FACE 😒 +U+1F613 FACE WITH COLD SWEAT 😓 +U+1F614 PENSIVE FACE 😔 +U+1F615 CONFUSED FACE 😕 +U+1F616 CONFOUNDED FACE 😖 +U+1F617 KISSING FACE 😗 +U+1F618 FACE THROWING A KISS 😘 +U+1F619 KISSING FACE WITH SMILING EYES 😙 +U+1F61A KISSING FACE WITH CLOSED EYES 😚 +U+1F61B FACE WITH STUCK-OUT TONGUE 😛 +U+1F61C FACE WITH STUCK-OUT TONGUE AND WINKING EYE 😜 +U+1F61D FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES 😝 +U+1F61E DISAPPOINTED FACE 😞 +U+1F61F WORRIED FACE 😟 +U+1F620 ANGRY FACE 😠 +U+1F621 POUTING FACE 😡 +U+1F622 CRYING FACE 😢 +U+1F623 PERSEVERING FACE 😣 +U+1F624 FACE WITH LOOK OF TRIUMPH 😤 +U+1F625 DISAPPOINTED BUT RELIEVED FACE 😥 +U+1F626 FROWNING FACE WITH OPEN MOUTH 😦 +U+1F627 ANGUISHED FACE 😧 +U+1F628 FEARFUL FACE 😨 +U+1F629 WEARY FACE 😩 +U+1F62A SLEEPY FACE 😪 +U+1F62B TIRED FACE 😫 +U+1F62C GRIMACING FACE 😬 +U+1F62D LOUDLY CRYING FACE 😭 +U+1F62E FACE WITH OPEN MOUTH 😮 +U+1F62F HUSHED FACE 😯 +U+1F630 FACE WITH OPEN MOUTH AND COLD SWEAT 😰 +U+1F631 FACE SCREAMING IN FEAR 😱 +U+1F632 ASTONISHED FACE 😲 +U+1F633 FLUSHED FACE 😳 +U+1F634 SLEEPING FACE 😴 +U+1F635 DIZZY FACE 😵 +U+1F636 FACE WITHOUT MOUTH 😶 +U+1F637 FACE WITH MEDICAL MASK 😷 +U+1F638 GRINNING CAT FACE WITH SMILING EYES 😸 +U+1F639 CAT FACE WITH TEARS OF JOY 😹 +U+1F63A SMILING CAT FACE WITH OPEN MOUTH 😺 +U+1F63B SMILING CAT FACE WITH HEART-SHAPED EYES 😻 +U+1F63C CAT FACE WITH WRY SMILE 😼 +U+1F63D KISSING CAT FACE WITH CLOSED EYES 😽 +U+1F63E POUTING CAT FACE 😾 +U+1F63F CRYING CAT FACE 😿 +U+1F640 WEARY CAT FACE 🙀 +U+1F641 SLIGHTLY FROWNING FACE 🙁 +U+1F642 SLIGHTLY SMILING FACE 🙂 +U+1F643 UPSIDE-DOWN FACE 🙃 +U+1F644 FACE WITH ROLLING EYES 🙄 +U+1F645 FACE WITH NO GOOD GESTURE 🙅 +U+1F646 FACE WITH OK GESTURE 🙆 +U+1F647 PERSON BOWING DEEPLY 🙇 +U+1F648 SEE-NO-EVIL MONKEY 🙈 +U+1F649 HEAR-NO-EVIL MONKEY 🙉 +U+1F64A SPEAK-NO-EVIL MONKEY 🙊 +U+1F64B HAPPY PERSON RAISING ONE HAND 🙋 +U+1F64C PERSON RAISING BOTH HANDS IN CELEBRATION 🙌 +U+1F64D PERSON FROWNING 🙍 +U+1F64E PERSON WITH POUTING FACE 🙎 +U+1F64F PERSON WITH FOLDED HANDS 🙏 +U+1F680 ROCKET 🚀 +U+1F681 HELICOPTER 🚁 +U+1F682 STEAM LOCOMOTIVE 🚂 +U+1F683 RAILWAY CAR 🚃 +U+1F684 HIGH-SPEED TRAIN 🚄 +U+1F685 HIGH-SPEED TRAIN WITH BULLET NOSE 🚅 +U+1F686 TRAIN 🚆 +U+1F687 METRO 🚇 +U+1F688 LIGHT RAIL 🚈 +U+1F689 STATION 🚉 +U+1F68A TRAM 🚊 +U+1F68B TRAM CAR 🚋 +U+1F68C BUS 🚌 +U+1F68D ONCOMING BUS 🚍 +U+1F68E TROLLEYBUS 🚎 +U+1F68F BUS STOP 🚏 +U+1F690 MINIBUS 🚐 +U+1F691 AMBULANCE 🚑 +U+1F692 FIRE ENGINE 🚒 +U+1F693 POLICE CAR 🚓 +U+1F694 ONCOMING POLICE CAR 🚔 +U+1F695 TAXI 🚕 +U+1F696 ONCOMING TAXI 🚖 +U+1F697 AUTOMOBILE 🚗 +U+1F698 ONCOMING AUTOMOBILE 🚘 +U+1F699 RECREATIONAL VEHICLE 🚙 +U+1F69A DELIVERY TRUCK 🚚 +U+1F69B ARTICULATED LORRY 🚛 +U+1F69C TRACTOR 🚜 +U+1F69D MONORAIL 🚝 +U+1F69E MOUNTAIN RAILWAY 🚞 +U+1F69F SUSPENSION RAILWAY 🚟 +U+1F6A0 MOUNTAIN CABLEWAY 🚠 +U+1F6A1 AERIAL TRAMWAY 🚡 +U+1F6A2 SHIP 🚢 +U+1F6A3 ROWBOAT 🚣 +U+1F6A4 SPEEDBOAT 🚤 +U+1F6A5 HORIZONTAL TRAFFIC LIGHT 🚥 +U+1F6A6 VERTICAL TRAFFIC LIGHT 🚦 +U+1F6A7 CONSTRUCTION SIGN 🚧 +U+1F6A8 POLICE CARS REVOLVING LIGHT 🚨 +U+1F6A9 TRIANGULAR FLAG ON POST 🚩 +U+1F6AA DOOR 🚪 +U+1F6AB NO ENTRY SIGN 🚫 +U+1F6AC SMOKING SYMBOL 🚬 +U+1F6AD NO SMOKING SYMBOL 🚭 +U+1F6AE PUT LITTER IN ITS PLACE SYMBOL 🚮 +U+1F6AF DO NOT LITTER SYMBOL 🚯 +U+1F6B0 POTABLE WATER SYMBOL 🚰 +U+1F6B1 NON-POTABLE WATER SYMBOL 🚱 +U+1F6B2 BICYCLE 🚲 +U+1F6B3 NO BICYCLES 🚳 +U+1F6B4 BICYCLIST 🚴 +U+1F6B5 MOUNTAIN BICYCLIST 🚵 +U+1F6B6 PEDESTRIAN 🚶 +U+1F6B7 NO PEDESTRIANS 🚷 +U+1F6B8 CHILDREN CROSSING 🚸 +U+1F6B9 MENS SYMBOL 🚹 +U+1F6BA WOMENS SYMBOL 🚺 +U+1F6BB RESTROOM 🚻 +U+1F6BC BABY SYMBOL 🚼 +U+1F6BD TOILET 🚽 +U+1F6BE WATER CLOSET 🚾 +U+1F6BF SHOWER 🚿 +U+1F6C0 BATH 🛀 +U+1F6C1 BATHTUB 🛁 +U+1F6C2 PASSPORT CONTROL 🛂 +U+1F6C3 CUSTOMS 🛃 +U+1F6C4 BAGGAGE CLAIM 🛄 +U+1F6C5 LEFT LUGGAGE 🛅 +U+1F6CB COUCH AND LAMP 🛋 +U+1F6CC SLEEPING ACCOMMODATION 🛌 +U+1F6CD SHOPPING BAGS 🛍 +U+1F6CE BELLHOP BELL 🛎 +U+1F6CF BED 🛏 +U+1F6D0 PLACE OF WORSHIP 🛐 +U+1F6D1 OCTAGONAL SIGN 🛑 +U+1F6D2 SHOPPING TROLLEY 🛒 +U+1F6D5 HINDU TEMPLE 🛕 +U+1F6D6 HUT 🛖 +U+1F6D7 ELEVATOR 🛗 +U+1F6E0 HAMMER AND WRENCH 🛠 +U+1F6E1 SHIELD 🛡 +U+1F6E2 OIL DRUM 🛢 +U+1F6E3 MOTORWAY 🛣 +U+1F6E4 RAILWAY TRACK 🛤 +U+1F6E5 MOTOR BOAT 🛥 +U+1F6E9 SMALL AIRPLANE 🛩 +U+1F6EB AIRPLANE DEPARTURE 🛫 +U+1F6EC AIRPLANE ARRIVING 🛬 +U+1F6F0 SATELLITE 🛰 +U+1F6F3 PASSENGER SHIP 🛳 +U+1F6F4 SCOOTER 🛴 +U+1F6F5 MOTOR SCOOTER 🛵 +U+1F6F6 CANOE 🛶 +U+1F6F7 SLED 🛷 +U+1F6F8 FLYING SAUCER 🛸 +U+1F6F9 SKATEBOARD 🛹 +U+1F6FA AUTO RICKSHAW 🛺 +U+1F6FB PICKUP TRUCK 🛻 +U+1F6FC ROLLER SKATE 🛼 +U+1F7E0 LARGE ORANGE CIRCLE 🟠 +U+1F7E1 LARGE YELLOW CIRCLE 🟡 +U+1F7E2 LARGE GREEN CIRCLE 🟢 +U+1F7E3 LARGE PURPLE CIRCLE 🟣 +U+1F7E4 LARGE BROWN CIRCLE 🟤 +U+1F7E5 LARGE RED SQUARE 🟥 +U+1F7E6 LARGE BLUE SQUARE 🟦 +U+1F7E7 LARGE ORANGE SQUARE 🟧 +U+1F7E8 LARGE YELLOW SQUARE 🟨 +U+1F7E9 LARGE GREEN SQUARE 🟩 +U+1F7EA LARGE PURPLE SQUARE 🟪 +U+1F7EB LARGE BROWN SQUARE 🟫 +U+1F90C PINCHED FINGERS 🤌 +U+1F90D WHITE HEART 🤍 +U+1F90E BROWN HEART 🤎 +U+1F90F PINCHING HAND 🤏 +U+1F910 ZIPPER-MOUTH FACE 🤐 +U+1F911 MONEY-MOUTH FACE 🤑 +U+1F912 FACE WITH THERMOMETER 🤒 +U+1F913 NERD FACE 🤓 +U+1F914 THINKING FACE 🤔 +U+1F915 FACE WITH HEAD-BANDAGE 🤕 +U+1F916 ROBOT FACE 🤖 +U+1F917 HUGGING FACE 🤗 +U+1F918 SIGN OF THE HORNS 🤘 +U+1F919 CALL ME HAND 🤙 +U+1F91A RAISED BACK OF HAND 🤚 +U+1F91B LEFT-FACING FIST 🤛 +U+1F91C RIGHT-FACING FIST 🤜 +U+1F91D HANDSHAKE 🤝 +U+1F91E HAND WITH INDEX AND MIDDLE FINGERS CROSSED 🤞 +U+1F91F I LOVE YOU HAND SIGN 🤟 +U+1F920 FACE WITH COWBOY HAT 🤠 +U+1F921 CLOWN FACE 🤡 +U+1F922 NAUSEATED FACE 🤢 +U+1F923 ROLLING ON THE FLOOR LAUGHING 🤣 +U+1F924 DROOLING FACE 🤤 +U+1F925 LYING FACE 🤥 +U+1F926 FACE PALM 🤦 +U+1F927 SNEEZING FACE 🤧 +U+1F928 FACE WITH ONE EYEBROW RAISED 🤨 +U+1F929 GRINNING FACE WITH STAR EYES 🤩 +U+1F92A GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE 🤪 +U+1F92B FACE WITH FINGER COVERING CLOSED LIPS 🤫 +U+1F92C SERIOUS FACE WITH SYMBOLS COVERING MOUTH 🤬 +U+1F92D SMILING FACE WITH SMILING EYES AND HAND COVERING MOUTH 🤭 +U+1F92E FACE WITH OPEN MOUTH VOMITING 🤮 +U+1F92F SHOCKED FACE WITH EXPLODING HEAD 🤯 +U+1F930 PREGNANT WOMAN 🤰 +U+1F931 BREAST-FEEDING 🤱 +U+1F932 PALMS UP TOGETHER 🤲 +U+1F933 SELFIE 🤳 +U+1F934 PRINCE 🤴 +U+1F935 MAN IN TUXEDO 🤵 +U+1F936 MOTHER CHRISTMAS 🤶 +U+1F937 SHRUG 🤷 +U+1F938 PERSON DOING CARTWHEEL 🤸 +U+1F939 JUGGLING 🤹 +U+1F93A FENCER 🤺 +U+1F93C WRESTLERS 🤼 +U+1F93D WATER POLO 🤽 +U+1F93E HANDBALL 🤾 +U+1F93F DIVING MASK 🤿 +U+1F940 WILTED FLOWER 🥀 +U+1F941 DRUM WITH DRUMSTICKS 🥁 +U+1F942 CLINKING GLASSES 🥂 +U+1F943 TUMBLER GLASS 🥃 +U+1F944 SPOON 🥄 +U+1F945 GOAL NET 🥅 +U+1F947 FIRST PLACE MEDAL 🥇 +U+1F948 SECOND PLACE MEDAL 🥈 +U+1F949 THIRD PLACE MEDAL 🥉 +U+1F94A BOXING GLOVE 🥊 +U+1F94B MARTIAL ARTS UNIFORM 🥋 +U+1F94C CURLING STONE 🥌 +U+1F94D LACROSSE STICK AND BALL 🥍 +U+1F94E SOFTBALL 🥎 +U+1F94F FLYING DISC 🥏 +U+1F950 CROISSANT 🥐 +U+1F951 AVOCADO 🥑 +U+1F952 CUCUMBER 🥒 +U+1F953 BACON 🥓 +U+1F954 POTATO 🥔 +U+1F955 CARROT 🥕 +U+1F956 BAGUETTE BREAD 🥖 +U+1F957 GREEN SALAD 🥗 +U+1F958 SHALLOW PAN OF FOOD 🥘 +U+1F959 STUFFED FLATBREAD 🥙 +U+1F95A EGG 🥚 +U+1F95B GLASS OF MILK 🥛 +U+1F95C PEANUTS 🥜 +U+1F95D KIWIFRUIT 🥝 +U+1F95E PANCAKES 🥞 +U+1F95F DUMPLING 🥟 +U+1F960 FORTUNE COOKIE 🥠 +U+1F961 TAKEOUT BOX 🥡 +U+1F962 CHOPSTICKS 🥢 +U+1F963 BOWL WITH SPOON 🥣 +U+1F964 CUP WITH STRAW 🥤 +U+1F965 COCONUT 🥥 +U+1F966 BROCCOLI 🥦 +U+1F967 PIE 🥧 +U+1F968 PRETZEL 🥨 +U+1F969 CUT OF MEAT 🥩 +U+1F96A SANDWICH 🥪 +U+1F96B CANNED FOOD 🥫 +U+1F96C LEAFY GREEN 🥬 +U+1F96D MANGO 🥭 +U+1F96E MOON CAKE 🥮 +U+1F96F BAGEL 🥯 +U+1F970 SMILING FACE WITH SMILING EYES AND THREE HEARTS 🥰 +U+1F971 YAWNING FACE 🥱 +U+1F972 SMILING FACE WITH TEAR 🥲 +U+1F973 FACE WITH PARTY HORN AND PARTY HAT 🥳 +U+1F974 FACE WITH UNEVEN EYES AND WAVY MOUTH 🥴 +U+1F975 OVERHEATED FACE 🥵 +U+1F976 FREEZING FACE 🥶 +U+1F977 NINJA 🥷 +U+1F978 DISGUISED FACE 🥸 +U+1F97A FACE WITH PLEADING EYES 🥺 +U+1F97B SARI 🥻 +U+1F97C LAB COAT 🥼 +U+1F97D GOGGLES 🥽 +U+1F97E HIKING BOOT 🥾 +U+1F97F FLAT SHOE 🥿 +U+1F980 CRAB 🦀 +U+1F981 LION FACE 🦁 +U+1F982 SCORPION 🦂 +U+1F983 TURKEY 🦃 +U+1F984 UNICORN FACE 🦄 +U+1F985 EAGLE 🦅 +U+1F986 DUCK 🦆 +U+1F987 BAT 🦇 +U+1F988 SHARK 🦈 +U+1F989 OWL 🦉 +U+1F98A FOX FACE 🦊 +U+1F98B BUTTERFLY 🦋 +U+1F98C DEER 🦌 +U+1F98D GORILLA 🦍 +U+1F98E LIZARD 🦎 +U+1F98F RHINOCEROS 🦏 +U+1F990 SHRIMP 🦐 +U+1F991 SQUID 🦑 +U+1F992 GIRAFFE FACE 🦒 +U+1F993 ZEBRA FACE 🦓 +U+1F994 HEDGEHOG 🦔 +U+1F995 SAUROPOD 🦕 +U+1F996 T-REX 🦖 +U+1F997 CRICKET 🦗 +U+1F998 KANGAROO 🦘 +U+1F999 LLAMA 🦙 +U+1F99A PEACOCK 🦚 +U+1F99B HIPPOPOTAMUS 🦛 +U+1F99C PARROT 🦜 +U+1F99D RACCOON 🦝 +U+1F99E LOBSTER 🦞 +U+1F99F MOSQUITO 🦟 +U+1F9A0 MICROBE 🦠 +U+1F9A1 BADGER 🦡 +U+1F9A2 SWAN 🦢 +U+1F9A3 MAMMOTH 🦣 +U+1F9A4 DODO 🦤 +U+1F9A5 SLOTH 🦥 +U+1F9A6 OTTER 🦦 +U+1F9A7 ORANGUTAN 🦧 +U+1F9A8 SKUNK 🦨 +U+1F9A9 FLAMINGO 🦩 +U+1F9AA OYSTER 🦪 +U+1F9AB BEAVER 🦫 +U+1F9AC BISON 🦬 +U+1F9AD SEAL 🦭 +U+1F9AE GUIDE DOG 🦮 +U+1F9AF PROBING CANE 🦯 +U+1F9B0 EMOJI COMPONENT RED HAIR 🦰 +U+1F9B1 EMOJI COMPONENT CURLY HAIR 🦱 +U+1F9B2 EMOJI COMPONENT BALD 🦲 +U+1F9B3 EMOJI COMPONENT WHITE HAIR 🦳 +U+1F9B4 BONE 🦴 +U+1F9B5 LEG 🦵 +U+1F9B6 FOOT 🦶 +U+1F9B7 TOOTH 🦷 +U+1F9B8 SUPERHERO 🦸 +U+1F9B9 SUPERVILLAIN 🦹 +U+1F9BA SAFETY VEST 🦺 +U+1F9BB EAR WITH HEARING AID 🦻 +U+1F9BC MOTORIZED WHEELCHAIR 🦼 +U+1F9BD MANUAL WHEELCHAIR 🦽 +U+1F9BE MECHANICAL ARM 🦾 +U+1F9BF MECHANICAL LEG 🦿 +U+1F9C0 CHEESE WEDGE 🧀 +U+1F9C1 CUPCAKE 🧁 +U+1F9C2 SALT SHAKER 🧂 +U+1F9C3 BEVERAGE BOX 🧃 +U+1F9C4 GARLIC 🧄 +U+1F9C5 ONION 🧅 +U+1F9C6 FALAFEL 🧆 +U+1F9C7 WAFFLE 🧇 +U+1F9C8 BUTTER 🧈 +U+1F9C9 MATE DRINK 🧉 +U+1F9CA ICE CUBE 🧊 +U+1F9CB BUBBLE TEA 🧋 +U+1F9CD STANDING PERSON 🧍 +U+1F9CE KNEELING PERSON 🧎 +U+1F9CF DEAF PERSON 🧏 +U+1F9D0 FACE WITH MONOCLE 🧐 +U+1F9D1 ADULT 🧑 +U+1F9D2 CHILD 🧒 +U+1F9D3 OLDER ADULT 🧓 +U+1F9D4 BEARDED PERSON 🧔 +U+1F9D5 PERSON WITH HEADSCARF 🧕 +U+1F9D6 PERSON IN STEAMY ROOM 🧖 +U+1F9D7 PERSON CLIMBING 🧗 +U+1F9D8 PERSON IN LOTUS POSITION 🧘 +U+1F9D9 MAGE 🧙 +U+1F9DA FAIRY 🧚 +U+1F9DB VAMPIRE 🧛 +U+1F9DC MERPERSON Merfolk 🧜 +U+1F9DD ELF 🧝 +U+1F9DE GENIE 🧞 +U+1F9DF ZOMBIE 🧟 +U+1F9E0 BRAIN 🧠 +U+1F9E1 ORANGE HEART 🧡 +U+1F9E2 BILLED CAP 🧢 +U+1F9E3 SCARF 🧣 +U+1F9E4 GLOVES 🧤 +U+1F9E5 COAT 🧥 +U+1F9E6 SOCKS 🧦 +U+1F9E7 RED GIFT ENVELOPE 🧧 +U+1F9E8 FIRECRACKER 🧨 +U+1F9E9 JIGSAW PUZZLE PIECE 🧩 +U+1F9EA TEST TUBE 🧪 +U+1F9EB PETRI DISH 🧫 +U+1F9EC DNA DOUBLE HELIX 🧬 +U+1F9ED COMPASS 🧭 +U+1F9EE ABACUS 🧮 +U+1F9EF FIRE EXTINGUISHER 🧯 +U+1F9F0 TOOLBOX 🧰 +U+1F9F1 BRICK 🧱 +U+1F9F2 MAGNET 🧲 +U+1F9F3 LUGGAGE 🧳 +U+1F9F4 LOTION BOTTLE 🧴 +U+1F9F5 SPOOL OF THREAD 🧵 +U+1F9F6 BALL OF YARN 🧶 +U+1F9F7 SAFETY PIN 🧷 +U+1F9F8 TEDDY BEAR 🧸 +U+1F9F9 BROOM 🧹 +U+1F9FA BASKET 🧺 +U+1F9FB ROLL OF PAPER 🧻 +U+1F9FC BAR OF SOAP 🧼 +U+1F9FD SPONGE 🧽 +U+1F9FE RECEIPT 🧾 +U+1F9FF NAZAR AMULET 🧿 +U+1FA70 BALLET SHOES 🩰 +U+1FA71 ONE-PIECE SWIMSUIT 🩱 +U+1FA72 BRIEFS 🩲 +U+1FA73 SHORTS 🩳 +U+1FA74 THONG SANDAL +U+1FA78 DROP OF BLOOD 🩸 +U+1FA79 ADHESIVE BANDAGE 🩹 +U+1FA7A STETHOSCOPE 🩺 +U+1FA80 YO-YO 🪀 +U+1FA81 KITE 🪁 +U+1FA82 PARACHUTE 🪂 +U+1FA83 BOOMERANG 🪃 +U+1FA84 MAGIC WAND 🪄 +U+1FA85 PINATA 🪅 +U+1FA86 NESTING DOLLS 🪆 +U+1FA90 RINGED PLANET 🪐 +U+1FA91 CHAIR 🪑 +U+1FA92 RAZOR 🪒 +U+1FA93 AXE 🪓 +U+1FA94 DIYA LAMP 🪔 +U+1FA95 BANJO 🪕 +U+1FA96 MILITARY HELMET 🪖 +U+1FA97 ACCORDION 🪗 +U+1FA98 LONG DRUM 🪘 +U+1FA99 COIN 🪙 +U+1FA9A CARPENTRY SAW 🪚 +U+1FA9B SCREWDRIVER 🪛 +U+1FA9C LADDER 🪜 +U+1FA9D HOOK 🪝 +U+1FA9E MIRROR 🪞 +U+1FA9F WINDOW 🪟 +U+1FAA0 PLUNGER 🪠 +U+1FAA1 SEWING NEEDLE 🪡 +U+1FAA2 KNOT 🪢 +U+1FAA3 BUCKET 🪣 +U+1FAA4 MOUSE TRAP 🪤 +U+1FAA5 TOOTHBRUSH 🪥 +U+1FAA6 HEADSTONE 🪦 +U+1FAA7 PLACARD 🪧 +U+1FAA8 ROCK 🪨 +U+1FAB0 FLY 🪰 +U+1FAB1 WORM 🪱 +U+1FAB2 BEETLE 🪲 +U+1FAB3 COCKROACH 🪳 +U+1FAB4 POTTED PLANT 🪴 +U+1FAB5 WOOD 🪵 +U+1FAB6 FEATHER 🪶 +U+1FAC0 ANATOMICAL HEART 🫀 +U+1FAC1 LUNGS 🫁 +U+1FAC2 PEOPLE HUGGING 🫂 +U+1FAD0 BLUEBERRIES 🫐 +U+1FAD1 BELL PEPPER 🫑 +U+1FAD2 OLIVE 🫒 +U+1FAD3 FLATBREAD 🫓 +U+1FAD4 TAMALE 🫔 +U+1FAD5 FONDUE 🫕 +U+1FAD6 TEAPOT diff --git a/.vim/vimrc b/.vim/vimrc new file mode 100644 index 0000000..a3ea897 --- /dev/null +++ b/.vim/vimrc @@ -0,0 +1,104 @@ +" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by +" the call to :runtime you can find below. If you wish to change any of those +" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim +" will be overwritten everytime an upgrade of the vim packages is performed. +" It is recommended to make changes after sourcing debian.vim since it alters +" the value of the 'compatible' option. + +" This line should not be removed as it ensures that various options are +" properly set to work with the Vim-related packages available in Debian. +runtime! debian.vim +" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc. +" This happens after /etc/vim/vimrc(.local) are loaded, so it will override +" any settings in these files. +" If you don't want that to happen, uncomment the below line to prevent +" defaults.vim from being loaded. +" let g:skip_defaults_vim = 1 + +" Uncomment the next line to make Vim more Vi-compatible +" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous +" options, so any other options should be set AFTER setting 'compatible'. +"set compatible + +" Vim5 and later versions support syntax highlighting. Uncommenting the next +" line enables syntax highlighting by default. +syntax on + +" If using a dark background within the editing area and syntax highlighting +" turn on this option as well +set background=dark + +" Uncomment the following to have Vim jump to the last position when +" reopening a file +"au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif + +" Uncomment the following to have Vim load indentation rules and plugins +" according to the detected filetype. +filetype plugin indent on + +" The following are commented out as they cause vim to behave a lot +" differently from regular Vi. They are highly recommended though. +let mapleader =" " " Map leader +set showcmd " Show (partial) command in status line. +set showmatch " Show matching brackets. +set ignorecase " Do case insensitive matching +set smartcase " Do smart case matching +set incsearch " Incremental search +set autowrite " Automatically save before commands like :next and :make +set hidden " Hide buffers when they are abandoned +set mouse=a " Enable mouse usage (all modes) +set number " Enable line numbers +set relativenumber " Enable line numbers to be displayed relative to current position +set tabstop=4 " Set default tab size to 4 spaces +set autoindent " Keep current tab depth on new line +colorscheme slate " Enable my custom colorscheme + +" Document compilation +map c :!compile % +" Document Preview +map p :!pdf-preview % +" Spell Check +map s :setlocal spell! spelllang=en_us +" Disable auto comment continuation +autocmd filetype * set formatoptions-=cro + + +" C mappings +autocmd filetype c inoremap ;c /* */ +autocmd filetype c inoremap ;p printf(" \n");5hi + +" Python mappings +autocmd filetype python noremap idef main():passif __name__ == '__main__':main()gg + +" Java 'IDE' remappings +autocmd filetype java inoremap [p System.out.println(); +autocmd filetype java noremap ipublic class {public static void main(String[] args) {}}ggwwhhi +autocmd filetype java noremap ipublic class {}ggwwhhi + +" Groff Mappings +autocmd filetype nroff inoremap ;c .\" +autocmd filetype nroff inoremap ;b \*[BOLDER]'\*[BOLDERX] F'cl +autocmd filetype nroff inoremap ;h .HEADING + +" Restart sxhkd when config file is changed +autocmd BufWritePost *sxhkdrc !pkill -SIGUSR1 sxhkd + +" Recompile and restart dwmblocks when file is changed +autocmd BufWritePost ~/.local/src/dwmblocks/blocks.h !cd ~/.local/src/dwmblocks/; sudo make install && pkill dwmblocks; setsid -f dwmblocks + +" Recompile dwm when config.h is changed +autocmd BufWritePost ~/.local/src/dwm/config.h !cd ~/.local/src/dwm/; sudo make install + +" Reload Xresources when saved +autocmd BufWritePost ~/.config/x11/xresources !xrdb ~/.config/x11/xresources + +" Reload dunst after editing configuration file +autocmd BufWritePost ~/.config/dunst/dunstrc !pkill dunst; setsid -f dunst + +"set completeopt =menuone,longest + +" Source a global configuration file if available +if filereadable("/etc/vim/vimrc.local") + source /etc/vim/vimrc.local +endif + diff --git a/.zprofile b/.zprofile new file mode 120000 index 0000000..6928145 --- /dev/null +++ b/.zprofile @@ -0,0 +1 @@ +.config/zsh/.zprofile \ No newline at end of file -- cgit v1.2.3