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
106 lines
3.5 KiB
CSS
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;
|
|
}
|
|
}
|