Nyxt: The Hacker's Browser
nyxt.atlas.engineer
nyxt.atlas.engineer
It uses WebKitGTK, not Chrome.
As for why not vimium?
One thing about Nyxt that's great is this idea of trying to push towards being renderer-agnostic. I'm not sure how achievable that is in reality, but when you hear the idea you think oh yeah, surely that would make sense if we want to have good things in the world.
To all the people saying "I like my mouse! Why are these keyboard people so elitist!", the Nyxt people are not on a crusade against your lovely mouse. This isn't ratpoison (a window manager I adored using for a while, but that's a different story).
I have never seen anything on the Nyxt blog or elsewhere claiming mouse-users aren't humans, with full rights, deserving of fine browsing experiences like the rest of us. If I missed something, go ahead, please link it to us all and prove your point.
That's linked to from the ratpoison page, I enjoyed reading it a few years ago, it hasn't gotten any less funny in the meantime.
Why did I ever leave ratpoison...
https://chromewebstore.google.com/detail/vimium/dbepggeogbai...
D-U: is Page Up/Page Down
/: find in page
However, I use old hardware, and it's a bit slow and laggy. Chromium behaves the same way, so I imagine this is due to WebKit and Blink being significantly heavier than Gecko.
Firefox is really snappy on old hardware, at least when running Linux, and uses a modest amount of memory.
In the prosess of switching it out completely now though.
PyCharm IDE on a moderately big project. We've recently focused on moving towards fully type hinted code base, using pyright as the checker/LSP. Which means I use a good-enough-but-not-great plugin which makes pycharm use pyright instead of the buggy heuristic based built in type "engine". And this is noticeable slower, which is part of my motivation for upgrading.
Other part is to be able to play a few games. I could probably just upgrade my GPU, but I'm not sure if it's even possible (outdated PCI port on my MB I think) without getting something second hand.
Third part is that I want to play more with the new NLP technology which is rapidly reaching a point where it should be possible to do a lot of cool stuff. And I want as much as possible to run locally.
My current old CPU is i5-3570 CPU @ 3.40GHz
https://www.reddit.com/r/firefox/comments/1e6e7m2/greasemonk...
Example real-world workflows that highlight the advantage of Nyxt over other browsers?
In case of Nyxt, once Nix is installed, just run nix run nixpkgs#nyxt.
* Python is much slower than SBCL (yes, even if rendering is done by Blink); including the lack of threading
* Bookmarks are pure crap, they don't have tags nor directories to sort them better
* Less hackable (e.g. something that should be possible in Nyxt: https://github.com/qutebrowser/qutebrowser/issues/3933)
* Massive gaps: https://github.com/qutebrowser/qutebrowser/issues/2328 https://github.com/qutebrowser/qutebrowser/issues/2492 https://github.com/qutebrowser/qutebrowser/issues/5731 (!!!)
* Per domain/URL settings never progressed further than the initial batch of properties: https://github.com/qutebrowser/qutebrowser/issues/3636
* Adblocking is better than hostfile but still missing a lot compared to uBlock (https://github.com/qutebrowser/qutebrowser/issues/6480). No script blocking matrix like uBlock "advanced mode" at all.
My impression is that it has been stuck in bug fixing/dependency churn for a long time now. Switched to Firefox while waiting for Nyxt to be usable (apparently, Nyxt 4 will be it).
I don't think it's just your impression: it's exactly what happened. Depending on Qt for the rendering engine means the browser has been tied to the painfully long release cycle of the whole of Qt. Quickly fixing bugs or implementing new features is hard, they have to hack around limited APIs, beg for more and continually fix new bugs introduced by upstream (both Qt and google).
def redirect(info: interceptor.Request):
if info.request_url.host() == "en.m.wikipedia.org":
new_url = QUrl(info.request_url)
new_url.setHost("en.wikipedia.org")
try:
info.redirect(new_url)
except interceptors.RedirectFailedException:
passList of emacs-like config in Qutebrowser:
https://github.com/qutebrowser/qutebrowser/blob/main/doc/hel...
Emacs is a text editor, yes, among other things.
If anyone is reading this who hasn't tried Emacs, don't let takes like this spoil you giving Emacs a try. Doom Emacs is a fantastic experience to get started but there are more minimal starter kits that give you just evil-mode to start.
But trying to use vim inspired motion and editing in other modes is a terrible idea. Just learn how Emacs does it and stop thinking of everything as text. There is usually deeper semantic meaning behind the syntax that an Emacs mode will let you edit directly.
The only real disadvantage for me is that it’s significantly easier to run Neovim on windows (work).
How is this thinking wise? What are the potential gains and analogs for the end (without having to learn how to code)?
What is the analog to Bypass Paywalls Clean and Cookie AutoDelete as an example?
If writing new extensions in Common Lisp was so easy, why do they only list two extensions as available?[1]
Nyxt and qutebrowser target power users but leave out WebExtension support. I think they'd be a lot more popular if they didn't.
> We're focusing on #2989 since it will allow running Nyxt on macOS and support WebExtensions. https://github.com/atlas-engineer/nyxt/issues/2875#issuecomm...
Nyxt aims to provide a great experience for emacs and vim users from the first run, but also has CUA bindings, and also has absolutely standard support for pointing, clicking, dragging, you name it. Get your mousing hand ready, binary_slinger, because the 1s and 0s are ready to get slung inside Nyxt
"Nyxt is a browser with deeply integrated AI"
Made me entirely lose interest.
It sounds like it could be a privay problem
I did however dig deep to figure out what their EULA and whatnotstates. (or the code)
Or is something more specific being referred to?
I personally use virtual desktops for organizing windows of tabs, but if I was one of the masochists who had 100+ open tabs, I would be moving to this immediately
Windows are also about particular topics, but here all windows have all buffers available.
The fuzzy search doesn't really do anything for me. I'm not really interested in seeing e.g. all Amazon tabs together. I'd prefer to see some Amazon tabs that are about particular selections of books next to other tabs of various URLs and titles that are also about those particular selections of books, and in the tree/linear-like order they were opened in.
Also, the tree-like order isn't always from following a link. I may, for example, check out a book on an Amazon product page, and a reviewer makes mention of other similar books, so I may open tabs next to this one that search those titles somewhere (DDG/Amazon/etc).
If I were to make this usable for me, it's probably by automatically keeping record of what buffer I was on when I opened a new one, then making a buffer that presents this information in a modifiable tree. The fuzzy search can be replaced by a search in this buffer. It would simply scroll to the spot, so I'd have access to ancestors and descendants from the match.
A benefit of generalizing to buffers rather than webpages is that presumably I could make simple placeholder buffers that act as parents representing topics where I would have used windows in the past.
Also, I'd need keybindings to walk the tree like Ctrl-Tab and Ctrl-Shift-Tab. Maybe also a way to set the root node for a window, to limit the navigation of Ctrl-Tab in it.
Another thing is that it also facilitates closing tabs when one's done with a topic. Firefox has "close all tabs to the right" for that, though one can also middle click a tab repeatedly until enough tabs have been closed to close a (sub)topic. The buffer tree would simply need to have some "close this and descendants" type of option.
This is already available in the form you described as Global History Tree. See: https://nyxt-browser.com/article/global-history-tree.org
But this is only a presentation and no management (currently) exists. A 1-1 window/buffer map is (also) an open issue.
Prefix a query with '%' to search only within open tabs.
Typing is overrated. Very sad that our tools are all typing-based.
(Yes I can point at least at prolog, epilog, mov reg,imm and int nn parts in a 8086 hexdump, if you’re curious how true of a hacker this is.)
If you want to wear your underwear as a hat, that's your own business. Don't blame Common Lisp, or the array of editors which have nice support for it.
Out of the box it is ready to do vim keybindings, emacs keybindings, or CUA style keybindings. How practical, wouldn't you say? :)
For which operating systems is Nyxt available?
Linux BSD (unofficial) macOS (experimental) Windows (unofficial (via WSL))
Official ports for Windows and macOS are in development.
Specially since that on my hacker circle of Demoscene, during the 16 bit days, we were mostly on Atari and Amiga systems, then we had plenty of mouse time, and no one ever stop to wonder we weren't hackers because we had mices.
This is not about a hype or "looking cool". Mouse and GUIs are faster and more ergonomic for exploratory activities ("how do I do X" for a new task, skimming a document or folder, etc), while keyboard (keyboard shortcuts, command line) is faster for routine, repeatable tasks. Web browsing is full of the latter.
I personally strongly prefer the keyboard and find it exhausting to reach for the mouse all the time, but it's a matter of personal preference. I don't think less of someone when I see they heavily use the mouse when programming, though in my opinion they are missing out.
My hand is usually already on the mouse. Switching apps, scrolling text etc.
I started on PC-DOS and mainframes so was originally all keyboard, but having mouse made things much easier for me.
Now don't get me started on gestures - I can never remember any. - Which might be some of the reason to use mice I can't remember a lot of keyboard shortcuts let me have discoverable menus etc. Pit Smalltalk did not become mainstream.
Do you have a solution?
I'm stuck with native solutions, otherwise I gather this can be fixed with AHK. I'm interested in what you use either way.
I notice you can also reorder the desktops: right click (while holding win+tab), select "move left". Maybe it will then boot into whichever one's leftmost.
You can take a look at it here: http://borg.uu3.net/~borg/?quickrun
Be aware tho, it looks ugly in Win10 and onward.
When using Linux my hand is almost never on the mouse and I groan when I have to do it. My terminal, browser experience, mp3 player, IRC client, etc, are all usable with only a key board. Even rearranging windows is just a keyboard action.
Even on windows, I can't remember the last time I switched windows with a mouse instead of alt tab. Scrolling text is just pressing j in vimium or even in vanilla chrome just pressing spacebar. If your hand is on the mouse that much you're probably not being optimal
I'm aware of about four models of standalone keyboard with it available, but that's trivial even compared to the bazillion keyboards with touchpads for couch typing.
I think that’s mostly what it is. A keyboard (and a bunch of memorizing), gives mastery over the applications UI.
Very few people master shortcuts that require three key chords or more.
It's all about investing a little time to learn something that dramatically speeds up your workflow. A mainstream user has no interest in this even if they work with the computer all day. Hackers as computer enthusiasts do.
When you worked on those early computers you either had to be an enthusiast or be forced by an employer to use them :)
GUIs are great for infrequent tasks. TUIs for efficiency at frequent ones.
As mentioned, I started into computing when TUIs were the only affordable computing model.
There is no magic to me about whatever greatness of TUI and CLI.
Arguing with them is like arguing with audiophiles.
When I press F12, does an inspector open? Where does it open? When I select some words, how do I send them to a new tab in YouTube, Amazon, Google or Stack Overflow? How do I open all the links which are within a selected rectangle in new background tabs? Or use uBlock Origin's element picker?
I'm pretty sure this browser is super fast and all is super optimized and a top tier workflow, but mostly in certain limited scenarios.
What did you think of the demos? The sorts of things you mentioned seem like things doable in NYXT based on the demos, possibly even the exact sort of stuff they are trying to make possible. It looks like it's basically Common Lisp with a web browser attached, which suggests it should be fairly moldable too. I have not seriously used it myself though, so I can't say for sure what the limits are.
Not necessarily with Nyxt or keyboard of course.
This is kind of why it works. In vim you spend most of your time in normal mode, reading, moving around, making quick edits. It takes good advantage of the whole keyboard even when you're not writing new text. I use qutebrowser, which has default vim-style bindings for everything and an emphasis on the keyboard. It works very well.
If I'm programming and want to look up something in the docs, then it's annoying to switch to the mouse and then back, but I pretty much have to with traditional browser UI. (Or tab through a million links to find the right button to click, use cursor keys to scroll, etc.)
Similarly, if I'm just scrolling around with the mouse, then I should be able to do everything that I can with the keyboard (apart from text input). The context menu is good for discoverability, but being context-dependent makes it impossible to rely on muscle memory.
you can miss more easily with a mouse and have to adjust the position of the cursor to line up on two axis before any action
The "line up the two axis" thing is immaterial, and has no practical impact on actual productivity.
“Line up the two axes” was kind of a silly way to put it, but the position you aim your cursor varies quite often, but where you type on a keyboard doesn’t.
You can develop muscle memory for the latter. It’s why hotkeys are so widely used.
When using a mouse you need to completely move your hand to another device, and aim that device at an arbitrary position.
With a keyboard the positions you move your fingers are fixed and because of that, you can develop muscle memory and type very quickly without thinking about where to move your fingers. It’s called “touch typing.”
There’s no such thing for using a mouse since the target position of the mouse movement can vary wildly from website to website and can vary based on the position of a given window.
Using a mouse is natural as in intuitive. You don’t need to really tech someone to use a mouse. It’s easy in that way.
But that’s not the same as muscle memory. Using my hands is very natural, but when learning guitar, I still need to be conscious of what position my hand is going to be in. After a while, since my hand is constantly going to the exact same position, I develop muscle memory and no longer need to be conscious of where my hand is going.
I feel like I shouldn’t need to explain muscle memory with analogy.
A mouse (or rather, a floating cursor) is often a much more efficient way to get your cursor in position than slamming your arrow or hjkl keys multiple dozens of times.
And yeah, of course. Most people who use keyboard based workflows dont just use hjkl to move a cursor around. In vim, for example, there are many more text-centric ways of moving around a document.
Using a keyboard is generally much faster. Try using your daily code editor without any hot keys at all. No F5, no Ctrl-s, none of that.
Uh, what? I have my touchpad tuned so that one swipe from top left to bottom right is exactly equal to going from the top left to bottom right of my display. And aside from that, how do you think people play FPS games, that they think about every mouse movement and then do it?
> Most people who use keyboard based workflows dont just use hjkl to move a cursor around.
> Try using your daily code editor
One of the few usecases where you can do that, and in general is extremely heavily biased towards keyboard use.
Having a touchpad or mouse is great because it is adaptable and versatile. It doesn’t require the application developer to have accommodated every step a keyboard user wants to optimize for. Not to mention there is no “quickly” using your keyboard with one hand if you constantly need to hold modifier keys :)
> Using a keyboard is generally much faster.
That was my point, it is until it isn’t. On any application without Vim or EMacs bindings I’ll happily be leaping over hundreds of lines of text with one or two swipes whilst you are sitting there, going taptaptaptaptaptaptaptaptaptaptaptaptaptaptaptaptaptap with horrid inefficiency.
I’d be doing search and land exactly where I need to be. For each important operation, there’s always a more efficient operations as shortcuts are composable in a way pointing is not.
I think that FPS players are conscious of where they are aiming. They don’t just automatically move their mouse in the exact same way to hit every enemy on screen.
There may be some specific movements, like swiping or turning 180 degrees which have a specific motion (or gesture) related to it, but that isn’t the same as aiming, which you can’t memorize as where you aim is different every time depending on your targets position and movement.
> Not to mention there is no “quickly” using your keyboard with one hand if you constantly need to hold modifier keys :)
Yes there is :)
> On any application without Vim or EMacs bindings I’ll happily be leaping over hundreds of lines of text with one or two swipes whilst you are sitting there.
I’m sorry, but this is a bad argument. Obviously is software isn’t made to support keyboard centric use, it will not be great to use it only with a keyboard.
Imagine if you were writing a book, but your software wasn’t made with keyboard support. You’d need to use the mouse to click every letter. Or one where each clickable button is buried in >3 layers of dropdown menus. That would be equally terrible.
If you have an application optimized for keyboard interaction, it will be faster (tho less intuitive) to interact with it than one which is optimized for mouse movements.
There is a good compromise between speed of use and intuitive usability which is mouse-centric with hot keys.
But to interact as quickly as possible, you’d want to stick with one consistent input device, and motion based input devices don’t cut it.
I mean use what you want though. If you like using a mouse, use it.
There's no (or extremely little...) hype, it's just the sort of thing which starts to appear prominent in a world where conversations are driven more and more by the titles on videos and articles, rather than the other way around.
I claim that the following are all pretty factual, all at once:
1. meese can be faster and more convenient, in certain cases
2. keyboards can be faster and more convenient, in certain cases
3. what people (even the computer-savvy) are used to matters much more than what is "objectively" best or fastest or whatever
4. "hacker" is a polysemic term - playful creative norm-bending, technical mastery of some domain, making Ataris and Amigas do funny stuff it seems they shouldn't have been able to, getting access to a gaming console you weren't supposed to, solving a problem in a surprising manner, reverse engineering some game, etc
5. emacs is an empowering, wonderful text editor
6. so is (hyper/super/ultra/n/eo/) vi(m)
7. nyxt is about much more than keyboard shortcuts (Lisp, freedom, etc)
So for people of my generation, it's really only the tech savvy ones that would use key commands for anything but the most rudimentary stuff (think copy, paste, save, and print).
Thats not to say that keyboard == hacker mentality, but that a keyboard-first tool like this wouldn't really target the average consumer at this point.
Personally, it's not about what's faster - it's about switching. If my hands are already resting lightly on the keyboard, then the keyboard is faster - and vice versa.
To decrease the amount of switching I have to do, I use an extension called Vimium that quickly highlights all links with key bindings. For example "g i" automatically puts the first <input> level field into focus.
> What is Nyxt?
> Nyxt is a browser with deeply integrated AI and semantic document tools that work as a second brain to help you process and understand more, more quickly.
No mention of what sort of "AI", where it's run, etc. If nothing else, this sounds like a recipe for a warm laptop and unreliable results.
I guess they’re just trying ti ride the marketing wave.
This browser was around before AI was popular and when I used it, it was great. The only downside is the lack of ability to run extensions, like bitwarden.
It's because they are not implementing support for WebExtensions. Which is of course not that simple, but it's not because of lacking market share.
And it seems they are kinda have it on the list[1], by switching to chromium[2].
[1] https://github.com/atlas-engineer/nyxt/issues/2875 [2] https://github.com/atlas-engineer/nyxt/issues/2989
(and more hot)
https://github.com/atlas-engineer/nyxt/tree/master/libraries...
Do they just mean it's built with Lisp? What are these semantic document tools?
Nyxt – The Hacker's Browser - https://news.ycombinator.com/item?id=39183823 - Jan 2024 (2 comments)
Nyxt: The Hacker's Browser - https://news.ycombinator.com/item?id=36006423 - May 2023 (252 comments)
Nyxt 3.0.0 - https://news.ycombinator.com/item?id=35869378 - May 2023 (30 comments)
Why Lisp? - https://news.ycombinator.com/item?id=35852321 - May 2023 (327 comments)
Nyxt 3 Pre-release 1 (a Lisp powered web browser) - https://news.ycombinator.com/item?id=32097424 - July 2022 (66 comments)
Lisp in Production: an interview with the guys behind Nyxt Browser [video] - https://news.ycombinator.com/item?id=30271989 - Feb 2022 (15 comments)
Nyxt browser annotations beat pen and paper - https://news.ycombinator.com/item?id=30184792 - Feb 2022 (46 comments)
“Why should I use Nyxt if I can use Vimium?” - https://news.ycombinator.com/item?id=28632422 - Sept 2021 (10 comments)
Nyxt 2.2.0 - https://news.ycombinator.com/item?id=28623720 - Sept 2021 (35 comments)
Nyxt – The Internet on Your Terms - https://news.ycombinator.com/item?id=28037300 - Aug 2021 (1 comment)
Show HN: Nyxt Browser 2.0.0 - https://news.ycombinator.com/item?id=27219646 - May 2021 (121 comments)
Nyxt Browser - https://news.ycombinator.com/item?id=26509612 - March 2021 (125 comments)
Nyxt browser: mouseless copy/paste - https://news.ycombinator.com/item?id=25956152 - Jan 2021 (56 comments)
Dashboard for Nyxt - https://news.ycombinator.com/item?id=25151976 - Nov 2020 (2 comments)
Nyxt Browser 2.0.0 Pre-release - https://news.ycombinator.com/item?id=24353927 - Sept 2020 (11 comments)
Next browser 1.3.2: Hooks, file manager and clipboard ring - https://news.ycombinator.com/item?id=21023816 - Sept 2019 (1 comment)
Next browser 1.3.0: your Lisp daily driver - https://news.ycombinator.com/item?id=20613661 - Aug 2019 (3 comments)
Next browser – web browser in Common LISP - https://news.ycombinator.com/item?id=20064589 - May 2019 (49 comments)
Show HN: Next Browser native on Linux - https://news.ycombinator.com/item?id=18608454 - Dec 2018 (114 comments)
Next browser campaign: last week of fundraising - https://news.ycombinator.com/item?id=18308031 - Oct 2018 (2 comments)
Next Browser Feedback (Lisp) - https://news.ycombinator.com/item?id=18038967 - Sept 2018 (2 comments)
Next – extensible keyboard-oriented web browser - https://news.ycombinator.com/item?id=16985119 - May 2018 (15 comments)
Show HN: NEXT Browser – A Lisp-based browser - https://news.ycombinator.com/item?id=16108081 - Jan 2018 (3 comments)
nEXT Browser: A nEXT Generation Extensible Lisp Browser – Alpha - https://news.ycombinator.com/item?id=15797548 - Nov 2017 (12 comments)
Show HN: nEXT Browser – A Lisp-based browser - https://news.ycombinator.com/item?id=15418719 - Oct 2017 (44 comments)
Some features, like clipboard history and window management (i.e "tabs") are better left to the desktop environment though. Every app shouldn't need to reimplement this logic.
edit: ok this is fast and I like it! eww take a backseat!
No-one is saying "hacker" means someone who is allergic to mouses, it's not what's being said whatsoever. The Nyxt page there unfortunately leans a bit too heavily on the "keyboard" bit, but the fact that that has taken off as a hot take here in this HN discussion is nonetheless an inaccurate reading of the project.
The point being made is that it's a browser for people who want to configure a browser in Common Lisp, i.e., what's sometimes called "power users" (I don't love that term, personally). It's fully FOSS, and the expected audience is people who know their way around terminals, IDEs, Emacs, vim, and so on.
These types of people often learn the available shortcuts in order to get around faster. Not always. However, programmers and tinkerers who like keyboard shortcuts are first-class citizens in Nyxt, is the point. Vim and Emacs keybindings are available out of the box.
However, CUA bindings and mouse-manipulation are also both fully supported. So, there's no issue.
(my #216: it can be hard to figure out how to get around in it because it is all text.)
- an headless big tech engine (blink|webkit|geeko) with AI bots strapped to a virtual mouse and virtual keyboard, probably installed on compromised systems, and remotely controlled.
- a real everyday hacker browser, namely certainly not with a c++ big tech engine (blink|webkit|geeko), but along the line of a simple no-gc computer language which does not require an insane compiler (excluding de-facto c++,java,rust,etc). Ofc, they will have to piggy back the planned obsolescence of Big Tech browsers and shadowy permanent compatibility breaking of Big Tech with their engine (don't forget big tech wants to make you dependent on their own complexity, not anything else).
https://github.com/atlas-engineer/nyxt/issues/2989
They have this repo for Common Lisp bindings to QtWebEngine, but it's been archived:
https://github.com/atlas-engineer/cl-webengine
Seems they're currently trying Electron:
But what I saw was quite nice. I mean I won't switch my default browser but there were some good ideas.