Giter Site home page Giter Site logo

telescope-browser / telescope Goto Github PK

View Code? Open in Web Editor NEW
42.0 42.0 1.0 5.01 MB

browser for the small internet

Home Page: https://telescope-browser.org

License: ISC License

Makefile 2.80% Shell 3.03% C 87.53% M4 1.00% Awk 0.05% Roff 3.84% Yacc 1.59% SmPL 0.15%
finger gemini gemini-browser gopher gopher-client libtls

telescope's People

Contributors

cybertailor avatar omar-polo avatar sikmir avatar thomasadam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

thomasadam

telescope's Issues

Error Parsing URI in Multiple Cases

Version: 0.8.1
System: Fedora Asahi Remix

Multiple Can't parse the URI errors in different circumstances. Here's two to replicate.

Case 1

  1. Visit Veronica-2 and enter a search term with >30 results.
  2. Navigate at the bottom of the page with Next 30 matches
  3. Can't parse the URI

Case 2

  1. Visit gopher://gopherpedia.com
  2. Browse to any link under "Featured Content" heading
  3. Can't parse the URI

Interestingly, at least in the second example, if you quit telescope with q at the error page, then re-run telescope, the page loads fine when restoring the tabs from your previous session.

Can't create landlock ruleset

$ telescope -v
telescope 0.6
$ telescope gemini://gemini.omarpolo.com/
telescope: landlock: Function not implemented
telescope: can't create landlock ruleset
: Function not implemented

OS: Linux

Cross-compilation support

I've tried to cross-compile telescope and build failed with:

telescope-aarch64-unknown-linux-gnu> aarch64-unknown-linux-gnu-gcc  -I/nix/store/2dvz4kwky6qxx75qlwjawa52ixpi0lb5-libevent-aarch64-unknown-linux-gnu-2.1.12-dev/include -g -O2 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter   -o pagebundler pagebundler.o compat/freezero.o compat/getdtablecount.o compat/getprogname.o compat/recallocarray.o compat/strlcat.o compat/strlc
py.o compat/strtonum.o compat/setproctitle.o compat/imsg.o compat/imsg-buffer.o compat/ohash.o compat/fmt_scaled.o -L/nix/store/mq7pij264yrh1piv55a4z5wzxrsyjc8b-libevent-aarch64-unknown-linux-gnu-2.1.12/lib -levent_core -ltls -lncursesw
telescope-aarch64-unknown-linux-gnu> echo > pages.c
telescope-aarch64-unknown-linux-gnu> echo "#include \"pages.h\"" >> pages.c
telescope-aarch64-unknown-linux-gnu> ./pagebundler -f ./pages/about_about.gmi   -v about_about   >> pages.c
telescope-aarch64-unknown-linux-gnu> /nix/store/l0wlqpbsvh1pgvhcdhw7qkka3d31si7k-bash-5.1-p8/bin/bash: line 1: ./pagebundler: cannot execute binary file: Exec format error
telescope-aarch64-unknown-linux-gnu> make: *** [Makefile:1181: pages.c] Error 126
error: builder for '/nix/store/n9ghpkkns8yfbr4xjgjv4y9dr9w759d8-telescope-aarch64-unknown-linux-gnu-0.5.2.drv' failed with exit code 2;
       last 10 log lines:
       >    72 |        __glibc_objsize (__s), __fmt,
       >       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       >    73 |        __va_arg_pack ());
       >       |        ~~~~~~~~~~~~~~~~~
       > aarch64-unknown-linux-gnu-gcc  -I/nix/store/2dvz4kwky6qxx75qlwjawa52ixpi0lb5-libevent-aarch64-unknown-linux-gnu-2.1.12-dev/include -g -O2 -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wno-unused-parameter   -o pagebundler pagebundler.o compat/freezero.o compat/getdtablecount.o compat/getprogname.o compat/recallocarray.o compat/strlcat.o compat/strlcpy.o compat/strtonum.o compat/setproctitle.o compat/imsg.o compat/imsg-buffer.o compat/ohash.o compat/fmt_scaled.o -L/nix/store/mq7pij264yrh1piv55a4z5wzxrsyjc8b-libevent-aarch64-unknown-linux-gnu-2.1.12/lib -levent_core -ltls -lncursesw
       > echo > pages.c
       > echo "#include \"pages.h\"" >> pages.c
       > ./pagebundler -f ./pages/about_about.gmi   -v about_about   >> pages.c
       > /nix/store/l0wlqpbsvh1pgvhcdhw7qkka3d31si7k-bash-5.1-p8/bin/bash: line 1: ./pagebundler: cannot execute binary file: Exec format error
       > make: *** [Makefile:1181: pages.c] Error 126

The reason is that pagebundler should be built with build-platform compiler, not with target-pllatform compiler.

0.5.2 amd64 binary crashes following links (XUbuntu 20.04.3 LTS)

First time around, hitting enter on the link to Project Gemini crashed out, leaving the terminal in a weird state.

