Files
Panama/config/firefox/chrome/toolbar/navbar.css
T
Gabriel Brown 88497826ec Let a machine say what it is for, and give Firefox its face back
Phase 4: the optional application categories, and the Firefox chrome.

Everything Panama installed until now was what every machine gets, which meant a
work laptop acquired emulators and a desktop that wanted Steam had to be told
about it by hand. The interview now offers the categories in
setup/packages/extras/ as a checklist -- gaming, creative, communication,
virtualization -- and nothing is preselected, because a default here installs
applications nobody chose on a machine whose owner answered a question they
thought was about something else.

A category is one file, and a category mixes both package managers because the
applications do: Steam is in RPM Fusion, Slack publishes only a flatpak. So a
bare line is a dnf package and a flatpak: line is a Flathub ID, and one file
holds the whole answer rather than splitting each category across two. The menu
is read from the directory rather than written down, so adding a category is
adding a file. Every name in all four was resolved against the actual
repositories before being written down, and the contract re-resolves them --
the point of admitting applications one at a time is that they stay installable,
and a typo here fails on somebody else's machine, not this one.

Firefox is declared, and its chrome is Edge-Frfox, vendored into config/firefox.
sunhat carried that theme with no license and no attribution; it is MIT, and now
it says so and says whose it is.

It is the only piece of Panama's configuration that does not go to a path this
repository chooses. Firefox owns the profile directory, names it with a random
salt, and does not create one until the browser has been run -- so link-dotfiles
finds or creates a profile and links both halves into it. Both, or neither works:
chrome/ is the CSS and user.js sets the preference that makes Firefox read chrome/
at all, without which the theme is a directory of dead files.

Two assumptions there were wrong, and the contract exists for both. Firefox has
moved to the XDG directories -- the profile root is ~/.config/mozilla/firefox on
this build, not ~/.mozilla/firefox, and writing to the wrong one themes nothing
and says nothing about it. And -CreateProfile turns out to be non-interactive, so
a fresh machine gets the theme on the first install rather than the second. The
contract runs link-dotfiles for real against a throwaway home with no profile in
it and looks at what came out; it was checked by pointing the search at the
legacy path only and watching it fail.

Also: the enrolment/enrollment spellings from the last commit are corrected. This
repository is US-spelled everywhere else -- color 1131 times against colour never
-- and consistency in prose is worth as much as it is in code.

Claude-Session: https://claude.ai/code/session_01NvgBuSWB5sE43yWmg21ozj
2026-08-20 21:24:15 -04:00

106 lines
3.5 KiB
CSS

/* Edge-Frfox - navbar.css
* https://github.com/bmFtZQ/edge-frfox */
/*
MARK: Variables
*/
:root {
--toolbarbutton-border-radius: 4px !important;
--toolbarbutton-inner-padding: 7px !important;
--uc-toolbarbutton-inner-inline-padding: 12px !important;
--toolbarbutton-outer-padding: 2px !important;
--tabs-navbar-shadow-size: 0px !important;
}
#nav-bar {
border-top: none !important;
}
/*
MARK: Toolbar buttons
*/
#nav-bar .toolbarbutton-1>.toolbarbutton-icon {
width: calc(2 * var(--uc-toolbarbutton-inner-inline-padding) + 16px) !important;
}
#nav-bar .toolbarbutton-1>.toolbarbutton-icon,
#nav-bar .toolbarbutton-1>.toolbarbutton-text,
#nav-bar .toolbarbutton-1>.toolbarbutton-badge-stack {
padding-inline: var(--uc-toolbarbutton-inner-inline-padding) !important;
}
/* move reload/stop icon to middle of button */
#reload-button>.toolbarbutton-animatable-box,
#stop-button>.toolbarbutton-animatable-box {
top: calc(50% - 10px) !important;
}
#nav-bar-customization-target :where(#reload-button, #stop-button)>.toolbarbutton-icon {
padding: var(--toolbarbutton-inner-padding) var(--uc-toolbarbutton-inner-inline-padding) !important;
}
toolbar .toolbaritem-combined-buttons {
margin-inline: var(--toolbarbutton-outer-padding) !important;
}
/*
MARK: Account button
*/
.browser-toolbar #fxa-toolbar-menu-button,
.browser-toolbar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack,
#fxa-avatar-image {
border-radius: 99px !important;
}
.browser-toolbar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack {
padding: var(--toolbarbutton-inner-padding) !important;
margin-inline: calc(var(--uc-toolbarbutton-inner-inline-padding) - var(--toolbarbutton-inner-padding)) !important;
}
#TabsToolbar #fxa-toolbar-menu-button>.toolbarbutton-badge-stack {
margin-inline: calc(var(--uc-toolbarbutton-inner-inline-padding) - (var(--toolbarbutton-inner-padding) + 2px)) !important;
}
#fxa-toolbar-menu-button {
display: flex !important;
}
#widget-overflow-list>#fxa-toolbar-menu-button #fxa-avatar-image {
scale: 1.25 !important;
}
.customization-target>#fxa-toolbar-menu-button #fxa-avatar-image {
scale: 1.5 !important;
}
/*
MARK: Button transitions
*/
@media not (prefers-reduced-motion) {
.toolbarbutton-1>.toolbarbutton-icon,
.toolbarbutton-1>.toolbarbutton-text,
.toolbarbutton-1>.toolbarbutton-badge-stack,
:not(.panel-subview-body>toolbaritem)>.bookmark-item:not(menu, menuitem),
.urlbar-page-action,
.identity-box-button,
#tracking-protection-icon-container,
panel button,
panel menulist,
.titlebar-button {
transition: background-color 0.25s ease !important;
}
.toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-icon,
.toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-text,
.toolbarbutton-1:not([disabled=true]):is([open], [checked], :hover:active)>.toolbarbutton-badge-stack,
:not(.panel-subview-body>toolbaritem)>.bookmark-item:not(menu, menuitem):not([disabled=true]):is([open], [checked], :hover:active),
.urlbar-page-action:not([disabled=true]):is([open], [checked], :hover:active),
.identity-box-button:not([disabled=true]):is([open], [checked], :hover:active),
#tracking-protection-icon-container:not([disabled=true]):is([open], [checked], :hover:active),
panel button:not([disabled=true]):is([open], [checked], :hover:active),
panel menulist:not([disabled=true]):is([open], [checked], :hover:active),
.titlebar-button:not([disabled=true]):hover:active {
transition-duration: 0s !important;
}
}