NixDaemon

NixOS pentest workstation as one flake — IceBreaker's successor
git clone https://git.daemon-sec.xyz/NixDaemon.git
Log | Files | Refs | README

commit d1e07df974c8e1f8a09dbc927178883d7cfff194
parent 5dca6473c5d497e06270c49c86bdfe3ca987fa87
Author: DAEMON <zer0sec.xp@icloud.com>
Date:   Thu,  8 Oct 2026 22:01:59 +0100

fix(floorp): ShyFox Gecko 157 fixes from DAEMON-404/ShyFox 6b69ed8

Floorp 12.19 (Gecko 157) hides ShyFox's whole toolbox and Ctrl+L focuses nothing:
Gecko stopped setting chromehidden and marks popups with popup-window. Synced
the fork's chrome/ over _shyfox/ (the Rosé Pine / personal sheets and the two
import files are untouched) and brought the new-tab wallpapers along.

Verified: the exact _shyfox tree passes the fork's smoke test 27/27 on Floorp
12.19 with Sidebery 5.6.1; home-manager-files builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Diffstat:
Mmodules/home/floorp.nix | 16++++++++++------
Mmodules/home/floorp/_shyfox/ShyFox/shy-compat.css | 22++++++++++++++++++++++
Mmodules/home/floorp/_shyfox/ShyFox/shy-global.css | 8++++++--
Mmodules/home/floorp/_shyfox/ShyFox/shy-interactive.css | 2+-
Mmodules/home/floorp/_shyfox/ShyFox/shy-navbar.css | 2+-
Mmodules/home/floorp/_shyfox/ShyFox/shy-sidebar.css | 4++--
Mmodules/home/floorp/_shyfox/ShyFox/shy-toolbar.css | 2+-
Amodules/home/floorp/_shyfox/wallpaper-light.png | 0
Amodules/home/floorp/_shyfox/wallpaper.png | 0
9 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/modules/home/floorp.nix b/modules/home/floorp.nix @@ -13,8 +13,13 @@ # option takes one string, and the theme is a directory tree (ShyFox/, icons/) # that has to sit at <profile>/chrome/. # -# The theme is ShyFox 3.8.1 as carried from the Omarchy machine, Rosé Pine and -# DM Mono already applied (_shyfox/ShyFox/shy-rosepine.css). It is vendored into +# The theme is ShyFox 3.8.1 as modernised in gitlab.com/DAEMON-404/ShyFox (synced +# at 6b69ed8, which fixes Gecko 157 — Floorp 12.19 — hiding the whole toolbox), +# with Rosé Pine and DM Mono applied on top (_shyfox/ShyFox/shy-rosepine.css, +# shy-custom.css, content/shy-sidebery-daemon.css — the only files here that are +# not the fork's; userChrome.css/userContent.css add their imports). To pull a +# newer fork: rsync its chrome/ over _shyfox/ excluding those two import files. +# It is vendored into # _shyfox/ so this repo pins it, rather than read out of # ~/git/daemon-sec-dotfiles, which may not be cloned. `/_` keeps the asset tree # out of import-tree's reach (see flake.nix). @@ -238,10 +243,9 @@ "${profileDir}/user.js".text = userJs; # The whole theme tree, read-only out of the store. To change the CSS, - # edit modules/home/floorp/_shyfox/ and rebuild. ShyFox's new-tab CSS - # also references wallpaper.png / wallpaper-light.png beside it; neither - # file came over with the theme, so the new-tab background simply does - # not load. Dropping either one into _shyfox/ is all it needs. + # edit modules/home/floorp/_shyfox/ and rebuild. wallpaper.png and + # wallpaper-light.png are the new-tab backgrounds ShyFox's new-tab CSS + # references; replace either file to change them. "${profileDir}/chrome".source = ./floorp/_shyfox; } // lib.mapAttrs' (id: xpi: lib.nameValuePair "${profileDir}/extensions/${id}.xpi" { source = xpi; }) extensions; diff --git a/modules/home/floorp/_shyfox/ShyFox/shy-compat.css b/modules/home/floorp/_shyfox/ShyFox/shy-compat.css @@ -43,6 +43,28 @@ body { min-width: min(180px, 35vw) !important; } +/* Gecko 157 replaced the identity box's icon with #trust-icon-container, which carries a text + label ("Not Secure") and tracker counts beside the icon. ShyFox never budgeted for that text: + in a narrow window it took ~80px of a ~200px field and left the input a few pixels wide. Below + ShyFox's own narrow-window breakpoint the indicator keeps its icon -- the security state still + reads from the icon, its colour and its tooltip -- and the text goes. */ +@media (max-width: 1000px) { + #urlbar #trust-icon-container :is(#trust-label, + #trust-icon-tracker-count-longform-wrapper, + #trust-icon-tracker-count-shortform-wrapper) { + display: none !important; + } + + /* Page actions (bookmark star, Floorp's QR code, reader view …) describe the page you are + leaving once the field has focus, and in a narrow window they cost the input half its width. + They step aside while you type and come back on blur. */ + #urlbar:is([focused], :focus-within) #page-action-buttons, + /* The go arrow appears once you type and does exactly what Enter does. */ + #urlbar :is(#urlbar-go-button, .urlbar-go-button) { + display: none !important; + } +} + /* Native vertical tabs use a separate container in the revamped sidebar. */ @media -moz-pref("sidebar.verticalTabs") { #main-window { diff --git a/modules/home/floorp/_shyfox/ShyFox/shy-global.css b/modules/home/floorp/_shyfox/ShyFox/shy-global.css @@ -24,7 +24,11 @@ Area where website is displayed } /* completely remove the browser interface in fullscreen videos and popups like login with Google or in a floating Bitwarden window */ -#main-window:is(:not([chromehidden=""]), [inDOMFullscreen="true"]){ +/* Gecko before 157 marks a popup with a non-empty chromehidden, and an ordinary window with an + empty one. Gecko 157 drops chromehidden from both and marks popups with popup-window instead, + so the old `:not([chromehidden=""])` matched every window and hid the toolbox everywhere. + "Popup" is now either marker; "ordinary window" (every other sheet) is neither of them. */ +#main-window:is([chromehidden]:not([chromehidden=""]), [popup-window], [inDOMFullscreen="true"]){ #navigator-toolbox {display: none !important;} --margin: 0px !important; } @@ -34,7 +38,7 @@ Area where website is displayed #browser {z-index: 1 !important;} /* if it not fullscreen video or floating window */ -#main-window:not([inDOMFullscreen="true"])[chromehidden=""]{ +#main-window:not([inDOMFullscreen="true"]):not([chromehidden]:not([chromehidden=""]), [popup-window]){ /* if navbar is not hidden in f11 fullscreen or not only navbar is visible in f11 or window is not maximized in clean mode */ &:not( diff --git a/modules/home/floorp/_shyfox/ShyFox/shy-interactive.css b/modules/home/floorp/_shyfox/ShyFox/shy-interactive.css @@ -416,7 +416,7 @@ here: only the tabs inside it are given a look. */ @media not -moz-pref("sidebar.verticalTabs") { - #main-window[chromehidden=""]:not([customizing], [inDOMFullscreen="true"]) + #main-window:not([chromehidden]:not([chromehidden=""]), [popup-window]):not([customizing], [inDOMFullscreen="true"]) #tabbrowser-tabs:not([orient="vertical"]) { /* the label follows the theme, not the toolbar colour Firefox would pick */ diff --git a/modules/home/floorp/_shyfox/ShyFox/shy-navbar.css b/modules/home/floorp/_shyfox/ShyFox/shy-navbar.css @@ -13,7 +13,7 @@ Navigation bar on top of the window } /* if navbar is not hidden, this window is not floating popup and not in fullscreen video */ -#main-window:not(:is([titlepreface*="‌"], [titlepreface*="‍"]))[chromehidden=""]:not([inDOMFullscreen="true"]){ +#main-window:not(:is([titlepreface*="‌"], [titlepreface*="‍"])):not([chromehidden]:not([chromehidden=""]), [popup-window]):not([inDOMFullscreen="true"]){ /* set top margin to navbar height */ --top-margin: calc(var(--toolbar-item-hgt)) !important; } diff --git a/modules/home/floorp/_shyfox/ShyFox/shy-sidebar.css b/modules/home/floorp/_shyfox/ShyFox/shy-sidebar.css @@ -20,7 +20,7 @@ Styles for sidebar } /* if sidebar is not hidden or clean mode not enabled, this window is not floating popup and not in fullscreen video */ -#main-window:not(:is([titlepreface*="᠎"], [titlepreface*="‍"]))[chromehidden=""]:not([inDOMFullscreen="true"]){ +#main-window:not(:is([titlepreface*="᠎"], [titlepreface*="‍"])):not([chromehidden]:not([chromehidden=""]), [popup-window]):not([inDOMFullscreen="true"]){ /* set left margin to sidebar width */ --left-margin: var(--sdbr-wdt) !important; } @@ -303,7 +303,7 @@ Styles when Sidebery is not opened /* Keep normal tab management available when Sidebery is closed, unavailable, or another sidebar (bookmarks/history) is selected. */ @media not -moz-pref("sidebar.verticalTabs") { - #main-window[chromehidden=""]:not([customizing], [inDOMFullscreen="true"]):not(:has( + #main-window:not([chromehidden]:not([chromehidden=""]), [popup-window]):not([customizing], [inDOMFullscreen="true"]):not(:has( #sidebar-box:not([hidden])[sidebarcommand*="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"] )) { --shy-native-tabs-height: 42px; diff --git a/modules/home/floorp/_shyfox/ShyFox/shy-toolbar.css b/modules/home/floorp/_shyfox/ShyFox/shy-toolbar.css @@ -8,7 +8,7 @@ Tab bar has been transformed into vertical toolbar on the right side of the wind */ /* if toolbar is not hidden, this window is not floating popup and not in fullscreen video */ -#main-window:not(:is([titlepreface*="​"], [titlepreface*="‍"]))[chromehidden=""]:not([inDOMFullscreen="true"]){ +#main-window:not(:is([titlepreface*="​"], [titlepreface*="‍"])):not([chromehidden]:not([chromehidden=""]), [popup-window]):not([inDOMFullscreen="true"]){ /* set right margin to toolbar width */ --right-margin: var(--toolbar-button-wdt); } diff --git a/modules/home/floorp/_shyfox/wallpaper-light.png b/modules/home/floorp/_shyfox/wallpaper-light.png Binary files differ. diff --git a/modules/home/floorp/_shyfox/wallpaper.png b/modules/home/floorp/_shyfox/wallpaper.png Binary files differ.