LibDesktop: Add a RunInTerminal boolean field to app files

This is common enough to warrant its own setting by now - but it's also
partially a workaround. Since app files currently only support a single
executable path with no arguments, we resort to generating wrapper
scripts for port launchers with arguments - and then the executable is
that shell script. We also moved from manually specifying icon files to
embedding them in executables. As shell scripts can't have icons
embedded in them, a different solution is needed - this one solves the
common case of running a CLI program in a terminal, and still allows
embedding of icons in the executable itself as no shell script is
needed, meaning it will be shown in the taskbar and system menu.

The second use case of actually passing arguments to the executable
itself (and not just "Terminal -e ...") is not covered by this and still
requires an external script (meaning no icon for now), but I think that
can easily be solved by adding something like an "Arguments" field to
app files. :^)
This commit is contained in:
Linus Groh 2021-07-19 22:00:34 +01:00
parent f44f7927a8
commit 4983a972b0
Notes: sideshowbarker 2024-07-18 08:43:51 +09:00
2 changed files with 6 additions and 0 deletions

View File

@ -82,6 +82,11 @@ String AppFile::category() const
return m_config->read_entry("App", "Category").trim_whitespace();
}
bool AppFile::run_in_terminal() const
{
return m_config->read_bool_entry("App", "RunInTerminal", false);
}
Vector<String> AppFile::launcher_file_types() const
{
Vector<String> file_types;

View File

@ -26,6 +26,7 @@ public:
String name() const;
String executable() const;
String category() const;
bool run_in_terminal() const;
Vector<String> launcher_file_types() const;
Vector<String> launcher_protocols() const;
bool spawn() const;