Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
43d2ad2
Start build for GTK 4
danirabbit Mar 7, 2024
acef097
SessionButton: build menu from model
danirabbit Mar 7, 2024
7d71741
self destruct
danirabbit Mar 7, 2024
0ce4926
equality
danirabbit Mar 7, 2024
035c36c
Merge branch 'danirabbit/sessionbutton-glibmenu' into danirabbit/gtk4
danirabbit Mar 7, 2024
5643020
Maybe fix capslock and numlock?
danirabbit Mar 7, 2024
1d9b300
Merge branch 'master' into danirabbit/gtk4
danirabbit Mar 10, 2024
6d2b0c3
Merge branch 'master' into danirabbit/gtk4
danirabbit Mar 10, 2024
d32dd16
minor API stuff
danirabbit Mar 10, 2024
ecc82af
Merge master
danirabbit Oct 7, 2024
88cfe93
Merge main, backgroundimage picture
danirabbit Oct 7, 2024
0483988
Replace style classes
danirabbit Oct 7, 2024
33ad884
Solve a lot of errors
danirabbit Oct 7, 2024
7d6e957
rm backgroundimage class
danirabbit Oct 8, 2024
54519b5
some usercard fixes
danirabbit Oct 8, 2024
2416b17
Fix carousel stuff
danirabbit Oct 8, 2024
3ca2727
Merge main
danirabbit Oct 18, 2024
f25f577
Use has_frame
danirabbit Oct 18, 2024
5927810
Fix icon_press connect
danirabbit Oct 18, 2024
6584e52
SessionButton: try no hierarchy connect
danirabbit Oct 18, 2024
b7f2726
Redundant app quit on window destroy
danirabbit Oct 18, 2024
1b8d6c3
Fix add controller
danirabbit Oct 18, 2024
5c4b1b3
Fix some focus stuff
danirabbit Oct 18, 2024
e2310c4
Can't subclass menubutton
danirabbit Oct 18, 2024
716fc23
Last compilation problem
danirabbit Oct 18, 2024
c5f1d8a
Fix some stuff
danirabbit Oct 18, 2024
5b982c6
Fix card overflow
danirabbit Oct 18, 2024
558365e
Merge branch 'master' into danirabbit/gtk4
danirabbit Dec 15, 2024
04975b7
merge main
danirabbit Jun 11, 2025
c4dbce6
Update Application.css
danirabbit Jun 11, 2025
1699a5d
merge main
danirabbit Oct 2, 2025
241d7f7
Update protocol stuff
danirabbit Oct 2, 2025
c912a99
Fix up more things
danirabbit Oct 2, 2025
fe78134
Merge branch 'main' into danirabbit/gtk4
danirabbit Oct 2, 2025
28e2184
some fixes
danirabbit Oct 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
- name: Install Dependencies
run: |
apt update
apt install -y desktop-file-utils libaccountsservice-dev libgdk-pixbuf2.0-dev libgnome-desktop-3-dev libgranite-dev libgtk-3-dev libhandy-1-dev liblightdm-gobject-1-dev ${{ matrix.mutter_pkg }} libx11-dev meson valac
apt install -y desktop-file-utils libaccountsservice-dev libgdk-pixbuf2.0-dev libgnome-desktop-3-dev libgranite-7-dev libgtk-4-dev libadwaita-1-dev liblightdm-gobject-1-dev ${{ matrix.mutter_pkg }} libx11-dev meson valac
- name: Build
env:
DESTDIR: out
Expand Down
22 changes: 12 additions & 10 deletions data/Application.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
*/

window.background {
background: transparent;
box-shadow: none;
opacity: 0;
transition: opacity 1s ease;
}
Expand Down Expand Up @@ -74,50 +76,50 @@ check.banana {

check.blueberry {
background-color: mix(@BLUEBERRY_300, @BLUEBERRY_500, 0.25);
-gtk-icon-shadow: 0 1px 1px shade(mix(@BLUEBERRY_300, @BLUEBERRY_500, 0.25), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@BLUEBERRY_300, @BLUEBERRY_500, 0.3), 0.7);
}

