This is the source of DOStodon, a Mastodon client for MS-DOS.
DOStodon is implemented in Javascript and relies on a yet unreleased version of DOjS to run.
- You need a VM, real HW or DOSBox-X with a network card an a matching packet driver to use it.
- A Pentium 133 or faster with at least 32MiB of RAM is recommended.
- Packet drivers can e.g. be found on packetdriversdos.net (make sure to download the driver from the "PC/TCP PACKET DRIVERS" section) or on crynwr.com or www.georgpotthast.de
- Make sure you read the section about the limitations!
- see "DOSBox-X config" for an example config that works (for me) with DOSBox-X
Just download the whole repository.
Help on this project is very much appreciated, contact me on Twitter, Mastodon or in the DOjS Discord if you want to help...
Please run DOStodon <server> <username> <password>
Example: DOStodon mastodon.social jon@somwhere.sw 1234567890
The access tokens are stored in CREDS.JSN
if the login is successful.
Just run DOStodon
.
ESC
: Quit DOStodonF1
: Switch to home timelineF2
: Switch to notificationsF3
: Switch to Toot composerF4
: Info screenF5
: Poll/Refresh home/notificationsUP/DOWN
: scroll entries in home/notificationsp
: Show profile of currently selected entry (for boost the boosters profile)P
: Show profile of currently selected entry (for boost the original profile)B
: Boost/reblog currently selected toot in home screenF
: Favorite/like currently selected toot in home screenR
: reply to selected toot in home screenD
: Print JSON of selected toot in home screen to logfileC
: Toggle toots with content warningDEL
: delete toot composer text and reply-to tootCTRL-ENTER
: Send toot in Toot editor1..4
: show media attachment 1 to 4. Any key to close.
- DOStodon is busy while the Mastodon logo is displayed in middle of the screen. Don't hit keys like crazy, every keypress will be queued :)
- DOStodon poll home/notifications every 5 minutes for new entries.
- Can only display the home timeline and notifications. No support for hashtags, local or global timelines.
- 2FA is not supported right now!
- logging in with passwords that contain characters outside 7bit ASCII might not be possible
- HTTPS requests can take quite a lot of time, be patient!
- Can't play videos/audio
- Image attachements are just drawn at the upper left corner
- No support for HTML tags, they are (badly) filtered out
- No support for emojis (replaced by spaces)
- No support for characters like umlauts, etc.
- Hashtags or usernames are not highlighted.
- The toot editor only supports BACKSPACE, it is not a real text editor.
- No fetching of older entries when you scroll down (yet)
- The image cache is never cleared during runtime, DOStodon will eventually run out of memory
- NO REAL TESTING/QUALITY ASSURANCE! Folks, this is a fun project, if you need a production ready client contribute or use something real! If it works for you, it works, but don't blame me for broken commits or missing features...
The source is split into several files right now:
dstdn.js
the "application"home.js
the home timelineimgcache.js
image fetching/cachinginfo.js
info screen displaylogin.js
server loginmstdn.js
contains the Mastodon REST APInotific.js
the notification timelineprofile.js
profile viewertoot.js
toot creationutil.js
support code
DOStodon is implemented using DOjS native API (no p5js emulation). Network operations block the input processing/rendering.
I used "dosbox-x-mingw-win64-20220901233004.zip" of DOSBox-X to test this version of DOStodon.
My dosbox.conf
looks like this:
[sdl]
windowresolution = 1024x768
output = opengl
[dosbox]
machine = svga_s3
captures = capture
memsize = 64
[cpu]
cycles = max
[ne2000]
ne2000=true
nicirq=10
backend=slirp
[autoexec]
mount c C:\Users\ilu\Documents\_DEVEL\DOStodon
c:
ne2000 0x60 10 0x300
- Fixed a memory corruption in DOjS
- Images are no longer saved into TMP files
- Images are now scaled to fit the screen when displayed
- implemented LRU cache for images
- fixed some quirks with key handlings
- DOjS now uses cURL 7.86.0
- Blurhash is now implemented in C
- added
<CW>
for content warnings, you can toggle the toot withC
- added media indicator for non-images (e.g.
<video>
)
- added JS based blurhash
- implemented connection reuse
- you can now reply to toots by pressing R
- you can now clear the toot-composer by pressing DEL
- improved display of boosted toots
- added sounds
- DOjS now uses mbedTLS instead of OpenSSL
- changed display of user handles
- added info screen
- reworked Mastodon-API, prepared it to re-use cURL objects (doesn't work yet)
- now shows a busy indicator when fetchingt iages during scrolling
- disabled alpha channel to speed up rendering
- code cleanup
- several fixes all over the place
- added splash screen
- added entry scrolling
- added manual reload with F5
- changed polling time from 1min to 5min
- added profile viewer
- added media preview
- added media showing
- added liking
- added boosting
- added "busy" indicator
- added some help in README.md
- first working version
- first public release
- didn't work