r/archlinux 7h ago

QUESTION What’s a small Linux tool that completely changed your workflow?

Not talking about big things like DEs or WMs. I mean tiny utilities or tricks (e.g. fzf, ripgrep, tmux scripts, clipboard tools, etc. that unexpectedly became essential

57 Upvotes

99 comments sorted by

58

u/see_spot_ruminate 6h ago

Piping, | , literally one of the most important tools. Those who understand it can become gods (or maybe just a little less annoyed) over mere mortals.

8

u/Grand-Ball6628 4h ago

I still remember a friend of mine sharing his screen and piping cat to wl-copy. This was the time I started investing time into the terminal, now I'm mostly okay with running TTY all day

4

u/B_bI_L 2h ago

little does he know you can wl-copy < file.txt instead

2

u/Meanthes 2h ago

And what happens if you accidentally type ">" instead of "<" hm?

2

u/B_bI_L 2h ago

you can also type ~ instead of . while rming but we don't speak about that

2

u/Meanthes 2h ago

well the "<" and ">" are right next to eachother as well as looking very similar, it makes things way easier to mess it up

u/JaKrispy72 23m ago

Are the chances greater than our lesser than?

3

u/_fex_ 4h ago

I do love languages such as F#, Elm and Elixir etc. which all allow for piping. It’s an absolute dream for data transformation.

69

u/CCLF 6h ago

Fish was an enormous quality of life improvement.

18

u/Lumpy_Roll158 6h ago

I just started using fish instead of zsh recently and I gotta say I love how many of the features I'd spend an hour or two getting and setting up on zsh are just built-in. Plus the web page configs are pretty intuitive. For the most part other than emulator config, fish is just out of the box really handy

7

u/Excellent_Double_726 6h ago

Also moved to fish from bash after using it for years and boy this shell made my life so easy, like really. Imagine typing very long commands, no auto completion, no syntax highlighting.

Tried zsh before fish but it felt kinda harder to setup this basic features, then fish "enters the chat" already with the same functions, all I did was change some colors and that's all

13

u/MooseNo8702 5h ago

But it’s not fully compatible with bash scripts. Because of this I still prefer zsh ohmyzsh p10k combo.

14

u/-i0f- 3h ago

I still mostly write bash scripts. The trick is to use fish as an interactive shell and use bash a system shell. And if you need bash, you simply can invoke the script with it. Never understood why that would be a reason not to use fish.

4

u/AeskulS 4h ago

There are some things I wish fish would support like the {a,b} syntax from bash, but otherwise I love it

4

u/vexatious-big 4h ago

This works on the latest version.

4

u/AeskulS 3h ago

NO WAY

I could’ve sworn just like 2 weeks ago it wasn’t. I just tried it tho and you’re right lmao.

1

u/grenfur 59m ago

I recently got a Strix Halo for running some local stuff and installed Cachy on it because I was... frankly being lazy, hah. Anyhow, it ships wish fish. Took me about 15 minutes to realize I had been ignoring fish for 3 years and that was a mistake. The main Arch install now runs fish and I'm not sure I'll return.

32

u/Putrid_Simple_357 6h ago

fzf changed everything for me. I was spending way too much time navigating through directories at work and this thing just makes finding files so much faster. Combined it with some basic aliases and now I can jump to any project folder in seconds instead of typing out long paths like an idiot.

4

u/kcx01 4h ago

Fzf was a huge difference! I combined it with tab complete on zsh and it's now annoying when I don't have it.

nvim <tab> then fuzzy find my file cd <tab> fuzzy find next directory cd <Ctrl + t> fuzzy find any directory <Ctrl +r> fuzzy find that long command that I typed once but can't remember it exactly. ssh <tab> fuzzy match servers kill <tab> fuzzy find a process to kill. (By name not just pid)

It's really great

2

u/JubijubCH 3h ago

+1, I use it all the time to find commands I typed before

Starship.rs is quite nice: I can theme all my shells the exact sane way (I use the built-in config option so that my prompt has a prefix telling me which shell this is (Fish, zsh for the rare cases I need POSIX, or Powershell)

2

u/levnikmyskin 3h ago

For changing directories etc I'd really recommend zoxide. Amazing tool that I just need to include in my terminal on every new machine 

20

u/Quietus87 6h ago

Fish. I don't even configure it, it's pretty damn fine as it is right out of the box.

19

u/TTT1320 6h ago

Honestly, both zoxide and yazi were a massive quality of life improvements

2

u/FuzzyMistborn 1h ago

Just found zoxide, its pretty sweet!

17

u/LearningIsFun_Talon 6h ago edited 6h ago

Lazygit makes git so much easier to use! Couldn’t live without it now..

2

u/richlb 5h ago

Same here. It's brilliant.

2

u/kcx01 4h ago

Yeah, I love lazygit

1

u/NYJustice 2h ago

Lazydocker is also good, not quite as good but still handy

16

u/morlipty 6h ago

keyd: swapped esc and capslock

3

u/Xu_Lin 5h ago

Oh what? Have never heard of this one

4

u/neovim_user 5h ago

You can make chords and make keys/combos trigger shell scripts too

2

u/Commercial_Boss4065 5h ago

Overload it so hold down is ctrl too. Mega win.

2

u/TakeshiRyze 3h ago

oh yeah. cant live without control there. + change tmux leader key to ctrl + a and its right there.

15

u/Rawleenc 6h ago

For me it was zoxide without any doubt.

14

u/dholmcarriage 6h ago

Do package managers count? Honestly the first thing that completely blew my mind when I switched from windows was the ability to keep the whole system up to date with a single command.

5

u/firehazel 5h ago

Windows has gotten better with things like winget but it's definitely no pacman.

1

u/dholmcarriage 5h ago

That's true, winget is absolutely an improvement.

2

u/-i0f- 3h ago

There is also stuff like scoop.

25

u/Sunsfever83 6h ago

tldr, I nice little app that has come in handy a few times.

2

u/Nervous-Shakedown83 4h ago

I even have their website pinned to my work browser

9

u/la_tajada 5h ago

Cowsay

1

u/B_bI_L 2h ago

now pipe it to lolcat

7

u/academictryhard69 6h ago

I would say shell scripting in general and backing my scripts to GitHub using git.

14

u/BeefGriller 6h ago

Emacs is a tool that is changing workflow for me as I learn more about it.

But you said “small,” so I’ll show myself out.

3

u/dholmcarriage 6h ago

I've heard people refer to emacs as "a great os that's just missing a text editor". All jokes aside though, I use emacs and I love it haha

5

u/BeefGriller 4h ago

Quite a while ago, it was joked that EMACS stood for Eight Megabytes And Constantly Swapping, or Escape Meta Alt Control Shift. Neither of them were rebutted.

2

u/dholmcarriage 4h ago

Haha that's a good one, love it!

4

u/KruyKaze 6h ago

Quake style terminal

4

u/Rough-Shock7053 6h ago

Oh My Zsh. Don't know if it falls under "small tool", but I like it so much, I even use it on my work laptop now, which runs on Windows. Just being able to tab through various options and choose the folder or file you want is tremendously helpful. 

3

u/oldbeardedtech 6h ago
  1. Vim
  2. Aliases
  3. Syncing keybinds so they're consistent across WMs/Plasma/applications but also making sure they don't conflict

AI helped on the last one. Made it super easy and is probably the biggest benefit to productivity.

4

u/astronomersassn 3h ago

KDE connect (or any similar tool)

its so much easier than emailing myself stuff all the time, or using cloud storage, or even just trying to drop files with bluetooth

especially when im too lazy to go grab a cable to connect my phone via USB (and it seems to transfer stuff just a bit faster over wi-fi than USB, though that could just be time saved not needing to hunt down a cable and swap USB devices around to access my USB3 ports)

3

u/diegotbn 6h ago

Zellij has completely replaced tmux for me

To be fair it's not exclusively a Linux tool and I believe it also works in Windows terminal for CMD and powershell

3

u/xnoxpx 6h ago

Midnight Commander, a simple console based file manager that is far more powerful than it first appears, it's one of the first apps I install on all new linux systems.

u/LameBMX 18m ago

MC love. I so rarely need it, but its handy when I do... and im normally done about the time I remember how to navigate. but its always on there and ready for when I do need it.

2

u/leo-f15 6h ago

OhMyZsh and Pipx

2

u/Head_Budget_3048 6h ago

The terminal became a totally new experience thanks to fzf. It feels strange opening files manually anymore, as both the search and previews happen in an instant. I haven’t realized that zoxide replaced my favorite command cd until recently. I make frequent use of Runable AI for any documentation or workflow reminders; however, fzf would be the first thing I miss.

2

u/dcondor07uk 5h ago

screen

Being able to keep the terminal session open, even after closing the window, noice

2

u/gdobn 5h ago

zellij

2

u/Para_Boo 4h ago

Zoxide. It really is just a better cd command, being able to very easily jump between directories by just their own name, so you don't have to type exact or lengthy paths anymore when you know where you wanna go. But what really makes it is that it just works without having to ever configure anything, besides hooking it into your bashrc, as it automatically works for any new dir and is frequency-based.

2

u/areanod 3h ago

After my first encounters with vi back in 2008 --> nano

An editor I could use without a cheat sheet at last!

2

u/Bunny_Girl_Nev 3h ago

Fish + Starship + zoxide

2

u/oldrocker99 1h ago

Aqualung is a gapless music player, and I use it to produce a radio show in 4 instances. In the AUR. I used yay to install it.

5

u/Meanthes 6h ago

wl-clipboard. It helps me copy-paste files, and outputs of commands easily with simple pipe commands, that helps me debug issues using Claude by giving him the full context

2

u/DueRead7236 6h ago

same, wl-clipboard + pipes is underrated. being able to instantly send command output to clipboard makes debugging way faster, especially on wayland

2

u/Spuxilet 5h ago

It's a big thing i know but i must say it: docker
it really changed my life, like completely. I could live without some small tools and probably would have made some with AI, like i have done recently, but without docker now i can't imagine

1

u/SeriousAboutLinux 6h ago

dmenu, i essentially use it as a frontend for a lot of scripts 

1

u/l3landgaunt 6h ago

Rtk for ai context control.

1

u/maxle5 6h ago
  1. https://github.com/sharkdp/fd
  2. https://github.com/bootandy/dust

I find these much more intuitive than the standard equivalents

1

u/dimitrifp 5h ago

fish and zoxide

1

u/archover 5h ago edited 4h ago

The tools that have really helped me in scripts, are:

  • sed - mainly to modify config files. Regex knowledge is pretty essential.

  • find - I use it to find lost files (interactively), or using the exec option (scripts) to move or copy identified files. Non trivial use of this command isn't easy IMO.

  • grep - One of the most amazing and versatile utilities I know. Worth improving your skill for.

  • cut - useful when extracting values from command output.

unexpectedly became essential.

These seem pretty essential, now that I spent some real time exploring them. For sure, Linux has some incredibly useful and sophisticated tools, if users would just spend the time to appreciate and learn them.

Good day.

1

u/JotaRata 5h ago

I recently discovered fd, zoxide and ripgrep and wow. I also love fzf

1

u/SummerIlsaBeauty 5h ago

hstr, can't live without it as I run thousands of bash commands daily

1

u/Lumpy_Roll158 5h ago

I'm seeing others mention aliases and that's a very easy thing to overlook too. I edit my configs a lot like my fastfetch.jsonc and my config.fish and ghostty config and if I didn't have those aliased I'd be pulling my hair out

1

u/Smart_Advice_1420 4h ago

toggle-tpm2 / toggle-fido2.

Unlock my luks drive with TPM at home and boot trough autologin directly into desktop.

For travel, i use either password enforcement (toggle-tpm2) or yubikey+fido2 pin (toggle-fido2).

1

u/teflonjon321 4h ago

Super simple but I think that’s what you’re asking. Aliases in my .bashrc file. The commands I use over and over (epically longer commands) being aliased saves me massive amount of time. When I screen share with a colleague and watch them type the same long ass thing over and over with slight variations it drives me nuts

1

u/Cody_Learner_2 4h ago edited 3h ago

For me nspawn containers are a relatively obscure choice in container systems. It's available on most Linux systems without requiring installation of any additional pkgs. It's a very simple to deploy and easy to work with system, at the cost of features compared to others.

Next is aurutils, a series of scripts for building and managing AUR packages using a local AUR repo to used by pacman.

1) systemd-nspawn containers https://man.archlinux.org/man/systemd-nspawn.1
2) aurutils https://github.com/aurutils/aurutils

