1
0
Fork 0
mirror of https://github.com/davatorium/rofi.git synced 2024-11-18 13:54:36 -05:00

[Theme] support rasinc for theme include files.

This commit is contained in:
Dave Davenport 2022-12-30 11:54:15 +01:00
parent d47b1515b5
commit d464822505
16 changed files with 28 additions and 16 deletions

View file

@ -214,7 +214,7 @@ theme_DATA=\
themes/dmenu.rasi\ themes/dmenu.rasi\
themes/docu.rasi\ themes/docu.rasi\
themes/glue_pro_blue.rasi\ themes/glue_pro_blue.rasi\
themes/gruvbox-common.rasi\ themes/gruvbox-common.rasinc\
themes/gruvbox-dark-hard.rasi\ themes/gruvbox-dark-hard.rasi\
themes/gruvbox-dark-soft.rasi\ themes/gruvbox-dark-soft.rasi\
themes/gruvbox-dark.rasi\ themes/gruvbox-dark.rasi\

View file

@ -353,6 +353,7 @@ name
.PP .PP
The preferred file extension for the new theme format is \fBrasi\fP\&. This is an The preferred file extension for the new theme format is \fBrasi\fP\&. This is an
abbreviation for \fBr\fPofi \fBa\fPdvanced \fBs\fPtyle \fBi\fPnformation. abbreviation for \fBr\fPofi \fBa\fPdvanced \fBs\fPtyle \fBi\fPnformation.
If a theme file is split over multiple files, include files can have the: \fBrasinc\fP extension.
.SH Basic Structure .SH Basic Structure
.PP .PP

View file

@ -233,6 +233,7 @@ name
The preferred file extension for the new theme format is **rasi**. This is an The preferred file extension for the new theme format is **rasi**. This is an
abbreviation for **r**ofi **a**dvanced **s**tyle **i**nformation. abbreviation for **r**ofi **a**dvanced **s**tyle **i**nformation.
If a theme file is split over multiple files, include files can have the: **rasinc** extension.
## Basic Structure ## Basic Structure

View file

