Web Browser

Nexion includes a full web browser built on WebKit, integrated directly as a workspace tab. Browse documentation, test web apps, and manage your workflow without leaving the window.

Browsing

Open a new browser tab with Cmd+Y.

  • •Address bar autocomplete is scored by a combined recency + frequency ranking of your browsing history, so the URLs you visit most surface first.
  • •Hard reload with Cmd+Shift+R bypasses the page cache.
  • •JavaScript-opened popups get their own floating window with full navigation, instead of being collapsed into a tab.

Nexion as your default browser

Nexion registers itself as a handler for http and https links, so it appears in System Settings > Desktop & Dock > Default web browser alongside Safari and the rest. Chosen there, a link clicked in Mail, in a chat window or anywhere else opens in a Nexion tab, whether Nexion was already running or had to start first.

Print and Save as PDF

Cmd+P prints the page, and the page and tab context menus carry Print… and Save as PDF…. A page's own print button works too, and Save as PDF captures the full scrollable page rather than the visible part.

Site Permissions

Camera, microphone and notifications are answered per site, and the answer is remembered across restarts. Review or change everything in Preferences > Web Browser > Site permissions, or in the popover behind the lock icon for the site you're looking at.

  • •A site asking for notifications gets a prompt on the tab, once. Allowed sites never ask again; denied sites are refused without bothering you.
  • •Camera and microphone keep macOS's own prompt when there's no answer on file, and skip it when there is. What you told macOS is recorded too, so the list reflects reality rather than only what you set by hand.
  • •Changes apply the next time the site asks. A page already recording keeps its devices until you stop it from the capture badge.
  • •From the outside: nexion browser permission list|get|set|reset.

Camera and Microphone

Sites can request the camera and the microphone, so video calls and voice notes work in a browser tab.

  • •While a page is capturing, a red badge appears in the pane toolbar. Its menu lists which devices are live and can Mute them (the call survives, nothing is recorded) or Stop them outright, in which case the page has to ask again.
  • •The tab row shows a red dot as well, so a background tab or an unfocused split pane can't record unnoticed.
  • •Revoke access for good in System Settings > Privacy & Security > Camera (or Microphone).

Notifications

Chat, mail and calendar sites can raise real macOS notifications. Each one is titled by the site with the host underneath, and clicking it brings that tab forward and runs the page's own click handler, so a site that jumps to the relevant message still does.

  • •Permission is per site, asked once, and revocable (see Site permissions above). Deliveries are rate-limited per site.
  • •The switch in Preferences > Web Browser > Notifications governs the lot: off means no prompts at all and every page is told the permission was denied.
  • •Notifications raised from inside a site's service worker (rather than the page) are out of reach and won't appear.

Page Context Menu

Right-clicking a page adds the things a workspace browser can do that a plain WebKit menu can't:

  • •Links: open in a new tab, a background tab, a split to the right or below, or in your default browser.
  • •Images: open in a new tab or a split pane, or download into the Downloads card with progress and reveal. The image is found even when the site wraps it in a container with an overlay or paints it as a CSS background, which is how most marketing pages are built.
  • •Video and audio: Download Media works on players too, including the ones that bury the element under overlays and control bars.
  • •Selected text: search it with your configured engine in a new tab.
  • •View Page Source: the live HTML, post-scripts, in a floating viewer with copy and save.

Bookmarks

Save pages as bookmarks with automatic thumbnail preview generation and favicon extraction. The bookmarks homepage displays your saved pages as a visual grid.

  • •Rename, reorder, and delete bookmarks
  • •Import and export bookmarks
  • •Use bookmarks as homepage (configurable in Preferences)

Downloads Manager

A built-in downloads manager tracks download progress in real time. You can pause, resume, and cancel downloads, and reveal completed files directly in Finder.

  • •macOS shows the file in Finder and the progress in the Dock while it arrives, rather than only once it's done.
  • •Files go to the Downloads folder with a numbered suffix when the name is taken, or open a save panel each time if you turn on Ask where to save downloads in Preferences.
  • •A download that fails before it starts is listed as failed with the reason, instead of vanishing.
  • •nexion browser downloads lists the same thing from a terminal, and nexion browser download <url> starts one with the page's cookies.

History

The browser keeps a 500-entry history. It powers address bar autocomplete, where pages you visit often and recently rank higher, and it is browsable in Preferences > Web Browser > History.

  • •Search the list, see the last visit time and visit count, and reopen an entry in a new tab.
  • •Forget a single entry, or right-click one and forget everything from that site. Clear History wipes the lot; bookmarks and cookies are untouched.
  • •The bookmarks menu in the toolbar carries a Recent History submenu for one-click return, plus a link to the full list.
  • •Pages visited in a private tab never appear.

Find in Page

