Logs on 2021-10-17 (liberachat/#xmonad)
| 00:00:36 | <geekosaur> | the way the strut stuff is designed, you have to have the layout modifier there. but you're telling it to avoid struts nowhere |
| 00:01:00 | <geekosaur> | this also means you can mod-b (or whatever) to turn them on temporarily |
| 00:01:17 | <davve> | I see |
| 00:01:20 | × | mestre quits (~mestre@191.177.175.57) (Quit: leaving) |
| 00:02:44 | <geekosaur> | anyway I'd put the stuff I want to apply to the tiled layouts in tiled (none of them will be affected by Mirror so that's not an issue) and put the other ones (noBorders, avoidStrutsOn []) on Full |
| 00:05:04 | <geekosaur> | hm, actually I wonder if that's true. avoidStruts might do something weird inside Mirror |
| 00:05:44 | → | s joins (~s@24.16.46.64) |
| 00:05:57 | × | s quits (~s@24.16.46.64) (Client Quit) |
| 00:39:25 | × | tomsmeding quits (~tomsmedin@tomsmeding.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 00:39:55 | → | tomsmeding joins (~tomsmedin@tomsmeding.com) |
| 00:52:39 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 00:52:39 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 00:52:42 | allbery_b | is now known as geekosaur |
| 02:02:47 | × | banc quits (banc@gateway/vpn/airvpn/banc) (Ping timeout: 264 seconds) |
| 02:10:43 | × | catman quits (~catman@user/catman) (Quit: WeeChat 3.4-dev) |
| 02:15:29 | → | catman joins (~catman@user/catman) |
| 02:23:59 | → | banc joins (banc@gateway/vpn/airvpn/banc) |
| 02:28:29 | Hash | is now known as HelloNewman |
| 02:36:05 | × | catman quits (~catman@user/catman) (Remote host closed the connection) |
| 04:49:01 | × | rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds) |
| 05:38:58 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 05:53:05 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 06:18:06 | → | benin joins (~benin@183.82.25.86) |
| 07:24:59 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds) |
| 07:44:13 | → | wonko joins (~wjc@62.115.229.50) |
| 08:17:48 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 08:17:48 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 08:17:51 | allbery_b | is now known as geekosaur |
| 08:34:29 | → | humky joins (~humky@user/humky) |
| 08:55:39 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 09:08:58 | → | seschwar joins (~seschwar@user/seschwar) |
| 09:14:30 | → | alternateved joins (~user@194.177.28.164) |
| 09:26:11 | × | benin quits (~benin@183.82.25.86) (Ping timeout: 264 seconds) |
| 09:28:09 | → | benin joins (~benin@183.82.25.86) |
| 09:34:10 | × | wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (Ping timeout: 252 seconds) |
| 10:37:25 | × | Solitary quits (~Solitary@user/solitary) (Ping timeout: 252 seconds) |
| 10:38:43 | → | Solitary joins (~Solitary@user/solitary) |
| 10:48:09 | → | td_ joins (~td@94.134.91.73) |
| 11:12:23 | × | alternateved quits (~user@194.177.28.164) (Ping timeout: 264 seconds) |
| 11:22:36 | liskin | has just finished writing the first draft of XMonad.Util.EWMH module \o/ |
| 11:27:22 | × | humky quits (~humky@user/humky) (Quit: Leaving) |
| 11:29:07 | → | humky joins (~humky@user/humky) |
| 11:30:10 | <Solid> | /o/ \o/ \o\ |
| 11:31:31 | <geekosaur> | w00t |
| 12:02:39 | → | mestre joins (~mestre@191.177.175.57) |
| 12:10:11 | <FOSSHuman[m]> | > * <@liskin:libera.chat> has just finished writing the first draft of XMonad.Util.EWMH module \o/ |
| 12:10:11 | <FOSSHuman[m]> | :)) |
| 12:10:14 | <lambdabot> | <hint>:1:1: error: parse error on input ‘*’ |
| 12:17:07 | <FOSSHuman[m]> | <liskin> "oh, that may not be an overrider..." <- Tried this out today and it worked in combination with the Util.Hacks trayAbovePanelEventHook... |
| 12:17:14 | <FOSSHuman[m]> | * out today in the manageHook of my config and it |
| 12:33:26 | <FOSSHuman[m]> | <liskin> "oh, that may not be an overrider..." <- Just added a manageHook with doLower and stalonetray className matching to my config and it seems to work for now, as a temporary solution... |
| 12:34:26 | → | wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de) |
| 12:40:05 | <FOSSHuman[m]> | * className matching and Util.Hacks trayAbovePanelEventHook to my |
| 12:46:03 | <liskin> | FOSSHuman[m]: good |
| 13:31:27 | → | alternateved joins (~user@194.177.28.171) |
| 14:33:46 | <mc47> | liskin, awesome! |
| 14:39:13 | → | jonahgs joins (~jonahgs@c-73-9-97-169.hsd1.il.comcast.net) |
| 14:49:51 | × | jonahgs quits (~jonahgs@c-73-9-97-169.hsd1.il.comcast.net) (Quit: Leaving) |
| 14:51:17 | <liskin> | geekosaur: do you happen to know what exactly is meant by "hints" in the specification for _NET_SUPPORTED (https://specifications.freedesktop.org/wm-spec/latest/ar01s03.html#idm45623294106896)? |
| 14:52:17 | <liskin> | like e.g. with _NET_NUMBER_OF_DESKTOPS (https://specifications.freedesktop.org/wm-spec/latest/ar01s03.html#idm45623294103328), does having _NET_NUMBER_OF_DESKTOPS in _NET_SUPPORTED mean the WM supports both the property and the client message? |
| 14:52:47 | <geekosaur> | it pretty much tells you; you're supposed to liust any EWMH atoms you support (and their parents, as shown) |
| 14:54:29 | <geekosaur> | basically anything named in the ICCCM, which EWMH builds upon, is a hint. window managers are free to ignore or interpret the hints as they see fit, and clients must accept it |
| 14:55:43 | <geekosaur> | it means both, but note "The Window Manager is free to honor or reject this request" |
| 14:56:32 | <liskin> | so if we "reject" it by simply not having any code to handle it, that means we support it, and we should list _NET_NUMBER_OF_DESKTOPS in _NET_SUPPORTED, which we haven't for years? |
| 14:56:33 | <geekosaur> | so if you list it in _NET_SUPPORTED it doesn't actually claim you will do anything with the desktop message |
| 14:57:57 | <geekosaur> | right. the spec tells us what we SHOULD/MUST do *if* we respond to it, but doesn't require us to support it even if we advertise it. this is admittedly something of a weakness in EWMH, but then it gets many things related to pager / WM communication fairly wrong |
| 14:59:07 | <liskin> | okay, thx :-) |
| 14:59:28 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 14:59:53 | <liskin> | (I probably shouldn't waste much time on this, as we haven't even had _NET_WM_STATE_DEMANDS_ATTENTION for all those years and only last month someone complained) |
| 15:01:10 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 15:01:17 | <geekosaur> | see for example _NET_WM_STATE_SKIP_TASKBAR which is supposed to be set in _NET_SUPPORTED and owned by _NET_WM_STATE, but _NET_SUPPORTED and _NET_WM_STATE belong to the WM while _NET_WM_STATE_SKIP_TASKBAR belongs to the taskbar |
| 15:01:38 | <geekosaur> | EWMH is a cruddy hacked-up mess |
| 15:02:58 | <liskin> | well a decent WM surely has its own integrated taskbar! |
| 15:04:22 | <liskin> | and in our case, _NET_WM_STATE_SKIP_TASKBAR should actually be interpreted by X.H.StatusBar.PP :-) |
| 15:05:05 | <liskin> | (and we can now, indeed, have X.H.StatusBar announce its support for _NET_WM_STATE_SKIP_TASKBAR, if we wanted to do something like that) |
| 15:05:23 | <liskin> | anyway, back to coding :-) |
| 15:07:16 | <geekosaur> | I'm also thinking of my X.U.NoTaskbar which should really check first :) |
| 15:09:57 | <geekosaur> | oh, and PP cares about _SKIP_PAGER not _SKIP_TASKBAR :) |
| 15:11:06 | <liskin> | uh, does it? I'm grepping for SKIP and only finding X.U.NoTaskbar |
| 15:11:27 | <liskin> | oh, you probably meant "should care, if anything" |
| 15:12:14 | <liskin> | (anyway, my mockery about decent WMs having all that integrated still applies :-)) |
| 15:12:31 | <geekosaur> | yeh |
| 15:13:13 | <geekosaur> | suppose they don't consider marco a decent WM since it offloads that to applets in mate-panel… |
| 15:24:08 | → | benin5 joins (~benin@183.82.25.86) |
| 15:27:41 | × | benin quits (~benin@183.82.25.86) (Ping timeout: 264 seconds) |
| 15:27:41 | benin5 | is now known as benin |
| 15:37:14 | <liskin> | jakefromstatefar: https://github.com/xmonad/xmonad-contrib/blob/fa3536b40bc121b6cc724ee393b14b7db44db890/XMonad/Hooks/EwmhDesktops.hs#L186-L191 is O(n²) with n being the total number of windows across all workspaces so this probably contributes to the slowness somehow (still, one should start with a profiler, not by optimizing random bits of code…) |
| 15:37:53 | HelloNewman | is now known as Hash |
| 15:39:48 | <Solid> | I mean, anything with nub in it is technically O(n^2) but, as we found out, up until 15 or so windows this is faster than nubOrd and friends :) |
| 15:41:20 | <geekosaur> | people always look at the big-O and forget the constant factors actually matter |
| 16:13:04 | <liskin> | oh well, time for stack build criterion I guess :-) |
| 16:13:37 | <liskin> | (nub [1..10000] takes over a second here in ghci, but a hundred might very well be under a millisec, true) |
| 16:14:22 | <geekosaur> | if someone has 10000 windows, they have bigger problems than how xmonad will deal with them :) |
| 16:18:55 | <liskin> | okay, silly me, nub [1..100] takes 70 μs; nub [1..1000] takes 7 ms |
| 16:19:22 | <liskin> | none of that is in the realm of being perceptible by contemporary humans with contemporary personal computers |
| 16:20:02 | <geekosaur> | even over a second is dubious; consider how long it'd take a human to mod-shift-C 10000 windows |
| 16:20:21 | <geekosaur> | 20 seconds, we have a problem. 1s, not sure we do |
| 16:20:48 | <liskin> | well I didn't mean anyone might actually have 10k windows |
| 16:21:11 | <liskin> | it's just the first number for which length (nub [1..n]) took noticeable time in ghci :-) |
| 16:21:20 | <liskin> | (first power of 10, to be precise) |
| 16:22:03 | liskin | is so silly he really did decide to benchmark stuff by looking at how long it feels to eval in ghci |
| 17:51:35 | <Solid> | :D |
| 17:53:43 | <Solid> | I doubt it takes anywhere near as long compiled |
| 17:54:01 | <Solid> | (ghci really is quite slow) |
| 17:54:53 | <geekosaur> | hm. has anyone actually looked at the Spiral layout to see if it's doing something really stupid? |
| 17:55:15 | <geekosaur> | since iirc that was the one cited as being slow with 20 windows |
| 17:55:59 | <geekosaur> | (personally I consider Spiral a useless demo layout) |
| 17:57:24 | <geekosaur> | also perhaps this should reuse Direction2D rather than define its own |
| 17:57:46 | <liskin> | Solid: hm, but nub comes from base, it's not being interpreted, is it? |
| 17:58:06 | <geekosaur> | mm, maybe not, UDLR is different from NSEW |
| 17:58:27 | <liskin> | that being said, compiled with -O2 and :: Int, nub [1..1000] takes 2.3 ms, which is not an order of magnitude faster, but it's more than twice as fast |
| 17:58:29 | <liskin> | strange |
| 17:58:48 | <geekosaur> | I expect t's fusing |
| 17:59:17 | <geekosaur> | nub (enumFromTo 1 1000) |
| 17:59:55 | <liskin> | yeah, that might be it, without -O2 it's very close to the number I get in ghci |
| 18:00:42 | <Solid> | well the first thing I can see in spiral is that it uses a fibonacci implementation that has a space leak :) |
| 18:00:54 | <Solid> | but again the number are so small that it this will never matter |
| 18:10:16 | → | catman joins (~catman@user/catman) |
| 18:32:48 | × | electr0n quits (~electr0n@about/security/founder/electr0n) (Quit: WeeChat 3.3) |
| 18:33:10 | × | benin quits (~benin@183.82.25.86) (Ping timeout: 252 seconds) |
| 18:45:09 | × | catman quits (~catman@user/catman) (Quit: WeeChat 3.4-dev) |
| 18:55:26 | → | catman joins (~catman@user/catman) |
| 19:14:16 | × | catman quits (~catman@user/catman) (Quit: WeeChat 3.4-dev) |
| 19:27:15 | → | catman joins (~catman@user/catman) |
| 19:46:17 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 19:59:31 | × | catman quits (~catman@user/catman) (Ping timeout: 252 seconds) |
| 20:00:20 | → | catman joins (~catman@user/catman) |
| 20:06:55 | <jakefromstatefar> | <geekosaur> "since iirc that was the one..." <- No, it was accordion that was slow |
| 20:11:12 | <jakefromstatefar> | I think (important preface) that it's the quick resizing of so many windows (in conjunction with modern picom's stupidity) |
| 20:13:14 | <jakefromstatefar> | --- |
| 20:13:14 | <jakefromstatefar> | Is there a way to completely remove specified windows, that are otherwise `ignored`? |
| 20:19:14 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:39:55 | × | wonko quits (~wjc@62.115.229.50) (Ping timeout: 268 seconds) |
| 21:31:35 | <geekosaur> | I don't understand the question. xmonad should unmap any window that's not visible, and xmonad core knows nothing whatsoever about markBoring. |
| 21:32:11 | <geekosaur> | if you mean doIgnore-d, xmonad neither maps nor unmaps thoise, nor does anything else with them; it's up to their owning app to manage them |
| 21:33:08 | <geekosaur> | hm, actually with my compton settings I bet 20 (mapped) windows would be slow as well |
| 21:33:24 | <geekosaur> | mostly because of fading |
| 21:43:25 | → | cjb joins (~cjb@user/cjb) |
| 21:46:35 | <jakefromstatefar> | It's unrelated to the prior discussion. |
| 21:47:05 | <jakefromstatefar> | I'm just wondering if there's a way to override ignored windows, so that under certain criteria, they're never displayed at all. |
| 21:48:50 | <liskin> | jakefromstatefar: https://xmonad.github.io/xmonad-docs/xmonad-contrib-0.16.999/XMonad-Hooks-ManageHelpers.html#v:doHideIgnore |
| 21:57:34 | <geekosaur> | "under certain criteria" seems like a problem, since there'd be no way to get them back without the app's active involvement |
| 21:59:40 | <liskin> | xdotool windowmap might help? |
| 22:00:13 | <geekosaur> | mm, maybe |
| 22:01:04 | <geekosaur> | as long as it's not override_redirect, where that might confuse the app since it expects to fully manage its own window |
| 22:04:15 | × | humky quits (~humky@user/humky) (Quit: Leaving) |
| 22:24:10 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 22:27:39 | × | seschwar quits (~seschwar@user/seschwar) (Quit: :wq) |
| 22:43:33 | × | mestre quits (~mestre@191.177.175.57) (Quit: Lost terminal) |
| 22:50:40 | → | mestre joins (~mestre@191.177.175.57) |
| 23:05:27 | × | mestre quits (~mestre@191.177.175.57) (Quit: Lost terminal) |
| 23:07:33 | → | humky joins (~humky@user/humky) |
| 23:13:46 | × | humky quits (~humky@user/humky) (Quit: Leaving) |
| 23:17:38 | → | humky joins (~humky@user/humky) |
| 23:22:08 | × | Nosrep quits (~archbox@user/nosrep) (Quit: WeeChat 3.3) |
| 23:30:10 | × | alternateved quits (~user@194.177.28.171) (Ping timeout: 252 seconds) |
All times are in UTC on 2021-10-17.