Linux Mint XFCE prend déjà en charge les claviers Apple, mais quelques réglages permettent de retrouver une expérience très proche de macOS.

Écouter cet article

1. Identifier le clavier Apple

Ouvrez un terminal et vérifiez qu’il est détecté :

lsusb

Vous devriez voir une ligne contenant Apple, Inc.


2. Installer les outils utiles

sudo apt update
sudo apt install numlockx xcape xbindkeys xdotool pavucontrol

3. Transformer la touche Commande (⌘) en touche Super

Sous Linux, la touche ⌘ Command devient généralement la touche Super.

Vérifiez dans :

Menu → Paramètres → Clavier → Disposition

ou

setxkbmap -option

4. Inverser Commande et Alt (recommandé)

Pour retrouver les raccourcis macOS :

macOSLinux
⌘ CCtrl C
⌘ VCtrl V
⌘ XCtrl X

Deux possibilités existent.

Solution simple

Dans

Paramètres → Clavier → Disposition → Options

Chercher :

Alt/Win behavior

Puis choisir

Swap Left Alt with Left Win

Ainsi :

  • ⌘ devient Alt
  • Option devient Super

On retrouve une disposition beaucoup plus naturelle.


Solution avancée

Avec :

xmodmap

ou

hid_apple

on peut obtenir un comportement quasiment identique à macOS.


5. Charger le module Apple

Créer le fichier :

sudo nano /etc/modprobe.d/hid_apple.conf

Ajouter :

options hid_apple fnmode=2

Puis :

sudo update-initramfs -u
sudo reboot

Signification

ValeurComportement
fnmode=0Les touches F1 à F12 sont prioritaires
fnmode=1Les touches multimédia sont prioritaires
fnmode=2Le comportement peut être inversé avec Fn (proche de macOS)

La valeur 2 est généralement la plus agréable.


6. Touches multimédia

Les touches :

  • Volume
  • Luminosité
  • Lecture
  • Pause
  • Suivant
  • Précédent

fonctionnent souvent immédiatement.

Si certaines ne fonctionnent pas :

Paramètres
→ Clavier
→ Raccourcis d'application

Vous pouvez leur attribuer :

Volume +

amixer set Master 5%+

Volume –

amixer set Master 5%-

Muet

amixer set Master toggle

7. Recréer les raccourcis macOS

Dans

Paramètres
→ Clavier
→ Raccourcis

vous pouvez définir :

ActionRaccourci
Copier⌘ C
Coller⌘ V
Couper⌘ X
Annuler⌘ Z
Tout sélectionner⌘ A
Rechercher⌘ F
Fermer⌘ W
Nouvelle fenêtre⌘ N
Quitter⌘ Q

8. Défilement « Naturel »

Comme sur macOS :

Paramètres
→ Souris et pavé tactile

Activer

Défilement naturel

9. Clic secondaire

Toujours dans

Souris

Choisir

Clic droit à deux doigts

ou

Coin inférieur droit

10. Installer un Dock

Le plus proche de macOS :

sudo apt install plank

Puis :

plank

Pour le lancer automatiquement :

Paramètres
→ Session et démarrage
→ Démarrage automatique

Ajouter

plank

11. Installer le thème macOS

Très apprécié :

sudo apt install gnome-themes-extra papirus-icon-theme

ou installer :

  • WhiteSur Theme
  • WhiteSur Icons
  • McMojave

Le résultat est très proche de macOS Sonoma ou Sequoia.


12. Installer les polices Apple

Si vous possédez une licence macOS, vous pouvez copier les polices depuis votre Mac dans :

~/.local/share/fonts

Cela améliore la fidélité de l’interface et le rendu des documents.


13. Installer les gestes (si vous utilisez un Magic Trackpad)

sudo apt install touchegg

Puis :

sudo systemctl enable touchegg
sudo systemctl start touchegg

Installez ensuite Touché, une interface graphique permettant de configurer les gestes (balayage à trois doigts, changement de bureau, etc.).


14. Réglages supplémentaires pour un iMac

Je recommande également :