check.bubblegum {
background-color: mix(@BUBBLEGUM_300, @BUBBLEGUM_500, 0.25);
-gtk-icon-shadow: 0 1px 1px shade(mix(@BUBBLEGUM_300, @BUBBLEGUM_500, 0.25), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@BUBBLEGUM_300, @BUBBLEGUM_500, 0.3), 0.7);
}

check.cocoa {
background-color: @COCOA_300;
-gtk-icon-shadow: 0 1px 1px shade(@COCOA_300, 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(@COCOA_300, 0.7);
}

check.grape {
background-color: mix(@GRAPE_300, @GRAPE_500, 0.5);
-gtk-icon-shadow: 0 1px 1px shade(mix(@GRAPE_300, @GRAPE_500, 0.5), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@GRAPE_300, @GRAPE_500, 0.3), 0.7);
}

check.latte {
background-color: mix(@LATTE_300, @LATTE_500, 0.25);
-gtk-icon-shadow: 0 1px 1px shade(mix(@LATTE_300, @LATTE_500, 0.25), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@LATTE_300, @LATTE_500, 0.3), 0.7);
}

check.lime {
background-color: mix(@LIME_300, @LIME_500, 0.25);
-gtk-icon-shadow: 0 1px 1px shade(mix(@LIME_300, @LIME_500, 0.25), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@LIME_300, @LIME_500, 0.3), 0.7);
}

check.mint {
background-color: mix(@MINT_300, @MINT_500, 0.75);
-gtk-icon-shadow: 0 1px 1px shade(mix(@MINT_300, @MINT_500, 0.75), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@MINT_300, @MINT_500, 0.3), 0.7);
}

check.orange {
background-color: mix(@ORANGE_300, @ORANGE_500, 0.5);
-gtk-icon-shadow: 0 1px 1px shade(mix(@ORANGE_300, @ORANGE_500, 0.5), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@ORANGE_300, @ORANGE_500, 0.3), 0.7);
}

