Commit graph

8263 commits

Author SHA1 Message Date
Felipe Borges
6127c08fa3 system, datetime: Don't set datetime when auto time sync is enabled
The timedate1_call will fail because network time synchronization is enabled:

GDBus.Error:org.freedesktop.timedate1.AutomaticTimeSyncEnabled: Automatic time synchronization is enabled

Let's not set_time when NTP is not available, neither set time by
accident at the widget construction stage. When widgets signals are connected
in the UI file their respective callback was getting called. By moving
the signal connection to callbacks to the widget's _init method we
avoid the unwanted callback call.

Fixes #2945
2024-03-27 14:22:53 +01:00
Felipe Borges
544c146ea8 common: Check for valid GDateTime object before comparing
Avoids the critical below at runtime
11:14:36.7796                   **[873815]:CRITICAL: cc_util_get_smart_date: assertion 'date != NULL' failed
11:14:36.7802                   **[873815]:CRITICAL: cc_util_get_smart_date: assertion 'date != NULL' failed

Which comes from the location panel passing a NULL date object.

\#0  _g_log_abort (breakpoint=1) at ../shell/cc-log.c:72
        debugger_present = 1
\#1  0x000000000045c3c4 in cc_log_write
    (log_level=10, log_domain=0x7ffff7d592eb "GLib", log_message=0x234c400 "g_date_time_difference: assertion 'begin != NULL' failed", fields=0x7fffffffd740, n_fields=4, user_data=0x0)
    at ../shell/cc-log.c:315
        log_str = 0x234b8d0
        stream = 0x7ffff5dbb4e0 <_IO_2_1_stderr_>
        can_color = 1
\#2  0x000000000045c4f5 in cc_log_handler (log_level=G_LOG_LEVEL_CRITICAL, fields=0x7fffffffd740, n_fields=4, user_data=0x0) at ../shell/cc-log.c:348
        log_domain = 0x7ffff7d592eb "GLib"
        log_message = 0x234c400 "g_date_time_difference: assertion 'begin != NULL' failed"
\#3  0x00007ffff7c9f534 in g_log_structured_array () at /lib64/libglib-2.0.so.0
\#4  0x00007ffff7ca4f57 in g_log_default_handler () at /lib64/libglib-2.0.so.0
\#5  0x00007ffff7c9be29 in g_logv () at /lib64/libglib-2.0.so.0
\#6  0x00007ffff7c9c193 in g_log () at /lib64/libglib-2.0.so.0
\#7  0x00007ffff7c787fa in g_date_time_difference () at /lib64/libglib-2.0.so.0
\#8  0x000000000059c186 in cc_util_get_smart_date (date=0x0) at ../panels/common/cc-util.c:124
        today = 0x2350130
        local = 0x2350100
        span = 10791504
\#9  0x00000000004f8a20 in add_location_app (self=0x1dee1c0, app_id=0x232fef0 "org.gnome.Calendar", enabled=1, last_used=459618461810) at ../panels/privacy/cc-location-page.c:209
        data = 0xffffda80
        app_info = 0x2341c50
        t = 0x0
        row = 0x2348280
        w = 0x234fe00
        icon = 0x2345310
        last_used_str = 0x0
        desktop_id = 0x7fffcc034c30 "DL\310\375\a"
\#10 0x00000000004f8db4 in update_perm_store (self=0x1dee1c0, permissions=0x7fffcc04e2c0, permissions_data=0x7fffcc04ee80) at ../panels/privacy/cc-location-page.c:282
        enabled = 1
        last_used = 459618461810
        iter = {x = {140736616260288, 2, 0, 6386038, 140736616096608, 36922576, 16, 3579507750, 140737488345904, 140737350561909, 33733184, 36922576, 140737488345936, 140737350702366, 36922576, 3278251457363369984}}
        key = 0x232fef0 "org.gnome.Calendar"
        value = 0x7fffcc04e090
\#11 0x00000000004f8f4e in on_perm_store_lookup_done (source_object=0x1e24040, res=0x202ba40, user_data=0x1dee1c0) at ../panels/privacy/cc-location-page.c:324
        error = 0x0
        ret = 0x7fffcc04eef0
        permissions = 0x7fffcc04e2c0
        permissions_data = 0x7fffcc04ee80
\#12 0x00007ffff7e9082c in g_task_return_now () at /lib64/libgio-2.0.so.0
\#13 0x00007ffff7e944c3 in g_task_return () at /lib64/libgio-2.0.so.0
\#14 0x00007ffff7efe88b in reply_cb () at /lib64/libgio-2.0.so.0
\#15 0x00007ffff7e9082c in g_task_return_now () at /lib64/libgio-2.0.so.0
\#16 0x00007ffff7e944c3 in g_task_return () at /lib64/libgio-2.0.so.0
2024-03-27 14:22:53 +01:00
Felipe Borges
808bb41348 system: Load subpages on demand
Let's manually wire the row activation to the panel creation so that
we can create panels on demand.

This also makes calls to subpages directly avoid initializing the
other panels.

Fixes #2857
2024-03-27 14:22:53 +01:00
Chris Williams
c14215ea91 system/about: Make print-renderer helper log to stderr
This avoids debug logging appearing in the UI via stdout when
G_MESSAGES_DEBUG is used.

Fixes #2387
2024-03-27 14:22:53 +01:00
Felipe Borges
e1224f499e search: Prevent listbox placeholder from being treated like a row
The Search panel providers listbox has a placeholder label that is
visible when there are no listbox items.

The placeholder label is being considered in the list of children
of the listbox while estimating whether "Moving down" is allowed for
the listbox reorder feature.
2024-03-27 14:22:53 +01:00
Automeris naranja
52323e2620 universal-access: Open subpage when CcPanel.subpage is set
This allows launching the Accessibility panel subpages
from the command line.

See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2940
2024-03-27 14:22:53 +01:00
Felipe Borges
e8b261ebfc system, remote-login: Fix header name typo
Cherry-picked from 96cf88c68f

Fixes
https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/2211#note_2061610
2024-03-25 13:23:48 +01:00
Felipe Borges
8099545f2b privacy: Fix Thunderbolt page tag name
The main panel was looking for a page with tag "bolt" when the panel
is actually using the "thunderbolt" tag.

Cherry-picked from
5323020102

Fixes #2973
2024-03-25 11:24:55 +01:00
Felipe Borges
af041fd8be system, remote-desktop: Don't start Desktop Sharing page hidden
At init it will verify whether the panel can be constructed in the
check_desktop_sharing_available call, and with that hide/show the
panel accordingly.

Fixes #2955
2024-03-18 12:53:26 +01:00
Automeris naranja
47523f03a2 privacy: Update subpage tags in the main page
Each page had its AdwNavigationPage tag updated in [1],
but the tags in the Privacy panel main page weren't
updated, which made all the subpages fail to open.

[1] 917248d7bf
2024-03-14 11:59:39 +01:00
Automeris naranja
87f7a72c23 add-user-dialog: Port to AdwToolbarView
Also, allow closing the dialog with ESC.
2024-03-14 11:58:18 +01:00
Felipe Borges
36f9650e90 system: Use CcPanel.subpage for launching subpages
Rather than overriding the parameters property.
2024-03-12 12:17:53 +01:00
Felipe Borges
76245d592e privacy: Open subpage when CcPanel.subpage is set
Fixes #2940
2024-03-12 12:17:49 +01:00
Felipe Borges
bec20d6cc0 privacy: Update subpages tags to match expected cmdline args 2024-03-12 12:17:42 +01:00
Automeris naranja
42e0bd3ab1 remote-desktop-page: Minor UI changes to the "Encryption Fingerprint" dialog
Make this dialog design closer to what mockups
show[1] by:

- Removing window default-width/height,
so the window size follows the content size
- Using a compact AdwStatusPage
- Using larger fingerprint label horizontal margins
and reducing vertical ones

Also:

- Port the window to AdwToolbarView, which
makes the close button position to be consistent
with other windows
- Allow closing the window with ESC
- Add window size request properties to improve
adaptiveness

[1] cbb4810936
2024-03-12 12:17:23 +01:00
Jakub Steiner
9559cc4171 wacom: adjust graphic
- all the pen assets have no padding inside the SVG itself
- round the shape a little
2024-03-12 12:17:15 +01:00
Peter Hutterer
f2299cf2b3 wacom: Accept eraser types of button when matching stylus IDs
Unlike tip erasers, styli with eraser buttons (which is the vast
majority anyway) have the same tool ID as the pen so the first
matching stylus we find is the right one.

This avoid a warning when a AES stylus is connected - we're constructing
the stylus based on our cache information which is just ID and serial
but no device - meaning the device lookup cannot work.

Fixes: 42b39cb956 ("wacom: Prefer the stylus over the eraser")
2024-03-12 12:17:05 +01:00
Peter Hutterer
ddcda3285b wacom: Add AES styli as separate stylus SVG
These are styli like the Dell Active Pen and most of the styli supplied
with laptops with built-in tablets. We don't always know how many
buttons these have so the SVG has just one large button. They're
typicall slimmer and less rounded than the Wacom pens so let's reflect
this here too.

This requires libwacom 1.4 released June 2020
2024-03-12 12:16:59 +01:00
Automeris naranja
9e1884326e apps: Use AdwStatusPage when showing "No Apps Found"
The scrolling bug described in [1] and [2] doesn't
happen anymore. Apparently this was fixed in [3],
which stopped wrapping the status page inside
a GtkListBox.

Use AdwStatusPage again, since it makes the code
simpler.

[1] 1ae2c5295c
[2] https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/989#note_1837249
[3] e2b4896287
2024-03-12 12:16:18 +01:00
Automeris naranja
579846f5a5 background: Add a transition to the selected background check
So the check appears in a nice way when switching
backgrounds.
2024-03-11 16:11:18 +01:00
Daniel Tang
6a083318af color: Fix GTK4 invisible start calibration button
"action_area" was unused. internal-child is invalid in GTK4,
so the row with the start button doesn't load. This makes the
calibration feature impossible to use. Removing the unused
unrecognized attribute allows the start button to load again.

Fixes: https://askubuntu.com/q/1504329/1004020
Fixes: https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/2043119
2024-03-11 13:43:47 +00:00
Allan Day
5e1db66a73 online-accounts-panel: Organize the accounts list
Group the unbranded accounts and the Microsoft accounts, so that the
list is more logically ordered and looks better.

Fixes #2949
2024-03-11 13:41:55 +00:00
Matthijs Velsink
d26fb10c28 system, users: Remove leftover .desktop file
When the Users panel got moved to System, the original .desktop file was
also moved. However, that is now obsolute with
`panels/system/users/gnome-users-panel.desktop.in`. This old file is
also not referenced in any `meson.build` and contains an outdated `Exec`
line.

So, remove it.
2024-03-11 13:01:56 +00:00
Matthijs Velsink
672e911e09 users-page: Remove unused parameter
This parameter was accidentally left during changes to the original
commit in !2306, and was kept going into !2328.

Closes #2947
2024-03-06 18:31:25 +01:00
Peter Hutterer
d8cb742c6d wacom: Remove an outdated ifdef
libwacom 0.27 was released in 2017, I think we can rely on having that
version now.
2024-03-06 09:11:10 +00:00
Automeris naranja
329e8c8fae remote-session-page: Fix to avoid a string freeze break
A previous commit[1] attempted to prevent "How to Connect"
section string from being translated twice[2].
Desktop Sharing and Remote Login pages have this same
string, but the latter was missing a period at the
end of the phrase, which caused the duplicated issue.

The commit[1] didn't fix the issue entirely, because
the string from the Desktop Sharing page was using
a different apostrophe symbol than the Remote Login page
counterpart (which is the recommended apostrophe symbol
acc. to HIG[3]).

Fix the issue by using the same apostrophe symbol mentioned
above in the string from the Remote Login page. This will
cause the translation from the Desktop Sharing string to be
reused, thus a string freeze break won't happen.

See also: https://gitlab.gnome.org/Teams/Translation/Coordination/-/issues/133

[1] b4131d3b0a
[2] https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2936
[3] https://developer.gnome.org/hig/guidelines/typography.html
2024-03-04 12:22:39 -03:00
Automeris naranja
b4131d3b0a remote-session-page: Add missing period to a phrase
The description text from the "How to Connect" session
doesn't end with a period, unlike the same description
that is located in the Desktop Sharing page[1]. This
unnecessarily duplicate the strings in Damned Lies
and creates an inconsistency.

