- JavaScript 65.4%
- Nix 34.6%
Le téléchargement silencieux (aucun dialogue, aucun retour) passait pour cassé alors que les fichiers arrivaient bien dans ~/Téléchargements. Désormais : notification à la fin (clic = révèle le fichier dans le dossier), notification aussi en cas d'échec, et suffixe « (1) » si un fichier du même nom existe déjà au lieu de l'écraser en silence. Co-Authored-By: Supertaranta <larry@floating-coconuts.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| app | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| README.md | ||
Whatzefuck!
Client WhatsApp pour NixOS / COSMIC, bientôt disponible sur COSNIX, un distro Linux Qui intègre NixOS et Cosmic avec la philosophie de QuebeOS. WhatsApp Web en fenêtre dédiée, empaqueté comme un client natif via un wrapper Electron minimal (~190 lignes, zéro dépendance npm) : le vrai client Meta tourne dans Chromium, le wrapper n'ajoute que l'intégration desktop.
Pensé spécifiquement pour NixOS (build reproductible hors-ligne via
pkgs.electron, installable en flake / nix profile) et le bureau
COSMIC (System76) : entrée de launcher « Whatzefuck! » avec icône
dédiée, gestion du tray et de la résolution d'icône propre à COSMIC
(voir section COSMIC plus bas). Le package et le binaire s'appellent
whatzefuck.
Pourquoi pas Rust/wry ? Sur Linux, wry = WebKitGTK = pas de WebRTC
(appels morts) et codecs vidéo fragiles. Le moteur décide de tout :
liens, vidéo, VoIP, YouTube, fichiers = Chromium obligatoire.
Pourquoi pas ZapZap ? PyQt6/Flatpak, cassé sur Nix. Ici tout passe
par nixpkgs (pkgs.electron), build hors-ligne, reproductible.
Ce que ça fait
- Session persistante (profil isolé
persist:whatsapp) - Liens externes → ton navigateur par défaut (
xdg-open) - Tray + clic pour afficher/masquer ; fermer = minimiser, pas quitter
- Badge de non-lus (parse le titre
(3) WhatsApp) - Micro/caméra autorisés → appels voix/vidéo dès que Meta active le rollout sur ton compte (en cours depuis fév. 2026 — si tu ne vois pas les boutons d'appel dans une conversation, c'est leur rollout, pas le wrapper)
- Partage d'écran via le portail système (Wayland OK)
- Correcteur FR/EN avec suggestions au clic droit
- Téléchargements directs dans ~/Téléchargements
- UA Chrome pur (pas de token Electron → pas de page "navigateur non supporté")
- Instance unique ;
--hiddenpour démarrer minimisé
Installation
Essai rapide
nix run . # depuis le dossier du projet
nix profile install . # installe le binaire `whatzefuck` + l'entrée launcher
Dans ta config NixOS (flake)
# flake.nix de ta config
inputs.whatzefuck.url = "path:/chemin/vers/whatzefuck"; # ou github:.../...
# puis dans tes packages :
environment.systemPackages = [ inputs.whatzefuck.packages.${pkgs.system}.default ];
# ou home-manager :
home.packages = [ inputs.whatzefuck.packages.${pkgs.system}.default ];
Module clé en main (cache d'icône automatique) — recommandé
Pour qu'un installateur lambda n'ait rien à faire à la main (le cache d'icône est régénéré tout seul → l'icône apparaît dans le launcher) :
# NixOS déclaratif
imports = [ inputs.whatzefuck.nixosModules.default ];
programs.whatzefuck.enable = true; # régénère le cache au rebuild
# ou home-manager
imports = [ inputs.whatzefuck.homeManagerModules.default ];
programs.whatzefuck.enable = true; # régénère le cache à chaque switch
Autostart minimisé (home-manager)
xdg.configFile."autostart/whatzefuck.desktop".text = ''
[Desktop Entry]
Type=Application
Name=Whatzefuck!
Exec=whatzefuck --hidden
X-GNOME-Autostart-enabled=true
'';
COSMIC
Sur le bureau COSMIC, le dossier d'icônes d'un profil nix profile
n'a ni index.theme ni cache, donc le launcher ne résout pas toujours
Icon=whatzefuck. Si l'icône n'apparaît pas après l'install :
# 1. icône en tailles standard dans le chemin cherché en premier
for s in 48 64 128 256; do
mkdir -p ~/.local/share/icons/hicolor/${s}x${s}/apps
magick app/icon.png -background none -resize ${s}x${s} \
~/.local/share/icons/hicolor/${s}x${s}/apps/whatzefuck.png
done
# 2. régénère le cache (gtk-update-icon-cache vient de gtk3)
gtk-update-icon-cache -f ~/.local/share/icons/hicolor
Au besoin, une entrée ~/.local/share/applications/whatzefuck.desktop
avec Icon= en chemin absolu force la résolution même sans cache.
Une déconnexion/reconnexion COSMIC rafraîchit le launcher.
Limites connues
- Le badge
app.setBadgeCountdépend du DE (fonctionne avec les launchers compatibles Unity ; sinon le compte reste visible dans le tooltip du tray). - Le tray nécessite
libappindicatorcôté DE (GNOME : extension AppIndicator). - C'est WhatsApp Web : téléphone pas nécessaire en permanence (multi-device), mais le compte reste lié à ton numéro chez Meta.
Hygiène
Ce wrapper crée un nouvel appareil lié dans WhatsApp.
Licence
AGPL-3.0-or-later — Floating Coconuts. "WhatsApp" est une marque de Meta ; ce projet n'est ni affilié ni approuvé par Meta. L'icône est une image personnelle ("Whatzefuck!"), pas le logo WhatsApp.