18 ms·
Nyxt: The Hacker's Browser
- jvanderbot 3y agoNever in my life have I been excited about a browser, until now!
- raman162 3y agoThis looks like my type of browser. I currently rely heavily on the vimium chrome extension. Does this support profiles by any chance? I currently use chrome profiles to separate work and personal Looking forward to giving it a spin
- dimator 3y agoyou should also checkout https://qutebrowser.org/ https://qutebrowser.org/ which is pretty mature.
- rochak 3y agoA dealbreaker as it doesn't suppport ublock origin extension which is essential to browsing the web these days.
- yokem55 3y agoQutebrowser can use the same adblock filters that ublock uses.
- lost_tourist 3y agoNot really as customizable though, ublock has useful features like build your own filter and pick/create to block annoying webpage widgets. I do wonder if the python based aspects of qutebrowser might give a large surface to fork it and make this type of "hacker's browser" out of it though.
- lez 3y agoYou can use your OS to do that: Run: `env HOME=~/nyxt-profile-work nyxt` and `env HOME=~/nyxt-profile-personal nyxt` for separating profiles.
- uoaei 3y agoThis looks like it could become a powerful web crawler with relative ease.
- nittanymount 3y agonot for mac sadly...
- _8j50 3y agoYou know what would be cool, if you could use unix cli tools in the browser. Press control+<space>, a small console box shows up and run: |grep ...|awk ... And the text of the document gets processed. But if you want to mess with the dom you could: Html.Body | sed ... | jq ...
- GlumWoodpecker 3y agoThis probably wouldn't be possible due to browser sandboxing. You could however, use a tool like External Application Button [0] in order to send the URL of the page to a script/program, which in turn can make the body of the page parsable by downloading the URL it gets, automating some action on it. I use it pretty often to automate downloads with yt-dlp or opening a picture directly in GIMP from the browser, but since you're invoking a bash/python/whatever script, the possibilities are basically endless. [0]: https://github.com/andy-portmen/external-application-button https://github.com/andy-portmen/external-application-button
- aidenn0 3y ago> You could however, use a tool like External Application Button [0] in order to send the URL of the page to a script/program, which in turn can make the body of the page parsable by downloading the URL it gets, automating some action on it. This works less well than it used to now that CMSs and blogs are now SPAs that render no text without javascript being enabled.
- GlumWoodpecker 3y agoYes, that is a shame, but that can be worked around by sending it to something like PhantomJS, headless Chromium, or any other scriptable browser that will actually run the JS on the page and render it in the background. Very heavy as you're basically running a full browser in the background, but totally doable.
- _8j50 3y agoI was thinking of running gnu binaries like that as a WASM compiled app/pwa
- tortoise_in 3y agoPlans to bring on Android?
- mm007emko 3y agoKeyboard-driven UI on Android? Well, for the brave and true hackers (if you don't connect a keyboard to your android device which you can ... but why having an android device then?)
- xkcd1963 3y agoCan it be run on a server?
- ktm5j 3y agoCan you clarify what you mean? It can certainly be run on hardware that you call a server, just would depend on if you're running a graphical environment, it's not able to run in a terminal emulator afaik.
- graderjs 3y agoIf you want a remote browser capable of running on a server (with the client, browser UI in a regular web page) check out BrowserBox: https://github.com/dosyago/BrowserBoxPro https://github.com/dosyago/BrowserBoxPro
- vindarel 3y agoI expect you can run it in headless mode (new --headless switch), start a Swank server (the backend of Slime, the backend of the most used CL "language server"), and connect to the Lisp process from home, through a SSH tunnel. And control the browser from the Lisp REPL, or a Lisp script, like we would with any running Common Lisp program. https://lispcookbook.github.io/cl-cookbook/debugging.html#remote-debugging https://lispcookbook.github.io/cl-cookbook/debugging.html#re...
- xwdv 3y agoCan it spoof the user agent? Unfortunately browsing a site with a strange browser can often get you treated like a second or even third class citizen.
- vntok 3y agoIt's even more suspicious to security layers to spoof the UA while keeping a different SSL handshake profile (or a different JA3 hash).
- jug 3y agoHmm, not sure it's for me (a bit too much hacker) but I'd definitely like a highly customizable, module based browser with a pure shell by default. Something like Visual Studio Code but with less cruft from the get go. I've never thought about it until I saw this! Now I'm really irked about there not being a solid, mature browser based on extensibility. Where the base is basically an address bar and history awareness (i.e. back/forward) and even bookmarks is a module, so that you don't even need an integrated solution but can instead rely on e.g. Raindrop.io as your bookmarks manager. Tab management another one, so for example you could have _only_ a powerful vertical tabs mode if that's all you need. You know what, it feels like this should have happened 20 years ago and it would be as popular as Vim or Emacs now, but somehow never actually did. It would be the ultimate response to Chrome, Edge, even Firefox feature creep, forcing its developer to commit fully to web renderer excellence (speed, RAM, web standards) and maybe some optional official modules if you want them.
- comfypotato 3y agoContemplating my navel, I propose that it didn’t happen because the purpose of an editor and browser are so different. (Realistically the driving factor is that an editor is much more useful for making money.)
- wahnfrieden 3y agoI’m building it
- replwoacause 3y agoAs in… you’ve been building it, or you just started building it because of this comment?
- wahnfrieden 3y agoI've been building it
- graderjs 3y ago
- aaron695 3y agoIt's not what I expected from their webpage, I think their Github explains it better - Nyxt [nýkst] is a keyboard-driven web browser designed for power users. Inspired by Emacs and Vim, it has familiar keybindings (Emacs, vi, CUA), and is infinitely extensible in Lisp. It's not for the OSINT community, is how I'd read it.
- bee_rider 3y agoOpen source intelligence? What’s the link, are you speculating that it might be insecure or something?
- aaron695 3y ago[dead]
- canadaduane 3y ago"Hacker" as a term has and seems to continue to hold a dual meaning--the penetration testing, blackhat / whitehat, OSINT meaning, OR the creative software engineer, clever maker, resource-constrained artful solver-of-problems. That Nyxt is targeted at "hackers" therefore requires some disambiguation. It is not primarily for the former camp, and is largely for the latter, it appears.
- msie 3y agoI've always thought of developing a Hacker's browser. One where there are no restrictions of what it can do. For example, you can't write a chrome extension to spoof the Referrer header on requests. The Chrome browser is more locked down than you think.
- hattmall 3y agoVB webbrowser control. I'm pretty sure you could do anything imaginable.
- modeless 3y agoDoesn't this one do that? https://chrome.google.com/webstore/detail/referer-control/hnkcfpcejkafcihlgbojoidoihckciin https://chrome.google.com/webstore/detail/referer-control/hn...
- msie 3y agoHmm, if you look at the reviews, it doesn't seem to work for everybody. Also seems to make a "referrer" header instead of "Referrer".
- extheat 3y agoWhat other restrictions are you referring to? This SO post seems to cover how to change headers (including Referrer) in Chrome API: https://stackoverflow.com/q/30999159/11173996 https://stackoverflow.com/q/30999159/11173996 There is also Chromium which you can build and patch if you really need low level changes to the browser not achievable from JS, but nothing immediately comes to mind to necessitate that.
- msie 3y agoIt doesn't look easy to change and even then, there is some doubt whether it works with newer Chrome versions. Anyways, the Chrome developers are purposely making hard if not impossible to change the Referrer and other headers. Part of the blame is to comply with standards but there should be some flag to turn off that behaviour.
- AndrewKemendo 3y agoThis looks like a modern browser UI with an embedded cli that uses the page as a database! Genius! I’ll be trying it out
- dicytea 3y agoDid a quick run with it and turned on vi mode from the settings menu. The first thing I found awkward about it is that prompt fields are always initiated in normal mode. So if you want to execute a command with : or interact with an element using f, you have to manually activate insert mode first before being able to enter text into the prompt. I'm sure there's a way to change this since the entire thing is in Lisp, but it sure is an odd default.
- mst 3y agoif it's a fresh field, I think I might turn out to prefer them always initialised the same way for the sake of my muscle memory. Now, that may not be true of -me- in practice, but it's definitely possible for whoever did implement that part to genuinely prefer it that way. Of course, if the implementer wasn't a vi user, who fucking knows, vi is kinda baroque as fuck if you run face first into it without preparation so "the person who picked that default was trying to do vi users a solid but had to guess at some bits" is totally viable too.
- tptacek 3y agoPreviously: https://news.ycombinator.com/item?id=28623720 https://news.ycombinator.com/item?id=28623720
- mikl 3y agoNyxt: The Emacs Superfan’s Browser FTFY.
- qwertox 3y agoDoes it do regex search? I so often need to do a foo|bar in a page. Back in the days, before Firefox switched to the Google Chrome model of extensions, there used to be a really nice advanced search addon. Nicely integrated into the UI.
- Zetice 3y agoI think the whole point is you can add it!
- joshspankit 3y agoAnother one I constantly wish for: search for numbers between a range
- ivanjermakov 3y agoYou can do that with vimium: https://github.com/philc/vimium/issues/367#issuecomment-3535369 https://github.com/philc/vimium/issues/367#issuecomment-3535...
- skywal_l 3y agoTLDR: "Regex support (turned on by the \r escape sequence)" So, '/' then '\r' and your regex then 'n' or 'shift+n' for next/previous.
- kovac 3y agoThis looks really good, will be trying it out. Looks like they wrote their own rendering code as well? Or are they using some other rendering engine?
- leephillips 3y agoWebKit and Webengine. And the versions of these renderers that this and similar projects like qutebrowser use are just too full of bugs to be a main browser. That’s why I don’t use them, although I would really love to.
- kovac 3y agoThanks for the information. Yes, this is why I stopped using qutebrowser too.
- bee_rider 3y agoI’ve always assumed the major browsers had all sorts of security stuff going on behind the scenes, and using a small alternative like this (or suckless surf) was just asking for trouble. But, I don’t have any real knowledge about security stuff. How misinformed is my take? Are these kinds of browsers OK? I’d like something light, if possible.
- smokeypanda 3y agoLightweight web browsers don't have as large of an attack surface, particularly if they eschew JS, cookies, etc or you disable them. Nyxt is alpha software, so YMMV until it's more feature complete, and independently audited to correctly implement WebKit and WebExtensions. Run Tor Browser without JS in a VM for security+privacy.
- userbinator 3y agoFor those wondering whether this is a new browser engine, the FAQ says: "Nyxt is web engine agnostic. We utilize a minimal API to interface to any web engine. This makes us flexible and resilient to changes in the web landscape. Currently, we support WebKit and WebEngine (experimental (Blink))." tl;dr; no. It's just another browser UI, albeit a very different one.
- akomtu 3y agoCool stuff. We all need to escape the oligopoly of Chrome and Safari. Consider making a build for Android and consider inserting a JS polyfill layer that could stub any weird API with an extension, without rebuilding the browser (side effect: it's an ultimate adblock solution).
- keyle 3y agoI personally use Orion Browser (macOS) and Homerow (macOS) and it gets me in a similar situation, without the buffer stuff, and with a more traditional setup. I can recommend that if you're looking for an alternative.
- asimjalis 3y agoLisp programmability. I love this already.
- n8henrie 3y agoWasn't this just posted last week? And recently before that as well? I remember checking it out, being disappointed about its not-great availability for MacOS, and thinking that I should learn lisp.
- mikrl 3y ago> thinking that I should learn lisp There was a programming language taxonomy thread posted a few weeks ago and I seriously think if you want to ‘git gud’ you should dabble in all of the families. https://news.ycombinator.com/item?id=35813496 https://news.ycombinator.com/item?id=35813496 When you see how to implement a REPL in Lisp, it will blow your mind.
- n8henrie 3y agoThanks, I'll check it out!
- slondr 3y ago> Wasn't this just posted last week? And recently before that as well? Yes. Nyxt just had a major 3.0.0 release, and we had a thread about that: https://news.ycombinator.com/item?id=35869378 https://news.ycombinator.com/item?id=35869378
- noisy_boy 3y agoSince we are on the topic of hackers browsers, does anyone know if Firefox can be made to split pane (both for seeing the same page side by side and also doing it for two different pages)? Having done that with file browsers and IDEs, I wonder how come it wasn't a main feature? Nobody needed to compare pages side by side?
- elashri 3y agoActually the had official extension[1] that did that in the past but I don't remember and can't find why it is no longer available. [1] https://blog.mozilla.org/en/uncategorized/its-a-new-firefox-multi-tasking-extension-side-view/ https://blog.mozilla.org/en/uncategorized/its-a-new-firefox-...
- easrng 3y agohttps://addons.mozilla.org/en-US/firefox/addon/side-view/ https://addons.mozilla.org/en-US/firefox/addon/side-view/
- noisy_boy 3y agoThanks - this is useful indeed but it is sort of a hobbled view - I don't have access to the extensions I have installed in the side view. E.g. the main view shows the page in dark mode via dark reader but the side view doesn't have access to the extension so it has white background which is very jarring (better than nothing though). I wish they allowed a full-on split - almost like having two browser windows (with a common menu/bookmarks bar that acts upon the "active" pane).
- dagurp 3y agoVivaldi does this out of the box
- hiatus 3y agoSo too does Arc.
- deleted 3y ago[deleted]
- vrglvrglvrgl 3y ago[dead]
- p-e-w 3y agoLooks like Nyxt, a browser "inspired by Vim", inherits Vim's showstopper bug: Being unusable on many non-US keyboards, at least with the default bindings. The 'switch-buffer-previous' command is bound to C-[, which cannot be pressed e.g. on QWERTZ layouts because the [ character requires AltGr. This is like sending around text files encoded in Windows-1252 and expecting things to just work. Sorry folks, but it turns out that the creators of Vi(m) didn't actually invent the ultimate UI paradigm half a century ago. It's bad enough that a text editor that ignores the past few decades of UX research is still in widespread use, but please, for the love of God, stop incorporating that broken paradigm into new products. What a pity, because Nyxt looks like a well-designed piece of software otherwise.
- muti 3y agoHardly sounds like either a bug or a showstopper when you can rebind any command
- p-e-w 3y agoWhen a product is unusable without changing configuration, it absolutely is a bug. Being customizable is great, but being broken by default is not. Besides, the whole point of Vim bindings is supposed to be that they are the same everywhere (muscle memory yadda yadda yadda). When you have to change core bindings to something random to make them work, that whole idea falls apart, and you're probably better off using the platform standard bindings for everything. Plus, you get the additional benefit that the software fits in with the rest of the system, rather than sticking out like a sore thumb.
- RhodesianHunter 3y ago>When a product is unusable without changing configuration, it absolutely is a bug I don't think that adage applies when the target user is the average VIM user
- dexterdog 3y ago
- beebmam 3y agoNo support for Windows, really? That's unfortunate.
- throwawayadvsec 3y agowhat kind of "hacker" use windows as a main OS though? windows is only for gaming and testing the software you ship
- deafpolygon 3y agoWhat about Windows that makes it unsuitable? In fact, the majority of "hacking" and the proliferation of "hacking culture" over the history has been done on Windows - not any flavor of UNIX like many would have you believe. Don't gatekeep.
- throwawayadvsec 3y agoWindows is good for getting hacked, unix is good for hacking
- akho 3y agoWhat’s a “hacking culture”?
- deafpolygon 3y agoI did quote it. https://en.wikipedia.org/wiki/Hacker_culture https://en.wikipedia.org/wiki/Hacker_culture
- throwawayadvsec 3y agoIn terms of fingerprinting/bot detection, is it flagged as suspicious/automated browser? it would be interesting to have a customizable browser for undetectable automation
- mtillman 3y agoReally cool. Looks like it supports a good mix of emacs and vim bindings.
- Janymos 3y agoReally like the idea of a tree-based browsing history. It is more in tune with the graph-traversal nature of browsing the internet, and could be extremely useful for people who conducts extensive reading or research on the internet. Honestly feel like this should be an option for more web browsers as an alternative to the 1D, flat structure of tabs.
- yosito 3y agoI just want a WebKit-based browser where everything can be controlled by a prominent LLM prompt box. No more clicking through constantly changing menus or trying to remember rarely-used vim shortcuts, just tell it what you want to do. Bonus if it supports continuous voice input.
- dagurp 3y agoUse Vivaldi then. Just press F2 and you can type any command in the browser. You can also use it to search your history and bookmarks and do basic arithmetic. You can also combine commands into so called command chains.
- ainar-g 3y agohttps://nyxt.atlas.engineer/faq https://nyxt.atlas.engineer/faq > 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. It'd be nice if they elaborated on what this “integrated A.I.” thing actually is in that or another FAQ entry.
- sylware 3y agoStill using big tech c++ diareha of webkit(apple) or blink(google). Please, do acknowledge this is nearly pointless. Stop coding that please: first thing first, namely code a web engine in a plain and simple language (like C89+ with bits of c99/c11) and not using that any grotesque and absurd language syntax like c++... even though the core of the issue is the web itself.
- friend_and_foe 3y agoYou can use any engine you want.
- do-me 3y agoAwesome project! From the website I wasn't quite able to tell where exactly and how AI comes into play. I think apart from fuzzy searching headings a semantic search functionality for the whole text would be a really nice default feature. I implemented frontend-only semantic search with transformers.js here: geo.rocks/semanticfinder. The implementation is very straightforward and it would be easy to integrate in the browser, maybe as a plugin or similar.
- 8organicbits 3y agoThe code references stochastic modeling[1] for predicting the users next command. There may be other places too. https://github.com/atlas-engineer/nyxt/pull/2593 https://github.com/atlas-engineer/nyxt/pull/2593
- jerryzh 3y agoOne thing that stopped me from using it is unable to sync history. Is someone familiar with how hard it would be to use the hook system to allow it to sync with e.g. firefox android?
- klntsky 3y agoNo need for a separate browser to do all that - all the features exist as firefox extensions.
- IshKebab 3y ago> we select and close all buffers Why would you call tabs "buffers"? It's not a text editor. (And that barely makes sense for a text editor anyway.)
- shrimp_emoji 3y agoOops, I made a yank-pasta error. With my https://upload.wikimedia.org/wikipedia/commons/7/77/Adm3aimage.jpg https://upload.wikimedia.org/wikipedia/commons/7/77/Adm3aima... keyboard
- friend_and_foe 3y agoI'm a qutebrowser user and I really have been rolling it around in my head to check this out and switch to it. My main issue with it is that I develop userscripts for qutebrowser (not greasemonkey scripts, qutebrowsers version of extensions) and the lisp only thing in nyxt bugs me. I like lisp, but I'm stronger in other scripting languages. The benefit is of course i would not be limited at all to functionality because any part of nyxt can be modified. It seems like an absolutely fantastic project and I shall see if I want to invest in the effort it takes to move.
- sicariusnoctis 3y agoThe main thing I miss in these vi-like browsers is a tab tree sidebar like Sidebery.
- cutler 3y agoWhy is the only Mac option a non-default, local repo-based Macports installation? What's wrong with a binary or a port that is actually listed in Macports? Isn't that the whole point of Macports?
- rjzzleep 3y agoI had a period where I used uzbl(it died simply because of the constant problems with webkit-gtk) and I tried to use qutebrowser after vimperator became unusable, but from a feature perspective this looks fantastic. They added support for things such as keepassxc. It has nice defaults. But they really went ALL IN with the lisp here. For some people that's a plus, but it seems a lot more unapproachable than emacs configuration to me. I think that will ultimately hurt its adoption and unfortunately these things thrive on the size of the active community. EDIT: part of that is also lack of practical documentation. They have documented a lot about nyxt, but there is very little practical documentation
- dteiml 3y agoLooking forward to the MacOs version! I'm currently using Vivaldi and it frustrates me on a daily basis how unfeatureful, unextendable and buggy it is. My ideal browser would be - chromium-based [optional] - willing to forgo this if (1) it has a lot of features built-in, or (2) it is extendable in a language like `lua`. - tree view of tabs - vim keybindings - splits, moving windows to new tabs and back - file-based configuration - [optional] history sync (i'm fine with using my own cloud provider like icloud/dropbox) - renaming tabs and windows - remote control server (so i can interact with it from hammerspoon/alfred, eg: open the tab that is a local file with .pdf extension and refresh it (for asciidoctor/latex development)) - pdf preview - adblocker - redirecting urls, eg reddit.com -> old.reddit.com - automatic dark mode - modifying js and css of websites (eg removing toolbar on SO) - command line - smooth scrolling - [optional] chromium print preview - [optional] reader mode - [optional] vim mode for text input - [optional] easy integration with text-to-speech that is keyboard controlled