check.slate {
background-color: @SLATE_100;
-gtk-icon-shadow: 0 1px 1px shade(@SLATE_100, 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(@SLATE_100, 0.7);
}

check.strawberry {
background-color: mix(@STRAWBERRY_300, @STRAWBERRY_500, 0.25);
-gtk-icon-shadow: 0 1px 1px shade(mix(@STRAWBERRY_300, @STRAWBERRY_500, 0.25), 0.3), 0.7);
-gtk-icon-shadow: 0 1px 1px shade(mix(@STRAWBERRY_300, @STRAWBERRY_500, 0.3), 0.7);
}
1 change: 0 additions & 1 deletion po/POTFILES
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ src/Settings.vala
src/Cards/BaseCard.vala
src/Cards/ManualCard.vala
src/Cards/UserCard.vala
src/Widgets/BackgroundImage.vala
src/Widgets/CapsLockRevealer.vala
src/Widgets/DateTimeWidget.vala
src/Widgets/PasswordEntry.vala
Expand Down
6 changes: 1 addition & 5 deletions src/Application.vala
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,7 @@ public class Greeter.Application : Gtk.Application {
protected override void startup () {
base.startup ();

var css_provider = new Gtk.CssProvider ();
css_provider.load_from_resource ("/io/elementary/greeter/Application.css");

Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
Granite.init ();

GLib.Bus.own_name (
SESSION,
Expand Down Expand Up @@ -135,7 +132,6 @@ public class Greeter.Application : Gtk.Application {

public override void activate () {
add_window (new Greeter.MainWindow (lightdm_greeter));
active_window.show_all ();
active_window.present ();
}

Expand Down
2 changes: 1 addition & 1 deletion src/Cards/BaseCard.vala
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Authors: Corentin Noël <corentin@elementary.io>
*/

public abstract class Greeter.BaseCard : Gtk.Bin {
public abstract class Greeter.BaseCard : Granite.Bin {
public signal void do_connect (string? credential = null);

protected const int ERROR_SHAKE_DURATION = 450;
Expand Down
35 changes: 20 additions & 15 deletions src/Cards/ManualCard.vala
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class Greeter.ManualCard : Greeter.BaseCard {
hexpand = true,
margin_bottom = 16
};
label.get_style_context ().add_class (Granite.STYLE_CLASS_H2_LABEL);
label.add_css_class (Granite.STYLE_CLASS_H2_LABEL);

username_entry = new Gtk.Entry () {
hexpand = true,
Expand Down Expand Up @@ -58,23 +58,28 @@ public class Greeter.ManualCard : Greeter.BaseCard {
margin_start = 12,
margin_end = 12
};
main_box.add (form_grid);
main_box.append (form_grid);

main_box.get_style_context ().add_class (Granite.STYLE_CLASS_CARD);
main_box.get_style_context ().add_class (Granite.STYLE_CLASS_ROUNDED);
main_box.add_css_class (Granite.STYLE_CLASS_CARD);
main_box.add_css_class (Granite.STYLE_CLASS_ROUNDED);

child = main_box;

bind_property ("connecting", username_entry, "sensitive", INVERT_BOOLEAN);
bind_property ("connecting", password_entry, "sensitive", INVERT_BOOLEAN);

username_entry.focus_out_event.connect (() => {

var focus_controller = new Gtk.EventControllerFocus ();
focus_controller.leave.connect (() => {
if (username_entry.text != "") {
do_connect_username (username_entry.text);
}
});

username_entry.add_controller (focus_controller);

password_entry.activate.connect (on_login);

}

private void on_login () {
Expand All @@ -89,14 +94,14 @@ public class Greeter.ManualCard : Greeter.BaseCard {
public override void wrong_credentials () {
password_entry.text = "";

username_entry.get_style_context ().add_class (Gtk.STYLE_CLASS_ERROR);
password_entry.get_style_context ().add_class (Gtk.STYLE_CLASS_ERROR);
main_box.get_style_context ().add_class ("shake");
username_entry.add_css_class (Granite.STYLE_CLASS_ERROR);
password_entry.add_css_class (Granite.STYLE_CLASS_ERROR);
main_box.add_css_class ("shake");

Timeout.add (ERROR_SHAKE_DURATION, () => {
username_entry.get_style_context ().remove_class (Gtk.STYLE_CLASS_ERROR);
password_entry.get_style_context ().remove_class (Gtk.STYLE_CLASS_ERROR);
main_box.get_style_context ().remove_class ("shake");
username_entry.remove_css_class (Granite.STYLE_CLASS_ERROR);
password_entry.remove_css_class (Granite.STYLE_CLASS_ERROR);
main_box.remove_css_class ("shake");

connecting = false;
username_entry.grab_focus_without_selecting ();
Expand All @@ -112,12 +117,12 @@ public class Greeter.ManualCard : Greeter.BaseCard {
username_entry.grab_focus_without_selecting ();
username_entry.text = "";

username_entry.get_style_context ().add_class (Gtk.STYLE_CLASS_ERROR);
main_box.get_style_context ().add_class ("shake");
username_entry.add_css_class (Granite.STYLE_CLASS_ERROR);
main_box.add_css_class ("shake");

Timeout.add (ERROR_SHAKE_DURATION, () => {
username_entry.get_style_context ().remove_class (Gtk.STYLE_CLASS_ERROR);
main_box.get_style_context ().remove_class ("shake");
username_entry.remove_css_class (Granite.STYLE_CLASS_ERROR);
main_box.remove_css_class ("shake");

return Source.REMOVE;
});
Expand Down
Loading
Loading