@ -393,11 +393,11 @@ char *helper_string_replace_if_exists(char *string, ...);
/** /**
* @param file File name passed to option. * @param file File name passed to option.
* @param ext File extension passed to option. * @param ext NULL terminated array of file extension passed to option.
* *
* @returns path to theme or copy of filename if not found. * @returns path to theme or copy of filename if not found.
*/ */
char *helper_get_theme_path(const char *file, const char *ext); char *helper_get_theme_path(const char *file, const char **ext);
/** /**
* @param name The name of the element to find. * @param name The name of the element to find.

View file

@ -50,6 +50,7 @@
#define LOG_DOMAIN "Parser" #define LOG_DOMAIN "Parser"
int last_state = 0; int last_state = 0;
const char *rasi_theme_file_extensions[] = {".rasi", ".rasinc", NULL};
/** /**
* Type of Object to parse. * Type of Object to parse.
*/ */
@ -413,7 +414,7 @@ if ( queue == NULL ) {
yytext[yyleng-1] = '\0'; yytext[yyleng-1] = '\0';
ParseObject *top = g_queue_peek_head ( file_queue ); ParseObject *top = g_queue_peek_head ( file_queue );
g_assert ( top != NULL ); g_assert ( top != NULL );
char *file2 = helper_get_theme_path ( &yytext[1], ".rasi" ); char *file2 = helper_get_theme_path ( &yytext[1], rasi_theme_file_extensions );
char *filename = rofi_theme_parse_prepare_file ( file2, top->filename ); char *filename = rofi_theme_parse_prepare_file ( file2, top->filename );
g_free ( file2 ); g_free ( file2 );
FILE *f = fopen ( filename, "rb" ); FILE *f = fopen ( filename, "rb" );
@ -880,7 +881,7 @@ if ( queue == NULL ) {
gboolean rofi_theme_parse_file ( const char *file ) gboolean rofi_theme_parse_file ( const char *file )
{ {
char *file2 = helper_get_theme_path ( file, ".rasi" ); char *file2 = helper_get_theme_path ( file, rasi_theme_file_extensions );
char *filename = rofi_theme_parse_prepare_file ( file2, NULL ); char *filename = rofi_theme_parse_prepare_file ( file2, NULL );
g_free ( file2 ); g_free ( file2 );

View file

@ -293,7 +293,7 @@ install_data(
'themes/dmenu.rasi', 'themes/dmenu.rasi',
'themes/docu.rasi', 'themes/docu.rasi',
'themes/glue_pro_blue.rasi', 'themes/glue_pro_blue.rasi',
'themes/gruvbox-common.rasi', 'themes/gruvbox-common.rasinc',
'themes/gruvbox-dark-hard.rasi', 'themes/gruvbox-dark-hard.rasi',
'themes/gruvbox-dark-soft.rasi', 'themes/gruvbox-dark-soft.rasi',
'themes/gruvbox-dark.rasi', 'themes/gruvbox-dark.rasi',

View file

@ -1067,7 +1067,7 @@ gboolean helper_execute_command(const char *wd, const char *cmd,
return helper_execute(wd, args, "", cmd, context); return helper_execute(wd, args, "", cmd, context);
} }
char *helper_get_theme_path(const char *file, const char *ext) { char *helper_get_theme_path(const char *file, const char **ext) {
char *filename = rofi_expand_path(file); char *filename = rofi_expand_path(file);
g_debug("Opening theme, testing: %s\n", filename); g_debug("Opening theme, testing: %s\n", filename);
if (g_file_test(filename, G_FILE_TEST_EXISTS)) { if (g_file_test(filename, G_FILE_TEST_EXISTS)) {
@ -1075,7 +1075,16 @@ char *helper_get_theme_path(const char *file, const char *ext) {
} }
g_free(filename); g_free(filename);
if (g_str_has_suffix(file, ext)) { gboolean ext_found = FALSE;
if (ext) {
for (const char **i = ext; *i != NULL; i++) {
if (g_str_has_suffix(file, *i)) {
ext_found = TRUE;
break;
}
}
}
if (ext_found) {
filename = g_strdup(file); filename = g_strdup(file);
} else { } else {
filename = g_strconcat(file, ext, NULL); filename = g_strconcat(file, ext, NULL);

View file

@ -92,7 +92,7 @@ gboolean config_parse_set_property(G_GNUC_UNUSED const Property *p,
} }
char *rofi_expand_path(G_GNUC_UNUSED const char *path) { return NULL; } char *rofi_expand_path(G_GNUC_UNUSED const char *path) { return NULL; }
char *helper_get_theme_path(const char *file, G_GNUC_UNUSED const char *ext) { char *helper_get_theme_path(const char *file, G_GNUC_UNUSED const char **ext) {
return g_strdup(file); return g_strdup(file);
} }
void rofi_add_error_message(G_GNUC_UNUSED GString *msg) {} void rofi_add_error_message(G_GNUC_UNUSED GString *msg) {}

View file

@ -77,7 +77,7 @@ cairo_surface_t *rofi_icon_fetcher_get(G_GNUC_UNUSED const uint32_t uid) {
int monitor_active(G_GNUC_UNUSED workarea *mon) { return 0; } int monitor_active(G_GNUC_UNUSED workarea *mon) { return 0; }
char *helper_get_theme_path(const char *file, G_GNUC_UNUSED const char *ext) { char *helper_get_theme_path(const char *file, G_GNUC_UNUSED const char **ext) {
return g_strdup(file); return g_strdup(file);
} }
gboolean config_parse_set_property(G_GNUC_UNUSED const Property *p, gboolean config_parse_set_property(G_GNUC_UNUSED const Property *p,

View file

@ -58,5 +58,5 @@
selected-urgent-foreground: @urgent-foreground; selected-urgent-foreground: @urgent-foreground;
} }
@import "gruvbox-common.rasi" @import "gruvbox-common.rasinc"

View file

@ -58,5 +58,5 @@
selected-urgent-foreground: @urgent-foreground; selected-urgent-foreground: @urgent-foreground;
} }
@import "gruvbox-common.rasi" @import "gruvbox-common.rasinc"

View file

@ -58,5 +58,5 @@
selected-urgent-foreground: @urgent-foreground; selected-urgent-foreground: @urgent-foreground;
} }
@import "gruvbox-common.rasi" @import "gruvbox-common.rasinc"

View file

@ -58,5 +58,5 @@
selected-urgent-foreground: @urgent-foreground; selected-urgent-foreground: @urgent-foreground;
} }
@import "gruvbox-common.rasi" @import "gruvbox-common.rasinc"

View file

@ -58,5 +58,5 @@
selected-urgent-foreground: @urgent-foreground; selected-urgent-foreground: @urgent-foreground;
} }
@import "gruvbox-common.rasi" @import "gruvbox-common.rasinc"

View file

@ -58,5 +58,5 @@
selected-urgent-foreground: @urgent-foreground; selected-urgent-foreground: @urgent-foreground;
} }
@import "gruvbox-common.rasi" @import "gruvbox-common.rasinc"