NNTPchan client & ASCIIpunk general

ASCIIpunk holds 3 main ideas.
0. ASCIIpunk interfaces.
1. simple logical concise elegant code and interfaces.
2. avoid bloat.

There were some people interested in the textpunk NNTPchan client I was writing so here it is:
I would've posted this in the other textpunk thread, but it dropped off the board.

I also wanted to share a few programs:
ncmpcpp - A textpunk music player with a visualiser, it's sort of a controller for mpd so I launch it like this:
#!/bin/bashsudo /bin/systemctl start mpdncmpcppsudo /bin/systemctl stop mpdsudo /bin/systemctl stop mpd.socket
If you don't want to enter your password every time you can add it to your sudoers.

nmtui - ASCIIpunk fully featured network manager.
Inb4 'general threads! What is this? /g/?'
Inb4 'why you tripping', because I'm already making it obvious who I am by literally posting a link to something I've written, don't be like that one sperg who literally derailed a whole thread over trip usage.

Other urls found in this thread:



That's not much of a definition.

Nice client though, I like the interface.

ASCIIpunk interfaces = TUIs

Thanks, I really appreciate it.

Am I doing it right?

Yeah, totally dig the htop. Is that Screen, DVTM or something else that you're using?

*punk is generally retarded. Looks like this isn't an exception.

how to run through i2p?

It's good to see that tabs can still oust people as faggots even in text-based browsers.

Literally all of that combined still doesn't take up as many resources as X.

Since when bloat is defined by comparing with X(org)?
All those I mentioned are extremely bloated and have obvious replacements (ncmpcpp -> mpc, dash/ash/mksh, systemd -> runit/s6/sysv/daemontools + openrc).

Basically, this thread is about "Matrix hacker style!111!" and not actual minimalism.

Why does everything have to end in "core", "punk", or "wave" now. Very annoying-core.


I made that picture as a joke months ago specifically to shitpost with on /g/.

God damn it pooinloo. At least there are no binaries in VC this time.

list comprehensions exist
you can't change the editor except by sed -i s/nano/vi/g yukko.py, use os.getenv("EDITOR")
Warning (flycheck): Syntax checker python-flake8 reported too many errors (1089) and is disabled. (Probably most of it is style related, but there could be legitimate errors, linters are your friend)
too many globals
globals at all (encapsulate in a class or something)
trailing whitespace
you're allowed to press the enter key 2 (two) times to seperate logic
yukko.py doesn't work on my vt100, the winner is: Line 198 with 409 characters

The parse thing is special. FYI, string += blah in a loop allocates a new string every iteration, strings in Python are immutable. Rather do something like this(pass the open file object):
def parse(it): def strip_key(key, ln): return line.split(key, 1)[1].strip() ret = {"Name": "", "Subject": "", "Body": []} found_body = False for line in it: if found_body: ret["Body"].append(line) else: for key in ["Name:", "Subject:"]: if line.startswith(key): ret[key[:-1]] = strip_key(key, line) key = "Body:" if line.startswith(key): ret[key[:-1]].append(strip_key(key, line)) found_body = True ret["Body"] = '\n'.join(ret["Body"]) return ret

Enable the i2p/i2pd socks5 proxy if you haven't already then:
sudo pip install -U "requests[socks]"

Then go into settings.json and change the http and https proxy settings to whatever your i2p SOCKS proxy is, for me it'd be socks5:// (which I think is the default).

Never come back.

OP should come to nextchan /t/, it's so much better without apparatchiks like shitting the place up.

This. Fuck off to your containment site and don't come back.


I used mixedCase for var names as oppossed to CamelCase, but according to the style guide I should have been using variable_name all along, which i think is silly, because he starts using _variable_name to differentiate the scope of a variable, whereas I see local vars as mixedCase and method names as CamelCase beig the most intuitive. That said, the guideline here is muddled and they admit that they haven't good consistency to default to the style most prevelant in the document. Although I'd like to keep with comunity standards this style guide is very poorly written and not authoratative in its "well, it can be both ways, it just depends". That's not good enough for me to want to change from a standard variable naming technique foud in a number of languages. When I hope from language to language I am willing to accomodate some specialization, but cosistency in naming conventions where possible is more important to me than some guy's weakly-held personal preference. If you want to enforce your will, it should be logical and you should be assertive. I don't get that from reading the referenced text.

Excuse my spelling errors please. Ranting hopefully had some value and this won't be used against the content of the post.

You're far too used to Microsoft C# .NET

now we're talking

here's hoping nntpchan gets more popular

True, but less characters are used. I'm also of Dutch heritage, so according to "import this" my opinion has inordinate weight.

are you actually using a textmode browser? how do you deal with captchas or whatever? i would consider using a textmode browser if i could actually post on here with it.

Yeah, w3m in that picture. There's also links2 which can handle Google's captchas in frames like 4chan uses. Both can actually display images so long as you have your framebuffer set up (there's also elinks which lets you view images with a separate program), though I haven't found a way to get that to work when using either with tmux with just the framebuffer. Sadly I have yet to find a browser that runs in the terminal that has everything I want though. In elinks and w3m you can spoof your user agent to look like a regular browser and have good cookie controls, elinks and links2 can handle Google's captchas, and w3m and links2 can display images natively.

It's a fucking TUI you goddamn skids. Don't invent new names for things that already exist.

TUI. CLI is better. If you can't pipe to and from it, there's probably something wrong with it, unless it functions better as a consistent client (ie. it demands user interactivity, like a good mail reader or web client).

That's a basic tenet of programming in general

That's a basic tenet of non-Windows programming in general

ncmpcpp is unnecessary. mpc is all you really need. It's a music daemon; all you need is to be able to control it and for it to be able to give you information; a full curses client is way overkill.

Are you fucking retarded? ASCIIpunk is a philosophy, and the people that practice it. Programs designed according to the ASCIIpunk philosophy are usually TUI or CLI, but ASCIIpunk is not the name for a specific kind of interface.

No. Its supposed to be, but its not.

See previous

maybe reddit would pretend to care?

If it's using the framebuffer graphics, then it's not really text mode. The framebuffer console is a graphics console. If you want to see how those browsers handle the various captchas in actual text mode, boot without framebuffer into a real 80x25 text mode (or other text mode that your BIOS supports, such as 80x50, 132x43, etc.)
There may be ways to view some of the captchas in text mode via a library such as aalib or cacaview that renders a graphic with plain text symbols. But I really doubt the google recaptcha stuff will work, as it uses too much javascript for most of the text browsers.

Everything else is in textmode, you're just either having the program overlay the pictures (in w3m you'll notice that the browser reserves the spaces that the images will be with underscores to make sure other text doesn't end up there). Also, if displaying images inline is a problem for you then there is always elinks which can open them in a separate viewer, which I fail to see any problem with as there have been programs for viewing graphics since back when people were using CLI for everything.

Google's captcha still works with noscript enabled. The bigger problem would be the size of the picture if you were trying to render it as text for god knows what reason.

A real text mode in PC hardware has no pixel addressing, so you can't make graphics at all except for ASCII or ANSI stuff. That's where the aalib/libcaca stuff is needed to show the approximation of a graphic (it'll never render it perfectly, even at 142x43 character cells).
Otherwise, in a framebuffer you can just run Links-2 in graphical mode and it'll show all the images. I've used that before, but it's definitely not text mode, nor is it even if you're running Lynx and it can spawn an external image viewer to display pictures.
Some hardware has no drivers for console framebuffer, so the distinction is important. But this is a PC hardware thing mostly. In contrast, other architectures like Amiga and Sun Sparcstation are always in framebuffer mode. They don't have an actual plain text mode, but Linux or BSD can simulate it by drawing the character cells inside the framebuffer.

Such as? Only examples I can think of which might not have framebuffer drivers also don't have the hardware to attach a display and were made to be remotely administered.

My last T61p laptop with Nvidia GPU had only plain text console in OpenBSD. But it can be the same for any GPU that has no driver (so you can use Vesa Xorg server to get graphics in X, but there's no framebuffer in the console). The Intel and ATI chips are the most supported here, so if you go with other thing it's not a given your console has working framebuffer. When it doesn't, the kernel defaults to the old PC text modes, and only the most common ones that don't depend on BIOS extensions:
And btw, just because that man page refers to VGA graphics card doesn't mean you get that functionality. For cards without actual driver, you only get plain text, and even some of the ioctl() calls described here will only return an error:
I know this, because I tried all of them, and everything I could think of to get framebuffer graphics on that T61p, but without writing an NVidia driver (by reverse engineering the hardware) it won't work.
BTW, the PC even had plain text display cards called MDA. If you have this card, all you can ever get is text.
CP/M machines were usually that way too, there were only some rare graphic-capable ones.
Of course it's the same for hardware VT100 terminals (or equivalent), and the older teletypes.
That's the real text mode, when graphics just don't work at all. The rest is a framebuffer.

So I read about some script to check your style in Python. pep8 superceded by flake8. I'll start using the variable_name style, because why the hell not?

I'll give you lack of driver support in OpenBSD (didn't think that would have been a problem) and the possibility that someone might be trying to access modern websites with an actual terminal, but I don't think anyone here is seriously trying to access modern websites where dealing with captchas would be necessary with anything with an MDA video card (even my 286 laptop with 640 KB of RAM from 1988 supports a graphics mode) or a CP/M machine (as they would suffer due to lack of RAM and would likely require reloading the page regularly as you scrolled through it, the HTML alone for this page is 68 KB).

Yeah I doubt anyone can use 80's hardware to access modern website. Unless maybe they do it over a serial connection to a Unix host, where they run Lynx or other text browser.
In the 90's, Linux also had only text mode console. This was before they added a framebuffer console to the kernel. So the system always booted up in 80x25 text mode, or another text mode that you selected from the LILO prompt. I was running Slackware at the time, and the only option to get graphics without X was to use svgalib (assuming you had a graphics card supported by that library). But here's the deal: when you ran an svgalib program, the PC hardware was switched to a graphics mode (like say mode 13h, 320x200 with 256 colors). Then when you exited that program, the hardware was switched back to text mode and you got your terminal back. So it wasn't identical to framebuffer console where you can display both text and graphics at the same time. You can probably still build your Linux kernel without framebuffer support and get a similar behavior (not sure if svgalib still works today though).
I'm betting that some other OS like MINIX also don't have PC framebuffer driver in their kernels. Because it's a pain to write drivers for all display hardware on PC, whereas text mode is easy and it always works and has been available since the very first IBM PC.
Then you have the opposite scenario: TempleOS only boots up to 640x480 16 color graphics mode. At first glance, it might look like you're in 80x50 text mode, but in reality the kernel is redrawing the characters pixel by pixel 30 times per second (or whatever his refresh rate is). TempleOS doesn't use any text modes ever.

Now it just seems like everyone's splitting hairs.

Throw your code through pylint3 and flake8 and clean it up. You don't have to do all the things they say, but your code right now looks like it was written by a sloppy C programmer who doesn't get Python.

Use decent variable names and avoid Cisms like range(len(x)). Don't fuck around with ord so much, Python lets you do useful things to characters without treating them like numbers.

Go read some well-written real word Python code. It looks like you went in with the idea that you would be able to write good Python code because you know harder languages, but that's not how it works.

All the 'i's are gone and instead I'm prefixing descriptive names with i, so I also know they're an iterator.

I use camelCase for Python and under_score for C-likes because I was taught Python we used camelCase, I see no reason to change that.

I know, but what is it that you think would find it useful?

Oops, I forgot to properly implement that, it's fixed now, but it uses a setting in settings.json not as an environment variable.

They're global for a reason and I think encapsulating them in a class doesn't make much sense.

Where do you think this would be useful? Between functions?

I've wrapped lines more now. But I don't understand why it wasn't forking for you, was it crashing?

Your version wasn't forgiving enough, instead I switched to a regex based version.

Thanks for the suggestion, flake8 was a great help.

Should be better now. Most of the uses of range(len(x)) were because I wanted both the item and where it was in the sequence and didn't know about enumerate().

I'm using ord() because I'm using getch() which gives you an int that corresponds to a keycode.

I didn't, but I will make sure to read some real world Python code in future.

I'll be sure to give it a go. Does NextChan have an onion?



This is actually pretty cool. faissaloo, you've redeemed yourself for having a Reddit account.

Ahhh I need to rescue this thread


It's a terminal-based ASCII/ANSI painter, driven with the keyboard. It's early days but you can draw, select areas, crop the canvas and save it to a text file.

Please give it a go and report any issues, because there are bound to be quite a few.

Are you an 80s fag who has member berries for BBS, or a little kid on some retro-fad.

Either way, gay as fuck.


I'm a 'little kid' who thinks TUIs look cool and that you don't need a GUI for damn near everything.

i need to get a new ide drive to my old pc and try these.

A TUI is a poor man's GUI. You don't have the flexibility of a proper command line tool that can be piped and scripted, and you don't have the flexibility of a proper GUI that can work with pixels instead of characters, see the difference between alt+k, escape k and ctrl+[ k, fluidly react to mouse input, and so many other things. TUIs are useful when you can't properly run graphical software because you only have a terminal, but GUIs are superior if they're an option.

The idea in the original thread was to use a really simple GUI with as little visual bloat as necessary, unless using a GUI provided absolutely no advantages (say, most TUI ncurses distro installation scripts offer no advantages when executed as GUI).

A mouse is better than a keyboard at pointing at things. You can become more efficient if you embrace the mouse for the things it's good at.

A ncurses installer involves lots of moving the cursor and selecting. Simple tasks like that are absolutely faster with a mouse.

1. mouse was invented for a reason.

2. docs are a little dicey.

3. I want muh ansi shading blocks, quarter blocks, and unicode wide chars that are actually useful for drawing.

4. looks weird on terminals with a different black to the terminal window background/transparent terminals.

pretty fucken noice I'm just picky about my art tools.

you can keep the screenie.

Thanks, those criticisms are useful.

Sure, TUIs are limited in some ways. But when those limitations aren't too hurtful, the reduction in bloat and other things like start-up time is big.

What do you mean by this? It's not a very meaningful word by itself.
$ time gvim -c :qreal 0m0.131s$ time vim -c :qreal 0m0.043s

Think of executable size, number of libraries it pulls in, stuff like that. GUIs, because they have to handle a lot more than character cells on a terminal, are generally bigger programs.

Thanks for showing that gvim starts up three times slower. Did you have a point with this?

ed will beat all of them, but even vi is ok.
GUI is just pleb tier.

I'm still on shithub for the time being (tools and projects brah) but if you sort out those issues post up on Holla Forums and I'll draw you something way cooler to promote your shit with.

Not many pixel guys doing ansi or modern ansi editors so I really hope you keep going.

text is a subset of graphics, therefore all text interfaces are also graphical interfaces.

No, the text interface is command-line based, not point & click. It's also scriptable and can be used on dumb terminal, like serial console or even hardware teletype.

bumping for napalm 1.0.

the wheels are a subset of a car, therefore all wheels are also cars.

So what are the text-only boards out there?

It'd be cool if someone started up a MUD for Holla Forums or textpunker boards.

Speaking of which, what's the b32 for it? I've been out of the loop for about two years now.

Do any textpunkers think that there'd be any interest in basically copying /txt/'s setup for Holla Forums Holla Forums etc.?

I found a site with lists the other day:
Dunno if it's up to date or not.

I hope you're still around.

Just released napalm v0.2 today. It's got wide chars (reach them by going into char select mode and pressing the Page Down key), mouse support and undo/redo. I haven't solved the issue on non-black terminals but I'm thinking about that.

Hope you like it and, as always, file issues and give criticisms if need be.

Ok, so how do I browse all the album artists and for those that I want selectively add some of their albums?

Noice. Anything that triggers the ragetards is always amusing.

mpc list albumartist
mpc listall | cut -d/ -f1-2 | uniq | less

links (text mode only)
nano (yes, nano. deal with it)

Bloat status: avoided. I'm not even ASCIIpunk (sounds gay), I just fell for the suckless meme.

Mah nigga



Openrc isn't an init, tardo. It doesn't provie /sbin/init (sysvinit usually does).

OpenRC is an init system. As you said, SysVinit is the init that usually goes with it. Again, I apologize for not saying SysVinit/OpenRC, I forgot that Holla Forums was autistic.

ASCIIpunk > Suckless


Who /zzt/ here?

Doesn't w3m have a shitton of security problems?

I love this client.



WOW enjoy yr massive footprint fam i3 is the deginition of bloat jejejejejejeb
-t. dwm user

Damn fatass! Might as well run emacs as your WM.



don't let this thread die!

Archive it forever:

This is great.

This will come across as bait, and I didnt really read the thread, but I really dont get the point of TUI outside of shit to use over SSH or during installations, or a few other purpouses. But not as just, the normal program you use.
Its hardly any different from GUI, except you can only navigate it with keyboard shortcuts. You get keyboard shortcuts in GUIs too, and they can be pretty good. But often enough its actually faster to use the GUI.
There are programs that I suppose qualify as TUI that are exceptions to this, but they're not just an ncurses analog to gui. vi/m is an example. There are programs that have no reason to get their own GUI windows, like MU* clients or text roguelikes as the examples that immediately come to mind.
But, why would I use ncmpcpp instead of just, say, deadebef? Because of the way I like listening to music, I'd set them up the same, with some kinda WM script for album art in the case of TUI, but the TUI makes seeking and volume controll more finnicky.
The only thing I can think of is that having a MPD, a client to it, and an image viewer and window manager for setting all that up would feel more UNIX-ey, so I'd only do it if I was setting up a meme system for that aesthetic.
I suppose this looks cute for the AA, though. I'm always for having more AA around, on the terminal (*´∀`*)

Because most GUIs are designed primarily around navigating with the mouse with keyboard navigation thrown in as an afterthought. This really shows in some of them where your main method of navigating several options is just tabing/shift-tabing between them. I noticed a bit of this when switching from Thunderbird to Mutt for email.

Great classic style space shooter I found

I know this is a long shot, but do you have Bob: Space Guy?

Nope, got a download? The link on the page is broken.

faissal stop making these threads on cucked tech come to freech tech.

Make chans decentralized again!

pls email [email protected]/* */ if you're a cat named sakamoto and want a cute furret to lick your paws
haha just kidding I'm not OP

pls email [email protected]/* */ if you're a cat named sakamoto and want a cute furret to lick your paws
Go ahead and cry, baby.

pls email [email protected]/* */ if you're a cat named sakamoto and want a cute furret to lick your paws
It's good to be back.

pls email [email protected]/* */ if you're a cat named sakamoto and want a cute furret to lick your paws
I picked some stuff that's not usually seen here (aside from Kirby SSU). I enjoyed them so I recommend you to give them a try at least.

in the US you're probably only going to get half the money he made while you were married.

ban yourself fucktard

Prove to me that "climate change" doesnt exist

This is fun, isnt it?

Interesting leg hair pattern

I need a browser but I'm not sure whether to go with links2 or w3m, w3m seems to display stuff more accurately but the keybinds are a pain, you have to double click to change text and there's no 'enter to submit'.

If you aren't using links2 in graphics mode then you might want to look at elinks as I think it has more features for things like spoofing your fingerprint and cookie controls than links2.

I always forget to mention this site: weblog.sh
Basically just for publishing text and html files over ssh to a webserver.
I'd love to see more people publish interesting stuff on plaintext format or at least *TeX or even Texinfo, so we can just view it in a screen reader.
Also, does anyone know of good or interesting gopher sites?

The site seems down right now

shit, I should've checked that it was up before sharing. I hope it's not ded for good. Anyway, here's the project in gitsjw github.com/hmngwy/weblog.sh

What I liked about this is the simple interface to the whole thing, however, and that it can be accessed with pure textpunk tools.
Even a browser such as links sucks for regular web searches because any search engine is likely to arrange it's stuff in a way that displays horribly in links. And any non-lynx-friendly site whatsoever has this problem.
weblog.sh inspired me, however, to either use gopher or to make a server that can be accessed via ssh (as if it were a BBS) to retrieve files and do further interaction (like posting your stuff). I think that'd be in line with textpunk.

I am also thinking to make a simpler version of it where you're allocated some space in the server and it has a scripting language for you to do anything you like with your allocated "site". Think neocities but over SSH and with a richer and more straightforward (ie not js+DOM complexity) scripting framework

did you get the bug I filed dude? napalm is sick as fuck now.

oh and take this dank ass ansi pepe


You site won't load.

Yup, thanks for that. In the latest commit I've added the character preview and removed the pg-up pg-down thingy. I'm still working out how to do file loading, but that will be coming at some point. I'm so glad you like napalm and that Pepe is p dank.

eh? I was gonna write my own ansi editor, but gtksourceview is a cunt and I'm not pro enough to do overrides when I'd be doing vala subclassing and simultaneously trying to figure out what the widget is supposed to do from a .c sourcefile.

and I don't mind giving you direction and mad screenies. 99% of free software is shit because nobody does testing or files reports. I'm just doing my bit.

I like people like you.

doas master race

Why are you still using a display manager?
(did this with /etc/issue fyi)

You wish. I think nano is fine, but it doesn't fit the minimalism meem.

Nano is less bloated than Vim or Emacs, everything you need is compiled in (and you can compile a version without whatever it is you don't need), there isn't a retarded amount of keybinds.

omg how can you use such shitty program for casuals to type letters in

Step 1: Don't be autistic
Step 2: Use Nano
Step 3: Be happy

You're setting the bar extremely low.

Use sam or ed or something.

ed is impractical to use.

Have you used it? Ed is fucking awesome.

are you literally retarded

No one listen to the nigger OP and use mpd this way with systemdicks:
systemctl --user --now enable mpdncmpcpp
Configuration is in ~/.config/mpd and ~/.ncmpcpp/

also check these digits.

Useful thread.

Um, wouldn't enable make it start on login?

would be pretty sweet if there was a terminal BBS/imageboard thing where you upload these instead of normal images

Well yes. Why would you not want to start it on login? It's the music player daemon. It's meant to run in the background.


Because you don't want something wasting cycles and RAM when you're not even using it

I love you op.

Right, let's revive this corpse of a thread with a new release: napalm v0.3.

Anyone who still cares can now import the files they saved with the :e or :edit command. If you would be so kind, please test this feature with garbage data, because it is the kind of thing that would be fragile. There is also cutting, copying and pasting ('x', 'k' and 'p' keys respectively) of selected areas, as well as a :fill command for a flood fill starting with the currently selected pixel.

Have fun!