Skip to main content

Do you remember www?

Project description

McRoss is a minimal and usable gemini:// browser written in python and tkinter, meaning it Just Works (tm) on any self-respecting desktop OS: Linux, Windows, Mac OS, and maybe the BSDs? Never tried one of those.

It currently looks like this:

Or check out the demo video: https://junk.imnhan.com/mcross.mp4

Surfing plaintext and gemini content is already working well. See feature checklist below for more details.

Installation

pip install mcross
mcross

Better distribution methods to be explored later. Maybe it's finally time to try nuitka?

Development

Deps:

  • python3.7+
  • idlelib (it's supposed to be in the standard lib but Ubuntu for example splits it into a separate package)
  • curio - for async I/O so that it doesn't block the UI.

To get started:

pyenv install 3.7.7
pyenv virtualenv 3.7.7 mcross
pyenv activate
poetry install
mcross

# to publish, first bump version in pyproject.toml then
poetry publish --build

Feature checklist

  • back-forward buttons
  • handle redirects
  • non-blocking I/O using curio
  • more visual indicators: waiting cursor, status bar
  • parse gemini's advanced line types
  • properly handle mime types (gemini/plaintext/binary)
  • configurable document styling
  • configurable TLS to accomodate self-signed sites?
  • human-friendly distribution

Long term high-level goals:

Easy for end users to install

If the words cargo build exists in the installation guide for your G U I application then I'm sorry it's not software made for people to use.

What-you-see-is-what-you-write

A rendered text/gemini viewport should preserve its original text content. This way once you've read a gemini page on the browser, you already know how to write one. No "View Source" necessary.

Responsive & pleasant to use

The Castor browser doesn't have visual indicators at all, for example, when clicking on a link it just appears to do nothing until the new page is completely loaded. That is A Bad Thing (tm).

Lightweight

In terms of both disk space & memory/cpu usage. It's completely unoptimized at the moment. Actually the way I'm hooking up tkinter and curio is... not ideal. See comments in controller.py for more info. TL;DR I'm prioritizing gui responsiveness and code simplicity, sacrificing a non-negligible amount of CPU cycles even at idle.

Server bugs/surprises

Forces gemini:// in request

Spec says protocol part is optional, but if I omit that one the server will respond with 53 No proxying to other hosts!.

Newline

Spec says a newline should be \r\n but the server running gemini.circumlunar.space just uses \n every time.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcross-0.5.5.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

mcross-0.5.5-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file mcross-0.5.5.tar.gz.

File metadata

  • Download URL: mcross-0.5.5.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/5.6.12-arch1-1

File hashes

Hashes for mcross-0.5.5.tar.gz
Algorithm Hash digest
SHA256 7b880d66f9c76e4b958a14f98db031e5b0a9ad66b63255bef1b4e44d3115600b
MD5 b9dc06f373bd7b93525be3ef00918a0f
BLAKE2b-256 4e0897725b47a40e40eebbad2cde3a35727a3f3c0ba9af97deec6b956dcda9c4

See more details on using hashes here.

File details

Details for the file mcross-0.5.5-py3-none-any.whl.

File metadata

  • Download URL: mcross-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.2 Linux/5.6.12-arch1-1

File hashes

Hashes for mcross-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 dab5db807f61c5af5514c5399d050ce2bf2c624c1af0853fd8ffa80121d83ae3
MD5 d576aff55fac320f1508a87d650c9244
BLAKE2b-256 b45263a244398c66154c36dd0ef74bfbe59b06a230ae24eb89c99472144b2c05

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page