sudo apt install tlp tlp-rdw
sudo systemctl enable tlp

Même si un iMac est un ordinateur de bureau, TLP optimise certains paramètres d’alimentation et peut réduire la chauffe.

Pour aller encore plus loin : transformer Linux Mint en « macOS »

Il est possible d’obtenir une expérience très proche de celle d’un Mac en combinant plusieurs outils :

  • Dock Plank centré avec effet de grossissement.
  • WhiteSur GTK Theme et WhiteSur Icons.
  • LightDM WebKit Greeter avec un écran de connexion inspiré de macOS.
  • Albert ou Ulauncher pour remplacer Spotlight (recherche d’applications avec un raccourci clavier).
  • TopIcons ou des greffons XFCE pour rapprocher la barre supérieure de celle de macOS.
  • Touché/Touchegg pour les gestes multitouch.
  • Raccourcis clavier adaptés pour utiliser la touche ⌘ comme touche principale.

Avec ces ajustements, un iMac de 2011 sous Linux Mint XFCE offre une expérience visuelle et ergonomique très proche de macOS, tout en restant nettement plus léger et réactif.

Installer configure-imac-mint-xfce.sh

#!/usr/bin/env bash
# Configuration « habitudes macOS » pour Linux Mint XFCE sur iMac/clavier Apple.
# Le script est idempotent : il peut être relancé sans dupliquer les réglages.
#
# Usage normal :
#   chmod +x configure-imac-mint-xfce.sh
#   ./configure-imac-mint-xfce.sh
#
# Options :
#   --without-theme       Ne pas installer WhiteSur.
#   --without-gestures    Ne pas installer Touchégg/Touché.
#   --without-ulauncher   Utiliser le lanceur XFCE au lieu d'Ulauncher.
#   --without-keyd        Ne pas activer les raccourcis basés sur Commande (⌘).
#   --restore-keyboard    Restaurer la configuration clavier créée par ce script.
#   --help                Afficher l'aide.

set -Eeuo pipefail
IFS=$'\n\t'

readonly SCRIPT_NAME="$(basename "$0")"
readonly BACKUP_DIR="/var/backups/apple-mint-xfce"
readonly KEYD_CONFIG="/etc/keyd/default.conf"
readonly HID_APPLE_CONFIG="/etc/modprobe.d/hid_apple.conf"

INSTALL_THEME=1
INSTALL_GESTURES=1
INSTALL_ULAUNCHER=1
INSTALL_KEYD=1
RESTORE_KEYBOARD=0

log()  { printf '\n\033[1;34m[%s]\033[0m %s\n' "$SCRIPT_NAME" "$*"; }
warn() { printf '\n\033[1;33m[%s]\033[0m %s\n' "$SCRIPT_NAME" "$*" >&2; }
die()  { printf '\n\033[1;31m[%s]\033[0m %s\n' "$SCRIPT_NAME" "$*" >&2; exit 1; }

usage() {
  sed -n '2,17p' "$0" | sed 's/^# \{0,1\}//'
}

for arg in "$@"; do
  case "$arg" in
    --without-theme)     INSTALL_THEME=0 ;;
    --without-gestures)  INSTALL_GESTURES=0 ;;
    --without-ulauncher) INSTALL_ULAUNCHER=0 ;;
    --without-keyd)      INSTALL_KEYD=0 ;;
    --restore-keyboard)  RESTORE_KEYBOARD=1 ;;
    --help|-h)           usage; exit 0 ;;
    *)                   die "Option inconnue : $arg" ;;
  esac
done

# Le script doit être lancé par l'utilisateur connecté, pas directement avec sudo.
if (( EUID == 0 )); then
  die "Lancez ce script sans sudo : ./$SCRIPT_NAME"
fi

command -v sudo >/dev/null 2>&1 || die "La commande sudo est requise."
[[ -r /etc/os-release ]] || die "Impossible d'identifier la distribution."
# shellcheck disable=SC1091
source /etc/os-release

case "${ID:-}:${ID_LIKE:-}" in
  linuxmint:*|ubuntu:*|*:ubuntu*|debian:*|*:debian*) ;;
  *) die "Ce script cible Linux Mint, Ubuntu ou une distribution dérivée de Debian." ;;
