Universal CLI file launcher
Launch any file in terminal with one unique command. flauncher works as a command router and launches the input files with the according application/program regarding your settings preferences. Can also be imported in your own python codes.
Then, flauncher can deal with any file type such as audio, image, libreoffice-writer (odt), libreoffice-calc (ods), pdf, rar, tar, tar.gz, tar.xz, tar.bz2, text, tgz, zip, video, etc. files.
With pip:
sudo pip3 install flauncher
With yay:
yay -a flauncher
With yaourt:
yaourt -a flauncher
python >= 3
flauncher [FILE_PATH_01 FILE_PATH_02 ...] options: -h, --help show this help message and exit -m [mode] select another mode than the default open one to open another conf file than open.json
The settings defining the command to be run for any extension type are located in the ~/.config/flauncher/open.json json file.
If this file doesn't exist, copy the default one located in usr/lib/flauncher/open.json and configure it as you wish.
{
"files":
{
"audio": {
"mode": "playlist",
"exts": ["mp3", "wav", "m4a", "aac", "mp1", "mp2", "flac", "aa", "aax", "act", "aiff", "amr", "ape", "au", "awb", "dct", "dss", "dvf", "gsm", "iklax", "ivs", "m4b", "m4p", "mmf", "mpc", "msv", "nmf", "nsf", "oga", "mogg", "opus", "ra", "raw", "sin", "tta", "vox", "wma", "wv", "8svx"],
"app": "mpv",
"args": "--fs-screen=all -fs --loop-playplaylist --script-opts=osc-hidetimeout=6000 --player-operation-mode=pseudo-gui"
},
"graphical": {
"mode": "individual",
"exts": ["xcf"],
"app": "gimp",
"args": null
},
"image_bitmap": {
"mode": "playlist",
"exts": ["jpg", "jpeg", "png", "tif", "gif", "bmp", "pjpeg", "jfif", "exif", "tiff", "png", "ppm", "pgm", "pbm", "pnm", "webp", "hdr", "heif", "bat", "bpg"],
"app": "sxiv",
"args": "-bf"
},
"libreoffice_writer": {
"mode": "individual",
"exts": ["odt", "doc", "docx", "docs"],
"app": "libreoffice --writer",
"args": null
},
"markup": {
"mode": "individual",
"exts": ["ad", "md", "adoc"],
"app": "brave",
"args": "-a"
},
"python": {
"mode": "individual",
"exts": ["py"],
"app": "pycharm",
"args": null
},
"pdf": {
"mode": "individual",
"exts": ["pdf"],
"app": "brave",
"args": "-a"
},
"rar": {
"mode": "archive_a",
"exts": ["rar"],
"app": "unrar",
"args": "x"
},
"tar": {
"mode": "archive_a",
"exts": ["tar"],
"app": "tar",
"args": "-xvf"
},
"tar_gz": {
"mode": "archive_a",
"exts": ["tar.gz"],
"app": "tar",
"args": "-zxvf"
},
"tar_xz": {
"mode": "archive_b",
"exts": ["tar.xz", "txz"],
"app": "tar",
"args": "--directory FOLDER_PATH -xJf ARCHIVE_PATH"
}
...
...
...
},
"folders": {}
}
By default any audio and video files are launched with mpv, any image with sxiv, any pdf with the brave browser, any text with the atom editor, etc. But feel free to set your preferred application.
For help:
flauncher -h
or
flauncher --help
Launch a pdf, a zip, a tar.gz and a mp3:
flauncher titi.pdf toto/tutu.zip toto/tutu.tar.gz toto/tata/tutu.mp3
Define others modes corresponding to others conf files with the -m parameter. When specifying the -m parameter, you have to precise the mode name just after it corresponding to the ~/.config/flauncher/mode.json conf file. -m edit will use the ~/.config/flauncher/edit.json conf file rather than the default launch.json one.
Then, you can have different launch mode corresponding to any kind of file.
Use the o command to open any file:
alias o='flauncher'
And the e command to edit any file:
alias e='flauncher -m edit'
You can import the flauncher package in your own codes and then call the get_cmds method with the file paths and the mode you want to use.
from flauncher import get_cmds
cmds = get_cmds(paths, mode)
It will return a list of clean commands, every command being a dictionary with the "app", the "args" and the "su" attributes.