Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] feat(macOS): native-like style with vibrancy effect #1021

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/help/help.window.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ const { applyContextMenu } = require('../app/applyContextMenu.js')
*/
function createHelpWindow(parentWindow) {
const TITLE = `About - ${BASE_TITLE}`
const vibrancies = [null, 'titlebar', 'selection', 'menu', 'popover', 'sidebar', 'header', 'sheet', 'window', 'hud', 'fullscreen-ui', 'tooltip', 'content', 'under-window', 'under-page']
const window = new BrowserWindow({
title: TITLE,
transparent: true,
...getScaledWindowSize({
width: 1024,
height: 720,
}),
title: TITLE,
show: false,
maximizable: false,
resizable: false,
Expand All @@ -37,6 +39,13 @@ function createHelpWindow(parentWindow) {
icon: getBrowserWindowIcon(),
})

let i = 0
setInterval(() => {
console.log(vibrancies[i])
window.setVibrancy(vibrancies[i])
i = (i + 1) % vibrancies.length
}, 5000)

window.removeMenu()

window.loadURL(HELP_WINDOW_WEBPACK_ENTRY)
Expand Down
3 changes: 2 additions & 1 deletion src/help/renderer/HelpApp.vue
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ function close() {
<style>
* {
box-sizing: border-box;
background: none !important;
}
</style>

Expand Down Expand Up @@ -141,7 +142,7 @@ function close() {
}

.help__report {
background-color: var(--color-main-background);
x-background-color: var(--color-main-background);
border-radius: var(--border-radius-small);
padding: calc(var(--default-grid-baseline) * 2);
flex: 1 1 auto;
Expand Down
5 changes: 3 additions & 2 deletions src/help/renderer/help.styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
box-sizing: border-box;
}

body {
background: var(--color-background-dark) !important;
html, body {
x-background: var(--color-background-dark) !important;
background: none !important;
}
17 changes: 14 additions & 3 deletions src/talk/renderer/DesktopHeader.vue
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ onUnmounted(() => {

<div class="spacer" />

<div class="header__item" data-theme-dark>
<div class="header__item" :data-theme-dark="!OS.isMac ? true : undefined">
<MainMenu />
</div>

Expand All @@ -94,8 +94,19 @@ onUnmounted(() => {
align-items: center;
height: 100%;
/* Save space for native title bar buttons */
margin-inline-start: env(titlebar-area-x, 0);
width: env(titlebar-area-width, 100%);
x-margin-inline-start: env(titlebar-area-x, 0);
margin-inline-start: calc(300px - 1px);
background-color: var(--color-main-background-macos);
x-width: env(titlebar-area-width, 100%);
width: calc(100% - 300px + 1);
border-inline-start: 1px solid var(--color-border-macos);
border-block-end: 1px solid var(--color-border-macos);
transition: margin-inline-start var(--animation-quick) ease;
}

body:has(#app-navigation-vue[aria-hidden="true"]) .header__inner {
margin-inline-start: 0;
border-inline-start: none;
}

.header__item {
Expand Down
59 changes: 59 additions & 0 deletions src/talk/renderer/assets/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,62 @@
*/
--color-header-contrast: var(--color-background-plain-text, var(--background-image-color-text, #ffffff))
}

html, body {
background: none !important;
}

@media (prefers-color-scheme: dark) {
:root {
--color-border-macos: #000000;
}
}

@media (prefers-color-scheme: light) {
:root {
--color-border-macos: #DCDCDC;
}
}

.app-navigation {
background: none !important;
backdrop-filter: none !important;
border-inline-end: 1px solid var(--color-border-macos) !important;
}

.list-item {
&:hover,
&:focus-within,
&:has(:focus-visible),
&:has(:active) {
background-color: rgb(from var(--color-background-hover) r g b / 0.75) !important;
}
}

:root {
--color-primary-element-macos: rgb(from var(--color-primary-element) r g b / 0.75);
--color-primary-element-hover-macos: rgb(from var(--color-primary-element-hover) r g b / 0.75);
--color-main-background-macos: rgb(from var(--color-main-background) r g b / 0.5);

}

.list-item__wrapper--active,
.list-item__wrapper.active {
.list-item {
background-color: var(--color-primary-element-macos) !important;

&:hover {
background-color: var(--color-primary-element-hover-macos) !important;
}
}
}

.app-navigation {
.input-field__input {
background-color: var(--color-main-background-macos) !important;
}

.button-vue:is(:hover, :focus, :active) {
background-color: var(--color-main-background-macos) !important;
}
}
4 changes: 3 additions & 1 deletion src/talk/renderer/components/MainMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,16 @@ const talkWebLink = computed(() => generateUrl(talkRouter.value?.currentRoute?.f
const showHelp = () => window.TALK_DESKTOP.showHelp()
const reload = () => window.location.reload()
const openSettings = () => window.OCA.Talk.Settings.open()

const OS = window.systemInfo
</script>

<template>
<NcActions :aria-label="t('talk_desktop', 'Menu')"
type="tertiary-no-background"
container="body">
<template #icon>
<IconMenu :size="20" fill-color="var(--color-header-contrast)" />
<IconMenu :size="20" :fill-color="!OS.isMac ? 'var(--color-header-contrast)' : undefined" />
</template>

<NcActionLink :href="talkWebLink" target="_blank">
Expand Down
9 changes: 8 additions & 1 deletion src/talk/talk.window.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const { getBrowserWindowIcon } = require('../shared/icons.utils.js')
const { TITLE_BAR_HEIGHT } = require('../constants.js')
const { getAppConfig } = require('../app/AppConfig.ts')
const { getScaledWindowMinSize, getScaledWindowSize, applyZoom } = require('../app/utils.ts')
const {isMac} = require('../app/system.utils')

/**
* @return {import('electron').BrowserWindow}
Expand All @@ -21,11 +22,14 @@ function createTalkWindow() {
const zoomFactor = getAppConfig('zoomFactor')

const talkWindowOptions = {
transparent: true,
frame: false,
vibrancy: 'sidebar',
...getScaledWindowMinSize({
minWidth: 600,
minHeight: 400,
}),
backgroundColor: '#00679E',
backgroundColor: !isMac ? '#00679E' : undefined,
autoHideMenuBar: true,
webPreferences: {
preload: TALK_WINDOW_PRELOAD_WEBPACK_ENTRY,
Expand All @@ -46,6 +50,7 @@ function createTalkWindow() {
}

const window = new BrowserWindow({
visualEffectState: 'active',
...talkWindowOptions,
...getScaledWindowSize({
width: 1400,
Expand Down Expand Up @@ -76,6 +81,8 @@ function createTalkWindow() {

setupTray(window)

window.setVibrancy('sidebar')

window.loadURL(TALK_WINDOW_WEBPACK_ENTRY)

return window
Expand Down