svg rework, add proposal for accent color (windows,linux), some bug fixes

This commit is contained in:
Oleh Polisan 2024-04-27 20:13:12 +03:00
parent 562095e6d9
commit b314f62f55
8 changed files with 41 additions and 21 deletions

View file

@ -48,6 +48,7 @@ export function createFirstLaunchTour() {
Settings.store.minimizeToTray = data.minimizeToTray;
Settings.store.discordBranch = data.discordBranch;
Settings.store.arRPC = data.richPresence;
Settings.store.tray = true;
if (data.autoStart) autoStart.enable();

View file

@ -7,7 +7,17 @@
if (process.platform === "linux") import("./venmic");
import { execFile } from "child_process";
import { app, BrowserWindow, clipboard, dialog, nativeImage, RelaunchOptions, session, shell } from "electron";
import {
app,
BrowserWindow,
clipboard,
dialog,
nativeImage,
RelaunchOptions,
session,
shell,
systemPreferences
} from "electron";
import { mkdirSync, readFileSync, watch } from "fs";
import { open, readFile } from "fs/promises";
import { release } from "os";
@ -156,3 +166,4 @@ watch(
handle(IpcEvents.SET_TRAY_ICON, (_, iconURI) => setTrayIcon(iconURI));
handle(IpcEvents.GET_TRAY_ICON, (_, iconName) => getTrayIconFile(iconName));
handle(IpcEvents.GET_SYSTEM_ACCENT_COLOR, () => `#${systemPreferences.getAccentColor?.() || ""}`);

View file

@ -26,7 +26,8 @@ export const VesktopNative = {
setBadgeCount: (count: number) => invoke<void>(IpcEvents.SET_BADGE_COUNT, count),
supportsWindowsTransparency: () => sendSync<boolean>(IpcEvents.SUPPORTS_WINDOWS_TRANSPARENCY),
setTrayIcon: (iconURI: string) => invoke<void>(IpcEvents.SET_TRAY_ICON, iconURI),
getTrayIcon: (iconName: string) => invoke<string>(IpcEvents.GET_TRAY_ICON, iconName)
getTrayIcon: (iconName: string) => invoke<string>(IpcEvents.GET_TRAY_ICON, iconName),
getAccentColor: () => invoke<string>(IpcEvents.GET_SYSTEM_ACCENT_COLOR)
},
autostart: {
isEnabled: () => sendSync<boolean>(IpcEvents.AUTOSTART_ENABLED),

View file

@ -9,7 +9,8 @@ import "./traySetting.css";
import { Margins } from "@vencord/types/utils";
import { findByCodeLazy } from "@vencord/types/webpack";
import { Forms } from "@vencord/types/webpack/common";
import { setCurrentState } from "renderer/patches/tray";
import { isInCall, setCurrentState } from "renderer/patches/tray";
import { isLinux } from "renderer/utils";
import { SettingsComponent } from "./Settings";
@ -20,6 +21,11 @@ const presets = [
"#F6BFAC" // Vesktop inpired
];
if (!isLinux)
VesktopNative.app.getAccentColor().then(color => {
if (color) presets.unshift(color);
});
export const TrayIconPicker: SettingsComponent = ({ settings }) => {
if (!settings.tray) return null;
return (
@ -30,11 +36,11 @@ export const TrayIconPicker: SettingsComponent = ({ settings }) => {
<Forms.FormText>Choose a color for your tray icon!</Forms.FormText>
</div>
<ColorPicker
color={parseInt(settings.trayColor ?? "#3DB77F", 16)}
color={parseInt(settings.trayColor ?? "3DB77F", 16)}
onChange={newColor => {
const hexColor = newColor.toString(16).padStart(6, "0");
settings.trayColor = hexColor;
setCurrentState();
if (isInCall) setCurrentState();
}}
showEyeDropper={false}
suggestedColors={presets}

View file

@ -11,7 +11,7 @@ import { FluxDispatcher, UserStore } from "@vencord/types/webpack/common";
const muteActions = findByPropsLazy("isSelfMute");
const deafActions = findByPropsLazy("isSelfDeaf");
var inCall = false;
export var isInCall = false;
const logger = new Logger("VesktopTrayIcon");
async function changeIconColor(iconName: string) {
@ -64,20 +64,20 @@ onceReady.then(() => {
});
FluxDispatcher.subscribe("AUDIO_TOGGLE_SELF_DEAF", () => {
if (inCall) setCurrentState();
if (isInCall) setCurrentState();
});
FluxDispatcher.subscribe("AUDIO_TOGGLE_SELF_MUTE", () => {
if (inCall) setCurrentState();
if (isInCall) setCurrentState();
});
FluxDispatcher.subscribe("RTC_CONNECTION_STATE", params => {
if (params.state === "RTC_CONNECTED") {
inCall = true;
isInCall = true;
setCurrentState();
} else if (params.state === "RTC_DISCONNECTED") {
VesktopNative.app.setTrayIcon("icon");
inCall = false;
isInCall = false;
}
});
});

View file

@ -52,5 +52,6 @@ export const enum IpcEvents {
CLIPBOARD_COPY_IMAGE = "VCD_CLIPBOARD_COPY_IMAGE",
SET_TRAY_ICON = "VCD_SET_TRAY_ICON",
GET_TRAY_ICON = "VCD_GET_TRAY_ICON"
GET_TRAY_ICON = "VCD_GET_TRAY_ICON",
GET_SYSTEM_ACCENT_COLOR = "VCD_GET_ACCENT_COLOR"
}

10
static/idle.svg Normal file → Executable file
View file

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
<circle cx="500" cy="500" r="400" stroke="#f6bfac" stroke-width="50" fill="#f6bfac" fill-opacity="0.2"/>
<path d="M 250 500 Q 250 250 500 250" fill="none" stroke="#f6bfac" stroke-width="50"/>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
<circle cx="500" cy="500" r="400" stroke="#f6bfac" stroke-width="50" fill="#f6bfac" fill-opacity="0.5"/>
<path d="M 255 600 Q 255 255 600 255" fill="none" stroke="#f6bfac" stroke-width="50"/>
</svg>

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 299 B

10
static/speaking.svg Normal file → Executable file
View file

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
<circle cx="500" cy="500" r="400" stroke="#f6bfac" stroke-width="50" fill="#f6bfac"/>
<path d="M 250 500 Q 250 250 500 250" fill="none" stroke="white" stroke-width="50"/>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
<circle cx="500" cy="500" r="400" stroke="#f6bfac" stroke-width="50" fill="#f6bfac"/>
<path d="M 255 600 Q 255 255 600 255" fill="none" stroke="white" stroke-width="50"/>
</svg>

Before

Width:  |  Height:  |  Size: 273 B

After

Width:  |  Height:  |  Size: 278 B