←2021-10-19 2021-10-20 2021-10-21→ ↑2021 ↑all
00:03:14 <nakilon> oh I see https://stackoverflow.com/a/33509850/322020
00:06:56 <fizzie> I've always assumed ttyrec is literally just all the output (including control characters) + timing metadata.
00:10:08 <nakilon> yep
00:11:05 <nakilon> but I don't want to get in the way of secure shell job
00:12:21 <nakilon> I'm thinking of just flooding the chrome with js commands to read the Screen and then convert these frames to a fake ttyrec session recording
00:13:35 -!- Lord_of_Life has quit (Ping timeout: 264 seconds).
00:13:41 -!- Lord_of_Life_ has joined.
00:14:07 <nakilon> I can also obtain the main thread current source code line number to then append at the bottom of the screen -- it will change quickly but should look fun
00:14:46 <fizzie> I wouldn't want to be in the business of figuring out the optimal sequence of codes to send to make one screen-grab look like another.
00:14:59 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
00:15:26 <nakilon> it looks trivial though https://nethackwiki.com/wiki/Ttyrec
00:15:32 <nakilon> at least as I understood
00:15:54 <fizzie> The format is trivial, but those "frames" aren't frames of screen, they're just chunks of control codes.
00:15:57 <nakilon> I'll just position to (0,0) every time and print the whole screen with \n between lines
00:16:01 <fizzie> Ugh.
00:16:26 <nakilon> but I won't record the control codes -- I get the chars from DOM
00:16:40 <nakilon> and the only control code I'm going to use is to go back to (0,0)
00:16:55 <nakilon> at least I imagine it's the only one I need
00:16:59 <fizzie> Yes, that's what I mean, the process of converting two screen-grabs of characters to *sensible* control codes that change one to the other isn't trivial.
00:17:06 <fizzie> If you're not going to bother, then sure.
00:17:06 <nakilon> and then there are some converters from ttyrec to gif
00:18:29 <nakilon> it's gonna use much less resources than ffmpeg screengrab
00:19:08 <fizzie> I used to have a serial terminal as an under-the-table "computer" for web browsing and suchlike, and you could see that *something* in the stack (screen? lynx?) had actually thought about the problem, because when you paged down, if there was a big chunk repeated in a different position, it would actually scroll that into the right orientation using the sub-rectangle scroll things, and then
00:19:10 <fizzie> redraw the surroudings.
00:22:33 <fizzie> Isn't this all JS? Surely you can just monkey-patch in a hook somewhere in hterm to give you a copy of the input stream it's interpreting? Like, just a hterm.Terminal.IO wrapper that delegates all calls but also writes to a ttyrec.
00:24:04 <fizzie> Or replace the hterm.Terminal.interpret function of the live object.
00:24:11 -!- sprout has joined.
00:24:15 <nakilon> maybe
00:24:43 <nakilon> but I would also like to have recording in some text editor comprehensible format
00:24:55 <nakilon> so I could cut the things out
00:25:25 -!- oerjan has joined.
00:25:42 <fizzie> Well, okay, that's different, if you intend to do "video editing" on it.
00:28:49 -!- sprout has quit (Ping timeout: 252 seconds).
00:29:06 <nakilon> somehow the umoria game sometimes corrupts the save file when I drop the session; already implemented the handling of the file corruption dialog to :escape, rm game.sav\n, :up, :up, :enter, lol
00:29:58 <nakilon> it's a bit scary to issue the commands in the shell session; maybe I should create a separate user
00:38:24 <esolangs> [[Blood32]] https://esolangs.org/w/index.php?diff=88964&oldid=88922 * PixelatedStarfish * (+57) /* External resources */
00:47:34 <esolangs> [[Suscript]] M https://esolangs.org/w/index.php?diff=88965&oldid=87980 * Not applicable * (-25) update github url
00:59:47 -!- sprock has joined.
01:15:09 <nakilon> hm, that wiki page does not explain what is len
01:15:22 <nakilon> is it byte size or
01:15:58 <nakilon> ok, I'll suppose it's a byte size just for file format purpose
01:19:00 <fizzie> The C example does pretty much deobfuscate it.
01:19:25 <fizzie> (`fread(data, 1, len, stdin)` → len is in bytes.)
01:28:01 <nakilon> funny how you try to google terminal recording in a straight forward way you find nothing except two or three python tools that don't work in the end
01:28:20 <nakilon> and totally miss the whole list of tools to try from this wiki page
01:57:15 <nakilon> hm, ipbt does not play my ttyrec properly; shows only the first 4 lines of screen are filled with some pieces of my framers
01:57:18 -!- dutch has quit (Quit: WeeChat 3.3).
01:57:29 <nakilon> *frames
02:02:31 <nakilon> oh, what is ^M? should I use it instead of \n?
02:04:23 <nakilon> ok it's 13
02:08:17 -!- dutch has joined.
02:09:37 <nakilon> looks like in someone's nethack session every line ends with \r even if the next line is positioned with control code
02:10:44 <nakilon> https://dpaste.org/6YkN/slim you can see it's 0d before the 1d control code, hm
02:11:01 <nakilon> (the 5th line of the second dump)
02:13:21 <nakilon> I'll suppose I have to position every line
02:38:00 -!- archenoth has joined.
02:40:54 -!- Oshawott has quit (Ping timeout: 268 seconds).
02:52:31 <nakilon> ok so: 1. ipbt can't utf-8 2. jettyplay does not run on modern java 3. ttyplay needs clean screen at start and does not clean after itself on ^C
02:52:59 <nakilon> ^ summary on ttyrec players
03:00:56 <zzo38> Which features do you need? (The other alternative might be writing your own one?)
03:02:10 <nakilon> 4. termrec cleans after itself but not before, so "clear && termplay rec.ttyrec" seems to work! but I guess my ttyrec is still not fully valid, need to clean the lines from previous frame somehow -- I wonder if there is any command to clean the whole screen or should I rewrite with spaces explicitely
03:02:31 -!- sprout has joined.
03:03:10 <nakilon> zzo38 the goal is to have a handy ttyrec preview in terminal, then I'll convert it to gif with some other tools, didn't start yet, need to giure out to generate proper ttyrec files
03:07:24 -!- sprout has quit (Ping timeout: 258 seconds).
03:08:09 <nakilon> ipbt is handy in the way that I can move forward and backward with < >, but it can't utf-8; not that I need it much but the first frame of my recording includes it because my it's in my ssh motd
03:17:30 <nakilon> I now wonder how this works https://dpaste.org/E04v/slim between "--More--" and "------" there is stuff that should clean the whole screen, but I have no idea what is it starting with bf 18...
03:18:33 <nakilon> oh wait, it's just the next header
03:19:10 -!- sprout has joined.
03:23:43 -!- sprout has quit (Ping timeout: 252 seconds).
03:23:53 <nakilon> so 1b 5b 48 1b 5b 4b 1b 5b 48 1b 5b 32 4a 1b 5b 48 must clean the screen, I wonder where it's documented
03:24:36 <imode> terminal escape codes?
03:25:34 <nakilon> maybe this https://www.csie.ntu.edu.tw/~r92094/c++/VT100.html
03:26:13 <imode> yup.
03:26:15 <imode> https://en.wikipedia.org/wiki/ANSI_escape_code
03:26:20 <imode> here's the documentation for that.
03:26:47 <nakilon> but what's the purpose of [K before [2J
03:28:02 <imode> good question, I dunno.
03:35:21 -!- oerjan has quit (Quit: Nite).
03:36:36 <nakilon> wow, this recording thing running in separate thread appeared to be useful immediately to debug the errors; for example, if I press Esc and then immediately "rm game.sav\n", the "r" is lost because the game didn't yet exit -- it was too fast so I could not see it until I replay it with ipbt
04:03:22 -!- sprout has joined.
04:08:01 -!- sprout has quit (Ping timeout: 245 seconds).
04:38:54 -!- sprout has joined.
04:39:56 <nakilon> https://unsteadyhoneydewrelationalmodel.nakilon.repl.co/
04:40:20 <nakilon> I want some easier to use html pastebin ( and with shorter urls
04:40:57 <nakilon> oh probably I could override that subdomain, still repl.it is kind of overkill
04:41:48 <nakilon> so you can see here it created a character and ran into someone, ending with
04:42:07 <nakilon> "The Mean-Looking Mercenary hits you." (RuntimeError)
04:44:01 -!- sprout has quit (Ping timeout: 252 seconds).
05:10:25 <nakilon> btw the termrec author has a font if anyone is interested http://angband.pl/font/tinyfont.html
05:11:34 -!- sprout has joined.
05:15:49 -!- sprout has quit (Ping timeout: 258 seconds).
06:22:40 -!- Sgeo has quit (Read error: Connection reset by peer).
06:30:06 -!- b_jonas has quit (Remote host closed the connection).
07:00:34 -!- ski_ has joined.
07:02:17 -!- olsner_ has joined.
07:09:50 -!- Franciman has quit (Ping timeout: 260 seconds).
07:09:50 -!- j-bot has quit (Ping timeout: 260 seconds).
07:09:50 -!- ski has quit (Ping timeout: 260 seconds).
07:09:50 -!- craigo[m] has quit (Ping timeout: 260 seconds).
07:09:50 -!- olsner has quit (Ping timeout: 260 seconds).
07:09:50 -!- fizzie has quit (Ping timeout: 260 seconds).
07:10:21 -!- Franciman has joined.
07:13:07 -!- fizzie has joined.
07:18:29 -!- craigo[m] has joined.
07:18:29 -!- imode has quit (Ping timeout: 258 seconds).
07:26:49 -!- sprout has joined.
08:09:17 -!- hendursa1 has joined.
08:12:45 -!- hendursaga has quit (Ping timeout: 276 seconds).
08:51:17 -!- archenoth has quit (Read error: Connection reset by peer).
08:55:10 -!- archenoth has joined.
09:19:01 -!- wib_jonas has joined.
09:22:03 <wib_jonas> nakilon: unix terminals have this feature where in the output they insert a \r before a \n by default, unless you opt out of that using tcsetattr. this happens even in virtual terminals, but only at the deepest erminal layer, eg. if you forward terminal output with ssh, then the translation is done in the virtual terminal on the server, and the ssh
09:22:03 <wib_jonas> client disables these transformations on the terminal on the client and no longer knows about most of the underlying terminal modes on the server.
09:22:40 <wib_jonas> nakilon: in the other direction, in terminal input (eg. from keyboard), \r is transformed to a \n by default, unless you disable that with tcsetattr.
09:24:05 <wib_jonas> if there is any command to clean the whole screen => on vt-102-like terminals, "\e[H\e[J", otherwise ask terminfo how to do it
09:27:30 <wib_jonas> if you want an overview of escape sequences on vt-102-like modern terminals, see the manuals urxvt(7) http://pod.tst.eu/http://cvs.schmorp.de/rxvt-unicode/doc/rxvt.7.pod#Escape_Sequences , console_codes(4) https://man7.org/linux/man-pages/man4/console_codes.4.html , screen(1) https://man7.org/linux/man-pages/man1/screen.1.html#THE_VIRTUAL_TERMINAL
09:27:31 <wib_jonas> ;
09:31:55 <wib_jonas> for historical reasons, programs generally don't hard-code these escape sequences, but abstract over them using the terminfo library and its terminfo description files. these and docs for them and the terminfo description source files for each terminals (compiled before loaded to programs) are installed from the ncurses package
09:31:55 <wib_jonas> https://invisible-island.net/ncurses/announce.html , manuals include terminfo(5) https://man7.org/linux/man-pages/man5/terminfo.5.html describing the format of the terminfo source descriptions, https://man7.org/linux/man-pages/man3/curs_terminfo.3x.html for the C API of the library that reads the compiled descriptions and emits the escapes,
09:32:50 <wib_jonas> https://man7.org/linux/man-pages/man1/tput.1.html for a command-line program doing that.
09:33:30 <wib_jonas> the ncurses library proper is a more optional heaviweight abstraction, you need not use it to use terminfo, even if they're installed together.
09:39:22 -!- Koen has joined.
10:17:40 -!- arseniiv has joined.
10:36:40 -!- slavfox has quit (Ping timeout: 258 seconds).
10:42:30 -!- slavfox has joined.
10:46:50 -!- slavfox has quit (Ping timeout: 260 seconds).
10:48:49 -!- slavfox has joined.
10:53:10 -!- slavfox has quit (Ping timeout: 260 seconds).
11:01:06 -!- slavfox has joined.
11:02:44 <esolangs> [[User:ArthroStar11]] https://esolangs.org/w/index.php?diff=88966&oldid=88818 * ArthroStar11 * (+206)
11:06:05 -!- slavfox has quit (Ping timeout: 260 seconds).
11:07:09 -!- slavfox has joined.
13:47:25 <esolangs> [[FROM HERE TO THERE]] M https://esolangs.org/w/index.php?diff=88967&oldid=87456 * Monochromeninja * (+1041) added python interpreter tio
13:48:29 <esolangs> [[Talk:FROM HERE TO THERE]] M https://esolangs.org/w/index.php?diff=88968&oldid=78834 * Monochromeninja * (+240) added my 2 cents
13:48:59 <esolangs> [[FROM HERE TO THERE]] M https://esolangs.org/w/index.php?diff=88969&oldid=88967 * Monochromeninja * (-2) implemented!
14:01:22 -!- sprock has quit (Ping timeout: 258 seconds).
14:12:10 -!- Sgeo has joined.
14:44:15 -!- arseniiv has quit (Ping timeout: 260 seconds).
14:49:33 -!- hendursa1 has quit (Quit: hendursa1).
14:50:45 -!- hendursaga has joined.
14:51:51 -!- arseniiv has joined.
15:31:19 -!- imode has joined.
15:55:09 -!- chiselfuse has quit (Remote host closed the connection).
15:55:22 -!- wib_jonas has quit (Quit: Client closed).
15:59:53 -!- sprock has joined.
16:15:42 -!- hendursaga has quit (Ping timeout: 276 seconds).
16:17:23 -!- hendursaga has joined.
16:22:42 <esolangs> [[Talk:FROM HERE TO THERE]] M https://esolangs.org/w/index.php?diff=88970&oldid=88968 * PythonshellDebugwindow * (+159) /* Implementation */ looks good
16:29:07 -!- ^[ has quit (Ping timeout: 252 seconds).
16:33:16 -!- ^[ has joined.
16:47:58 -!- olsner_ has changed nick to olsner.
17:35:26 -!- arseniiv has quit (Ping timeout: 260 seconds).
17:46:13 -!- b_jonas has joined.
17:56:03 -!- arseniiv has joined.
18:10:10 -!- sprock has quit (Ping timeout: 260 seconds).
18:49:47 <esolangs> [[Lenta]] M https://esolangs.org/w/index.php?diff=88971&oldid=34683 * Monochromeninja * (+1237) added python interpreter tio
18:50:33 <esolangs> [[Talk:Lenta]] https://esolangs.org/w/index.php?diff=88972&oldid=77446 * Monochromeninja * (+263) /* Interpreter */ new section
18:55:55 -!- Koen has quit (Remote host closed the connection).
19:19:57 -!- sprock has joined.
20:13:47 -!- ski_ has changed nick to ski.
20:55:10 -!- sprock has quit (Ping timeout: 260 seconds).
21:13:57 <esolangs> [[Heck]] https://esolangs.org/w/index.php?diff=88973&oldid=87858 * PixelatedStarfish * (+105) /* External Links */
21:14:26 <esolangs> [[Heck]] https://esolangs.org/w/index.php?diff=88974&oldid=88973 * PixelatedStarfish * (-35) /* External Links */
21:45:58 -!- NotApplicable has joined.
21:46:41 -!- NotApplicable has changed nick to Kit.
23:06:18 -!- Melvar has quit (Ping timeout: 260 seconds).
23:11:45 -!- arseniiv has quit (Ping timeout: 260 seconds).
23:12:30 -!- arseniiv has joined.
23:16:20 -!- msmith12[m] has joined.
23:17:23 <Kit> holy shit daggy is here? hi daggy
23:19:55 -!- Melvar has joined.
23:30:26 -!- Koen has joined.
23:31:31 -!- earendel has joined.
23:50:19 <Kit> hi
23:50:25 <Kit> im developing a 2D esolang
23:50:30 <Kit> based on "beams" of color
23:51:03 <Kit> i wont go into too much detail bc i dont want anybody to steal my idea
23:51:04 <Kit> but
23:51:24 <Kit> i was curious what should happen on the event of two beams "merging"
23:51:46 <Kit> should i get the sum of each of the RGB values? or the average?
23:51:57 <Kit> should i just error?
23:52:07 <Kit> like
23:52:24 <Kit> if i do the sum, then chances are that itll just get capped at 255
23:52:34 <Kit> for each RGB value
23:52:35 <Kit> WAIT
23:52:36 <Kit> idea
23:52:54 <esolangs> [[User:Challenger5]] https://esolangs.org/w/index.php?diff=88975&oldid=77025 * Challenger5 * (+23) add reference to 9f8 interpreter
23:57:40 <Kit> should i include alpha in RGB values or is that too weird
←2021-10-19 2021-10-20 2021-10-21→ ↑2021 ↑all