Second time (can't remember which link), also crashed.

Third time telescope started with the # Oops document. Clicking on the email results in # unknown protocol screen.

Multiple Error Messages when Bookmarking

Version: 0.8.1
System: Fedora Asahi Remix

When I add something to my bookmarks, I either get a No such file or directory or occasionally invalid multibyte character. This happens on any capsule or gopherhole, however, the link does save to the bookmarks file, and works fine with :list-bookmarks

Does telescope support any kind of buffer or cache in memory or disk ?

Hi first of all thank you for your work in this amazing tool.
I love it. Very well thought. It's obviously the work of someone experienced with other power Unix tools.

Especially the care taken with the bindings, not forcing or imposing anything, catering to a large population of command line power users. And paying attention to conventions.

I'm planning to do a full detailed review of telescope and compare it to other gemini text/cli clients I've been testing in the last months.

I have one question that's been puzzling me since I've been checking your latest releases.
I'm not a programmer so, understand if I'm missing something "obvious"

I'm also a power w3m user.
When I load a couple of sites, and/or go back and forth betwenn many pages in the same site, w3m keeps them "cached" in memory or (if very big) as a temporrary tmp/gziped html file. Once the needed html is downloaded, the tcp connections / sockets to the server are closed. No need to keep them open. I love it.

If I dont close w3m, I could even turn off the Internet, and go back and forth, and read those pages offline. All my loaded tabs and buffers, load instatntly. When I quit w3m, of course all that is removed.

The important thing is that, once I've loaded the page, no more network request are made to the server. , if I go back and forth. It feels snappy , unlike the modern "bloated web", always and constatnly keeping a tcp connection open with the server. Same thing with other gemini clients, for example amfora.

But I've noticed in telescope, that if I visit a gemini site, browse some of its pages, and then want to go back and forth in the history, each time, there's a new network request to the server. So it's talking to the server again, to get the same page I got some minutes ago.

I know this, because I use "ss" (could be netstat, iftop, bandwhich, wireshark, etc) to monitor the sockets connections the program is making in realtime.

Is this normal ? Or is the cache/buffer mechanism not yet implemented ? If so is there any plans to do it ?

Thanks in advance and keep up the good work.

PS: I'm not talking about "cache", in the sense of communication between the client (telescope) and the server (gemini host). I know perfectly well that the gemini protocol does not support this.

RFC: improving styles with themes

In a recent discussion in the IRC channel for telescope, @omar-polo and I were talking about how we might improve some of the UI styles.

For example, it's not currently possible to add styling (bg and fg, attr, etc.) to the modeline -- something I know I'd like to change.

One suggestion we had was to introduce themes. Currently, this is achievable through separate config files but this approach is inflexible. Instead, the proposal would look something like this:

theme some_theme {
    style line.pre.end      bg color239

    style line.link {
        prefix "=> "
        fg color81
        attr normal
    }
}

Then it would be a case of having another config directive such as:

set theme some_theme

If people wanted to separate out these themes into separate files, we could introduce the include config option (stealing the implementation, more-or-less, from gmid ;)):

theme some_theme2 {
    include "themes/some_theme2"
}

Note that the path here (if it's not absolute) is considered relative to ~/.config/telescope or its XDG equivalent if that's defined. I'm not suggesting that such an include config option is limited to this theme proposal either.

So I think namespacing style to a theme block makes some sense.

We could even have a generic default theme which we ship.

theme default {
    style line.quote        attr dim normal
    style line.pre.start    bg color239
    style line.pre          bg color239
    style line.pre.end      bg color239

    style line.link {
            prefix "=> "
            fg color81
            attr normal
    }

    style line.compl.current {
            bg color50
            fg black
            attr normal
    }
}

If we were to allow inheriting themes so that users can create theme based off others, that might be interesting. Hence, I could then create a theme based on default:

theme my_new_default inherits from default {
    style line.link.prefix "<=> "
}

Such that the only thing in my_new_theme is the changed style of the prefix line -- everything else remains as inherited.

Not wanting to overload this idea too much -- at some point I'd like to see protocol-level styles as well. For example -- gemini is not a superset of gopher, and gopher has attributes I'd like to be able to style differently (such as a directory link). Currently, all links in gopher are rendered in gemini's style, which is misleading.

But we can tackle that problem separately.

Feature suggestions: Relative mode

Feature suggestions: Relative URL mode: It will ignore the heuristics described in the documentation and will instead treat user-entered URLs as relative to the current file if no scheme is specified. If it is a command-line argument, then it is relative to the current directory if no scheme is specified.

Error loading - buffer event error

Steps to reproduce.

  1. Navigate to gemini://gnubox.org/
  2. Throws error

More Info

This happens in both the latest release as well as when building from source.

The same capsule works fine on bombadillo and lagrange.

pkg-config dependency

While not mentioned in the readme pkg-config is used by the libevent detection and as such is also a required dependency. Installing this fixes configure on a minimal debian installation.

gopher: save search string in the query part for better history navigation

Telescope could save the gopher search string in the query part of the generated URI, so during history navigation (forward/backward and session resuming) the user is not prompted again. Reloading the page should maybe trigger the prompt, and reply-last-input should allow to change the query.

(got the idea in #14 )

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.