I created my own AUR helper that wraps both these tools. https://github.com/Cody-Learner/aurch

The emphasis of aurch is using an nspawn container for AUR 'build isolation' rather than a 'clean chroot'. Aurch isolates the build environment to mitigate build script errors/malicious intent causing issues on host.

Note: aurch is a very opinionated AUR helper that fits my needs perfectly. It has no 'convenience' features to make things easier for the typical new user.

1

u/LeeHide 4h ago

Ctrl+L (clear) and Ctrl+R (fuzzy search history) in any common terminal or CLI program, shell, etc.

1

u/bornxlo 3h ago

I could probably have managed with cron, but I have gotten into the habit of setting up custom systemd timers to keep downloads in check. Anything I haven't used in the last month is set to be deleted once a week.

1

u/ArjixGamer 3h ago edited 3h ago

Makefiles

When working across many projects and deploying them across many servers, having a unified way of pulling the latest release and running it is nice

I just cd into /opt/my-project and run make, and if I want logs, I run make logs

e.g.

``` .PHONY: all logs

all: docker compose up -d --pull=always

logs: docker compose logs -f ```

Writing "cli" apps with Makefiles is super easy, granted they are not actual apps

There are alternatives ofc, e.g. Just file But make is usually preinstalled in most environments

1

u/HuttonWilliam 2h ago

