mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-18 13:54:36 -05:00
Add some theme name resolving functions.
This commit is contained in:
parent
7c14468697
commit
97fe894f43
4 changed files with 50 additions and 3 deletions
|
@ -123,7 +123,8 @@ rofi_CFLAGS=\
|
||||||
-Werror=missing-prototypes\
|
-Werror=missing-prototypes\
|
||||||
-DSYSCONFDIR=\"$(sysconfdir)\"\
|
-DSYSCONFDIR=\"$(sysconfdir)\"\
|
||||||
-DTHEME_CONVERTER\
|
-DTHEME_CONVERTER\
|
||||||
-DPLUGIN_PATH=\"${libdir}/rofi\"
|
-DPLUGIN_PATH=\"${libdir}/rofi\"\
|
||||||
|
-DTHEME_DIR=\"${prefix}/share/rofi/themes/\"
|
||||||
|
|
||||||
rofi_LDADD=\
|
rofi_LDADD=\
|
||||||
$(glib_LIBS)\
|
$(glib_LIBS)\
|
||||||
|
|
|
@ -443,5 +443,12 @@ gboolean rofi_theme_is_empty ( void );
|
||||||
* Convert old theme colors into default one.
|
* Convert old theme colors into default one.
|
||||||
*/
|
*/
|
||||||
void rofi_theme_convert_old ( void );
|
void rofi_theme_convert_old ( void );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param filename File name passed to option.
|
||||||
|
*
|
||||||
|
* @returns path to theme or copy of filename if not found.
|
||||||
|
*/
|
||||||
|
char *helper_get_theme_path ( const char *filename );
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -574,11 +574,14 @@ static char * rofi_theme_parse_prepare_file ( const char *file, const char *pare
|
||||||
}
|
}
|
||||||
gboolean rofi_theme_parse_file ( const char *file )
|
gboolean rofi_theme_parse_file ( const char *file )
|
||||||
{
|
{
|
||||||
char *filename = rofi_theme_parse_prepare_file ( file, NULL );
|
char *file2 = helper_get_theme_path ( file );
|
||||||
|
char *filename = rofi_theme_parse_prepare_file ( file2, NULL );
|
||||||
|
g_free ( file2 );
|
||||||
|
|
||||||
yyin = fopen ( filename, "rb" );
|
yyin = fopen ( filename, "rb" );
|
||||||
if ( yyin == NULL ) {
|
if ( yyin == NULL ) {
|
||||||
char *str = g_markup_printf_escaped ( "Failed to open theme: <i>%s</i>\nError: <b>%s</b>",
|
char *str = g_markup_printf_escaped ( "Failed to open theme: <i>%s</i>\nError: <b>%s</b>",
|
||||||
filename, strerror ( errno ) );
|
filename, strerror ( errno ) );
|
||||||
rofi_add_error_message ( g_string_new ( str ) );
|
rofi_add_error_message ( g_string_new ( str ) );
|
||||||
g_free ( str );
|
g_free ( str );
|
||||||
g_free ( filename );
|
g_free ( filename );
|
||||||
|
|
|
@ -964,3 +964,39 @@ int helper_execute_command ( const char *wd, const char *cmd, int run_in_term )
|
||||||
g_strfreev ( args );
|
g_strfreev ( args );
|
||||||
return retv;
|
return retv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char *helper_get_theme_path ( const char *file )
|
||||||
|
{
|
||||||
|
char *filename = rofi_expand_path ( file );
|
||||||
|
if ( g_file_test ( filename, G_FILE_TEST_EXISTS ) ) {
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
g_free ( filename );
|
||||||
|
|
||||||
|
if ( g_str_has_suffix ( file, ".rasi" ) ) {
|
||||||
|
filename = g_strdup ( file );
|
||||||
|
} else {
|
||||||
|
filename = g_strconcat ( file, ".rasi", NULL );
|
||||||
|
}
|
||||||
|
// Check config directory.
|
||||||
|
const char *cpath = g_get_user_config_dir ();
|
||||||
|
if ( cpath ) {
|
||||||
|
char *themep = g_build_filename ( cpath, "rofi", filename, NULL );
|
||||||
|
if ( g_file_test ( themep, G_FILE_TEST_EXISTS ) ) {
|
||||||
|
g_free ( filename );
|
||||||
|
return themep;
|
||||||
|
}
|
||||||
|
g_free ( themep );
|
||||||
|
}
|
||||||
|
|
||||||
|
char *theme_path = g_build_filename ( THEME_DIR, filename, NULL );
|
||||||
|
if ( theme_path ) {
|
||||||
|
if ( g_file_test ( theme_path, G_FILE_TEST_EXISTS ) ) {
|
||||||
|
g_free ( filename );
|
||||||
|
return theme_path;
|
||||||
|
}
|
||||||
|
g_free ( theme_path );
|
||||||
|
}
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue