A Week of Trial [June Events 2021] - Community & Forums Related Discussions

Users browsing this thread: 1 Guest(s)
venam
Administrators
This is part of the June events.

In previous years we've had the "Week in the TTY" where we forced ourselves to only use the TTY for an entire week.
This time, let's just make it either a full week in the TTY or a vintage OS/software stack/very limited hardware.

The week should be between Friday 25th and Wednesday the 30th of June.

Bump this thread with what you intend to try out during that week, be it the original week in the TTY or something else. Then when the week ends you can post what you've discovered.

Here are some ideas for the TTY:

Get comfortable with terminal multiplexers, the command line in general, command line and curses games, emailing from the cli, browsing the internet from the TTY through protocols you might not have tried such as gemini or gopher, chat from the cli, manage offline documentation, and more...
jkl
Long time nixers
In theory, the "week of the vintage software stack" sounds exactly like something I should participate in - have we agreed on a definition of "vintage" yet?
venam
Administrators
(01-06-2021, 02:36 PM)jkl Wrote: have we agreed on a definition of "vintage" yet
Make your own definition, but keep up with your own rules. As long as you learn something from the experience that you can share later on, then go for it!
pfr
Nixers
I anticipate this to be a week without using my computer! Or at least, a week with less internet consumption. I want to try a week in the TTY. I am most often happy with 2, sometimes 3 terminals (tmux panes) and can get most things done from the command line (email, chat, file editing etc.).

However, I hardly need my laptop for much else other than browsing or playing music. Perhaps I should also strictly use the TTY and not even google things on my Android phone or other devices? It's not unheard of for me to not even touch my laptop for a whole week unless I have time to tinker.
movq
Long time nixers
I’d love to do a week of Win 3.11 or OS/2 Warp 4 (edit: okay, there is a slight chance that there’s some software out that for OS/2 that still works reasonably, but I really am too lazy to hunt that down), but given that none of those support modern TLS ciphers, I guess it’d be a rather boring week. So, yeah, it’ll be another “standard” week in the tty for me. Maybe I’ll try to use tmux as little as possible. Posting this using lynx as a quick test. :)
pfr
Nixers
I will do my best to actually use my computer daily through this week. It is not uncommon for me to not even open my laptop for days at a time, as is the life with a toddler.

As previously mentioned, I'll be TTY only with some help from tmux.
I'll browse using w3m and will email using Heirloom-mailx from the command line. Maybe I'll update my gopher phlog with my experience.

Some other cli apps I'll use include, so (stack overflow tui), hackernews-tui, weechat, nscpot (spotify). Wouldn't it be great if you could get images in a TTY?

EDIT: I just started to try it out... everything works great except I can't seem to change buffers in weechat using the alt key. Does anyone know how to switch between buffers in weechat whilst in a tmux session? In fact, my bufflist does not even appear at all???

Also, edited this comment in w3m from TTY ;)
_____________________________________________________________________________________________
“Maybe you have some bird ideas... Maybe that's the best you can do.” - Terry A. Davis (R.I.P Terry & Percival)
venam
Administrators
Alright, tomorrow is the big day!
I'll also go for a week, actually 6 days, in the TTY. I've attempted setting a NextStep/OPENSTEP in a VM with internet and a good resolution but I wasn't able to do that properly.
I was following both this tutorial and this one for those interested in attempting the same experiment.

My machine is ready for the week in the TTY, the only thing I'm still testing with which email and web clients I'll go for. Previously, I've had a custom script to check emails and for browsing the web I was using links, sometimes with -g to display images in the framebuffer. However, these days you can run a full browser such as browsh wich has a headless firefox underneath, or you can rely on proxies such as frogfind to access pages that weren't accessible without a modern browser. I'm also considering using some reader mode script to fetch pages and read them offlines, such as htmlfmt, html2text, or even rdrview.
As for emails, interestingly, I can use links for my personal emails in the browser but for gmail it doesn't seem to work, even from within browsh, so I think I'll try some curses UI for it like alpine.
pfr
Nixers
(24-06-2021, 02:23 AM)venam Wrote: browser such as browsh
Does browsh have key binding for selecting links on a page? I thought you still used a mouse with browsh.
venam
Administrators
(24-06-2021, 03:33 AM)Ramiferous Wrote: Does browsh have key binding for selecting links on a page? I thought you still used a mouse with browsh.
It seems to have basic support for GPM.
seninha
Long time nixers
I have a Zoom™ meetup today and tomorrow, so I'll work on TTY Saturday.
I've set up the keymap of TTY to be like my X11 keymap layout (Control on CapsLock key, Compose on Left Control Key, etc) but now I cannot use Ctrl+Alt+F# to move through TTYs and X11...
movq
Long time nixers
(24-06-2021, 03:39 AM)venam Wrote: GPM
Ahh, GPM, haven’t used that in ages. This will be the perfect opportunity to give it another shot and learn more about it.
jkl
Long time nixers
I must admit that I won't find a chance to use the week as planned - I'll need to use this machine for work and Cmd+Tab'ing from/to the nixers environment with all of 2021's glory would feel like cheating. Sorry, I also had expected more from me.
pfr
Nixers
Just goes to show, in today's world it would be near impossible to restrict yourself to a TTY permanently. Even now, I'm writing this from my work laptop which uses Win10.

I'll log back onto the brick later tonight and try install browsh and learn about this GPM thing.... venam/movq, If you've got any tips on how to set it up let me know. I only ask because otherwise I'll be spending the whole night reading about it using lynx.
movq
Long time nixers
Yesterday was my first day and it was already pretty interesting. Found out that GPM isn't just a daemon that runs in the background and lets you copy and paste text. It's also a mouse server that you can write clients for. elinks uses it, for example, and that actually makes for a pretty good browsing experience: You can point and click to follow links, and you can even use the mouse wheel to scroll. Of course, elinks' menus are also clickable. That thing feels like a good old DOS program.

Also, nixers.net appears to work best in elinks. I just wish elinks could also show images like w3m can.

It's pretty easy to write a simple GPM client. Just for fun, I wrote a little frontend for asciibrot, which turns it into an interactive ASCII mandelbrot explorer:

Code:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/select.h>
#include <gpm.h>

void
handle(Gpm_Event *evt)
{
    static double zoom = 1;
    static double cx = 0;
    static double cy = 0;
    char cmd[512] = "";

    if (evt->type & GPM_MOVE)
    {
        if (evt->wdy > 0)
            zoom /= 1.05;
        else if (evt->wdy < 0)
            zoom *= 1.05;

        cx += 0.05 * evt->dx * zoom;
        cy += 0.05 * evt->dy * zoom * (-1);
    }

    puts("\e[H");

    /* "-T" requires the current Git main branch. */
    snprintf(cmd, sizeof cmd, "asciibrot -z %lf -p %lf:%lf -T", zoom, cx, cy);
    system(cmd);
}

int
main()
{
    Gpm_Connect conn;
    Gpm_Event evt;
    fd_set fds;

    conn.eventMask = ~0;
    conn.defaultMask = ~GPM_HARD;  /* ? */
    conn.minMod = 0;
    conn.maxMod = ~0;  /* these two mods mean "get everything" */

    /* gpm_fd is a funny global variable from GPM. */
    if (Gpm_Open(&conn, 0) == -1)
    {
        fprintf(stderr, "Could not connect to gpm\n");
        return 1;
    }
    else if (gpm_fd == -2)
    {
        fprintf(stderr, "GPM says we're running under X11\n");
        return 1;
    }

    printf("Connected with gpm_fd %d\n", gpm_fd);

    for (;;)
    {
        FD_ZERO(&fds);
        FD_SET(gpm_fd, &fds);
        if (select(gpm_fd + 1, &fds, 0, 0, 0) < 0 && errno == EINTR)
            continue;

        if (FD_ISSET(gpm_fd, &fds))
        {
            if (Gpm_GetEvent(&evt) > 0)
                handle(&evt);
            else
                fprintf(stderr, "Oops in Gpm_GetEvent\n");
        }
    }

    return 0;
}

(It's not optimal, it should also adjust the number of iterations depending on the zoom level.)

Sad thing is, GPM clients don't work when run under tmux. They can connect to the daemon (which listens on a UNIX socket), but they don't know their "true" TTY, so they just get errors instead of mouse events.

GPM's documentation is available as GNU info pages. I never liked those, because navigation is so unusual. Yesterday, I finally learned about the "l" key in GNU info: When you follow a link to a section, you can press "l" to jump back to where you were. This was the missing piece of the puzzle for me. GNU info is much more enjoyable now and I think I'll spend a little more time investigating it.

For what it's worth, my current setup uses three TTYs:
  • tty3: This runs a tmux session with ncmpcpp and pulsemixer in it.
  • tty4: I do most of the stuff here, no tmux.
  • tty5: Connects via SSH to one of my servers and attaches to another tmux session there, which runs WeeChat for IRC and Matrix.
venam
Administrators
I've also been using GPM for quite a while, I knew it had this -R option
that would write to /dev/gpmdata but I wasn't so aware of the client
library side, even though it makes sense because I've used links -g and
other programs that accept it (and I've even linked the case regarding
browsh wanting to add support for it, browsh is horrible in the TTY
between).

Also, yes, browsing most websites is fine, as long as they're text
oriented. It's surprisingly smooth.

You've opened my mind to info too yesterday, I had also been
avoiding it because of the emacs-like keybind which I had a hard time
remembering. It's an awesome resource of offline docs, just going for
`info` on itself gives you a list of documentation and tutorials, often
with examples, for countless utilities. I've been missing out on that.

Apart from this I'm also running tmux, with a lot of sessions and on
different TTYs.

For fun, I've been trying out some framebuffer related things (even though
it's not really TTY-ish. I'm trying out playing video with gstreamer's
aasink, cacasink, and fbdevsink, and yet even autovideosink instantly
works in the TTY.

Other than that, I'm taking the opportunity to read some classic RFCs.
I might hop on gopher later on.
seninha
Long time nixers
(24-06-2021, 10:32 AM)phillbush Wrote: I've set up the keymap of TTY to be like my X11 keymap layout (Control on CapsLock key, Compose on Left Control Key, etc) but now I cannot use Ctrl+Alt+F# to move through TTYs and X11...

So, that's why changing TTY stopped working:
Some keycodes, such as 29 (left control key) are mapped to two keysyms at the same time: Cmd1 and Control_L. Control_L is the usual control symbol that is sent by pressing the control key. Cmd1 is a special keysym also sent by the control key that is used by the system to change TTY. The following are the keysyms assigned to the Left control, Left alt and F1 keys:

Code:
keycode 29 = Cmd1 Control_L
keycode 56 = Cmd2 Alt_L
keycode 59 = Cmd_Screen0 f1

It is the combination of symbols Cmd1 + Cmd2 + Cmd_Screen0 (not the combination Ctrl + Alt + F1) that changes the console to the first TTY.

So here's a note to myself (and to others using OpenBSD or NetBSD): while remapping the keys on wscons(4) (the console device) also remember to remap the special Cmd* keysyms.
movq
Long time nixers
Oh, right, keyboard layout! I have a custom(ized) layout, too, and it's the same on TTY as in X11:

https://uninformativ.de/git/keyboard-layouts-3000

There's lots of german comments, sorry, many even outdated, I guess. Still, I think it's interesting to know how to adjust the keyboard layout of the Linux TTY, so I'm sharing this here.
ckester
Members
Apropos of life in the TTY, vermaden referenced this interesting file manager in his latest "Valuable News":

https://github.com/leo-arch/clifm

I'm definitely going to give this one a try!

(I'd already decided to eliminate the ncurses dependency in the latest rewrite of my mpg123 frontend and just use printf(3) and its relatives instead. So I'm interested to see how non-curses things like this do it.)
movq
Long time nixers
Today is the last day of my TTY week.

It was very smooth this time. (My last TTY week was in 2016.) The big difference compared to last time was my usage of GPM, the mouse server. elinks is a GPM client and elinks even has friggin' tabs. This makes for a surprisingly comfortable browsing experience, at least for web sites like this one, which work well (enough) without JS.

GPM also allows you to copy-and-paste text. That's truly a life safer. It's also more comfortable to use than copy-and-paste in X11, because GPM only has one buffer (you don't accidentally clobber the current contents) and there is no risk of accidentally closing a window and thus losing the buffer with it (X11/Wayland clipboards are terrible, we discussed it a couple of times on IRC). Now that I'm a spoiled user of GPM, I'll have to look into X11 clipboard managers. I'm sick of accidentally losing clipboard contents when I forget that I'm not allowed to close a window. Yes, this still happens to me sometimes.

GNU info turned out to be not that bad. I like links and cross references. Maybe I'll even use it myself in one of my projects, if I really need to write a long book-like documentation. I'll certainly try to stick to manpages first, though.

Throughout the week, I just used the default VGA font. I'd love to be able to use a broader Unicode range, but it's not possible. freem told me that PSF fonts can only hold a very limited number of characters and that this limit doesn't exist for PSF2, but after digging in Linux's source code, I found out that it doesn't matter: Loading a font/map is done using the ioctl KDFONTOP and around line 4604 in drivers/tty/vt/vt.c we can see that the kernel refuses to use more than 512 characters.

There was little change to my environment. I changed "i" (image viewer) and "m" (movie player) to autodetect whether it's X11 or TTY, but that's basically it. There were things that I just couldn't do on the TTY:
  • Running Cura and Blender to prepare models for my 3D printer.
  • guitarix has a headless mode, but loading presets is broken. And you can't really make changes to your rack anyway.
  • Netflix obviously doesn't work. I missed that a little bit.

It was a pretty relaxing week. Hardly any distractions. I think it's healthy to do a TTY week every now and then to reassess your setup and your workflow in general. For example, I turned off my "new mail" notification widget. I don't need it, it's just a distraction.

And there's always something new to learn when you're in a restricted environment like this.
venam
Administrators
(30-06-2021, 11:06 AM)movq Wrote: It was a pretty relaxing week. Hardly any distractions. I think it's healthy to do a TTY week every now and then to reassess your setup and your workflow in general.
I hold a similar opinion about this week, same feeling.

I did have to still use the graphical environment for work and sometimes to switch to X11 because someone needed urgent help with something that required a javascript-based website.
Apart from this, it was a good opportunity to tune out from the noise.
seninha
Long time nixers
My week on TTY was interrupted by unexpected events. Daily meetings held me on X11, and the fact that my grandparents are now here stopped me from exploring a new workflow on TTY on my free time.

But I could play a bit on TTY:

Now I understand better how OpenBSD (and NetBSD) wscons(4), the console device, works. And I have now the same keymap on X11 and on the console. It's very useful, especially because my Esc and Control ksyms are assigned to different keys, to have the same keyboard map on both environments.

I tried some TUI IRC clients (I'm still using HexChat, a GTK client). I will try catgirl next. Having a GUI IRC client in a window other than XTerm allows me to assign different window management rules to the IRC window. I probably can achieve that on a TUI client running on terminal by invoking xterm with a different class, or by using a client that changes the title of the terminal emulator window.

I explored tmux. I don't know if I'll use it, however, because I'm comfortable with the window manager.
pfr
Nixers
Well, I gave it my best shot. But I too found myself needing an X11 session at times. I didn't have the time to look into and set up GPM, and I never actually got Browsh installed on NetBSD. I used Lynx for most of my browsing which wasn't a lot. I basically just spent time focusing on cleaning up my system and backing up my files. I only ever had two tmux panes open at once as I'm on a laptop. I actually didn't even need multiple TTY's as tmux was sufficient.

I did run into some problems though. using gnupg-pinentry-tty to authenticate pass was problematic in tmux. the pinentry program wouldn't open in tmux and I would need to kill tmux to enter my master password. But even then, I found out that my passwords weren't copied to my clipboard, or at least I had no way to paste from the clipboard into a TTY. Perhaps there is a solution to this.
EDIT: I've realised that tmux has it's own clipboard

I did manage to set up my tmux keybindings to match my wm (sdorfehs) bindings. This is fine because I never use tmux in X11 when I have 10 workspaces available and I very rarely use ssh so yeah. I kind of gave up after a while. But it wasn't a total waste. I don't have much else to do on my laptop besides edit files and browse the web so really it wasn't all that bad. But not being able to push to my git repo (without having my password) I had to log into X11 to do this.

All in all, what I learned is that I like nice fonts and pictures.
prx*
Members
There is one thing I really miss in tty : view images, pdf and videos.
I know there are some tools such as fbi, but I don't find them packaged on OpenBSD and doubt it work.
Anyone has suggestion to read such files under OpenBSD?

Currently, I use pdftotext to read pdf, but...
for images and videos, I'm stuck. mpv doesn't seems to have an appropriate output on OpenBSD.