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:
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.