From 5a7df38ccdf44117c3b9aa13fc4e951849e738d2 Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Tue, 1 Jun 2021 10:43:25 +0200 Subject: [PATCH] [Configuration] Remove old configuration format. --- INSTALL.md | 2 - configure.ac | 2 +- include/xrmoptions.h | 8 ---- meson.build | 1 - source/rofi.c | 103 +++---------------------------------------- source/xrmoptions.c | 89 ------------------------------------- 6 files changed, 6 insertions(+), 199 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 2df73997..8bcef0de 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -38,8 +38,6 @@ You can also use [Meson](https://mesonbuild.com/) as an alternative. * libxcb (sometimes split, you need libxcb, libxcb-xkb and libxcb-randr libxcb-xinerama) * xcb-util * xcb-util-wm (sometimes split as libxcb-ewmh and libxcb-icccm) -* xcb-util-xrm [new module might not be available in your distribution. The source can be found - here](https://github.com/Airblader/xcb-util-xrm/) * xcb-util-cursor On debian based systems, the developer packages are in the form of: `-dev` on rpm based diff --git a/configure.ac b/configure.ac index e561c900..3472dffd 100644 --- a/configure.ac +++ b/configure.ac @@ -144,7 +144,7 @@ NK_INIT([bindings xdg-theme]) PKG_CHECK_MODULES([glib], [glib-2.0 >= ${glib_min_version} gio-unix-2.0 gmodule-2.0]) AC_DEFINE_UNQUOTED([GLIB_VERSION_MIN_REQUIRED], [(G_ENCODE_VERSION(${glib_min_major},${glib_min_minor}))], [The lower GLib version supported]) AC_DEFINE_UNQUOTED([GLIB_VERSION_MAX_ALLOWED], [(G_ENCODE_VERSION(${glib_min_major},${glib_min_minor}))], [The highest GLib version supported]) -GW_CHECK_XCB([xcb-aux xcb-xkb xkbcommon xkbcommon-x11 xcb-ewmh xcb-icccm xcb-xrm xcb-cursor xcb-randr xcb-xinerama]) +GW_CHECK_XCB([xcb-aux xcb-xkb xkbcommon xkbcommon-x11 xcb-ewmh xcb-icccm xcb-cursor xcb-randr xcb-xinerama]) PKG_CHECK_MODULES([pango], [pango pangocairo]) PKG_CHECK_MODULES([cairo], [cairo cairo-xcb]) PKG_CHECK_MODULES([libsn], [libstartup-notification-1.0 ]) diff --git a/include/xrmoptions.h b/include/xrmoptions.h index 2d9ab399..0f21a499 100644 --- a/include/xrmoptions.h +++ b/include/xrmoptions.h @@ -80,14 +80,6 @@ typedef enum xrm_Char = 4 } XrmOptionType; -/** - * @param filename The xresources file to parse - * - * Parses filename and updates the config - * @ingroup CONFFile - */ -void config_parse_xresource_options_file ( const char *filename ); - /** * Parse commandline options. * @ingroup CONFCommandline diff --git a/meson.build b/meson.build index 98c9de7b..4ab0bc71 100644 --- a/meson.build +++ b/meson.build @@ -64,7 +64,6 @@ deps += [ dependency('xkbcommon-x11'), dependency('xcb-ewmh'), dependency('xcb-icccm'), - dependency('xcb-xrm'), dependency('xcb-randr'), dependency('xcb-cursor'), dependency('xcb-xinerama'), diff --git a/source/rofi.c b/source/rofi.c index 1603f587..d31d3946 100644 --- a/source/rofi.c +++ b/source/rofi.c @@ -95,7 +95,6 @@ void rofi_add_error_message ( GString *str ) /** Path to the configuration file */ G_MODULE_EXPORT char *config_path = NULL; /** Path to the configuration file in the new format */ -G_MODULE_EXPORT char *config_path_new = NULL; /** Array holding all activated modi. */ Mode **modi = NULL; @@ -119,8 +118,6 @@ static int dmenu_mode = FALSE; /** Rofi's return code */ int return_code = EXIT_SUCCESS; -/** Flag indicating we are using old config format. */ -static gboolean old_config_format = FALSE; void process_result ( RofiViewState *state ); @@ -298,7 +295,6 @@ static void print_main_application_options ( int is_term ) print_help_msg ( "-no-plugins", "", "Disable loading of external plugins.", NULL, is_term ); print_help_msg ( "-plugin-path", "", "Directory used to search for rofi plugins. *DEPRECATED*", NULL, is_term ); print_help_msg ( "-dump-config", "", "Dump the current configuration in rasi format and exit.", NULL, is_term ); - print_help_msg ( "-upgrade-config", "", "Upgrade the old-style configuration file in the new rasi format and exit.", NULL, is_term ); print_help_msg ( "-dump-theme", "", "Dump the current theme in rasi format and exit.", NULL, is_term ); } static void help ( G_GNUC_UNUSED int argc, char **argv ) @@ -350,10 +346,7 @@ static void help ( G_GNUC_UNUSED int argc, char **argv ) printf ( " Support: %s"PACKAGE_URL "%s\n", is_term ? color_bold : "", is_term ? color_reset : "" ); printf ( " %s#rofi @ libera.chat%s\n", is_term ? color_bold : "", is_term ? color_reset : "" ); if ( find_arg ( "-no-config" ) < 0 ) { - if ( config_path_new ) { - printf ( " Configuration file: %s%s%s\n", is_term ? color_bold : "", config_path_new, is_term ? color_reset : "" ); - } - else { + if ( config_path ) { printf ( " Configuration file: %s%s%s\n", is_term ? color_bold : "", config_path, is_term ? color_reset : "" ); } } @@ -454,7 +447,6 @@ static void cleanup () g_free ( modi ); g_free ( config_path ); - g_free ( config_path_new ); if ( list_of_error_msgs ) { for ( GList *iter = g_list_first ( list_of_error_msgs ); @@ -848,19 +840,13 @@ int main ( int argc, char *argv[] ) if ( find_arg ( "-config" ) < 0 ) { const char *cpath = g_get_user_config_dir (); if ( cpath ) { - config_path = g_build_filename ( cpath, "rofi", "config", NULL ); - config_path_new = g_strconcat ( config_path, ".rasi", NULL ); + config_path = g_build_filename ( cpath, "rofi", "config.rasi", NULL ); } } else { char *c = NULL; find_arg_str ( "-config", &c ); - if ( g_str_has_suffix ( c, ".rasi" ) ) { - config_path_new = rofi_expand_path ( c ); - } - else { - config_path = rofi_expand_path ( c ); - } + config_path = rofi_expand_path ( c ); } TICK (); @@ -908,17 +894,6 @@ int main ( int argc, char *argv[] ) rofi_theme_parse_file ( etc ); found_system = TRUE; } - else { - /** Old format. */ - gchar *xetc = g_build_filename ( dirs[i], "rofi.conf", NULL ); - g_debug ( "Look for default config file: %s", xetc ); - if ( g_file_test ( xetc, G_FILE_TEST_IS_REGULAR ) ) { - config_parse_xresource_options_file ( xetc ); - old_config_format = TRUE; - found_system = TRUE; - } - g_free ( xetc ); - } g_free ( etc ); } } @@ -930,33 +905,15 @@ int main ( int argc, char *argv[] ) g_debug ( "Look for default config file: %s", etc ); rofi_theme_parse_file ( etc ); } - else { - /** Old format. */ - gchar *xetc = g_build_filename ( SYSCONFDIR, "rofi.conf", NULL ); - g_debug ( "Look for default config file: %s", xetc ); - if ( g_file_test ( xetc, G_FILE_TEST_IS_REGULAR ) ) { - config_parse_xresource_options_file ( xetc ); - old_config_format = TRUE; - } - g_free ( xetc ); - } g_free ( etc ); } - if ( config_path_new && g_file_test ( config_path_new, G_FILE_TEST_IS_REGULAR ) ) { - if ( rofi_theme_parse_file ( config_path_new ) ) { + if ( config_path && g_file_test ( config_path, G_FILE_TEST_IS_REGULAR ) ) { + if ( rofi_theme_parse_file ( config_path ) ) { rofi_theme_free ( rofi_theme ); rofi_theme = NULL; } } - else { - g_free ( config_path_new ); - config_path_new = NULL; - if ( g_file_test ( config_path, G_FILE_TEST_IS_REGULAR ) ) { - config_parse_xresource_options_file ( config_path ); - old_config_format = TRUE; - } - } } find_arg_str ( "-theme", &( config.theme ) ); if ( config.theme ) { @@ -972,10 +929,6 @@ int main ( int argc, char *argv[] ) config_parse_cmd_options ( ); TICK_N ( "Load cmd config " ); - if ( old_config_format ) { - g_warning ( "The old Xresources based configuration format is deprecated." ); - g_warning ( "Please upgrade: rofi -upgrade-config." ); - } parse_keys_abe ( bindings ); // Get the path to the cache dir. @@ -1052,52 +1005,6 @@ int main ( int argc, char *argv[] ) cleanup (); return EXIT_SUCCESS; } - if ( find_arg ( "-upgrade-config" ) >= 0 ) { - setup_modi (); - - for ( unsigned int i = 0; i < num_modi; i++ ) { - mode_init ( modi[i] ); - } - - const char *cpath = g_get_user_config_dir (); - if ( cpath ) { - char *fcpath = g_build_filename ( cpath, "rofi", NULL ); - if ( !g_file_test ( fcpath, G_FILE_TEST_IS_DIR ) && g_mkdir_with_parents ( fcpath, 0700 ) < 0 ) { - g_warning ( "Failed to create rofi configuration directory: %s", fcpath ); - cleanup (); - g_free ( fcpath ); - return EXIT_FAILURE; - } - g_free ( fcpath ); - fcpath = g_build_filename ( cpath, "rofi", "config.rasi", NULL ); - if ( g_file_test ( fcpath, G_FILE_TEST_IS_REGULAR ) ) { - g_warning ( "New configuration file already exists: %s", fcpath ); - cleanup (); - g_free ( fcpath ); - return EXIT_FAILURE; - } - FILE *fd = fopen ( fcpath, "w" ); - if ( fd == NULL ) { - g_warning ( "Failed to open new rofi configuration file: %s: %s", fcpath, strerror ( errno ) ); - cleanup (); - g_free ( fcpath ); - return EXIT_FAILURE; - } - config_parse_dump_config_rasi_format ( fd, TRUE ); - fprintf ( stdout, "\n***** Generated configuration file in: %s *****\n", fcpath ); - - fflush ( fd ); - fclose ( fd ); - g_free ( fcpath ); - } - else { - g_warning ( "Failed to get user configuration directory." ); - cleanup (); - return EXIT_FAILURE; - } - cleanup (); - return EXIT_SUCCESS; - } if ( find_arg ( "-dump-config" ) >= 0 ) { config_parse_dump_config_rasi_format ( stdout, FALSE ); cleanup (); diff --git a/source/xrmoptions.c b/source/xrmoptions.c index b597decc..db1b1c07 100644 --- a/source/xrmoptions.c +++ b/source/xrmoptions.c @@ -32,7 +32,6 @@ #include #include #include -#include #include #include "xcb.h" #include "xcb-internal.h" @@ -260,94 +259,6 @@ void config_parser_add_option ( XrmOptionType type, const char *key, void **valu num_extra_options++; } -static void config_parser_set ( XrmOption *option, char *xrmValue, enum ConfigSource source ) -{ - switch ( option->type ) - { - case xrm_String: - if ( ( option )->mem != NULL ) { - g_free ( option->mem ); - option->mem = NULL; - } - *( option->value.str ) = g_strchomp ( g_strdup ( xrmValue ) ); - - // Memory - ( option )->mem = *( option->value.str ); - break; - case xrm_Number: - *( option->value.num ) = (unsigned int) g_ascii_strtoull ( xrmValue, NULL, 10 ); - break; - case xrm_SNumber: - *( option->value.snum ) = (int) g_ascii_strtoll ( xrmValue, NULL, 10 ); - break; - case xrm_Boolean: - if ( strlen ( xrmValue ) > 0 && - g_ascii_strcasecmp ( xrmValue, "true" ) == 0 ) { - *( option->value.num ) = TRUE; - } - else{ - *( option->value.num ) = FALSE; - } - break; - case xrm_Char: - *( option->value.charc ) = helper_parse_char ( xrmValue ); - break; - } - option->source = source; -} - -static void __config_parse_xresource_options ( xcb_xrm_database_t *xDB, enum ConfigSource source ) -{ - const char * namePrefix = "rofi"; - - for ( unsigned int i = 0; i < sizeof ( xrmOptions ) / sizeof ( XrmOption ); ++i ) { - char *name = g_strdup_printf ( "%s.%s", namePrefix, xrmOptions[i].name ); - - char *xrmValue = NULL; - if ( xcb_xrm_resource_get_string ( xDB, name, NULL, &xrmValue ) == 0 ) { - config_parser_set ( &( xrmOptions[i] ), xrmValue, source ); - } - if ( xrmValue ) { - free ( xrmValue ); - } - - g_free ( name ); - } -} -static void __config_parse_xresource_options_dynamic ( xcb_xrm_database_t *xDB, enum ConfigSource source ) -{ - const char * namePrefix = "rofi"; - - for ( unsigned int i = 0; i < num_extra_options; ++i ) { - char *name; - - name = g_strdup_printf ( "%s.%s", namePrefix, extra_options[i].name ); - char *xrmValue = NULL; - if ( xcb_xrm_resource_get_string ( xDB, name, NULL, &xrmValue ) == 0 ) { - config_parser_set ( &( extra_options[i] ), xrmValue, source ); - } - if ( xrmValue ) { - free ( xrmValue ); - } - - g_free ( name ); - } -} - -void config_parse_xresource_options_file ( const char *filename ) -{ - if ( !filename ) { - return; - } - // Map Xresource entries to rofi config options. - xcb_xrm_database_t *xDB = xcb_xrm_database_from_file ( filename ); - if ( xDB == NULL ) { - return; - } - __config_parse_xresource_options ( xDB, CONFIG_FILE ); - __config_parse_xresource_options_dynamic ( xDB, CONFIG_FILE ); - xcb_xrm_database_free ( xDB ); -} /** * Parse an option from the commandline vector.