Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package wofi for openSUSE:Factory checked in 
at 2026-01-08 15:31:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wofi (Old)
 and      /work/SRC/openSUSE:Factory/.wofi.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "wofi"

Thu Jan  8 15:31:30 2026 rev:9 rq:1325927 version:1.5.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/wofi/wofi.changes        2025-08-18 
16:08:55.924619219 +0200
+++ /work/SRC/openSUSE:Factory/.wofi.new.1928/wofi.changes      2026-01-08 
15:31:37.131559417 +0100
@@ -1,0 +2,14 @@
+Thu Jan  8 09:42:08 UTC 2026 - Jan Baier <[email protected]>
+
+- Update to 1.5.3:
+  * Added support for loading configs and styling from /usr/etc/wofi and 
/etc/wofi, plugins can now be loaded from /usr/lib/wofi and /lib/wofi
+  * Fixed --lines when using a horizontal layout
+  * The size of the scrolled window is now handled correctly while preserving 
the behavior of --lines
+  * Backed out changeset a40edf527046
+  * footclient now comes after foot in the terminal order rather than at the 
end, this matches the documentation
+  * Amended the terminal_fix patch to use tabs and 
g_desktop_app_info_get_boolean()
+  * Added drun-terminal_fix
+  * Added title documentation to wofi(5)
+  * Add --title/-T option
+
+-------------------------------------------------------------------

Old:
----
  v1.5.1.tar.gz

New:
----
  v1.5.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ wofi.spec ++++++
--- /var/tmp/diff_new_pack.SU4T3w/_old  2026-01-08 15:31:37.759585578 +0100
+++ /var/tmp/diff_new_pack.SU4T3w/_new  2026-01-08 15:31:37.763585744 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package wofi
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           wofi
-Version:        1.5.1
+Version:        1.5.3
 Release:        0
 Summary:        Launcher for wlroots compositors
 License:        GPL-3.0-only

++++++ v1.5.1.tar.gz -> v1.5.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/.hg_archival.txt 
new/wofi-v1.5.3/.hg_archival.txt
--- old/wofi-v1.5.1/.hg_archival.txt    2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/.hg_archival.txt    2026-01-06 07:20:21.000000000 +0100
@@ -1,4 +1,4 @@
 repo: 1c71dcd9c6a6dd54601820ce069e7c3ed7e946ca
-node: fa80dc83c18c63f06bc42599436c90ae9e12c844
+node: b85063f5d38b0082dbf4df8e9c4e9c39ab049ab0
 branch: default
-tag: v1.5.1
+tag: v1.5.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/.hgtags new/wofi-v1.5.3/.hgtags
--- old/wofi-v1.5.1/.hgtags     2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/.hgtags     2026-01-06 07:20:21.000000000 +0100
@@ -11,3 +11,5 @@
 eab2b31e805564012e4f71920a8f87ba5f9f798c v1.4
 1e89e8a94806ef2dd27dbf79b4fcc9902f89c422 v1.4.1
 7373d243116703780ba88d32d635a05ffa2177b7 v1.5
+fa80dc83c18c63f06bc42599436c90ae9e12c844 v1.5.1
+5511c896a4676de7865c7f462fba5fe94910a98a v1.5.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/inc/wofi.h new/wofi-v1.5.3/inc/wofi.h
--- old/wofi-v1.5.1/inc/wofi.h  2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/inc/wofi.h  2026-01-06 07:20:21.000000000 +0100
@@ -1,5 +1,5 @@
 /*
- *  Copyright (C) 2019-2020 Scoopta
+ *  Copyright (C) 2019-2025 Scoopta
  *  This file is part of Wofi
  *  Wofi is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -41,5 +41,5 @@
 
 void wofi_init(struct map* config);
 
-void wofi_load_css(bool nyan);
+void wofi_load_css(bool nyan, const char* stylesheet);
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/man/wofi.1 new/wofi-v1.5.3/man/wofi.1
--- old/wofi-v1.5.1/man/wofi.1  2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/man/wofi.1  2026-01-06 07:20:21.000000000 +0100
@@ -125,15 +125,17 @@
 .SH CONFIGURATION
 Wofi has 3 main files used for configuration. All files are completely 
optional.
 .IP 1. 4
-The config file which defaults to $XDG_CONFIG_HOME/wofi/config.
+The config file which defaults to /usr/etc/wofi/config, followed by 
/etc/wofi/config, and then finally $XDG_CONFIG_HOME/wofi/config. These are 
loaded in order in a layered fashion where each applies on top of the previous.
 .IP 2. 4
-The CSS file which defaults to $XDG_CONFIG_HOME/wofi/style.css.
+The CSS file which defaults to /usr/etc/wofi/style.css, followed by 
/etc/wofi/style.css, and then finally $XDG_CONFIG_HOME/wofi/style.css. These 
are loaded in order in a layered fashion where each applies on top of the 
previous.
 .IP 3. 4
 The colors file which defaults to the pywal cache $XDG_CACHE_HOME/wal/colors.
 
 .P
 All 3 of these paths can be manually specified using the respective command 
line flag. In the case of the last 2 they can additionally be specified in the 
config file.
 
+When manually specified paths are used nothing is loaded from the 
$XDG_CONFIG_HOME location, however the system wide files are still loaded first.
+
 In the event $XDG_CONFIG_HOME is not specified it defaults to ~/.config 
likewise if $XDG_CACHE_HOME is not specified it defaults to ~/.cache.
 
 Information about the formats for these files can be found in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/man/wofi.3 new/wofi-v1.5.3/man/wofi.3
--- old/wofi-v1.5.1/man/wofi.3  2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/man/wofi.3  2026-01-06 07:20:21.000000000 +0100
@@ -3,7 +3,9 @@
 wofi \- Mode functions and documentation
 
 .SH DESCRIPTION
-Wofi provides a C API which can be used for developing 3rd party modes. These 
modes should be compiled to a shared object which should be placed in 
$XDG_CONFIG_HOME/wofi/plugins. If $XDG_CONFIG_HOME is not defined then it will 
default to ~/.config.
+Wofi provides a C API which can be used for developing 3rd party modes. These 
modes should be compiled to a shared object which should be placed in 
$XDG_CONFIG_HOME/wofi/plugins, /lib/wofi/plugins, or /usr/lib/wofi/plugins. If 
$XDG_CONFIG_HOME is not defined then it will default to ~/.config.
+
+The shared objects will be loaded from the paths in the order specified above, 
wofi will stop searching once it finds a plugin with the name in question. For 
example if a plugin called libtest.so exists in $XDG_CONFIG_HOME it will mask 
one called libtest.so in /lib.
 
 It is very important to note that this API is not stable. It's mostly stable 
however if something comes up that requires a substantial change things will be 
changed. This shouldn't happen too much but has happened in the past and might 
in the future.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/meson.build new/wofi-v1.5.3/meson.build
--- old/wofi-v1.5.1/meson.build 2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/meson.build 2026-01-06 07:20:21.000000000 +0100
@@ -1,4 +1,4 @@
-project('wofi', 'c', version : 'v1.5.1', default_options : ['c_std=c99', 
'buildtype=release', 'warning_level=2'])
+project('wofi', 'c', version : 'v1.5.3', default_options : ['c_std=c99', 
'buildtype=release', 'warning_level=2'])
 cc = meson.get_compiler('c')
 
 pkgcfg = import('pkgconfig')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/src/main.c new/wofi-v1.5.3/src/main.c
--- old/wofi-v1.5.1/src/main.c  2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/src/main.c  2026-01-06 07:20:21.000000000 +0100
@@ -33,6 +33,12 @@
 
 #include <gtk/gtk.h>
 
+#define USR_CONFIG_LOCATION "/usr/etc/wofi/config"
+#define SYS_CONFIG_LOCATION "/etc/wofi/config"
+
+#define USR_STYLE_LOCATION "/usr/etc/wofi/style.css"
+#define SYS_STYLE_LOCATION "/etc/wofi/style.css"
+
 static const char* nyan_colors[] = {"#FF0000", "#FFA500", "#FFFF00", 
"#00FF00", "#0000FF", "#FF00FF"};
 static size_t nyan_color_l = sizeof(nyan_colors) / sizeof(char*);
 
@@ -102,7 +108,7 @@
        exit(0);
 }
 
-void wofi_load_css(bool nyan) {
+void wofi_load_css(bool nyan, const char* stylesheet) {
        if(access(stylesheet, R_OK) == 0) {
                FILE* file = fopen(stylesheet, "r");
                fseek(file, 0, SEEK_END);
@@ -635,6 +641,12 @@
        } else {
                config_path = strdup(config_str);
        }
+       if(access(USR_CONFIG_LOCATION, R_OK) == 0) {
+               config_load(config, USR_CONFIG_LOCATION);
+       }
+       if(access(SYS_CONFIG_LOCATION, R_OK) == 0) {
+               config_load(config, SYS_CONFIG_LOCATION);
+       }
        if(access(config_path, R_OK) == 0) {
                config_load(config, config_path);
        }
@@ -661,6 +673,8 @@
                stylesheet = strdup(style_str);
        }
 
+       map_put(config, "style", stylesheet);
+
        if(color_str == NULL) {
                color_str = map_get(config, "color");
        }
@@ -818,7 +832,9 @@
                g_object_set(gtk_settings_get_default(),
                        "gtk-application-prefer-dark-theme", TRUE, NULL);
        }
-       wofi_load_css(false);
+       wofi_load_css(false, USR_STYLE_LOCATION);
+       wofi_load_css(false, SYS_STYLE_LOCATION);
+       wofi_load_css(false, stylesheet);
 
        wofi_init(config);
        gtk_main();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wofi-v1.5.1/src/wofi.c new/wofi-v1.5.3/src/wofi.c
--- old/wofi-v1.5.1/src/wofi.c  2025-07-31 06:23:40.000000000 +0200
+++ new/wofi-v1.5.3/src/wofi.c  2026-01-06 07:20:21.000000000 +0100
@@ -45,6 +45,9 @@
 #define _UNUSED(x) (void)(x)
 #define CUSTOM_KEY_NUMBER 20
 
+#define USR_PLUGIN_LOCATION "/usr/lib/wofi"
+#define SYS_PLUGIN_LOCATION "/lib/wofi"
+
 static const char* terminals[] = {"kitty", "alacritty", "wezterm", "foot", 
"termite", "gnome-terminal", "weston-terminal"};
 
 enum location {
@@ -111,6 +114,7 @@
 static bool pre_display_exec = false;
 static bool single_click = false;
 static bool hide_search = false;
+static char* stylesheet = NULL;
 static GdkModifierType shift_mask = GDK_SHIFT_MASK;
 static GdkModifierType ctrl_mask = GDK_CONTROL_MASK;
 static GdkModifierType alt_mask = GDK_MOD1_MASK;
@@ -572,12 +576,45 @@
 }
 
 static void update_surface_size(void) {
+       int64_t scroll_width = 0;
+       int64_t scroll_height = 0;
        if(lines > 0) {
-               height = max_height * lines;
+               scroll_height = max_height * lines;
        }
-       if(width == 0 || height == 0) {
+       if(width == 0 || (height == 0 && scroll_height == 0)) {
                return;
        }
+
+       GtkAllocation alloc;
+       gtk_widget_get_allocated_size(entry, &alloc, NULL);
+       if(outer_orientation == GTK_ORIENTATION_HORIZONTAL) {
+               if(alloc.width > 0) {
+                       scroll_width = width - alloc.width;
+                       if(lines > 0) {
+                               height = scroll_height;
+                       } else {
+                               scroll_height = height;
+                       }
+
+                       if(scroll_width < 0) {
+                               scroll_width = width;
+                       }
+               }
+       } else {
+               if(alloc.height > 0) {
+                       scroll_width = width;
+                       if(lines > 0) {
+                               height = scroll_height + alloc.height;
+                       } else {
+                               scroll_height = height - alloc.height;
+                       }
+
+                       if(scroll_height < 0) {
+                               scroll_height = height;
+                       }
+               }
+       }
+
        if(shell != NULL) {
                zwlr_layer_surface_v1_set_size(wlr_surface, width, height);
                wl_surface_commit(wl_surface);
@@ -585,7 +622,8 @@
        }
 
        gtk_window_resize(GTK_WINDOW(window), width, height);
-       gtk_widget_set_size_request(scroll, width, height);
+
+       gtk_widget_set_size_request(scroll, scroll_width, scroll_height);
 }
 
 static void widget_allocate(GtkWidget* widget, GdkRectangle* allocation, 
gpointer data) {
@@ -1373,7 +1411,7 @@
 
 static gboolean do_nyan(gpointer data) {
        (void) data;
-       wofi_load_css(true);
+       wofi_load_css(true, stylesheet);
        return G_SOURCE_CONTINUE;
 }
 
@@ -1537,7 +1575,7 @@
        return proc;
 }
 
-static void* load_mode(char* _mode, char* name, struct mode* mode_ptr, struct 
map* props) {
+static void* load_mode(char* _mode, char* name, struct mode* mode_ptr, struct 
map* props, const char* config_dir) {
        char* dso = strstr(_mode, ".so");
 
        mode_ptr->name = strdup(name);
@@ -1599,7 +1637,7 @@
 static struct mode* add_mode(char* _mode) {
        struct mode* mode_ptr = calloc(1, sizeof(struct mode));
        struct map* props = map_init();
-       void (*init)(struct mode* _mode, struct map* props) = load_mode(_mode, 
_mode, mode_ptr, props);
+       void (*init)(struct mode* _mode, struct map* props) = load_mode(_mode, 
_mode, mode_ptr, props, config_dir);
 
        if(init == NULL) {
                free(mode_ptr->name);
@@ -1611,7 +1649,13 @@
                props = map_init();
 
                char* name = utils_concat(3, "lib", _mode, ".so");
-               init = load_mode(name, _mode, mode_ptr, props);
+               init = load_mode(name, _mode, mode_ptr, props, config_dir);
+               if(init == NULL) {
+                       init = load_mode(name, _mode, mode_ptr, props, 
SYS_PLUGIN_LOCATION);
+               }
+               if(init == NULL) {
+                       init = load_mode(name, _mode, mode_ptr, props, 
USR_PLUGIN_LOCATION);
+               }
                free(name);
 
                if(init == NULL) {
@@ -1623,7 +1667,7 @@
                        mode_ptr = calloc(1, sizeof(struct mode));
                        props = map_init();
 
-                       init = load_mode("external", _mode, mode_ptr, props);
+                       init = load_mode("external", _mode, mode_ptr, props, 
config_dir);
 
                        map_put(props, "exec", _mode);
 
@@ -1826,6 +1870,7 @@
        pre_display_cmd = map_get(config, "pre_display_cmd");
        pre_display_exec = strcmp(config_get(config, "pre_display_exec", 
"false"), "true") == 0;
        single_click = strcmp(config_get(config, "single_click", "false"), 
"true") == 0;
+       stylesheet = config_get(config, "style", NULL);
 
        keys = map_init_void();
        mods = map_init_void();

Reply via email to