firefox-gnome-theme
firefox-gnome-theme copied to clipboard
Window controls missing on macOS
Describe the bug Window controls are missing on macOS.
To Reproduce Install theme on macOS
Expected behavior Window controls exist
Screenshots
Setup information
- OS: macOS 14.4.1
- Installation method: Manual
- Firefox version: 124.0.2
- Theme version: master
- Optional features enabled: gnomeTheme.bookmarksToolbarUnderTabs = true, gnomeTheme.normalWidthTabs = true
Additional context Sadly I have to use macOS for work
The theme has the --gnome-navbar-csd-offset
CSS var to know how much offset the navbar needs to show the window controls. The theme sets the value of this var based on the linux-only -moz-gtk-csd-minimize-button
, -moz-gtk-csd-maximize-button
and -moz-gtk-csd-close-button
media queries. Then it uses the -moz-gtk-csd-reversed-placement
to know if the offset needs to go in the start or end.
Said that, if you know some macOS-only media query in Firefox we could use it to set --gnome-navbar-csd-offset
with some value that works for macOS, and I guess it would also need to set the offset in the start.
Otherwise you can add custom styles on top of the theme to fix your issue:
/* Window controls offset */
:root[tabsintitlebar]:not([inFullscreen]) #nav-bar {
padding-left: 117px !important;
padding-right: 3px !important;
}
Looking at https://github.com/mozilla/gecko-dev/blob/f602853ba8d55ba157e2a74d9b571615f6ed97b8/layout/style/test/chrome/chrome-only-media-queries.js looks like we might have some alternatives.
Can you check if the following code works?
@media (-moz-platform: macos) {
:root {
--gnome-navbar-csd-offset: 117px;
}
:root[tabsintitlebar]:not([inFullscreen]) #nav-bar {
padding-left: var(--gnome-navbar-csd-offset) !important;
padding-right: 3px !important;
}
:root[tabsintitlebar] #titlebar .titlebar-buttonbox-container {
left: 0;
right: auto !important;
}
}
Put that in customChrome.css, got this result:
Hmm, so it works fine (adding the offset) but there are no window controls. I would need to inspect the UI I guess, but I don't have macOS, so we're at a dead end.
Hmm, so it works fine (adding the offset) but there are no window controls. I would need to inspect the UI I guess, but I don't have macOS, so we're at a dead end.
I have an older Macbook that I can set up remote desktop on if you wanted to use that to test on.
This seems to get the gnome style buttons workable/visible:
@media (-moz-platform: macos) {
:root {
--gnome-navbar-csd-offset: 120px;
}
:root[tabsintitlebar]:not([inFullscreen]) #nav-bar {
padding-left: var(--gnome-navbar-csd-offset) !important;
padding-right: 3px !important;
}
:root[tabsintitlebar] #titlebar .titlebar-buttonbox-container {
left: 0;
right: auto !important;
}
:root[tabsintitlebar] #titlebar .titlebar-buttonbox {
display: flex !important;
}
:root[tabsintitlebar] #titlebar .titlebar-button.titlebar-min,
:root[tabsintitlebar] #titlebar .titlebar-button.titlebar-max,
:root[tabsintitlebar] #titlebar .titlebar-button.titlebar-close {
display: flex !important;
}
:root[tabsintitlebar] #titlebar .titlebar-button.titlebar-close {
order: 1;
}
:root[tabsintitlebar] #titlebar .titlebar-button.titlebar-min {
order: 2;
}
:root[tabsintitlebar] #titlebar .titlebar-button.titlebar-max {
order: 3;
}
:root[tabsintitlebar]
#titlebar
#TabsToolbar
.titlebar-buttonbox-container:not(#hack) {
display: block !important;
}
:root[tabsintitlebar] .titlebar-buttonbox {
position: absolute;
top: -46px;
}
}
I can make a PR if this is something you want, I'm not sure if you have a variable for the #nav-bar height, which is where that -46px is coming from.
I also added another 3px to --gnome-navbar-csd-offset
as the button padding overlapped the maximize button on hover.
I wrote this in Nightly (127.0a1 (2024-04-30) (64-bit)) - I haven't tested it anywhere else
This seems to get the gnome style buttons workable/visible:
@media (-moz-platform: macos) { :root { --gnome-navbar-csd-offset: 120px; } :root[tabsintitlebar]:not([inFullscreen]) #nav-bar { padding-left: var(--gnome-navbar-csd-offset) !important; padding-right: 3px !important; } :root[tabsintitlebar] #titlebar .titlebar-buttonbox-container { left: 0; right: auto !important; } :root[tabsintitlebar] #titlebar .titlebar-buttonbox { display: flex !important; } :root[tabsintitlebar] #titlebar .titlebar-button.titlebar-min, :root[tabsintitlebar] #titlebar .titlebar-button.titlebar-max, :root[tabsintitlebar] #titlebar .titlebar-button.titlebar-close { display: flex !important; } :root[tabsintitlebar] #titlebar .titlebar-button.titlebar-close { order: 1; } :root[tabsintitlebar] #titlebar .titlebar-button.titlebar-min { order: 2; } :root[tabsintitlebar] #titlebar .titlebar-button.titlebar-max { order: 3; } :root[tabsintitlebar] #titlebar #TabsToolbar .titlebar-buttonbox-container:not(#hack) { display: block !important; } :root[tabsintitlebar] .titlebar-buttonbox { position: absolute; top: -46px; } }
I can make a PR if this is something you want, I'm not sure if you have a variable for the #nav-bar height, which is where that -46px is coming from.
I also added another 3px to
--gnome-navbar-csd-offset
as the button padding overlapped the maximize button on hover.I wrote this in Nightly (127.0a1 (2024-04-30) (64-bit)) - I haven't tested it anywhere else
I can confirm that this makes the buttons show up, but they all seem shifted too far to the right, and more importantly, I can't click on any of the tabs beneath the window buttons.