Commit graph

88 commits

Author SHA1 Message Date
Beat Küng
0e409d4a52
Improve multi-monitor handling under wayland (#1276)
* fix: improve multi-monitor handling under wayland

When a monitor gets disconnected, the destroy event of all associated
windows gets called, and the window gets removed.

This patch changes that behavior: the window is still closed but the
configuration is kept using the existing reload mechanism.
In addition, a callback is added to listen for new monitors, triggering
a reload when a new monitor gets connected.

This logic also reloads already running windows, which has a positive and
negative effect:
- positive: if currently running e.g. on the second monitor specified in
  the list, the window can get moved to the first monitor
- negative: if reloading starts it on the same monitor, it gets reset
  (e.g. graphs)

I also had to work around an issue: the monitor model is not yet available
immediately when a new monitor callback triggers. Waiting in the callback
does not help (I tried 10 seconds). However, waiting outside, it always
became available after 10ms.

Tested with a dual monitor setup under KDE through a combinations of:
- enabling/disabling individual monitors
- switching between monitors
- specifying a specific monitor in the yuck config
- specifying a list of specific monitors in the yuck config

In all these cases the behavior is as expected, and the widget gets loaded
on the first available monitor (or stays unloaded until one becomes
available).
It also works when opening a window without any of the configured monitors
being available.

There is one remaining error from GTK when closing the window:
GLib-GObject-CRITICAL **: 20:06:05.912: ../gobject/gsignal.c:2684: instance '0x55a4ab4be2d0' has no handler with id '136'
This comes from the `self.gtk_window.disconnect(handler_id)` call. To
prevent that we'd have to reset `destroy_event_handler_id`.

* fix: do not call gtk::main_iteration_do while waiting for monitor model

Executors that poll a future cannot be called recursively (in this case
glib::main_context_futures::TaskSource::poll).
So we cannot call gtk::main_iteration_do here, which in some cases led to
the future being polled again, which raised a panic in the form of:
thread 'main' panicked at glib/src/main_context_futures.rs:238:56:
called `Result::unwrap()` on an `Err` value: EnterError

We can just remove it as tokio::time::sleep() ensures the main thread
continues to process (gtk) events during that time.
2025-06-17 09:48:34 +02:00
Lucas Baumann
98c220126d
Fix crash on invalid formattime (#1317)
* catch failure to format to format time instead of panicking

* update chrono

* use new API
2025-05-18 15:39:46 +02:00
Lucas Baumann
e953141fa9
Fix crash on NaN or infinite graph value (#1318) 2025-05-13 23:12:06 +02:00
Martin Bogdanov
2c6523a372
Add floor() and ceil() (#1315)
* add floor() and ceil() functions to simplexpr, akin to round()

* document addition of floor() and ceil()

* remove unnecessary second argument for floor() and ceil()

* Update documentation

---------

Co-authored-by: Martin Bogdanov <github () martinbogdanov.com>
2025-05-11 15:08:43 +02:00
Lucas Baumann
eb59d155a2
Add warning for invalid exclusive and anchor combination (#1316) 2025-05-11 13:11:13 +02:00
ipsvn
5b4cc3e7a8
Add value-pos to scale widget (#1285)
* Add value-pos to gtk scale

* add possible values to value-pos

* add value-pos change to CHANGELOG.md
2025-02-16 16:46:18 +01:00
Joel S
49b3066a6a
fix: Load systray items that are registered without a path (#1230)
Co-authored-by: ElKowar <dev@elkowar.dev>
2025-02-05 20:14:49 +01:00
Kiana Sheibani
c6decc815a
feat: add subcommand to force-poll variable (#1227)
* feat: add subcommand for force-polling variable

* docs: document the new `eww poll` subcommand
2025-02-05 20:11:35 +01:00
vaporii
e7b95688a7
add lines and wrap-mode properties to label widget (#1278)
* add :lines property to label widget

* add :lines property and fix some other little stuff

* quick documentation fix
2025-02-05 20:10:20 +01:00
Lorenzo Bodini
593a4f4666
add log to expressions (#1271)
* feat: add `log` to expressions

* changelog: add `log`
2025-01-14 20:11:56 +01:00
Mirko Hahn
a7bd80ac1e
fix: get_locale follows posix standard (#1264)
* fix: get_locale follows posix standard

* refactor: more concise and legible get_locale function

Co-authored-by: Wölfchen <w-lfchen@posteo.net>

---------

Co-authored-by: Wölfchen <w-lfchen@posteo.net>
2025-01-04 21:20:26 +01:00
Wölfchen
6ee166707f
feat: add raw-output for jq (#1199)
* feat: add raw-output arg to jq

Co-authored-by: Roman Hargrave <roman@hargrave.info>

* test: add some test cases for jq raw output

* refactor: improve run_jaq_function

* docs: document changes

---------

Co-authored-by: Roman Hargrave <roman@hargrave.info>
2024-12-27 23:49:28 +01:00
GallowsDove
2c81b3fbc7
feat: Add support for on-demand window focus on wayland (#1215)
* feat: Add support for on-demand window focus on wayland

* fix: cargo fmt

* Update CHANGELOG.md with OnDemand focusable

* fix: add v0_6 feature to gtk-layer-shell in eww/cargo.toml
2024-12-27 00:44:06 +01:00
Wölfchen
50ec181fc7
feat: support empty string for safe access operator (#1176)
* chore: apply pr #629

Co-authored-by: Roland Fredenhagen <dev@modprog.de>

* style: early return

* feat: err on empty json string

* docs: update docs

* test: update test in accordance with decision

* chore: attribution

* docs: improve wording

* docs: add breaking change notice to changelog

* fix(changelog): fix pr link

---------

Co-authored-by: Roland Fredenhagen <dev@modprog.de>
2024-10-12 07:49:50 +02:00
Wölfchen
8de378dc10
feat: button improvements (#1187)
* feat: add keyboard support for button presses

Co-authored-by: Julian Schuler <31921487+julianschuler@users.noreply.github.com>

* chore: attribution

* fix: activate eventbox on button release; minor fixes

* docs: improve button and eventbox documentation

Co-authored-by: Julian Schuler <31921487+julianschuler@users.noreply.github.com>

---------

Co-authored-by: Julian Schuler <31921487+julianschuler@users.noreply.github.com>
2024-10-11 13:27:24 +02:00
Wölfchen
ef32bf2c3f
feat: update toolchain to 1.81.0 (#1195)
* flake.lock: update

* feat: switch to 1.81.0 toolchain

* fix: fix new warnings and lints

* chore: update changelog entry

* chore: automatically update a few dependencies
2024-10-10 19:26:00 +02:00
mario-kr
8661abf2bf
Implement explicitly setting a center of rotation (#783)
* Add changelog entry for transform-origin-properties

* Implement explicitly setting a center of rotation

The transform-Widget provides "rotate" to rotate its child. However, the
default center of rotation is (0, 0) (aka top-left), so it was not
possible to, for example, rotate a child in-place.

This commit implements the additional options `transform-origin-x` and
`transform-origin-y`. Both are optional, and the default value is 0.0 for
each, so previous configurations should produce the same results.

* Fix: transform order should be rotate->translate->scale
2024-09-03 14:34:39 +02:00
dangerdyke
ee937b90ec
add EWW_BATTERY support in (free|open|net)bsd (#645)
* add `EWW_BATTERY` support in (free|open|net)bsd

* add `EWW_BATTERY` support in (free|open|net)bsd

---------

Co-authored-by: ElKowar <dev@elkowar.dev>
2024-08-25 16:24:43 +02:00
Leni Aniva
452cab7677
feat: Add option for graph drawing direction (#1113)
* feat: Add option for vertical graph

* doc: Add feature to changelog
2024-08-25 16:15:43 +02:00
ovalkonia
dc4def5327
Add scss support for style property (#1121)
* Add scss support for the ':style' widget property

* Add changelog entry for the scss support for the ':style' property

---------

Co-authored-by: ElKowar <dev@elkowar.dev>
2024-08-25 16:14:35 +02:00
Mateusz
510b824e75
Use gdk_screen_get_monitor_plug_name to provide more consistent monitor names on wayland (#1129)
* workaround gdk not providing right monitor informations on wayland

* move gdk workaround for plug name into a separate function

* adjust changelog
2024-08-25 16:03:52 +02:00
Wölfchen
3342234894
fix: fix changelog, warnings and lints (#1155)
* fix!: eliminate some dead code

* fix: fix lints

Combined diff of a7a09ea192b6f06b1984709029dc3bfe0481759e and bfc5cb9cb020dd256484eb5e4344e12e4a3b2ceb

Co-authored-by: Johan Geluk <johan@geluk.io>

* fix: remove unnecessary allow; fix capitalization

* chore: automatically update a few dependencies

* fix: fix lint

i introduced this in #1119, whoops

* docs: move #1132's changelog entry

---------

Co-authored-by: Johan Geluk <johan@geluk.io>
2024-08-25 15:51:26 +02:00
mario-kr
fefba66ff5
Fix: EWW_NET wrong values for TX/RX stats (#1108)
* Fix: EWW_NET wrong values for TX/RX stats

The sysinfo crate, structure Networks, basically caches one value of
total_received/total_transmitted each (as well as other metrics) and
returns the difference between those two values when queried via the
`received()` and `transmitted()` functions.

These values are updated by both the `refresh()` and `refresh_list()`
functions; so by calling both of them right after each other like
previously done here, sets both the cached total_received/... and the
current total_received/... to nearly the same value.

`refresh_list()` also updates the list of interfaces on a host, with a
marginally small performance impact for doing so (I measured slightly
more than 100 microseconds on my machine (0.1 milliseconds), around
20-25% more than with `refresh()`), especially considering this is run
only every 2 seconds.

* Add changelog entry for the EWW_NET bugfix
2024-08-25 15:45:33 +02:00
Wölfchen
5212e62fd3
feat: add fill-svg and preserve-aspect-ratio attributes to image widget (#1148)
* feat: add fill-svg attribute to image widget

Co-authored-by: Eddy Otsutsuki <23711001+hypernova7@users.noreply.github.com>

* feat: add preserve-aspect-ratio attribute to image widget

* docs: document new attributes; changelog entry

---------

Co-authored-by: Eddy Otsutsuki <23711001+hypernova7@users.noreply.github.com>
2024-08-24 13:02:33 +02:00
ovalkonia
f01396f9d5
Fix: the gtk expander widget bugfix (#1132)
* Fixed the gtk `expander` widget

* Add changelog entry for the `expander` widget bugfix
2024-08-24 12:30:23 +02:00
ovalkonia
367363975e
Fix: the gtk stack widget bugfix (#1119)
* Fixed the gtk stack widget

* Add changelog entry for the stack widget bugfix

* Small code style improvement

Co-authored-by: Wölfchen <w-lfchen@posteo.net>

---------

Co-authored-by: ElKowar <lkowarschick@gmail.com>
Co-authored-by: Wölfchen <w-lfchen@posteo.net>
2024-08-24 12:30:06 +02:00
Wölfchen
faa73137b4 chore: update toolchain to 1.80.1 2024-08-24 12:26:24 +02:00
Wölfchen
e4ea489386 fix: update grass; re-enable default features for grass 2024-08-24 12:26:24 +02:00
Wölfchen
7aa571eef1 docs: update changelog 2024-08-24 12:26:24 +02:00
ovalkonia
4d55e9ad63
Add min and max simplexpr functions (#1123)
* Add 'min' and 'max' function calls to simplexpr

* Add changelog entry for 'min' and 'max' simplexpr functions
2024-07-05 12:57:48 +02:00
Vyacheslav Ananev
d1fde927d2
systray: fix remove items (#1098)
* systray: fix remove item

* docs: add entry to CHANGELOG.md
2024-05-06 14:05:57 +02:00
Jonathan
a4da192d62
systray: add :hover attribute to tray items (#1091)
* systray: add `:hover` attribute to tray items

* doc: add entry to changelog
2024-05-05 12:14:44 +02:00
Rayzeq
2c88115124
Fix string truncation (#1084)
* remove useless check

* add `truncate` property

* add to CHANGELOG.md
2024-04-26 08:59:23 +02:00
Wölfchen
acf57a8396
fix: refactor and fix flake (#1038)
* fix: refactor flake

* chore: update flake.lock

* chore: update changelog

* chore: update flake.lock

* chore: update changelog
2024-04-21 22:09:14 +02:00
elkowar
d87c2fdbfd
Release version 0.6.0 2024-04-21 14:20:30 +02:00
Rayzeq
1e37f53e99
fix #42: use gtk's text truncation system when possible (#1066)
* fix #42: use gtk's text truncation system when possible

* enhance doc + add to changelog
2024-04-14 16:57:58 +02:00
Alessio Molinari
ebe5f349d1
Add a checked property on checkbox. Close #693. (#916)
* feat: add a checked property on checkbox. Close #693.

* chore: update CHANGELOG.md

---------

Co-authored-by: ElKowar <5300871+elkowar@users.noreply.github.com>
2024-04-06 13:11:59 +02:00
Adrian Perez de Castro
5fdaa4e03f Add :icon and :icon-size properties to the image widget
Add a new :icon property which allows using icons from the currently
selected theme. For completeness, add :icon-size as well. As a nice
extra, GTK automatically makes such images follow the selected icon
theme.
2024-04-06 13:03:21 +02:00
Temmie
1b819fb646
System Tray (#743)
* Allow tokio on gtk thread

* Basic notifier host implementation

* Implement systray widget

* Use dbusmenu-gtk3

* Update flake.nix

* US spelling of license

* Fix possible TOCTOU

* Change how hosts are started

* Add watcher

* Bunch of refactor

* Handle errors better

* Refactor service parsing

* Avoid duplicate dbus connections

* Fix watcher producing bad items

* Handle zbus::Error::NameTaken

* Refactor icon loading & don't panic on zoom

* Implement pixbuf icons

Co-authored-by: Bojan Nemčić <bnemcic@gmail.com>

* Don't panic on icon/menu error

* Improve icon error handling to make discord work

* Update comments

* Big refactor into actor model

* Reword error messages

* Remove redundant watcher_on function

* Big icon handling refactor

* Don't unnecessarily wrap StatusNotifierItem

* cargo fmt

* Documentation

* Avoid registering to StatusNotifierWatcher multiple times

* None theme means default theme

* Add dbus logging

* Add libdbusmenu-gtk3 dependency to docs

* Some code tidying

* Make Item more clearer

* Make clippy happy

* Systray widget improvements

* Remove unwraps from dbus state

* Temporarily add libdbusmenu-gtk3 to flake buildInputs

* Fix blurry tray icon for HiDPI display

* feat: dynamic icons

* fix: don't cache IconPixmap property

this fixes dynamic icons for some icons, e.g. syncthingtray

* fixup! feat: dynamic icons

* Fix unused borrow warning

* Add some documentation to notifier_host

* Rename notifier_host::dbus to more descriptive notifier_host::proxy

* fixup! Rename notifier_host::dbus to more descriptive notifier_host::proxy

* fixup! Merge remote-tracking branch 'upstream/master' into tray-3

* fixup! Merge remote-tracking branch 'upstream/master' into tray-3

* Remove commented out fields of DBusSession

* Refactor host

* Remove git conflict marker

* Various improvements

* Icon documentation

* cargo fmt

* Add dependency to CI

---------

Co-authored-by: Bojan Nemčić <bnemcic@gmail.com>
Co-authored-by: MoetaYuko <loli@yuko.moe>
Co-authored-by: hylo <hylo@posteo.de>
2024-03-30 10:55:01 +01:00
Jacob
f1ec00a1c9
add get_env function to yuck (#779)
* added basic get_env function to yuck

* added get_env to changelog

* added get_env to docs

* changed key to string in doc

* changed suggested code

* credit myself in CHANGELOG.md
2024-03-20 12:45:08 +01:00
Wölfchen
4ce42455a4
fix: fix jq (#1044)
* fix: fix jq

* feat: add basic jq test case
2024-03-16 13:33:12 +01:00
Wölfchen
7bfd47eb81
fix: update and improve flake (#1032)
* fix: update and improve flake

* chore: update changelog
2024-02-24 13:46:40 +01:00
Rayzeq
d96586c209
Completions (#1029)
* Handle `shell-completions` before anything else

* Update CHANGELOG.md
2024-02-20 22:42:09 +01:00
elkowar
387d344690
Release version 0.5.0 2024-02-17 18:21:49 +01:00
elkowar
5b3dabf090
Fix logfiles growing indefinitely (fixes #750, #689, #1000) 2024-02-17 18:03:35 +01:00
elkowar
2656e238ca
Fix wrong values in EWW_NET (fixes #958) 2024-02-17 17:34:58 +01:00
elkowar
3f478b6503
Support generating shell completions 2024-02-17 17:03:55 +01:00
Zacharie Dubrulle
d497726d7b Add tooltip widget 2024-02-17 16:23:44 +01:00
elkowar
091b630072 Use stable rust in CI 2024-02-17 13:21:05 +01:00
nativerv
607f4411d3
add :unindent property (#804) 2024-02-17 12:15:05 +01:00