mirror of
https://github.com/lone-cloud/gerbil
synced 2026-06-04 04:04:44 -07:00
allow toggling off system monitoring in settings to minimize (0.1%) CPU usage
This commit is contained in:
parent
4176140b57
commit
eaf4a04ce1
3 changed files with 70 additions and 27 deletions
|
|
@ -20,43 +20,52 @@ export const StatusBar = ({ maxDataPoints = 60 }: StatusBarProps) => {
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
const [gpuMetrics, setGpuMetrics] = useState<GpuMetrics | null>(null);
|
const [gpuMetrics, setGpuMetrics] = useState<GpuMetrics | null>(null);
|
||||||
const { resolvedColorScheme: colorScheme } = usePreferencesStore();
|
const { resolvedColorScheme: colorScheme, systemMonitoringEnabled } =
|
||||||
|
usePreferencesStore();
|
||||||
const { isVisible, setVisible } = useNotepadStore();
|
const { isVisible, setVisible } = useNotepadStore();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let isMounted = true;
|
let isMounted = true;
|
||||||
|
let cleanupCpu: (() => void) | undefined;
|
||||||
|
let cleanupMemory: (() => void) | undefined;
|
||||||
|
let cleanupGpu: (() => void) | undefined;
|
||||||
|
let stopMonitoring: (() => void) | undefined;
|
||||||
|
|
||||||
const handleCpuMetrics = (metrics: CpuMetrics) => {
|
if (systemMonitoringEnabled) {
|
||||||
if (!isMounted) return;
|
const handleCpuMetrics = (metrics: CpuMetrics) => {
|
||||||
setCpuMetrics(metrics);
|
if (!isMounted) return;
|
||||||
};
|
setCpuMetrics(metrics);
|
||||||
|
};
|
||||||
|
|
||||||
const handleMemoryMetrics = (metrics: MemoryMetrics) => {
|
const handleMemoryMetrics = (metrics: MemoryMetrics) => {
|
||||||
if (!isMounted) return;
|
if (!isMounted) return;
|
||||||
setMemoryMetrics(metrics);
|
setMemoryMetrics(metrics);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleGpuMetrics = (metrics: GpuMetrics) => {
|
const handleGpuMetrics = (metrics: GpuMetrics) => {
|
||||||
if (!isMounted) return;
|
if (!isMounted) return;
|
||||||
setGpuMetrics(metrics);
|
setGpuMetrics(metrics);
|
||||||
};
|
};
|
||||||
|
|
||||||
const cleanupCpu =
|
cleanupCpu = window.electronAPI.monitoring.onCpuMetrics(handleCpuMetrics);
|
||||||
window.electronAPI.monitoring.onCpuMetrics(handleCpuMetrics);
|
cleanupMemory =
|
||||||
const cleanupMemory =
|
window.electronAPI.monitoring.onMemoryMetrics(handleMemoryMetrics);
|
||||||
window.electronAPI.monitoring.onMemoryMetrics(handleMemoryMetrics);
|
cleanupGpu = window.electronAPI.monitoring.onGpuMetrics(handleGpuMetrics);
|
||||||
const cleanupGpu =
|
stopMonitoring = window.electronAPI.monitoring.start();
|
||||||
window.electronAPI.monitoring.onGpuMetrics(handleGpuMetrics);
|
} else {
|
||||||
const stopMonitoring = window.electronAPI.monitoring.start();
|
setCpuMetrics(null);
|
||||||
|
setMemoryMetrics(null);
|
||||||
|
setGpuMetrics(null);
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
isMounted = false;
|
isMounted = false;
|
||||||
cleanupCpu();
|
cleanupCpu?.();
|
||||||
cleanupMemory();
|
cleanupMemory?.();
|
||||||
cleanupGpu();
|
cleanupGpu?.();
|
||||||
stopMonitoring();
|
stopMonitoring?.();
|
||||||
};
|
};
|
||||||
}, [maxDataPoints]);
|
}, [maxDataPoints, systemMonitoringEnabled]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AppShell.Footer
|
<AppShell.Footer
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import {
|
||||||
rem,
|
rem,
|
||||||
Box,
|
Box,
|
||||||
Anchor,
|
Anchor,
|
||||||
|
Switch,
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Folder, FolderOpen, Monitor, ExternalLink } from 'lucide-react';
|
import { Folder, FolderOpen, Monitor, ExternalLink } from 'lucide-react';
|
||||||
import type { FrontendPreference } from '@/types';
|
import type { FrontendPreference } from '@/types';
|
||||||
|
|
@ -37,7 +38,12 @@ export const GeneralTab = ({
|
||||||
isOnInterfaceScreen = false,
|
isOnInterfaceScreen = false,
|
||||||
}: GeneralTabProps) => {
|
}: GeneralTabProps) => {
|
||||||
const [installDir, setInstallDir] = useState('');
|
const [installDir, setInstallDir] = useState('');
|
||||||
const { frontendPreference, setFrontendPreference } = usePreferencesStore();
|
const {
|
||||||
|
frontendPreference,
|
||||||
|
setFrontendPreference,
|
||||||
|
systemMonitoringEnabled,
|
||||||
|
setSystemMonitoringEnabled,
|
||||||
|
} = usePreferencesStore();
|
||||||
const [frontendRequirements, setFrontendRequirements] = useState<
|
const [frontendRequirements, setFrontendRequirements] = useState<
|
||||||
Map<string, boolean>
|
Map<string, boolean>
|
||||||
>(new Map());
|
>(new Map());
|
||||||
|
|
@ -330,6 +336,22 @@ export const GeneralTab = ({
|
||||||
})()}
|
})()}
|
||||||
</Box>
|
</Box>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<Text fw={500} mb="sm">
|
||||||
|
System Performance
|
||||||
|
</Text>
|
||||||
|
<Text size="sm" c="dimmed" mb="md">
|
||||||
|
Monitor CPU, memory, and GPU usage in the status bar
|
||||||
|
</Text>
|
||||||
|
<Switch
|
||||||
|
label="Show system metrics"
|
||||||
|
checked={systemMonitoringEnabled}
|
||||||
|
onChange={(event) =>
|
||||||
|
setSystemMonitoringEnabled(event.currentTarget.checked)
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</Stack>
|
</Stack>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,11 @@ interface PreferencesStore {
|
||||||
frontendPreference: FrontendPreference;
|
frontendPreference: FrontendPreference;
|
||||||
rawColorScheme: MantineColorScheme;
|
rawColorScheme: MantineColorScheme;
|
||||||
resolvedColorScheme: ResolvedColorScheme;
|
resolvedColorScheme: ResolvedColorScheme;
|
||||||
|
systemMonitoringEnabled: boolean;
|
||||||
|
|
||||||
setFrontendPreference: (preference: FrontendPreference) => void;
|
setFrontendPreference: (preference: FrontendPreference) => void;
|
||||||
setColorScheme: (scheme: MantineColorScheme) => Promise<void>;
|
setColorScheme: (scheme: MantineColorScheme) => Promise<void>;
|
||||||
|
setSystemMonitoringEnabled: (enabled: boolean) => void;
|
||||||
loadPreferences: () => Promise<void>;
|
loadPreferences: () => Promise<void>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -27,12 +29,18 @@ export const usePreferencesStore = create<PreferencesStore>((set) => ({
|
||||||
frontendPreference: 'koboldcpp',
|
frontendPreference: 'koboldcpp',
|
||||||
rawColorScheme: 'auto',
|
rawColorScheme: 'auto',
|
||||||
resolvedColorScheme: 'light',
|
resolvedColorScheme: 'light',
|
||||||
|
systemMonitoringEnabled: true,
|
||||||
|
|
||||||
setFrontendPreference: (preference: FrontendPreference) => {
|
setFrontendPreference: (preference: FrontendPreference) => {
|
||||||
set({ frontendPreference: preference });
|
set({ frontendPreference: preference });
|
||||||
window.electronAPI.config.set('frontendPreference', preference);
|
window.electronAPI.config.set('frontendPreference', preference);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setSystemMonitoringEnabled: (enabled: boolean) => {
|
||||||
|
set({ systemMonitoringEnabled: enabled });
|
||||||
|
window.electronAPI.config.set('systemMonitoringEnabled', enabled);
|
||||||
|
},
|
||||||
|
|
||||||
setColorScheme: async (scheme: MantineColorScheme) => {
|
setColorScheme: async (scheme: MantineColorScheme) => {
|
||||||
set({
|
set({
|
||||||
rawColorScheme: scheme,
|
rawColorScheme: scheme,
|
||||||
|
|
@ -42,17 +50,21 @@ export const usePreferencesStore = create<PreferencesStore>((set) => ({
|
||||||
},
|
},
|
||||||
|
|
||||||
loadPreferences: async () => {
|
loadPreferences: async () => {
|
||||||
const [frontendPref, colorScheme] = await Promise.all([
|
const [frontendPref, colorScheme, systemMonitoring] = await Promise.all([
|
||||||
window.electronAPI.config.get(
|
window.electronAPI.config.get(
|
||||||
'frontendPreference'
|
'frontendPreference'
|
||||||
) as Promise<FrontendPreference>,
|
) as Promise<FrontendPreference>,
|
||||||
window.electronAPI.app.getColorScheme(),
|
window.electronAPI.app.getColorScheme(),
|
||||||
|
window.electronAPI.config.get(
|
||||||
|
'systemMonitoringEnabled'
|
||||||
|
) as Promise<boolean>,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
set({
|
set({
|
||||||
frontendPreference: frontendPref || 'koboldcpp',
|
frontendPreference: frontendPref || 'koboldcpp',
|
||||||
rawColorScheme: colorScheme || 'auto',
|
rawColorScheme: colorScheme || 'auto',
|
||||||
resolvedColorScheme: resolveColorScheme(colorScheme || 'auto'),
|
resolvedColorScheme: resolveColorScheme(colorScheme || 'auto'),
|
||||||
|
systemMonitoringEnabled: systemMonitoring ?? true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue