Summary of changes
- notifications: Handle cellbroacast events from the desktop portal v2
spec
- app-list-model: Track StartupWMClass for better app-id matching
- Avoid flicker when unblanking lock screen with media widget present
- Add status page to feedback quick settings that allows to enable
"Do not disturb" and to go to the feedback settings easily
- Fix showing of active network on Wi-Fi status page when the network
has multiple access points
- Don't let OSD block input on the whole screen when shown
- Disable mobile data quick settings when SIM is locked
- More GTK4 preps
- Issues fixed:
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1222
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1183
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1095
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1180
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1218
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1224
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1222
- Contributors:
- Arun Mani J
- fossdd
- Guido Günther
- Arun Mani J
i18n updates
- UI translations:
- Álvaro Burns (pt_BR)
- Anders Jonsson (sv)
- Andi Chandler (en_GB)
- Antonio Marin (ro)
- Artur S0 (ru)
- Baxrom Raxmatov (uz)
- Danial Behzadi (fa)
- Daniel Rusek (cs)
- Ekaterine Papava (ka)
- Emin Tufan Çetin (tr)
- Martin (sl)
- twlvnn kraftwerk (bg)
- Yaron Shahrabani (he)
- Yuri Chornoivan (uk)
- Álvaro Burns (pt_BR)
Detailed changes
phosh (0.47.0) experimental; urgency=medium
.
[ Antonio Marin ]
* Update Romanian translation
.
phosh (0.47~rc1) experimental; urgency=medium
.
[ Guido Günther ]
* abi: Remove symbols duplicated between plugins and shared library.
Users of the shared lib and plugins should be able to access the quick
setting and its status pages. Since the shared lib exports the plugins
symbols there's no point in having different subsets listed in both.
* docs: Mention the symbols files. Give a hint where to add new symbols.
* splash: Use larger icon again
https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/commit/a1c8a0f61e27e1bcda03412dec772b7a1ed5a795
removed the spinner icon, hence GTK3 added a one in
https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8354
but picks the 16x16 one which is a bit too small.
The 16x16 icon is fine for the other places we use a spinner, like
status pages.
This can go away with the switch to AdwSpinner.
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1222
* build: Depend on libfeedback with sound file support
* notify-feedback: Handle cellbroadcast events
* app-grid: Fix missing icon
emblem-ok-symbolic got remove in the 48 adwaita icon theme:
See https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/commit/a00466f12bd5419d6f22c1097a16fd670431c9d4
* data: Update list of adaptive apps.
TextEditor announces this via the desktop file now while calendar
doesn't
* notify-feedback: Fix inverted logic for cell broadcasts.
Also guard against `NULL` category
Fixes af35ea749 ("notify-feedback: Handle cellbroadcast events")
* notify-feedback: Check basic events.
The logic is going more complex and we had subtle errors so lets
add some checks.
* notify-feedback: Use "notification-missed-generic"
This is available since feedbackd 0.6.0 and we require 0.7.0 nowadays.
* notify-feedback: Check for NULL upfront.
Allows us to use `g_str_equal`.
* tests: Add options to get core dump on asserts under ASAN.
Without these ASAN just aborts without a coredump. As it is not useful
in CI just leave as a comment for now.
* app-list-model: Fix type of debounce it
g_timeout_add_* return `guint` not `gulong`.
* app-list-model: Disconnect debounce on finalize.
Otherwise we might have running timers when the application quits
* app-list-model: Expand test.
Assert that we finalize properly and also check the state
when app infos got loaded.
* app-list-model: Track StartupWMClass as well.
Needed to betterb match toplevels to app-ids
* util: Simplify return value
* util: Match on StartupWMClass as well.
This will allow more cases to work without guessing and we can drop
some heuristics
* util: Drop applications that have a proper StartupWMClass.
No need to track them manually anymore, they all use `StartupWMClass`.
This makes the expected case the first one so things get a little
faster too.
* util: Drop match by last component.
These apps should have a proper StartupWMClass.
* lockscreen: Check for info widgets upfront.
This ensures we have a small clock e.g. when locking the screen with an
ongoing call. This will also be needed with the following commits as the
media widget will be visible initially and hence there won't be a
changed signal.
We hence move from counting invocations to checking the individual
widgets.
* media-player: Don't focus on click.
We want to avoid the cursor frame when touching the widget as it has no
use.
* lockscreen: Set initial focus widget.
Otherwise we end up with the focus on the first focusable widget which
is the media player's detail button and that doesn't look nice.
By setting it to `submit` we ensure that a signal tab gets it to the
first info widget.
* mpris-manager: Manager object that tracks MPRIS players.
This will be used by the media-player widget so we don't have multiple
places tracking the DBus name owner changes.
* media-player: Use MPRIS manager.
This avoids the media widget appearing on the lock screen slightly after
lock as we don't have to wait for the DBus calls anymore.
* monitor: Don't track make and model
wlroots will stop sending these in
https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5045
and we don't use them anyway.
* treewide: Add missing G_PARAM_STATIC_STRINGS.
Avoids a bunch of allocations on startup.
* status-pages: Drop signal_emit_by_name argument.
The `done` signal does not have any parameters. For consistency with
other `g_signal_emit_by_name` in our codebase we pass `NULL` as the
return value location (although it could be omitted).
* notify-manager: Move show-banners to header.
We want to use it in a status page
* data: Add chat icons from GNOME's icon library
* util: Add helper to open mobile settings panels.
We add a separate function as the parameters are slightly different.
* settings: Add action to open mobile settings.
We add a separate action as that makes it more obvious what we're
opening.
* feedback-status-page: Add new status page for feedback settings.
This will allow to enable/disable do-not-disturb mode
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1183
* quick-settings: Add feedback status page
* feedback-status-page: Keep feedback in sync with dnd.
We want to switch to silent when dnd is enabled and back to the old
profile when disabled.
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1095
* polkit-auth-prompt: Don't set icon pass by polkit.
Applications usually pass in the app name which we don't have an icon
for so we usually show the missing icon which is not great.
Ideally we'd show the user avatar there along with more user details.
* notifcation-banner: Unref animation on dispose.
This ensures we run it on gtk_widget_destroy already.
* shell: Clean up banner correctly.
The banner is a toplevel so we want to use gtk_widget_destroy on it. We
connect to the `destroy` signal so in case the layer surface invokes
`gtk_widget_destroy` we don't do it twice.
This avoids a sporadic segfault in the tests when the banner was still
being animated and also avoids a weak pointer where it is not needed.
Fixes 5d4f590b9 ("notification-banner: Add slide-up animation to banner")
(which wasn't the cause but exposed the bug).
Fixes c5556891f ("notifications: maintain a message list")
* osd-window: Don't let it take all the vertical space.
Similar in spirit to
bd8c8c13c ("notifiction-banner: Use valign center")
so we don't cover the space below the OSD with a transparent window
swallowing all input.
* osd-window: Ensure we propagate the width.
As we don't want to allocate the full width anchor to top and set the
width on map.
* wifi-manager: Slightly improve debug messages.
Use Wi-Fi spelling consistently, make messages a bit more expressive
* wifi-network-row: Don't set active indicator visible.
We sync it with a property in `init` so save that extra setup step.
* wifi-network: Don't unconditionally overwrite active access point.
We mustn't overwrite the active access point with an inactive one.
This fixes the missing tick mark in the UI when a network has more than
one access point.
The network is still marked as inactive via `reset_active_wifi_network`
-> `phosh_wifi_network_update_active`.
Fixes 7b83747fc ("wifi-network: Create PhoshWifiNetwork class")
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1180
* mobile-data-quick-setting: Make sure the modem is unlocked.
If the modem's SIM is still locked there's no point in allowing to
toggle mobile data.
Fixes 20ac30db5 ("plugins: Add mobile data toggle")
* app-list-model: Use app_info
`l->data` is harder to parse and we assigned to `app_info` just above
Fixup indent while at that.
* app-list-model: Ignore folders for startup wm class tracking.
Folder don't have a wm class and otherwise raise a critical
Fixes 5b9a575c4 ("app-list-model: Track StartupWMClass as well")
.
[ fossdd ]
* calendar-server: Use a non-declared variable name for timezone
* call-notification: Cast PhoshCallState explicitly to CuiCallState
* testlib: Declare on_phoc_startup_timeout as noreturn
* system-prompt: Avoid declaration of unused variable
* ci: Add debian-trixie-clang CI.
Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1218
.
[ Baxrom Raxmatov ]
* Add Uzbek (Latin) translation
.
[ Arun Mani J ]
* status-icon: Add pixel-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it.
Deprecates `icon-size`.
* tree: Use pixel-size in status-icon
`icon-size` is deprecated in status-icon.
* quick-setting: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it. For the functions that need an icon-size just for namesake,
let's use `-1` so we can ensure that we have replaced its functionality
with pixel-size.
* quick-settings-box-standalone: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it.
* app-grid-button: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it. For the functions that need an icon-size just for namesake,
let's use `-1` so we can ensure that we have replaced its functionality
with pixel-size.
* app-grid-folder-button: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it. For the functions that need an icon-size just for namesake,
let's use `-1` so we can ensure that we have replaced its functionality
with pixel-size.
* app-grid: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it. For the functions that need an icon-size just for namesake,
let's use `-1` so we can ensure that we have replaced its functionality
with pixel-size.
* activity: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it.
* lockscreen: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it.
* app-auth-prompt: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it.
* gtk-mount-prompt: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it. For the functions that need an icon-size just for namesake,
let's use `-1` so we can ensure that we have replaced its functionality
with pixel-size.
* polkit-auth-prompt: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it. For the functions that need an icon-size just for namesake,
let's use `-1` so we can ensure that we have replaced its functionality
with pixel-size.
* ticket-box: Use pixel-size instead of icon-size
`GtkIconSize` values are semantic in GTK 4 and no longer contain the
various values we have in GTK 3. If we need to enforce a specific
pixel-size, we need to use the `pixel-size` property of image. So let's
move to it.
* app-grid: Set pixel-size for images.
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1224
Fixes: 2ed70a190 ("app-grid: Use pixel-size instead of icon-size")
* subprojects: Update libfeedback revision.
Fixes: 5bed6427dde4f3c8ca0cf3a4b8f5e2a7ff34b861
* quick-setting: Use checked instead of active state
`:checked` is the proper state to describe the "activeness". `:active`
denotes whether the button is being activated by user, that is, if it is
being pressed down.
* audio-device-row: Use `margin-*` instead of `margin`
* media-player: Use `margin-*` instead of `margin`
* osd-window: Use `margin-*` instead of `margin`
* power-menu: Use `margin-*` instead of `margin`
* top-panel: Use `margin-*` instead of `margin`
* wifi-status-page: Use `margin-*` instead of `margin`
* calendar: Use `margin-*` instead of `margin`
Also add the XML header for easier file identification.
* emergency-info: Use `margin-*` instead of `margin`
* launcher-box: Use `margin-*` instead of `margin`
* ticket-box: Use `margin-*` instead of `margin`
* upcoming-events: Use `margin-*` instead of `margin`
* notify-blocks: Use `margin-*` instead of `margin`
* check-deprecated-ui-props: Add `margin` to list
* check-deprecated-ui-props: Extend to all UI files
* app-grid: Use `{h,v}expand` instead of `expand`
* emergency-menu: Use `{h,v}expand` instead of `expand`
* lockscreen: Use `{h,v}expand` instead of `expand`
* notification-content: Use `{h,v}expand` instead of `expand`
* polkit-auth-prompt: Use `{h,v}expand` instead of `expand`
* top-panel: Use `{h,v}expand` instead of `expand`
* check-deprecated-ui-props: Add `expand` to list
.
[ Antonio Marin ]
* Update Romanian translation
.
[ Danial Behzadi ]
* Update Persian translation
.
[ Yuri Chornoivan ]
* Update Ukrainian translation
.
[ Artur S0 ]
* Update Russian translation
.
[ Álvaro Burns ]
* Update Brazilian Portuguese translation
.
[ Daniel Rusek ]
* Update Czech translation
.
[ Emin Tufan Çetin ]
* Update Turkish translation
.
[ Martin ]
* Update Slovenian translation
.
[ Ekaterine Papava ]
* Update Georgian translation
.
[ twlvnn kraftwerk ]
* Update Bulgarian translation
.
[ Yaron Shahrabani ]
* Update Hebrew translation
.
[ Andi Chandler ]
* Update British English translation
.
[ Anders Jonsson ]
* Update Swedish translation
Required versions of related projects
- glib >= 2.72.0
- gtk3 >= 3.24.40
- gtk4 >= 4.14
- phoc >= 0.45~beta1
- squeekboard >= 1.43.0
- feedbackd >= 0.7.0
- gnome-calls >= 46.3 for location based emergency calls and feedbackd fix
- wl-clipboar >= 2.2.1
- pipewire: >= 0.3.73 for proper audio icons
- xdg-desktop-portal >= 1.17.1 to honor portal configuration
- xdg-desktop-portal-phosh >= 0.43.0 for accent colors in apps
- phosh-mobile-settings >= 0.44.0
- phosh-tour >= 0.41.0
- gnome-settings-daemon >= 46 to not show the sleep notification on phones
- gsettings-desktop-schemas >= 47 for accent colors
Required patches that are merged upstream but not yet in a released version:
Required patches that aren't merged upstream yet:
- wlroots (>= 0.12.0): Layer shell restrictions. See https://source.puri.sm/Librem5/phosh/-/issues/422. Otherwise phosh will fail to start.
- gtk: xdg-activation-0-serial. Otherwise startup splash always times out
- gnome-keyring: Accessing login keyring after first login fails
Recommended patches on other projects
Patches that are merged upstream but not yet in a released version:
(none)
Patches that aren't merged upstream yet:
- linux: HKS support (not yet submitted): https://source.puri.sm/Librem5/linux-next/-/merge_requests/77
- gtk4 adaptiveness (not yet submitted): https://source.puri.sm/Librem5/debs/gtk4/-/tree/pureos/byzantium/debian/patches/pureos/adaptive
(Not needed for phosh itself but to make GTK4 applications adapt better)
- gtk3 adaptiveness (not yet submitted): https://source.puri.sm/Librem5/debs/gtk/-/tree/pureos/byzantium/debian/patches/pureos/adaptive
(Not needed for phosh itself but to make GTK3 applications adapt better)
- gnome-screenshot adaptiveness: https://gitlab.gnome.org/GNOME/gnome-screenshot/-/merge_requests/69
(Not needed for phosh itself but to make screenshots easier)
- vte: Ignore menu key: https://gitlab.gnome.org/guidog/vte/-/commit/11b29ca2aa2f1715579519699ec17245a411ee0e . See https://gitlab.gnome.org/GNOME/vte/-/issues/2644 (as project doesn't allow merge requests) (Not needed for phosh itself but to get copy/paste menu in e.g. gnome-console)
- gnome-clocks: Feedbackd support https://gitlab.gnome.org/guidog/gnome-clocks/-/tree/lfb
See meson.build and debian/control for build-time and run-time dependencies.
For older releases
These are only some of the required/recommended patches. If in doubt please use the released versions above:
- gtk3: Better touch accuracy (affects phosh, phosh-osk-stub, etc): https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6668 (contained in 3.24.40)
- gnome-text-editor: Hint word completion (so e.g. OSKs know its sensible to use it): https://gitlab.gnome.org/GNOME/gnome-text-editor/-/merge_requests/132 (contained in 46)
- gtk4: Touch DND fixes: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6608 (contained in 4.14)
- gnome-clocks: Allow for lockscreen actions: https://gitlab.gnome.org/GNOME/gnome-clocks/-/merge_requests/277 . Needed to turn off alarms on the lock screen.
- glib (contained in 2.72.0): Notification categories
- gnome-settings-daemon: Claim light sensor async as otherwise screen unblank can take a noticable amount of time
- gsettings-desktop-data (contained in 42): Dark theme toggle
- gnome-control-center (contained in 42): display: Use ComboBox when folded. Otherwise fractional scaling doesn't show all values.
- gnome-control-center (contained in 42): connection-editor: Allow dialog to resize
- gtk4 (contained in 4.6.2): xdg-activation
- gtk4 (contained in 4.6.2): osk unfold
- gtk4 (contained in 4.6.2): osk unfold
- gtk3 (contained in 3.24.30):gtkapplication-dbus: Fetch inital screen saver state async. Otherwise gnome-calls and phosh will block on each other on startup blocking the whole UI.
- geoclue (contained in 2.6.0): Add phosh
- wlroots (contained in 0.16.0): xdg-activation: Allow to submit tokens. Needed for launch splash.
- wlroots (contained in 0.16.0): cancel touches
- xdg-desktop-portal-wlr (contained in 0.6.0): For screen sharing: https://github.com/emersion/xdg-desktop-portal-wlr/pull/192
- pipewire: Add icon_name properties to ucm: https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/1646
- wl-clipboard: Don't require gtk_shell >= 4
- gnome-settings-daemon: Drop sleep notification, otherwise suspend might fail. See https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/issues/656