esac

TARGET_USER="$USER"
TARGET_HOME="$HOME"
USER_CONFIG="$TARGET_HOME/.config"
USER_LOCAL_BIN="$TARGET_HOME/.local/bin"
AUTOSTART_DIR="$USER_CONFIG/autostart"
WORK_DIR="$(mktemp -d -t apple-mint-xfce.XXXXXX)"
trap 'rm -rf "$WORK_DIR"' EXIT

sudo -v
sudo install -d -m 0755 "$BACKUP_DIR"

backup_root_file() {
  local file="$1"
  local name
  name="$(basename "$file")"
  if [[ -e "$file" && ! -e "$BACKUP_DIR/$name.original" ]]; then
    sudo cp -a "$file" "$BACKUP_DIR/$name.original"
  fi
}

restore_keyboard() {
  log "Restauration de la configuration clavier"

  if systemctl list-unit-files 2>/dev/null | grep -q '^keyd\.service'; then
    sudo systemctl disable --now keyd.service 2>/dev/null || true
  fi

  if [[ -e "$BACKUP_DIR/$(basename "$KEYD_CONFIG").original" ]]; then
    sudo install -D -m 0644 \
      "$BACKUP_DIR/$(basename "$KEYD_CONFIG").original" "$KEYD_CONFIG"
  else
    sudo rm -f "$KEYD_CONFIG"
  fi

  if [[ -e "$BACKUP_DIR/$(basename "$HID_APPLE_CONFIG").original" ]]; then
    sudo install -D -m 0644 \
      "$BACKUP_DIR/$(basename "$HID_APPLE_CONFIG").original" "$HID_APPLE_CONFIG"
  else
    sudo rm -f "$HID_APPLE_CONFIG"
  fi

  sudo update-initramfs -u
  log "Configuration restaurée. Redémarrez Linux pour terminer."
}

if (( RESTORE_KEYBOARD )); then
  restore_keyboard
  exit 0
fi

apt_install() {
  sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends "$@"
}

add_ppa_once() {
  local ppa="$1"
  local marker="${ppa#ppa:}"
  marker="${marker%%/*}"

  if ! grep -Rqs "${marker}" /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null; then
    sudo add-apt-repository -y "$ppa"
  fi
}

log "Mise à jour des dépôts et installation des outils de base"
sudo apt-get update
apt_install \
  ca-certificates curl git software-properties-common flatpak \
  xinput x11-utils libinput-tools numlockx xbindkeys xdotool \
  pavucontrol pulseaudio-utils playerctl brightnessctl \
  plank papirus-icon-theme gnome-themes-extra \
  xfce4-screenshooter fonts-noto fonts-noto-color-emoji \
  fontconfig sassc libglib2.0-dev-bin libxml2-utils

# -----------------------------------------------------------------------------
# Clavier Apple : rangée supérieure macOS et raccourcis Commande (⌘)
# -----------------------------------------------------------------------------

log "Configuration du pilote hid_apple"
backup_root_file "$HID_APPLE_CONFIG"

# fnmode=1 : luminosité, volume et médias directement ; Fn donne F1…F12.
# Les touches Option et Commande restent à leur emplacement Apple d'origine.
sudo tee "$HID_APPLE_CONFIG" >/dev/null <<'EOF'
# Généré par configure-imac-mint-xfce.sh
options hid_apple fnmode=1 swap_opt_cmd=0 swap_ctrl_cmd=0
EOF
sudo update-initramfs -u

# Applique immédiatement fnmode lorsque le module est déjà chargé.
if [[ -w /sys/module/hid_apple/parameters/fnmode ]]; then
  printf '1' | sudo tee /sys/module/hid_apple/parameters/fnmode >/dev/null || true
fi

