2025-01-23 01:40:42 +0100 | <haskellbridge> | <m1mir> Hi, I have simple question. Does anyone know where I could configure what runs when I do a _wmctrl -s_ command? |
2025-01-23 01:42:12 +0100 | <geekosaur> | it's part of EwmhDesktops but I don't know if we have a hook for _NET_CURRENT_DESKTOP |
2025-01-23 01:43:48 +0100 | <geekosaur> | doesn't look like we do. what exactly are you trying to do? |
2025-01-23 01:50:32 +0100 | <haskellbridge> | <m1mir> I'm trying to keep the windows with the independent screens module on the right screen. If the workspace that I'm trying to switch to is on the other screen and it is hidden it grabs that workspace and shows it on the screen where I ran the command instead of switching to the right screen. I managed to replace the doFocus with "doF . focusWindow' =<< ask" but I. |
2025-01-23 01:51:18 +0100 | <haskellbridge> | <m1mir> I'm trying to keep the windows with the independent screens module on the right screen. If the workspace that I'm trying to switch to is on the other screen and it is hidden it grabs that workspace and shows it on the screen where I ran the command instead of switching to the right screen. I managed to replace the doFocus with "doF . focusWindow' =<< ask" but I couldn't find a way to do that with the wmctrl -s... |
2025-01-23 01:51:23 +0100 | <haskellbridge> | ... command handling. |
2025-01-23 01:54:59 +0100 | <geekosaur> | I don't think there's a good way to handle it. wmctrl requests workspaces by number, not name, and the numbers don't necessarily map to anything in your xmonad.hs. (EWMH starts numbering reported workspaces from 0 and uses only those numbers.) |
2025-01-23 01:56:57 +0100 | <geekosaur> | `xprop -root _NET_DESKTOP_NAMES is the workspaces names that wmctrl knows about, and it uses an index into that list when it makes its request |
2025-01-23 03:09:02 +0100 | <haskellbridge> | <m1mir> I got confused by the last reply. After reading the code/docs a lot, think it does deal with the index to workspace conversion by sorting workspaces the same way it listed them and taking the nth element using the "!?" operator. |
2025-01-23 03:09:04 +0100 | <haskellbridge> | If i haven't misunderstood the code( which is not unlikely because), then if I want to make switching action customizable for the "wmctrl -s" type window switching I need to switch the W.view to a config parameter in this line (https://github.com/xmonad/xmonad-contrib/blob/c0a5bc5f0f5263108ad5a144711dceff4fb99cde/XMonad/Hook…). Am I correct? |
2025-01-23 03:09:34 +0100 | <haskellbridge> | <m1mir> * because I haven't done a lot of haskell/Xmonad), |
2025-01-23 03:11:52 +0100 | ft | (~ft@p4fc2a1c1.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2025-01-23 03:13:50 +0100 | ft | (~ft@p3e9bcab6.dip0.t-ipconnect.de) ft |
2025-01-23 03:14:32 +0100 | <geekosaur> | I'm not wntirely clear on your issue, but I think the real problem is that it's picking the workspace on the wrong monitor; note that workspaces as seen by EWMH and therefore wmctrl are in an internal <screen>_<wsname> form, and you need to replace the <screen> part? Or do you want to ensure it's activated on the other monitor, which will need more than just replacing W.view? |
2025-01-23 03:15:26 +0100 | <geekosaur> | in particular you need https://hackage.haskell.org/package/xmonad-contrib-0.18.1/docs/XMonad-Actions-OnScreen.html for the latter |
2025-01-23 03:15:55 +0100 | <geekosaur> | (and internally xmonad will be switching focus to the other screen, doing something, and switching back) |
2025-01-23 03:29:45 +0100 | <haskellbridge> | <m1mir> I'll try to clarify. |
2025-01-23 03:29:45 +0100 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/ScFdScYZlfYGsQRcOyOYRAbK/ECx1CjIn-g8 (6 lines) |
2025-01-23 03:37:21 +0100 | <haskellbridge> | <m1mir> I'll try to clarify. |
2025-01-23 03:37:21 +0100 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/FVLbbxxHYnbZnFneyTcgZCwR/wVcRLQxShto (8 lines) |
2025-01-23 03:39:00 +0100 | <geekosaur> | okay. so you will have to translate the workspace index to its name, extract the screen number, and use viewOnScreen from the module I listed earlier |
2025-01-23 03:39:04 +0100 | <haskellbridge> | <m1mir> If I'm correct with what needs to be configurable I can probably make a pr if I can figure out what to name the option. |
2025-01-23 03:40:03 +0100 | <haskellbridge> | <m1mir> I'll try to clarify. |
2025-01-23 03:40:03 +0100 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/wdjcyyOWKboiIXrLkHHmUAfD/QQAgMXiEPxk (8 lines) |
2025-01-23 03:40:46 +0100 | <geekosaur> | edits don't work well IRC-side |
2025-01-23 03:40:57 +0100 | <haskellbridge> | <m1mir> Sorry- |
2025-01-23 03:41:36 +0100 | <geekosaur> | and the answer is still what I just said, you need to extract the screen number and use viewOnScreen instead of W.view |
2025-01-23 03:42:14 +0100 | <geekosaur> | https://hackage.haskell.org/package/xmonad-contrib-0.18.1/docs/XMonad-Actions-OnScreen.html#v:view… |
2025-01-23 03:46:20 +0100 | <haskellbridge> | <m1mir> Ty for the help. I'll try to make a pr to make that action configurable. |
2025-01-23 03:47:29 +0100 | <geekosaur> | one complication: screen numbers are not simple integers, you need to wrap them in W.S (that is, after extracting the 1 from 1_foo and making an Int out of it, you need to apply "S" to it (https://hackage.haskell.org/package/xmonad-0.18.0/docs/XMonad-Core.html#t:ScreenId) to make it into a screen number acceptable to viewOnScreen) |
2025-01-23 03:49:07 +0100 | <geekosaur> | (the documentation shows using literal numbers, but that's because someone got the bright idea of giving it a Num instance so they get fromInteger applied to them. it doesn't work for variables, only for literals) |
2025-01-23 03:50:59 +0100 | <haskellbridge> | <m1mir> Ty for the tip. If I ran into that one I would probably never figure it out on my own. |
2025-01-23 03:52:08 +0100 | <geekosaur> | that's why I warned you |
2025-01-23 03:52:33 +0100 | <geekosaur> | I disapprove of Num instances thsat exist solely to abuse fromInteger precisely because they lead to this kind of nasty surprise |
2025-01-23 03:53:19 +0100 | <geekosaur> | and unless you know how numeric literals are handled in Haskell you will have trouble figuring out the spooky action at a distance |
2025-01-23 04:02:01 +0100 | horzion | (~horzion@ProtonDB/horzion) horzion |
2025-01-23 04:02:43 +0100 | horzion | (~horzion@ProtonDB/horzion) () |
2025-01-23 04:42:03 +0100 | terrorjack45 | (~terrorjac@2a01:4f8:c17:a66e::) (Quit: The Lounge - https://thelounge.chat) |
2025-01-23 04:44:59 +0100 | terrorjack45 | (~terrorjac@2a01:4f8:c17:a66e::) terrorjack |
2025-01-23 06:00:20 +0100 | ChubaDuba | (~ChubaDuba@46.147.219.211) ChubaDuba |
2025-01-23 06:28:00 +0100 | rekahsoft | (~rekahsoft@70.51.99.237) (Remote host closed the connection) |
2025-01-23 06:29:16 +0100 | rekahsoft | (~rekahsoft@70.51.99.237) rekahsoft |
2025-01-23 06:45:23 +0100 | rekahsoft | (~rekahsoft@70.51.99.237) (Ping timeout: 245 seconds) |
2025-01-23 07:20:58 +0100 | ft | (~ft@p3e9bcab6.dip0.t-ipconnect.de) (Quit: leaving) |
2025-01-23 07:29:42 +0100 | ChubaDuba | (~ChubaDuba@46.147.219.211) (Quit: WeeChat 4.5.1) |
2025-01-23 07:30:08 +0100 | ChubaDuba | (~ChubaDuba@46.147.219.211) ChubaDuba |
2025-01-23 07:45:24 +0100 | m5zs7k | (aquares@web10.mydevil.net) (Ping timeout: 260 seconds) |
2025-01-23 07:48:54 +0100 | m5zs7k | (aquares@web10.mydevil.net) m5zs7k |
2025-01-23 09:00:52 +0100 | mc47 | (~yecinem@p200300ee0f038dc39287614d4759a7ca.dip0.t-ipconnect.de) |
2025-01-23 10:11:39 +0100 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection) |
2025-01-23 10:13:20 +0100 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) hackager |
2025-01-23 11:37:23 +0100 | ChubaDuba | (~ChubaDuba@46.147.219.211) (Quit: WeeChat 4.5.1) |
2025-01-23 11:52:57 +0100 | Natch | (~natch@c-92-34-7-158.bbcust.telenor.se) (Ping timeout: 276 seconds) |
2025-01-23 11:54:46 +0100 | Natch | (~natch@c-92-34-7-158.bbcust.telenor.se) |
2025-01-23 12:22:27 +0100 | ash3en | (~Thunderbi@31.16.203.214) ash3en |
2025-01-23 12:22:48 +0100 | ash3en | (~Thunderbi@31.16.203.214) (Client Quit) |
2025-01-23 13:56:13 +0100 | Digitteknohippie | (~user@user/digit) Digit |
2025-01-23 13:57:18 +0100 | Digit | (~user@user/digit) (Ping timeout: 252 seconds) |
2025-01-23 14:31:18 +0100 | redgloboli | (~redglobol@user/redgloboli) (Ping timeout: 252 seconds) |
2025-01-23 14:31:54 +0100 | redgloboli | (~redglobol@user/redgloboli) redgloboli |
2025-01-23 14:38:27 +0100 | ChubaDuba | (~ChubaDuba@46.147.219.211) ChubaDuba |
2025-01-23 15:06:17 +0100 | ChubaDuba | (~ChubaDuba@46.147.219.211) (Quit: WeeChat 4.5.1) |
2025-01-23 16:00:47 +0100 | kaskal | (~kaskal@84-115-237-124.cable.dynamic.surfer.at) (*.net *.split) |
2025-01-23 16:00:47 +0100 | srk | (~sorki@user/srk) (*.net *.split) |
2025-01-23 16:00:47 +0100 | jzargo | (~jzargo@user/jzargo) (*.net *.split) |
2025-01-23 16:00:47 +0100 | Leary | (~Leary@user/Leary/x-0910699) (*.net *.split) |
2025-01-23 16:00:48 +0100 | RMSBach | (~guygastin@137.184.131.156) (*.net *.split) |
2025-01-23 16:05:45 +0100 | kaskal | (~kaskal@84-115-237-124.cable.dynamic.surfer.at) kaskal |
2025-01-23 16:05:45 +0100 | srk | (~sorki@user/srk) srk |
2025-01-23 16:05:45 +0100 | jzargo | (~jzargo@user/jzargo) jzargo |
2025-01-23 16:05:45 +0100 | Leary | (~Leary@user/Leary/x-0910699) Leary |
2025-01-23 16:05:45 +0100 | RMSBach | (~guygastin@137.184.131.156) RMSBach |
2025-01-23 16:14:14 +0100 | ft | (~ft@p3e9bcab6.dip0.t-ipconnect.de) ft |
2025-01-23 16:16:01 +0100 | ft | (~ft@p3e9bcab6.dip0.t-ipconnect.de) (Client Quit) |
2025-01-23 16:18:00 +0100 | ft | (~ft@p3e9bcab6.dip0.t-ipconnect.de) ft |
2025-01-23 17:06:32 +0100 | Digitteknohippie | Digit |
2025-01-23 17:30:13 +0100 | m5zs7k | (aquares@web10.mydevil.net) (Ping timeout: 248 seconds) |
2025-01-23 17:33:02 +0100 | m5zs7k | (aquares@web10.mydevil.net) m5zs7k |
2025-01-23 17:34:46 +0100 | Guest12 | (~Guest12@2a02:2f0f:6109:3500:6bf:1bff:fec0:9354) |
2025-01-23 17:44:48 +0100 | <Guest12> | Hello! I have a problem with xmonad. I am reusing my config when using one screen or multiple screens. When multiple screens are connected, I can swap to workspaces (on different screens) with M-w (to the left) and M-e (to the right). When using only one screen i would still want to be able to do this (like if I'm on workspace 0_2 and I press M-e i |
2025-01-23 17:44:49 +0100 | <Guest12> | would like to "swap" to screen 1, workspace 1_1 (basically extending my 9 workspaces). My code currently works using greedyView (I can swap to workspace 1_1), but that does not change the screen, it only swaps to that workspace... The screen is still 0, so M-5 would send me to 0_5 instead of 1_5. Is there a way to *switch* completely to screen 1 |
2025-01-23 17:44:49 +0100 | <Guest12> | with empty workspaces (not hacking my M-1, M-2, M-X etc keybinds that are doing: "windows $ onCurrentScreen W.view (workspaces' conf !! X)" Code: https://pastebin.com/LFaRxQ0A |
2025-01-23 17:47:37 +0100 | <Guest12> | I think what I'm asking is if there is a way to simulate multiple (virtual) screens on a single physical screen. |
2025-01-23 18:00:40 +0100 | <geekosaur> | I think there's something you can do with xrandr to make it tell xmonad there are two screens; that's about the only way I can think of. But I think you'll have to talk to liskin if he's around; I don't seem to do well with xrandr for some reason |
2025-01-23 18:01:11 +0100 | <geekosaur> | hm, no, that wouldn't work either, it would switch to the "other screen" but the viewport would still be on the real screen |
2025-01-23 18:01:12 +0100 | <fizzie> | Just going by "way to simulate multiple (virtual) screens on a single physical screen" rather than the rest, there's also XMonad.Layout.LayoutScreens. |
2025-01-23 18:01:30 +0100 | <geekosaur> | I don't think there's a good way to do what you want, or switch to using XMonad.Actions.Plane |
2025-01-23 18:01:37 +0100 | <geekosaur> | only in the single screen case |
2025-01-23 18:01:57 +0100 | <geekosaur> | but I think trying to pull that off would be difficult |
2025-01-23 18:02:22 +0100 | <fizzie> | https://hackage.haskell.org/package/xmonad-contrib-0.18.1/docs/XMonad-Layout-LayoutScreens.html -- should allow you to have XMonad treat a single physical screen as multiple screens that would be treated the same way as if they were real ones. |
2025-01-23 18:02:26 +0100 | <geekosaur> | LayoutScreens splits the physical screen as xmonad sees it, that's not what is wanted here. Also other programs don't know about it so you get weird behavior |
2025-01-23 18:03:10 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) (Ping timeout: 244 seconds) |
2025-01-23 18:04:49 +0100 | mc47 | (~yecinem@p200300ee0f038dc39287614d4759a7ca.dip0.t-ipconnect.de) (Ping timeout: 248 seconds) |
2025-01-23 18:04:52 +0100 | <fizzie> | I guess you didn't want to split the one remaining monitor but have it present one or the other, right. |
2025-01-23 18:06:59 +0100 | <fizzie> | Here's one real kludgy way I can think of that might be *possible* (but not a good idea): when there's just one connected monitor, use XRandR to configure a desktop that's twice the size of the monitor, with panning, and then use LayoutScreens to have XMonad split it into two logical screens; then make the M-w/M-e keybindings affect the panning rather than anything XMonad is doing. |
2025-01-23 18:07:39 +0100 | <fizzie> | Well, the panning *and* the XMonad focus. |
2025-01-23 18:07:40 +0100 | <Guest12> | Yes, it's like i want to make screen 0 black, and start up screen 1, I dont want to split my current screen. I looked into xrandr yesterday, and it said I should do a dummy screen and switch to it but I couldn't get it to work (also it had like 1280x1020 resolution) |
2025-01-23 18:08:07 +0100 | <geekosaur> | you should be able to specify a resolution with --mode |
2025-01-23 18:08:16 +0100 | <fizzie> | (Making mouse motion make sense left as an exercise to the reader for this double-wide-with-panning scheme.) |
2025-01-23 18:08:21 +0100 | <Guest12> | I was thinking about the panning thing, but i still got xmobar displayed, so i think it will just get stretched |
2025-01-23 18:08:55 +0100 | <Guest12> | maybe using both panning and layoutscreens would work |
2025-01-23 18:09:08 +0100 | <geekosaur> | xmobar won't know about layoutScreens |
2025-01-23 18:09:15 +0100 | <fizzie> | As geekosaur said, other programs not understanding that it's supposed to behave as two separate monitors would probably be an issue. |
2025-01-23 18:09:27 +0100 | <Guest12> | the resolution was the problem because the xorg dummy was for servers where they dont need full hd ;( |
2025-01-23 18:10:46 +0100 | <fizzie> | I feel like even if you managed to make a "non-visible" monitor with XRandR with the right resolution, that still wouldn't easily let you swap which workspaces you're seeing on the real one. |
2025-01-23 18:12:01 +0100 | <fizzie> | Also you'd maybe lose your mouse cursor into the non-visible monitor all the time. ;) |
2025-01-23 18:12:24 +0100 | <geekosaur> | that would have a propensity for moving you to the other monitor while leaving the viewport on the real one |
2025-01-23 18:13:32 +0100 | <Guest12> | Also would starting another xmonad instance on a different tty help? I think the downside is that I would lose the ability to comunicate between workspaces on different ttys |
2025-01-23 18:15:18 +0100 | <Guest12> | "(Making mouse motion make sense left as an exercise to the reader for this double-wide-with-panning scheme.)" this was actually what i wanted to achieve, to use a mouse gesture to switch from screen 0 to screen 1 to get more real estate ;) |
2025-01-23 18:15:24 +0100 | <geekosaur> | hm. no, and I don't think (a) you could make zaphod mode work here (b) xmonad core would need patching to support it (it always uses X11 Screen 0) |
2025-01-23 18:16:09 +0100 | <fizzie> | Is stopping using IndependentScreens-style workspaces and just using one combined set that can be shown on any screen an option? That plays well with a changing number of monitors (it just affects how many you can have visible at once). |
2025-01-23 18:17:16 +0100 | <geekosaur> | that's more or less X.A.Plane, which I mentioned earlier |
2025-01-23 18:18:37 +0100 | <geekosaur> | the problem there is a second screen will show another workspace from the current plane and can't be made to show something from a different plane |
2025-01-23 18:19:39 +0100 | <geekosaur> | and you can't convert planes to IndependentScreens-style workspaces or vice versa, so switching from single to multiple monitor mode would require logging out of the session (not just restarting xmonad, that would preserve workspace marshaling) |
2025-01-23 18:20:42 +0100 | <geekosaur> | I think it would be possible to modify IndependentScreens to do this, but it would make an already complicated module even more complicated and failure-prone |
2025-01-23 18:21:04 +0100 | <geekosaur> | (tbh I'm amazed IndependentScreens works as well as it does) |
2025-01-23 18:28:47 +0100 | <Guest12> | I see, thanks guys for the info! I could actually hack into how M-1 M-2 keybindings work and like when "switching" (actually swapping) to different screens, I could use some kind of state to remember the current workspace on each virtual screen (like a list [0_3, 1_2, 2_2, 3_4] and if i'm on 0_6 and i go right I get on 1_2 and the list would become |
2025-01-23 18:28:47 +0100 | <Guest12> | [*0_6*, 1_2, 2_2, 3_4]) but I think this will make the config very complicated to understand later... |
2025-01-23 18:31:23 +0100 | <Guest12> | I was hoping there was a way to interact directly with the place where xmonad stores the current screen number, and just say now it's this (because it's easy to compute it from workspace name 0_2 => screen 0 so i need to switch to screen 1) but it seems its harder to do it :) |
2025-01-23 18:35:08 +0100 | <geekosaur> | it's relatively easy to do that. the first problem is convincing xmonad it has more than one screen when it doesn't (IndependentScreens does this, but not the way you want), the second is needing to edit the StackSet to switch your fake "screens", the third is convincing e.g. "refresh" not to try to display both screens when they're not actually separate |
2025-01-23 18:36:40 +0100 | <geekosaur> | also other things which assume that, since xmonad "has two screens available", they're both visible |
2025-01-23 19:58:57 +0100 | Guest12 | (~Guest12@2a02:2f0f:6109:3500:6bf:1bff:fec0:9354) (Quit: Client closed) |
2025-01-23 20:20:23 +0100 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |