diff --git a/img/icons/icon-tray-mac-dark.png b/img/icons/icon-tray-mac-dark.png new file mode 100644 index 00000000..609afcab Binary files /dev/null and b/img/icons/icon-tray-mac-dark.png differ diff --git a/img/icons/icon-tray-mac-dark@2x.png b/img/icons/icon-tray-mac-dark@2x.png new file mode 100644 index 00000000..4f1423e2 Binary files /dev/null and b/img/icons/icon-tray-mac-dark@2x.png differ diff --git a/img/icons/icon-tray-mac-light.png b/img/icons/icon-tray-mac-light.png new file mode 100644 index 00000000..06c30627 Binary files /dev/null and b/img/icons/icon-tray-mac-light.png differ diff --git a/img/icons/icon-tray-mac-light@2x.png b/img/icons/icon-tray-mac-light@2x.png new file mode 100644 index 00000000..5bcf462a Binary files /dev/null and b/img/icons/icon-tray-mac-light@2x.png differ diff --git a/img/talk-icon-plain-dark.svg b/img/talk-icon-plain-dark.svg new file mode 100644 index 00000000..c2abbd0c --- /dev/null +++ b/img/talk-icon-plain-dark.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/img/talk-icon-plain.svg b/img/talk-icon-plain-light.svg similarity index 100% rename from img/talk-icon-plain.svg rename to img/talk-icon-plain-light.svg diff --git a/scripts/generate-icons.js b/scripts/generate-icons.js index c6b0d421..dfcfb30c 100644 --- a/scripts/generate-icons.js +++ b/scripts/generate-icons.js @@ -31,7 +31,8 @@ const icongen = require('icon-gen') async function generateIcons() { const originalPath = path.join(__dirname, '../img/talk-icon-rounded.svg') const originalMacPath = path.join(__dirname, '../img/talk-icon-mac-shadow.svg') - const originalMacTrayPath = path.join(__dirname, '../img/talk-icon-plain.svg') + const originalMacTrayLightPath = path.join(__dirname, '../img/talk-icon-plain-light.svg') + const originalMacTrayDarkPath = path.join(__dirname, '../img/talk-icon-plain-dark.svg') const outputPath = path.join(__dirname, '../img/icons') await icongen(originalPath, outputPath, { @@ -56,10 +57,16 @@ async function generateIcons() { }, }) - await icongen(originalMacTrayPath, outputPath, { - // Mac + // Tray icon - Mac + await icongen(originalMacTrayLightPath, outputPath, { + favicon: { + name: 'icon-tray-mac-light', + pngSizes: [16, 32], + }, + }) + await icongen(originalMacTrayDarkPath, outputPath, { favicon: { - name: 'icon-tray-mac', + name: 'icon-tray-mac-dark', pngSizes: [16, 32], }, }) @@ -72,9 +79,11 @@ async function generateIcons() { // Remove unused favicon await fs.unlink(path.join(outputPath, 'favicon.ico')) - // Rename icon-tray-mac16.png -> icon-tray-mac.png, icon-tray-mac32.png -> icon-tray-mac@2x.png - await fs.rename(path.join(outputPath, 'icon-tray-mac16.png'), path.join(outputPath, 'icon-tray-mac.png')) - await fs.rename(path.join(outputPath, 'icon-tray-mac32.png'), path.join(outputPath, 'icon-tray-mac@2x.png')) + // Rename icon-tray-mac-(light|dark)16.png -> icon-tray-mac-(light|dark).png, icon-tray-mac-(light|dark)32.png -> icon-tray-mac-(light|dark)@2x.png + await fs.rename(path.join(outputPath, 'icon-tray-mac-light16.png'), path.join(outputPath, 'icon-tray-mac-light.png')) + await fs.rename(path.join(outputPath, 'icon-tray-mac-light32.png'), path.join(outputPath, 'icon-tray-mac-light@2x.png')) + await fs.rename(path.join(outputPath, 'icon-tray-mac-dark16.png'), path.join(outputPath, 'icon-tray-mac-dark.png')) + await fs.rename(path.join(outputPath, 'icon-tray-mac-dark32.png'), path.join(outputPath, 'icon-tray-mac-dark@2x.png')) } generateIcons() diff --git a/src/shared/icons.utils.js b/src/shared/icons.utils.js index a5183fbb..2bfb20c2 100644 --- a/src/shared/icons.utils.js +++ b/src/shared/icons.utils.js @@ -19,13 +19,21 @@ * along with this program. If not, see . */ +const { nativeTheme } = require('electron') + const icons = { tray: { - darwin: require('../../img/icons/icon-tray-mac.png'), + darwin: { + light: require('../../img/icons/icon-tray-mac-light.png'), + dark: require('../../img/icons/icon-tray-mac-dark.png'), + }, // This property is not used, but import is required to add the icon to the bundle. // It will be used by electron internally - darwin_x2: require('../../img/icons/icon-tray-mac@2x.png'), + darwin_x2: { + light: require('../../img/icons/icon-tray-mac-light@2x.png'), + dark: require('../../img/icons/icon-tray-mac-dark@2x.png'), + }, win32: require('../../img/icons/icon.ico'), @@ -37,11 +45,12 @@ const icons = { * Get tray icon for the given platform * * @param {'darwin'|'win32'|'cygwin'|string} [platform] platform otherwise current process.platform is used + * @param {'light'|'dark'} [theme] theme for the darwin platform */ -function getTrayIcon(platform) { +function getTrayIcon(platform, theme) { switch (platform ?? process.platform) { case 'darwin': - return icons.tray.darwin + return nativeTheme.shouldUseDarkColors || theme === 'dark' ? icons.tray.darwin.dark : icons.tray.darwin.light case 'win32': return icons.tray.win32 default: