Commit graph

948 commits

Author SHA1 Message Date
Vincent Bernat
896e12e73e i3-companion: polybar's fonts are 1-indexed 2021-07-14 09:09:33 +02:00
Vincent Bernat
c906475ecf polybar: animate low battery warning 2021-07-14 09:08:42 +02:00
Vincent Bernat
65caa00117 i3-companion: use window current workspace for exclusivity check 2021-07-14 07:39:58 +02:00
Vincent Bernat
81cdc7b40d i3-companion: remove debug code 2021-07-13 17:10:54 +02:00
Vincent Bernat
030d50c636 xsettings: use i3-msg instead of i3-cmd 2021-07-13 14:11:50 +02:00
Vincent Bernat
8c1b3b7bb2 picom: switch to glx backend using experimental backends
There are some artifacts with xr_glx_hybrid and it is not available as
experimental. Let's try glx with experimental backend. No tearing.
Tested with https://www.youtube.com/watch?v=MfL_JkcEFbE.
2021-07-13 08:27:22 +02:00
Vincent Bernat
71a3d1d4a4 i3-companion: move polybar handling into its own function 2021-07-13 08:11:48 +02:00
Vincent Bernat
71dcb5d6bc i3-companion: rename dampen to debounce
I think this is more correct. Dampen is used in network world, but
debounce seems more common (notably, we debounce push buttons).
Another word could be throttle but that does not match as we need to
react to the last event of a batch instead of the first (and we sure
don't want to drop the last).
2021-07-13 00:39:45 +02:00
Vincent Bernat
2781777842 i3-companion: also dampen a bit workspace renames
Just because I want to use this new function!
2021-07-13 00:31:26 +02:00
Vincent Bernat
b6354b1256 i3-companion: move all state inside fn.worker namespace
This is cleaner than putting arbitrary attributes inside a task. The
scheduling will be done later, so it is safe to put put everything
inside the namespace object and avoid polluting the function
namespace.
2021-07-13 00:26:31 +02:00
Vincent Bernat
b62f747837 i3-companion: add back ability to trigger urgent work despite of damping 2021-07-13 00:13:55 +02:00
Vincent Bernat
f56b995d5a i3-companion: rework dampener to be easier to understand
We have a worker running as long as there is work. The optional sleep
is not implemented. There is a slight semantic difference: the work is
not postponed indefinitely.
2021-07-12 23:57:06 +02:00
Vincent Bernat
9b0bb1ce76 i3-companion: fix dampening
Cancellation is asynchronous. So, there was a race condition where we
were throwing away the task we just scheduled. Don't really on
cancellation for synchronization. We also want to have only one
instance running. So, use locks to ensure only one instance is running
and only cancel running functions while in sleeping phase, otherwise,
let them run.

Currently, this OK, however, it is assumed the function has somehow
the same effect whatever the arguments we provide. This is true for
the two callbacks we use `@dampen` on.
2021-07-12 23:37:25 +02:00
Vincent Bernat
2012ba0c15 i3-companion: move dampening/retry logic inside a decorator
There is some nasty bug we can run into:

```
ERROR: Task was destroyed but it is pending!
task: <Task pending name='Task-44' coro=<dampen.<locals>.decorator.<locals>.fn_now() running at /home/bernat/.config/i3/bin/i3-companion:115> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7f687353e2b0>()]>>
```

This is often followed by a segfault. It's a bit difficult to
understand where it comes from. Sleeping a bit even if we don't want
to dampen seems to workaround this issue. It seems we have to keep a
reference to a task until it is cancelled properly.
2021-07-12 22:15:57 +02:00
Vincent Bernat
fb0bd7fcca i3-companion: fix logging to console 2021-07-12 21:17:25 +02:00
Vincent Bernat
34ac2d7268 i3: move Firefox WebRTCGlobalIndicator to some fixed position 2021-07-12 20:17:33 +02:00
Vincent Bernat
654d8bd0a1 i3-companion: don't use sticky windows for icon selection 2021-07-12 20:01:49 +02:00
Vincent Bernat
36851717d2 firefox: enable globalMuteToggles to show WebRTC indicator 2021-07-12 19:51:25 +02:00
Vincent Bernat
2a4f97c458 firefox: use new webrtc sharing indicator 2021-07-12 19:19:01 +02:00
Vincent Bernat
52ba86e239 i3-companion: do not log full network status
With special chars, it's not readable.
2021-07-12 17:56:41 +02:00
Vincent Bernat
55c335bcaa i3-companion: no need to subclass string, just use a function 2021-07-12 15:04:08 +02:00
Vincent Bernat
eb940aa691 dunst: add separator 2021-07-12 14:36:52 +02:00
Vincent Bernat
33e59c769a i3-companion: display notifications for Bluetooth
This is a good example of using PropertiesChanged. I don't know if
it's possible to filter the interface we want to receive.
2021-07-12 13:18:57 +02:00
Vincent Bernat
a30c4a5aa9 i3-companion: fix vpn icon 2021-07-12 12:59:00 +02:00
Vincent Bernat
e6470038e4 polybar: hide errors if no network status available 2021-07-12 12:14:41 +02:00
Vincent Bernat
9b5c00b92a i3-companion: force font to use when using symbols 2021-07-12 12:02:02 +02:00
Vincent Bernat
7669da1c9f i3-companion: move configuration at the top 2021-07-12 10:10:38 +02:00
Vincent Bernat
f2e6173e30 i3-companion: also add a type for events from nop command 2021-07-12 09:11:03 +02:00
Vincent Bernat
f454a74080 i3-companion: rename i3ipc.Event to I3Event 2021-07-12 09:05:17 +02:00
Vincent Bernat
2773dfdedc i3-companion: if SSID is not UTF-8 encoded, use replace 2021-07-12 08:52:26 +02:00
Vincent Bernat
0f2b12e228 i3-companion: handle correctly unconnected polybar sockets
It's the `open()` call which is blocking, not the `write()`. Use
`os.open()` instead.
2021-07-12 08:45:09 +02:00
Vincent Bernat
51fe9fff00 i3-companion: DBus errors are expected on interface down 2021-07-12 08:13:25 +02:00
Vincent Bernat
9fff419b2d i3-companion: remove skip code
Most of the time, we don't skip the update.
2021-07-12 08:11:48 +02:00
Vincent Bernat
f0a7eca578 i3-companion: cosmetic fixes
Also update immediately if active connection change.
2021-07-12 08:11:05 +02:00
Vincent Bernat
7df5011824 i3-companion: replace network module by custom IPC for Network Manager 2021-07-12 07:32:39 +02:00
Vincent Bernat
b3c386b778 i3-companion: rename network_manager_update
The goal is only to display notifications.
2021-07-11 22:52:50 +02:00
Vincent Bernat
d56b44114a i3-companion: ensure variables are captured when wrapping event 2021-07-11 22:46:53 +02:00
Vincent Bernat
83ba6b5a23 i3-companion: also listen to DBus for NetworkManager
As a proof of concept add notifications for events.
2021-07-11 22:06:23 +02:00
Vincent Bernat
e8b7487512 i3: unconditionally restart i3-companion on reload 2021-07-11 22:06:23 +02:00
Vincent Bernat
674a4eab56 i3-companion: run black with max line length to 79 2021-07-11 20:47:51 +02:00
Vincent Bernat
812ce97360 polybar: use a greater interval for network
No stats to update.
2021-07-11 14:14:51 +02:00
Vincent Bernat
63eec74986 dunst: more icons 2021-07-11 14:14:51 +02:00
Vincent Bernat
0e88b0f545 i3-companion: blacken the code 2021-07-11 12:23:00 +02:00
Vincent Bernat
0984436348 i3-companion: move notify helper function at top 2021-07-11 12:20:42 +02:00
Vincent Bernat
f98b530813 i3-companion: use dbussy to interact with DBus
`notify-send` is too limited, notably to get the notification ID.
2021-07-11 12:18:19 +02:00
Vincent Bernat
4f28e682e1 i3-companion: encapsulate state into function object
This avoids littering the code with global variables.
2021-07-11 11:42:23 +02:00
Vincent Bernat
b25442dfd9 polybar: add back disk module
I am using my own compiled version of polybar.
2021-07-11 11:27:37 +02:00
Vincent Bernat
fdbfd3c68c dunst: add a frame to notifications
It's easier to read this way.
2021-07-11 11:21:47 +02:00
Vincent Bernat
e007711578 picom: also add fading for tooltips, notifications and menus 2021-07-11 08:58:43 +02:00
Vincent Bernat
61c9eb7fd8 picom: drop shadows for some window types 2021-07-11 08:53:30 +02:00