Add a period to that description text to fix the issue.

[1] https://gitlab.gnome.org/GNOME/gnome-control-center/-/blob/46.rc/panels/system/remote-desktop/cc-remote-session-page.ui?ref_type=tags#L42

Closes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2936
2024-03-04 05:05:34 +00:00
Ray Strode
857265c250 system, remote-desktop: Set port row insensitive when appropriate
Right now we set a subtitle of "" when the port is invalid. This
leads to the "Port" title getting center aligned vertically.

We also keep the port sensitive even when it's empty and there is
little value in copying it.

This commit changes the subtitle to " " so it serves as a
placeholder to keep the "Port" title top aligned. This commit
also makes the port insensitive in that case so the user never
copies the placeholder space.

Closes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2934
2024-03-03 09:26:52 -05:00
Ray Strode
aa99ca5b5b system, remote-desktop: Set port row insensitive when appropriate
Right now we set a subtitle of "" when the port is invalid. This
leads to the "Port" title getting center aligned vertically.

We also keep the port sensitive even when it's empty and there is
little value in copying it.

This commit changes the subtitle to " " so it serves as a
placeholder to keep the "Port" title top aligned. This commit
also makes the port insensitive in that case so the user never
copies the placeholder space.
2024-03-03 09:26:40 -05:00
Adrian Vovk
87a62a7c4a users: Fixup buggy AdwNavigation behavior
Previously, events from accountsservice would be used to change the
state of the AdwNavigation in ways that don't correspond to the event
that happened. For example, deleting an account would pop the top page
off the stack, even if that page didn't belong to that account.

Especially buggy is the behavior of replacing the currently visible page
with the contents of an account that just changed. systemd-homed changes
the user record whenever authentication happens successfully. So, user
Foo might be trying to edit user Bar, type in their password at the
polkit prompt, and end up looking at a broken version of their own
settings page again: the title would be "Bar", there'd be no list of
users, and hitting the back button would take Foo back to the same
settings page they're currently looking at.

This commits refactors the handling of the accountsservice signals to
fix all the bugs

Fixes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2911
2024-03-03 09:19:13 +00:00
Automeris naranja
bb604ad9dd remote-desktop-page: Decrease AdwBreakpoint max-width
650p is way too much and makes the bottom bar to
appear when there is still space available in
the headerbar. Use 450p so the bottom bar will only
appear when the headerbar doesn't have enough
space available.

Follow-up from a4224d9e21
2024-03-02 23:07:35 -03:00
Automeris naranja
a4224d9e21 remote-desktop-page: Use AdwBreakpointBin
When the window width is small, the view switcher
labels get very ellipsized, making them difficult
to read.

Use AdwBreakpointBin to show the view switchers
at the bottom at the page (like in the Mouse & Touchpad
panel) when the window width is small.
2024-03-02 22:50:01 -03:00
Automeris naranja
d9be89a5de remote-desktop: Fix page contents being cut when window is small
- Use halign correctly ("left" and "right" aren't
valid values) and use hexpand in the
"Verify Encryption" button, since halign needs
hexpand set to "true"

- Ditch the spacer box, as it causes the page contents
to not scale correctly when the window width is small

- Add can-shrink property to "Generate New Password" and
"Verify Encryption" buttons so they can shrink when
the window width is small

- Also, set the margin-top only in the GtkBox to avoid
redundancy

Closes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/2933
2024-03-02 22:49:45 -03:00
Automeris naranja
e84623473c remote-session-page: Several small fixes
- Fix the activatable-widget from port_row,
which was pointing to copy_address_button

- Remove a11y labels from copy buttons
because Orca also reads tooltips

- Remove .property style class from entry rows
since this class is only meant to be used
in AdwActionRow and AdwExpanderRow[1]

- Set the copy buttons as suffix widgets
directly, because wrapping them in a GtkBox
is unnecessary

- Fix indentation

[1] https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/style-classes.html#property-rows
2024-03-02 19:58:47 -03:00
Automeris naranja
7ec7e98df6 desktop-sharing-page: Several small fixes
- Fix the activatable-widget from port_row,
which was pointing to copy_address_button

- Remove a11y labels from copy buttons
because Orca also reads tooltips

