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
- Stop a blocked SSH session with:
~.
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
- kitty: My current terminal of choice, it’s fast and has image support.
- git: version control software
- zsh: my shell of choice
- tmux: terminal multiplexer
- vim/neovim: my text editor of choice
- ripgrep: blazing fast file search
- fzf: improved fuzzy search in command line
- aerc/thunderbird: email
- nnn/broot/nautilus file management.
- hyperfine: benchmarks (optional)
- hexedit/binsider: hex file viewer TUI (optional)
- languagetool: grammar/syntax analysis
- valgrind: instrumentation/dynamic code analysis
- virtualbox/qemu/bhyve/virt-manager: virtualization
- pv (pipe viewer): monitor data progress through a pipeline
Programming languages
- c/c++ (gcc/clang/cmake/make/ninja/ctags/etc.)
- python/pip
- R
- rust
- golang
- haskell
- latex
- java/jdk/jrm/openjdk
- scheme (guile/chez/racket/chicken)
- mono
- nodejs/npm
Linux specific
- alsa
- pulseaudio/pavucontrol
Utilities
- sudo/doas: privilege scalation
- password-store: password manager
- nautilus: file manager
- nnn: file manager
- ranger: file manager
- htop: cpu/memory monitor
- gotop: cpu/memory monitor
- dropbox: cloud sync service
- skype: video calls
- zoom: video calls
- zathura/evince: pdf reader
- mendeley/zotero: pdf manager
- Mutt/Neomutt/aerc: TUI mail readers.
- newsboat/newsraft/radreader: rss newsreader
- obs: screen recorder/scene manager
- pandoc: text format converter
- rsync: copy/clone/sync utility
- samba: network shares
- sxiv/vimiv: image viewers
- sc-im: NCurses spreadsheet (Chokes on big files)
- visidata: search, summarize, merge and plot csv files
- buku: bookmark manager from the command line
- dunst: Lightweight notification daemon
- pipe-viewer: Search youtube from the command line. Can play the videos using mpv and yt-dlt
Network analysis
- wireshark
- nmap
Web browsers
- Chromium
- Firefox
- Qutebrowser
- Lynx
- w3m
Xorg/Appearance
- xorg: classic graphics server
- nitrogen: background image loader
- freetype2: font rendering engine
- lxrandr: easier resolution change
- lxappearance: easier gtk style change
- iosevka: monospace font
- droid-fonts-ttf: essential fonts
- google-fonts: essential fonts
- font-amsfonts: essential fonts
- sierra-gtk-themes, adapta-gtk-themes, numix-gtk-themes: gtk-themes
- dzen2: custom volume bar increase/decrease
Other
- epy: CLI eBook reader
- blender
- gimp
- krita
- inkscape
- calibre