Summary of changes
- Add location quick setting
- caffeine: Allow to select duration and configure durations via mobile
settings
- brightness/auto-brightness improvements:
- Handle auto-brightness via a bucket based algorithm
- Let brightness slider be an offset around the auto-brightness value
- Icon next to brightness slider indicates auto-brightness on/off
- Gradually transition to new auto-brightness value
- Auto-brightness can be enabled/disabled via a status page
- Handle auto-brightness via a bucket based algorithm
- torch: Allow to configure minimal brightness via hwdb/udev
- Fix upcoming-event’s plugin empty state
- Fix “Open settings” button position on devices with rounded corners
- Lots of internal cleanups and fixes
- Issues fixed:
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1255
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1272
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1274
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1276
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1281
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1282
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/783
- https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1255
- Contributors:
- Arun Mani J
- Evangelos Ribeiro Tzaras
- Gotam Gorabh
- Guido Günther
- Robert Eckelmann
- Rudra Pratap Singh
- Arun Mani J
i18n updates
- UI translations:
- Anders Jonsson (sv)
- Antonio Marin (ro)
- Artur S0 (ru)
- Danial Behzadi (fa)
- Daniel Rusek (cs)
- Efstathios Iosifidis (el)
- Ekaterine Papava (ka)
- Emin Tufan Çetin (tr)
- Juliano de Souza Camargo (pt_BR)
- Martin (sl)
- Nathan Follens (nl)
- Sabri Ünal (tr)
- Yaron Shahrabani (he)
- Yuri Chornoivan (uk)
- Anders Jonsson (sv)
Detailed changes
phosh (0.51.0) experimental; urgency=medium
.
[ Artur S0 ]
* Update Russian translation
.
[ Evangelos Ribeiro Tzaras ]
* subprojects: Switch to libcall-ui 0.1.5.
We have a tagged version now.
.
[ Antonio Marin ]
* Update Romanian translation
.
[ Rudra Pratap Singh ]
* caffeine-quick-setting: Add plugin preferences.
We now have 'caffeine-quick-setting-prefs'
preferences that allow one to add or remove
caffeine intervals.
* caffeine-prefs: Add empty-state for no intervals
* caffeine: Close status page on selecting interval
* caffeine-quick-setting: Activate timer on selecting interval
.
[ Martin ]
* Update Slovenian translation
.
[ Guido Günther ]
* caffeine-quick-setting: Make prefs dialog follow content size.
Otherwise in bottom sheet mode adding new rows doesn't make the dialog
resize and the user doesn't see the new rows.
* backlight: Allow to force non linear backlight scale.
Add a debug flag that allows us to assume the backlight uses
a non-linear scale. This is meant for situations where the
kernel information is incorrect.
* tests/integration: Use pixman renderer.
Our udev mocks confuse wlroots when trying to get a render node
otherwise
* ci: Use our pytest runner.
This avoids duplicating env vars in multiple places
* tests/integration: Allow to launch Phosh under a wrapper.
Can be used for udev mocks or valgrind
* tests/integration: Mock and test torch and backlight.
* caffeine/prefs: Make empty state compact.
It's for a dialog, not a main window
* torch-manager: Don't return 0 when torch is on.
This makes it simpler for UI elements to display a sane value. 0% with
the LED still on looks confusing and we require
GM_TORCH_MINIMUM_BRIGHTNESS to indicate a still visible LED brightness.
.
[ Yuri Chornoivan ]
* Update Ukrainian translation
.
[ Ekaterine Papava ]
* Update Georgian translation
.
[ Danial Behzadi ]
* Update Persian translation
.
[ Robert Eckelmann ]
* torch-manager: Add minimum brightness.
We get it from udev when available and fall back to 5% of maximum
brightness otherwise.
The udev rule to provide minimum brightness overrides via hwdb is
shipped in gmobile.
* settings: Drop minimum brightness.
This is now handeld by torch manager
.
[ Sabri Ünal ]
* Update Turkish translation
.
phosh (0.51~rc1) experimental; urgency=medium
.
[ Rudra Pratap Singh ]
* upcoming-events: Show appropriate status page in case of no events.
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1255
Fixes: 6614bbd39 ("upcoming-events: Add new setting for skipping non-event days")
* upcoming-events: Reindent UI file
* caffeine: Add libcall-ui as dependency
* caffeine: Refactor icon names into defines.
No functional change.
* caffeine: Allow to select caffeine duration.
With this, we add support for custom intervals
in caffeine. It will decide how long caffeine
will stay on for. Intervals can be added/selected
individually via gsettings keys.
.
[ Guido Günther ]
* layout-manager: Don't forget to init corner shift.
This ensures we have the correct default in case of no rounded corners.
* top-panel: Shift gear icon according to corner shift
* top-panel: Drop `name` property.
Fixes the
(phosh:1106322): Gtk-WARNING **: 17:26:18.095: GtkBox does not have a child property called name
warning on startup.
Fixes: b567c6ed3 ("top-panel: Add gear button")
* doc: Use apt instead of apt-get. Let's be modern here.
* screenshot: Update screenshot. Let's be at least as recent as Wikipedia.
* ci: Update shared scripts to 7aa7dc1
* treewide: Update my copyright assignment. Let's use the fiduciary agreement.
* ambient: Avoid cast. This gives us more type safety
* ambient: Rename settings to schema.
The later is more wide spread
* udev: Handle fake-builtin debug flag. If set assume that the found
displays are built-in. This allows to test backlight handling in
nested sessions.
* auto-brightness: Add interface for turning ambient into display brightness
* auto-brightness: Add bucket implementation.
This implementation uses buckets to determine the
brightness level.
* shell: Create ambient manager earlier.
We'll need it for the brightness manager which gets created
with the panels. We also add a getter.
* ambient: Track whether display brightness should be adjusted.
If so emit the ambient brightness values so other parts of the shell can
consume them.
* ambient: Track automatic high-contrast.
Avoids dconf lookups and is a bit easier to read
* brightness-manager: Track ambient brightness changes.
When enabled we adjust the backlight brightness according
to the auto-brightness trackers output.
* data: Add auto-brightness-symbolic icon.
I wanted to draw my own but then accidentally found one by
Jakub Steiner in org.gnome.design.IconLibrary.
* brightness-manager: Expose auto-brightness-enabled.
This allows users of the brightness manager to use it
without having to care about e.g. the ambient manager.
* settings: Use different icon when autobrightness is in use
* emergency-calls: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* emergency-calls-manager: Use correct types for async callbacks.
This gives us more type safety
* build: Allow to codegen object manager too
* calls: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* calls-manager: Use correct types for async callbacks.
This exposed a real bug where the data argument used the
wrong type (but was unused).
* calls: Use correct types for async callbacks.
Gives us more type safety
* location-manager: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* location-manager: Use correct types for async callbacks.
Gives us more type safety
* session-manager: Use default DBus prefix for `ClientPrivate`
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* session-manager: Use correct types for async callbacks.
Gives us more type safety.
* session-presence: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* osk-manager: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* osk-manager: Use correct types for async callbacks.
This gives us more type safety.
* rfkill-manager: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* rfkill-manager: Use correct types for async callbacks.
This gives us more type safety.
* mpris: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
* mpris-manager: Use correct types for async callbacks.
This gives us more type safety.
* mpris-player: Use correct types for async callbacks.
This gives us more type safety.
* background-manager: Avoid criticals when monitor goes away first.
We emit a critical when the monitor goes away before the layer-surface.
However that doesn't really matter to us so make it a debug message.
* audio-devices: Ignore role loopbacks.
Users shouldn't switch to the media role loopback devices
* location-manager: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
In this case everything get a lot shorter as the `interface_prefix`
didn't match and we thus had the full `org_freedesktop` in all the
names.
* notify-manager: Use default DBus prefix.
This allows us to move to `dbus_client_protos` so our generated header
gets added to `generated_dbus_headers` instead of
`generated_dbus_sources`.
In this case everything get a lot shorter as the `interface_prefix`
didn't match and we thus had the full `org_freedesktop` in all the
names.
* build: Separate dbus headers and sources.
The idle monitor needs an object manager. Moving it into
dbus_server_protos would create one with a `PhoshDBus`
prefix clashing with the one from `org.gnome.Calls.Call`
so keep it separate for now but split headers and
sources already. (Closes: #1276)
* ambient: Improve readability.
Get the proxy ones instead of producing overly long cast lines
* ambient: Guard against `NULL` unit
g_ascii_strcasecmp() doesn't handle that gracefully and it happens
e.g. on laptops after resume.
* ambient: Handle settings changes in a one place.
Otherwise it is harder to determine if we should claim the sensor
base on auto-hc and auto-brightness settings.
* ambient: Reclaim sensor on unblank.
The current code didn't necessarily do this.
* ambient: Simplify claim / unclaim callbacks.
Avoid the casts, bumping readability and making claim and unclaim more
alike
* ambient: Release sensor more thorougly.
Otherwise we don't reclaim. In order to avoid overlapping calls
of claim and release clearing the flag we make it a counter instead
of a plain boolean.
* ambient: Separate HighContrast handling from ambient.
This makes is easier to invoke it from multiple places. We e.g.
forgot to stop sampling when the sensor went away.
* auto-brightness-bucket: Only notify when index changes.
No need to emit the signal if it didn't and thus brightness
wouldn't change.
* backlight: Allow to get brightness levels.
Will be used in the next commit
* brightness-manager: Use brightness transition.
This makes brightness changes less noticeable
* ci: Drop gstyle check.
It fails on contrib code that we don't want to modify.
* media-player: Move media loading to separate function
* media-player: Don't reload cover art if the URL didn't change.
Players like kasts trigger a whole lot of meta data updates grinding
devices like the Librem 5 to halt when loading the icon.
* brightness-manager: End transition immediately when disabled.
When the user toggles automatic brightness off we want to end the
transition right away.
Fixes: f50546254 ("brightness-manager: Track ambient brightness changes")
* brightness-manager: Trigger auto brightness transition when enabled.
Always trigger an auto-brightness transition when enabled. In dark
environments the ambient sensor might not put out a new value but
we still want to transition right away when the user enables it.
Fixes: f50546254 ("brightness-manager: Track ambient brightness changes")
* brightness-manager: Use relative brightness for keybindings too.
Instead of calculating based on the brightness range use relative
brightness and the number of levels the hardware supports.
* brightness-manager: Use adjustment range [0.0, 1.0]
This is what we use for the backlights and there's nothing
gained when we convert to percentage.
* brightness-manager: Allow to get auto-brightness-enabled
* backlight: Track scale.
This allows to track whether the backlight exposes a linear
or exponential scale.
* backlight: Use anonymous struct.
Better groups the variables
* backlight: Separate backlight level from exposed brightness.
When we want the brightness curve to be non-linear be need two
values: those exposed to the user facing side and those values
actually set in the hardware (called `level`s).
We do the split here but use a linear mapping only. This will
change in the next commits.
* backlight: Use logarithmic scale.
If the backlight type is unknown or linear we use a logarithmic
scale to match the human eye's brightness perception, see
https://en.wikipedia.org/wiki/Weber%E2%80%93Fechner_law
This lets the brightness slider in settings appear linear over the
whole scale instead of doing almost nothing in the upper half.
* brightness-manager: Make slider an offset when auto-brightness is on.
With autobrightness enabled we want the brightness slider to be an
offset to the auto brightness target rather than the actual brightness.
* brightness-manager: Update autobrightness on monitor changes
* brightness-settings: Remove origin when auto-brightness is enabled.
As this is an offset now we don't want to draw the origin part
Helps: https://gitlab.gnome.org/guidog/meta-phosh/-/issues/19
* brightness-settings: Use icon.
This makes it consistent with the audio settings
* brightness-manager: Provide a suitable icon based on current state.
Similar to other managers provide an icon-name based on the current
state (auto-brightness enabled or not). We need that for the OSD and can
then reuse it in other parts of the shell.
* brightness-settings: Use brightness-manager's icon-name property
* ci: Update to forky
* libcall-ui: Update to latest 0.1.x branch.
Avoids clang build failures
* plugins: Avoid warning when copying symlinks.
Otherwise we might end up copying the symlink with newer meson. We
need to bump the minimum meson version for that.
Fixes: fda76c376 ("mobile-data: Install icon to user's filesystem")
* doap: Drop Zander. Not active since several years. Thanks Zander for
your work!
* doap: Add Arun
* wifi-manager: Fix log domain
* ci: Use headless backend for integration tests.
No need to have the tests guess
* tests/integration: Specify Wayland socket.
That is more reliable than parsing it from the output
* tests/integration: Don't always close stdout.
This allows us to parse phosh's output
* tests/integration: Ease output checking.
Allow tests to access phosh's output more easily.
They can specify if the check should fail when the searched for string
is already present.
* tests/integration: Allow to tweak phosh's environment.
This allows to e.g. set logging levels without polluting `os.environ`.
* tests/integration: Simplify running pytests locally.
Setting the env vars can be cumbersome so make it as simple as
* tests/integration: Make is simple to save test logs
* tests: Lint Phosh helper too
* ci: Use pixman renderer for integration tests. Avoids criticals.
* tests/integration: Disable XWayland.
We don't need it in CI
* tests/integration: Add initial system service test.
We interact with quiet a bit of system services but don't exercise this
in the tests so far. Make sure we at least look for a modem.
* tests/integration: Allow phoc to exit cleanly.
We handle `SIGTERM` gracefully nowadays so allow for that too.
* ci: Set default build opts. No need to set them on jobs individually
* ci: Minimize script sections. We move the variable setting to
`variables:`
* ci: Use phoc 0.51~rc1
* ci: Collect junit reports from tests run by meson as well
.
[ Martin ]
* Update Slovenian translation
.
[ Yuri Chornoivan ]
* Update Ukrainian translation
.
[ Nathan Follens ]
* Update Dutch translation
.
[ Antonio Marin ]
* Update Romanian translation
.
[ Danial Behzadi ]
* Update Persian translation
.
[ Daniel Rusek ]
* Update Czech translation
.
[ Artur S0 ]
* Update Russian translation
.
[ Juliano de Souza Camargo ]
* Update Brazilian Portuguese translation
.
[ Ekaterine Papava ]
* Update Georgian translation
.
[ Arun Mani J ]
* simple-custom-quick-setting: Simplify files.
Remove unnecessary headers and uses 2 lines separation between
functions.
* caffeine-quick-setting: Simplify files
* dark-mode-quick-setting: Simplify files
* mobile-data-quick-setting: Simplify files
* night-light-quick-setting: Simplify files
* pomodoro-quick-setting: Simplify files
* scaling-quick-setting: Simplify files
* wifi-hotspot-quick-setting: Simplify files
* ci: Ignore deleted files in `check-ui`
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1274
* tree: Add `PhoshBrightnessSettings`
* settings: Use `PhoshBrightnessSettings`
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1272
* settings: Clean up unused headers
.
[ Gotam Gorabh ]
* plugins: Add location quick setting.
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/783
* build: Define 'phosh_plugin_icon_dir'
* caffeine: Install icon to user's filesystem
* dark-mode: Install icon to user's filesystem
* night-light: Install icon to user's filesystem
* pomodoro: Install icon to user's filesystem
* scaling: Install icon to user's filesystem
* wifi-hotspot: Install icon to user's filesystem
* mobile-data: Install icon to user's filesystem
* location: Install icon to user's filesystem
* debian: Install plugin's icon
* ci: Use common gchar check
.
[ Emin Tufan Çetin ]
* Update Turkish translation
.
[ Efstathios Iosifidis ]
* Update Greek translation
.
[ Sabri Ünal ]
* Update Turkish translation
.
[ Anders Jonsson ]
* Update Swedish translation
.
[ Yaron Shahrabani ]
* Update Hebrew 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.8.0
- gnome-calls >= 46.3 for location based emergency calls and feedbackd fix
- wl-clipboard >= 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/GNOME/gnome-clocks/-/merge_requests/347
- gnome-clocks: Wakeup from suspend for alarms: https://gitlab.gnome.org/GNOME/gnome-clocks/-/merge_requests/344
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