And maybe a few others that I can't think of right now.
Awesome list! Thanks for providing links.
I'd drop keepassxc and pick up GNU password store or gopass. Pgp+git and a nice cli to wrap them onto an encrypted password store that's pretty easy to move around these days.
GNU password store
The tool, unless something has changed in the meantime, has one major drawback for me. The filename of the encrypted files is displayed in plain text. However, I don't want people to be able to see, for example, which Internet sites I have an account with. Sure you can name the files otherwise. But how should I remember for example that the file dafderewrfsfds.gpg contains the access data for Mastodon?
In addition, I miss with pass some functions. As far as I know, you can't save file attachments. Or define when a password expires. And so on. Pass is therefore too KISS for me.
Pgp+git and a nice cli to wrap them onto an encrypted password store that’s pretty easy to move around these days.
A matter of opinion, I would say. I prefer my Keepass file which I can access via my Nextcloud instance or which is stored on a USB stick on my keychain.
By the way, the file is secured with a Yubikey in addition to a Diceware password. So saving it in the so-called cloud is no problem. Just as a note, in case someone reading my post wants to make smart remarks about the cloud.
micro text editor is very good. powerful and simple.
For me, this is the main reason why I use micro. And because I don't like the handling of vim. Funnily enough, I've been playing around with Helix for a while now and I really like the editor, even though it's a modal editor, just like vim. Maybe because of the selection → action model. The question is, do I like Helix better than micro? I still have to answer that question for myself at some point.
I see a lot of the good ones are already mentioned. But I can't use a linux system for more than an hour without 'thefuck' installed
fnm (nvm alternative, since nvm starts too slow for me)
yt-dlp
bat (batcat)
the usual base-devel / build-essential
docker (What, you never wanted to use a optimized version of cmatrix that uses only 512KiB of ram while barely scratching your CPU?)
foot
brave
(on docker) btop, cmatrix, lynx
What is this optimized cmatrix you speak of? The normal one slows my desktop to a crawl when it runs.
Basically, a "handcrafted" cmatrix with compilation flags focused on optimization and the musl library (which is "technically better" than glib, a standard library on most distros).
Do feel free to try it out however, its only 139KiB -- click here.
tl;dr guide on how to get it running
1- Install docker (docker on most distros -- docker.io on ubuntu and friends)
2- sudo usermod -aG docker (addyourusernamehere)
3- reboot
4- run it with "docker run -it --rm --log-driver none --net none --read-only defnotgustavom/cmatrix:marchedition"
One that I didn't see on here that I've added to my list
tldr
simplified man pages with common example commands.-
If on desktop
distro-box
yakuake
As boring as it is, gcc.
I feel that.
I still favor gcc over clang
I switched to clang a long time ago, when gcc’s support for C++11 was not that good.
Why do you personally prefer gcc?
I develop mostly in C and largely for creating shellcode.
I have run into very weird issues with clang relocating code and data segments even when using a custom linker script
zsh+ohmyzsh
tilix
neovim
fzf
exa
pv
htop+iotop+nethogs
iperf3
nc
socat
nmap
python3
ansible
lolcat
If you like exa and fzf, you'll also like fd (or sometimes fd-find).
Woah, how I missed this? Thanks! Seems very comfy and way faster, btw on my deb machines it's fdfind
exa
ripgrep
tree
difftastic
fzf
git
neovim
zsh
starship
direnv
bat
clipcopy to pipe output of commands into the system clipboard
cat foo.txt | clipcopy
Til. Thanks for sharing this
Desktop:
distrobox
brave
flatpak
neovim
nix
fish
tmux
neovim
fzf
ripgrep
Firefox
git
lazygit
wezterm
zsh
Tmux
NeoVim
Git
FZF
Fish
ssh
Lots of others, but these are the day-to-day
+1 for fish shell. The lack of POSIX compliance really doesn't matter at all day-to-day, but all the qol features that the shell has absolutely do matter and they are so worth it.
And I forgot Python. As a Data Engineer. Whoops!
Every time I setup a new system, I always install these:
vim
zsh
git
rsync
tmux
mosh
btop
autossh
mc
direnv
asdf-vm
If the system is a desktop/laptop for personal use, then I'll install these too:
virt-manager
vscode
firefox
filezilla
mpv
yt-dlp
kdeconnect
onlyoffice
I would swap only with Libreoffice
This is just a matter of personal preference, but I can't stand libreoffice UI. It has more features but I don't open office documents much, mostly just some basic spreadsheets, so I can get away with using a document editor with less feature but easier to the eye.
Damn. Even the website documenting their design is ugly as sin.
To add to all great comments here I have one that I’ve used for ages and not seen mentioned here: lftp
It supports many protocols for ftp like over ssh and allows for shaky connections with resume and back in the days when this was more common I used to just run it in the background to download huge files that took days to download and it would gracefully just reconnect/resume/retry until done.
A few from the top of my head:
git
neovim
nix (package manager)
mpv + yt-dlp (stream music from yt with --no-video argument)
unbound
caddy (quickly spin up local web servers with https)
Edit: almost forgot, I've been using zsh + znap package manager and loving it.
I just tried out mpv and found it weird that it doesn't offer a menu for settings like vlc does. Is that the same for you too or do I just not know how to use it?
mpv is very barebones. Which is why I love it. You're supposed to configure it through its configuration file, and mainly use it with keyboard shortcuts.
What are the keyboard shortcuts for it? It never occurred to me that it had any
You can find the default ones here, but they're fully customizable.
There are wrappers for mpv that provide a more "full" GUI including settings, but mpv itself is more hotkey and config focused. You can do a lot of cool stuff using profiles and scripts. I get it if having docs open to configure a media player isn't your cup of tea, tho.
Some of the wrapper built on mpv are mpv.net, iina, and gnome-mpv.
Adding to that:
neovim for workstations
curl
wget
zsh
Edit:
So essentially for me, I forgot to include it: vim, my beloved, always and for ever
Def curl and wget!
Zsh is great but I ended up falling back to bash for simplicity.
Im not really into the bash simplicity, but it's proven and stable.
I just have a git repo with configs on my git Server, I make changes regularly and roll them out with a quick bash script.
I always made sure my laptops had tlp installed. Now it seems openSUSE has cpu power profiles daemon or something by default, which it says conflicts with tlp when I tried to install it. So, I'm giving that a shot.
tmux
screen
autossh
mosh
rsync
In order of use:
Firefox
Nvim (with a slightly modified kickstart.nvim)
SSH
Minicom
Python3
Git
CopyQ
Curl
Wget
Tmux
vim
git
rust (via rustup)
codium
pycharm ce
nu (shell)
starship (shell prompt)
firefox
sway
alacritty
python
iproute (or whatever package has ip in distro)
keepassxc
gcc/g++
make
podman (or docker)
ardour
kdenlive
vscode
kdenlive
gnome
xmrig
fish
element
telegram
I don't see enough of these here:
fzf
z (or zoxide)
Check them out
Stuff that I insist on regardless of platform (that is, I install these even onto Windows systems if I'm forced to use them):
Pale Moon (web browser)
Claws Mail
GIMP
vbindiff (command-line hex editor + diff utility for binary files)
mercurial
perl
Stuff that I require only on Linux systems for desktop use:
Pan (yes, really, I still use a Usenet newsreader on a daily basis)
qemu
conky
Aqualung (music player—I like odd software)
Inkscape
Scribus
PySol ;)
rdesktop (less a favourite than a regrettable necessity)
Is there a reason you use mercurial (like work) or are you using it, because you like it better than git or fossil?
Fossil I've never tried, but I utterly hate git. Nothing about how it works makes sense to me. Mercurial is, in my opinion, better-designed and easier to understand for my rather simple use cases. (I should note that I graduated from university around the time svn was replacing csv, so I was coding before there was such a thing as distributed version control.)
Lets make a list!
zsh
tmux
htop
ranger
helix (if i can get it)
fzf
fd-find
python-pip
The first 3 things I always add after a fresh install:
aptitude emacs (-nox for servers) tree
Then it depends what the machine is for.
Since I'm not sure where to ask what is probably a basic question, what's a Linux package?
It's just a fancy way of saying program. So Linux programs.
Correct, the reason they are called packages, is that the package can contain other resources besides usable programs, like libraries used by other programs.
It's a signed archive of deployable files along with meta-data. Usually a cpio archive (which is similar to a tarball) with that extra signature wrapper and meta-data (which, itself, should be a list of files and checksums).
A proper package can validate a project's installation, either from the local database or from remote resources, at any time, which gives positive assurance that what is installed is what should be installed.
As well, proper package info is exported by SNMP to be consolidated centrally and validate what is vs what should be installed at the group level.
TL;DR? Like a tarball with tracking info, signatures, checksums, and top-to-bottom validation. If it's a good package, anyway.
So it's basically like installing a program in windows but, idk how to phrase it, more through and less prone to errors during installation?
You're really close, yeah .
But because like every layer is checksummed both in delivery AND when it's installed, so you can easily validate a delivered file, and it's all signed with signatures you can easily check, you can at least be assured that
what you installed is what that package delivered
which is what the authors wanted
and the package probably hasn't been tampered with
even weeks after install
the chance of problems should be reduced.
Bonus1: with a proper repo config, you can check for updates so fast. It's like the chocolatey windows repo but more formalized and usually vendor-maintained.
Bonus2: bad upgrade? Enterprise packages on Linux (long description; trust me) can be reverse-installed over what's there so you can back-revise or downgrade with almost no pain. It's a good oh-no fix. At every point you can still validate that what is there should be there, according to hard signatures at every stage.
Bonus3: grabbing os version 6.1 and upgrading to 6.5 OR just installing 6.5 fresh gives the same final content - files and services - when you're done. (almost entirely) No cruft, since package installs (because of the locking below) just install over themselves in a way Linux people just accept and windows people may freak over.
Linux bonus: Linux locks file differently; again, long description, so trust me or look it up. You can upgrade many files and services without stopping them, and then bounce a service or a host, so your patch-and-bounce process is fast, it happens after the upgrades, and is like 2 min or with systemd 3min.
Ultimately
use packages for wayyyy easier, consistent, reliable, tested, quasi-roll-back-able updates that you can validate all the way down.
and still that SNMP connection to check content remotely. It's so great.
yay
vim
bashtop
cmus
ghidra
jq (pretty print Json)
screen
hexedit
python3 with pwntools
GCC, g++, make & libc6-dev
gdb with pwndbg
alacritty
Firefox, only office and spotify. That's all I need.
Have you considered installing Arch?
alacritty
neovim
tmux
vifm - terminal file manager with vi keybindings.
zathura - pdf reader with vi keybindings.
inxi - prints information about your hardware.
tldr - cheat sheet for common commands
qalculate - the most powerful calculator I've seen. There are qt, gtk and cli versions of it.
moreutils - collection of tools. My favourite is vidir, it opens directory structure in your terminal text editor, so that you can rename multiple files easily.
tmux
emacs
okular
pipx
calibre
lutris
hakuneko
yt-dlp
git
McFly, can't live without it anymore.
asciiquarium
cowsay
tty-clock
mc
nano
btop
htop
vscode
vivaldi
mariadb
apache
php
python3
Must have p7zip and p7zip-gui
I think xarchiver are better tho? also there are native 7zz from Igor now
ranger
openssl
aria2
fzf
nitrogen
w3m
tmux
kak / vim
ssh
gcc
python3
curl
nc
'taint much, but I get by
Suicide linux
yt-dlp
alacritty
zsh
vim
fzf
git + lazygit
neovim
ranger
cargo
btm
starship
tmux
fish
In addition to what was already mentioned: reptyr
socat
ngrep
vim
pv
htop
jq
Generally, everything else I need is there by default depending on the distro.
Home workstation-wise.. maybe:
meld
kdenlive
openscad
Qtvlm, zygrib and OpenCPN
gimp extras
golang
Inkscape
Wireshark
audacity
Not to duplicate some of the entries, I will keep it short
LF file manager (seen ranger mentioned but no lf)
Ytfzf for finding yt videos and playing them in MPV without the need of web browser
OpenDoas
Emacs
Git
Kpat.
neovim, zsh, firefox, vlc, mpv, zsh plugins for autocomplete, ripgrep, zerotier vpn,fzf, pip3, htop, i am not sure what else
None of those are must-haves...
Shouldn't you have posted this to /c/archlinux or other meme-distro communities?
Aren't you enjoying everyone listing their favourite text editors and the fact they use ssh?
Awesome list! Thanks for providing links.
I'd drop keepassxc and pick up GNU password store or gopass. Pgp+git and a nice cli to wrap them onto an encrypted password store that's pretty easy to move around these days.
The tool, unless something has changed in the meantime, has one major drawback for me. The filename of the encrypted files is displayed in plain text. However, I don't want people to be able to see, for example, which Internet sites I have an account with. Sure you can name the files otherwise. But how should I remember for example that the file dafderewrfsfds.gpg contains the access data for Mastodon?
In addition, I miss with pass some functions. As far as I know, you can't save file attachments. Or define when a password expires. And so on. Pass is therefore too KISS for me.
A matter of opinion, I would say. I prefer my Keepass file which I can access via my Nextcloud instance or which is stored on a USB stick on my keychain.
By the way, the file is secured with a Yubikey in addition to a Diceware password. So saving it in the so-called cloud is no problem. Just as a note, in case someone reading my post wants to make smart remarks about the cloud.
micro text editor is very good. powerful and simple.
For me, this is the main reason why I use micro. And because I don't like the handling of vim. Funnily enough, I've been playing around with Helix for a while now and I really like the editor, even though it's a modal editor, just like vim. Maybe because of the selection → action model. The question is, do I like Helix better than micro? I still have to answer that question for myself at some point.
I see a lot of the good ones are already mentioned. But I can't use a linux system for more than an hour without 'thefuck' installed
Crucial indeed
Oh wow. Neat!
https://github.com/nvbn/thefuck
WTF is this?
Yes.
nice one
Well I'm installing this as soon as I get home.
Depends on what the machine is for.
For everything:
For everything except firewalls:
For a desktop:
• git
• vim
• openssh
• openssl
• fail2ban
• curl
• byobu
• webmin (to give limited access to non-Linux help desk technicians)
Screen, vim, python
Edit:
Try podman it's lighter than docker. 😂
And runs in unprivileged mode (nonroot) quite nicely.
I will! I once already used it for cross compiling and it seemed really nice ^^
Am I really the first.
Nano!!!!!!
Micro!!!!!!
Comes preinstalled anyways, but vim is the way for me.
Not always preinstalled and in those times f$&k haha vim search engine arghhhh!!!!!!!
Try vimv
Looks cool, I'm getting that.
By pure chance, do you know the name of the tool that lets you pipe to vim, then from vim to the next command?
No, but that sounds amazing.
Found it. It's
vipe
frommoreutils
. Seemingly it just uses your $EDITORThanks for letting me know. I'll definitely check it out. I can already think of a couple uses.
linux-headers
What is this optimized cmatrix you speak of? The normal one slows my desktop to a crawl when it runs.
Basically, a "handcrafted" cmatrix with compilation flags focused on optimization and the musl library (which is "technically better" than glib, a standard library on most distros).
Do feel free to try it out however, its only 139KiB -- click here.
tl;dr guide on how to get it running
1- Install docker (docker on most distros -- docker.io on ubuntu and friends)
2- sudo usermod -aG docker (addyourusernamehere)
3- reboot
4- run it with "docker run -it --rm --log-driver none --net none --read-only defnotgustavom/cmatrix:marchedition"
One that I didn't see on here that I've added to my list
If on desktop
As boring as it is, gcc.
I feel that.
I still favor gcc over clang
I switched to clang a long time ago, when gcc’s support for C++11 was not that good.
Why do you personally prefer gcc?
I develop mostly in C and largely for creating shellcode.
I have run into very weird issues with clang relocating code and data segments even when using a custom linker script
If you like exa and fzf, you'll also like
fd
(or sometimesfd-find
).Woah, how I missed this? Thanks! Seems very comfy and way faster, btw on my deb machines it's fdfind
clipcopy to pipe output of commands into the system clipboard
cat foo.txt | clipcopy
Til. Thanks for sharing this
Desktop:
+1 for fish shell. The lack of POSIX compliance really doesn't matter at all day-to-day, but all the qol features that the shell has absolutely do matter and they are so worth it.
And I forgot Python. As a Data Engineer. Whoops!
Every time I setup a new system, I always install these:
vim
zsh
git
rsync
tmux
mosh
btop
autossh
mc
direnv
asdf-vm
If the system is a desktop/laptop for personal use, then I'll install these too:
I would swap only with Libreoffice
This is just a matter of personal preference, but I can't stand libreoffice UI. It has more features but I don't open office documents much, mostly just some basic spreadsheets, so I can get away with using a document editor with less feature but easier to the eye.
there are multiple user interface option in libre office, https://books.libreoffice.org/en/WG72/WG7221-UserInterfaceVariants.html
Damn. Even the website documenting their design is ugly as sin.
To add to all great comments here I have one that I’ve used for ages and not seen mentioned here: lftp
It supports many protocols for ftp like over ssh and allows for shaky connections with resume and back in the days when this was more common I used to just run it in the background to download huge files that took days to download and it would gracefully just reconnect/resume/retry until done.
A few from the top of my head:
--no-video
argument)Edit: almost forgot, I've been using zsh + znap package manager and loving it.
I just tried out mpv and found it weird that it doesn't offer a menu for settings like vlc does. Is that the same for you too or do I just not know how to use it?
mpv is very barebones. Which is why I love it. You're supposed to configure it through its configuration file, and mainly use it with keyboard shortcuts.
What are the keyboard shortcuts for it? It never occurred to me that it had any
You can find the default ones here, but they're fully customizable.
There are wrappers for mpv that provide a more "full" GUI including settings, but mpv itself is more hotkey and config focused. You can do a lot of cool stuff using profiles and scripts. I get it if having docs open to configure a media player isn't your cup of tea, tho.
Some of the wrapper built on mpv are mpv.net, iina, and gnome-mpv.
Adding to that:
Edit: So essentially for me, I forgot to include it: vim, my beloved, always and for ever
Def curl and wget!
Zsh is great but I ended up falling back to bash for simplicity.
Im not really into the bash simplicity, but it's proven and stable.
I just have a git repo with configs on my git Server, I make changes regularly and roll them out with a quick bash script.
I always made sure my laptops had tlp installed. Now it seems openSUSE has cpu power profiles daemon or something by default, which it says conflicts with tlp when I tried to install it. So, I'm giving that a shot.
In order of use:
I don't see enough of these here:
fzf
z (or zoxide)
Check them out
Stuff that I insist on regardless of platform (that is, I install these even onto Windows systems if I'm forced to use them):
Pale Moon (web browser)
Claws Mail
GIMP
vbindiff (command-line hex editor + diff utility for binary files)
mercurial
perl
Stuff that I require only on Linux systems for desktop use:
Is there a reason you use mercurial (like work) or are you using it, because you like it better than git or fossil?
Fossil I've never tried, but I utterly hate git. Nothing about how it works makes sense to me. Mercurial is, in my opinion, better-designed and easier to understand for my rather simple use cases. (I should note that I graduated from university around the time svn was replacing csv, so I was coding before there was such a thing as distributed version control.)
Lets make a list!
The first 3 things I always add after a fresh install: aptitude emacs (-nox for servers) tree
Then it depends what the machine is for.
Since I'm not sure where to ask what is probably a basic question, what's a Linux package?
It's just a fancy way of saying program. So Linux programs.
Correct, the reason they are called packages, is that the package can contain other resources besides usable programs, like libraries used by other programs.
It's a signed archive of deployable files along with meta-data. Usually a cpio archive (which is similar to a tarball) with that extra signature wrapper and meta-data (which, itself, should be a list of files and checksums).
A proper package can validate a project's installation, either from the local database or from remote resources, at any time, which gives positive assurance that what is installed is what should be installed.
As well, proper package info is exported by SNMP to be consolidated centrally and validate what is vs what should be installed at the group level.
TL;DR? Like a tarball with tracking info, signatures, checksums, and top-to-bottom validation. If it's a good package, anyway.
So it's basically like installing a program in windows but, idk how to phrase it, more through and less prone to errors during installation?
You're really close, yeah .
But because like every layer is checksummed both in delivery AND when it's installed, so you can easily validate a delivered file, and it's all signed with signatures you can easily check, you can at least be assured that
the chance of problems should be reduced.
Bonus1: with a proper repo config, you can check for updates so fast. It's like the chocolatey windows repo but more formalized and usually vendor-maintained.
Bonus2: bad upgrade? Enterprise packages on Linux (long description; trust me) can be reverse-installed over what's there so you can back-revise or downgrade with almost no pain. It's a good oh-no fix. At every point you can still validate that what is there should be there, according to hard signatures at every stage.
Bonus3: grabbing os version 6.1 and upgrading to 6.5 OR just installing 6.5 fresh gives the same final content - files and services - when you're done. (almost entirely) No cruft, since package installs (because of the locking below) just install over themselves in a way Linux people just accept and windows people may freak over.
Linux bonus: Linux locks file differently; again, long description, so trust me or look it up. You can upgrade many files and services without stopping them, and then bounce a service or a host, so your patch-and-bounce process is fast, it happens after the upgrades, and is like 2 min or with systemd 3min.
Ultimately
yay
Firefox, only office and spotify. That's all I need.
Have you considered installing Arch?
McFly, can't live without it anymore.
Must have p7zip and p7zip-gui
I think xarchiver are better tho? also there are native 7zz from Igor now
tmux kak / vim ssh gcc python3 curl nc
'taint much, but I get by
Suicide linux
yt-dlp alacritty zsh vim
In addition to what was already mentioned: reptyr
Generally, everything else I need is there by default depending on the distro.
Home workstation-wise.. maybe:
Not to duplicate some of the entries, I will keep it short
LF file manager (seen ranger mentioned but no lf)
Ytfzf for finding yt videos and playing them in MPV without the need of web browser
Kpat.
neovim, zsh, firefox, vlc, mpv, zsh plugins for autocomplete, ripgrep, zerotier vpn,fzf, pip3, htop, i am not sure what else
None of those are must-haves...
Shouldn't you have posted this to /c/archlinux or other meme-distro communities?
Aren't you enjoying everyone listing their favourite text editors and the fact they use ssh?