Home liberachat/#xmonad: Logs Calendar

Logs on 2024-06-18 (liberachat/#xmonad)

00:00:56 <geekosaur> unfortunately that's the only place where we generate a RationalRect from a Rectangle; everything else goes the other direction (scaling a Rectangle according to a RationalRect)
00:02:09 <haskellbridge> <iqubic (she/her)> Well, I'm just gonna be passing this RationalRect into "customFloat" to place my Named Scratch Pad.
01:48:00 <haskellbridge> <iqubic (she/her)> Does something like this work for doing scratchpad manage hooks? https://dpaste.com/3E3T9BR7J
01:49:16 <haskellbridge> <iqubic (she/her)> I just have to fiddle with the values to get something I like, but I think that should work.
01:51:47 <geekosaur> it should
01:52:23 <geekosaur> I think I have something in my scratchpads where I messed with numbers until I got it to work (actually I think I computed it by hand and then adjusted until it works)
01:53:08 <haskellbridge> <iqubic (she/her)> I am just messing with these numbers until I get something that looks good to me.
01:53:29 <haskellbridge> <iqubic (she/her)> But that should make the windows centered right?
01:56:05 <geekosaur> it should, yes
01:57:06 <haskellbridge> <iqubic (she/her)> Just checking that I got my math right.
01:59:11 <haskellbridge> <iqubic (she/her)> Is 222 lines of xmonad config too much?
02:00:15 <geekosaur> I have just over 450 😛
02:01:24 <haskellbridge> <iqubic (she/her)> Will longer config mean slower WM?
02:01:34 <geekosaur> not necessarily
02:02:06 <geekosaur> if you have a lot of handleEventHooks or a large logHook, you may have issues
02:02:37 <geekosaur> a large keymap, for example, won't slow things down because it's compiled to (possibly nested) maps
02:03:07 <haskellbridge> <iqubic (she/her)> Also, I've noticed that named scratchpads only change their size after I restart xmonad and also kill the window. It's like the manage hook is only run at window creation time.
02:03:13 <haskellbridge> <iqubic (she/her)> Is that intended?
02:03:21 <geekosaur> yes
02:03:31 <haskellbridge> <iqubic (she/her)> Got it.
02:04:52 <haskellbridge> <iqubic (she/her)> Also, these named scratchpads are gonna be wildly useful. It's awesome to be able to just quickly open up a terminal and have a process run in the background. Or even just being able to open up Emacs and jot down a few notes!
02:19:16 <haskellbridge> <iqubic (she/her)> Why do you have to explicitly add a manageHook for named scratchpads?
02:26:59 <geekosaur> because the manageHook is what handles all newly-opened windows, so the mini-managehooks in the scratchpad definition need to be hooked into it
02:28:34 <haskellbridge> <iqubic (she/her)> Right. I see.
02:30:35 <geekosaur> if the keybindings were part of the scratchpad definition, we could use a single combinator to hook everything in
02:31:12 <geekosaur> kinda like we have `ewmh` that hooks in everything needed for EWMH to work
02:31:32 <haskellbridge> <iqubic (she/her)> Yeah, that makes sense.
02:51:52 → srk joins (~sorki@user/srk)
02:58:41 × td_ quits (~td@i53870910.versanet.de) (Ping timeout: 252 seconds)
03:00:21 → td_ joins (~td@i53870936.versanet.de)
03:26:49 <haskellbridge> <iqubic (she/her)> Did the StackSet concept come from DWM?
03:29:25 <geekosaur> I don't think so
03:29:56 <geekosaur> The StackSet is based around zippers, which are functional data structures
03:30:35 <haskellbridge> <iqubic (she/her)> Oh... DWM just has a similar concept with a master and stack.
03:30:55 <geekosaur> yeh, but I think their stack is a standard array type
03:31:10 <geekosaur> you can do arrays in functional languages, but they're a bit clunky
03:32:21 <haskellbridge> <iqubic (she/her)> Yeah, that makes sense.
03:32:27 <haskellbridge> <iqubic (she/her)> Zippers are cool!
03:36:21 <geekosaur> (re clunky: either it's immutable and messes with GC a lot, or it's mutable and everything involving it has to be in IO or ST)
03:41:33 <haskellbridge> <iqubic (she/her)> I've worked with Arrays in ST and it's painful!
03:44:50 <haskellbridge> <iqubic (she/her)> Is it possible to have the same window show up on different workspaces?
03:45:03 <geekosaur> XMonad.Actions.CopyWindow
03:45:25 <geekosaur> what does _not_ work is trying to display the same window on two screens, because X11 doesn't support it
03:45:47 <geekosaur> a compositor could do it, but no current compositor does
03:45:51 <haskellbridge> <iqubic (she/her)> Yeah... I knew about the latter caveat.
03:49:54 <haskellbridge> <iqubic (she/her)> Is there a message or function I can call to reset the state of the Tall or Mirror Tall layout after sending some Shrink or Expand messages?
03:50:26 <haskellbridge> <iqubic (she/her)> As in, reset the size of the master pane to the default.
03:53:56 <geekosaur> not specifically, I think the best you can do is reset the whole layout (`asks (layout . config) >>= setLayout`)
03:54:30 <geekosaur> (well, it only resets the current workspace at least)
03:55:22 <geekosaur> uh, `asks (layoutHook . config) >>= setLayout`
03:55:50 <haskellbridge> <iqubic (she/her)> Yeah... I was hoping to be able to reset it but stay in Tall / Mirror Tall as I was before. But it's fine. I can just reset with "M-S-<Space>" as is the default.
03:57:20 <geekosaur> I'm not sure that could even be done with a layout message, it wouldn't have access to the defaults, only its current state
03:58:25 <haskellbridge> <iqubic (she/her)> Oh... Right...
03:58:28 <geekosaur> the defaults are in the layoutHook, but that's effectively a function composed of chained data constructors so it can't be introspected to retrieve specific values from it
03:58:30 <haskellbridge> <iqubic (she/her)> I know how Haskell works...
03:59:01 <haskellbridge> <iqubic (she/her)> What does Mod Shift Space do by default? Like what action does it run?
03:59:33 <geekosaur> the one I pasted above (`asks …`)
04:00:07 <geekosaur> come to think of it,since layoutHook is composed of data constructors, you could `show` it and parse the result. it'd be a massive pain
04:00:38 <geekosaur> and if `Tall` is in it twice you probably won't be able to tell which one applies
04:03:28 <haskellbridge> <iqubic (she/her)> Yeah... that makes sense. I'd probably have to write my own version of Tall that stores the defaults if I wanted this. That's too much work..
05:33:30 <haskellbridge> <iqubic (she/her)> Is there anywhere I can go to see how the Binary Space Partition Layout works from a user's point of view? Like, I want to know what sort of features that layout will give me. Is it trying to emulate what BSPWM is trying to do?
05:59:14 <Leary> geekosaur: Improving layout state persistence is one of the problems I used to occupy my mind with when I went for runs. On the basic side: we could keep static config in the layoutHook while storing dynamic state (of potentially another type) per workspace, and have LayoutClass provide a method to apply the dynamic changes. This should also be easy to shoehorn in as a non-breaking opt-in feature, the key change being something like: `class ... => Layout
05:59:15 <Leary> Class l a where { type Dynamic l a; type Dynamic l a = l a; apply :: Dynamic l a -> l a -> l a; default apply :: Dynamic l a ~ l a => l a -> l a -> l a; apply = const; handleMessage :: Dynamic l a -> SomeMessage -> X (Maybe (Dynamic l a)); ... }`
06:00:31 <Leary> On the advanced side, to still persist things when the layout type changes is feasible with tree-diff like techniques, but the payoff isn't enough to suffer through the complexity.
06:02:02 <Leary> Especially since, yeah, it can only achieve "best guess".
06:12:37 → derfflinger_ joins (~derffling@user/derfflinger)
07:10:34 × jsoo quits (~znc@irc.refl.club) (Quit: ZNC 1.8.2 - https://znc.in)
07:10:58 → jsoo joins (~jsoo@irc.refl.club)
07:49:13 × ft quits (~ft@p3e9bcb39.dip0.t-ipconnect.de) (Quit: leaving)
07:51:37 × derfflinger_ quits (~derffling@user/derfflinger) (Ping timeout: 255 seconds)
08:24:13 → cfricke joins (~cfricke@user/cfricke)
09:08:02 × redgloboli quits (~redglobol@user/redgloboli) (Quit: ...enter the matrix...)
09:09:27 → redgloboli joins (~redglobol@user/redgloboli)
09:09:31 → rascasse joins (~rascasse@user/diep)
10:43:36 × m5zs7k quits (aquares@web10.mydevil.net) (Ping timeout: 268 seconds)
10:44:46 → m5zs7k joins (aquares@web10.mydevil.net)
10:45:12 → Digitteknohippie joins (~user@user/digit)
10:46:59 × Digit quits (~user@user/digit) (Ping timeout: 268 seconds)
10:56:45 Digitteknohippie is now known as Digit
11:30:28 → todi_away joins (~todi@p57803331.dip0.t-ipconnect.de)
11:31:22 → gauge_ joins (~gauge@45.32.227.222)
11:31:27 → srk- joins (~sorki@user/srk)
11:32:59 → weitcis_ joins (~quassel@syn-076-082-169-160.res.spectrum.com)
11:33:00 → derfflinger_ joins (~derffling@user/derfflinger)
11:36:41 × srk quits (~sorki@user/srk) (*.net *.split)
11:36:41 × weitcis quits (~quassel@syn-076-082-169-160.res.spectrum.com) (*.net *.split)
11:36:41 × gauge quits (~gauge@user/gauge) (*.net *.split)
11:36:41 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (*.net *.split)
11:36:42 × liskin quits (~liskin@xmonad/liskin) (*.net *.split)
11:36:42 × pl quits (sid98063@id-98063.helmsley.irccloud.com) (*.net *.split)
11:36:42 × fizzie quits (~irc@selene.zem.fi) (*.net *.split)
11:36:42 × xacktm quits (xacktm@user/xacktm) (*.net *.split)
11:36:45 srk- is now known as srk
11:38:41 → derfflinger__ joins (~derffling@user/derfflinger)
11:42:50 × derfflinger_ quits (~derffling@user/derfflinger) (Ping timeout: 252 seconds)
11:44:23 → liskin joins (~liskin@xmonad/liskin)
11:44:23 → pl joins (sid98063@id-98063.helmsley.irccloud.com)
11:44:23 → fizzie joins (~irc@selene.zem.fi)
11:44:23 → xacktm joins (xacktm@user/xacktm)
12:15:39 × liskin quits (~liskin@xmonad/liskin) (*.net *.split)
12:15:39 × pl quits (sid98063@id-98063.helmsley.irccloud.com) (*.net *.split)
12:15:39 × fizzie quits (~irc@selene.zem.fi) (*.net *.split)
12:15:39 × xacktm quits (xacktm@user/xacktm) (*.net *.split)
12:17:07 → liskin joins (~liskin@xmonad/liskin)
12:17:07 → pl joins (sid98063@id-98063.helmsley.irccloud.com)
12:17:07 → fizzie joins (~irc@selene.zem.fi)
12:17:07 → xacktm joins (xacktm@user/xacktm)
12:19:15 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 260 seconds)
12:37:40 → cfricke joins (~cfricke@user/cfricke)
12:54:09 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 256 seconds)
13:22:15 → cfricke joins (~cfricke@user/cfricke)
13:25:41 × td_ quits (~td@i53870936.versanet.de) (Quit: waking up from the american dream ...)
13:30:21 → td_ joins (~td@i53870936.versanet.de)
14:24:41 todi_away is now known as todi
14:31:09 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 268 seconds)
15:56:07 <geekosaur> @iqubic, yes re BSP
15:56:07 <lambdabot> Unknown command, try @list
15:56:54 <geekosaur> we have a ticket to provide that kind of thing for layouts as part of upgrading the config archive, but it's stalled 😞
16:17:32 <haskellbridge> <iqubic (she/her)> What do you mean by "yes re BSP"?
16:35:50 <geekosaur> [18 05:33:30] <haskellbridge> <iqubic (she/her)> Is there anywhere I can go to see how the Binary Space Partition Layout works from a user's point of view? Like, I want to know what sort of features that layout will give me. Is it trying to emulate what BSPWM is trying to do?
16:37:50 <haskellbridge> <iqubic (she/her)> Ah. Makes sense. I prefer automatic tiling layouts myself. I don't feel the need to micromanage my windows and where they go.
16:40:56 <geekosaur> it does autotile, but it also gives you the ability to rearrange its partitions
16:41:53 <haskellbridge> <iqubic (she/her)> How many windows do you have open on each workspace, on average?
16:57:03 × derfflinger__ quits (~derffling@user/derfflinger) (Read error: Connection reset by peer)
17:43:48 × rascasse quits (~rascasse@user/diep) (Ping timeout: 255 seconds)
17:50:52 → cfricke joins (~cfricke@user/cfricke)
19:33:11 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.2.2)
19:46:16 → rascasse joins (~rascasse@user/diep)
21:32:15 × Leary quits (~Leary@user/Leary/x-0910699) (Remote host closed the connection)
22:25:27 → ft joins (~ft@p3e9bcb39.dip0.t-ipconnect.de)
23:23:40 × rascasse quits (~rascasse@user/diep) (Remote host closed the connection)

All times are in UTC on 2024-06-18.