Home liberachat/#xmonad: Logs Calendar

Logs on 2025-10-02 (liberachat/#xmonad)

01:24:18 × rascasse quits (rascasse@user/diep) (Remote host closed the connection)
02:45:20 × td_ quits (~td@i5387093A.versanet.de) (Ping timeout: 240 seconds)
02:47:19 td_ joins (~td@i53870901.versanet.de)
06:50:18 × ft quits (~ft@p4fc2a225.dip0.t-ipconnect.de) (Quit: leaving)
07:13:27 tema joins (~tema@93.175.2.220)
07:13:45 × tema quits (~tema@93.175.2.220) (Client Quit)
07:15:57 Solid joins (~slot@xmonad/slotThe)
09:24:59 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
09:29:34 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
09:29:38 <Maeda> Hi there! Do spawnOnce (from XMonad.Util.SpawnOnce) not honoring a ManagedHook where a rule for a window className to be "insertPosition Below Newer"? For example, closing that window opened at logon and re-opening it makes the 'Below Newer' rule effective as expected (and any further opening of that windows is OK).
09:40:37 × Digit quits (~user@user/digit) (Remote host closed the connection)
09:45:10 Digit joins (~user@user/digit)
10:43:27 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
11:52:21 mc47 joins (~yecinem@host-212-114-138-22.customer.m-online.net)
11:52:40 × mc47 quits (~yecinem@host-212-114-138-22.customer.m-online.net) (Changing host)
11:52:40 mc47 joins (~yecinem@xmonad/TheMC47)
13:22:21 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
13:29:03 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
13:31:04 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
13:33:27 <Enrico63> Hi there. I'd like some help debugging an issue with a project of mine. The reason I'd like to ask here is that I can reproduce the bug when logging out of xmonad and back in again. I don't think the bug is in xmonad but in the xmobar status bar, however for obvious reasons I think I can get some help here. I suppose it's a bit OT, but can I ask?
13:34:02 <Enrico63> (obviously the bug could be in my project as well, obviously)
13:35:17 <Enrico63> The issue has to do with a zombie process left running when logging out of xmonad, I think because it shuts xmobar down which in turns is supposed to shut my plugin down
13:52:33 × PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (Ping timeout: 252 seconds)
13:56:39 PotatoGim joins (sid99505@id-99505.lymington.irccloud.com)
14:02:37 Solid` joins (~slot@uhh-wlan-fo-134-100-17-67.rrz.uni-hamburg.de)
14:04:13 × Solid quits (~slot@xmonad/slotThe) (Ping timeout: 264 seconds)
14:22:39 × Solid` quits (~slot@uhh-wlan-fo-134-100-17-67.rrz.uni-hamburg.de) (Quit: ERC 5.6.1-git (IRC client for GNU Emacs 31.0.50))
14:23:56 <geekosaur> Maeda, it should be honored but insertPosition plays games with the StackSet and can conflict with a lot of things if done in the wrong order. Try moving that rule relative to manageSpawn
14:32:41 <Enrico63> Ok, let me rephrase the question.
14:32:41 <Enrico63> Here's the `main` in my `xmonad.hs`:
14:32:42 <Enrico63> ```
14:32:42 <Enrico63> main :: IO ()
14:32:43 <Enrico63> main = xmonad
14:32:43 <Enrico63>      . ewmhFullscreen
14:32:44 <Enrico63>      . ewmh
14:32:44 <Enrico63>      . withEasySB (statusBarProp "xmobar ~/.config/xmobar/xmobar.hs" (clickablePP myXmobarPP)) toggleStrutsKey
14:32:45 <Enrico63>      $ myConfig
14:32:45 <Enrico63>      where
14:32:46 <Enrico63>        toggleStrutsKey XConfig { modMask = m } = (m, xK_b)
14:32:46 <Enrico63> ```
14:32:47 <Enrico63> What do I know, from this, about what happens to the executable xmobar when I log out of xmonad? How is it shut down? Just like if I had done `kill $(pidof xmobar)`? Or `kill -KILL $(pidof xmobar)`? Or what?
14:43:00 <liskin> Enrico63: depends on what "log out of xmonad" means exactly but most likely nothing happens whatsoever
14:43:02 <geekosaur> https://hackage.haskell.org/package/xmonad-contrib-0.18.1/docs/XMonad-Hooks-StatusBar.html#v:killStatusBar
14:43:28 <liskin> There's no hook when xmonad exits so this function won't be called unless you do it yourself
14:43:51 <liskin> (iirc)
14:44:11 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
14:44:11 <geekosaur> right, that;'s the other side of it: processes are killed not when xmonad exits but when a new xmonad is spawned (usually what you get woth mod-q)
14:44:16 <geekosaur> welp
14:44:36 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
14:44:37 <liskin> But the X server going away will be noticed by xmobar and it will exit on its own
14:45:20 <Enrico63> Sorry, I dropped a sec. Anyway, log out= io exitSuccess
14:45:24 <liskin> What happens to processes spawned by it? Similar. If there's a pipe they'll notice and should exit themselves. If there's not a pipe then probably nothing
14:46:13 <liskin> Enrico63: that might or might not mean the X server terminates (I run xmonad in a loop so even if it crashes the X stays alive, for example )
14:46:58 <Enrico63> With that command, I'm back to the VT, so X is gone
14:47:50 <geekosaur> then any processes that weren't terminated will see EOF on their X server sockets and will exit
14:48:09 <geekosaur> (XNextEvent() will fail)
14:48:34 <Enrico63> geekosaur, I could use that killAllStatusBars to see if I can reproduce the behavior I see without exiting XMobar and X.
14:50:04 <Enrico63> Ok, let me give more context. I have xmobar run as I explained above. Then I have a plugin in xmobar that registers a notification server (that I've written). When I exit xmonad as explained, and then log back in, I can register the notificatin server again because the name is still busy, revealing something was left running.
14:51:52 <Enrico63> If take xmobar out of the equation and run the notificationi server in a terminal, I can reproduce this zombie behavior by running `kill -KILL $(pidof the-notif-server-running-in-the-other-terminal)`. I'll basically see that the notification server keeps printing notifications in the terminal, even if I killed it. If I try to register a new one, it
14:51:52 <Enrico63> fails because the name is busy, just like in the case described above. Luckily, in this case, closing the terminal cleans things up.
14:52:27 <Enrico63> I CAN'T register, I meant.
14:53:01 <Enrico63> (sorry for caps)
14:58:50 <Enrico63> Killing xmobar via killAllStatusBars still leaves things in a good state, in the sense that the notification server is unregistered (if I'm using the right terminology)
15:18:39 × mc47 quits (~yecinem@xmonad/TheMC47) (Ping timeout: 250 seconds)
15:19:34 <geekosaur> that makes me think however your xmobar plugin is managing the notification server is wrong, since xmobar should be exiting and hopefully running some plugin deinit first (it may not exit until xmonad starts up again, because we can't kill things at exit so we save them and kill at next startup, but this is guaranteed to happen before starting new bars). if it's not, the notification server may keep running
15:26:09 <Enrico63> Mmm. But regarding the fact that I can reproduce the "zombi" scenario by killing the notification server (when I run it as standalone from a terminal) via `kill -KILL`... that's not a proof on its own that there's a bug, right? I mean -KILL means that no chance is given to the process to clean up anything, am I correct?
15:26:35 <geekosaur> correct
15:27:09 <geekosaur> but it's rare for anything to use -KILL directly; the convention is -TERM, wait 5-10 seconds, -KILL if the process hasn't exited on its own
15:27:45 <geekosaur> to keep stuck processes from blocking an entire "stack" from shutting down
15:27:58 <Enrico63> I see
15:32:58 <liskin> Is this notification server a separate process?
15:34:38 <liskin> If yes and it expects to be terminated by a signal, then that's fraught with disappointment. Nothing, apart from xmonad's dynamicSBs, sends signals. Even dynamicSBs doesn't send them on exit, only on rescreen.
15:35:15 <liskin> You'll need to find another way. And you'll need to learn a bit about signals and pipes and processes and such.
15:35:37 <liskin> Or you can do what I do and just let systemd manage everything. :-)
15:35:58 <Enrico63> Ok, that assumes my understanding of how xmobar spawns the `IO` actions provided by the plugins. Let me check
15:36:24 <liskin> I just run xmobar "plug-ins" as completely separate systemd services that write into X props and xmobar reads from them. Works like a charm.
15:37:11 <liskin> (but getting that to work with multiple X sessions means straying so far from the beaten path it's not even fun)
15:37:46 <Enrico63> Well, at the moment I'm more curious about understanding what's going on with my setting. I mean, the bug can easily be in my notification server.
15:38:11 <geekosaur> or in xmobar or your plugin, as I said
15:39:03 <geekosaur> lots of moving parts here, and it's sufficiently distant from xmonad that that's unlikely to be involved if xmobar is getting killed/restarted correctly; that fingers the plugin or thenotification server
15:42:13 <Enrico63> The IO action I use the start the server is here https://codeberg.org/Aster89/xnobar/src/commit/7a445e8302db800b214dcc7f11562cc06f854dd3/lib/Server/XNobar/Server.hs#L78-L102.
15:42:13 <Enrico63> The `reply == NamePrimaryOwner` means that the registration happened successfully, in which case I pass `Right (notifications, revoke)` down the following computation, but `revoke` is an IO action that undos what I've done in the linked code. And at
15:42:14 <Enrico63> https://codeberg.org/Aster89/xnobar/src/commit/7a445e8302db800b214dcc7f11562cc06f854dd3/lib/XNobar/XNobar.hs#L60-L62 I try to be careful to run that `finally`.
15:42:47 <Enrico63> With that, I think I'm ensuring that things are clean up correctly, at least if I don't kill with -KILL.
15:43:25 <Enrico63> Does it sound sensible, or am I saying crap? :/
15:45:31 <liskin> That assumes xmobar terminates its threads cleanly and waits for them
15:45:36 <liskin> I wouldn't bet it does
15:45:45 <geekosaur> there's one key piece missing: how, if at all, does xmobar tell your plugin to deinitialize?
15:45:52 <Enrico63> The fact that, when I run the notif server in a terminal, killing it with -KILL leaves it running like a zombi and when i kill it without KILL it is shut down and I can restart it, leads me to think that my notif server is behaving well
15:46:16 <liskin> Wait what
15:46:29 <liskin> If you KILL then it's running? Wtf
15:46:30 <geekosaur> it's entirely possible that it assumes plugins don't do anything persisten
15:46:33 <geekosaur> t
15:46:45 <Enrico63> liskin gimme a moment to re-read my msg
15:46:51 <geekosaur> liskin, -KILL prevents cleanup, so the server isn't reaped
15:47:21 <liskin> geekosaur: they didn't say killing xmobar, they said killing notif server
15:47:37 <Enrico63> Oh, yeah, liskin, if I kill -KILL the notification server, I see it keeps running. even if the PID is gone
15:47:40 <geekosaur> also, wrt the server itself, -KILL means not being able to tell dbus to deregster the name
15:47:57 <Enrico63> Yes, @geee
15:48:06 <geekosaur> so registering it again will fail without a flag to reuse the name
15:48:10 <Enrico63> yes, geekosaur, that's why I think it's normal that it keeps running in that case
15:48:11 <liskin> But yeah if C-Cing xmobar evals the finally, that's a hint maybe it does actually wait for the threads
15:49:21 <geekosaur> also, if the pid is gone, the server is gone. but its registration with dbus may still be there
15:50:01 <Enrico63> liskin, eh... but I actually added that finally just an attempt to fix this issue. I had forgotten to do any deristration before, and it would stil bheave the same (i.e. react well when I, say, kill xmobar, or restart xmonad in place, and it would leave the name busy when logging out of xmonad)
15:50:05 <geekosaur> sometimes this is just something you must deal with. https://github.com/geekosaur/xmonad.hs/blob/hilfy-2023/xmonad.hs#L448-L450
15:51:11 <Enrico63> > also, if the pid is gone, the server is gone. but its registration with dbus may still be there
15:51:11 <Enrico63> yea, geekosaur, I think that is what happens when I exit xmonad. And I tend to  think that it's because xmobar kills me too harshly, like with KILL.
15:51:12 <lambdabot> <hint>:1:5: error: parse error on input ‘,’
15:51:43 <liskin> So did we at least establish whether the process is still running?
15:51:56 <liskin> If not and dbus refuses then what geekosaur says
15:52:00 <geekosaur> quote with something other than "> ", lambdabot takes that as code to run
15:52:17 <geekosaur> they said the pid is gone, so it's not running
15:52:19 <Enrico63> Sorry, I didn't know that :(
15:52:21 <liskin> If yes then it's an issue of process lifetimes and signalling
15:52:38 <Enrico63> If you give me a moment I can record a GIF
15:52:46 <Enrico63> well, more than a moment
15:52:52 <liskin> (afk now, sry)
16:01:13 <Enrico63> Here's the GIF showing my repro https://codeberg.org/Aster89/xnobar/attachments/03972518-6532-4594-b632-62bf39030453
16:20:24 <geekosaur> okay, that proves killing xmobar doesn't do anything. I think liskin was asking about your notification server itself
16:20:28 <Enrico63> The IO action I defined in my plugin is run here: https://codeberg.org/xmobar/xmobar/src/commit/4e8ec5a4c86873018f3ba33669fb9affff280d6e/src/Xmobar/Run/Loop.hs#L104 via `async`
16:21:29 <Enrico63> geekosaur, I might have misunderstood what I was asked. What about the notification server?
16:24:08 <geekosaur> you said its pid had gonee away but it was still running. by "its pid had gone away" did you mean xmobar, or the notification server itself?
16:30:00 <Enrico63> When I said that I was talking of the scenario I've shown in the GIF, that is when take xmobar out of the equation and run the notification server manually in a terminal.
16:30:30 <Enrico63> In that case, the PID is the PID of the `cabal run` that I enter in the terminal to run the notification server.
16:34:04 <Enrico63> So I'm just making the hypothesis that when I exit xmonad, xmobar (at some point) is shutting down my notification sever in a way similar to what I can do via kill -KILL when I run my notification sever standalone, i.e. in a way that doesn't give it a chance to unregister from dbus.
16:35:10 <Enrico63> But I don't know how to see if that's the case. I think the clean up of xmobar's plugins happens via this function: https://codeberg.org/xmobar/xmobar/src/commit/4e8ec5a4c86873018f3ba33669fb9affff280d6e/src/Xmobar/Run/Loop.hs#L73-L76
16:36:33 <Enrico63> But `cancel` seem to do the right thing, according to the doc: https://hackage.haskell.org/package/async-2.2.5/docs/Control-Concurrent-Async-Internal.html#v:cancel
16:39:04 <liskin> What do you mean by you don't know how to see? Just login as root from vt1 and do ps axf after you've shut down X?
16:39:41 <liskin> (or even perhaps login as your user if you don't use user systemd to manage the X session)
16:39:42 <Enrico63> To see what? If xmobar is running or not?
16:40:04 <liskin> Probably a good idea to not limit yourself to xmobar.
16:40:16 <liskin> To see everything. What's still running and what's not.
16:40:49 <Enrico63> Ok, but I have to know what to look for, no?
16:41:01 <Enrico63> Just saying I don't know what else to look for.
16:41:23 <Enrico63> Except I'd wander about my notification server, but is that a _process_?
16:41:47 <Enrico63> As in, if the IO action is run via async... then it won't have a PID associated, or would it?
16:42:53 <liskin> If it's not a separate process then yeah xmobar
16:44:09 <Enrico63> On this line here https://codeberg.org/xmobar/xmobar/src/commit/4e8ec5a4c86873018f3ba33669fb9affff280d6e/src/Xmobar/Run/Loop.hs#L104 `start` is the thing I define in my plugin. It is run via `async`. So the conclusion is that it's not a separate process, right? Is just a separate thread
16:48:16 <liskin> Yeah
16:48:47 <geekosaur> your plugin, yes. but if you spawn something, that will be a separate process. (it's also playing with fire, as mixing threads and processes is unsafe in any language. fork+immediate exec is usually safe, but still has potential for crashes)
16:52:20 <Enrico63> "but if you spawn something" -> does registering with dbus count?
16:52:49 <geekosaur> no
16:53:02 <geekosaur> you are running a notification server which is a separate process
16:54:24 <Enrico63> Yeah, but I'm not spawning anything, as far as I know. I'm just using DBus API
16:55:21 <geekosaur> wait, this is all running inside of xmobar, then?
16:57:12 <geekosaur> okay, I see, it's just a library. so if xmobar exits the thread shouldn't exist any more (when the main thread of a process exits, all other threads are hard-killed)
16:57:49 <Enrico63> Oh, crap, where am I unclear? :'(
16:57:49 <Enrico63> 1. My  understanding is that the `IO` action I define in my plugin is run by xmobar via `async`.
16:57:50 <Enrico63> 2. The `IO` action I define in my plugin takes care of registering with DBus
16:57:50 <Enrico63> 3. Incidentally I do also spawn so process, but for doing toher stuff like creating a pipe, writing into it, but that's  I believe what you refer to as fork+exec
16:58:01 <Enrico63> *spawn some processe
16:58:35 <Enrico63> Does "hard-killed" mean "no chance of clean up"?
16:59:44 <geekosaur> yes
17:00:25 <Enrico63> Then that doesn't fit with my objservations either. Because if instead of quitting xmonad I simply kill (even with -KILL) xmobar, then the dbus registration is not left hanging there
17:00:26 <geekosaur> this is forced by the OS; if the process needs to do thread cleanup, it needs to signal threads to clean up and wait for them to exit before it exits
17:16:57 <geekosaur> I'm going to have to leave soon so I can't poke at this any more right now, sorry
17:20:41 <Enrico63> No problem. I'm collecting anyway the info here https://codeberg.org/Aster89/xnobar/issues/15 so asking another day I can refer to that, if that's ok
17:21:04 <Enrico63> But thanks :)
17:30:33 <liskin> Maybe when xmobar loses its X connection it doesn't exit as cleanly as when you sigterm or sigint it?
17:30:57 <liskin> Either way, if xmobar isn't running and you still can't register on dbus, that's between you and dbus.
17:31:05 <liskin> The two of you need to agree.
17:31:30 <liskin> <geekosaur> sometimes this is just something you must deal with. https://github.com/geekosaur/xmonad.hs/blob/hilfy-2023/xmonad.hs#L448-L450
17:31:35 <liskin> This way maybe
17:34:18 <Enrico63> "if xmobar isn't running and you still can't register on dbus". No, if xmobar isn't running, which I  means I'm running my notif server as a **process**, then if I want to get in the situation where I can't register is that I register and then `kill -KILL` my notif server. But in that case, geekosaur has confirmed that's normal, as -KILL means no
17:34:18 <Enrico63> chance for clean up is given.
17:38:38 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
17:39:33 ft joins (~ft@p4fc2a225.dip0.t-ipconnect.de)
17:43:59 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
17:50:35 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
17:55:29 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
17:56:56 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Client Quit)
18:41:16 rascasse joins (~rascasse@user/diep)
19:04:23 <rascasse> Hi, because Im very bad with Haskell Im stuck trying to not apply window/screen spacing on the "Full" layout. I just want them for my other layouts. When I switch to Full, I want any spacing to be turned off for fullscreen experience. This is my layouts config https://b.deip.fr/p/mole-worm-shark Note for spacing Im using https://xmonad.github.io/xmonad-docs/xmonad-contrib-0.18.1.9/XMonad-Layout-Spacing.html
19:05:03 <rascasse> Can someone help me to configure that? (if it is possible)
19:07:53 <rascasse> I think I need to use setWindowSpacingEnabled False somewhere, but as I said I fail because I dont know haskell syntax
19:28:48 × Maeda quits (~Maeda@91-161-10-149.subs.proxad.net) (Quit: BRB)
19:47:22 Maeda joins (~Maeda@91-161-10-149.subs.proxad.net)
19:50:04 <Maeda> geekosaur: Thanks for highlighting this to me. Two changes I've done and now it works. First, add spawnManage before manageHook def (i.e., `manageSpawn <> manageHook def`) and move my MymanageHook rule that defines the insertPostion at the top of the rules. All OK! Once again, your help was greatly appreciated!
20:35:28 <geekosaur> you think wrong because that's not how layouts work. generally you need to apply the spacing modifier only to the layouts you want to use it with
20:37:36 <geekosaur> rascasse, https://bin.deip.fr/upload/mole-worm-shark
20:40:42 <geekosaur> incidentally, that pastebin isa bit buggy: it backslashes $ when you edit, and when I went to remove them it backslashed them again first…
20:40:45 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
20:41:24 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Client Quit)
20:42:34 <rascasse> thx! just to check then `$ spacingWithEdge 9 (tiled ||| mirror) ||| full` is correct right?
20:42:44 <rascasse> it compiles
20:42:52 <rascasse> it works!
20:43:03 <rascasse> man thanks geekosaur
20:43:09 <rascasse> many thanks*
20:43:21 <rascasse> but
20:44:09 <rascasse> for some reason when switching to Full xmobar does not draw the square icon as expected, but nothing is printed
20:44:36 <rascasse> no issue with other layers
20:45:47 <rascasse> that's my xmobar setup if it can helps https://b.deip.fr/p/ape-raven-pig
20:45:57 <geekosaur> does changing Full to Simplest help?
20:46:35 <geekosaur> (Full is a completely blank layout, which confuses some layout modifiers)
20:48:01 <geekosaur> that said, Renamed shouldn't be affected by the difference
20:48:10 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
20:48:31 <rascasse> nope same issue
20:50:22 <rascasse> XMonad.Layout.Simplest right?
20:50:28 <geekosaur> right
20:50:58 <geekosaur> oh, I think I know. move the outer `renamed` so it applies only to `spacingWithEdge`
20:51:15 <geekosaur> otherwise, since the leftmost word of the full layout is the square, it's removed
20:52:59 <rascasse> renamed [CutWordsLeft 1] this one ?
20:53:15 <geekosaur> https://bin.deip.fr/upload/mole-worm-shark
20:53:46 <rascasse> my gosh Haskell ><
20:54:03 <rascasse> my small brain hurt
20:54:05 <rascasse> xD
20:54:17 <geekosaur> actually there's some unneeded parens there
20:54:51 <geekosaur> okay reload, since it's giving me the same urls
20:55:28 <rascasse> yep will try 2sec
20:55:29 <geekosaur> sorry, it backslashed my $s again, try it now
20:57:49 <rascasse> yea I spotted it
20:57:57 <rascasse> but does not compile
20:58:35 <rascasse> https://b.deip.fr/p/otter-dove-koala
20:58:55 <geekosaur> which version did you get? I had a version saved where the pastebin threw a bunch of backslashes into it that would break it
20:59:14 <rascasse> no backslashes
20:59:35 <rascasse> with `spaced = renamed [CutWordsLeft 1] $ spacingWithEdge 9`
20:59:53 <rascasse> and `$ spaced (tiled ||| mirror) ||| full`
21:00:29 <geekosaur> right, LayoutClass vs. type inference 😕
21:02:19 <rascasse>
21:03:03 <geekosaur> this will be ugly, I'm afraid
21:03:38 <rascasse> 🙈
21:03:49 <rascasse> lets see
21:06:13 <geekosaur> https://bin.deip.fr/upload/mole-worm-shark
21:09:58 <rascasse> ah need to import ModifiedLayout
21:12:31 <geekosaur> also it's wrong anyway, I'm poking
21:12:39 <rascasse> ah ok
21:13:04 <rascasse> couldn't find from where to import it anyway
21:13:24 <rascasse> https://b.deip.fr/p/goose-dove
21:13:32 <rascasse> compile error
21:16:28 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
21:19:03 <geekosaur> oyes, I said it was broken
21:19:14 <geekosaur> https://bin.deip.fr/upload/mole-worm-shark less ugly than I thought and doesn't need the import
21:22:51 <rascasse> testing!
21:24:22 <rascasse> yup I confirm fixed
21:24:31 <rascasse> thanks again!
21:27:24 <rascasse> much better for this layout
21:28:47 <rascasse> btw, in Full is it possible to have the window drawn ontop of xmobar?
21:29:08 <rascasse> draw*
21:30:05 <rascasse> perhaps there is another way to toggle "fullscreen" for a given window?
21:30:12 <rascasse> I dont remember
21:31:14 <geekosaur> you need to make avoidStruts not apply to it
21:35:39 <rascasse> I see
21:37:09 <rascasse> got it `$ avoidStruts (spaced (tiled ||| mirror)) ||| full`
21:39:52 <geekosaur> I'd've just added it to spaced, but whatever
21:40:43 <geekosaur> there's also a trickier version if you want to try it at some point: https://github.com/geekosaur/xmonad.hs/blob/hilfy-2023/xmonad.hs#L183-L184
21:41:21 <geekosaur> that is, on `Full` you use that `avoidStrutsOn []`, which means you can toggle the xmobar visible if you need to but by default it's hidden
21:42:28 <rascasse> `spaced l= renamed [CutWordsLeft 1] $ avoidStruts $ spacingWithEdge 9 $ l` yes much cleaner
21:44:06 <rascasse> interesting
21:44:34 <geekosaur> you can also put a space before the = there, I was just maintaining spacing without editing the other lines
21:46:42 <rascasse> yes I know, but same I prefer preserving the indent
21:47:08 <geekosaur> could just reindent the other lines too, I was just being lazy 🙂
21:49:11 <rascasse> yes ser
21:50:36 <rascasse> how it looks now https://b.deip.fr/p/bear-swan-bird
21:51:43 <rascasse> just realizing now I dont need to rename Full
21:51:45 <rascasse> anymore
21:51:59 <rascasse> since xmobar is hidden anyway
21:57:25 <rascasse> keeps surprised how flexible Xmonad is, and so, powerful
21:59:44 <rascasse> it justs hurt a bit to write the Haskell config, but thankfully with some help form geekosaur everything is possible 😁
22:00:42 <rascasse> and with XLibre remixing the cards, there is still good hope for the future of X11 wms
22:02:28 <geekosaur> hah, I was hoping someone would do that
22:03:03 <geekosaur> that said, the X11 protocol needs a fair amount of work to fix various shortcomings (like, font handling between my three monitors)
22:04:39 <rascasse> yea I think XLibre is really a good news for that, the activity is quite good, checking at the progress so far, it's gaining some traction
22:05:34 <rascasse> Im about to swith my laptop soon tbh
22:05:41 <rascasse> on xlibre
22:06:17 <rascasse> Xmonad has already been reported working
22:06:58 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
22:26:46 × rascasse quits (~rascasse@user/diep) (Ping timeout: 255 seconds)
22:47:30 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
23:18:35 rascasse joins (~rascasse@user/diep)
23:20:34 × rascasse quits (~rascasse@user/diep) (Remote host closed the connection)

All times are in UTC on 2025-10-02.