if (( INSTALL_KEYD )); then
  log "Installation et configuration de keyd"

  if ! apt-cache show keyd >/dev/null 2>&1; then
    add_ppa_once ppa:keyd-team/ppa
    sudo apt-get update
  fi
  apt_install keyd

  backup_root_file "$KEYD_CONFIG"
  sudo install -d -m 0755 /etc/keyd

  # Commande agit comme le modificateur principal de macOS uniquement pour les
  # combinaisons usuelles. Ctrl et Option gardent leur rôle Linux normal.
  sudo tee "$KEYD_CONFIG" >/dev/null <<'EOF'
# Généré par configure-imac-mint-xfce.sh
# Arrêt d'urgence de keyd : maintenir Backspace + Échap + Entrée.

[ids]
*

[main]
leftmeta = layer(mac)
rightmeta = layer(mac)

[mac]
a = C-a
c = C-c
v = C-v
x = C-x
z = C-z
s = C-s
o = C-o
p = C-p
f = C-f
r = C-r
n = C-n
t = C-t
l = C-l
w = C-w
q = A-f4
h = A-f9
m = A-f9
tab = A-tab
space = C-space
left = home
right = end
up = C-home
down = C-end
minus = C-minus
equal = C-equal
0 = C-0
comma = C-comma
leftbrace = C-leftbrace
rightbrace = C-rightbrace
EOF

  # Permet à libinput de reconnaître correctement le clavier virtuel de keyd.
  sudo tee /etc/libinput/local-overrides.quirks >/dev/null <<'EOF'
[Serial Keyboards]
MatchUdevType=keyboard
MatchName=keyd*keyboard
AttrKeyboardIntegration=internal
EOF

  sudo systemctl enable --now keyd.service
  sudo keyd reload
fi

# -----------------------------------------------------------------------------
# Touches spéciales XFCE
# -----------------------------------------------------------------------------

xfce_shortcut() {
  local shortcut="$1"
  local command="$2"
  local property="/commands/custom/$shortcut"

  # xfconf-query nécessite une session graphique XFCE active.
  if command -v xfconf-query >/dev/null 2>&1 && [[ -n "${DISPLAY:-}" ]]; then
    xfconf-query -c xfce4-keyboard-shortcuts -p "$property" -n -t string -s "$command" \
      2>/dev/null || \
    xfconf-query -c xfce4-keyboard-shortcuts -p "$property" -s "$command" \
      2>/dev/null || true
  fi
}

log "Association des touches multimédias et des captures d'écran"
xfce_shortcut 'XF86AudioRaiseVolume' 'pactl set-sink-volume @DEFAULT_SINK@ +5%'
xfce_shortcut 'XF86AudioLowerVolume' 'pactl set-sink-volume @DEFAULT_SINK@ -5%'
xfce_shortcut 'XF86AudioMute'        'pactl set-sink-mute @DEFAULT_SINK@ toggle'
xfce_shortcut 'XF86AudioMicMute'     'pactl set-source-mute @DEFAULT_SOURCE@ toggle'
xfce_shortcut 'XF86AudioPlay'        'playerctl play-pause'
xfce_shortcut 'XF86AudioPause'       'playerctl play-pause'
xfce_shortcut 'XF86AudioNext'        'playerctl next'
xfce_shortcut 'XF86AudioPrev'        'playerctl previous'
xfce_shortcut 'XF86MonBrightnessUp'  'brightnessctl set +5%'
xfce_shortcut 'XF86MonBrightnessDown' 'brightnessctl set 5%-'
xfce_shortcut '<Primary><Shift>3'    'xfce4-screenshooter --fullscreen'
xfce_shortcut '<Primary><Shift>4'    'xfce4-screenshooter --region'

# -----------------------------------------------------------------------------
# Défilement naturel, clic/toucher et pavé tactile
# -----------------------------------------------------------------------------

log "Création du réglage automatique des périphériques de pointage"
install -d -m 0755 "$USER_LOCAL_BIN" "$AUTOSTART_DIR"

cat > "$USER_LOCAL_BIN/apple-input-setup" <<'EOF'
#!/usr/bin/env bash
# Active les comportements proches de macOS sur les périphériques libinput.
set -u

command -v xinput >/dev/null 2>&1 || exit 0

