When talking about KDE to non linux users, the first question is always : "Can I get away from the terminal if I use KDE ?". Command line tools are an integral part of *nix systems but can be a hard to overcome barrier. One solution is to write many new applications to re-implement the functions of the command line tool or reuse existing libraries. It is however a lot of work and those applications tends to be abandoned/obsolete and/or poorly supported.
The solution would be to have an application provide a gui front end to command line tools in a standard way. It could even present the resulting command line that can be pasted to the terminal or directly run for users to understand.
Only one such tool would need to be maintained and individual command line applications would just be a .xml parsed to generate the corresponding GUI. Since the actual work is done by the underlying command line tool, there is no need to keep multiple code base up to date.
The .xml files should be shared and prevent duplicate work, enabling a rapid deployment. Note .xml is used but it can be replaced with something else that provide clear code.
A parser could run the --help and man pages to extract the available options and their information. A xml could be produced and further edited to define elements relations ( like -o and -x can't be selected at the same time), add a file/folder input and set name output to ...
Once the manual modifications are made, the gui is launched and tested. The resulting .xml can then be shared over git and subsequent modifications can be made by other users.
Let's take the application youtube-dl. There is a gui front end called youtube-dlG that is written in python.
All that could be replaced with a .xml that defines gui elements and link them to the command line arguments. If a new function is added to the application, it's only a matter of configuring a new element in the .xml file to enable it in the gui. Some scripting could : 1) enable fetching the image and validating the link is working 2) list available resolutions and codecs for selection.
What it will take
- Define a .xml standard for cli to gui and how simple scripting could be enabled
- Provide an application that parse the --help and manual of an command line program and generate a preliminary .xml header (the header should not be modified by hand as it will be updated when new version of the command line tool are released)
- Define specific instructions for parser for troublesome or complicated command line tools (in a app.preparse.xml ?)
- Provide .xml to qt primitives that can be used with a minimal and simple scripting engine to generate a functional gui and define it's section after the header (like gui element to arguments, and scripting functions, and notes)
- Define standard guidelines for gui presentations so the aspects are cohesive with KDE
- Append .xml elements for complex parsing ( like a preview in the case of imagemagick/ffmpeg ) and piping to an other command line tool
- Provide an application that parse a .xml file that generates a gui for a specific command line application.
- Provide debugging/real-time gui synchronization with a .xml file
- Provide a mechanism to share/edit/versioning .xml files online (like lutris)
- Provide a default pack of validated .xml files
- Provide parsing of output of command line to update/create gui elements
- Make a list of 25 different type of commonly used command line application and use those to develop the first version of the gui generator
- Integrate with the KDE ecosystem, like using Notifications for background jobs, have pause/resume.
- Provide a way to turn a command line arguments to gui with sections already filled
- Ex kguicmd wget --limit-rate=300k -O wordpress.zip https:... will open the gui with the following elements already inserted and when clicking run, it will turn into a Notification that can be paused/resumed/stopped/edited from the taskbar.
How we know we succeeded
- More than 100 command line tools have fully functional KDE gui
- Integrate many gui as Dolphin actions or elsewhere in KDE
- Ex: Convert audio/video with ffmpeg, batch resize/modify pictures with imagemagik
- Application developers will start to provide their own .xml for gui generation
I am willing to put work into this
- add your name
I am interested
- add your name