Mister Download Manager
  1. Accueil
  2. Thèmes

La même fenêtre, à votre façon

Affichage → Thème modifie l’apparence de MDM instantanément, sans rien déplacer. Choisissez l’un des thèmes intégrés, chacun avec un mode clair et un mode sombre, ou créez le vôtre dans un fichier texte.

9 thèmes intégrés · clair et sombre

Créer votre propre thème

Un thème est un petit fichier texte, en TOML (ou JSON). Il ne nomme que ce qu’il modifie ; tout le reste provient du thème sur lequel il est basé. Vous n’avez pas besoin de compiler MDM ni de savoir programmer.

  1. Le créer

    Commencez avec quelques couleurs, puis ajoutez-en d’autres au fur et à mesure :

    name = "Harbour"
    inherits = "classic"
    icons = "color"
    
    [seeds.light]
    background = "#eef3f6"
    surface = "#ffffff"
    text = "#11202b"
    accent = "#0f6c8c"
    
    [seeds.dark]
    background = "#14212a"
    surface = "#0e171d"
    text = "#e8f0f4"
    accent = "#5cc3e6"
    
    [sizes]
    radius = 6
    
    [controls]
    focus = "ring"
    • inheritsest le thème de départ du vôtre : classic (par défaut), high-contrast, metro, adwaita, breeze, luna, aero, aqua, ou un autre fichier de thème dans le même dossier.
    • [seeds]sont une poignée de couleurs (background, surface, header, text, accent, selection, error, warning, success) que MDM applique à chaque contrôle. [seeds.light] et [seeds.dark] donnent à chaque mode le sien.
    • [colors]définit des rôles de couleur unique des deux côtés, [light] et [dark] d’un seul côté : #rrggbb, ou #rrggbbaa avec transparence.
    • [sizes]sont les rayons des coins, les largeurs des bordures, les tailles de police et les hauteurs de ligne, en pixels. [controls] choisit la forme des zones de texte, des cases à cocher, des boutons, des barres de progression, des barres de défilement, du marqueur de focus et de la barre de titre.
    • iconsest color, mono ou accent. Un thème dans son propre dossier (my-theme/theme.toml) peut apporter ses icônes dans icons/16 et icons/24, chacune nommée pour ce qu'elle représente (tb-add-url.svg, cat-music.png) ; les icônes -symbolic prennent la couleur du texte du thème.
    • contrast = "high"renforce chaque bordure et la couleur du texte par-dessus.

    Une clé que MDM ne connaît pas, ou une valeur qu'il ne peut pas lire, est ignorée et écrite dans le journal de MDM (le dossier logs à côté du dossier des thèmes), de sorte qu'un fichier créé pour un MDM plus récent se charge toujours. Les thèmes intégrés sont écrits de la même manière : lisez-les sur GitHub.

    Chaque rôle de couleur (156)
    CléCe qu'elle colore
    windowWindows' and dialogs' background
    textTexte et glyphes
    text.disabledTexte désactivé, le gris unique de chaque contrôle et libellé grisé
    text.mutedTexte secondaire : notes, tailles, versions
    linkTexte qui ouvre quelque chose
    errorTexte d'erreur
    error.strongMessage d'un échec de vérification dans les Options (tests de connexion, de navigateur et d'aide)
    warningTexte d'avertissement
    successTexte de succès (une somme de contrôle correspondante)
    reach.nearLe serveur d'un téléchargement proche par son temps d'aller-retour (moins de 60 ms), dans les Propriétés
    reach.mediumUn serveur avec un temps d'aller-retour moyen (60 à 150 ms)
    reach.farUn serveur éloigné par son temps d'aller-retour (plus de 150 ms)
    flag.edgeLe mince bord autour du drapeau d'un pays
    accentL'accent : lignes de focus, contrôles ouverts et par défaut, filtres, focus des liens
    focus.ringLe rectangle de focus clavier en pointillés
    selectionLe remplissage d'une sélection : lignes, un jour choisi, texte sélectionné
    selection.textTexte sur la sélection
    selection.mutedTexte secondaire sur la sélection
    selection.inactiveUne ligne sélectionnée dans une liste sans le focus
    selection.focusLe contour en pointillés de la ligne focalisée sur une ligne sélectionnée
    group.lineLe cadre d'un groupe de contrôles
    etch.shadowLa ligne d'ombre d'un séparateur gravé
    etch.lightLa ligne de surbrillance d'un séparateur gravé
    tab.pageLe corps d'une page à onglets
    tabUn onglet non sélectionné et l'ombre de la page
    tab.hotUn onglet sous le pointeur
    chevronUne flèche de liste déroulante ou de zone de saisie numérique
    chevron.disabledUne flèche grisée
    subtle.hotUne partie sans apparence propre (une flèche, un en-tête de colonne) sous le pointeur
    subtle.pressedUne telle partie pressée ou ouverte
    highlight.hotUn jour ou une flèche de calendrier sous le pointeur, une cible de dépôt
    highlight.pressedUn jour ou une flèche de calendrier pressé
    fieldL'intérieur d'une zone de texte ou d'une liste
    field.borderLa bordure d'une zone de texte
    field.bottomLa ligne inférieure d'une zone de texte lorsqu'elle est modifiable
    field.disabledL'intérieur d'une zone de texte grisée
    field.disabled.borderLa bordure d'une zone de texte grisée
    field.readonlyL'intérieur d'une zone de texte en lecture seule
    field.readonly.borderLa bordure d'une zone de texte en lecture seule
    combo.chevronLe chevron d'une liste déroulante
    combo.arrow.hotLa zone de flèche d'une liste déroulante modifiable sous le pointeur
    combo.arrow.pressedLa zone de flèche d'une liste déroulante modifiable pressée ou ouverte
    buttonLa face d'un bouton
    button.hotLa face d'un bouton sous le pointeur
    button.pressedLa face d'un bouton pressée
    button.borderLa bordure d'un bouton
    button.bottomLe bord inférieur d'un bouton
    button.textLe texte d'un bouton
    button.text.pressedLe texte d'un bouton pressé
    button.default.borderLa bordure du bouton par défaut
    button.default.bottomLe bord inférieur du bouton par défaut
    button.disabledLa face d'un bouton grisé
    button.disabled.borderLa bordure d'un bouton grisé
    button.accentLa face d'un bouton d'accentuation
    button.accent.hotFace d'un bouton d'accentuation sous le pointeur
    button.accent.pressedFace d'un bouton d'accentuation pressé
    button.accent.bottomBord inférieur d'un bouton d'accentuation
    button.accent.textTexte d'un bouton d'accentuation
    button.accent.text.pressedTexte d'un bouton d'accentuation pressé
    button.glowLueur interne d'un bouton sous le pointeur, si le style en dessine une (Luna ; transparent : aucune)
    glossBrillance vers laquelle les parties brillantes se fondent en haut : boutons, cadres, barres et barres de titre (Luna, Aero, Aqua)
    checkIntérieur d'une case à cocher ou d'un bouton radio non coché
    check.hotIntérieur sous le pointeur
    check.pressedIntérieur pressé
    check.borderBordure d'une case à cocher ou d'un bouton radio non coché
    check.border.hotBordure sous le pointeur
    check.border.pressedBordure pressée
    check.border.disabledBordure d'une case à cocher grisée non cochée
    check.onAccent d'une case à cocher ou d'un bouton radio coché
    check.on.hotAccent coché sous le pointeur
    check.on.pressedAccent coché pressé
    check.on.disabledRemplissage d'une case à cocher grisée cochée
    check.markCoche ou point sur l'accent coché
    progress.trackPiste d'une barre de progression
    progress.barRemplissage d'une barre de progression
    meter.trackPiste d'un indicateur (partie d'un téléchargement terminée)
    meter.edgeBord d'un indicateur
    meter.fillRemplissage d'un indicateur
    listArrière-plan de la liste de téléchargements
    list.frameContour d'une liste, d'un tableau ou d'un cadre
    gridLignes de grille entre les lignes d'une liste dans les boîtes de dialogue
    list.gridLignes de grille de la liste de téléchargements
    headerEn-têtes de colonne de chaque liste et tableau
    header.lineLigne inférieure d'un en-tête dans les listes des boîtes de dialogue
    header.sepLes séparateurs entre les en-têtes de colonne
    table.lineLes séparateurs dans les tableaux du récupérateur de liens et d'« Ajouter un torrent »
    header.sortedL'en-tête de la colonne triée
    header.sort-arrowLe chevron de tri
    row.pressedUne ligne de liste sélectionnée
    chip.webLa puce « Web » de la liste de téléchargements
    chip.torrentLa puce « Torrent » de la liste de téléchargements
    chip.textLe texte sur une puce
    list.drag-ghostUn en-tête de colonne en cours de déplacement
    list.marqueeL'élastique qui sélectionne les lignes
    list.marquee.borderLe bord de l'élastique
    scroll.trackLa piste d'une barre de défilement
    scroll.cornerLà où deux barres de défilement se rencontrent
    scroll.thumbLe curseur et les flèches d'une barre de défilement
    scroll.thumb.hotLe curseur ou une flèche sous le pointeur
    scroll.thumb.pressedLe curseur ou une flèche pressée ou déplacée
    menubarLa barre de menus
    menubar.bottomLa dernière ligne de la barre de menus
    menubar.lineLa ligne sous la barre de menus
    menubar.hotUn titre de menu sous le pointeur
    menubar.openLe titre du menu ouvert
    menuL'arrière-plan d'un menu
    menu.itemUn élément de menu
    menu.hotUn élément de menu sous le pointeur
    menu.borderLe cadre d'un menu et d'une fenêtre contextuelle
    menu.sepLes séparateurs d'un menu
    menu.textLe texte d'un menu
    menu.glyphLes puces, les coches et les flèches de sous-menu
    menu.text.disabledUn élément de menu grisé
    toolbar.lineLa ligne supérieure de la barre d'outils
    toolbar.line.lightLe surlignage en dessous
    toolbar.hotUn bouton de barre d'outils sous le pointeur
    toolbar.hot.faintL'autre partie d'un bouton partagé quand l'une est sous le pointeur
    toolbar.pressedUn bouton de barre d'outils pressé
    toolbar.hot.edgeLe bord d'un bouton de barre d'outils actif
    toolbar.hot.borderLa bordure d'un bouton de barre d'outils actif (transparent : aucune)
    toolbar.split.shadowL'ombre du séparateur d'un bouton partagé au repos
    toolbar.split.lightLe surlignage du séparateur
    toolbar.text.disabledUne étiquette de barre d'outils grisée
    toolbar.arrowLa flèche d'un bouton déroulant
    icon.disabledL'encre d'une icône grisée (son début)
    icon.disabled.endL'encre d'une icône grisée (sa fin)
    treeL'arrière-plan de l'arborescence des catégories
    tree.linesLes connecteurs en pointillés de l'arborescence
    tree.expanderLes chevrons de l'arborescence, là où la variante les dessine
    tree.frameLe cadre du volet des catégories
    progress.statusLa valeur de l'état dans la fenêtre de progression
    progress.label.disabledUne étiquette grisée dans la fenêtre de progression
    segments.borderLe cadre de la barre de segments
    segments.cornerLes pixels de coin de la barre de segments
    pieces.haveUn morceau de torrent qui est ici
    pieces.partialUn carré représentant des morceaux partiellement ici
    pieces.missingUn morceau pas encore ici
    captionUne barre de titre dessinée par MDM
    caption.textSon titre et ses glyphes
    caption.text.inactiveSon titre et ses glyphes lorsque la fenêtre n'est pas active, et ceux d'un bouton grisé
    caption.hotUn bouton de légende sous le pointeur (une teinte sur la barre)
    caption.pressedUn bouton de légende pressé (une teinte sur la barre)
    caption.buttonUn bouton de légende au repos, là où le style en affiche un (une teinte sur la barre ; transparent : aucun)
    caption.closeFermer sous le pointeur
    caption.close.textGlyphe du bouton Fermer sous le pointeur
    caption.inactiveBarre de titre dessinée par MDM, lorsque sa fenêtre n'est pas active (transparente : comme lorsqu'elle est active)
    drop-target.edgeBord de la zone de dépôt au repos
    egui.panelArrière-plan du panneau d'egui
    egui.windowArrière-plan des info-bulles
    egui.window.borderBordure des info-bulles
    egui.textTexte des info-bulles
    egui.selection.textEncre du texte sélectionné dans les zones d'egui
    egui.extremeArrière-plan le plus foncé (ou le plus clair) d'egui
    egui.faintArrière-plan pâle d'egui
    egui.widgetWidgets d'egui au repos
    egui.widget.borderLeur bordure (transparente : aucune)
    Toutes les tailles (26)
    CléCe qu'elle définit
    radiusRayon des coins des boutons, des zones de texte et des listes déroulantes
    radius.buttonRayon des coins d'un bouton poussoir brillant (Luna, Aero ; ceux d'Aqua sont ronds aux extrémités)
    radius.partRayon des coins d'une partie teintée (zone de flèche, bouton de sélection)
    radius.checkRayon des coins d'une case à cocher
    radius.flyoutRayon des coins d'une fenêtre contextuelle (calendrier, zone de filtre)
    radius.menu-itemRayon des coins d'un élément de menu sous le pointeur
    radius.eguiRayon des coins des propres widgets d'egui
    radius.popupRayon des coins des info-bulles
    borderLargeur de la bordure d'un contrôle
    focus-lineHauteur de la ligne d'accentuation d'une zone de texte sélectionnée
    chevron.widthÉpaisseur du trait du chevron d'une liste déroulante
    font.dialogTexte des boîtes de dialogue (Tahoma dans les boîtes de dialogue d'IDM)
    font.dialog.boldTitres des pages d'options
    font.titleTitre d'une fenêtre (Tahoma Gras) : celui de l'extension de navigateur, des assistants
    font.codeCode de connexion à saisir sur la page d'un service
    font.uiMenus et texte de la fenêtre principale (Segoe UI)
    font.ui.boldTitres en gras dans la fenêtre principale
    font.smallPetit texte d'egui
    font.bodyCorps de texte d'egui : info-bulles, zones multilignes
    font.headingTitres d'egui
    list.rowHauteur d'une ligne dans la liste des téléchargements
    list.headerHauteur des en-têtes de colonne de la liste des téléchargements
    tooltip.widthOù le texte d'une info-bulle s'enroule
    tooltip.margin-xMarge intérieure gauche et droite d'une info-bulle
    tooltip.margin-topMarge intérieure supérieure d'une info-bulle
    tooltip.margin-bottomMarge intérieure inférieure d'une info-bulle
    Chaque style de contrôle (7)
    CléSes styles
    field-focusligne, bordure, anneau
    checkfluent, carré, adwaita, breeze, luna, aero, aqua
    buttonFluent, Breeze, Luna, Aero, Aqua
    progressligne, barre, blocs, brillant
    scrollsuperposition, classique
    captionsystème, metro, adwaita, breeze, luna, aero, aqua
    focuspointillé, anneau, cadre

    Ou laissez un assistant IA l'écrire

    Copiez cette invite dans votre assistant IA et décrivez l'apparence que vous souhaitez à la fin. Elle donne à l'assistant le format, les clés et les règles : un texte lisible et une mise au point visible des deux côtés, et rien copié d'une autre œuvre. Regardez les deux côtés vous-même avant de partager le résultat.

    You are making a theme file for Mister Download Manager (MDM), a free, open-source download manager. Write one TOML file, named after the theme in lower case with dashes (for example harbour.toml). Reply with the file only, in one code block, then one line on how to install it.
    
    THE FORMAT
    A theme names only what it changes; everything else comes from the theme it inherits.
    - name = "Display name"
    - inherits = "classic" (the default), "high-contrast", "metro", "adwaita", "breeze", "luna", "aero" or "aqua"
    - icons = "color" | "mono" | "accent"
    - contrast = "high" (optional: strengthens every edge and text colour)
    - [seeds] a few colours MDM spreads over every control: background, surface, header, text, accent, selection, error, warning, success. Use [seeds.light] and [seeds.dark] to give each side its own.
    - [colors] single colour roles for both sides; [light] and [dark] for one side only. Role names are dotted and must be quoted when they contain a dot, e.g. "button.hot" = "#e5f1fb". Useful roles: window, text, text.muted, link, accent, focus.ring, selection, selection.text, field, field.border, button, button.hot, button.pressed, button.border, button.text, check.on, check.mark, progress.bar, list, header, menubar, menu, menu.hot, menu.text, toolbar.hot, tree, caption, caption.text, scroll.thumb, gloss (the shine glossy parts blend toward), button.glow. "segments.done" takes one colour or a list of 13 (top to bottom).
    - [sizes] in pixels, 0 to 400: radius, radius.button, radius.check, radius.menu-item, radius.popup, border, focus-line, list.row, list.header, font.ui, font.dialog.
    - [controls] shapes: field-focus = line | border | ring; check = fluent | square | adwaita | breeze | luna | aero | aqua; button = fluent | breeze | luna | aero | aqua; progress = line | bar | blocks | gloss; scroll = overlay | classic; focus = dotted | ring | frame; caption = system | metro | adwaita | breeze | luna | aero | aqua.
    - Colours are "#rrggbb" or "#rrggbbaa". Unknown keys are skipped, so only use the names above.
    
    THE RULES
    1. Make both a light and a dark side: give [seeds.light] and [seeds.dark] (or [light] and [dark]) their own colours, and check each side on its own.
    2. Text must be easy to read: at least 4.5:1 contrast for text against its background (text on window and field, button.text on button, menu.text on menu, selection.text on selection, caption.text on caption), in both sides.
    3. The keyboard focus must be easy to see: accent and focus.ring at least 3:1 against what they sit on.
    4. Disabled text stays readable but clearly dimmer than normal text.
    5. Clean room: no artwork, icons, logos, fonts or text copied from any other program or company. If the theme needs icons, describe original ones to draw, never copy existing ones, and note their source and licence in a SOURCES.txt.
    6. Keep the layout: a theme changes colours, sizes and control shapes only.
    
    After the file, list each text and background pair you checked with its contrast ratio, for both sides.
    
    THE LOOK I WANT:
  2. Essayez-le, sans compiler MDM

    Placez le fichier dans le dossier des thèmes de MDM. Affichage → Thème → Ouvrir le dossier des thèmes l'ouvre et le crée la première fois. Il se trouve dans le dossier de données de MDM :

    Windows
    %APPDATA%\misterdownloadmanager\themes
    Linux
    ~/.local/share/misterdownloadmanager/themes
    macOS
    ~/Library/Application Support/misterdownloadmanager/themes
    Copie portable
    data\themesà côté du programme

    En moins de deux secondes, il apparaît dans Affichage → Thème, sous les thèmes intégrés, par le name qu'il se donne. Choisissez-le et toute la fenêtre change immédiatement. Après avoir modifié le fichier, choisissez-le à nouveau dans Affichage → Thème pour voir le changement. Affichage → Prise en charge du mode sombre et Toujours sombre basculent entre son côté clair et son côté sombre.

    Pour cela, utilisez Affichage → Thème → Ajouter un fichier de thème… : sélectionnez le fichier où qu’il soit, et MDM le copie dans le dossier des thèmes et l’applique aussitôt.

    Vous avez déjà un thème Base16 ou pywal ?

    C’est déjà un thème. Un thème Base16 ou Base24 (.yaml) ou colors.json de pywal, ajouté de la même manière, modifie les couleurs de MDM et rien d’autre : les arrière-plans du thème derrière la liste et les fenêtres, son texte reste lisible (4,5:1 ou plus), son bleu sur le focus, la sélection et la barre de progression. Une fois que wal a été exécuté, Affichage → Thème liste pywal, lu depuis ~/.cache/wal/colors.json (%USERPROFILE%\.cache\wal\colors.jsonsous Windows), et MDM suit les couleurs de chaque nouveau fond d’écran en moins de deux secondes. Le guide indique quelle couleur va où.

  3. Partagez-le

    Vous avez créé quelque chose qui plairait à d'autres ? Ouvrez une pull request sur GitHub qui l'ajoute à crates/app/assets/themes, avec :

    • le fichier .toml, et son dossier d'icônes s'il en a un ;
    • des captures d'écran de la fenêtre principale dans son côté clair et son côté sombre ;
    • une SOURCES.txt à côté de chaque icône, indiquant son auteur et sa licence. Les icônes doivent être les vôtres ou sous une licence permettant à MDM de les partager (GPL-3.0), jamais copiées d'un autre programme.

    Vous n'êtes pas encore sûr ? Présentez-le d'abord dans les discussions. Le guide de contribution explique comment fonctionnent les pull requests ici.

Gratuit, open source, sans publicité ni période d’essai.

Télécharger Mister Download Manager