---
Is scrcpy really a CLI tool?
In a sense, it obviously is. You launch and control it through the terminal.
But one the other hand, it is really about visual/graphical interaction with your Android device. The CLI aspect is (almost entirely) merely a way to determine the parameters of this interaction (choose screen size, port, on-top or not, etc). But then, so many GUI apps provide some form of parameters/switches/arguments to set similar options/running conditions. For example, Chrome or Firefox (window size, profile, disable extensions, etc). I think nobody would suggest adding these to the CLI database (compared with Inkscape which allows you to perform functions like conversion though CLI commands without launching the main Window).
To determine which app it is (GUI with just parameters or GUI with CLI mode), a couple of general rules of thumb (and their variations) may help:
- Does it use standard output? i.e. does it produce text (e.g. file hash) in the console window to respond to your command. It can be silent but it won't use other methods.
- Does it have a tangible "product" in response to CLI commands? For example, conversion output file.
- Does it send the CLI commands to a GUI to be processed?
- Is it automatable? Can you put the command in a script and depend on it for the rest of the script. This is usually a test of the last three points.
- For example, gplay.exe is such a simple console player that it has no options or output or window or anything. It just plays the audio file you throw at it. But so does pretty much any other GUI media player if you do app.exe file.mp3. Does the lack of a GUI window alone make this a CLI tool in the sense above? It fails the other three points.
- If you say yes, automation is just one facet of CLI tools or that it does have a tangible product (the audio), then how about ffplay? I added it to the database because it comes with FFmpeg and is controllable from command line and outputs stats to the console (not exactly to stdout, but that is a tangent). When does the tool stop being a GUI with parameters and becomes a CLI? What is the difference between mpc-hc64.exe /volume N and ffplay.exe -volume N? Do we consider MPC-HC a CLI tool? ffplay also outputs a (GUI-controllable) window for both audio and video. Should we remove ffplay from the database? How about mplayer or mpv?