Press Cmd+F to open the find bar. Features include:

  • •Regular expression support: toggle the .* button to search with JavaScript regex patterns
  • •Match count display showing total matches found
  • •Navigate matches with Cmd+G (next) and Cmd+Shift+G (previous)

Zoom

Action Shortcut
Zoom In Cmd+=
Zoom Out Cmd+-
Reset Zoom Cmd+0

Zoom range is 30% to 300%, and the level belongs to the site: it comes back on the next visit, applies in every tab on that host, and survives a restart. A site with no preference always opens at 100% rather than inheriting the previous page's level.

  • •The zoom chip in the status bar appears whenever the page isn't at 100%: click it to reset, hold it to pick a level.
  • •Preferences > Web Browser > Site zoom lists the sites you've changed, with an editable level, a Reset to 100% per row, and a Reset All.
  • •Private tabs remember nothing.

Browser Profiles

Browser profiles let you create fully isolated browsing environments, each with its own cookie and session store. Log into multiple accounts on the same service at the same time: work GitHub, personal GitHub, staging environments: all open side by side without conflicts. The profile icon in the address bar is the switch, and it acts on the pane you are looking at.

  • •Complete session isolation: cookies, localStorage, and session data are fully separated between profiles
  • •Custom icons: assign emoji or SF Symbol icons to each profile for instant recognition
  • •The default profile uses the system WebKit data store

A Page in a Window of Its Own

Move to New Window sends a browser tab, or one pane of a split, to a plain window. The page is moved rather than reopened, which is the part that matters: it arrives with the form you had half filled in, its scroll position and whatever its scripts were holding, none of which survives loading the same address again. Closing that window brings it back where it came from. See Spaces & Tasks.

Pinned Tabs

The sites you always keep open can live as a fixed row of favicon tiles above the tab list, out of the scrolling list so a long list never pushes them off screen. Right-click a browser tab and pick Pin Tab, or use nexion tab pin.

  • •They can't be closed by accident. Cmd+W, the close button, Close Tab, Close Others and nexion tab close all deactivate a pinned tab: the web views are torn down, the memory goes back, the tile dims, and a click wakes it. Only Remove in the tile's context menu takes it away, and unpinning first returns it to the list without closing anything.
  • •The row fills the sidebar. How many tiles fit per row follows the sidebar width, and a short last row spreads to cover it: four pinned tabs read as a full row plus one tile spanning the row below. A wider sidebar gives wider tiles, never taller ones.
  • •Reorder by dragging one tile onto another; the move is animated and the order is saved with the session, as is the pin itself and its icon.
  • •A tile's context menu is the full tab menu, so pinning costs nothing: colour, rename, profile, split, freeze and the rest are all still there.

Private Browsing

A built-in Private profile sits alongside your own. Open one from Terminal > New Private Tab, from the tab context menu, or with nexion browse --private.

  • •Its data store is in-memory only: shared between private tabs while the app runs, gone when you quit.
  • •Nothing reaches the disk: no history entries, no recent-tab entries, and a restart brings the tab back empty instead of reopening the page.
  • •A private pane says so where you are looking: the address bar inverts to a dark field with a glasses icon inside it. That icon is also the control, on every pane including one on the default profile: click it to move this pane to another profile. The tab row shows the profile of its first pane, and nothing when they are all on the default.

User Agent Switching

Switch the browser's user agent string to emulate different browsers:

  • •Safari (default)
  • •Chrome
  • •Firefox
  • •Edge
  • •Safari iPad

OAuth Support

The browser handles OAuth authentication flows for Google, GitHub, and Microsoft. It uses Safari user agent spoofing where necessary to ensure compatibility with OAuth providers that block embedded webviews.

Web Inspector

Open the WebKit Web Inspector with Cmd+Opt+I to debug web pages, inspect elements, view network requests, and run JavaScript in the console: just like Safari's developer tools.

It docks inside the pane, and the pane hands its layout over while it's docked, so the page doesn't fight the inspector for space. Undock it from the inspector's own controls to float it in a separate window. It is scriptable too: nexion browser inspector open|close|toggle|status.

Content Blocker

A built-in content blocker provides ad and tracker blocking out of the box. Toggle it on or off in the Preferences panel under Web Browser settings. Until build 4308 the switch was decorative: two of the rules used regular expression constructs WebKit rejects, and one bad rule voids the whole list, so nothing was ever blocked. It blocks now, which is worth knowing if a page starts behaving differently after updating.

AI Page Summary

Summarize any web page with one click using the AI page summary feature in the toolbar. Works with Anthropic, OpenAI, Codex / ChatGPT, Gemini, or GitHub Models: configure your preferred provider in Preferences.

Userscripts & Per-Site CSS/JS

The browser supports Greasemonkey-compatible userscripts. Drop .js files into ~/.nexion/Userscripts/ and they are automatically loaded and injected into matching pages. See the Userscripts documentation for full details.

