- TypeScript 50.3%
- Go 37.6%
- CSS 5.5%
- NSIS 3.3%
- JavaScript 2.7%
- Other 0.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Bilingual FR/EN captions for five screenshots covering the server window, network picker, server menu, a connected channel, and the light theme. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> |
||
| build | ||
| docs/screenshots | ||
| frontend | ||
| internal | ||
| .gitignore | ||
| app.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| Makefile | ||
| README.md | ||
| wails.json | ||
Client IRC moderne, à l'ancienne, en application native (macOS, Windows, Linux).
A modern, old-school IRC client, built as a native desktop app (macOS, Windows, Linux).
Bilingue français / anglais — Bilingual French / English.
Aperçu / Screenshots
FR Un salon connecté ( #sherbrooke), une conversation privée et la fenêtre serveur, toutes en fenêtres flottantes indépendantes.EN A connected channel ( #sherbrooke), a private conversation, and the server window, all as independent floating windows.
|
FR La liste des réseaux suggérés, avec recherche et ajout d'un serveur personnalisé. EN The suggested network list, with search and the option to add a custom server. |
FR Le menu « Serveur », avec la gestion de la liste de serveurs et le mode absent. EN The "Server" menu, with server-list management and away mode. |
FR La fenêtre serveur avant connexion. EN The server window before connecting. |
FR Le même salon en thème clair. EN The same channel in the light theme. |
Français
À propos
NextIRC est un client IRC construit avec Go et Wails : un backend Go robuste (concurrence par goroutines pour gérer proprement de nombreuses connexions serveur simultanées) et une interface web moderne (React) rendue dans une webview native, sans le poids d'Electron.
L'interface reprend l'esprit des clients IRC classiques à fenêtres flottantes — un fenêtrage indépendant pour chaque serveur, salon ou conversation privée, avec cascade, mosaïque et barre des tâches — mais avec des finitions qu'on ne trouve pas chez les clients IRC historiques ni chez la plupart de leurs successeurs modernes.
Ce qui distingue NextIRC
- Persistance côté backend. Contrairement à un client purement front-end, l'état complet (salons rejoints, conversations, historique) vit dans le processus Go, pas seulement dans la webview. Rafraîchir ou redémarrer l'interface ne fait rien perdre.
- Bilingue de bout en bout, pas juste traduit. L'interface entière (menus, dialogues, messages système, aide des commandes) est disponible en français et en anglais, avec détection automatique de la langue du système au premier lancement, et bascule manuelle à tout moment.
- ASV (Âge/Sexe/Ville), ressuscité proprement. Clin d'œil au chat IRC québécois des années
2000 : chacun peut définir son ASV dans son profil, et le survol du pseudo d'un autre
utilisateur NextIRC affiche son ASV dans une infobulle. L'échange se fait via CTCP (même
mécanisme standard que
CTCP VERSION), avec anti-rebond sur le survol et mise en cache par pseudo — donc pas de spam CTCP même en survolant frénétiquement une longue liste d'utilisateurs. Les clients non-NextIRC ignorent simplement la requête : aucune casse, aucun affichage étrange de leur côté. - Formatage 100% standard, donc compatible. Gras, couleurs, souligné, etc. utilisent les codes de contrôle IRC standards classiques (0x02, 0x03, 0x1F...) plutôt qu'un format propriétaire — vos messages formatés s'affichent correctement pour n'importe quel autre client compatible IRC, aucun tag ni marqueur bizarre à l'écran.
- Émoticônes texte → graphiques, sans jamais toucher au protocole.
:)s'affiche comme une émoticône animée localement, mais le texte brut envoyé sur le réseau reste:)— rendu cosmétique pur, aucune rupture de compatibilité avec l'autre bout de la conversation. - Salons
#nextirc-*: des extras pour ceux qui utilisent NextIRC des deux côtés. Rejoindre un salon nommé selon la convention#nextirc-<nom>active, entre clients NextIRC uniquement, des enrichissements sans équivalent dans le protocole IRC standard — le client reste un client IRC ordinaire, respectueux du standard, partout ailleurs. - Présence et cercle social pensés pour un usage quotidien. Mode absent avec message personnalisable, liste d'amis multi-serveurs avec suivi de connexion/déconnexion, et notifications natives (son, popup système, clignotement de la fenêtre) — des fonctions qu'on retrouve rarement réunies dans un seul client léger.
- Organisation des salons par dossiers, pour ranger ses salons favoris par thème ou par réseau plutôt que de les retrouver en vrac.
- Ordre des rôles cohérent dans la liste des utilisateurs (opérateur > modérateur > voix), au lieu du tri parfois erratique de certains vieux clients.
- Cross-compilation Windows sans douleur. Un binaire
.exeWindows (amd64/arm64) peut être produit directement depuis Linux, sans installer de chaîne de compilation croisée supplémentaire (voir la section Build ci-dessous) — pratique pour l'intégration continue. - Mode web prévu en phase 2 (
nextirc -web) : le même binaire pourra exposer l'interface via un serveur HTTP local, en réutilisant telle quelle la logique IRC du backend.
Développement
wails dev
Lance un serveur de développement Vite avec rechargement à chaud. Un serveur de développement
est aussi accessible sur http://localhost:34115 pour appeler le code Go depuis un navigateur.
Build
wails build
Produit un binaire natif dans build/bin/ pour la machine sur laquelle la commande tourne.
Build multi-plateforme depuis Linux
make build-windows # windows/amd64 + windows/arm64 (.exe)
make build-windows-amd64 # windows/amd64 seulement
make build-windows-arm64 # windows/arm64 seulement
make build-linux # linux, l'architecture de cette machine
make build-all # tout ce qui précède, en une passe
make clean # supprime build/bin
Windows se cross-compile proprement depuis Linux sans rien installer de plus : Wails n'utilise
pas CGO pour la cible Windows (WebView2 est piloté par de simples appels système Go, pas un
binding C), et l'icône/manifeste du .exe sont générés par une librairie Go pure plutôt que
windres. Vérifié ici pour windows/amd64 et windows/arm64 — de vrais .exe fonctionnels,
sans mingw-w64 ni aucune autre chaîne de compilation croisée.
Linux ne compile que pour l'architecture de la machine courante : il lie webkit2gtk via CGO,
donc un binaire Linux arm64 demanderait une vraie chaîne croisée (compilateur C + en-têtes
webkit2gtk-dev en arm64) — non configurée ici. À construire sur/pour cette architecture
directement (machine arm64 native, ou runner CI arm64).
macOS n'est pas une cible possible depuis ici : ça demande le SDK Xcode, qui ne s'installe pas sur Linux. Il faut un vrai Mac, ou un runner CI macOS hébergé.
Si make build-linux échoue en cherchant webkit2gtk-4.0 (le cas sur les distros qui n'ont
que la 4.1, ex. Debian 13+), relance avec LINUX_TAGS=webkit2_41.
Licence
Ce projet est distribué sous licence MIT. Le nom et le logo NextIRC restent la propriété d'André Porlier (aporler) et ne sont pas couverts par la licence MIT du code — voir la section « Trademark and brand assets » du fichier LICENSE pour les conditions de réutilisation du logo.
English
About
NextIRC is an IRC client built with Go and Wails: a robust Go backend (goroutine-based concurrency to cleanly handle many simultaneous server connections) paired with a modern web-based UI (React) rendered inside a native webview — none of the overhead of Electron.
The interface follows the spirit of classic floating-window IRC clients — an independent window for each server, channel, or private conversation, with cascade, tile, and a taskbar — but with polish rarely found together in either the classic IRC clients or most of their modern successors.
What sets NextIRC apart
- Backend-side state. Unlike a purely front-end client, the full application state (joined channels, conversations, scrollback) lives in the Go process, not just the webview. Reloading or restarting the UI loses nothing.
- Bilingual end-to-end, not just translated. The entire interface (menus, dialogs, system messages, command help) is available in French and English, with automatic system-language detection on first launch and a manual switch at any time.
- ASV (Age/Sex/City), done right. A nod to 2000s Quebec IRC chat culture: users can set
their ASV in their profile, and hovering another NextIRC user's nickname shows their ASV in a
tooltip. The exchange happens over CTCP (the same standard out-of-band mechanism as
CTCP VERSION), with hover debouncing and a per-nick cache — so no CTCP spam even when hovering frantically over a long user list. Non-NextIRC clients simply ignore the request: no breakage, nothing odd shown on their end. - 100% standard formatting, so it's actually compatible. Bold, colors, underline, etc. use the classic standard IRC control codes (0x02, 0x03, 0x1F...) instead of a proprietary scheme — your formatted messages render correctly for any other IRC-compliant client, with no stray tags or markers showing up.
- Text emoticons rendered graphically, without ever touching the wire.
:)displays as an animated emoticon locally, but the raw text sent over the network stays:)— a purely cosmetic, client-side effect with zero compatibility risk for the other end of the conversation. #nextirc-*channels: extras for when both sides run NextIRC. Joining a channel named per the#nextirc-<name>convention unlocks, between NextIRC clients only, enhancements with no standard IRC equivalent — while the client stays a fully standard, well-behaved IRC client everywhere else.- Presence and social features built for daily use. Away mode with a customizable message, a cross-server friends list with connect/disconnect tracking, and native notifications (sound, system popup, window flashing) — a combination rarely found together in a single lightweight client.
- Channel folders, to organize favorite channels by topic or network instead of a flat, unsorted list.
- Consistent role ordering in the user list (operator > half-op > voice), instead of the sometimes-erratic sorting found in some older clients.
- Painless Windows cross-compilation. A Windows
.exe(amd64/arm64) can be produced directly from Linux without installing any extra cross-toolchain (see the Build section below) — handy for continuous integration. - Web mode planned for phase 2 (
nextirc -web): the same binary will be able to expose the UI over a local HTTP server, reusing the backend's IRC logic as-is.
Development
wails dev
Starts a Vite development server with hot reload. A dev server is also available at
http://localhost:34115 to call the Go code from a browser.
Build
wails build
Produces a native binary in build/bin/ for the machine the command runs on.
Cross-platform build from Linux
make build-windows # windows/amd64 + windows/arm64 (.exe)
make build-windows-amd64 # windows/amd64 only
make build-windows-arm64 # windows/arm64 only
make build-linux # linux, this machine's architecture
make build-all # everything above, in one pass
make clean # removes build/bin
Windows cross-compiles cleanly from Linux with nothing extra to install: Wails doesn't use CGO
for the Windows target (WebView2 is driven by plain Go syscalls, not a C binding), and the
.exe's icon/manifest are generated by a pure-Go library instead of windres. Verified here
for windows/amd64 and windows/arm64 — real, working .exe files, no mingw-w64 or any other
cross-toolchain required.
Linux only builds for the current machine's architecture: it links webkit2gtk via CGO, so a
Linux arm64 binary would require an actual cross-toolchain (C compiler + arm64
webkit2gtk-dev headers) — not configured here. Build directly on/for that architecture (a
native arm64 machine, or an arm64 CI runner).
macOS isn't a reachable target from here: it requires the Xcode SDK, which can't be installed on Linux. You need an actual Mac, or a hosted macOS CI runner.
If make build-linux fails looking for webkit2gtk-4.0 (happens on distros that only ship
4.1, e.g. Debian 13+), rerun with LINUX_TAGS=webkit2_41.
License
This project is distributed under the MIT license. The NextIRC name and logo remain the property of André Porlier (aporler) and are not covered by the code's MIT license — see the "Trademark and brand assets" section of the LICENSE file for logo reuse terms.