com.harryaskham.flotsam · Kotlin

Flotsam

A web browser for Android with fullscreen tabs and up to three floating browser windows. Pages are drawn by the phone's installed Chromium WebView; Flotsam keeps the tabs, bookmarks, cookies and keyboard handling, and Flotilla can place and tile its floating windows next to a terminal or anything else that cooperates.

Four Flotsam screens: a new-tab page with bookmarks and open tabs, the browser menu, browser settings with view, zoom and search engine options, and the tab list.
New tab, the menu, settings and the tab list.

Tabs and floating windows

One browser, four windows Flotsam's structure. One browser state holds up to 32 tabs, bookmarks and launch recipes, and survives the app being restarted. It is shown in up to four windows: the ordinary fullscreen browser and three floating windows, each with its own set of tabs. Pages are drawn by the phone's installed Chromium WebView, from a pool of at most six live WebViews; inactive ones are paused or released and reload when shown again. Flotilla decides where the floating windows go, while Flotsam keeps the pages, cookies and input. browser state≤ 32 tabs · bookmarksrecipes · settings main browserfullscreen float 1own tabs float 2own tabs float 3own tabs WebView pool≤ 6 livesystem Chromium Flotillaplaces the floats
Each window has its own tabs. Inactive pages are paused or released and restored from their saved address when shown.

A floating window has no separate title bar: its two rows of browser controls are its chrome, and you drag it by a dotted handle. It can also open page-first, with the controls hidden behind a pill at the top edge that shows them over the page for a few seconds. Its glass background uses Android's window blur, Samsung's own blur where available, or a plain tint, never a screen capture.

Page zoom changes the site's own viewport, not just the text: at 50 % a page lays out as if the window were twice as wide and tall. Mobile or desktop view and zoom have browser-wide defaults with per-site overrides.

A floating Flotsam window over the main browser, both showing local test pages. The float's top row has a drag handle, its address, a tab count, a menu and a close button.
A floating window over the main browser.

Keyboard

KeysAction
Ctrl LAddress or search
Ctrl T / Ctrl WNew or close tab
Ctrl Shift TReopen closed tab
Ctrl TabNext tab
Ctrl DBookmark the page
Ctrl NNew floating window
Alt ← / Alt →Back or forward

An optional Vim mode adds hjkl scrolling, gg and G, f for link hints, / to find and i to pass keys through. It is a small page navigator rather than a full Vimium: text fields keep their own keys, and unusual pages can override it.

Chrome bookmarks come in through Chrome's exported HTML file, chosen with Android's document picker. The file is parsed and never rendered, folders are kept, and duplicates and unsupported entries are reported.

With Flotilla

With Flotilla chosen in its settings and approved, new floating windows register with it, while the fullscreen browser stays an ordinary Android screen. The browser's controls can take Flotilla's colours; web pages are never recoloured. A saved URL can become a Flotilla launcher entry without Flotilla holding the URL:

Adding a browser recipe to Flotilla How a saved URL becomes a launcher entry in Flotilla without Flotilla ever seeing the URL. Flotilla asks Flotsam to add a recipe. Flotsam shows its own approval screen, where the user picks a saved recipe and allows it. Flotsam then gives Flotilla an immutable capability that can only open that recipe, bound to Flotilla's signing identity. Running it later asks Flotsam to open the URL, and a revoked or removed recipe cannot be run through an old capability. add a recipe1 approval screen2 choose · Allow3 opaque capability4 stores no URL run capability5 open the saved URL FlotillalauncherFlotillalauncher Flotsamowns the URLFlotsamowns the URL youyou

What it does not do

  • Up to 32 tabs, four windows (three floating), six live pages, 5,000 bookmarks and 32 recipes.
  • Cookies and storage are separate from Chrome's; third-party cookies are off. There is no private-browsing mode yet.
  • Certificate errors cannot be bypassed; plain HTTP is allowed and labelled.
  • Camera, microphone and location requests are refused.
  • No passwords are stored; Android's autofill provider fills logins, and a floating window hands the page to the main browser to do it.
  • No JavaScript bridge into the app; the Vim mode only touches the page's own document.
  • Some sign-in flows, DRM video and other site features may still need a full browser.
  • Browser data is private to the app and excluded from backups.