From de4e10a7de3026254455ce062b5896757a48a7cc Mon Sep 17 00:00:00 2001 From: Qball <qball@blame.services> Date: Fri, 3 Jan 2025 13:12:05 +0100 Subject: [PATCH] [Config] Remove character data type as it aliases with string. Internal character option will now use the first ascii char from the string type. --- CONFIG.md | 28 +++++++++------------- doc/rofi.1.markdown | 55 +++++++++++++++++++++++--------------------- include/rofi-types.h | 4 ---- lexer/theme-lexer.l | 2 -- lexer/theme-parser.y | 5 ---- source/rofi-types.c | 2 -- source/xrmoptions.c | 13 ++++++----- 7 files changed, 47 insertions(+), 62 deletions(-) diff --git a/CONFIG.md b/CONFIG.md index 44cf8f00..76007c82 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -20,7 +20,8 @@ configuration { } ``` -You can now set the options in the `configuration` block. + +You can now set the options in the `configuration` block. ## Create a configuration file from current setup @@ -35,6 +36,7 @@ This will have all the possible settings and their current value. If a value is the default value, the entry will be commented. For example: + ```css configuration { /* modes: "window,run,ssh,drun";*/ @@ -68,8 +70,8 @@ newlines format are supported. But Unix is preferred. C and C++ file comments are supported. - - Anything after `// ` and before a newline is considered a comment. - - Everything between `/*` and `*/` is a comment. +- Anything after `//` and before a newline is considered a comment. +- Everything between `/*` and `*/` is a comment. Comments can be nested and the C comments can be inline. @@ -124,12 +126,12 @@ For example: #### Number An integer may contain any full number. - -For example: - -```css + +For example: + +```css eh: 2; -``` +``` #### Boolean @@ -144,15 +146,6 @@ show-icons: true; This is equal to the `-show-icons` option on the commandline, and `show-icons: false;` is equal to `-no-show-icons`. -#### Character - -Character value is always surrounded by single quotes (') and should contain a -single character. It supports escaping. - -```css -matching-negate-char: '-'; -``` - #### List This is not supported by the old configuration system, but can be used in the @@ -164,6 +157,7 @@ comma-separated. The entry in the list single ASCII words. ```css combi-modes: [window,drun]; ``` + For older versions you have : ```css diff --git a/doc/rofi.1.markdown b/doc/rofi.1.markdown index 1193646c..b740ea33 100644 --- a/doc/rofi.1.markdown +++ b/doc/rofi.1.markdown @@ -66,15 +66,15 @@ Markup support can be enabled, see CONFIGURATION options. There are currently three methods of setting configuration options (evaluated in order below): -- System configuration file (for example `/etc/rofi.rasi`). It first checks +- System configuration file (for example `/etc/rofi.rasi`). It first checks `XDG_CONFIG_DIRS`, and then `SYSCONFDIR` (that is passed at compile time). It loads the first config file it finds, it does not merge multiple system configuration files. -- Rasi theme file: The new *theme* format can be used to set configuration +- Rasi theme file: The new *theme* format can be used to set configuration values. -- Command-line options: Arguments passed to **rofi**. +- Command-line options: Arguments passed to **rofi**. To get a template config file, run: `rofi -dump-config > config.rasi` @@ -102,7 +102,7 @@ For example to set the dpi value to 72: ```css configuration { - dpi: 72; + dpi: 72; } ``` @@ -329,6 +329,7 @@ configuration { } } ``` + Example ```css @@ -416,10 +417,10 @@ The different fields are: Default: *all* -`-matching-negate-char` *char* +`-matching-negate-char` *string* Set the character used to negate the query (i.e. if it does **not** match the -next keyword). Set to '\x0' to disable. +next keyword). Set to '\x0' to disable. It takes the first ASCII character from the string. Default: '-' @@ -466,7 +467,7 @@ Default: *0* `-fixed-num-lines` -Keep a fixed number of visible lines. +Keep a fixed number of visible lines. `-sidebar-mode` @@ -502,17 +503,17 @@ Select monitor to display **rofi** on. It accepts as input: *primary* (if primary output is set), the *xrandr* output name, or integer number (in order of detection). Negative numbers are handled differently: -- **-1**: the currently focused monitor. +- **-1**: the currently focused monitor. -- **-2**: the currently focused window (that is, **rofi** will be displayed +- **-2**: the currently focused window (that is, **rofi** will be displayed on top of the focused window). -- **-3**: Position of mouse (overrides the location setting to get normal +- **-3**: Position of mouse (overrides the location setting to get normal context menu behavior.) -- **-4**: the monitor with the focused window. +- **-4**: the monitor with the focused window. -- **-5**: the monitor that shows the mouse pointer. +- **-5**: the monitor that shows the mouse pointer. Default: *-5* @@ -539,10 +540,10 @@ This is now the method to tweak the theme via the command line. Override the default DPI setting. -- If set to `0`, it tries to auto-detect based on X11 screen size (similar to +- If set to `0`, it tries to auto-detect based on X11 screen size (similar to i3 and GTK). -- If set to `1`, it tries to auto-detect based on the size of the monitor +- If set to `1`, it tries to auto-detect based on the size of the monitor that **rofi** is displayed on (similar to latest Qt 5). `-selected-row` *selected row* @@ -669,6 +670,7 @@ configuration { } } ``` + You can hide the currently active window with the 'hide-active-window' setting: ```css @@ -696,7 +698,7 @@ or pass `-window-prefer-icon-theme true` on command line. ### Combi settings -`-combi-modes ` *mode1*,*mode2* +`-combi-modes` *mode1*,*mode2* The modes to combine in combi mode. For syntax to `-combi-modes`, see `-modes`. @@ -950,13 +952,13 @@ If there is no match, it will try to launch the input. Shows a list of executables in `$PATH` and can launch them (optional in a terminal). -- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry +- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry from the run history. -- Pressing the `accept-custom` binding (`control-enter`) will run the command +- Pressing the `accept-custom` binding (`control-enter`) will run the command as entered in the entry box. -- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a +- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a terminal. When pressing the `mode-complete` binding (`Control-l`), you can use the File @@ -968,13 +970,13 @@ Same as the **run** launches, but the list is created from the installed desktop files. It automatically launches them in a terminal if specified in the Desktop File. -- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry +- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry from the run history. -- Pressing the `accept-custom` binding (`control-enter`) will run the command +- Pressing the `accept-custom` binding (`control-enter`) will run the command as entered in the entry box. -- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a +- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a terminal. When pressing the `mode-complete` binding (`Control-l`), you can use the File @@ -1002,6 +1004,7 @@ configuration { } } ``` + ### ssh Shows a list of SSH targets based on your `ssh` config file, and allows to @@ -1044,7 +1047,7 @@ instead of `"` ("machine quotes"). The indicator shows: -- ` ` Case insensitive and no sorting. +- `` Case insensitive and no sorting. - `-` Case sensitivity enabled, no sorting. - `+` Case insensitive and Sorting enabled - `±` Sorting and Case sensitivity enabled" @@ -1053,13 +1056,13 @@ The indicator shows: Each of these modes uses different methods of resolving the icon: -- Window: It first uses the icon that the application exposes via the X11 +- Window: It first uses the icon that the application exposes via the X11 Server, if none is set it does a lookup of the window Class name in the icon theme. -- drun: It uses the icon set in the desktop file. +- drun: It uses the icon set in the desktop file. -- run: It does a lookup using the executable name. +- run: It does a lookup using the executable name. ## EXAMPLES @@ -1157,7 +1160,7 @@ after the keys have been released. ## DEBUGGING -For more information see **rofi-debugging(5)** manpage. +For more information see **rofi-debugging(5)** manpage. ## ISSUE TRACKER diff --git a/include/rofi-types.h b/include/rofi-types.h index 9ca29f56..023e8d2f 100644 --- a/include/rofi-types.h +++ b/include/rofi-types.h @@ -14,8 +14,6 @@ typedef enum { P_DOUBLE, /** String */ P_STRING, - /** Character */ - P_CHAR, /** Boolean */ P_BOOLEAN, /** Color */ @@ -260,8 +258,6 @@ typedef union _PropertyValue { double f; /** String */ char *s; - /** Character */ - char c; /** boolean */ gboolean b; /** Color */ diff --git a/lexer/theme-lexer.l b/lexer/theme-lexer.l index 0a844158..5af651ca 100644 --- a/lexer/theme-lexer.l +++ b/lexer/theme-lexer.l @@ -186,7 +186,6 @@ WORD_ENV [[:alpha:]_][[:alnum:]_]* COLOR_NAME [[:alpha:]]+ STRING \"{UANYN}*\"|\'{UANYN}*\' STRING_LIST \"{UANYNP1}*\"|\'{UANYNP2}*\' -CHAR \'({ASCN}|\\\\|\\\'|\\0)\' HEX [[:xdigit:]] NUMBER [[:digit:]]+ UNARYMIN - @@ -522,7 +521,6 @@ if ( queue == NULL ) { <PROPERTIES,PROPERTIES_ARRAY,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT,MEDIA_CONTENT>{UNARYMIN} { return T_MIN; } <PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{STRING} { yytext[yyleng-1] = '\0'; yylval->sval = g_strcompress(&yytext[1]); return T_STRING;} <PROPERTIES_ARRAY>{STRING_LIST} { yytext[yyleng-1] = '\0'; yylval->sval = g_strcompress(&yytext[1]); return T_STRING;} -<PROPERTIES,PROPERTIES_ARRAY,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{CHAR} { yytext[yyleng-1] = '\0'; yylval->cval = g_strcompress(&yytext[1])[0]; return T_CHAR;} <PROPERTIES,PROPERTIES_ARRAY,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>@{WORD} { yylval->sval = g_strdup(yytext+1); diff --git a/lexer/theme-parser.y b/lexer/theme-parser.y index 89d24baa..51fa11bb 100644 --- a/lexer/theme-parser.y +++ b/lexer/theme-parser.y @@ -164,7 +164,6 @@ static ThemeColor hwb_to_rgb ( double h, double w, double b ) %token <fval> T_DOUBLE "Floating-point number" %token <sval> T_STRING "UTF-8 encode string" %token <sval> T_MEDIA_TYPE "Media type" -%token <cval> T_CHAR "Character" %token <sval> T_PROP_NAME "property name" %token <colorval> T_COLOR_NAME "Color value by name" %token <sval> T_NAME_ELEMENT "Element name" @@ -567,10 +566,6 @@ t_property_element $$ = rofi_theme_property_create ( P_STRING ); $$->value.s = $1; } -| T_CHAR { - $$ = rofi_theme_property_create ( P_CHAR ); - $$->value.c = $1; - } | T_LINK { $$ = rofi_theme_property_create ( P_LINK ); $$->value.link.name = $1; diff --git a/source/rofi-types.c b/source/rofi-types.c index b9f752e2..cebd1ca0 100644 --- a/source/rofi-types.c +++ b/source/rofi-types.c @@ -10,8 +10,6 @@ const char *const PropertyTypeName[P_NUM_TYPES] = { "Double", /** String */ "String", - /** Character */ - "Character", /** Boolean */ "Boolean", /** Color */ diff --git a/source/xrmoptions.c b/source/xrmoptions.c index 72e16bc1..08cbf9c9 100644 --- a/source/xrmoptions.c +++ b/source/xrmoptions.c @@ -128,7 +128,7 @@ static XrmOption xrmOptions[] = { NULL, "Whether to load and show icons", CONFIG_DEFAULT}, - + {xrm_String, "preview-cmd", {.str = &config.preview_cmd}, @@ -707,13 +707,14 @@ static gboolean __config_parser_set_property(XrmOption *option, *(option->value.num) = (p->value.b); option->source = (option->source & ~3) | CONFIG_FILE_THEME; } else if (option->type == xrm_Char) { - if (p->type != P_CHAR) { - *error = g_strdup_printf( - "Option: %s needs to be set with a character not a %s.", option->name, - PropertyTypeName[p->type]); + + if (p->type != P_STRING) { + *error = + g_strdup_printf("Option: %s needs to be set with a string not a %s.", + option->name, PropertyTypeName[p->type]); return TRUE; } - *(option->value.charc) = (p->value.c); + *(option->value.charc) = (p->value.s[0]); option->source = (option->source & ~3) | CONFIG_FILE_THEME; } else { // TODO add type