You can also add custom CSS and JavaScript for any domain directly from the toolbar: the domain is auto-detected so you can quickly customize specific sites without writing a full userscript.

Browser Appearance

The browser can follow the app theme, or be forced to light or dark mode independently from the rest of the app. Configure in Preferences > Web Browser.

Homepage

Choose what new browser tabs show: a blank page, your bookmarks grid, or a custom URL. Configure in Preferences > Web Browser.

Search Engine

When the address bar input isn't a URL, Nexion treats it as a search query. Choose your default engine in Preferences > Web Browser > Search Engine:

  • •Google (default)
  • •Bing
  • •DuckDuckGo

The engine can also complete what you type: those rows appear under the history ones, marked with a magnifying glass and the engine's name. This is the one part of the address bar that leaves the Mac, so it has its own switch (Search suggestions), is skipped for anything that already looks like a URL, and never runs in a private tab. If the engine is slow or unreachable the dropdown just stays on history.

Split View

A single browser tab can hold up to four panes side-by-side or stacked. Each pane is a fully independent WKWebView with its own URL, history, navigation controls, downloads, and find-in-page. A pane can sit on its own profile: click the profile icon in its address bar and pick another one, private included, and the panes beside it stay where they are. Use it to see a page as you see it logged in and as an anonymous visitor gets it, at the same time. New panes inherit the tab's profile until you say otherwise.

  • •Open a split: Cmd+D for split right, Cmd+Shift+D for split down. Tab strip context menu also offers "Split Right" / "Split Down".
  • •Open a link in a split: Cmd+Opt+click opens to the right of the current pane; Cmd+Opt+Shift+click stacks it below. Same actions live in the link context menu.
  • •Close a pane: Cmd+W (with confirm) or the × button in the toolbar. The last pane standing falls back to closing the whole tab.
  • •Rearrange: drag the Move-Pane handle (right of the Web Inspector icon) onto another pane's top, bottom, left, or right edge.
  • •Extract: drag a pane onto the tab sidebar to break it out as its own top-level tab.
  • •Merge: drag a web tab onto the middle band of another web tab to absorb its panes into a single split.

The focused pane stays at full saturation; non-focused panes desaturate and dim so the active one reads at a glance. The tab strip badge updates with the count (WEB ×2, WEB ×3) and the tab title and favicon follow whichever pane is focused. Split layouts persist across app restarts.

Freeze Tab

Long-lived web tabs can sit in the sidebar without holding their WKWebView in memory. Right-click a web tab and pick Freeze Tab: every pane in the tab is torn down, the row desaturates and gets a small snowflake badge, and the 50 to 200 MB a live web view holds is released back to the system.

  • •Thaw: click the frozen tab. The saved split layout and URLs are rehydrated through the same code path used by session restore, so cookies and localStorage that live on disk under the tab's profile keep working. Behaviour identical to a manual Cmd+R.
  • •Multi-pane preserved: a frozen tab keeps its WEB ×N badge so it's still obvious at a glance whether it holds a single pane or a four-pane split.
  • •Survives app restart: the snapshot is persisted in session.json; the next launch lands the tab in its placeholder state without allocating a WKWebView until you click it.
  • •Quieter in the sidebar: frozen tabs hide their hover close button (the context menu still offers Close Tab) and are skipped by Cmd+Up/Cmd+Down navigation and the Cmd+1…Cmd+9 shortcut sequence, so the visible numbering on the active tabs stays contiguous.

Freeze is intentionally limited to web tabs in this round: terminal, SSH, and canvas tabs hold live processes or unsaved state that can't be paused without losing context.

Adaptive Toolbar Tint

The toolbar background tints to match the page below, in the spirit of Safari's site tinting. A Safari-style resolver is applied on every navigation and SPA route change:

  • •Prefers the page's <meta name="theme-color"> when present.
  • •On auth pages (URL contains /login, /signin, /auth…, or a type=password input is present) the meta is validated against the actually-visible top of page: a dark theme-color over a bright login form is overridden.
  • •Falls through to the top visible background, sticky/fixed header, body/html background, then the neutral system chrome.
  • •SPA navigation (pushState / popstate / hashchange) and dynamic theme-color mutations all trigger a debounced re-sample. The toolbar tweens between colours in ~220 ms with no neutral flash.

Site Info Popover

Click the lock or "Not secure" chip at the left of the address bar to see who you're connected to:

  • •HTTPS: shows the host, the certificate subject ("Issued to"), the issuing CA ("Issued by"), and the validity window. Parsed from the live SecTrust: same data Safari's lock surfaces.
  • •HTTP: replaces the lock with a prominent orange "Not secure" chip and explains why traffic to the page isn't encrypted.