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
253 lines
8.8 KiB
CSS
253 lines
8.8 KiB
CSS
/* Edge-Frfox - tweaks/hide-tabs-bar.css
|
|
* https://github.com/bmFtZQ/edge-frfox */
|
|
|
|
/*
|
|
MARK: Hide tabs toolbar
|
|
*/
|
|
@media (-moz-bool-pref: "uc.tweak.hide-tabs-bar"),
|
|
(-moz-bool-pref: "uc.tweak.hide-tabs-bar.no-window-controls") {
|
|
/* Only hide the tabs toolbar if one of the following sidebar extensions is
|
|
* active: Sidebery, Tree Style Tab, or Tab Center Reborn. */
|
|
:root:not([customizing]):has(#sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:not([hidden])),
|
|
:root:not([customizing]):has(#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"]:not([hidden])),
|
|
:root:not([customizing]):has(#sidebar-box[sidebarcommand="tabcenter-reborn_ariasuni-sidebar-action"]:not([hidden])) {
|
|
/* Height of navbar, used for determining height and position of window controls */
|
|
--uc-navbar-height: 38px;
|
|
/* Drag space next to the window controls, allows you to move the window more easily */
|
|
--uc-titlebar-drag-space: 40px;
|
|
|
|
/* Hide the tabs */
|
|
#TabsToolbar {
|
|
visibility: collapse !important;
|
|
}
|
|
|
|
/* Fix issue with missing window controls. */
|
|
&[tabsintitlebar] #titlebar {
|
|
will-change: auto !important;
|
|
}
|
|
|
|
/* Add some padding to the top of the navbar */
|
|
&[tabsintitlebar] #nav-bar {
|
|
padding-top: var(--uc-tab-top-margin, 0) !important;
|
|
}
|
|
|
|
/* Set background colour of the menu bar to maintain consistency with the navbar */
|
|
@media not (-moz-bool-pref: "uc.tweak.floating-tabs") {
|
|
#toolbar-menubar {
|
|
background-color: var(--toolbar-bgcolor) !important;
|
|
color: var(--toolbar-color) !important;
|
|
}
|
|
}
|
|
|
|
/* Make sure window controls are removed in full screen mode. */
|
|
&[inDOMFullscreen] #TabsToolbar .titlebar-buttonbox,
|
|
&[inFullscreen] #navigator-toolbox[style*="margin-top"] #TabsToolbar .titlebar-buttonbox {
|
|
visibility: collapse !important;
|
|
}
|
|
|
|
/* Disable the replacement window controls if tweak is enabled. */
|
|
@media not (-moz-bool-pref: "uc.tweak.hide-tabs-bar.no-window-controls") {
|
|
/*
|
|
MARK: macOS styles
|
|
*/
|
|
@media (-moz-platform: macos) {
|
|
/* Offset navbar contents to make space for the window controls */
|
|
&[tabsintitlebar]:not([inFullscreen]) #nav-bar {
|
|
padding-left: calc(70px + var(--uc-titlebar-drag-space)) !important;
|
|
|
|
/* Remove the padding from the side of the navbar */
|
|
#nav-bar-customization-target > :is(toolbarbutton, toolbaritem):first-child {
|
|
padding-inline-start: 0 !important;
|
|
}
|
|
}
|
|
|
|
/* Positioning of the window controls */
|
|
#TabsToolbar .titlebar-buttonbox-container {
|
|
visibility: visible !important;
|
|
position: fixed !important;
|
|
height: calc(var(--uc-navbar-height) + var(--uc-tab-top-margin, 0px));
|
|
margin: 0 !important;
|
|
top: 0;
|
|
left: 0;
|
|
|
|
.titlebar-buttonbox {
|
|
margin-inline: calc((var(--uc-navbar-height) + var(--uc-tab-top-margin, 0px) - 14px) / 2) !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
MARK: Windows styles
|
|
*/
|
|
@media (-moz-platform: windows) {
|
|
/* Offset navbar contents to make space for the window controls */
|
|
&:where([inFullscreen], [tabsintitlebar]) #nav-bar {
|
|
padding-inline-end: calc(140px + var(--uc-titlebar-drag-space)) !important;
|
|
|
|
/* Remove the padding from the side of the navbar */
|
|
#PanelUI-menu-button {
|
|
padding-inline-end: 0 !important;
|
|
}
|
|
}
|
|
|
|
/* Positioning of the window controls */
|
|
:where(#toolbar-menubar[inactive]) + #TabsToolbar .titlebar-buttonbox {
|
|
visibility: visible !important;
|
|
position: fixed !important;
|
|
top: 0;
|
|
inset-inline-end: 0;
|
|
height: calc(var(--uc-navbar-height) + var(--uc-tab-top-margin, 0)) !important;
|
|
z-index: 100 !important;
|
|
color: var(--toolbar-color) !important;
|
|
}
|
|
}
|
|
|
|
/*
|
|
MARK: Linux/GTK styles
|
|
*/
|
|
@media (-moz-gtk-csd-minimize-button),
|
|
(-moz-gtk-csd-maximize-button),
|
|
(-moz-gtk-csd-close-button) {
|
|
/* Width of single window control button. */
|
|
--uc-window-control-btn: 34px;
|
|
|
|
/* Navbar space reserved for one button. */
|
|
--uc-window-controls-width: var(--uc-window-control-btn);
|
|
|
|
/* Navbar space reserved for two buttons. */
|
|
@media (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-maximize-button),
|
|
(-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-close-button),
|
|
(-moz-gtk-csd-maximize-button) and (-moz-gtk-csd-close-button) {
|
|
--uc-window-controls-width: calc(var(--uc-window-control-btn) * 2);
|
|
}
|
|
|
|
/* Navbar space reserved for three buttons. */
|
|
@media (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-maximize-button) and (-moz-gtk-csd-close-button) {
|
|
--uc-window-controls-width: calc(var(--uc-window-control-btn) * 3);
|
|
}
|
|
|
|
/* Offset navbar contents to make space for the window controls */
|
|
&:where([inFullscreen], [tabsintitlebar]) #nav-bar {
|
|
/* Window controls on the right. */
|
|
@media not (-moz-gtk-csd-reversed-placement) {
|
|
padding-inline-end: calc(var(--uc-window-controls-width, 0px) + var(--uc-titlebar-drag-space)) !important;
|
|
|
|
/* Remove the padding from the side of the navbar */
|
|
#PanelUI-menu-button {
|
|
padding-inline-end: 0 !important;
|
|
}
|
|
}
|
|
|
|
/* Window controls on the left. */
|
|
@media (-moz-gtk-csd-reversed-placement) {
|
|
padding-inline-start: calc(var(--uc-window-controls-width, 0px) + var(--uc-titlebar-drag-space)) !important;
|
|
|
|
/* Remove the padding from the side of the navbar */
|
|
#nav-bar-customization-target > :is(toolbarbutton, toolbaritem):first-child {
|
|
padding-inline-start: 0 !important;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Positioning of the window controls */
|
|
:where(#toolbar-menubar[inactive]) + #TabsToolbar .titlebar-buttonbox {
|
|
visibility: visible !important;
|
|
position: fixed !important;
|
|
top: 0;
|
|
height: calc(var(--uc-navbar-height) + var(--uc-tab-top-margin, 0)) !important;
|
|
z-index: 100 !important;
|
|
inset-inline: auto 0;
|
|
|
|
@media (-moz-gtk-csd-reversed-placement) {
|
|
inset-inline: 0 auto !important;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
MARK: Sidebar styles
|
|
*/
|
|
#sidebar-box:where([sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:not([hidden])),
|
|
#sidebar-box:where([sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"]:not([hidden])),
|
|
#sidebar-box:where([sidebarcommand="tabcenter-reborn_ariasuni-sidebar-action"]:not([hidden])) {
|
|
--sidebar-background-color: var(--toolbar-bgcolor) !important;
|
|
--sidebar-text-color: var(--toolbar-color) !important;
|
|
--sidebar-border-color: var(--chrome-content-separator-color) !important;
|
|
position: relative !important;
|
|
|
|
/* Floating tabs tweak uses the tab toolbar background instead. */
|
|
@media (-moz-bool-pref: "uc.tweak.floating-tabs") {
|
|
--sidebar-background-color: var(--lwt-accent-color) !important;
|
|
--sidebar-text-color: var(--lwt-text-color) !important;
|
|
|
|
&:-moz-window-inactive {
|
|
--sidebar-background-color: var(--lwt-accent-color-inactive) !important;
|
|
--sidebar-text-color: var(--lwt-text-color-inactive) !important;
|
|
}
|
|
}
|
|
|
|
#sidebar-header {
|
|
border-bottom: 0 !important;
|
|
padding: 10px 4px 0 !important;
|
|
overflow: hidden;
|
|
position: relative;
|
|
|
|
#sidebar-switcher-target,
|
|
#sidebar-close {
|
|
width: auto !important;
|
|
height: 28px !important;
|
|
padding: 0 8px !important;
|
|
border: none !important;
|
|
margin-inline: 0 !important;
|
|
}
|
|
|
|
#sidebar-spacer {
|
|
min-width: 8px !important;
|
|
}
|
|
}
|
|
|
|
/* Sidebar positioned on the left. */
|
|
&:not([positionend]) {
|
|
border-inline-end: 1px solid var(--sidebar-border-color);
|
|
/* Use less padding on the side with the border. */
|
|
padding-inline: 4px 3px;
|
|
}
|
|
|
|
/* Sidebar positioned on the right. */
|
|
&[positionend] {
|
|
border-inline-start: 1px solid var(--sidebar-border-color);
|
|
/* Use less padding on the side with the border. */
|
|
padding-inline: 3px 4px;
|
|
}
|
|
|
|
/* Rounded corners tweak optimisations. */
|
|
@media (-moz-bool-pref: "uc.tweak.rounded-corners") {
|
|
/* Remove padding and border from sidebar. */
|
|
&:not([positionend]),
|
|
&[positionend] {
|
|
border-inline: none;
|
|
padding-inline: 0;
|
|
}
|
|
|
|
@media (-moz-bool-pref: "uc.tweak.theme.sidebery") {
|
|
border-radius: 0 !important;
|
|
box-shadow: none !important;
|
|
|
|
&:not([positionend]) {
|
|
padding-inline-end: 3px;
|
|
}
|
|
|
|
&[positionend] {
|
|
padding-inline-start: 3px;
|
|
}
|
|
}
|
|
|
|
#sidebar-header {
|
|
padding-top: 4px !important;
|
|
}
|
|
}
|
|
}
|