* [DRun] Introduce data structure changes for Link desktop entries
From the [freedesktop spec][1]:
> This specification defines 3 types of desktop entries:
> Application (type 1), Link (type 2) and Directory (type 3). To allow
> the addition of new types in the future, implementations should
> ignore desktop entries with an unknown type.
This commit adds an enum to capture these types, and adds `type` to
DRunModeEntry.
[1]: https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html
part of #1166
* [DRun] Sanity check Link entries and capture the URL
Note that we're introducing some logic that will differ depending on
the Desktop entry type (Application or Link). The logic is:
- if entry is Application type,
- then Exec is required
- and the value is saved in .exec
- and drun_mode_result calls exec_cmd_entry
- if entry is Link type,
- then URL is required (but is not saved in the DRunModeEntry)
- and drun_mode_result calls new function launch_link_entry
part of #1166
* [DRun] Launch desktop links via xdg-open
Note that this introduces a new dependency on xdg-open, which may not
be installed. In that case, rofi will display an error dialog
with something like:
"Failed to execute child process xdg-open (No such file or directory)"
which hopefully is explanatory enough for folks.
part of #1166
* Make drun options comments consistent and add a bit of whitespace
* [DRun] new config option drun-url-launcher for opening links
In previous commit, this was a hard-coded string.
part of #1166
* style: remove extra space
* feat: handle xrm_Char in config parser
Handle the `xrm_Char` case in the (rasi theme) config file parser. This
should properly handle configuration like
```
matching-negate-char: "\0";
```
and
```
matching-negate-char: "-";
```
* refactor: don't handle mem in xrm_Char case
`mem` shouldn't ever be set when `XrmOption` is `type` `xrm_Char`.
Therefore, there is no need to check it and free it. Remove that logic.
* refactor: further condense logic
* style: s/Everythin/Everything/
* style: s/parsing an section/parsing a section/
...and missing period.
* feat(lexer): add CHAR token
Add a `CHAR` token that takes things of the form `'<char>'` or some
specific backslash escape sequences like `'\''` and `'\0'`. For now,
save it as a `T_STRING`.
* refactor: define char property type
* feat(parser): add cval and T_CHAR
* refactor: use char property for xrm_Char
Instead of using strings for property elements of type char, use
characters, which were recently added to the grammar.
* Initial test to allow math in distances.
Support + and -
Needs spaces around + and -.
* [THEME] Fix printing theme with math in distance.
* [Theme] use calc() syntax.
* [Theme] Add * and / to calc().
* [Theme] Fix the precedense ordering in parsing. Also avoid making copies.
* [Theme] Don't print unneeded ().
* [Theme] Add modulo to calc.
* Add test for hidden meta data in script mode
The purpose of this is to provide support for "hidden" fields on a
script item that work for search but don't get displayed. This is
mostly to provide something similar to the optional display (but still
matchable) fields in drun like "categories" or "keywords". This also
enables the choice to display unicode icons but still allow for
searching for the keywords without needing to print them.
* Ignore the output file from test runs
* Add support for the "meta" field on script entries
This fields provides a matchable but unprinted string for entries in a
script mode list match. This means you can use one thing but provide
multiple options that can match that item without polluting the list
view or make confusing output.
* Add new test to test suite file