From 828cae88632e0cf3534063fd199c7796dd1e99dd Mon Sep 17 00:00:00 2001 From: mwileczka Date: Mon, 1 Jul 2019 04:06:40 -0400 Subject: Fixed default session for manual user entry. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/d85d872a84233b125278825e5d64162079b84fc7 --- src/user-list.vala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/user-list.vala b/src/user-list.vala index 9f4b265..b4cab22 100644 --- a/src/user-list.vala +++ b/src/user-list.vala @@ -874,6 +874,10 @@ public class UserList : GreeterList } e.background = background; e.is_active = is_active; + if ( session == null) + { + session = default_session; + } e.session = ArcticaGreeter.validate_session(session); e.label = label; e.set_show_message_icon (has_messages); -- cgit v1.2.3 From d7cfd53d422e137baaf1cc167486607ab649dde2 Mon Sep 17 00:00:00 2001 From: Louis des Landes Date: Mon, 5 Aug 2019 21:46:38 +0930 Subject: Add sway badge. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/ad0e52a13d3ed169276acfe27aea5c4e5ea271ae --- data/Makefile.am | 1 + data/badges/sway_badge.svg | 89 ++++++++++++++++++++++++++++++++++++++++++++++ src/session-list.vala | 2 ++ 3 files changed, 92 insertions(+) create mode 100644 data/badges/sway_badge.svg diff --git a/data/Makefile.am b/data/Makefile.am index f8bbe44..22afc3f 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -50,6 +50,7 @@ dist_pkgdata_DATA = \ badges/recovery_console_badge.png \ badges/sugar_badge.png \ badges/surf_badge.png \ + badges/sway_badge.svg \ badges/twm_badge.png \ badges/ubuntu_badge.png \ badges/unknown_badge.png \ diff --git a/data/badges/sway_badge.svg b/data/badges/sway_badge.svg new file mode 100644 index 0000000..31f516d --- /dev/null +++ b/data/badges/sway_badge.svg @@ -0,0 +1,89 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/session-list.vala b/src/session-list.vala index 290a7af..be9a112 100644 --- a/src/session-list.vala +++ b/src/session-list.vala @@ -131,6 +131,8 @@ public class SessionList : GreeterList case "i3": case "i3-with-shmlog": return "i3_badge.png"; + case "sway": + return "sway_badge.svg"; case "lightdm-xsession": return "xsession_badge.png"; case "lxde": -- cgit v1.2.3 From d1371ed702dc5714d22f13f2e27f019f86df2f24 Mon Sep 17 00:00:00 2001 From: Jacob Date: Sat, 2 Jan 2021 17:16:05 +0100 Subject: Add badge for fynedesk. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/512c1032bda19884099e00d41dc23627bccee2c1 --- data/Makefile.am | 1 + data/badges/fynedesk_badge.svg | 1245 ++++++++++++++++++++++++++++++++++++++++ src/session-list.vala | 2 + 3 files changed, 1248 insertions(+) create mode 100644 data/badges/fynedesk_badge.svg diff --git a/data/Makefile.am b/data/Makefile.am index 22afc3f..55216b3 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -41,6 +41,7 @@ dist_pkgdata_DATA = \ badges/gnustep_badge.png \ badges/i3_badge.png \ badges/icewm_badge.png \ + badges/fynedesk_badge.svg \ badges/kde_badge.png \ badges/lxde_badge.png \ badges/matchbox_badge.png \ diff --git a/data/badges/fynedesk_badge.svg b/data/badges/fynedesk_badge.svg new file mode 100644 index 0000000..26c1cd6 --- /dev/null +++ b/data/badges/fynedesk_badge.svg @@ -0,0 +1,1245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/session-list.vala b/src/session-list.vala index be9a112..d12e6f0 100644 --- a/src/session-list.vala +++ b/src/session-list.vala @@ -158,6 +158,8 @@ public class SessionList : GreeterList return "xmonad_badge.png"; case "icewm-session": return "icewm_badge.png"; + case "fynedesk": + return "fynedesk_badge.svg"; case "remote-login": return "remote_login_help.png"; default: -- cgit v1.2.3 From 480730067e500de1af2eb616663179e106ea995b Mon Sep 17 00:00:00 2001 From: Michael Webster Date: Mon, 6 Feb 2023 09:51:55 +0100 Subject: Set our own cursor theme and size internally via GtkSettings. The gtk and icon themes already work this way. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/97f9f54b686303dec81918d3056194bff2a3163c --- data/org.ArcticaProject.arctica-greeter.gschema.xml | 8 ++++++++ src/arctica-greeter.vala | 21 ++++++++++++++++++--- src/settings.vala | 2 ++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/data/org.ArcticaProject.arctica-greeter.gschema.xml b/data/org.ArcticaProject.arctica-greeter.gschema.xml index b0069c2..a264432 100644 --- a/data/org.ArcticaProject.arctica-greeter.gschema.xml +++ b/data/org.ArcticaProject.arctica-greeter.gschema.xml @@ -45,6 +45,14 @@ 'Adwaita' Icon theme to use + + 'default' + Cursor theme to use + + + 0 + Size to use for cursors - 0 is default size + 'Sans 11' Font to use diff --git a/src/arctica-greeter.vala b/src/arctica-greeter.vala index 3f119c4..89d52b8 100644 --- a/src/arctica-greeter.vala +++ b/src/arctica-greeter.vala @@ -910,14 +910,29 @@ public class ArcticaGreeter : Object debug ("Setting GTK+ settings"); var settings = Gtk.Settings.get_default (); var value = AGSettings.get_string (AGSettings.KEY_THEME_NAME); - if (value != "") + if (value != ""){ + debug ("Setting GTK theme: %s", value); settings.set ("gtk-theme-name", value, null); + } value = AGSettings.get_string (AGSettings.KEY_ICON_THEME_NAME); - if (value != "") + if (value != ""){ + debug ("Setting icon theme: %s", value); settings.set ("gtk-icon-theme-name", value, null); + } + value = AGSettings.get_string (AGSettings.KEY_CURSOR_THEME_NAME); + if (value != "") { + debug ("Setting cursor theme: %s", value); + settings.set ("gtk-cursor-theme-name", value, null); + } + var int_value = AGSettings.get_integer (AGSettings.KEY_CURSOR_THEME_SIZE); + if (int_value != 0) { + debug ("Settings cursor theme size: %d", int_value); + settings.set ("gtk-cursor-theme-size", int_value, null); + } value = AGSettings.get_string (AGSettings.KEY_FONT_NAME); - if (value != "") + if (value != ""){ settings.set ("gtk-font-name", value, null); + } var double_value = AGSettings.get_double (AGSettings.KEY_XFT_DPI); if (double_value != 0.0) settings.set ("gtk-xft-dpi", (int) (1024 * double_value), null); diff --git a/src/settings.vala b/src/settings.vala index af753ce..05f54fe 100644 --- a/src/settings.vala +++ b/src/settings.vala @@ -33,6 +33,8 @@ public class AGSettings : Object public const string KEY_THEME_NAME = "theme-name"; public const string KEY_HIGH_CONTRAST_THEME_NAME = "high-contrast-theme-name"; public const string KEY_ICON_THEME_NAME = "icon-theme-name"; + public const string KEY_CURSOR_THEME_NAME = "cursor-theme-name"; + public const string KEY_CURSOR_THEME_SIZE = "cursor-theme-size"; public const string KEY_FONT_NAME = "font-name"; public const string KEY_XFT_ANTIALIAS = "xft-antialias"; public const string KEY_XFT_DPI = "xft-dpi"; -- cgit v1.2.3 From 52aa64b64c3485d580385aba6e6123e5950908bd Mon Sep 17 00:00:00 2001 From: Michael Webster Date: Mon, 6 Feb 2023 09:54:07 +0100 Subject: cursor size: Use 24 as a default size instead of 0. 24 is the default elsewhere, and it's less complicated to fashion a setting widget where zero isn't actually zero. Ported from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/8eead9377b525ba3ae6213248a58b269738791a0 --- data/org.ArcticaProject.arctica-greeter.gschema.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/org.ArcticaProject.arctica-greeter.gschema.xml b/data/org.ArcticaProject.arctica-greeter.gschema.xml index a264432..419e267 100644 --- a/data/org.ArcticaProject.arctica-greeter.gschema.xml +++ b/data/org.ArcticaProject.arctica-greeter.gschema.xml @@ -50,8 +50,8 @@ Cursor theme to use - 0 - Size to use for cursors - 0 is default size + 24 + Size to use for cursors 'Sans 11' -- cgit v1.2.3 From 499274f3da9d7adc0e9c42ce3bf6f9bd0a571128 Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Fri, 13 Jan 2023 12:57:13 +0000 Subject: orca: Fix wrong a11y text for username prompt. Ported from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/dfe45aa7c7171ca58a35e6f337f805ad447c8906 --- src/greeter-list.vala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/greeter-list.vala b/src/greeter-list.vala index 98c8b48..dc41a8f 100644 --- a/src/greeter-list.vala +++ b/src/greeter-list.vala @@ -295,8 +295,12 @@ public abstract class GreeterList : FadableBox } string accessible_text = null; - if (selected_entry != null && selected_entry.label != null) - accessible_text = _("Enter password for %s").printf (selected_entry.label); + if (selected_entry != null && selected_entry.label != null) { + if (secret) + accessible_text = _("Enter password for %s").printf (selected_entry.label); + else + accessible_text = _("Enter your username"); + } var prompt = selected_entry.add_prompt (text, accessible_text, secret); if (mode != Mode.SCROLLING) -- cgit v1.2.3 From 6101635251b611916c8f4ba7d18a6d396038ff3a Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Mon, 6 Feb 2023 10:07:02 +0100 Subject: sessions: Make the list scrollable. Ported from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/1480b029099ea24724d307943dc742a42fcd3159 --- src/toggle-box.vala | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/toggle-box.vala b/src/toggle-box.vala index 518275f..5301583 100644 --- a/src/toggle-box.vala +++ b/src/toggle-box.vala @@ -24,6 +24,7 @@ public class ToggleBox : Gtk.Box public string default_key {get; construct;} public string starting_key {get; construct;} public string selected_key {get; protected set;} + protected Gtk.Box scrolled_box; public static string font = AGSettings.get_string (AGSettings.KEY_FONT_NAME); public static string font_family = "sans"; @@ -33,6 +34,16 @@ public class ToggleBox : Gtk.Box { Object (default_key: default_key, starting_key: starting_key, selected_key: starting_key); + Gtk.ScrolledWindow scrolled_window = new Gtk.ScrolledWindow (null, null); + scrolled_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 2); + add (scrolled_window); + scrolled_window.add (scrolled_box); + scrolled_window.show (); + scrolled_box.show (); + scrolled_window.set_max_content_height (210); // Show a max of 5 sessions + scrolled_window.set_propagate_natural_height (true); + scrolled_window.set_policy (Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); + scrolled_window.set_shadow_type (Gtk.ShadowType.NONE); /* Split font family and size via regular expression. */ Regex font_regexp = new Regex ("^([[:blank:]]*)(?[ a-zA-Z0-9]+) (?[0-9]+)([[:blank:]]*)$"); @@ -55,7 +66,7 @@ public class ToggleBox : Gtk.Box select (item); item.show (); - add (item); + scrolled_box.add (item); } public void set_normal_button_style (Gtk.Button button) -- cgit v1.2.3 From d07a49f45ecb53bf76c7d9abeba1d5127733c15a Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Fri, 13 Jan 2023 15:02:08 +0000 Subject: badges: Add pademelon. Ported from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/2dbf7308961572ae730db83deb398d0045f31d91 --- data/Makefile.am | 1 + data/badges/pademelon_badge.png | Bin 0 -> 7361 bytes src/session-list.vala | 2 ++ 3 files changed, 3 insertions(+) create mode 100644 data/badges/pademelon_badge.png diff --git a/data/Makefile.am b/data/Makefile.am index 55216b3..c2a54fd 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -47,6 +47,7 @@ dist_pkgdata_DATA = \ badges/matchbox_badge.png \ badges/mate_badge.png \ badges/openbox_badge.png \ + badges/pademelon_badge.png \ badges/remote_login_help.png \ badges/recovery_console_badge.png \ badges/sugar_badge.png \ diff --git a/data/badges/pademelon_badge.png b/data/badges/pademelon_badge.png new file mode 100644 index 0000000..f3a75b7 Binary files /dev/null and b/data/badges/pademelon_badge.png differ diff --git a/src/session-list.vala b/src/session-list.vala index d12e6f0..55f2758 100644 --- a/src/session-list.vala +++ b/src/session-list.vala @@ -144,6 +144,8 @@ public class SessionList : GreeterList return "mate_badge.png"; case "openbox": return "openbox_badge.png"; + case "pademelon": + return "pademelon_badge.png"; case "sugar": return "sugar_badge.png"; case "surf-display": -- cgit v1.2.3 From f026668e8ec52331fd70296fa25e24d0e23eee63 Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Fri, 13 Jan 2023 15:09:39 +0000 Subject: badges: Add lxqt. Port from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/d6fcbd63919d9f301b65fbcfab956e69d686fbfc --- data/Makefile.am | 1 + data/badges/lxqt_badge.png | Bin 0 -> 773 bytes src/session-list.vala | 3 +++ 3 files changed, 4 insertions(+) create mode 100644 data/badges/lxqt_badge.png diff --git a/data/Makefile.am b/data/Makefile.am index c2a54fd..f4d1d2d 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -44,6 +44,7 @@ dist_pkgdata_DATA = \ badges/fynedesk_badge.svg \ badges/kde_badge.png \ badges/lxde_badge.png \ + badges/lxqt_badge.png \ badges/matchbox_badge.png \ badges/mate_badge.png \ badges/openbox_badge.png \ diff --git a/data/badges/lxqt_badge.png b/data/badges/lxqt_badge.png new file mode 100644 index 0000000..1534284 Binary files /dev/null and b/data/badges/lxqt_badge.png differ diff --git a/src/session-list.vala b/src/session-list.vala index 55f2758..783206a 100644 --- a/src/session-list.vala +++ b/src/session-list.vala @@ -138,6 +138,9 @@ public class SessionList : GreeterList case "lxde": case "LXDE": return "lxde_badge.png"; + case "lxqt": + case "LXQt": + return "lxqt_badge.png"; case "matchbox": return "matchbox_badge.png"; case "mate": -- cgit v1.2.3 From 2577b8a7f3c9e95749665ee48f28d45cbc02ac9c Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Fri, 13 Jan 2023 17:44:38 +0000 Subject: sessions: Add a tooltip on the session badge. Ported from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/cf3742cf155e0925904c7da86457deaea6a87885 --- src/greeter-list.vala | 2 +- src/prompt-box.vala | 7 ++++++- src/user-list.vala | 25 +++++++++++++++++++++---- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/greeter-list.vala b/src/greeter-list.vala index dc41a8f..c574778 100644 --- a/src/greeter-list.vala +++ b/src/greeter-list.vala @@ -155,7 +155,7 @@ public abstract class GreeterList : FadableBox /* When we swap out a scrolling entry, make sure to hide its * image button, else it will appear in the tab chain. */ if (_scrolling_entry != null) - _scrolling_entry.set_options_image (null); + _scrolling_entry.set_options_image (null, null); _scrolling_entry = value; } } diff --git a/src/prompt-box.vala b/src/prompt-box.vala index 2180c70..273c507 100644 --- a/src/prompt-box.vala +++ b/src/prompt-box.vala @@ -385,13 +385,18 @@ public class PromptBox : FadableBox queue_draw (); } - public void set_options_image (Gdk.Pixbuf? image) + public void set_options_image (Gdk.Pixbuf? image, string? tooltip) { if (option_button == null) return; option_image.pixbuf = image; + if (tooltip == null) + option_image.set_tooltip_text(""); + else + option_image.set_tooltip_text(tooltip); + if (image == null) option_button.hide (); else diff --git a/src/user-list.vala b/src/user-list.vala index b4cab22..abbf576 100644 --- a/src/user-list.vala +++ b/src/user-list.vala @@ -121,8 +121,15 @@ public class UserList : GreeterList set { _default_session = value; - if (selected_entry != null) - selected_entry.set_options_image (get_badge ()); + if (selected_entry != null) { + selected_entry.set_options_image (get_badge (), value); + foreach (var session in LightDM.get_sessions ()) { + if (session.key == value) { + selected_entry.set_options_image (get_badge (), session.name); + break; + } + } + } } } @@ -136,8 +143,18 @@ public class UserList : GreeterList set { _session = value; - if (selected_entry != null) - selected_entry.set_options_image (get_badge ()); + if (selected_entry != null) { + selected_entry.set_options_image (get_badge (), value); + if (selected_entry != null) { + selected_entry.set_options_image (get_badge (), value); + foreach (var session in LightDM.get_sessions ()) { + if (session.key == value) { + selected_entry.set_options_image (get_badge (), session.name); + break; + } + } + } + } } } -- cgit v1.2.3 From 74ad7aca037b60b3d9aa7bf089e0ff9e55e2b72b Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Mon, 6 Feb 2023 10:10:09 +0100 Subject: sessions: Close dialog on Escape. Ported from Slick Greeter ported by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/aaa10cc2a080cf5fecc693bde7ba473ad87bbe96 --- src/main-window.vala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main-window.vala b/src/main-window.vala index d7fe6f0..a44ede0 100644 --- a/src/main-window.vala +++ b/src/main-window.vala @@ -378,6 +378,16 @@ public class MainWindow : Gtk.Window } } } + else if (stack.top () is SessionList) { + // Session list is open + switch (event.keyval) { + case Gdk.Key.Escape: + case Gdk.Key.Left: + case Gdk.Key.KP_Left: + pop_list(); + return true; + } + } var greeter = new ArcticaGreeter (); switch (event.keyval) -- cgit v1.2.3 From 395b2cadbf259ea93096676a271392278340c21e Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Tue, 17 Jan 2023 11:12:07 +0000 Subject: keyboard navigation: Don't prevent left/right movement in Gtk.Entry. The shutdown dialog Left/Right navigation works without this code anyway. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/d9d47171d4c00a7004a5548f7e170355c2ba1618 --- src/main-window.vala | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/main-window.vala b/src/main-window.vala index a44ede0..614014d 100644 --- a/src/main-window.vala +++ b/src/main-window.vala @@ -418,16 +418,6 @@ public class MainWindow : Gtk.Window if (login_box.sensitive) top.scroll (GreeterList.ScrollTarget.DOWN); return true; - case Gdk.Key.Left: - case Gdk.Key.KP_Left: - if (shutdown_dialog != null) - shutdown_dialog.focus_prev (); - return true; - case Gdk.Key.Right: - case Gdk.Key.KP_Right: - if (shutdown_dialog != null) - shutdown_dialog.focus_next (); - return true; case Gdk.Key.F10: if (login_box.sensitive) menubar.select_first (false); -- cgit v1.2.3 From 3d288d37411db11a4826d6a70a26d842241af3e0 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Mon, 6 Feb 2023 10:19:28 +0100 Subject: a11y: Make the onboard layout configurable. Original patch by Clement Lefebvre (Slick Greeter). https://github.com/linuxmint/slick-greeter/commit/ae090039efff87ad8b9b856f3fe451f9f41d21be Modified by Mike Gabriel (change: don't store the complete layout path in gsettings). --- data/org.ArcticaProject.arctica-greeter.gschema.xml | 4 ++++ src/menubar.vala | 12 ++++++++++-- src/settings.vala | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/data/org.ArcticaProject.arctica-greeter.gschema.xml b/data/org.ArcticaProject.arctica-greeter.gschema.xml index 419e267..9f7fc6e 100644 --- a/data/org.ArcticaProject.arctica-greeter.gschema.xml +++ b/data/org.ArcticaProject.arctica-greeter.gschema.xml @@ -147,5 +147,9 @@ 'auto' Monitor on which to show the Login GUI + + 'Small' + Name of the onscreen keyboard layout (see /usr/share/onboard/layouts/ for available layout names). + diff --git a/src/menubar.vala b/src/menubar.vala index a417a03..87e0bf7 100644 --- a/src/menubar.vala +++ b/src/menubar.vala @@ -536,9 +536,17 @@ public class MenuBar : Gtk.MenuBar try { string[] argv; + string cmd; int onboard_stdout_fd; - - Shell.parse_argv ("onboard --xid", out argv); + var layout = AGSettings.get_string (AGSettings.KEY_ONSCREEN_KEYBOARD_LAYOUT); + var file = File.new_for_path ("/usr/share/onboard/layouts/%s.onboard".printf (layout)); + if (file.query_exists ()) { + cmd = "onboard --xid --layout='/usr/share/onboard/layouts/%s.onboard'".printf (layout); + } + else { + cmd = "onboard --xid"; + } + Shell.parse_argv (cmd, out argv); Process.spawn_async_with_pipes (null, argv, null, diff --git a/src/settings.vala b/src/settings.vala index 05f54fe..9eef320 100644 --- a/src/settings.vala +++ b/src/settings.vala @@ -41,6 +41,7 @@ public class AGSettings : Object public const string KEY_XFT_HINTSTYLE = "xft-hintstyle"; public const string KEY_XFT_RGBA = "xft-rgba"; public const string KEY_ONSCREEN_KEYBOARD = "onscreen-keyboard"; + public const string KEY_ONSCREEN_KEYBOARD_LAYOUT = "onscreen-keyboard-layout"; public const string KEY_HIGH_CONTRAST = "high-contrast"; public const string KEY_BIG_FONT = "big-font"; public const string KEY_SCREEN_READER = "screen-reader"; -- cgit v1.2.3 From f7461080c7e9ece34928850b6c9ce99abc808b97 Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Tue, 17 Jan 2023 14:41:25 +0000 Subject: entry: Support the ability to reveal the password. This adds the following features: - Clicking the entry shows a reveal button - Pressing Left or Right shows the button - Clicking the button toggles the visibility of the password - Pressing Alt+F8 shows the button and toggles the visibility Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/2e8797c80a2d8febf8f89bf38e1040ccbf8be4e0 --- src/prompt-box.vala | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/prompt-box.vala b/src/prompt-box.vala index 273c507..a5d44bb 100644 --- a/src/prompt-box.vala +++ b/src/prompt-box.vala @@ -629,6 +629,30 @@ public class PromptBox : FadableBox { entry.visibility = false; entry.caps_lock_warning = true; + entry.button_release_event.connect ((widget, event) => { + if (event.button == 1) + show_toggle_visibility_icon (entry); + return false; + }); + entry.key_press_event.connect ((widget, event) => { + switch (event.keyval) { + case Gdk.Key.Left: + case Gdk.Key.KP_Left: + case Gdk.Key.Right: + case Gdk.Key.KP_Right: + show_toggle_visibility_icon (entry); + return false; + case Gdk.Key.F8: + if (Gdk.ModifierType.MOD1_MASK in event.state) { + entry.set_visibility (!entry.get_visibility ()); + show_toggle_visibility_icon (entry); + return true; + } + break; + } + return base.key_press_event (event); + }); + entry.icon_press.connect(entry_icon_press_cb); } entry.respond.connect (entry_activate_cb); @@ -638,6 +662,22 @@ public class PromptBox : FadableBox return entry; } + public void show_toggle_visibility_icon (Gtk.Entry entry) + { + if (entry.get_visibility ()) { + entry.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, "view-conceal-symbolic"); + } + else { + entry.set_icon_from_icon_name(Gtk.EntryIconPosition.PRIMARY, "view-reveal-symbolic"); + } + } + + public void entry_icon_press_cb (Gtk.Entry entry, Gtk.EntryIconPosition position, Gdk.Event event) + { + entry.set_visibility (!entry.get_visibility ()); + show_toggle_visibility_icon (entry); + } + public Gtk.ComboBox add_combo (GenericArray texts, bool read_only) { Gtk.ComboBoxText combo; -- cgit v1.2.3 From ed942f51e74557532f2d6a49c972e6124e76dff6 Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Tue, 17 Jan 2023 15:53:41 +0000 Subject: arctica-greeter-check-hidpi: Fix deprecations. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/1fb20ba8665651307e6d498dc07009a2da26ab40 --- arctica-greeter-check-hidpi | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/arctica-greeter-check-hidpi b/arctica-greeter-check-hidpi index eaa01ca..8674300 100755 --- a/arctica-greeter-check-hidpi +++ b/arctica-greeter-check-hidpi @@ -29,13 +29,11 @@ def get_window_scale(): window_scale = 1 try: display = Gdk.Display.get_default() - screen = display.get_default_screen() - primary = screen.get_primary_monitor() - - rect = screen.get_monitor_geometry(primary) - width_mm = screen.get_monitor_width_mm(primary) - height_mm = screen.get_monitor_height_mm(primary) - monitor_scale = screen.get_monitor_scale_factor(primary) + monitor = display.get_primary_monitor() + rect = monitor.get_geometry() + width_mm = monitor.get_width_mm() + height_mm = monitor.get_height_mm() + monitor_scale = monitor.get_scale_factor() # Return 1 if the screen size isn't available (some TVs report their aspect ratio instead ... 16/9 or 16/10) if ((width_mm == 160 and height_mm == 90) \ -- cgit v1.2.3 From 2a13e8411b82d08a614b183470ac1d09b84cccf5 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Mon, 6 Feb 2023 10:30:09 +0100 Subject: README.md: Provide README.md file, using Slick Greeter's README.md as inspiration. --- README | 2 +- README.md | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) mode change 100644 => 120000 README create mode 100644 README.md diff --git a/README b/README deleted file mode 100644 index 61ef7b6..0000000 --- a/README +++ /dev/null @@ -1 +0,0 @@ -https://github.com/ArcticaProject/arctica-greeter diff --git a/README b/README new file mode 120000 index 0000000..42061c0 --- /dev/null +++ b/README @@ -0,0 +1 @@ +README.md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..5565195 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# Arctica Greeter + +## Configuration + +- The default configuration is stored in dconf under the schema org.ArcticaProject.arctica-greeter. +- Distributions should set their own defaults using a GLib override. + +# Features + +- Arctica Greeter is cross-distribution and should work pretty much anywhere. +- Arctica Greeter uses Ayatana Indicators for the tray icons, so make sure they are available in your distribution, as well. +- This greeter supports HiDPI. +- Sessions are validated. If a default/chosen session isn't present on the system, the greeter scans for known sessions in /usr/share/xsessions and replaces the invalid session choice with a valid session. +- You can take a screenshot by pressing PrintScrn. The screenshot is saved in /var/lib/lightdm/Screenshot.png. + +# Credits + +- Arctica Greeter started as a fork of Unity Greeter 16.04.2, a greeter developed for Ubuntu by Canonical. Furtheron, various improvements are take from Slick Greeter, the LinuxMint fork of Unity Greeter. -- cgit v1.2.3 From c5f16ead014454267163f4a8a65f8178fc7369c9 Mon Sep 17 00:00:00 2001 From: Clement Lefebvre Date: Tue, 17 Jan 2023 15:54:28 +0000 Subject: user-list: Allow hidden user visibility to be toggled. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/ce8704c02498fef137908e36b315d0876300d2c2 --- src/main-window.vala | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main-window.vala b/src/main-window.vala index 614014d..5dd5a9a 100644 --- a/src/main-window.vala +++ b/src/main-window.vala @@ -363,19 +363,16 @@ public class MainWindow : Gtk.Window if (stack.top () is UserList) { var user_list = stack.top () as UserList; - if (!user_list.show_hidden_users) + var shift_mask = Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK; + var control_mask = Gdk.ModifierType.SHIFT_MASK | Gdk.ModifierType.MOD1_MASK; + var alt_mask = Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK; + if (((event.keyval == Gdk.Key.Shift_L || event.keyval == Gdk.Key.Shift_R) && (event.state & shift_mask) == shift_mask) || + ((event.keyval == Gdk.Key.Control_L || event.keyval == Gdk.Key.Control_R) && (event.state & control_mask) == control_mask) || + ((event.keyval == Gdk.Key.Alt_L || event.keyval == Gdk.Key.Alt_R) && (event.state & alt_mask) == alt_mask)) { - var shift_mask = Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.MOD1_MASK; - var control_mask = Gdk.ModifierType.SHIFT_MASK | Gdk.ModifierType.MOD1_MASK; - var alt_mask = Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK; - if (((event.keyval == Gdk.Key.Shift_L || event.keyval == Gdk.Key.Shift_R) && (event.state & shift_mask) == shift_mask) || - ((event.keyval == Gdk.Key.Control_L || event.keyval == Gdk.Key.Control_R) && (event.state & control_mask) == control_mask) || - ((event.keyval == Gdk.Key.Alt_L || event.keyval == Gdk.Key.Alt_R) && (event.state & alt_mask) == alt_mask)) - { - debug ("Hidden user key combination detected"); - user_list.show_hidden_users = true; - return true; - } + debug ("Hidden user key combination detected"); + user_list.show_hidden_users = ! user_list.show_hidden_users; + return true; } } else if (stack.top () is SessionList) { -- cgit v1.2.3 From d30af2b00b1a5a0ddb7cfd214b98718da758917a Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Mon, 6 Feb 2023 10:56:44 +0100 Subject: Enable touchpad tap-to-click. Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/85f83be9977faf2482d38d2cc289f0542b1c06a4 --- Makefile.am | 1 + arctica-greeter-enable-tap-to-click | 40 +++++++++++++++++++++++++++++++++++++ debian/arctica-greeter.install | 1 + src/arctica-greeter.vala | 13 ++++++++++++ 4 files changed, 55 insertions(+) create mode 100755 arctica-greeter-enable-tap-to-click diff --git a/Makefile.am b/Makefile.am index 730cceb..112eb3e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -11,6 +11,7 @@ pkglibexec_SCRIPTS = lightdm-arctica-greeter-session \ arctica-greeter-guest-session-auto.sh \ arctica-greeter-guest-session-setup.sh \ arctica-greeter-check-hidpi \ + arctica-greeter-enable-tap-to-click \ arctica-greeter-set-keyboard-layout EXTRA_DIST = \ diff --git a/arctica-greeter-enable-tap-to-click b/arctica-greeter-enable-tap-to-click new file mode 100755 index 0000000..105eabe --- /dev/null +++ b/arctica-greeter-enable-tap-to-click @@ -0,0 +1,40 @@ +#!/usr/bin/python3 + +import sys +import os +import syslog +import subprocess +import re + +if __name__ == '__main__': + + try: + output = subprocess.check_output(["xinput", "list"]).decode("UTF-8") + for line in output.splitlines(): + line = line.strip().lower() + if "pointer" in line: + m = re.search(r'id=(\d+)', line) + if m: + if len(m.groups()) > 0: + device_id = m.groups()[0] + syslog.syslog(f"Found xinput pointer: id={device_id}") + props = subprocess.check_output(["xinput", "list-props", device_id]).decode("UTF-8") + for prop in props.splitlines(): + prop = prop.strip() + if "Tapping Enabled Default" in prop: + continue + if "Tapping Enabled" in prop: + syslog.syslog(" --> This device has a tap-to-click property") + m = re.search(r'Tapping Enabled \((\d+)\):', prop) + if m: + if len(m.groups()) > 0: + prop_id = m.groups()[0] + syslog.syslog(f" --> Tapping Enabled property ID: {prop_id}") + syslog.syslog(f" --> Calling 'xinput set-prop {device_id} {prop_id} 1'") + subprocess.check_output(["xinput", "set-prop", device_id, prop_id, "1"]) + + except Exception as e: + # best effort, syslog it and bail out + syslog.syslog("ERROR: %s" % e) + + sys.exit(0) diff --git a/debian/arctica-greeter.install b/debian/arctica-greeter.install index 773e2c9..e9aaf72 100644 --- a/debian/arctica-greeter.install +++ b/debian/arctica-greeter.install @@ -11,5 +11,6 @@ usr/share/sounds/ usr/share/xgreeters/ usr/lib/*/arctica-greeter/lightdm-arctica-greeter-session usr/lib/*/arctica-greeter/arctica-greeter-check-hidpi +usr/lib/*/arctica-greeter/arctica-greeter-enable-tap-to-click usr/lib/*/arctica-greeter/arctica-greeter-set-keyboard-layout var/lib/polkit-1/localauthority/10-vendor.d/arctica-greeter.pkla diff --git a/src/arctica-greeter.vala b/src/arctica-greeter.vala index 89d52b8..e193140 100644 --- a/src/arctica-greeter.vala +++ b/src/arctica-greeter.vala @@ -720,6 +720,16 @@ public class ArcticaGreeter : Object } } + private static void enable_tap_to_click () + { + try { + Process.spawn_command_line_sync("/usr/bin/arctica-greeter-enable-tap-to-click", null, null, null); + } + catch (Error e){ + warning ("Error while enabling tap-to-click: %s", e.message); + } + } + private static void activate_numlock () { try { @@ -897,6 +907,9 @@ public class ArcticaGreeter : Object } } + /* Enable touchpad tap-to-click */ + enable_tap_to_click (); + Gtk.init (ref args); Ido.init (); -- cgit v1.2.3 From ea9949563c15c891bdc29f8a851fc5bb5deb1922 Mon Sep 17 00:00:00 2001 From: Joshua Peisach Date: Sun, 10 Jan 2021 20:13:43 -0500 Subject: shutdown-dialog: margin left/right -> margin_start_end. Ref: https://valadoc.org/gtk+-3.0/Gtk.Widget.margin_left.html Ref: https://valadoc.org/gtk+-3.0/Gtk.Widget.margin_right.html Ported from Slick Greeter by Mike Gabriel. https://github.com/linuxmint/slick-greeter/commit/dcbb38af4d3f4276889f958b883c962bb8957fa6 --- src/shutdown-dialog.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shutdown-dialog.vala b/src/shutdown-dialog.vala index cf5e4a0..18e44b1 100644 --- a/src/shutdown-dialog.vala +++ b/src/shutdown-dialog.vala @@ -83,8 +83,8 @@ public class ShutdownDialog : Gtk.Fixed vbox.margin = BORDER_INTERNAL_SIZE; vbox.margin_top += 9; - vbox.margin_left += 20; - vbox.margin_right += 20; + vbox.margin_start += 20; + vbox.margin_end += 20; vbox.margin_bottom += 2; // This event box consumes the click events inside the vbox -- cgit v1.2.3 From 5ffd6d93a5f1120f7b2295b377d7a938394a7702 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Mon, 6 Feb 2023 10:47:24 +0100 Subject: .patches-to-be-ported-from-slick-greeter/: ToDo: check whether to port this Slick Greeter patches to Arctica Greeter. --- ...to-span-background-across-multiple-monito.patch | 329 +++++++++++++++++++++ .../0027-Rename-simplify-background-mode.patch | 93 ++++++ ...Allow-wayland-sessions-to-pass-validation.patch | 43 +++ 3 files changed, 465 insertions(+) create mode 100644 .patches-to-be-ported-from-slick-greeter/0025-Add-option-to-span-background-across-multiple-monito.patch create mode 100644 .patches-to-be-ported-from-slick-greeter/0027-Rename-simplify-background-mode.patch create mode 100644 .patches-to-be-ported-from-slick-greeter/0062-Allow-wayland-sessions-to-pass-validation.patch diff --git a/.patches-to-be-ported-from-slick-greeter/0025-Add-option-to-span-background-across-multiple-monito.patch b/.patches-to-be-ported-from-slick-greeter/0025-Add-option-to-span-background-across-multiple-monito.patch new file mode 100644 index 0000000..5453a96 --- /dev/null +++ b/.patches-to-be-ported-from-slick-greeter/0025-Add-option-to-span-background-across-multiple-monito.patch @@ -0,0 +1,329 @@ +From 293fa0d6a596ba9f1e9dd78a3da171fea3110b84 Mon Sep 17 00:00:00 2001 +From: Geoff Paul +Date: Sat, 7 Mar 2020 14:07:01 -0600 +Subject: [PATCH 25/81] Add option to span background across multiple monitors + +Signed-off-by: Mike Gabriel +--- + data/x.dm.slick-greeter.gschema.xml | 8 +++ + src/background.vala | 87 ++++++++++++++++++++++------- + src/greeter-list.vala | 1 - + src/main-window.vala | 22 +------- + src/settings.vala | 2 + + 5 files changed, 81 insertions(+), 39 deletions(-) + +diff --git a/data/x.dm.slick-greeter.gschema.xml b/data/x.dm.slick-greeter.gschema.xml +index 90ebec8..7ceba14 100644 +--- a/data/x.dm.slick-greeter.gschema.xml ++++ b/data/x.dm.slick-greeter.gschema.xml +@@ -9,6 +9,14 @@ + '#000000' + Background color (e.g. #772953), set before wallpaper is seen + ++ ++ ++ ++ ++ ++ 'zoom' ++ Determines how the background image is rendered ++ + + true + Whether to draw user backgrounds +diff --git a/src/background.vala b/src/background.vala +index f0789bf..e258d84 100644 +--- a/src/background.vala ++++ b/src/background.vala +@@ -29,7 +29,6 @@ class BackgroundLoader : Object + public Gdk.RGBA average_color; + + private Cairo.Surface target_surface; +- private bool draw_grid; + private Thread thread; + private Gdk.Pixbuf[] images; + private bool finished; +@@ -37,7 +36,7 @@ class BackgroundLoader : Object + + public signal void loaded (); + +- public BackgroundLoader (Cairo.Surface target_surface, string filename, int[] widths, int[] heights, bool draw_grid) ++ public BackgroundLoader (Cairo.Surface target_surface, string filename, int[] widths, int[] heights) + { + this.target_surface = target_surface; + this.filename = filename; +@@ -45,7 +44,6 @@ class BackgroundLoader : Object + this.heights = heights; + patterns = new Cairo.Pattern[widths.length]; + images = new Gdk.Pixbuf[widths.length]; +- this.draw_grid = draw_grid; + } + + public bool load () +@@ -388,11 +386,14 @@ public class Monitor + + public class Background : Gtk.Fixed + { ++ [Flags] + public enum DrawFlags + { + NONE, + GRID, ++ SPAN, + } ++ private DrawFlags flags = DrawFlags.NONE; + + /* Fallback color - shown upon first startup, until an async background loader finishes, + * or until a user background or default background is loaded. +@@ -464,7 +465,28 @@ public class Background : Gtk.Fixed + } + } + +- public bool draw_grid { get; set; default = true; } ++ /* Width - total pixel width of the entire background canvas. This total width ++ * should account for the relative geometry of all attached monitors. ++ */ ++ ++ private int _width = 0; ++ public int width { ++ get { ++ return _width; ++ } ++ } ++ ++ /* Height - total pixel height of the entire background canvas. This total height ++ * should account for the relative geometry of all attached monitors. ++ */ ++ ++ private int _height = 0; ++ public int height { ++ get { ++ return _height; ++ } ++ } ++ + public double alpha { get; private set; default = 1.0; } + public Gdk.RGBA average_color { get { return current.average_color; } } + +@@ -493,8 +515,13 @@ public class Background : Gtk.Fixed + timer = null; + + resize_mode = Gtk.ResizeMode.QUEUE; +- draw_grid = UGSettings.get_boolean (UGSettings.KEY_DRAW_GRID); + loaders = new HashTable (str_hash, str_equal); ++ if (UGSettings.get_boolean (UGSettings.KEY_DRAW_GRID)) ++ flags |= DrawFlags.GRID; ++ ++ var mode = UGSettings.get_string (UGSettings.KEY_BACKGROUND_MODE); ++ if (mode == "spanned") ++ flags |= DrawFlags.SPAN; + + show (); + } +@@ -545,7 +572,15 @@ public class Background : Gtk.Fixed + { + this.monitors = new List (); + foreach (var m in monitors) ++ { ++ if (_width < m.x + m.width) ++ _width = m.x + m.width; ++ ++ if (_height < m.y + m.height) ++ _height = m.y + m.height; ++ + this.monitors.append (m); ++ } + queue_draw (); + } + +@@ -577,9 +612,6 @@ public class Background : Gtk.Fixed + + public override bool draw (Cairo.Context c) + { +- var flags = DrawFlags.NONE; +- if (draw_grid) +- flags |= DrawFlags.GRID; + draw_full (c, flags); + return base.draw (c); + } +@@ -625,7 +657,7 @@ public class Background : Gtk.Fixed + + c.restore (); + +- if ((flags & DrawFlags.GRID) != 0) ++ if (DrawFlags.GRID in flags) + overlay_grid (c); + } + +@@ -633,14 +665,22 @@ public class Background : Gtk.Fixed + { + foreach (var monitor in monitors) + { +- var pattern = background.get_pattern (monitor.width, monitor.height); ++ Cairo.Pattern? pattern; ++ var matrix = Cairo.Matrix.identity (); ++ if (DrawFlags.SPAN in flags) ++ { ++ pattern = background.get_pattern (_width, _height); ++ } ++ else ++ { ++ pattern = background.get_pattern (monitor.width, monitor.height); ++ matrix.translate (-monitor.x, -monitor.y); ++ } ++ + if (pattern == null) + continue; + + c.save (); +- pattern = background.get_pattern (monitor.width, monitor.height); +- var matrix = Cairo.Matrix.identity (); +- matrix.translate (-monitor.x, -monitor.y); + pattern.set_matrix (matrix); + c.set_source (pattern); + c.rectangle (monitor.x, monitor.y, monitor.width, monitor.height); +@@ -728,19 +768,28 @@ public class Background : Gtk.Fixed + var widths = new int[monitors.length ()]; + var heights = new int[monitors.length ()]; + var n_sizes = 0; +- foreach (var monitor in monitors) ++ if (DrawFlags.SPAN in flags) ++ { ++ widths[n_sizes] = _width; ++ heights[n_sizes] = _height; ++ n_sizes++; ++ } ++ else + { +- if (monitor_is_unique_size (monitor)) ++ foreach (var monitor in monitors) + { +- widths[n_sizes] = monitor.width; +- heights[n_sizes] = monitor.height; +- n_sizes++; ++ if (monitor_is_unique_size (monitor)) ++ { ++ widths[n_sizes] = monitor.width; ++ heights[n_sizes] = monitor.height; ++ n_sizes++; ++ } + } + } + widths.resize (n_sizes); + heights.resize (n_sizes); + +- b = new BackgroundLoader (target_surface, filename, widths, heights, draw_grid); ++ b = new BackgroundLoader (target_surface, filename, widths, heights); + b.logo = version_logo_surface; + b.loaded.connect (() => { reload (); }); + b.load (); +diff --git a/src/greeter-list.vala b/src/greeter-list.vala +index 6d8f1f6..958720e 100644 +--- a/src/greeter-list.vala ++++ b/src/greeter-list.vala +@@ -928,7 +928,6 @@ public abstract class GreeterList : FadableBox + } + + /* Set the background */ +- background.draw_grid = false; + background.queue_draw (); + } + +diff --git a/src/main-window.vala b/src/main-window.vala +index ddd3c00..3c4fb2b 100644 +--- a/src/main-window.vala ++++ b/src/main-window.vala +@@ -32,8 +32,6 @@ public class MainWindow : Gtk.Window + private Gtk.Box hbox; + private Gtk.Button back_button; + private ShutdownDialog? shutdown_dialog = null; +- private int window_size_x; +- private int window_size_y; + private bool do_resize; + + public ListStack stack; +@@ -131,8 +129,6 @@ public class MainWindow : Gtk.Window + + add_user_list (); + +- window_size_x = 0; +- window_size_y = 0; + primary_monitor = null; + do_resize = false; + +@@ -147,7 +143,7 @@ public class MainWindow : Gtk.Window + monitors.append (new Monitor (800, 120, 640, 480)); + background.set_monitors (monitors); + move_to_monitor (monitors.nth_data (0)); +- resize (800 + 640, 600); ++ resize (background.width, background.height); + } + else + { +@@ -212,7 +208,7 @@ public class MainWindow : Gtk.Window + /* Setup the size and position of the window */ + public void setup_window () + { +- resize (window_size_x, window_size_y); ++ resize (background.width, background.height); + move (0, 0); + move_to_monitor (primary_monitor); + } +@@ -223,8 +219,6 @@ public class MainWindow : Gtk.Window + Gdk.Monitor primary = display.get_primary_monitor(); + Gdk.Rectangle geometry; + +- window_size_x = 0; +- window_size_y = 0; + monitors = new List (); + primary_monitor = null; + +@@ -234,16 +228,6 @@ public class MainWindow : Gtk.Window + geometry = monitor.get_geometry (); + debug ("Monitor %d is %dx%d pixels at %d,%d", i, geometry.width, geometry.height, geometry.x, geometry.y); + +- if (window_size_x < geometry.x + geometry.width) +- { +- window_size_x = geometry.x + geometry.width; +- } +- +- if (window_size_y < geometry.y + geometry.height) +- { +- window_size_y = geometry.y + geometry.height; +- } +- + if (monitor_is_unique_position (display, i)) + { + var greeter_monitor = new Monitor (geometry.x, geometry.y, geometry.width, geometry.height); +@@ -258,7 +242,7 @@ public class MainWindow : Gtk.Window + } + } + +- debug ("MainWindow is %dx%d pixels", window_size_x, window_size_y); ++ debug ("MainWindow is %dx%d pixels", background.width, background.height); + + background.set_monitors (monitors); + +diff --git a/src/settings.vala b/src/settings.vala +index 7d43449..3822939 100644 +--- a/src/settings.vala ++++ b/src/settings.vala +@@ -22,6 +22,7 @@ public class UGSettings + { + public const string KEY_BACKGROUND = "background"; + public const string KEY_BACKGROUND_COLOR = "background-color"; ++ public const string KEY_BACKGROUND_MODE = "background-mode"; + public const string KEY_DRAW_USER_BACKGROUNDS = "draw-user-backgrounds"; + public const string KEY_DRAW_GRID = "draw-grid"; + public const string KEY_SHOW_HOSTNAME = "show-hostname"; +@@ -119,6 +120,7 @@ public class UGSettings + var string_keys = new List (); + string_keys.append (KEY_BACKGROUND); + string_keys.append (KEY_BACKGROUND_COLOR); ++ string_keys.append (KEY_BACKGROUND_MODE); + string_keys.append (KEY_LOGO); + string_keys.append (KEY_OTHER_MONITORS_LOGO); + string_keys.append (KEY_THEME_NAME); +-- +2.30.2 + diff --git a/.patches-to-be-ported-from-slick-greeter/0027-Rename-simplify-background-mode.patch b/.patches-to-be-ported-from-slick-greeter/0027-Rename-simplify-background-mode.patch new file mode 100644 index 0000000..943c0b8 --- /dev/null +++ b/.patches-to-be-ported-from-slick-greeter/0027-Rename-simplify-background-mode.patch @@ -0,0 +1,93 @@ +From 046bbee24412982cdf7c77224036d6e657193662 Mon Sep 17 00:00:00 2001 +From: Clement Lefebvre +Date: Tue, 12 May 2020 11:04:08 +0100 +Subject: [PATCH 27/81] Rename/simplify background mode + +We only care whether the background is stretched across multiple monitors +or not, let's be explicit and make it clear. + +Signed-off-by: Mike Gabriel +--- + README.md | 1 + + data/x.dm.slick-greeter.gschema.xml | 10 +++------- + src/background.vala | 3 +-- + src/settings.vala | 4 ++-- + 4 files changed, 7 insertions(+), 11 deletions(-) + +diff --git a/README.md b/README.md +index a286568..844dacd 100644 +--- a/README.md ++++ b/README.md +@@ -59,4 +59,5 @@ Configuration file format for /etc/lightdm/slick-greeter.conf + # group-filter=List of groups that users must be part of to be shown (empty list shows all users) + # enable-hidpi=Whether to enable HiDPI support (on/off/auto) + # only-on-monitor=Sets the monitor on which to show the login window, -1 means "follow the mouse" ++ # stretch-background-across-monitors=Whether to stretch the background across multiple monitors (false by default) + [Greeter] +diff --git a/data/x.dm.slick-greeter.gschema.xml b/data/x.dm.slick-greeter.gschema.xml +index 7ceba14..07065bc 100644 +--- a/data/x.dm.slick-greeter.gschema.xml ++++ b/data/x.dm.slick-greeter.gschema.xml +@@ -9,13 +9,9 @@ + '#000000' + Background color (e.g. #772953), set before wallpaper is seen + +- +- +- +- +- +- 'zoom' +- Determines how the background image is rendered ++ ++ false ++ Whether to stretch the background across multiple monitors (or to replicate it on each monitor). + + + true +diff --git a/src/background.vala b/src/background.vala +index e258d84..f076b71 100644 +--- a/src/background.vala ++++ b/src/background.vala +@@ -519,8 +519,7 @@ public class Background : Gtk.Fixed + if (UGSettings.get_boolean (UGSettings.KEY_DRAW_GRID)) + flags |= DrawFlags.GRID; + +- var mode = UGSettings.get_string (UGSettings.KEY_BACKGROUND_MODE); +- if (mode == "spanned") ++ if (UGSettings.get_boolean (UGSettings.KEY_BACKGROUND_STRETCH)) + flags |= DrawFlags.SPAN; + + show (); +diff --git a/src/settings.vala b/src/settings.vala +index 3822939..36aa88e 100644 +--- a/src/settings.vala ++++ b/src/settings.vala +@@ -22,7 +22,7 @@ public class UGSettings + { + public const string KEY_BACKGROUND = "background"; + public const string KEY_BACKGROUND_COLOR = "background-color"; +- public const string KEY_BACKGROUND_MODE = "background-mode"; ++ public const string KEY_BACKGROUND_STRETCH = "stretch-background-across-monitors"; + public const string KEY_DRAW_USER_BACKGROUNDS = "draw-user-backgrounds"; + public const string KEY_DRAW_GRID = "draw-grid"; + public const string KEY_SHOW_HOSTNAME = "show-hostname"; +@@ -120,7 +120,6 @@ public class UGSettings + var string_keys = new List (); + string_keys.append (KEY_BACKGROUND); + string_keys.append (KEY_BACKGROUND_COLOR); +- string_keys.append (KEY_BACKGROUND_MODE); + string_keys.append (KEY_LOGO); + string_keys.append (KEY_OTHER_MONITORS_LOGO); + string_keys.append (KEY_THEME_NAME); +@@ -134,6 +133,7 @@ public class UGSettings + + var bool_keys = new List (); + bool_keys.append (KEY_DRAW_USER_BACKGROUNDS); ++ bool_keys.append (KEY_BACKGROUND_STRETCH); + bool_keys.append (KEY_DRAW_GRID); + bool_keys.append (KEY_SHOW_HOSTNAME); + bool_keys.append (KEY_SHOW_POWER); +-- +2.30.2 + diff --git a/.patches-to-be-ported-from-slick-greeter/0062-Allow-wayland-sessions-to-pass-validation.patch b/.patches-to-be-ported-from-slick-greeter/0062-Allow-wayland-sessions-to-pass-validation.patch new file mode 100644 index 0000000..e3c4889 --- /dev/null +++ b/.patches-to-be-ported-from-slick-greeter/0062-Allow-wayland-sessions-to-pass-validation.patch @@ -0,0 +1,43 @@ +From e6a649d20b926e9b82ea21af384c997636a90c9e Mon Sep 17 00:00:00 2001 +From: Ivan Podogov +Date: Wed, 28 Dec 2022 12:35:51 +0000 +Subject: [PATCH 62/81] Allow wayland sessions to pass validation + +This makes slick-greeter properly remember the last wayland session instead of defaulting to an xsession. + +Signed-off-by: Mike Gabriel +--- + src/slick-greeter.vala | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/src/slick-greeter.vala b/src/slick-greeter.vala +index d1b9815..44661b5 100644 +--- a/src/slick-greeter.vala ++++ b/src/slick-greeter.vala +@@ -204,6 +204,13 @@ public class SlickGreeter + } + } + ++ foreach (string session in sessions) { ++ var path = Path.build_filename ("/usr/share/wayland-sessions/", session.concat(".desktop"), null); ++ if (FileUtils.test (path, FileTest.EXISTS)) { ++ return session; ++ } ++ } ++ + warning ("Could not find a default session."); + return null; + } +@@ -214,7 +221,8 @@ public class SlickGreeter + otherwise, return the default session. */ + if (session != null) { + var path = Path.build_filename ("/usr/share/xsessions/", session.concat(".desktop"), null); +- if (!FileUtils.test (path, FileTest.EXISTS) ) { ++ var waypath = Path.build_filename ("/usr/share/wayland-sessions/", session.concat(".desktop"), null); ++ if (!FileUtils.test (path, FileTest.EXISTS) & !FileUtils.test (waypath, FileTest.EXISTS)) { + debug ("Invalid session: '%s'", session); + session = null; + } +-- +2.30.2 + -- cgit v1.2.3