tats / w3m

Debian's w3m: WWW browsable pager
https://tracker.debian.org/pkg/w3m
Other
873 stars 94 forks source link

Add Gemini support #264

Open rkta opened 1 year ago

rkta commented 1 year ago

I'd like w3m to support the Gemini protocol0.

I already wrote a patch1 to add it.

This issue is mostly to make others aware and get some feedback if this is useful for them.

@tats, would you be willing to add this feature?

tkna91 commented 1 year ago

@tats gemini is a protocol that embodies one of the major pillars of the engineer's philosophy: "Small is beautiful". Like w3m, it is extremely valuable because of its ability to greatly reduce data and bandwidth usage, making it light enough to be used on things like mobile computers running on dry batteries.

This is from Drew DeVault, creator of sway, aerc, sr.ht, scdoc, etc. https://drewdevault.com/2020/11/01/What-is-Gemini-anyway.html

To me, w3m itself is in a way like www to gopher/gemini, and with this patch, w3m can use www, gemini, and gopher, a similar protocol already supported by w3m, without switching, so gopher /gemini fans will be very comfortable. Even the latest version of lynx/links/elinks does not achieve that.

Please consider merging the patches in a positive manner. If there are any barriers, I will help you to solve them.

097115 commented 1 year ago

It would be great, though, if a patch could render not only links but also the basic tags, like blockquotes and headings.

Random example URL: gemini://idiomdrottning.org/moving-the-macguffin

toastal commented 1 year ago

What are the chances of Gemini evolving and the maintenance required for this? Is it stable?

it is extremely valuable because of its ability to greatly reduce data

Will it ever land compression? I'd be curious if it's actually lighter than a Brotli-compressed HTML file written in a simple style.

rkta commented 1 year ago

On Wed, Mar 22, 2023 at 07:06:25AM -0700, 097115 wrote:

It would be great, though, if a patch could render not only links but also the basic tags, like blockquotes and headings.

Headings is already on my TODO list, see the linked blog post.

With blockquotes you mean preformatted mode, I guess. Besides not breaking long lines, I don't see anything special to do in a text-mode browser. How to deal with long lines in preformatted mode will be added as an option.

tkna91 commented 1 year ago

@toastal Sorry, what I wrote was not a good explanation. Mainly the following seem to be Gemini's selling points

For more information, please refer to the following. https://gemini.circumlunar.space/docs/faq.gmi

rkta commented 1 year ago

On Wed, Mar 22, 2023 at 07:08:56AM -0700, toastal wrote:

What are the chances of Gemini evolving and the maintenance required for this? Is it stable?

The last update to the specs was over a year a ago. Given that the whole project is less then four years old I'd call this pretty stable. And keeping the spec simple was a design goal of Gemini.

it is extremely valuable because of its ability to greatly reduce data

Will it ever land compression? I'd be curious if it's actually lighter than a Brotli-compressed HTML file written in a simple style.

I doubt that it will ever get compression, see my comment above. But is difficult to make predictions, especially about the future. ;)

097115 commented 1 year ago

@rkta

With blockquotes you mean preformatted mode, I guess.

No, I -- or, actually, Gemini itself -- mean the actual blockquotes, which are represented by the leading > (and are similar to the HTML's <blockquote> tag). They are also sort of on your TODO list, but without implementing all these basic things, the Gemini pages aren't really readable (see the sample link in my first comment above, for instance).

rkta commented 1 year ago

On Wed, Mar 22, 2023 at 08:31:26AM -0700, 097115 wrote:

@rkta

With blockquotes you mean preformatted mode, I guess.

No, I -- or, actually, Gemini itself -- mean the actual blockquotes, which are represented by the leading > (and are similar to the HTML's <blockquote> tag). They are also sort of on your TODO list, but without implementing all these basic things, the Gemini pages aren't really readable (see the sample link in my first comment above, for instance).

I see, we are talking about Quote lines. Yes, this (and all other line types mentioned in the spec) will be addressed before I submit a patch set upstream.

Just to be clear: The linked patch is an early version. I did the minimum to do what I need. That's why this is an issue - not a PR.

097115 commented 1 year ago

I see, we are talking about Quote lines

Except they are called exactly blockquotes in the documentation but whatever :)

Thanks for your comment and for the roadmap nonetheless :)

rkta commented 1 year ago

On Wed, Mar 22, 2023 at 11:34:18AM -0700, 097115 wrote:

I see, we are talking about Quote lines

Except they are called exactly blockquotes in the documentation but whatever :)

You triggered the nerd in me. ;)

I found docs talking about blockquotes - but to quote

https://gemini.circumlunar.space/docs/specification.gmi

| 5.5.3 Quote lines

Let's say we both were right :)

Thanks for your comment and for the roadmap nonetheless :)

You are welcome! And thanks for the feedback - it helps to know that people care.

097115 commented 1 year ago

| 5.5.3 Quote lines

...Which is because they are specifically talking about the line-oriented structure in this part -- and call links "link lines", headings "heading lines", etc. But somehow we don't really use that terminology, do we? :)

rkta commented 1 year ago

On Wed, Mar 22, 2023 at 11:51:47AM -0700, 097115 wrote:

| 5.5.3 Quote lines

...Which is because they are specifically talking about the line-oriented structure in this part -- and call links "link lines", headings "heading lines", etc. But somehow we don't really use that terminology, do we? :)

Well... But anyways, let's stop spamming people. If we ever meet in person I'll get you a beer and we can discuss this in more detail. ;)

m040601 commented 1 year ago

One more vote for this. Nice to see my 23 year old "Toyota Corolla" also support gemini.

Just my 2 cents as a proficient user of w3m, but not a programmer.

I have extensevely tested and used many gemini clients. I have already compiled and tested rkta w3m fork with gemin support. Works flawlessly. Thank you for your work.

Another excellent option very confortable for w3m users, who want to try gemini is "telescope". Awesome work by Omar Polo, https://telescope.omarpolo.com, https://github.com/omar-polo/telescope

rkta commented 1 year ago

On Wed, Mar 22, 2023 at 07:06:25AM -0700, 097115 wrote:

It would be great, though, if a patch could render not only links but also the basic tags, like blockquotes and headings.

Random example URL: gemini://idiomdrottning.org/moving-the-macguffin

I updated the patch to indent blockquotes with 4 spaces (same as with HTML blockquotes).

097115 commented 1 year ago

@rkta

Looks nice, thanks :)