UNIX


Dotfiles

I keep my dotfiles organize in a git repository using GNU’s stow to get them in their respective directories on new machines. I just clone my dotfiles repository on ~/.dotfiles and then, for example:

cd .dotfiles
stow nvim
stow zsh
...

To add new files into the repo, just create a folder in the dotfiles with the proper directory structure, add the config files there and use stow to create the symlinks. For existing files you can do something like this:

mkdir -p .dotfiles/helix/.config/
mv .config/helix .dotfiles/helix/config
cd .dotfiles
stow helix

Tips

Watch files for changes

Tail

We can see the output being written to a file by using the tail command.

tail -f log/development.log

Peat

Peat is an utility created by Steve Losh, and only depends on Python being installed. You can pipe any command to peat and it will start watching them. If it detects any changes, the argument of peat will be executed:

find . -name hello.c | peat "make hello && ./hello"

Inotify

In Linux, we can use inotify to watch for system changes and act accordingly. In this script you can watch all directories in the current path and execute whatever you pass it as an argument:

#!/bin/sh
# Depends on 'inotify-tools' package
FORMAT=$(echo -e "\033[1;33m%w%f\033[0m written")
"$@"
while inotifywait -qre close_write --format "$FORMAT" .
do
    "$@"
done

ffmpeg

Transform FLAC to MP3s

#!/bin/bash

for a in ./*.flac; do
  < /dev/null ffmpeg -i "$a" -qscale:a 0 "${a[@]/%flac/mp3}"
done

Capture X11 desktop

Capture an uncompressed region on the second monitor.

ffmpeg -f x11grab \
    -show_region 1 \
    -s 1024x768 \
    -r 30 \
    -i :0.0+2560,0 \
    -qscale 0 \
    -vcodec huffyuv \
    filename.avi

Encode a video to mp4 with the h264 codec

ffmpeg -i filename.avi -vcodec h264 -pix_fmt yuv420p -strict -2 filename.mp4

Convert video to gif

Convert a video to gif, changing the fps, speed it up 2x, adjusting the scale to 1024 and trimming the first second.

ffmpeg -ss 1 \
    -i filename.avi \
    -vf "fps=10,setpts=0.5*PTS,scale=1024:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" \
    -loop 0 \
    filename.gif

Converting images for web performance

I like to rescale and bitcrush images for using on the web to reduce their size. You can always keep a high resolution image available for when you click on them. ImageMagick to the rescue!

convert src_img.jpg -resize 800 -dither FloydSteinberg -depth 3 -colors 5 dst_img.png

Transfering files using tar

We can use tar to copy files between different machines with ssh access without using rsync or scp:

ssh hostname tar -C sources/ -cz linux | pv | tar -xzv

Source: gemini://drewdevault.com/2022/02/17/tar-is-good-actually.gmi

Finding unique users on nginx logs

zgrep -E -i -v 'openai|bot|crawler|spider|feed|rss' /var/log/nginx/*access.log* | awk '{print $1}' | sort | uniq | wc -l

Backup system using tar

# Create /backup.tar.gz file.
sudo tar czf /backup.tar.gz \
    --exclude=/backup.tar.gz \
    --exclude=/dev \
    --exclude=/mnt \
    --exclude=/proc \
    --exclude=/sys \
    --exclude=/tmp \
    --exclude=/var \
    --exclude=/media \
    --exclude=/lost+found \
    /
# Copy it somewhere
rsync /backup.tar.gz ...
# Restore it
tar xf /path/to/drive/with/backup.tar.gz -C /path/to/mounted/partition

Dmenu

I have used dmenu for launching programs for more than a decade, but I also use it for a variety of other purposes. For example here is a script for browsing emojis:

#!/bin/sh

EMOJI_DB=~/.local/src/scripts/emoji_db

cat $EMOJI_DB | dmenu -p "Emoji:" | sed -s "s/\s*[A-Za-z0-9_+]\+:\s*//" | tr -d "\n\r"

Where emoji_db is a simple text file like this:

shruggie: ¯\_(ツ)_/¯
table_flip: (╯°□°)╯︵ ┻━┻
double_table_flip: ┻━┻︵ \(°□°)/ ︵ ┻━┻
shocked: (●_●)
happy: (●ᴗ●)
ray_charles: (⌐■_■)
cute_face: (●´ω`●)
bear: ʕ•ᴥ•ʔ
cat: ฅ^•ﻌ•^ฅ
sleeping: (-_-)
le_lenny: ( ͡° ͜ʖ ͡°)
kissing: ( ˘ ³˘)♥
crying: (╥_╥)
confused: (☉_☉)
copyright_sign: ©️
registered_sign: ®️
double_exclamation_mark: ‼️
exclamation_question_mark: ⁉️
trade_mark_sign: ™️
information_source: ℹ️
left_right_arrow: ↔️
up_down_arrow: ↕️
north_west_arrow: ↖️
north_east_arrow: ↗️
south_east_arrow: ↘️
south_west_arrow: ↙️
leftwards_arrow_with_hook: ↩️
rightwards_arrow_with_hook: ↪️
watch: ⌚
hourglass: ⌛
keyboard: ⌨
eject_symbol: ⏏
black_right-pointing_double_triangle: ⏩
black_left-pointing_double_triangle: ⏪
black_up-pointing_double_triangle: ⏫
black_down-pointing_double_triangle: ⏬
black_right-pointing_double_triangle_with_vertical_bar: ⏭
black_left-pointing_double_triangle_with_vertical_bar: ⏮
black_right-pointing_triangle_with_double_vertical_bar: ⏯
alarm_clock: ⏰
stopwatch: ⏱
timer_clock: ⏲
black_right-pointing_double_triangle: ⏩
hourglass_with_flowing_sand: ⏳
double_vertical_bar: ⏸
black_square_for_stop: ⏹
black_circle_for_record: ⏺
black_small_square: ▪️
white_small_square: ▫️
black_right-pointing_triangle: ▶️
black_left-pointing_triangle: ◀️
white_medium_square: ◻️
black_medium_square: ◼️
white_medium_small_square: ◽
black_medium_small_square: ◾
black_sun_with_rays: ☀️
cloud: ☁️
umbrella: ☂
snowman: ☃
comet: ☄
black_telephone: ☎️
ballot_box_with_check: ☑️
umbrella_with_rain_drops: ☔
hot_beverage: ☕
shamrock: ☘
white_up_pointing_index: ☝️
skull_and_crossbones: ☠
radioactive_sign: ☢
biohazard_sign: ☣
orthodox_cross: ☦
star_and_crescent: ☪
peace_symbol: ☮
yin_yang: ☯
wheel_of_dharma: ☸
white_frowning_face: ☹
white_smiling_face: ☺️
aries: ♈
taurus: ♉
gemini: ♊
cancer: ♋
leo: ♌
virgo: ♍
libra: ♎
scorpius: ♏
sagittarius: ♐
capricorn: ♑
aquarius: ♒
pisces: ♓
black_spade_suit: ♠️
black_club_suit: ♣️
black_heart_suit: ♥️
black_diamond_suit: ♦️
hot_springs: ♨️
black_universal_recycling_symbol: ♻️
wheelchair_symbol: ♿
hammer_and_pick: ⚒
anchor: ⚓
crossed_swords: ⚔
scales: ⚖
alembic: ⚗
gear: ⚙
atom_symbol: ⚛
fleur-de-lis: ⚜
warning_sign: ⚠️
high_voltage_sign: ⚡
medium_white_circle: ⚪
medium_black_circle: ⚫
coffin: ⚰
funeral_urn: ⚱
soccer_ball: ⚽
baseball: ⚾
snowman_without_snow: ⛄
sun_behind_cloud: ⛅
thunder_cloud_and_rain: ⛈
ophiuchus: ⛎
pick: ⛏
helmet_with_white_cross: ⛑
chains: ⛓
no_entry: ⛔
shinto_shrine: ⛩
church: ⛪
mountain: ⛰
umbrella_on_ground: ⛱
fountain: ⛲
flag_in_hole: ⛳
ferry: ⛴
sailboat: ⛵
skier: ⛷
ice_skate: ⛸
person_with_ball: ⛹
tent: ⛺
fuel_pump: ⛽
black_scissors: ✂️
white_heavy_check_mark: ✅
airplane: ✈️
envelope: ✉️
raised_fist: ✊
raised_hand: ✋
victory_hand: ✌️
writing_hand: ✍
pencil: ✏️
black_nib: ✒️
heavy_check_mark: ✔️
heavy_multiplication_x: ✖️
latin_cross: ✝
star_of_david: ✡
sparkles: ✨
eight_spoked_asterisk: ✳️
eight_pointed_black_star: ✴️
snowflake: ❄️
sparkle: ❇️
cross_mark: ❌
negative_squared_cross_mark: ❎
black_question_mark_ornament: ❓
white_question_mark_ornament: ❔
white_exclamation_mark_ornament: ❕
heavy_exclamation_mark_symbol: ❗
heavy_heart_exclamation_mark_ornament: ❣
heavy_black_heart: ❤️
heavy_plus_sign: ➕
heavy_minus_sign: ➖
heavy_division_sign: ➗
black_rightwards_arrow: ➡️
curly_loop: ➰
double_curly_loop: ➿
arrow_pointing_rightwards_then_curving_upwards: ⤴️
arrow_pointing_rightwards_then_curving_downwards: ⤵️
leftwards_black_arrow: ⬅️
upwards_black_arrow: ⬆️
downwards_black_arrow: ⬇️
black_large_square: ⬛
white_large_square: ⬜
white_medium_star: ⭐
heavy_large_circle: ⭕
mahjong_tile_red_dragon: 🀄
playing_card_black_joker: 🃏
negative_squared_latin_capital_letter_a: 🅰️
negative_squared_latin_capital_letter_b: 🅱️
negative_squared_latin_capital_letter_o: 🅾️
negative_squared_latin_capital_letter_p: 🅿️
negative_squared_ab: 🆎
squared_cl: 🆑
squared_cool: 🆒
squared_free: 🆓
squared_id: 🆔
squared_new: 🆕
squared_ng: 🆖
squared_ok: 🆗
squared_sos: 🆘
squared_up_with_exclamation_mark: 🆙
squared_vs: 🆚
squared_katakana_koko: 🈁
squared_katakana_sa: 🈂️
squared_cjk_unified_ideograph-7121: 🈚
squared_cjk_unified_ideograph-6307: 🈯
squared_cjk_unified_ideograph-7981: 🈲
squared_cjk_unified_ideograph-7a7a: 🈳
squared_cjk_unified_ideograph-5408: 🈴
squared_cjk_unified_ideograph-6e80: 🈵
squared_cjk_unified_ideograph-6709: 🈶
squared_cjk_unified_ideograph-6708: 🈷️
squared_cjk_unified_ideograph-7533: 🈸
squared_cjk_unified_ideograph-5272: 🈹
squared_cjk_unified_ideograph-55b6: 🈺
circled_ideograph_advantage: 🉐
circled_ideograph_accept: 🉑
cyclone: 🌀
foggy: 🌁
closed_umbrella: 🌂
night_with_stars: 🌃
sunrise_over_mountains: 🌄
sunrise: 🌅
cityscape_at_dusk: 🌆
sunset_over_buildings: 🌇
rainbow: 🌈
bridge_at_night: 🌉
water_wave: 🌊
volcano: 🌋
milky_way: 🌌
earth_globe_europe-africa: 🌍
earth_globe_americas: 🌎
earth_globe_asia-australia: 🌏
globe_with_meridians: 🌐
new_moon_symbol: 🌑
waxing_crescent_moon_symbol: 🌒
first_quarter_moon_symbol: 🌓
waxing_gibbous_moon_symbol: 🌔
full_moon_symbol: 🌕
waning_gibbous_moon_symbol: 🌖
last_quarter_moon_symbol: 🌗
waning_crescent_moon_symbol: 🌘
crescent_moon: 🌙
new_moon_with_face: 🌚
first_quarter_moon_with_face: 🌛
last_quarter_moon_with_face: 🌜
full_moon_with_face: 🌝
sun_with_face: 🌞
glowing_star: 🌟
shooting_star: 🌠
thermometer: 🌡
white_sun_with_small_cloud: 🌤
white_sun_behind_cloud: 🌥
white_sun_behind_cloud_with_rain: 🌦
cloud_with_rain: 🌧
cloud_with_snow: 🌨
cloud_with_lightning: 🌩
cloud_with_tornado: 🌪
fog: 🌫
wind_blowing_face: 🌬
hot_dog: 🌭
taco: 🌮
burrito: 🌯
chestnut: 🌰
seedling: 🌱
evergreen_tree: 🌲
deciduous_tree: 🌳
palm_tree: 🌴
cactus: 🌵
hot_pepper: 🌶
tulip: 🌷
cherry_blossom: 🌸
rose: 🌹
hibiscus: 🌺
sunflower: 🌻
blossom: 🌼
ear_of_maize: 🌽
ear_of_rice: 🌾
herb: 🌿
four_leaf_clover: 🍀
maple_leaf: 🍁
fallen_leaf: 🍂
leaf_fluttering_in_wind: 🍃
mushroom: 🍄
tomato: 🍅
aubergine: 🍆
grapes: 🍇
melon: 🍈
watermelon: 🍉
tangerine: 🍊
lemon: 🍋
banana: 🍌
pineapple: 🍍
red_apple: 🍎
green_apple: 🍏
pear: 🍐
peach: 🍑
cherries: 🍒
strawberry: 🍓
hamburger: 🍔
slice_of_pizza: 🍕
meat_on_bone: 🍖
poultry_leg: 🍗
rice_cracker: 🍘
rice_ball: 🍙
cooked_rice: 🍚
curry_and_rice: 🍛
steaming_bowl: 🍜
spaghetti: 🍝
bread: 🍞
french_fries: 🍟
roasted_sweet_potato: 🍠
dango: 🍡
oden: 🍢
sushi: 🍣
fried_shrimp: 🍤
fish_cake_with_swirl_design: 🍥
soft_ice_cream: 🍦
shaved_ice: 🍧
ice_cream: 🍨
doughnut: 🍩
cookie: 🍪
chocolate_bar: 🍫
candy: 🍬
lollipop: 🍭
custard: 🍮
honey_pot: 🍯
shortcake: 🍰
bento_box: 🍱
pot_of_food: 🍲
cooking: 🍳
fork_and_knife: 🍴
teacup_without_handle: 🍵
sake_bottle_and_cup: 🍶
wine_glass: 🍷
cocktail_glass: 🍸
tropical_drink: 🍹
beer_mug: 🍺
clinking_beer_mugs: 🍻
baby_bottle: 🍼
fork_and_knife_with_plate: 🍽
bottle_with_popping_cork: 🍾
popcorn: 🍿
ribbon: 🎀
wrapped_present: 🎁
birthday_cake: 🎂
jack-o-lantern: 🎃
christmas_tree: 🎄
father_christmas: 🎅
fireworks: 🎆
firework_sparkler: 🎇
balloon: 🎈
party_popper: 🎉
confetti_ball: 🎊
tanabata_tree: 🎋
crossed_flags: 🎌
pine_decoration: 🎍
japanese_dolls: 🎎
carp_streamer: 🎏
wind_chime: 🎐
moon_viewing_ceremony: 🎑
school_satchel: 🎒
graduation_cap: 🎓
military_medal: 🎖
reminder_ribbon: 🎗
studio_microphone: 🎙
level_slider: 🎚
control_knobs: 🎛
film_frames: 🎞
admission_tickets: 🎟
carousel_horse: 🎠
ferris_wheel: 🎡
roller_coaster: 🎢
fishing_pole_and_fish: 🎣
microphone: 🎤
movie_camera: 🎥
cinema: 🎦
headphone: 🎧
artist_palette: 🎨
top_hat: 🎩
circus_tent: 🎪
ticket: 🎫
clapper_board: 🎬
performing_arts: 🎭
video_game: 🎮
direct_hit: 🎯
slot_machine: 🎰
billiards: 🎱
game_die: 🎲
bowling: 🎳
flower_playing_cards: 🎴
musical_note: 🎵
multiple_musical_notes: 🎶
saxophone: 🎷
guitar: 🎸
musical_keyboard: 🎹
trumpet: 🎺
violin: 🎻
musical_score: 🎼
running_shirt_with_sash: 🎽
tennis_racquet_and_ball: 🎾
ski_and_ski_boot: 🎿
basketball_and_hoop: 🏀
chequered_flag: 🏁
snowboarder: 🏂
runner: 🏃
surfer: 🏄
sports_medal: 🏅
trophy: 🏆
horse_racing: 🏇
american_football: 🏈
rugby_football: 🏉
swimmer: 🏊
weight_lifter: 🏋
golfer: 🏌
racing_motorcycle: 🏍
racing_car: 🏎
cricket_bat_and_ball: 🏏
volleyball: 🏐
field_hockey_stick_and_ball: 🏑
ice_hockey_stick_and_puck: 🏒
table_tennis_paddle_and_ball: 🏓
snow_capped_mountain: 🏔
camping: 🏕
beach_with_umbrella: 🏖
building_construction: 🏗
house_buildings: 🏘
cityscape: 🏙
derelict_house_building: 🏚
classical_building: 🏛
desert: 🏜
desert_island: 🏝
national_park: 🏞
stadium: 🏟
house_building: 🏠
house_with_garden: 🏡
office_building: 🏢
japanese_post_office: 🏣
european_post_office: 🏤
hospital: 🏥
bank: 🏦
automated_teller_machine: 🏧
hotel: 🏨
love_hotel: 🏩
convenience_store: 🏪
school: 🏫
department_store: 🏬
factory: 🏭
izakaya_lantern: 🏮
japanese_castle: 🏯
european_castle: 🏰
waving_white_flag: 🏳
waving_black_flag: 🏴
rosette: 🏵
label: 🏷
badminton_racquet_and_shuttlecock: 🏸
bow_and_arrow: 🏹
amphora: 🏺
rat: 🐀
mouse: 🐁
ox: 🐂
water_buffalo: 🐃
cow: 🐄
tiger: 🐅
leopard: 🐆
rabbit: 🐇
cat: 🐈
dragon: 🐉
crocodile: 🐊
whale: 🐋
snail: 🐌
snake: 🐍
horse: 🐎
ram: 🐏
goat: 🐐
sheep: 🐑
monkey: 🐒
rooster: 🐓
chicken: 🐔
dog: 🐕
pig: 🐖
boar: 🐗
elephant: 🐘
octopus: 🐙
spiral_shell: 🐚
bug: 🐛
ant: 🐜
honeybee: 🐝
lady_beetle: 🐞
fish: 🐟
tropical_fish: 🐠
blowfish: 🐡
turtle: 🐢
hatching_chick: 🐣
baby_chick: 🐤
front-facing_baby_chick: 🐥
bird: 🐦
penguin: 🐧
koala: 🐨
poodle: 🐩
dromedary_camel: 🐪
bactrian_camel: 🐫
dolphin: 🐬
mouse_face: 🐭
cow_face: 🐮
tiger_face: 🐯
rabbit_face: 🐰
cat_face: 🐱
dragon_face: 🐲
spouting_whale: 🐳
horse_face: 🐴
monkey_face: 🐵
dog_face: 🐶
pig_face: 🐷
frog_face: 🐸
hamster_face: 🐹
wolf_face: 🐺
bear_face: 🐻
panda_face: 🐼
pig_nose: 🐽
paw_prints: 🐾
chipmunk: 🐿
eyes: 👀
eye: 👁
ear: 👂
nose: 👃
mouth: 👄
tongue: 👅
white_up_pointing_backhand_index: 👆
white_down_pointing_backhand_index: 👇
white_left_pointing_backhand_index: 👈
white_right_pointing_backhand_index: 👉
fisted_hand_sign: 👊
waving_hand_sign: 👋
ok_hand_sign: 👌
thumbs_up_sign: 👍
thumbs_down_sign: 👎
clapping_hands_sign: 👏
open_hands_sign: 👐
crown: 👑
womans_hat: 👒
eyeglasses: 👓
necktie: 👔
t-shirt: 👕
jeans: 👖
dress: 👗
kimono: 👘
bikini: 👙
womans_clothes: 👚
purse: 👛
handbag: 👜
pouch: 👝
mans_shoe: 👞
athletic_shoe: 👟
high-heeled_shoe: 👠
womans_sandal: 👡
womans_boots: 👢
footprints: 👣
bust_in_silhouette: 👤
busts_in_silhouette: 👥
boy: 👦
girl: 👧
man: 👨
woman: 👩
family: 👪
man_and_woman_holding_hands: 👫
two_men_holding_hands: 👬
two_women_holding_hands: 👭
police_officer: 👮
woman_with_bunny_ears: 👯
bride_with_veil: 👰
person_with_blond_hair: 👱
man_with_gua_pi_mao: 👲
man_with_turban: 👳
older_man: 👴
older_woman: 👵
baby: 👶
construction_worker: 👷
princess: 👸
japanese_ogre: 👹
japanese_goblin: 👺
ghost: 👻
baby_angel: 👼
extraterrestrial_alien: 👽
alien_monster: 👾
imp: 👿
skull: 💀
information_desk_person: 💁
guardsman: 💂
dancer: 💃
lipstick: 💄
nail_polish: 💅
face_massage: 💆
haircut: 💇
barber_pole: 💈
syringe: 💉
pill: 💊
kiss_mark: 💋
love_letter: 💌
ring: 💍
gem_stone: 💎
kiss: 💏
bouquet: 💐
couple_with_heart: 💑
wedding: 💒
beating_heart: 💓
broken_heart: 💔
two_hearts: 💕
sparkling_heart: 💖
growing_heart: 💗
heart_with_arrow: 💘
blue_heart: 💙
green_heart: 💚
yellow_heart: 💛
purple_heart: 💜
heart_with_ribbon: 💝
revolving_hearts: 💞
heart_decoration: 💟
diamond_shape_with_a_dot_inside: 💠
electric_light_bulb: 💡
anger_symbol: 💢
bomb: 💣
sleeping_symbol: 💤
collision_symbol: 💥
splashing_sweat_symbol: 💦
droplet: 💧
dash_symbol: 💨
pile_of_poo: 💩
flexed_biceps: 💪
dizzy_symbol: 💫
speech_balloon: 💬
thought_balloon: 💭
white_flower: 💮
hundred_points_symbol: 💯
money_bag: 💰
currency_exchange: 💱
heavy_dollar_sign: 💲
credit_card: 💳
banknote_with_yen_sign: 💴
banknote_with_dollar_sign: 💵
banknote_with_euro_sign: 💶
banknote_with_pound_sign: 💷
money_with_wings: 💸
chart_with_upwards_trend_and_yen_sign: 💹
seat: 💺
personal_computer: 💻
briefcase: 💼
minidisc: 💽
floppy_disk: 💾
optical_disc: 💿
dvd: 📀
file_folder: 📁
open_file_folder: 📂
page_with_curl: 📃
page_facing_up: 📄
calendar: 📅
tear-off_calendar: 📆
card_index: 📇
chart_with_upwards_trend: 📈
chart_with_downwards_trend: 📉
bar_chart: 📊
clipboard: 📋
pushpin: 📌
round_pushpin: 📍
paperclip: 📎
straight_ruler: 📏
triangular_ruler: 📐
bookmark_tabs: 📑
ledger: 📒
notebook: 📓
notebook_with_decorative_cover: 📔
closed_book: 📕
open_book: 📖
green_book: 📗
blue_book: 📘
orange_book: 📙
books: 📚
name_badge: 📛
scroll: 📜
memo: 📝
telephone_receiver: 📞
pager: 📟
fax_machine: 📠
satellite_antenna: 📡
public_address_loudspeaker: 📢
cheering_megaphone: 📣
outbox_tray: 📤
inbox_tray: 📥
package: 📦
e-mail_symbol: 📧
incoming_envelope: 📨
envelope_with_downwards_arrow_above: 📩
closed_mailbox_with_lowered_flag: 📪
closed_mailbox_with_raised_flag: 📫
open_mailbox_with_raised_flag: 📬
open_mailbox_with_lowered_flag: 📭
postbox: 📮
postal_horn: 📯
newspaper: 📰
mobile_phone: 📱
mobile_phone_with_rightwards_arrow_at_left: 📲
vibration_mode: 📳
mobile_phone_off: 📴
no_mobile_phones: 📵
antenna_with_bars: 📶
camera: 📷
camera_with_flash: 📸
video_camera: 📹
television: 📺
radio: 📻
videocassette: 📼
film_projector: 📽
prayer_beads: 📿
twisted_rightwards_arrows: 🔀
clockwise_rightwards_and_leftwards_open_circle_arrows: 🔁
clockwise_rightwards_and_leftwards_open_circle_arrows_with_circled_one_overlay: 🔂
clockwise_downwards_and_upwards_open_circle_arrows: 🔃
anticlockwise_downwards_and_upwards_open_circle_arrows: 🔄
low_brightness_symbol: 🔅
high_brightness_symbol: 🔆
speaker_with_cancellation_stroke: 🔇
speaker: 🔈
speaker_with_one_sound_wave: 🔉
speaker_with_three_sound_waves: 🔊
battery: 🔋
electric_plug: 🔌
left-pointing_magnifying_glass: 🔍
right-pointing_magnifying_glass: 🔎
lock_with_ink_pen: 🔏
closed_lock_with_key: 🔐
key: 🔑
lock: 🔒
open_lock: 🔓
bell: 🔔
bell_with_cancellation_stroke: 🔕
bookmark: 🔖
link_symbol: 🔗
radio_button: 🔘
back_with_leftwards_arrow_above: 🔙
end_with_leftwards_arrow_above: 🔚
on_with_exclamation_mark_with_left_right_arrow_above: 🔛
soon_with_rightwards_arrow_above: 🔜
top_with_upwards_arrow_above: 🔝
no_one_under_eighteen_symbol: 🔞
keycap_ten: 🔟
input_symbol_for_latin_capital_letters: 🔠
input_symbol_for_latin_small_letters: 🔡
input_symbol_for_numbers: 🔢
input_symbol_for_symbols: 🔣
input_symbol_for_latin_letters: 🔤
fire: 🔥
electric_torch: 🔦
wrench: 🔧
hammer: 🔨
nut_and_bolt: 🔩
hocho: 🔪
pistol: 🔫
microscope: 🔬
telescope: 🔭
crystal_ball: 🔮
six_pointed_star_with_middle_dot: 🔯
japanese_symbol_for_beginner: 🔰
trident_emblem: 🔱
black_square_button: 🔲
white_square_button: 🔳
large_red_circle: 🔴
large_blue_circle: 🔵
large_orange_diamond: 🔶
large_blue_diamond: 🔷
small_orange_diamond: 🔸
small_blue_diamond: 🔹
up-pointing_red_triangle: 🔺
down-pointing_red_triangle: 🔻
up-pointing_small_red_triangle: 🔼
down-pointing_small_red_triangle: 🔽
om_symbol: 🕉
dove_of_peace: 🕊
kaaba: 🕋
mosque: 🕌
synagogue: 🕍
menorah_with_nine_branches: 🕎
clock_face_one_o'clock: 🕐
clock_face_two_o'clock: 🕑
clock_face_three_o'clock: 🕒
clock_face_four_o'clock: 🕓
clock_face_five_o'clock: 🕔
clock_face_six_o'clock: 🕕
clock_face_seven_o'clock: 🕖
clock_face_eight_o'clock: 🕗
clock_face_nine_o'clock: 🕘
clock_face_ten_o'clock: 🕙
clock_face_eleven_o'clock: 🕚
clock_face_twelve_o'clock: 🕛
clock_face_one-thirty: 🕜
clock_face_two-thirty: 🕝
clock_face_three-thirty: 🕞
clock_face_four-thirty: 🕟
clock_face_five-thirty: 🕠
clock_face_six-thirty: 🕡
clock_face_seven-thirty: 🕢
clock_face_eight-thirty: 🕣
clock_face_nine-thirty: 🕤
clock_face_ten-thirty: 🕥
clock_face_eleven-thirty: 🕦
clock_face_twelve-thirty: 🕧
candle: 🕯
mantelpiece_clock: 🕰
hole: 🕳
man_in_business_suit_levitating: 🕴
sleuth_or_spy: 🕵
dark_sunglasses: 🕶
spider: 🕷
spider_web: 🕸
joystick: 🕹
man_dancing: 🕺
linked_paperclips: 🖇
lower_left_ballpoint_pen: 🖊
lower_left_fountain_pen: 🖋
lower_left_paintbrush: 🖌
lower_left_crayon: 🖍
raised_hand_with_fingers_splayed: 🖐
reversed_hand_with_middle_finger_extended: 🖕
raised_hand_with_part_between_middle_and_ring_fingers: 🖖
black_heart: 🖤
desktop_computer: 🖥
printer: 🖨
three_button_mouse: 🖱
trackball: 🖲
frame_with_picture: 🖼
card_index_dividers: 🗂
card_file_box: 🗃
file_cabinet: 🗄
wastebasket: 🗑
spiral_note_pad: 🗒
spiral_calendar_pad: 🗓
compression: 🗜
old_key: 🗝
rolled-up_newspaper: 🗞
dagger_knife: 🗡
speaking_head_in_silhouette: 🗣
left_speech_bubble: 🗨
right_anger_bubble: 🗯
ballot_box_with_ballot: 🗳
world_map: 🗺
mount_fuji: 🗻
tokyo_tower: 🗼
statue_of_liberty: 🗽
silhouette_of_japan: 🗾
moyai: 🗿
grinning_face: 😀
grinning_face_with_smiling_eyes: 😁
face_with_tears_of_joy: 😂
smiling_face_with_open_mouth: 😃
smiling_face_with_open_mouth_and_smiling_eyes: 😄
smiling_face_with_open_mouth_and_cold_sweat: 😅
smiling_face_with_open_mouth_and_tightly-closed_eyes: 😆
smiling_face_with_halo: 😇
smiling_face_with_horns: 😈
winking_face: 😉
smiling_face_with_smiling_eyes: 😊
face_savouring_delicious_food: 😋
relieved_face: 😌
smiling_face_with_heart-shaped_eyes: 😍
smiling_face_with_sunglasses: 😎
smirking_face: 😏
neutral_face: 😐
expressionless_face: 😑
unamused_face: 😒
face_with_cold_sweat: 😓
pensive_face: 😔
confused_face: 😕
confounded_face: 😖
kissing_face: 😗
face_throwing_a_kiss: 😘
kissing_face_with_smiling_eyes: 😙
kissing_face_with_closed_eyes: 😚
face_with_stuck-out_tongue: 😛
face_with_stuck-out_tongue_and_winking_eye: 😜
face_with_stuck-out_tongue_and_tightly-closed_eyes: 😝
disappointed_face: 😞
worried_face: 😟
angry_face: 😠
pouting_face: 😡
crying_face: 😢
persevering_face: 😣
face_with_look_of_triumph: 😤
disappointed_but_relieved_face: 😥
frowning_face_with_open_mouth: 😦
anguished_face: 😧
fearful_face: 😨
weary_face: 😩
sleepy_face: 😪
tired_face: 😫
grimacing_face: 😬
loudly_crying_face: 😭
face_with_open_mouth: 😮
hushed_face: 😯
face_with_open_mouth_and_cold_sweat: 😰
face_screaming_in_fear: 😱
astonished_face: 😲
flushed_face: 😳
sleeping_face: 😴
dizzy_face: 😵
face_without_mouth: 😶
face_with_medical_mask: 😷
grinning_cat_face_with_smiling_eyes: 😸
cat_face_with_tears_of_joy: 😹
smiling_cat_face_with_open_mouth: 😺
smiling_cat_face_with_heart-shaped_eyes: 😻
cat_face_with_wry_smile: 😼
kissing_cat_face_with_closed_eyes: 😽
pouting_cat_face: 😾
crying_cat_face: 😿
weary_cat_face: 🙀
slightly_frowning_face: 🙁
slightly_smiling_face: 🙂
upside-down_face: 🙃
face_with_rolling_eyes: 🙄
face_with_no_good_gesture: 🙅
face_with_ok_gesture: 🙆
person_bowing_deeply: 🙇
see-no-evil_monkey: 🙈
hear-no-evil_monkey: 🙉
speak-no-evil_monkey: 🙊
happy_person_raising_one_hand: 🙋
person_raising_both_hands_in_celebration: 🙌
person_frowning: 🙍
person_with_pouting_face: 🙎
person_with_folded_hands: 🙏
rocket: 🚀
helicopter: 🚁
steam_locomotive: 🚂
railway_car: 🚃
high-speed_train: 🚄
high-speed_train_with_bullet_nose: 🚅
train: 🚆
metro: 🚇
light_rail: 🚈
station: 🚉
tram: 🚊
tram_car: 🚋
bus: 🚌
oncoming_bus: 🚍
trolleybus: 🚎
bus_stop: 🚏
minibus: 🚐
ambulance: 🚑
fire_engine: 🚒
police_car: 🚓
oncoming_police_car: 🚔
taxi: 🚕
oncoming_taxi: 🚖
automobile: 🚗
oncoming_automobile: 🚘
recreational_vehicle: 🚙
delivery_truck: 🚚
articulated_lorry: 🚛
tractor: 🚜
monorail: 🚝
mountain_railway: 🚞
suspension_railway: 🚟
mountain_cableway: 🚠
aerial_tramway: 🚡
ship: 🚢
rowboat: 🚣
speedboat: 🚤
horizontal_traffic_light: 🚥
vertical_traffic_light: 🚦
construction_sign: 🚧
police_cars_revolving_light: 🚨
triangular_flag_on_post: 🚩
door: 🚪
no_entry_sign: 🚫
smoking_symbol: 🚬
no_smoking_symbol: 🚭
put_litter_in_its_place_symbol: 🚮
do_not_litter_symbol: 🚯
potable_water_symbol: 🚰
non-potable_water_symbol: 🚱
bicycle: 🚲
no_bicycles: 🚳
bicyclist: 🚴
mountain_bicyclist: 🚵
pedestrian: 🚶
no_pedestrians: 🚷
children_crossing: 🚸
mens_symbol: 🚹
womens_symbol: 🚺
restroom: 🚻
baby_symbol: 🚼
toilet: 🚽
water_closet: 🚾
shower: 🚿
bath: 🛀
bathtub: 🛁
passport_control: 🛂
customs: 🛃
baggage_claim: 🛄
left_luggage: 🛅
couch_and_lamp: 🛋
sleeping_accommodation: 🛌
shopping_bags: 🛍
bellhop_bell: 🛎
bed: 🛏
place_of_worship: 🛐
octagonal_sign: 🛑
shopping_trolley: 🛒
hammer_and_wrench: 🛠
shield: 🛡
oil_drum: 🛢
motorway: 🛣
railway_track: 🛤
motor_boat: 🛥
small_airplane: 🛩
airplane_departure: 🛫
airplane_arriving: 🛬
satellite: 🛰
passenger_ship: 🛳
scooter: 🛴
motor_scooter: 🛵
canoe: 🛶
zipper-mouth_face: 🤐
money-mouth_face: 🤑
face_with_thermometer: 🤒
nerd_face: 🤓
thinking_face: 🤔
face_with_head-bandage: 🤕
robot_face: 🤖
hugging_face: 🤗
sign_of_the_horns: 🤘
call_me_hand: 🤙
raised_back_of_hand: 🤚
left-facing_fist: 🤛
right-facing_fist: 🤜
handshake: 🤝
hand_with_index_and_middle_fingers_crossed: 🤞
face_with_cowboy_hat: 🤠
clown_face: 🤡
nauseated_face: 🤢
rolling_on_the_floor_laughing: 🤣
drooling_face: 🤤
lying_face: 🤥
face_palm: 🤦
sneezing_face: 🤧
pregnant_woman: 🤰
selfie: 🤳
prince: 🤴
man_in_tuxedo: 🤵
mother_christmas: 🤶
shrug: 🤷
person_doing_cartwheel: 🤸
juggling: 🤹
fencer: 🤺
wrestlers: 🤼
water_polo: 🤽
handball: 🤾
wilted_flower: 🥀
drum_with_drumsticks: 🥁
clinking_glasses: 🥂
tumbler_glass: 🥃
spoon: 🥄
goal_net: 🥅
first_place_medal: 🥇
second_place_medal: 🥈
third_place_medal: 🥉
boxing_glove: 🥊
martial_arts_uniform: 🥋
croissant: 🥐
avocado: 🥑
cucumber: 🥒
bacon: 🥓
potato: 🥔
carrot: 🥕
baguette_bread: 🥖
green_salad: 🥗
shallow_pan_of_food: 🥘
stuffed_flatbread: 🥙
egg: 🥚
glass_of_milk: 🥛
peanuts: 🥜
kiwifruit: 🥝
pancakes: 🥞
crab: 🦀
lion_face: 🦁
scorpion: 🦂
turkey: 🦃
unicorn_face: 🦄
eagle: 🦅
duck: 🦆
bat: 🦇
shark: 🦈
owl: 🦉
fox_face: 🦊
butterfly: 🦋
deer: 🦌
gorilla: 🦍
lizard: 🦎
rhinoceros: 🦏
shrimp: 🦐
squid: 🦑
cheese_wedge: 🧀

I also use this other one for a quick calculator prompt with Super + c:

#!/bin/sh

PREVIOUS_RESULT="="
while [[ 1 ]]; do
    CURRENT_INPUT=$(echo -e $PREVIOUS_RESULT | dmenu -i -p Calculate:)
    if [[ -z $CURRENT_INPUT ]]; then
        break
    fi
    if [[ -z $CURRENT_INPUT ]] || [[ $CURRENT_INPUT == "=" ]]; then
        echo -e $PREVIOUS_RESULT | sed -s "s/(ERROR)//" | tr -d "=\n\r"
        break
    fi
    CURRENT_RESULT=$(echo "scale=6;$CURRENT_INPUT" | bc 2>&1)
    if [[ $CURRENT_RESULT =~ "error" ]]; then
        PREVIOUS_RESULT="$PREVIOUS_RESULT\n(ERROR)"
    else
        PREVIOUS_RESULT="$CURRENT_RESULT\n="
    fi
done

Essential UNIX packages

Some packages necesary for a normal installation using my workflow, should be applicable for Linux, FreeBSD and macOS.

Development tools

Programming languages

Linux specific

Utilities

Network analysis

Web browsers

Xorg/Appearance

Other

Resources