while read -r id; do
  [[ -n "$id" ]] || continue
  props="$(xinput list-props "$id" 2>/dev/null || true)"

  if grep -q 'libinput Natural Scrolling Enabled (' <<<"$props"; then
    xinput set-prop "$id" 'libinput Natural Scrolling Enabled' 1 2>/dev/null || true
  fi

  if grep -q 'libinput Tapping Enabled (' <<<"$props"; then
    xinput set-prop "$id" 'libinput Tapping Enabled' 1 2>/dev/null || true
  fi

  if grep -q 'libinput Tapping Drag Enabled (' <<<"$props"; then
    xinput set-prop "$id" 'libinput Tapping Drag Enabled' 1 2>/dev/null || true
  fi

done < <(xinput list --short | sed -n 's/.*id=\([0-9][0-9]*\).*/\1/p')
EOF
chmod 0755 "$USER_LOCAL_BIN/apple-input-setup"

cat > "$AUTOSTART_DIR/apple-input-setup.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=Réglages Apple des périphériques de pointage
Exec=$USER_LOCAL_BIN/apple-input-setup
OnlyShowIn=XFCE;
X-GNOME-Autostart-enabled=true
Terminal=false
EOF

"$USER_LOCAL_BIN/apple-input-setup" || true

# -----------------------------------------------------------------------------
# Dock Plank
# -----------------------------------------------------------------------------

log "Activation du dock Plank au démarrage"
cat > "$AUTOSTART_DIR/plank.desktop" <<'EOF'
[Desktop Entry]
Type=Application
Name=Plank
Exec=plank
OnlyShowIn=XFCE;
X-GNOME-Autostart-enabled=true
Terminal=false
EOF

# -----------------------------------------------------------------------------
# Ulauncher / Spotlight
# -----------------------------------------------------------------------------

if (( INSTALL_ULAUNCHER )); then
  log "Installation d'Ulauncher"
  add_ppa_once ppa:agornostal/ulauncher
  sudo apt-get update

  if apt_install ulauncher; then
    cat > "$AUTOSTART_DIR/ulauncher.desktop" <<'EOF'
[Desktop Entry]
Type=Application
Name=Ulauncher
Exec=ulauncher --hide-window
OnlyShowIn=XFCE;
X-GNOME-Autostart-enabled=true
Terminal=false
EOF

    if command -v ulauncher-toggle >/dev/null 2>&1; then
      xfce_shortcut '<Primary>space' 'ulauncher-toggle'
    else
      xfce_shortcut '<Primary>space' 'ulauncher --toggle-window'
    fi
  else
    warn "Ulauncher n'a pas pu être installé ; utilisation du lanceur XFCE."
    xfce_shortcut '<Primary>space' 'xfce4-appfinder --collapsed'
  fi
else
  xfce_shortcut '<Primary>space' 'xfce4-appfinder --collapsed'
fi

# -----------------------------------------------------------------------------
# Gestes Touchégg et interface Touché
# -----------------------------------------------------------------------------

if (( INSTALL_GESTURES )); then
  log "Installation de Touchégg et Touché"

  if ! dpkg-query -W -f='${Status}' touchegg 2>/dev/null | grep -q 'install ok installed'; then
    add_ppa_once ppa:touchegg/stable
    sudo apt-get update
    apt_install touchegg
  fi

  if systemctl list-unit-files 2>/dev/null | grep -q '^touchegg\.service'; then
    sudo systemctl enable --now touchegg.service
  fi

  install -d -m 0755 "$USER_CONFIG/touchegg"
  if [[ -r /usr/share/touchegg/touchegg.conf ]]; then
    cp -n /usr/share/touchegg/touchegg.conf "$USER_CONFIG/touchegg/touchegg.conf"
  fi

  flatpak remote-add --user --if-not-exists flathub \
    https://flathub.org/repo/flathub.flatpakrepo
  flatpak install --user -y flathub com.github.joseexposito.touche || \
    warn "Touché n'a pas pu être installé depuis Flathub."
fi

# -----------------------------------------------------------------------------
# Apparence WhiteSur
# -----------------------------------------------------------------------------

