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: