Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gtkgreet for openSUSE:Factory checked in at 2021-02-20 22:13:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gtkgreet (Old) and /work/SRC/openSUSE:Factory/.gtkgreet.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gtkgreet" Sat Feb 20 22:13:01 2021 rev:2 rq:874043 version:0.7 Changes: -------- --- /work/SRC/openSUSE:Factory/gtkgreet/gtkgreet.changes 2020-09-15 16:26:48.950512097 +0200 +++ /work/SRC/openSUSE:Factory/.gtkgreet.new.28504/gtkgreet.changes 2021-02-20 22:13:03.883088445 +0100 @@ -1,0 +2,18 @@ +Sat Feb 20 17:05:05 UTC 2021 - Denys Kondratenko <[email protected]> + +- Update to 0.7 This release includes the ability to style gtkgreet with +stylesheets and background images, automatic gtk-layer-shell detection, +and a few other improvements. + * Fix --command argument for builds without layer-shell + * Use layer-shell anchors to fill the screen + * Add support for user CSS styles. + * man changes for --style option + * Convert -Dlayershell to 'feature' + * Remove action_quit + * Add support for background images + * man: Document the background image flag + * Remove gtk-application-prefer-dark-theme + * ci: Disable automatic github mirroring +- workaround i586 build failure with CFLAGS for now (reported to author) + +------------------------------------------------------------------- Old: ---- gtkgreet-0.6.obscpio New: ---- gtkgreet-0.7.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gtkgreet.spec ++++++ --- /var/tmp/diff_new_pack.Pi0eyb/_old 2021-02-20 22:13:04.363088955 +0100 +++ /var/tmp/diff_new_pack.Pi0eyb/_new 2021-02-20 22:13:04.367088959 +0100 @@ -1,7 +1,7 @@ # # spec file for package gtkgreet # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,19 +17,19 @@ Name: gtkgreet -Version: 0.6 +Version: 0.7 Release: 0 Summary: GTK based greeter for greetd -License: GPL-3.0 +License: GPL-3.0-only URL: https://git.sr.ht/~kennylevinsen/gtkgreet Source: %{name}-%{version}.tar.gz -BuildRequires: meson -BuildRequires: ninja BuildRequires: cmake -BuildRequires: libjson-c-devel -BuildRequires: scdoc BuildRequires: gtk-layer-shell-devel +BuildRequires: libjson-c-devel +BuildRequires: meson +BuildRequires: ninja BuildRequires: pkgconfig +BuildRequires: scdoc BuildRequires: pkgconfig(gdk-3.0) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(wayland-client) @@ -42,7 +42,8 @@ %setup -q %build -%meson -Dlayershell=true +export CFLAGS="-Wno-sign-compare" +%meson -Dlayershell=enabled %meson_build %install ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Pi0eyb/_old 2021-02-20 22:13:04.391088984 +0100 +++ /var/tmp/diff_new_pack.Pi0eyb/_new 2021-02-20 22:13:04.395088988 +0100 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="disabled"> <param name="url">https://git.sr.ht/~kennylevinsen/gtkgreet</param> <param name="scm">git</param> - <param name="revision">0.6</param> + <param name="revision">0.7</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> </service> @@ -12,4 +12,4 @@ <param name="compression">gz</param> <param name="file">*.tar</param> </service> -</services> \ No newline at end of file +</services> ++++++ gtkgreet-0.6.obscpio -> gtkgreet-0.7.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/.build.yml new/gtkgreet-0.7/.build.yml --- old/gtkgreet-0.6/.build.yml 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/.build.yml 2020-12-22 12:37:52.000000000 +0100 @@ -1,6 +1,4 @@ image: archlinux -secrets: - - 46e8e572-0807-4a50-b2e5-614cb1c66cca packages: - gcc - meson @@ -8,10 +6,6 @@ sources: - https://git.sr.ht/~kennylevinsen/gtkgreet tasks: - - github-mirror: | - cd gtkgreet - ssh-keyscan github.com >> ~/.ssh/known_hosts - git push --quiet --mirror [email protected]:kennylevinsen/gtkgreet.git - build: | cd gtkgreet meson build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/README.md new/gtkgreet-0.7/README.md --- old/gtkgreet-0.6/README.md 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/README.md 2020-12-22 12:37:52.000000000 +0100 @@ -11,16 +11,17 @@ See the wiki. -## How to build with gtk-layer-shell (recommended) +## How to build ``` -meson -Dlayershell=true build +meson build ninja -C build ``` +Layer-shell support will be enabled automatically if [gtk-layer-shell](https://github.com/wmww/gtk-layer-shell) development files are installed. ## How to build without gtk-layer-shell ``` -meson build +meson build -Dlayershell=disabled ninja -C build ``` \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/gtkgreet/actions.c new/gtkgreet-0.7/gtkgreet/actions.c --- old/gtkgreet-0.6/gtkgreet/actions.c 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/gtkgreet/actions.c 2020-12-22 12:37:52.000000000 +0100 @@ -103,9 +103,6 @@ } } -void action_quit(GtkWidget *widget, gpointer data) { - exit(0); -} void action_cancel_question(GtkWidget *widget, gpointer data) { struct request req = { .request_type = request_type_cancel_session, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/gtkgreet/actions.h new/gtkgreet-0.7/gtkgreet/actions.h --- old/gtkgreet-0.6/gtkgreet/actions.h 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/gtkgreet/actions.h 2020-12-22 12:37:52.000000000 +0100 @@ -4,7 +4,6 @@ #include <gtk/gtk.h> void action_answer_question(GtkWidget *widget, gpointer data); -void action_quit(GtkWidget *widget, gpointer data); void action_cancel_question(GtkWidget *widget, gpointer data); -#endif \ No newline at end of file +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/gtkgreet/gtkgreet.h new/gtkgreet-0.7/gtkgreet/gtkgreet.h --- old/gtkgreet-0.6/gtkgreet/gtkgreet.h 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/gtkgreet/gtkgreet.h 2020-12-22 12:37:52.000000000 +0100 @@ -19,6 +19,7 @@ struct GtkGreet { GtkApplication *app; GArray *windows; + GdkPixbuf *background; struct Window *focused_window; guint draw_clock_source; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/gtkgreet/main.c new/gtkgreet-0.7/gtkgreet/main.c --- old/gtkgreet-0.6/gtkgreet/main.c 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/gtkgreet/main.c 2020-12-22 12:37:52.000000000 +0100 @@ -9,6 +9,8 @@ struct GtkGreet *gtkgreet = NULL; static char* command = NULL; +static char* background = NULL; +static char* style = NULL; #ifdef LAYER_SHELL static gboolean use_layer_shell = FALSE; @@ -19,9 +21,10 @@ #ifdef LAYER_SHELL { "layer-shell", 'l', 0, G_OPTION_ARG_NONE, &use_layer_shell, "Use layer shell", NULL}, - { "command", 'c', 0, G_OPTION_ARG_STRING, &command, "Command to run", "sway"}, #endif - + { "command", 'c', 0, G_OPTION_ARG_STRING, &command, "Command to run", "sway"}, + { "background", 'b', 0, G_OPTION_ARG_STRING, &background, "Background image to use", NULL}, + { "style", 's', 0, G_OPTION_ARG_FILENAME, &style, "CSS style to use", NULL }, { NULL } }; @@ -93,7 +96,6 @@ static void activate(GtkApplication *app, gpointer user_data) { gtkgreet_activate(gtkgreet); - g_object_set(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", TRUE, NULL); if (!setup_layer_shell()) { struct Window *win = create_window(NULL); gtkgreet_focus_window(gtkgreet, win); @@ -101,6 +103,21 @@ } } +static void attach_custom_style(const char* path) { + GtkCssProvider *provider = gtk_css_provider_new(); + GError *err = NULL; + + gtk_css_provider_load_from_path(provider, path, &err); + if (err != NULL) { + g_warning("style loading failed: %s", err->message); + g_error_free(err); + } else { + gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), + GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); + } + g_object_unref(provider); +} + int main (int argc, char **argv) { GError *error = NULL; GOptionContext *option_context = g_option_context_new("- GTK-based greeter for greetd"); @@ -118,6 +135,17 @@ #endif gtkgreet->command = command; + if (background != NULL) { + gtkgreet->background = gdk_pixbuf_new_from_file(background, &error); + if (gtkgreet->background == NULL) { + g_print("background loading failed: %s\n", error->message); + } + } + + if (style != NULL) { + attach_custom_style(style); + } + g_signal_connect(gtkgreet->app, "activate", G_CALLBACK(activate), NULL); int status = g_application_run(G_APPLICATION(gtkgreet->app), argc, argv); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/gtkgreet/meson.build new/gtkgreet-0.7/gtkgreet/meson.build --- old/gtkgreet-0.6/gtkgreet/meson.build 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/gtkgreet/meson.build 2020-12-22 12:37:52.000000000 +0100 @@ -1,7 +1,8 @@ dependencies = [dependency('gtk+-3.0'), dependency('json-c')] -if get_option('layershell') - dependencies += dependency('gtk-layer-shell-0') +gtk_layer_shell = dependency('gtk-layer-shell-0', required: get_option('layershell')) +if gtk_layer_shell.found() + dependencies += gtk_layer_shell add_project_arguments('-DLAYER_SHELL', language : 'c') endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/gtkgreet/window.c new/gtkgreet-0.7/gtkgreet/window.c --- old/gtkgreet-0.6/gtkgreet/window.c 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/gtkgreet/window.c 2020-12-22 12:37:52.000000000 +0100 @@ -41,14 +41,10 @@ gtk_layer_set_layer(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_LAYER_TOP); gtk_layer_set_monitor(GTK_WINDOW(ctx->window), ctx->monitor); gtk_layer_auto_exclusive_zone_enable(GTK_WINDOW(ctx->window)); - gtk_layer_set_margin(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_LEFT, 0); - gtk_layer_set_margin(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_RIGHT, 0); - gtk_layer_set_margin(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_TOP, 0); - gtk_layer_set_margin(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_BOTTOM, 0); - - GdkRectangle rect; - gdk_monitor_get_workarea(ctx->monitor, &rect); - gtk_widget_set_size_request(ctx->window, rect.width, rect.height); + gtk_layer_set_anchor(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_LEFT, TRUE); + gtk_layer_set_anchor(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_RIGHT, TRUE); + gtk_layer_set_anchor(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_TOP, TRUE); + gtk_layer_set_anchor(GTK_WINDOW(ctx->window), GTK_LAYER_SHELL_EDGE_BOTTOM, TRUE); } #endif @@ -142,24 +138,21 @@ gtk_container_add(GTK_CONTAINER(button_box), label); } - GtkWidget *cancel_button = gtk_button_new_with_label("Cancel"); switch (type) { - case QuestionTypeInitial: { - g_signal_connect(cancel_button, "clicked", G_CALLBACK(action_quit), ctx); - break; - } case QuestionTypeVisible: case QuestionTypeSecret: case QuestionTypeInfo: case QuestionTypeError: { + GtkWidget *cancel_button = gtk_button_new_with_label("Cancel"); + gtk_widget_set_halign(cancel_button, GTK_ALIGN_END); + gtk_container_add(GTK_CONTAINER(button_box), cancel_button); g_signal_connect(cancel_button, "clicked", G_CALLBACK(action_cancel_question), ctx); break; } + case QuestionTypeInitial: + break; } - gtk_widget_set_halign(cancel_button, GTK_ALIGN_END); - gtk_container_add(GTK_CONTAINER(button_box), cancel_button); - GtkWidget *continue_button = gtk_button_new_with_label("Log in"); g_signal_connect(continue_button, "clicked", G_CALLBACK(action_answer_question), ctx); GtkStyleContext *continue_button_style = gtk_widget_get_style_context(continue_button); @@ -206,9 +199,11 @@ if (ctx->window_box == NULL) { ctx->window_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + gtk_widget_set_name(ctx->window_box, "window"); gtk_container_add(GTK_CONTAINER(ctx->revealer), ctx->window_box); ctx->clock_label = gtk_label_new(""); + gtk_widget_set_name(ctx->clock_label, "clock"); g_object_set(ctx->clock_label, "margin-bottom", 10, NULL); gtk_container_add(GTK_CONTAINER(ctx->window_box), ctx->clock_label); window_update_clock(ctx); @@ -219,6 +214,7 @@ if (ctx->body == NULL) { ctx->body = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5); gtk_widget_set_halign(ctx->body, GTK_ALIGN_CENTER); + gtk_widget_set_name(ctx->body, "body"); gtk_widget_set_size_request(ctx->body, 384, -1); gtk_container_add(GTK_CONTAINER(ctx->window_box), ctx->body); window_update_clock(ctx); @@ -294,6 +290,13 @@ gtk_widget_show_all(w->window); } + +static gboolean window_background(GtkWidget *widget, cairo_t *cr, gpointer data) { + gdk_cairo_set_source_pixbuf(cr, gtkgreet->background, 0, 0); + cairo_paint(cr); + return FALSE; +} + struct Window *create_window(GdkMonitor *monitor) { struct Window *w = calloc(1, sizeof(struct Window)); if (w == NULL) { @@ -308,5 +311,9 @@ gtk_window_set_title(GTK_WINDOW(w->window), "Greeter"); gtk_window_set_default_size(GTK_WINDOW(w->window), 200, 200); + if (gtkgreet->background != NULL) { + gtk_widget_set_app_paintable(w->window, TRUE); + g_signal_connect(w->window, "draw", G_CALLBACK(window_background), NULL); + } return w; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/gtkgreet/window.h new/gtkgreet-0.7/gtkgreet/window.h --- old/gtkgreet-0.6/gtkgreet/window.h 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/gtkgreet/window.h 2020-12-22 12:37:52.000000000 +0100 @@ -31,4 +31,4 @@ void window_update_clock(struct Window *ctx); void window_swap_focus(struct Window *win, struct Window *old); -#endif \ No newline at end of file +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/man/gtkgreet.1.scd new/gtkgreet-0.7/man/gtkgreet.1.scd --- old/gtkgreet-0.6/man/gtkgreet.1.scd 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/man/gtkgreet.1.scd 2020-12-22 12:37:52.000000000 +0100 @@ -14,13 +14,23 @@ Show help message and quit. *-c, --command <command>* - Specifies the command to run on successful login. agreety will ask if none is - specified. + Specifies the command to run on successful login. gtkgreet will ask if none + is specified. *-l, --layer-shell* Use wlr-layer-shell to display a window on every output. Must be enabled at compile-time. +*-b, --background* + Specifies a background image to be used by gtkgreet. JPG and PNG are known + to work. The image will be anchored to the upper left corner, and is + rendered 1:1 when DPI scaling is 1. + +*-s, --style <file.css>* + Specifies a custom CSS stylesheet with additional styles for the gtkgreet + window. See https://developer.gnome.org/gtk3/stable/theming.html for the + description of CSS subset supported in GTK. + # DESCRIPTION gtkgreet is a Gtk-based, graphical greeter for *greetd*(1). @@ -64,4 +74,4 @@ gtkgreet development, see https://git.sr.ht/~kennylevinsen/gtkgreet. # SEE ALSO -*greetd*(1) \ No newline at end of file +*greetd*(1) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gtkgreet-0.6/meson_options.txt new/gtkgreet-0.7/meson_options.txt --- old/gtkgreet-0.6/meson_options.txt 2020-05-08 01:06:33.000000000 +0200 +++ new/gtkgreet-0.7/meson_options.txt 2020-12-22 12:37:52.000000000 +0100 @@ -1,2 +1,2 @@ -option('layershell', type : 'boolean', value : false) +option('layershell', type: 'feature', value: 'auto') option('man-pages', type: 'feature', value: 'auto', description: 'Generate and install man pages') \ No newline at end of file ++++++ gtkgreet.obsinfo ++++++ --- /var/tmp/diff_new_pack.Pi0eyb/_old 2021-02-20 22:13:04.475089074 +0100 +++ /var/tmp/diff_new_pack.Pi0eyb/_new 2021-02-20 22:13:04.479089078 +0100 @@ -1,5 +1,5 @@ name: gtkgreet -version: 0.6 -mtime: 1588892793 -commit: 91cfa36ad865652c57b69b865af2eb8b7069f8e0 +version: 0.7 +mtime: 1608637072 +commit: a90223c6b9c1d33a0f5d9b48d24d336300b5fe6b