if (( INSTALL_THEME )); then
  log "Installation du thème et des icônes WhiteSur"
  GTK_REPO="$WORK_DIR/WhiteSur-gtk-theme"
  ICON_REPO="$WORK_DIR/WhiteSur-icon-theme"

  git clone --depth=1 https://github.com/vinceliuice/WhiteSur-gtk-theme.git "$GTK_REPO"
  git clone --depth=1 https://github.com/vinceliuice/WhiteSur-icon-theme.git "$ICON_REPO"

  # L'échec du thème GTK ne doit pas empêcher le reste de la configuration.
  (
    cd "$GTK_REPO"
    ./install.sh -c light -o normal --silent-mode
  ) || warn "Installation du thème GTK WhiteSur incomplète ; Papirus reste disponible."

  (
    cd "$ICON_REPO"
    ./install.sh
  ) || warn "Installation des icônes WhiteSur incomplète."

  # Sélection du thème dans la session XFCE active.
  if command -v xfconf-query >/dev/null 2>&1 && [[ -n "${DISPLAY:-}" ]]; then
    if [[ -d "$TARGET_HOME/.themes/WhiteSur-Light" ]]; then
      xfconf-query -c xsettings -p /Net/ThemeName -s 'WhiteSur-Light' 2>/dev/null || true
    elif [[ -d "$TARGET_HOME/.themes/WhiteSur" ]]; then
      xfconf-query -c xsettings -p /Net/ThemeName -s 'WhiteSur' 2>/dev/null || true
    fi

    if [[ -d "$TARGET_HOME/.local/share/icons/WhiteSur" ]]; then
      xfconf-query -c xsettings -p /Net/IconThemeName -s 'WhiteSur' 2>/dev/null || true
    else
      xfconf-query -c xsettings -p /Net/IconThemeName -s 'Papirus' 2>/dev/null || true
    fi

    # Utilise WhiteSur pour les bordures de fenêtres seulement si xfwm4 existe.
    if [[ -d "$TARGET_HOME/.themes/WhiteSur-Light/xfwm4" ]]; then
      xfconf-query -c xfwm4 -p /general/theme -s 'WhiteSur-Light' 2>/dev/null || true
    elif [[ -d "$TARGET_HOME/.themes/WhiteSur/xfwm4" ]]; then
      xfconf-query -c xfwm4 -p /general/theme -s 'WhiteSur' 2>/dev/null || true
    fi
  fi
fi

# Dossier prévu pour les polices légalement copiées depuis le Mac de l'utilisateur.
install -d -m 0755 "$TARGET_HOME/.local/share/fonts"
fc-cache -f "$TARGET_HOME/.local/share/fonts" >/dev/null 2>&1 || true

log "Nettoyage des dépendances devenues inutiles"
sudo apt-get autoremove -y

cat <<'EOF'

Configuration terminée.

Raccourcis principaux :
  ⌘ C / V / X / Z       Copier / coller / couper / annuler
  ⌘ Tab                 Changer d'application
  ⌘ Espace              Ouvrir Ulauncher ou le lanceur XFCE
  ⌘ W                   Fermer l'onglet ou le document
  ⌘ Q                   Fermer la fenêtre active
  ⌘ Maj 3               Capture de l'écran entier
  ⌘ Maj 4               Capture d'une zone

Pour terminer l'application des réglages du clavier Apple : redémarrez Linux.
Pour annuler les réglages clavier :
  ./configure-imac-mint-xfce.sh --restore-keyboard

Arrêt d'urgence de keyd : maintenir Backspace + Échap + Entrée.
EOF

Quelques snippets pour Moodle

Écouter cet article

Un snippet désigne un petit extrait de texte ou de code réutilisable. Selon le contexte, il peut s’agir d’un raccourci permettant de gagner du temps en programmation. Les codes JavaScript présentés dans cet article sont à copier-coller dans la console du navigateur, par exemple Firefox, Safari ou Google Chrome.

Pour remettre toutes les notes d’évaluation direct à zéro :

document.querySelectorAll("input.inputNote").forEach((el)=>{
    el.value = "";
})