lobehub/desktop

Guide de développement desktop Electron — gestionnaires IPC, contrôleurs, scripts de préchargement, gestion des fenêtres/menus.

Qu'est-ce que desktop ?

Ce skill fournit un guide structuré et détaillé pour le développement d'applications desktop avec Electron, en se concentrant sur les composants clés : les gestionnaires IPC (Inter-Process Communication), les contrôleurs, les scripts de préchargement (preload scripts) ainsi que la gestion avancée des fenêtres et des menus. Il est utile pour les développeurs travaillant sur l'interface utilisateur d'applications de bureau souhaitant comprendre comment organiser et sécuriser la communication entre le processus principal (main process) et les processus de rendu (renderer processes) via IPC, ou comment configurer des fenêtres multi-écrans, des menus contextuels et des menus d'application. Le skill s'applique aux plateformes Windows, macOS et Linux supportées par Electron. Il est généralement utilisé avec des agents IA (comme Claude Code, Cursor, ou Codex) ou directement avec l'API Electron pour implémenter des patterns fiables de développement desktop. En suivant ses recommandations, vous pouvez éviter des erreurs courantes de sécurité et de performance liées à Electron tout en maintenant une architecture claire et maintenable.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lobehub/lobehub/tree/main/skills/desktop

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait desktop ?

Guide de développement desktop Electron — gestionnaires IPC, contrôleurs, scripts de préchargement, gestion des fenêtres/menus.

Ce guide couvre les aspects fondamentaux du développement d'applications de bureau avec Electron, en mettant l'accent sur les bonnes pratiques pour la communication inter-processus (IPC), la séparation des responsabilités entre processus principal et de rendu, et la gestion des composants d'interface natifs.

Concepts clés

  • IPC Handlers : Définition et enregistrement des canaux de communication sécurisés entre le processus principal et les processus de rendu.
  • Controllers : Logique métier côté processus principal, organisée en modules réutilisables.
  • Preload Scripts : Scripts injectés dans les pages web pour exposer des API sécurisées au processus de rendu via contextBridge.
  • Window Management : Création, configuration et gestion des fenêtres BrowserWindow, y compris les paramètres multi-écrans.
  • Menu Management : Construction de menus d'application et contextuels avec Menu et MenuItem.

Structure recommandée

project/
├── main/               # Processus principal
│   ├── ipc/            # Gestionnaires IPC
│   ├── controllers/    # Contrôleurs métier
│   └── windows/        # Gestion des fenêtres
├── preload/            # Scripts de préchargement
├── renderer/           # Processus de rendu (interface utilisateur)
└── package.json

Bonnes pratiques

  1. Sécurité : Utilisez toujours contextBridge dans le preload pour exposer des API. Évitez nodeIntegration: true.
  2. Séparation des responsabilités : Les contrôleurs ne doivent pas dépendre directement d'Electron. Utilisez l'injection de dépendances.
  3. Gestion des erreurs : Gérez les erreurs IPC dans les deux sens (request/réponse).
  4. Performance : Évitez d'exposer trop de fonctionnalités dans le preload. Minimisez les appels IPC fréquents.

Exemple de handler IPC

// main/ipc/hello.js
const { ipcMain } = require('electron');

ipcMain.handle('greet:hello', async (event, name) => {
  return `Bonjour, ${name} !`;
});

Exemple de preload script

// preload/index.js
const { contextBridge, ipcRenderer } = require('electron');

contextBridge.exposeInMainWorld('api', {
  greet: (name) => ipcRenderer.invoke('greet:hello', name)
});

Ressources

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

lobehub/add-provider-doc

Add documentation for a new AI provider — usage docs, env vars, Docker config, image resources.

lobehub/add-setting-env

Add server-side environment variables that control default values for user settings.

lobehub/debug

Debug package usage guide. Use when adding debug logging, understanding log namespaces, or implementing debugging features. Triggers on debug logging requests or logging implementation.

lobehub/drizzle

LobeHub Drizzle ORM schema and query style. Use for pgTable schemas, indexes, joins, inferred types, db.select/db.query, schema fields, foreign keys, junction tables, or postgres query patterns.

lobehub/hotkey

Add or edit LobeHub keyboard shortcuts. Use for HotkeyEnum, HOTKEYS_REGISTRATION, combineKeys, useHotkeyById, tooltip hotkeys, shortcut scope, conflicts, or Cmd/Ctrl key combos.

lobehub/i18n

LobeHub i18n with react-i18next. Use for user-facing strings, locale keys, namespaces, useTranslation, t(), interpolation, zh-CN/en-US previews, hardcoded UI copy, or pnpm i18n.

lobehub/linear

Linear issue management. Use for LOBE-xxx issues, Linear links, PRs referencing Linear, retrieving issues, updating status, completion comments, or sub-issue trees.

lobehub/lobehub

Use for public LobeHub website documentation under docs/**, including self-hosting, deployment, migration, and configuration guides. Excludes product changelogs and source-code API docs.

lobehub/microcopy

UI copy and microcopy guidelines. Use for user-facing copy, buttons, errors, empty states, onboarding, i18n wording, translation, or copy improvements in Chinese or English.

lobehub/modal

LobeHub imperative modal conventions. Use when creating or migrating modals, dialogs, popups, confirm flows, ModalHost wiring, createModal, confirmModal, useModalContext, or base-ui modal APIs.

lobehub/pr

Create a PR for the current branch (targets `canary` by default), including splitting one cross-layer branch into ordered stacked PRs so a lower layer (db / shared package / server TRPC) merges before its callers (desktop / CLI / UI). Use when the user asks to create / submit a PR, or to split a branch because clients call a server contract that isn't on the trunk yet. Triggers on 'pr', 'create pr', 'submit pr', 'open a PR', 'pull request', 'split this PR', 'stacked PR', 'backend should merge first', '提 PR', '提个 PR', '新建 PR', '拆 PR', '后端先合', '分层合并'.

lobehub/project-overview

LobeHub open-source monorepo architecture map. Use when locating code layers, understanding apps/packages/src layout, business stubs, project structure, or onboarding to the repository.

lobehub/react

LobeHub React component conventions. Use when editing TSX UI, choosing base-ui vs @lobehub/ui vs antd, styling with antd-style, routing, desktop variants, layouts, or component state.

lobehub/store-data-structures

LobeHub Zustand store data-shape patterns. Use when designing store state, list/detail splits, normalized maps, reducers, messagesMap, topicsMap, or choosing shared type sources.

lobehub/testing

Vitest testing guide. Use when writing or updating tests, fixing failing tests, improving coverage, debugging test issues, or setting up mocks.

lobehub/typescript

LobeHub TypeScript style and type-safety guide. Use when editing TS/TSX/MTS, fixing types, choosing interface vs type, avoiding any/object, import type, async flow, or ts-expect-error.

lobehub/upstash-workflow

LobeHub Upstash Workflow and QStash guide. Use for async workflows, process/paginate/execute fan-out, serve handlers, context.run/call/sleep, or workflow triggers.

lobehub/version-release

Version release workflow — release process and GitHub Release notes (not docs/changelog pages).

lobehub/zustand

LobeHub Zustand store conventions. Use when editing src/store, store slices, public/internal actions, dispatch actions, flattenActions, optimistic updates, selectors, maps, or class action migration.

Skills associés