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:

Surfing plaintext and gemini content is already working well. The catch is it currently doesn't support downloading binary content and TOFU TLS verification. See feature checklist below for more details.

See my blog post for the rationale behind this project.

Installation

You need python 3.7 or higher. McRoss also uses idlelib which is supposed to be included in the standard library but some linux distros split it into a separate package which you'll need to install manually. I know at least Ubuntu and Void Linux do this.

pip install mcross
mcross

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

Usage

Run mcross -h to get a full list of CLI arguments. The same arguments can also be defined in a TOML config file: run mcross-info to know where this file should be for your OS. For example, running mcross like this:

mcross --background-color pink -t "Ubuntu"

is the same as putting this in $HOME/.config/mcross/mcross.toml for linux:

background-color = "pink"
text-font = "Ubuntu"

The priority is CLI arg > config file > default.

Keyboard shortcuts:

  • Ctrl-l: jump to address bar.
  • Hold Alt to see possible button shortcuts underlined. This is what Qt calls Accelerator Keys.

Development

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

There are 2 McRoss-related mailing lists:

If you're not familiar with the mailing list workflow, check out git-send-email.io and mailing list etiquette. useplaintext.email also has useful plaintext setup tips for various email clients, though I don't necessarily agree with its "plaintext or nothing" stance.

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
  • render text/* mime types with correct charset
  • handle binary/* mime types
  • configurable document styling
  • human-friendly distribution
  • TOFU TLS (right now it always accepts self-signed certs)

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. The python/tkinter combo already puts us at a pretty good starting point.

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.

License

Copyright (C) 2020 Bùi Thành Nhân

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Forks

McRoss development is... conservative and slow. If that bothers you, check out picross which is a nice fork with more features (TOFU, tabs, among other things).

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.18.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

mcross-0.5.18-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcross-0.5.18.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.8.6 Linux/5.9.2-arch1-1

File hashes

Hashes for mcross-0.5.18.tar.gz
Algorithm Hash digest
SHA256 d1d137834fa752d672b7f8547536ce5a579a191c0d3d2201d1903cdb4471fd05
MD5 89e8467034ed41e34e456f716dba7aa9
BLAKE2b-256 a4aafcd1f3f3d3a0d49737055512b2bee45139c473e0b41a8bf119721ece878d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mcross-0.5.18-py3-none-any.whl
  • Upload date:
  • Size: 27.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.8.6 Linux/5.9.2-arch1-1

File hashes

Hashes for mcross-0.5.18-py3-none-any.whl
Algorithm Hash digest
SHA256 697c1db49101ac3a3e90c71f6e274c1a95d4147049a0aa032aa7469ccf21069c
MD5 98f0fc412bc4ded22be4d1fd3412624a
BLAKE2b-256 2870fe1fe3069befe7251df6f494b7205c243687552cb3250df3470f73faed5b

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