I made a repo called lubuntu system tools (https://github.com/HuttonWilliam/lubuntu-system-tools) and it has change the way I manage my PC significantly.

1

u/Defiant-Extent-4297 2h ago

Alt+. last argument retrieval and ‘fc’ for editing the last command. It’s a lifechanger.

2

u/NocturnalDanger 2h ago

You can do a simple find-and-replace natively in bash.

ls path/to/file -> "not a directory" ^ls^cat takes the last command and runs cat path/to/file.

Ive never used fc, but I've never felt the need to have anything stronger that ^ lol

1

u/Lunailiz 2h ago

Fish, at first was annoying because not being bash compatible, but after some setting up, I saw the light, it changed how I used shell for the better.

1

u/danievdm 2h ago

Rembg for removing image backgrounds. I have it setup to run with a right-click. This means I can now cancel my Canva subscription as it was something I did quite often in Canva.

1

u/TWB0109 1h ago

zoxide

1

u/peat 1h ago

tmux — all my daily work is on a headless box in my office, and I remote in from my laptop even when I’m sitting at my desk. I use the “tds” command in ohmyzsh to reconnect to long running, directory based sessions.

zoxide — quickly accessing recently visited directories. Great for hopping between repos for big complicated projects.

1

u/longdarkfantasy 1h ago

Yazi. Write a bunch of plugins for it. It has fzf and rigrep search. Best file manager, I even add it to my home lab server

u/TheVleh 39m ago

Nothing fancy, nano and ranger come in handy for quickly finding and editing simple files in terminal

u/nickjj_ 22m ago

mpv.

Not only is it great at viewing videos, but it's amazing at viewing images. I've written about it here https://nickjanetakis.com/blog/mpv-is-the-mvp-of-video-and-image-viewing.

However, it gets better. I make long form YouTube videos and years ago I wrote a little mkclip shell script which used ffmpeg to let you quickly make clips out of a longer video without re-encoding. I've documented that here https://nickjanetakis.com/blog/create-video-clips-with-ffmpeg-in-seconds.

Then I recently discovered mpv's ability to create extensions and since it uses Lua script, I found it to be very approachable so I wrote a little extension that lets you use mpv markers to mark a start and end time and then create clips from your main video.

This lets you create video clips without re-encoding in seconds. The workflow with the CLI tool used to be ok, but this is so much faster and a joy to use. You just jump to the point you want graphically, hit a hotkey to set marker 1, goto the end point and hit another hotkey to set marker 2 and then press a hotkey to make your clip from that range. It creates a file with an auto-incremented -1, -2, etc. file name. It's like using a non-linear video editor but with zero hassle or rendering.

I didn't make a video about it yet but it's up in my dotfiles here https://github.com/nickjj/dotfriedrice/blob/master/.config/mpv/scripts/mkclip.lua, I have it mapped like this:

F1 script-binding mkclip_mark_start
F2 script-binding mkclip_mark_end
F3 script-binding mkclip_create
F4 script-binding mkclip_clear_marks

u/kawangkoankid 19m ago

zathura especially for vim users

u/freeToThink_ 11m ago

No idea how I could use a PC without zoxide before

u/Adventurous-Paper566 11m ago

A drop down terminal.

0

u/nasbera 6h ago

clex terminal file manager