Logs: freenode/#xmonad
| 2021-01-01 19:13:46 | <ElKowar> | We had a prof who was super fascinated by lisp, he kinda inspired me to do some googling and then eventually get into haskell |
| 2021-01-01 19:13:51 | <andytoshi> | i'm sorta approaching haskell from both sides, using Rust and running into limitations of its type system on one side, and studying category theory from a math/physics perspective on the other |
| 2021-01-01 19:15:01 | <andytoshi> | and i guess, being forced to use it by xmonad on the third side :) |
| 2021-01-01 19:15:04 | <Solid> | I have to say I've always found haskell a bit boring from the category theory side |
| 2021-01-01 19:15:19 | <Solid> | leaving aside the fact that Hask is not even a category, that is ;) |
| 2021-01-01 19:15:53 | <ElKowar> | haskell has spoiled me. I can't touch lowlevel stuff anymore without being utterly disgusted by how dumb a lot of the issues that one faces there are |
| 2021-01-01 19:16:12 | <ElKowar> | idk why, it isn't even directly related to haskell, but,... There are just too many dumb issues |
| 2021-01-01 19:16:14 | <ElKowar> | in life |
| 2021-01-01 19:16:43 | <Liskni_si> | that feeling will pass |
| 2021-01-01 19:16:50 | <ElKowar> | bruh, i doubt it |
| 2021-01-01 19:17:03 | <Liskni_si> | I used to be a Haskell snob when I was your age |
| 2021-01-01 19:17:24 | <Liskni_si> | now I'm like "gimme an interesting problem in any tech I don't care lol" |
| 2021-01-01 19:17:36 | <ElKowar> | I've been trying to figure out how to properly deal with grand-children processes for a month now. It seems that the POSIX spec pretty much expects you to just say "hey, yea, we're leaking processes everywhere, pleaaaaasee just reboot once in a while" |
| 2021-01-01 19:17:42 | <ElKowar> | again, not actually language related |
| 2021-01-01 19:17:48 | <ElKowar> | just nothing that I'd touch in a typical haskell project |
| 2021-01-01 19:17:55 | <ElKowar> | so i associate nice high-level problems with haskell |
| 2021-01-01 19:18:03 | <ElKowar> | and dumb lowlevel hacks with - in this case - rust |
| 2021-01-01 19:18:07 | <ElKowar> | even though rust is beautiful |
| 2021-01-01 19:18:36 | <andytoshi> | Liskni_si: curious what tech you use day-to-day ... i write a lot of C and it really does get in my way constantly |
| 2021-01-01 19:19:07 | <andytoshi> | and Rust, which is tricksy because it's expressive enough to lure you into creating elaborate type structures, then it smacks you down with "no higher-kinded types" or its weird object-safety rules |
| 2021-01-01 19:19:15 | <andytoshi> | but it is beautiful |
| 2021-01-01 19:19:33 | <Liskni_si> | ElKowar: it's more like "real world impact = some amount of dumb low level hacks necessary somewhere" |
| 2021-01-01 19:19:42 | <ElKowar> | big ooph |
| 2021-01-01 19:20:08 | <Liskni_si> | andytoshi: there isn't any real day-to-day really :-) |
| 2021-01-01 19:20:15 | <ElKowar> | in this case, I'm really just trying to run some simple, userprovided shell scripts without leaking processes. that _shouldn't_ be hard. but it's nearly impossible |
| 2021-01-01 19:20:40 | <ElKowar> | also, for me a good bit of "real world" has been haskell recently, with a lot of xmonad stuff and reading more and more KMonad code |
| 2021-01-01 19:20:46 | <andytoshi> | ElKowar: if you're on linux you can probably use control groups somehow |
| 2021-01-01 19:20:54 | <andytoshi> | though i've never figured this out tbh |
| 2021-01-01 19:21:14 | <Solid> | yay for reading kmonad code \o/ |
| 2021-01-01 19:21:27 | <ElKowar> | yea, "somehow",.... there is a way, but it seems as though noone has actually figured this out |
| 2021-01-01 19:21:31 | <Liskni_si> | andytoshi: at my last day job I used to code Elixir and deal with some dockers and jenkinses, at the job before that I did a lot of bash and jenkins, plus a mix of python/java/perl/whatever was necessary to fix the random issue that came up |
| 2021-01-01 19:21:38 | <andytoshi> | lol whoaaa what is kmonad |
| 2021-01-01 19:22:07 | <ElKowar> | it's a keyboard remapping tool that tries to approximate the featureset that you could reach with a QMK firmware keyboard, written in haskell |
| 2021-01-01 19:22:24 | <Liskni_si> | andytoshi: now... I am on sabbatical, so I mostly just hack xmonad and vim plugins and bash scripts in ~/bin and little python scripts that interact with dbus or google api or something |
| 2021-01-01 19:22:29 | <andytoshi> | ah, so if i already have a QMK keyboard maybe i won't get much value out of it? |
| 2021-01-01 19:22:39 | <ElKowar> | not really, yea |
| 2021-01-01 19:22:53 | <andytoshi> | ah ok, at first i thought it might've been a QMK firmware written in haskell |
| 2021-01-01 19:22:58 | <andytoshi> | which would've been pretty incredible |
| 2021-01-01 19:23:03 | <ElKowar> | although, if u own a laptop, and are missing some of the features from your fancy keeb, then you can repliacte these features software side with KMOnad |
| 2021-01-01 19:23:10 | <ElKowar> | which is what I'm mainly using it for |
| 2021-01-01 19:23:26 | <coldpress> | so your laptop keyboard can have a numpad :) |
| 2021-01-01 19:23:26 | <andytoshi> | yeah that's a good point, i do miss my good keyboarfd when i'm typing on airplanes |
| 2021-01-01 19:23:32 | <andytoshi> | i also miss airplanes :P |
| 2021-01-01 19:23:37 | <ElKowar> | yea, then play around with kmonad ;D |
| 2021-01-01 19:24:44 | <ElKowar> | I've been considering to just take the core of KMonad (as in, the multiplatform stuff etc) and just turn that into an XMonad style "config via code" application,... but not sure how performant i could get the "let's write a filter over input sequences" approach I'm imagining for that |
| 2021-01-01 19:25:37 | <Liskni_si> | ElKowar: regarding your grandchildren process, I think the state of the art is to use pidfds and cgroups, and it's that kind of thing you probably don't want to write from scratch unless at faang-scale, so trying to use systemd-run or something might be wise |
| 2021-01-01 19:26:06 | <Liskni_si> | bwrap might be a systemd-less alternative to not leaking processes |
| 2021-01-01 19:26:18 | <Liskni_si> | if you don't mind pid namespaces |
| 2021-01-01 19:26:29 | <Solid> | kmonad should already *almost* be configurable in haskell |
| 2021-01-01 19:26:32 | → | ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta) |
| 2021-01-01 19:26:33 | <ElKowar> | what I've been doing was a double fork to use process groups and so on, but,... it's just super super ugly - and now trying to make that async is gonna be horrible |
| 2021-01-01 19:27:07 | <Liskni_si> | yeah it's a problem the linux process management world has been struggling with for dozens of years |
| 2021-01-01 19:27:16 | <Liskni_si> | don't expect to solve it on your own in a month |
| 2021-01-01 19:28:16 | <ElKowar> | I'm just still,... baffled by the fact that there is no proper solution. I have about 3 apps running this very second that _need_ that functionality, i.e. a bar that can run scripts to get data, a terminal, etc etc. and they all have to do that from scratch |
| 2021-01-01 19:29:38 | <Liskni_si> | do they really _need_ it? |
| 2021-01-01 19:29:49 | <ElKowar> | i mean, if they want to not leak processes, they do, no? |
| 2021-01-01 19:29:54 | → | growpotkin joins (~growpotki@130-45-30-154.dyn.grandenetworks.net) |
| 2021-01-01 19:30:19 | <Liskni_si> | probably, but you may fix the source of the leak instead |
| 2021-01-01 19:30:36 | <ElKowar> | well, given that it's user provided scripts, I can't really |
| 2021-01-01 19:30:38 | <Liskni_si> | or wrap it in a systemd service, let it leak and restart it once a day to clean up |
| 2021-01-01 19:31:30 | <Liskni_si> | if it's a user code then you probably want a container-like isolation anyway |
| 2021-01-01 19:31:37 | <ElKowar> | (my application is a widget system more comparable to polybar than to something server-side, so going systemd for stuffr like that would be a pretty anoying solution) |
| 2021-01-01 19:32:15 | <Liskni_si> | well there's systemd-run which isn't all that annoying, provided you control the environment |
| 2021-01-01 19:32:47 | <Liskni_si> | if you don't, then maybe bwrap or something like that |
| 2021-01-01 19:32:49 | <ElKowar> | In this case i don't, sadly - don't want to depend on systemd being present, i.e. because mac support is also something i want to provide |
| 2021-01-01 19:32:54 | <ElKowar> | bwrap could actually work, i guess |
| 2021-01-01 19:33:01 | <Liskni_si> | bwrap is linux specific, too |
| 2021-01-01 19:33:09 | <ElKowar> | :/ |
| 2021-01-01 19:33:42 | <Liskni_si> | but if this is just an open source project as opposed to a paid service, can't you just say that the user is responsible for the leaks? |
| 2021-01-01 19:34:01 | <Liskni_si> | add a recommendation to monitor it, systemd it or containerize it, and be done |
| 2021-01-01 19:34:39 | <Liskni_si> | (I almost feel ashamed of being so pragmatic, this is not the usual me, but it's a useful thought experiment anyway) |
| 2021-01-01 19:34:48 | <ElKowar> | issue is that it isn't necessarily a "leak". the user just provides a shellscript, which may contain child processes, etc. If i terminate that script, i can't really have grand-children of that stay alive (as in, if the script is "tail whatever | foo", foo should not continue to live here) |
| 2021-01-01 19:34:57 | <Solid> | (as a runit user, please don't add a systemd dependency if you don't absolutely have to) |
| 2021-01-01 19:35:22 | <ElKowar> | it _shouldn't_ be an issue anyways, as the shell should handle child processes properly, but i did have issues with leaked processes in the past,.... |
| 2021-01-01 19:35:38 | <ElKowar> | i won't, solid, no worries :P |
| 2021-01-01 19:36:12 | <ElKowar> | (general question, is off-topic like this acceptable here actually? We really completely lost any xmonad related context at this point xD) |
| 2021-01-01 19:36:32 | <Liskni_si> | (I wouldn't suggest anyone to actually add a systemd dependency if this was an oss project, that's why I added "provided you control the environment" :-)) |
| 2021-01-01 19:37:17 | <Solid> | I think as long as there isn't an xmonad-related conversation we're completely plowing over, this kind of off-topic is fine |
| 2021-01-01 19:37:42 | <Liskni_si> | as long as we're not disrupting any xmonad users from getting their well deserved (/s) free support, it should be totally acceptable :-) |
| 2021-01-01 19:37:49 | <ElKowar> | Nice! |
| 2021-01-01 19:38:43 | <Liskni_si> | some amount of off-topic is important for a community to work, for people to get to know each other |
| 2021-01-01 19:39:28 | <ElKowar> | good point, actually |
| 2021-01-01 19:41:14 | <Liskni_si> | (also, incidentally, grandchildren processes aren't all that off topic here, see #434 :-)) |
| 2021-01-01 19:47:27 | <Solid> | it's so funny we went through all this trouble in #434 and then completely forgot to actually add the function to the startup hook :D |
| 2021-01-01 19:47:51 | <mc47> | wait what now? |
| 2021-01-01 19:48:27 | <Solid> | oh I wrote your name wrong when I used ?tell |
| 2021-01-01 19:48:50 | <mc47> | omg I totally forgot about that |
| 2021-01-01 19:48:54 | <Solid> | yes in statusBarPropTo we only have `(spawnStatusBarAndRemember cmd)' as a startup hook, we never actually kill the bars |
| 2021-01-01 19:49:03 | <Solid> | so we may want to fix that :P |
| 2021-01-01 19:49:20 | <mc47> | totally, Ill quickly push something |
| 2021-01-01 19:49:24 | <Liskni_si> | to be fair the documentation does look like people are supposed to use cleanupStatusBars |
| 2021-01-01 19:49:32 | <Liskni_si> | but it's not good UX |
| 2021-01-01 19:49:41 | <mc47> | Yeah, we should add it |
| 2021-01-01 19:50:25 | <mc47> | I didn't really test the final version because I have already started using a datatype for status bars in my config to see how it would look like |
| 2021-01-01 19:50:51 | <mc47> | by datatype I mean a record |
| 2021-01-01 19:52:21 | <mc47> | And tbh, I like the idea :-) I'll make a PR soon |
| 2021-01-01 19:57:06 | × | ADG1089__ quits (~aditya@223.235.213.117) (Remote host closed the connection) |
| 2021-01-01 20:03:50 | <Solid> | sounds good; how are you handling the keybindings? |
| 2021-01-01 20:04:02 | <Solid> | I remember you wanted more freedom instead of only a toggle struts key |
| 2021-01-01 20:05:31 | <mc47> | I defined a record with 4 things: a log-hook, a startHook, a key and an action |
All times are in UTC.