Edit: This is what I ended up with, lua, nvim:
`buf_set_keymap('n', 'gds', '<c-w>v<cmd>lua vim.lsp.buf.definition()<CR>', opts)`
I made it a different map from the normal gd, so that I can choose to open in a new split or just jump to the one in my current window - I don't want a new split if e.g. a variable is define just 20 lines above my current one.
For any vim feature we can think of, somebody has implemented it. So I say this knowing that I’ve almost certainly just not seen it yet. But, it would be sort of nice if there was a key combo that basically said “just bring me to this definition if moving there would still leave some of the currently visible text on my screen (so I’m not jumping out of my current context and getting lost), but if it is any further of a jump, open a split”
Good one. In general a tricky thing to be aware of with vim: when I add a new variant that uses more characters, the ones with less characters will get a delay.
I presume one can tweak that delay even. But personally, I'll make all the shortcuts "symmetric", eventually. Indeed "gs" or "gv". In other cases, It'd become "gds", "gdd" or such. But "eventually", I try to change stuff more permanently once I see how I actually use it over a few days or weeks.
And I strongly suggest that you contact Kay Xu <Kai.Xu@nottingham.ac.uk>, who is doing research on sensemaking [1] [2] and berrypicking [3], I think he is currently working on newer and better version of his approach with browser extensions (as opposed to a separate renderer), and you both would benefit from collaboration.
As I mentioned, it is a research project, so I would not expect production ready code or multi-browser support. They are indeed not supporting the old version, as they are rewriting almost everything from scratch.
Last time I had contact with them, they were exploring using Plasmo [1] as building block for the extension, instead of doing everything vanilla as they did in the 1st version, which would offer cross-browser support out of the box.
But meanwhile, you can check the code [2] and add the FF manifest yourself to try it out.
It also had full text searching of the contents of the page and also worked as a browser history.
I used it for a few years.
The real solution I saw in a roomful of butcher paper tucked in cabinets in the basement of a really dedicated guy who had a learning disability. He went through textbooks and had to come up with his own special syntax in order to comprehend the text by rearranging the contents on these giant rolls effectively making a hybrid between a mind map and a zui.
He had a "linking" idea that involved an indexing system where you'd get another roll of paper out of the cabinet earmarked with labels and then unrolled it to the "linked" region. Then he'd fold it back on a table and have them both side by side.
The general applicability was immediately apparent. I worked on it as a new way to browse the web over 10 years ago for a few months but then didn't stick with it.
I keep telling myself I'll work more on it but you know, anxiety and depression sucks. You can even use llms to do smart ontological labeling now.
The pieces are right fucking there. All I need to do is pick them up.
Doesn't really work. The fidelity of the links is low. It needs to have an expressed ontology. It's a geometric and spacial language as bucky fuller wrote about. It's an extension of the written word that incorporates a semantic geometry.
This only sounds wacky because it's new. Let's put it this way. Our rules for the written word doesn't really go high up in the abstraction. In English we have a character set that serves as phonetic and a bit of a fuzzy etymology history and that's it.
We don't arrange the words in space differently depending on the expressed intent. There's no squares, circles or triangles that the words enfold upon. Lines or arrows are not part of the writing system.
But if you look at how students take notes, you'll invariably find many invent their own extensions to accommodate for this oversight. Shapes, colors, squiggles, and other affectations carry semantic weight. It's been invented and reinvented millions of times.
I've asked people whenever I see it in the past 10 years or so and almost nobody realizes they invented their own system. They are just doing "what makes sense to them". And there's lots of commonalities. People reinvent the same things.
Semiotics is a natural tool of expression, comprehension and understanding. The wall between it and the written word is an artificial construct that people naturally ignore in their personal writings. I hear people think others won't be able to understand their notes - it's just for them. You'd be surprised how universal these linguistic extensions actually are.
This interaction is an important tool in expressing the natures of corpi transclusions on the project we call the web. We've got the pixels to do it now. Let's go!
Anyways. I'm sure this reads like I'm a nutjob. And yes, I've talked to Ted Nelson about this. He doesn't seem to get it. My email is in my profile if you're interested.
The most important aspect to succeeding here is keeping it open, collaborative and free. The organizational structure has to mirror the desired organization of the output as Conway put it about 60 years ago.
I've gotten quite a bit of positive feedback when I describe it. My previous solution was some heuristic system based on regexs with weights as super-parameters and the Wikipedia corpus. It was not amazing.
I think some kind of automated OWL system using all the modern magic that huggingface has to offer will produce better than trash results and is the way to go.
We're really just tokenizing and lexing here and it's just a matter of putting in the hours and getting people on board.
Some of my general problem is I don't care about money. I'm in this field to build a better future, not so I could personally live extravagantly. Benevolence, however, is not how society is organized.
All jokes aside, the description of the Vim functionality reminds me of the Whisper browser for Squeak, that had something of a depth-oriented SmalltalkBrowser to avoid the inevitable proliferation of windows in the normal course of things. Interesting that enough functionality for reorienting source browsing like that in Vim is about two lines of config. But, of course, the Whisper browser had stacking of things as well as sideways browsing, and new UI.
This is sweet! When we made Chrome some of us (OK only me) were enamoured with an IE shell browser named iRider - it had tree style tabs and pinning, so was useful in very similar ways
IIRC one of the things they did well that could work here is batch control of tabs by dragging across them - you could click on a close or pin button, then drag vertically across other tabs to apply that action - it made handling the glut ever-spawning tabs very easy
I would like to add this horizontal historying to our "virtualized Chrome" (chrome as a client server app) BrowserBox, and its SaaS, CloudTabs. https://browse.cloudtabs.net
Looks like the stuff of dreams and nightmares for a ADHD user.
Am I the only one who regularly ends up a browsing session with 300 tabs? This feels like a feature I'd overuse, and which would only make my life much worse.
I recently discovered the working memory component of ADHD and it became somewhat of a transformative moment for me. It helped me realize that clearing my plate was the most important activity I could do on any given day, because it created the space I needed to focus, and reduced the strain I felt in a day. It has taken time but I've now found when I look at tabs (or screenshots or whatever clutter) and think not about what I'll save or lose, but about how much more I will do if I don't have the clutter, I start to see it not as something lost but something gained, and it has helped. It doesn't always work, but sometimes it does, and its amazing on those days.
Agreed, but even more so, to the extent that I try to do this "plate-clearing" early and often, in between tasks over the course of a single day, and somewhat obsessively close both browser tabs and desktop windows.
This doesn't mean that more comprehensive browser (and more general desktop) session management tools couldn't be useful!
As it stands, for long-running tasks that necessarily need to be interrupted, I tend to use task-specific VMs, which is wasteful in cases where no background processing is involved.
For example, it'd be useful to extend browsers' (and certain other applications, including macOS applications by UI convention) save/restore state on application quit/restart features to allow multiple state instances to be saved/restored (while still allowing usefully global state to be shared, unlike, e.g., Firefox profiles).
Now imagine the same thing, but across applications and integrated with the desktop environment as, e.g., named, persistent virtual desktop sets.
For me tab accumulation is often related to fear of loss, sort of a digital hoarding of things that I might need someday. So it's possible I'd be better here knowing that my history was always there.
I think it would be even more helpful if I could easily tag things along the way, and then quickly search both my tags and content of seen pages. Confidence I could find something again would make it easier for me to close tabs.
For what it's worth, as a fellow ADHD person, these days I regularly go on tab-closing sweeps (generally at some related event, like starting or stopping work for the day or when starting or finishing a task). I try to have one window per ongoing task, and then find places for the other tabs. E.g., if a task represents or is related to a possible to-do, I'll put in in my kanban board. If it's a to-read, it goes to instapaper. If I just thought it was interesting and might want it again, I'll put a line in my LogSeq journal with a short description. The general theory being that if I'm not just hoarding, the I'm saving a tab for a reason, so I should articulate the reason and put the tab somewhere I'll find it again when the the time is right.
For ADHD you'd love offpunk. It's an offline Gemini, Gopher and minimal web browser.
You add bookmarks/RSS feeds or whatever, run
offpunk --sync
and then
offpunk
Finally you type down
tour (or t)
at the prompt and then keep pressing (t) until you finish all the blogs/news sites and such. The site is read with the space bar. If you want to read
again, type down 'less', and you can enter the number of the links to
access them. To go back, press 'b'.
I had exactly the same. I need something to keep me on track. Or, at least something that signals me "headsup! you are rabbit-holing" rather than encouraging me to rabbit-hole.
OTOH, being able to quickly go back to the junction where I left the path I was supposed to follow, is invaluable too.
In vim, I also never got my head around the undo-branching feature. I understand it, but fail to use it in practice. I guess my ADHD brain can handle linear history better than a branching history.
I regularly have to declare tab bankruptcy. By which I mean I bookmark the several hundred still-open tabs in a folder named after the date of said declaration.
…you know, in case I, uh, want to continue to work through them some other day... :|
Well chrome only stores history for 90 days. And firefox has some mystery algorithm if you don't override it. But even if that gets fixed, raw history is a horrible mess compared to saving just the tabs that stayed open.
Also a bookmark folder is itself inferior to actually saving tabs with the per-tab history intact.
I was thinking, this would be really useful for doing research. But you remind me, I also have 400+ tabs open in my browser right now without any chance of going down, and how this going to spiral out of control.
Everybody is talking about the existential risk posed by AI but this guys release this tool in the wild without any rail guards... concerning, really.
A bit more seriously, it can be really useful to have a graph of ArXiv tabs instead of a linear range of tabs, this can be very handy when doing a dive in scientific literature.
Graph approach can be extended to entire web browsing. From page A, you open page B, but you also open page B, from page C. Tree-style browsing will result in opening/seeing page B twice and also not (easily) seeing that came to B from both A and C.
A browser should behave just like browsing documents, we can go back and forth, each "view" should be cachable and savable, not the 20MB main.min.js SPA crap!
>Yes, it's sometimes good to know how you ended up somewhere, but I think what's most valuable about "research" is the synthesis part — grabbing parts of larger wholes, rearranging, recombining, thinking with the material. A small step in this direction could be persisting scroll position or maybe selection, and making the history editable — allowing users to remove dead ends, add notes, etc.
I need to know how this guy will escape the curse of reimplementing a less-VR version of XanaduSpace over HTTPS. Will search his RSS.
I specifically just switched back from chrome to Firefox after about 10 years, because there were still no native hierarchical tab solutions in chrome.
FF + sideberry for every day use and rabbit holing.
I've been using Gingko Writer [1] since it was "gingkoapp" -- it's similar in how information is structured (hierarchical vs linear), but focused on creating, not consuming. The tool permits a rather free-flow approach to compiling things in various scopes [2], and can render a final linear work product from it.
OP's browser and gingko mashed up together would be the perfect thing -- find/explore/learn, annotate, synthesize, organize, and combine into a finished thing, be it a reference or a proof.
Each new search term should open a new results panel, with space for the source code on top, and a list of hits at the bottom. Results panels are in an infinite horizontal row.
This brings back memories. Szymon is/was also active in minimal/experimental music scene [0] back in the days. I think in my hometown (Poznan, Poland) back those 10-15 years ago, there was some self-made small art-hacker community. Great to see his work again!
As a "Watership Down" fan, if I were ever go down the rabbit-holing rabbit hole, I'd be tempted to name the resulting tool "flayrah" (or maybe "Rabscuttle").
But in the meantime (my current rabbit holing technology being a text file in a side window), I'm more than happy to try out everyone else's!
I had this exact idea and I've described it to colleagues before. Fun to see parallel evolution. It feels like a simple concept that should already exist, so I'm surprised it's not more commonly attempted. But you're missing a few of the features that I came up with that build on the initial idea. I haven't gotten around to implementing it yet, but it's on my todo list for this year/next year.
I was planning to build it with ultralig.ht, but I'm not 100% sure if it's ready for it. But since most of the content I'm interested in for research is textual/reader mode, and the rest can be viewed with yt-dlp, I think it can render them and it seems the lightest weight. Otherwise it's webkit or servo that I could think of for this.
This is great, I appreciate the ability to save and restore the "trails".
Similarly to OP and many other like-minded commenters, I've also built an interface for rabbit-holing [0].
This is a 10 year old, purely JS+CSS solution you can open in your browser. It's limited to Wikipedia and its UI seems broken after Wikipedia's style updates, but nevertheless wanted to share the source code [1] for anyone who's interested
I raised the feature of side by side panes as something desirable in Firefox and got pushback in replies[0] proclaiming people couldn't imagine why anyone would want it / that it was solely a domain of the DE. Happy to see that someone figured out that it did make sense.
Looks similar to TST extension. Actually not sure what the difference is. Even the outline is available in TST. Based on first screenshot more design-y?
Been using the grouping and pinning feature in chrome for a bit then saving the groups i care about to try to emulate this behavior, but still a long way off from ideal; the one dimension of tabs at the top level means the UI gets crowded quickly.
Had the tree-style tabs extension for a bit but didn't love its interface and found it to be more trouble than it was worth.
Is there a way to get this running without having to install the tool chain to build this? Is this an Electron app? Is Electron Fiddle [1] what I am looking for? Can I have Electron Fiddle in the browser?
Lately, I've been thinking about how you might bring notebooks to web browsing...something that would make it easier for an LLM to interact with your browsing and thought process. This was timely because it got me thinking more about how what I'm thinking of relates to rabbit-holing.
Orion - Safari with support for FF/Chrome extensions (ALSO on iOS. For free), and has tree-style tabs if you enable it.
My browsing has become so much more enjoyable. Also, since it’s almost the same as Safari, great resource management, great gestures, great performance. Definitely recommended
I guess it does count... I knew about global-history-tree, but maybe the visualisation in the blog fooled me into thinking this was somehow a bit /different/. Maybe Nyxt could use some slick demo videos :)
This is exactly how the old OPML browsers used to work back in the web 2.0 era. Always thought it was a neat interface, although I'd keep content in one pane, scrollable back to previous windows.
This is a little like I a features I wish macOS spaces or Vision Pro screen arrangements provided.
To be able to group, name, save, browse and retrieve multi-space/screen contexts.
I would end up with some projects I open and close frequently. And a growing list of started projects, which would be much more likely to continue for being so easy to resume.
Not being able to put away and resume contexts (of any kind) is a significant cognitive and productivity impediment.
A separate do-undo chain or tree for context edits, in addition to content, would be nice too. I.e. see a context history of what windows I closed, to quickly reopen something.
This is the first time I've seen actual utility in being able to stuff a "web browser" in a pane of a GUI program developed in the language of your choice. The ability to take the metadata of browsing, the links, and especially the knowledge of the connections between clicked URLs, as the basis of a knowledge graph, is the closest I've seen someone come to the Memex[1] in a long time.
Add the ability to add notation, ratings, etc... to that knowledge in a structure, and I think you've got a winner.
Oh.. and store EVERYTHING required to show the page, or save a view of it that's independent of the live internet... that's the other key part of the Memex.
Nyxt is that. A WebkitGTK4 window (commonly used by browsers like Surf, Luakit...) with a Common Lisp UI. The Common Lisp interface gives you suporpowers such as creating graphs on bookmarks to extract closely related information.
> For example, a good window manager could replace Cartographist almost completely
I can see a neat way of doing this with Niri[0] and its recent IPC layout interface, combined with an extension like URL in Title[1] to expose the full window URL to the wm. Someone may need to hold my beer
Looks intriguing! The idea of optimizing browsing for deep dives into content could really change how people consume information online. It’s interesting to think about how this could affect productivity and the way we explore topics. Features that encourage wandering through links could lead to some unexpected discoveries. Keeping track of internet usage is a must, especially if you want to stay connected; browsing your verizon wireless email https://verizon-wireless.pissedconsumer.com/customer-service... can help with that. Moreover, this could lead to a new way of thinking about how we interact with the web.
> As an aside, I also use this technique for navigating code with Vim, where a single shortcut goes to a definition of a function in a new pane
I was intrigued by this, and searched the author's github for their .vim. This is how they do that:
nnoremap gF <c-w>vgF
https://github.com/szymonkaliski/dotfiles/blob/357fc7c76ca86...
and
nnoremap <silent>gD :call CocActionAsync('jumpDefinition', 'vsplit')<cr>
https://github.com/szymonkaliski/dotfiles/blob/357fc7c76ca86...
---
Edit: This is what I ended up with, lua, nvim: `buf_set_keymap('n', 'gds', '<c-w>v<cmd>lua vim.lsp.buf.definition()<CR>', opts)`
I made it a different map from the normal gd, so that I can choose to open in a new split or just jump to the one in my current window - I don't want a new split if e.g. a variable is define just 20 lines above my current one.