mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-02-05 18:41:10 +08:00
* feat: add Linux system title bar setting option Add a setting in Display Settings that allows Linux users to switch between custom title bar (frameless window with WindowControls) and native system title bar. The setting requires app restart to take effect since Electron's frame option cannot be changed at runtime. - Add useSystemTitleBar config key and getter/setter in ConfigManager - Add IPC channel and handler for setting persistence - Add Redux state and action for useSystemTitleBar - Add UI toggle in DisplaySettings (Linux only) - Hide WindowControls when system title bar is enabled on Linux - Modify WindowService to check setting when creating window on Linux - Add translations for all supported locales 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: improve window controls positioning in left navbar layout Move WindowControls inside NavbarContainer as a flex item instead of using fixed positioning. This ensures the window controls are properly positioned adjacent to the navbar content when using the left navbar layout. - Remove position: fixed from WindowControlsContainer styling - Include WindowControls as last child of NavbarContainer - Remove extra padding-right from NavbarRight since controls are now in the flex layout 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: remove padding-right from TabsBar to align window controls to edge Remove the 8px padding-right for Windows/Linux in TabsBar that was causing window controls to not be flush against the window edge. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: add right padding for settings button when Linux uses system title bar * fix: restore NavbarRight paddingRight to 15px for consistent spacing Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
400 lines
15 KiB
TypeScript
400 lines
15 KiB
TypeScript
export enum IpcChannel {
|
|
App_GetCacheSize = 'app:get-cache-size',
|
|
App_ClearCache = 'app:clear-cache',
|
|
App_SetLaunchOnBoot = 'app:set-launch-on-boot',
|
|
App_SetLanguage = 'app:set-language',
|
|
App_SetEnableSpellCheck = 'app:set-enable-spell-check',
|
|
App_SetSpellCheckLanguages = 'app:set-spell-check-languages',
|
|
App_CheckForUpdate = 'app:check-for-update',
|
|
App_QuitAndInstall = 'app:quit-and-install',
|
|
App_Reload = 'app:reload',
|
|
App_Quit = 'app:quit',
|
|
App_Info = 'app:info',
|
|
App_Proxy = 'app:proxy',
|
|
App_SetLaunchToTray = 'app:set-launch-to-tray',
|
|
App_SetTray = 'app:set-tray',
|
|
App_SetTrayOnClose = 'app:set-tray-on-close',
|
|
App_SetTheme = 'app:set-theme',
|
|
App_SetAutoUpdate = 'app:set-auto-update',
|
|
App_SetTestPlan = 'app:set-test-plan',
|
|
App_SetTestChannel = 'app:set-test-channel',
|
|
App_HandleZoomFactor = 'app:handle-zoom-factor',
|
|
App_Select = 'app:select',
|
|
App_HasWritePermission = 'app:has-write-permission',
|
|
App_ResolvePath = 'app:resolve-path',
|
|
App_IsPathInside = 'app:is-path-inside',
|
|
App_Copy = 'app:copy',
|
|
App_SetStopQuitApp = 'app:set-stop-quit-app',
|
|
App_SetAppDataPath = 'app:set-app-data-path',
|
|
App_GetDataPathFromArgs = 'app:get-data-path-from-args',
|
|
App_FlushAppData = 'app:flush-app-data',
|
|
App_IsNotEmptyDir = 'app:is-not-empty-dir',
|
|
App_RelaunchApp = 'app:relaunch-app',
|
|
App_IsBinaryExist = 'app:is-binary-exist',
|
|
App_GetBinaryPath = 'app:get-binary-path',
|
|
App_InstallUvBinary = 'app:install-uv-binary',
|
|
App_InstallBunBinary = 'app:install-bun-binary',
|
|
App_InstallOvmsBinary = 'app:install-ovms-binary',
|
|
App_LogToMain = 'app:log-to-main',
|
|
App_SaveData = 'app:save-data',
|
|
App_GetDiskInfo = 'app:get-disk-info',
|
|
App_SetFullScreen = 'app:set-full-screen',
|
|
App_IsFullScreen = 'app:is-full-screen',
|
|
App_GetSystemFonts = 'app:get-system-fonts',
|
|
APP_CrashRenderProcess = 'app:crash-render-process',
|
|
|
|
App_MacIsProcessTrusted = 'app:mac-is-process-trusted',
|
|
App_MacRequestProcessTrust = 'app:mac-request-process-trust',
|
|
|
|
App_QuoteToMain = 'app:quote-to-main',
|
|
App_SetDisableHardwareAcceleration = 'app:set-disable-hardware-acceleration',
|
|
App_SetUseSystemTitleBar = 'app:set-use-system-title-bar',
|
|
|
|
Notification_Send = 'notification:send',
|
|
Notification_OnClick = 'notification:on-click',
|
|
|
|
Webview_SetOpenLinkExternal = 'webview:set-open-link-external',
|
|
Webview_SetSpellCheckEnabled = 'webview:set-spell-check-enabled',
|
|
Webview_SearchHotkey = 'webview:search-hotkey',
|
|
Webview_PrintToPDF = 'webview:print-to-pdf',
|
|
Webview_SaveAsHTML = 'webview:save-as-html',
|
|
|
|
// Open
|
|
Open_Path = 'open:path',
|
|
Open_Website = 'open:website',
|
|
|
|
Minapp = 'minapp',
|
|
|
|
Config_Set = 'config:set',
|
|
Config_Get = 'config:get',
|
|
|
|
MiniWindow_Show = 'miniwindow:show',
|
|
MiniWindow_Hide = 'miniwindow:hide',
|
|
MiniWindow_Close = 'miniwindow:close',
|
|
MiniWindow_Toggle = 'miniwindow:toggle',
|
|
MiniWindow_SetPin = 'miniwindow:set-pin',
|
|
|
|
// Mcp
|
|
Mcp_AddServer = 'mcp:add-server',
|
|
Mcp_RemoveServer = 'mcp:remove-server',
|
|
Mcp_RestartServer = 'mcp:restart-server',
|
|
Mcp_StopServer = 'mcp:stop-server',
|
|
Mcp_ListTools = 'mcp:list-tools',
|
|
Mcp_CallTool = 'mcp:call-tool',
|
|
Mcp_ListPrompts = 'mcp:list-prompts',
|
|
Mcp_GetPrompt = 'mcp:get-prompt',
|
|
Mcp_ListResources = 'mcp:list-resources',
|
|
Mcp_GetResource = 'mcp:get-resource',
|
|
Mcp_GetInstallInfo = 'mcp:get-install-info',
|
|
Mcp_ServersChanged = 'mcp:servers-changed',
|
|
Mcp_ServersUpdated = 'mcp:servers-updated',
|
|
Mcp_CheckConnectivity = 'mcp:check-connectivity',
|
|
Mcp_UploadDxt = 'mcp:upload-dxt',
|
|
Mcp_AbortTool = 'mcp:abort-tool',
|
|
Mcp_GetServerVersion = 'mcp:get-server-version',
|
|
Mcp_Progress = 'mcp:progress',
|
|
Mcp_GetServerLogs = 'mcp:get-server-logs',
|
|
Mcp_ServerLog = 'mcp:server-log',
|
|
// Python
|
|
Python_Execute = 'python:execute',
|
|
|
|
// agent messages
|
|
AgentMessage_PersistExchange = 'agent-message:persist-exchange',
|
|
AgentMessage_GetHistory = 'agent-message:get-history',
|
|
|
|
AgentToolPermission_Request = 'agent-tool-permission:request',
|
|
AgentToolPermission_Response = 'agent-tool-permission:response',
|
|
AgentToolPermission_Result = 'agent-tool-permission:result',
|
|
|
|
//copilot
|
|
Copilot_GetAuthMessage = 'copilot:get-auth-message',
|
|
Copilot_GetCopilotToken = 'copilot:get-copilot-token',
|
|
Copilot_SaveCopilotToken = 'copilot:save-copilot-token',
|
|
Copilot_GetToken = 'copilot:get-token',
|
|
Copilot_Logout = 'copilot:logout',
|
|
Copilot_GetUser = 'copilot:get-user',
|
|
|
|
// obsidian
|
|
Obsidian_GetVaults = 'obsidian:get-vaults',
|
|
Obsidian_GetFiles = 'obsidian:get-files',
|
|
|
|
// nutstore
|
|
Nutstore_GetSsoUrl = 'nutstore:get-sso-url',
|
|
Nutstore_DecryptToken = 'nutstore:decrypt-token',
|
|
Nutstore_GetDirectoryContents = 'nutstore:get-directory-contents',
|
|
|
|
//aes
|
|
Aes_Encrypt = 'aes:encrypt',
|
|
Aes_Decrypt = 'aes:decrypt',
|
|
|
|
Gemini_UploadFile = 'gemini:upload-file',
|
|
Gemini_Base64File = 'gemini:base64-file',
|
|
Gemini_RetrieveFile = 'gemini:retrieve-file',
|
|
Gemini_ListFiles = 'gemini:list-files',
|
|
Gemini_DeleteFile = 'gemini:delete-file',
|
|
|
|
// VertexAI
|
|
VertexAI_GetAuthHeaders = 'vertexai:get-auth-headers',
|
|
VertexAI_GetAccessToken = 'vertexai:get-access-token',
|
|
VertexAI_ClearAuthCache = 'vertexai:clear-auth-cache',
|
|
|
|
Windows_ResetMinimumSize = 'window:reset-minimum-size',
|
|
Windows_SetMinimumSize = 'window:set-minimum-size',
|
|
Windows_Resize = 'window:resize',
|
|
Windows_GetSize = 'window:get-size',
|
|
Windows_Minimize = 'window:minimize',
|
|
Windows_Maximize = 'window:maximize',
|
|
Windows_Unmaximize = 'window:unmaximize',
|
|
Windows_Close = 'window:close',
|
|
Windows_IsMaximized = 'window:is-maximized',
|
|
Windows_MaximizedChanged = 'window:maximized-changed',
|
|
Windows_NavigateToAbout = 'window:navigate-to-about',
|
|
|
|
KnowledgeBase_Create = 'knowledge-base:create',
|
|
KnowledgeBase_Reset = 'knowledge-base:reset',
|
|
KnowledgeBase_Delete = 'knowledge-base:delete',
|
|
KnowledgeBase_Add = 'knowledge-base:add',
|
|
KnowledgeBase_Remove = 'knowledge-base:remove',
|
|
KnowledgeBase_Search = 'knowledge-base:search',
|
|
KnowledgeBase_Rerank = 'knowledge-base:rerank',
|
|
KnowledgeBase_Check_Quota = 'knowledge-base:check-quota',
|
|
|
|
//file
|
|
File_Open = 'file:open',
|
|
File_OpenPath = 'file:openPath',
|
|
File_Save = 'file:save',
|
|
File_Select = 'file:select',
|
|
File_Upload = 'file:upload',
|
|
File_Clear = 'file:clear',
|
|
File_Read = 'file:read',
|
|
File_ReadExternal = 'file:readExternal',
|
|
File_Delete = 'file:delete',
|
|
File_DeleteDir = 'file:deleteDir',
|
|
File_DeleteExternalFile = 'file:deleteExternalFile',
|
|
File_DeleteExternalDir = 'file:deleteExternalDir',
|
|
File_Move = 'file:move',
|
|
File_MoveDir = 'file:moveDir',
|
|
File_Rename = 'file:rename',
|
|
File_RenameDir = 'file:renameDir',
|
|
File_Get = 'file:get',
|
|
File_SelectFolder = 'file:selectFolder',
|
|
File_CreateTempFile = 'file:createTempFile',
|
|
File_Mkdir = 'file:mkdir',
|
|
File_Write = 'file:write',
|
|
File_WriteWithId = 'file:writeWithId',
|
|
File_SaveImage = 'file:saveImage',
|
|
File_Base64Image = 'file:base64Image',
|
|
File_SaveBase64Image = 'file:saveBase64Image',
|
|
File_SavePastedImage = 'file:savePastedImage',
|
|
File_Download = 'file:download',
|
|
File_Copy = 'file:copy',
|
|
File_BinaryImage = 'file:binaryImage',
|
|
File_Base64File = 'file:base64File',
|
|
File_GetPdfInfo = 'file:getPdfInfo',
|
|
Fs_Read = 'fs:read',
|
|
Fs_ReadText = 'fs:readText',
|
|
File_OpenWithRelativePath = 'file:openWithRelativePath',
|
|
File_IsTextFile = 'file:isTextFile',
|
|
File_ListDirectory = 'file:listDirectory',
|
|
File_GetDirectoryStructure = 'file:getDirectoryStructure',
|
|
File_CheckFileName = 'file:checkFileName',
|
|
File_ValidateNotesDirectory = 'file:validateNotesDirectory',
|
|
File_StartWatcher = 'file:startWatcher',
|
|
File_StopWatcher = 'file:stopWatcher',
|
|
File_PauseWatcher = 'file:pauseWatcher',
|
|
File_ResumeWatcher = 'file:resumeWatcher',
|
|
File_BatchUploadMarkdown = 'file:batchUploadMarkdown',
|
|
File_ShowInFolder = 'file:showInFolder',
|
|
|
|
// file service
|
|
FileService_Upload = 'file-service:upload',
|
|
FileService_List = 'file-service:list',
|
|
FileService_Delete = 'file-service:delete',
|
|
FileService_Retrieve = 'file-service:retrieve',
|
|
|
|
Export_Word = 'export:word',
|
|
|
|
Shortcuts_Update = 'shortcuts:update',
|
|
|
|
// backup
|
|
Backup_Backup = 'backup:backup',
|
|
Backup_Restore = 'backup:restore',
|
|
Backup_BackupToWebdav = 'backup:backupToWebdav',
|
|
Backup_RestoreFromWebdav = 'backup:restoreFromWebdav',
|
|
Backup_ListWebdavFiles = 'backup:listWebdavFiles',
|
|
Backup_CheckConnection = 'backup:checkConnection',
|
|
Backup_CreateDirectory = 'backup:createDirectory',
|
|
Backup_DeleteWebdavFile = 'backup:deleteWebdavFile',
|
|
Backup_BackupToLocalDir = 'backup:backupToLocalDir',
|
|
Backup_RestoreFromLocalBackup = 'backup:restoreFromLocalBackup',
|
|
Backup_ListLocalBackupFiles = 'backup:listLocalBackupFiles',
|
|
Backup_DeleteLocalBackupFile = 'backup:deleteLocalBackupFile',
|
|
Backup_BackupToS3 = 'backup:backupToS3',
|
|
Backup_RestoreFromS3 = 'backup:restoreFromS3',
|
|
Backup_ListS3Files = 'backup:listS3Files',
|
|
Backup_DeleteS3File = 'backup:deleteS3File',
|
|
Backup_CheckS3Connection = 'backup:checkS3Connection',
|
|
Backup_CreateLanTransferBackup = 'backup:createLanTransferBackup',
|
|
Backup_DeleteTempBackup = 'backup:deleteTempBackup',
|
|
|
|
// zip
|
|
Zip_Compress = 'zip:compress',
|
|
Zip_Decompress = 'zip:decompress',
|
|
|
|
// system
|
|
System_GetDeviceType = 'system:getDeviceType',
|
|
System_GetHostname = 'system:getHostname',
|
|
System_GetCpuName = 'system:getCpuName',
|
|
System_CheckGitBash = 'system:checkGitBash',
|
|
System_GetGitBashPath = 'system:getGitBashPath',
|
|
System_GetGitBashPathInfo = 'system:getGitBashPathInfo',
|
|
System_SetGitBashPath = 'system:setGitBashPath',
|
|
|
|
// DevTools
|
|
System_ToggleDevTools = 'system:toggleDevTools',
|
|
|
|
// events
|
|
BackupProgress = 'backup-progress',
|
|
ThemeUpdated = 'theme:updated',
|
|
RestoreProgress = 'restore-progress',
|
|
UpdateError = 'update-error',
|
|
UpdateAvailable = 'update-available',
|
|
UpdateNotAvailable = 'update-not-available',
|
|
DownloadProgress = 'download-progress',
|
|
UpdateDownloaded = 'update-downloaded',
|
|
DownloadUpdate = 'download-update',
|
|
|
|
DirectoryProcessingPercent = 'directory-processing-percent',
|
|
|
|
FullscreenStatusChanged = 'fullscreen-status-changed',
|
|
|
|
HideMiniWindow = 'hide-mini-window',
|
|
ShowMiniWindow = 'show-mini-window',
|
|
|
|
ReduxStateChange = 'redux-state-change',
|
|
ReduxStoreReady = 'redux-store-ready',
|
|
|
|
// Search Window
|
|
SearchWindow_Open = 'search-window:open',
|
|
SearchWindow_Close = 'search-window:close',
|
|
SearchWindow_OpenUrl = 'search-window:open-url',
|
|
|
|
//Store Sync
|
|
StoreSync_Subscribe = 'store-sync:subscribe',
|
|
StoreSync_Unsubscribe = 'store-sync:unsubscribe',
|
|
StoreSync_OnUpdate = 'store-sync:on-update',
|
|
StoreSync_BroadcastSync = 'store-sync:broadcast-sync',
|
|
|
|
// Provider
|
|
Provider_AddKey = 'provider:add-key',
|
|
|
|
//Selection Assistant
|
|
Selection_TextSelected = 'selection:text-selected',
|
|
Selection_ToolbarHide = 'selection:toolbar-hide',
|
|
Selection_ToolbarVisibilityChange = 'selection:toolbar-visibility-change',
|
|
Selection_ToolbarDetermineSize = 'selection:toolbar-determine-size',
|
|
Selection_WriteToClipboard = 'selection:write-to-clipboard',
|
|
Selection_SetEnabled = 'selection:set-enabled',
|
|
Selection_SetTriggerMode = 'selection:set-trigger-mode',
|
|
Selection_SetFilterMode = 'selection:set-filter-mode',
|
|
Selection_SetFilterList = 'selection:set-filter-list',
|
|
Selection_SetFollowToolbar = 'selection:set-follow-toolbar',
|
|
Selection_SetRemeberWinSize = 'selection:set-remeber-win-size',
|
|
Selection_ActionWindowClose = 'selection:action-window-close',
|
|
Selection_ActionWindowMinimize = 'selection:action-window-minimize',
|
|
Selection_ActionWindowPin = 'selection:action-window-pin',
|
|
// [Windows only] Electron bug workaround - can be removed once https://github.com/electron/electron/issues/48554 is fixed
|
|
Selection_ActionWindowResize = 'selection:action-window-resize',
|
|
Selection_ProcessAction = 'selection:process-action',
|
|
Selection_UpdateActionData = 'selection:update-action-data',
|
|
|
|
// Memory
|
|
Memory_Add = 'memory:add',
|
|
Memory_Search = 'memory:search',
|
|
Memory_List = 'memory:list',
|
|
Memory_Delete = 'memory:delete',
|
|
Memory_Update = 'memory:update',
|
|
Memory_Get = 'memory:get',
|
|
Memory_SetConfig = 'memory:set-config',
|
|
Memory_DeleteUser = 'memory:delete-user',
|
|
Memory_DeleteAllMemoriesForUser = 'memory:delete-all-memories-for-user',
|
|
Memory_GetUsersList = 'memory:get-users-list',
|
|
Memory_MigrateMemoryDb = 'memory:migrate-memory-db',
|
|
|
|
// TRACE
|
|
TRACE_SAVE_DATA = 'trace:saveData',
|
|
TRACE_GET_DATA = 'trace:getData',
|
|
TRACE_SAVE_ENTITY = 'trace:saveEntity',
|
|
TRACE_GET_ENTITY = 'trace:getEntity',
|
|
TRACE_BIND_TOPIC = 'trace:bindTopic',
|
|
TRACE_CLEAN_TOPIC = 'trace:cleanTopic',
|
|
TRACE_TOKEN_USAGE = 'trace:tokenUsage',
|
|
TRACE_CLEAN_HISTORY = 'trace:cleanHistory',
|
|
TRACE_OPEN_WINDOW = 'trace:openWindow',
|
|
TRACE_SET_TITLE = 'trace:setTitle',
|
|
TRACE_ADD_END_MESSAGE = 'trace:addEndMessage',
|
|
TRACE_CLEAN_LOCAL_DATA = 'trace:cleanLocalData',
|
|
TRACE_ADD_STREAM_MESSAGE = 'trace:addStreamMessage',
|
|
|
|
// API Server
|
|
ApiServer_Start = 'api-server:start',
|
|
ApiServer_Stop = 'api-server:stop',
|
|
ApiServer_Restart = 'api-server:restart',
|
|
ApiServer_GetStatus = 'api-server:get-status',
|
|
ApiServer_Ready = 'api-server:ready',
|
|
// NOTE: This api is not be used.
|
|
ApiServer_GetConfig = 'api-server:get-config',
|
|
|
|
// Anthropic OAuth
|
|
Anthropic_StartOAuthFlow = 'anthropic:start-oauth-flow',
|
|
Anthropic_CompleteOAuthWithCode = 'anthropic:complete-oauth-with-code',
|
|
Anthropic_CancelOAuthFlow = 'anthropic:cancel-oauth-flow',
|
|
Anthropic_GetAccessToken = 'anthropic:get-access-token',
|
|
Anthropic_HasCredentials = 'anthropic:has-credentials',
|
|
Anthropic_ClearCredentials = 'anthropic:clear-credentials',
|
|
|
|
// CodeTools
|
|
CodeTools_Run = 'code-tools:run',
|
|
CodeTools_GetAvailableTerminals = 'code-tools:get-available-terminals',
|
|
CodeTools_SetCustomTerminalPath = 'code-tools:set-custom-terminal-path',
|
|
CodeTools_GetCustomTerminalPath = 'code-tools:get-custom-terminal-path',
|
|
CodeTools_RemoveCustomTerminalPath = 'code-tools:remove-custom-terminal-path',
|
|
|
|
// OCR
|
|
OCR_ocr = 'ocr:ocr',
|
|
OCR_ListProviders = 'ocr:list-providers',
|
|
|
|
// OVMS
|
|
Ovms_IsSupported = 'ovms:is-supported',
|
|
Ovms_AddModel = 'ovms:add-model',
|
|
Ovms_StopAddModel = 'ovms:stop-addmodel',
|
|
Ovms_GetModels = 'ovms:get-models',
|
|
Ovms_IsRunning = 'ovms:is-running',
|
|
Ovms_GetStatus = 'ovms:get-status',
|
|
Ovms_RunOVMS = 'ovms:run-ovms',
|
|
Ovms_StopOVMS = 'ovms:stop-ovms',
|
|
|
|
// CherryAI
|
|
Cherryai_GetSignature = 'cherryai:get-signature',
|
|
|
|
// Claude Code Plugins
|
|
ClaudeCodePlugin_ListAvailable = 'claudeCodePlugin:list-available',
|
|
ClaudeCodePlugin_Install = 'claudeCodePlugin:install',
|
|
ClaudeCodePlugin_Uninstall = 'claudeCodePlugin:uninstall',
|
|
ClaudeCodePlugin_ListInstalled = 'claudeCodePlugin:list-installed',
|
|
ClaudeCodePlugin_InvalidateCache = 'claudeCodePlugin:invalidate-cache',
|
|
ClaudeCodePlugin_ReadContent = 'claudeCodePlugin:read-content',
|
|
ClaudeCodePlugin_WriteContent = 'claudeCodePlugin:write-content',
|
|
|
|
// Local Transfer
|
|
LocalTransfer_ListServices = 'local-transfer:list',
|
|
LocalTransfer_StartScan = 'local-transfer:start-scan',
|
|
LocalTransfer_StopScan = 'local-transfer:stop-scan',
|
|
LocalTransfer_ServicesUpdated = 'local-transfer:services-updated',
|
|
LocalTransfer_Connect = 'local-transfer:connect',
|
|
LocalTransfer_Disconnect = 'local-transfer:disconnect',
|
|
LocalTransfer_ClientEvent = 'local-transfer:client-event',
|
|
LocalTransfer_SendFile = 'local-transfer:send-file',
|
|
LocalTransfer_CancelTransfer = 'local-transfer:cancel-transfer'
|
|
}
|