Commit graph

154 commits

Author SHA1 Message Date
Vincent Bernat
b32462031b i3-companion: simplify check for intruding windows
Sticky window is usually floating, as well as the non-normal windows.
So, no need for all these checks.
2021-07-18 00:42:07 +02:00
Vincent Bernat
f95d1e2b92 i3-companion: make i3-tabbed work by inhibiting exclusive workspaces 2021-07-18 00:42:07 +02:00
Vincent Bernat
adfec52532 i3-companion: use contextlib to simplify a bit some code 2021-07-17 15:00:54 +02:00
Vincent Bernat
e0569deacf i3-companion: fix check of exclusive app in current workspace 2021-07-17 14:47:47 +02:00
Vincent Bernat
f167cf1f64 i3-companion: simplify the way we get application icons
Just rely on the class.
2021-07-17 13:01:05 +02:00
Vincent Bernat
1737177d2b i3-companion: only log window classes 2021-07-17 09:21:58 +02:00
Vincent Bernat
5357f669e5 i3-companion: only use window classes to match exclusive apps
No need to match anything else as all the exclusive/intrusive apps I
use have a good value for class.
2021-07-17 09:16:34 +02:00
Vincent Bernat
8a78f68e77 i3-companion: reblacken at 88 line-length
And tell flake8 that's OK.
2021-07-17 09:14:45 +02:00
Vincent Bernat
84a535bb85 i3-companion: try to move windows in the same workspace as similar ones 2021-07-16 19:53:12 +02:00
Vincent Bernat
4e21366d7a i3-companion: don't consider a win exclusive if it has the same window class 2021-07-16 16:41:07 +02:00
Vincent Bernat
78378278c3 i3-companion: moar bluetooth icons
And rearrange the matching code
2021-07-16 10:15:39 +02:00
Vincent Bernat
4d76aedb61 i3-companion: reduce CPU usage by avoiding f-string for logger.debug 2021-07-16 08:22:59 +02:00
Vincent Bernat
bf08c327a3 i3-companion: make debounce decorator composable
This allows us to move the retry behavior into a separate decorator.
The semantic is a bit different as, now, if there is another iteration
pending, it is lost.
2021-07-16 08:03:03 +02:00
Vincent Bernat
a5e5b23ec8 i3-companion: fix bluetooth on/off 2021-07-16 07:27:59 +02:00
Vincent Bernat
fc3563777a i3-companion: make more properties of DBusSignal optional 2021-07-16 01:18:19 +02:00
Vincent Bernat
c974b59082 i3-companion: make DBusSignal accept more filters 2021-07-16 01:15:33 +02:00
Vincent Bernat
2fd855e191 i3-companion: push bluetooth status to polybar 2021-07-16 00:52:54 +02:00
Vincent Bernat
e79b7291ad i3-companion: avoid leaking X11 file descriptor 2021-07-15 21:26:54 +02:00
Vincent Bernat
0f4e668b51 i3-companion: avoid leaking window name in logs 2021-07-15 20:52:32 +02:00
Vincent Bernat
ea4905bc9d i3-companion: enable autoreconnect to i3 2021-07-15 18:20:59 +02:00
Vincent Bernat
550ad9deac i3-companion: switch to Xlib to query XRandR state 2021-07-15 15:28:24 +02:00
Vincent Bernat
84b1aa99cc i3-companion: don't restart everything on spurious RandR events 2021-07-15 15:14:39 +02:00
Vincent Bernat
c7365a8886 i3-companion: add icon for d-feet 2021-07-14 20:47:46 +02:00
Vincent Bernat
ba28674f9b Revert "polybar: tentative to use Material Icons"
This reverts commit 4e152f0466. Not
worth it currently.
2021-07-14 17:33:19 +02:00
Vincent Bernat
4e152f0466 polybar: tentative to use Material Icons 2021-07-14 17:33:03 +02:00
Vincent Bernat
113efb421f polybar: change notification icon 2021-07-14 17:25:41 +02:00
Vincent Bernat
295e13f1c4 polybar: display dunst state for notifications 2021-07-14 17:14:52 +02:00
Vincent Bernat
80c4605916 i3-companion: use proper DBus language
From https://www.freedesktop.org/wiki/IntroductionToDBus/#addressing
2021-07-14 17:09:45 +02:00
Vincent Bernat
de9c33eaad i3-companion: specify bus to listen to for DBus events 2021-07-14 16:57:23 +02:00
Vincent Bernat
0e95635691 i3-companion: decorator to declare static variables
This seems cleaner than using `getattr()` to initialize the variable
inside the function.

Also, the debouncer function does not need this and can work with a
dictionary mapping functions to their worker.
2021-07-14 11:08:39 +02:00
Vincent Bernat
896e12e73e i3-companion: polybar's fonts are 1-indexed 2021-07-14 09:09:33 +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
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
654d8bd0a1 i3-companion: don't use sticky windows for icon selection 2021-07-12 20:01:49 +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
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
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