Add keybind or command to browse to parent and root dir of a site #209

Open
opened 2 weeks ago by bdju · 5 comments
bdju commented 2 weeks ago

I can go back in history, but I can't go to a higher level of a site. If I'm linked to a file to read and I then want to see other files in the same dir, or the homepage of the site, I don't really know how to do so. The portal.mozz.us proxy has buttons for these functions.
The p and r keys seem unused right now. Maybe they could be bound to these things.
As an example of what I mean, if you open bombadillo directly to gopher://rawtext.club:70/0/docs/LICENSE, it would be nice to have an easy way to then browse to gopher://rawtext.club:70/0/docs/ (parent) or gopher://rawtext.club:70 (root)

I can go back in history, but I can't go to a higher level of a site. If I'm linked to a file to read and I then want to see other files in the same dir, or the homepage of the site, I don't really know how to do so. The portal.mozz.us proxy has buttons for these functions. The p and r keys seem unused right now. Maybe they could be bound to these things. As an example of what I mean, if you open bombadillo directly to `gopher://rawtext.club:70/0/docs/LICENSE`, it would be nice to have an easy way to then browse to `gopher://rawtext.club:70/0/docs/` (parent) or `gopher://rawtext.club:70` (root)
Owner

So, there is not exactly a way to do what you want.. other than copy and paste? The url is in the bar, so in the case you provided that would be the quickest way.

On the other hand, had you navigated to gopher://rawtext.club:70 then to gopher://rawtext.club:70/0/docs/ then to gopher://rawtext.club:70/0/docs/LICENSE and you wanted to go back to the docs directory, but still have the license file in your history for easy back/forward browsing (ie. to toggle between them to some degree), you could use the jump command. Run on its own it will take the previous page (the one back would get you to) and copy it to the top of the history stack. So now you are on docs but pressing back would take you to license. jump can take an optional number which can copy an exact history position to the top of the history stack.

I know that lengthy example is not what you wanted and that the first example is likely not what you were hoping for. I am planning to get line editing working in bombadillo so that you can use arrow keys to edit what you type. When I do so, I will likely add an edit command (or hot key) that will allow you to edit the current url (and thus remove any parts of it you dont need, or edit parts). I wrote an editable input library that has worked well for me in my other programs but due to some quirks of how bombadillo was written I have had trouble getting it to work here. I do plan to do so in the not distant future though, so hopefully that will solve the issue and allow some form of what you are looking for?

Definitely let me know. Unless something else comes up in conversation here I will likely close this issue, but I will open a new one to get the editable input working and add the edit url functionality.

So, there is not exactly a way to do what you want.. other than copy and paste? The url is in the bar, so in the case you provided that would be the quickest way. On the other hand, had you navigated to `gopher://rawtext.club:70` then to `gopher://rawtext.club:70/0/docs/` then to `gopher://rawtext.club:70/0/docs/LICENSE` and you wanted to go back to the docs directory, but still have the license file in your history for easy back/forward browsing (ie. to toggle between them to some degree), you could use the `jump` command. Run on its own it will take the previous page (the one `back` would get you to) and copy it to the top of the history stack. So now you are on docs but pressing back would take you to license. `jump` can take an optional number which can copy an exact history position to the top of the history stack. I know that lengthy example is not what you wanted and that the first example is likely not what you were hoping for. I am planning to get line editing working in bombadillo so that you can use arrow keys to edit what you type. When I do so, I will likely add an `edit` command (or hot key) that will allow you to edit the current url (and thus remove any parts of it you dont need, or edit parts). I wrote an editable input library that has worked well for me in my other programs but due to some quirks of how bombadillo was written I have had trouble getting it to work here. I do plan to do so in the not distant future though, so hopefully that will solve the issue and allow some form of what you are looking for? Definitely let me know. Unless something else comes up in conversation here I will likely close this issue, but I will open a new one to get the editable input working and add the edit url functionality.
Owner

Actually, the more I think about it... I could just add an up command (with U as a hot key) to pop off the last part of a url. I'm trying to think if there are any issues to that. I think it would be fine for gemini/http/etc. Gopher gives me pause. Is there any situation where the selector would not be 1 for a parent directory? It does not seem like it...

If after a bit more thought the gopher thing seems fine, I may just go this route for now. That would get you a solution without a ton of code or complexity being added, and give me a little more time to get the editable input thing right.

Actually, the more I think about it... I could just add an `up` command (with `U` as a hot key) to pop off the last part of a url. I'm trying to think if there are any issues to that. I think it would be fine for gemini/http/etc. Gopher gives me pause. Is there any situation where the selector would not be `1` for a parent directory? It does not seem like it... If after a bit more thought the gopher thing seems fine, I may just go this route for now. That would get you a solution without a ton of code or complexity being added, and give me a little more time to get the editable input thing right.
sloum added the
enhancement
label 2 weeks ago
Owner

Ok, I worked out a version of this. It had been awhile since I was working actively in this codebase, man I need to do some housecleaning.

That said: if you'd like to test out this feature you can checkout the branch up-dir and build a copy (just run make && ./bombadillo from the repo directory after checking out the branch). Once you do that you will have access to the feature bound to the U key (not u). It will take you up a level in the current url path. It will not go higher than the root directory and it will convert any gopher url to a type 1 url. Note that not all URLs generated this way will be valid for all servers. For example, a gopher server may not serve content for a url to a directory that does not have a gophermap, or similar, file in it.

Having test driven this a bit I can definitely confirm that it is nice to have. Thanks for the request.

Ok, I worked out a version of this. It had been awhile since I was working actively in this codebase, man I need to do some housecleaning. That said: if you'd like to test out this feature you can checkout the branch `up-dir` and build a copy (just run `make && ./bombadillo` from the repo directory after checking out the branch). Once you do that you will have access to the feature bound to the `U` key (not `u`). It will take you up a level in the current url path. It will not go higher than the root directory and it will convert any gopher url to a type 1 url. Note that not all URLs generated this way will be valid for all servers. For example, a gopher server may not serve content for a url to a directory that does not have a `gophermap`, or similar, file in it. Having test driven this a bit I can definitely confirm that it is nice to have. Thanks for the request.
Poster

Sounds like what you settled on will be good! I can't easily build to test on my main distro (Guix System), unfortunately.

I actually mainly use gemini, I just picked a random link from the :help page as an example. I didn't even notice it was gopher.

Sounds like what you settled on will be good! I can't easily build to test on my main distro (Guix System), unfortunately. I actually mainly use gemini, I just picked a random link from the :help page as an example. I didn't even notice it was gopher.
Owner

Awesome. I have a few other minor things I want to work into a release and will likely include this in that release. I'll leave the issue open until the release is made and merged in and I'll comment here when i close it and tag you on it. At that time I will build binaries and update the website as well.

Awesome. I have a few other minor things I want to work into a release and will likely include this in that release. I'll leave the issue open until the release is made and merged in and I'll comment here when i close it and tag you on it. At that time I will build binaries and update the website as well.
sloum self-assigned this 2 weeks ago
sloum added the
in progress
label 2 weeks ago
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.