- Remove .property style class from entry rows
since this class is only meant to be used
in AdwActionRow and AdwExpanderRow[1]

- Set the copy buttons as suffix widgets
directly, because wrapping them in a GtkBox
is unnecessary

- Fix indentation

[1] https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/style-classes.html#property-rows
2024-03-02 19:58:39 -03:00
Dor Askayo
3b6ed64196 display: Show the VRR range when possible
Show the full VRR (Variable Refresh Rate) range of a monitor in the
refresh rate expander row when a variable refresh rate mode is
selected and the minimum refresh rate of the monitor is known.
2024-03-02 20:14:38 +02:00
Dor Askayo
a4de91fb38 display: Add support for Variable Refresh Rate modes
This adds an expander row to allow configuration of display modes
based on whether they have a "fixed" or "variable" refresh rate.
2024-03-02 18:10:02 +00:00
Dor Askayo
63a957591c display-config: Use separate variables to get the closest mode
This will allow reusing the function in a following commit.

No change in behavior.
2024-03-02 18:10:02 +00:00
Dor Askayo
c454430220 display-config: Rename variables for clarity
This make it easier to modify this function in a following commit.

No change in behavior.
2024-03-02 18:10:02 +00:00
Ray Strode
2f66bd7ab5 system, remote-session: Stop critical if no fingerprint
The code currently assumes that if the fingerprint is non-null it's
valid, but gnome-remote-desktop can also set the fingerprint to an
empty string if there's no certificate yet.

This commit makes sure to handle both NULL and empty fingerprints.
2024-03-02 17:43:48 +00:00
Ray Strode
f3b966ba5b system, remote-session: Fix fingerprint dialog when first setting user/pass
If the username and password get set then the certificate fingerprint
isn't updated even if that lets the service start.

This commit fixes things by doing a round trip through the service after
setting the username/password to

1. Make sure the change actually worked
2. Trigger our fingerprint dialog setting code that currently only runs
on reading username/password
2024-03-02 17:43:48 +00:00
Ray Strode
10ac3e8440 system, remote-desktop: Add Generate New Password button
The designs for remote desktop include a generate password
button, so this commit adds one.
2024-03-02 11:10:54 -05:00
Felipe Borges
b001b2dde5 system, remote-desktop: Add "Remote Session" settings
See 85110609cd/remote-desktop/remote-desktop.png
2024-03-02 11:10:54 -05:00
Felipe Borges
524742acec system, remote-desktop: Update strings and styling for "Desktop Sharing"
Following the updates on the mokcups at
85110609cd/remote-desktop/remote-desktop.png
2024-03-02 10:58:35 -05:00
Ray Strode
4b35dd5b8c system, remote-desktop: Generate D-Bus proxy code for gnome-remote-desktop
We'll need this to query the status of the service for
Remote Session support.
2024-03-02 10:54:18 -05:00
Ray Strode
cf39376cca system, remote-desktop: Add new polkit policy
Remote session support needs to be able to start systemd units
and also manage gnome-remote-desktop.

This commit adds a polkit policy to accomodate both subactions
with one overarching action that only needs to be unlocked one time.
2024-03-02 10:54:18 -05:00
Felipe Borges
aee53419f5 system, remote-desktop: Add CcEncryptionFingerprintDialog widget
So that we can reuse the same widget in both Desktop Sharing and
Remote Login pages.
2024-03-02 10:54:18 -05:00
Felipe Borges
71f9073c9a system, remote-desktop: Split Desktop Sharing on its own class 2024-03-02 10:54:18 -05:00
Felipe Borges
b82edb7621 remote-desktop: Consolidate the "Desktop Sharing" term
This change will update the UI and internal reference names to use
the "Desktop Sharing" term, which refers to sharing a user's screen
with remote connections.

This differentiation is being introduced now so that we can avoid
conflict with "Remote Session", which will refer to headless/dedicated
remote desktop sessions.

Mockups
https://gitlab.gnome.org/Teams/Design/settings-mockups/-/raw/master/remote-desktop/remote-desktop.png

See #2827
2024-03-02 10:54:18 -05:00
Automeris naranja
4b56c8b666 keyboard-shortcut-dialog: Fix typo in function name 2024-03-01 09:45:42 +00:00