For file management we usually use the file manager integrated into the OS, such as Nemo, Dolphin, Thunar, etc. These file managers are GUI-based and therefore provide a nice, easy to use user interface with a toolbar and a right-click context menu.
There are also terminal-based file managers, which at 1st sight might be offputting as you don’t get that familiar GUI. However, recently I discovered Yazi – here is its Github page: https://github.com/sxyazi/yazi. To get a quick overview of what it looks like and what you can do with it, here is a 10 min. YouTube video: https://www.youtube.com/watch?v=RgV47l59NYs.
Using Yazi will make you workflow smoother, more efficient. If you really want to go 1 level up, you can also install zoxide (I have) – https://github.com/ajeetdsouza/zoxide – and give that work speed an extra boost. Yazi and zoxide work hand-in-glove.
You can open a file from within Yazi by selecting the file and clicking enter. As with your GUI file manager, you expect the file to be opened in its default app. For Yazi to do that you need to fine-tune its config file: ~/.config/yazi/yazi.toml.
There is an [opener] edit part, which can by amended like so:
[opener]
vscodium_md = [
{ run = "vscodium \"$@\" &", desc = "vscodium (Markdown)", block = false, for = "unix", match = "*.md" }
]
kwrite_txt = [
{ run = "nohup kwrite \"$@\" > /dev/null 2>&1 &", desc = "kwrite (Text)", block = false, for = "unix", match = "*.txt", orphan = true }
]
thunderbird_eml = [
{ run = "nohup thunderbird \"$@\" &", desc = "Thunderbird (Email)", block = false, for = "unix", match = "*.eml" }
]
system_default = [
{ run = "xdg-open \"$1\"", desc = "System Default", for = "linux" }
]
Obviously, in the above code you can add/delete apps as per your use case.
Below the [opener] setion there is a section with open, rules, which can be amended as follows:
[open]
rules = [
{ name = "*.eml", use = [ "thunderbird_eml" ] },
{ name = "*.md", use = [ "vscodium_md" ] },
{ name = "*.txt", use = [ "kwrite_txt" ] },
{ mime = "application/pdf", use = [ "system_default" ] },
{ mime = "image/*", use = [ "system_default" ] },
{ mime = "{audio,video}/*", use = [ "system_default" ] },
{ name = "*", use = [ "system_default" ] }
]
It took me a couple of says to figure this out, so I wanted to share this with you in case you are inetersted in Yazi. Happy file managing