Mister Download Manager
  1. Início
  2. Temas

A mesma janela, do seu jeito

Em Exibir → Tema, você muda a aparência do MDM de uma vez, mantendo tudo no lugar. Escolha um dos visuais integrados, cada um com um lado claro e um escuro, ou crie o seu próprio em um arquivo de texto.

9 temas integrados · claro e escuro

Crie seu próprio tema

Um tema é um pequeno arquivo de texto, em TOML (ou JSON). Ele nomeia apenas o que muda; todo o resto vem do tema em que se baseia. Você não precisa compilar o MDM nem saber programar.

  1. Crie-o

    Comece com algumas cores e adicione mais à medida que avança:

    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"
    • inheritsé o tema do qual o seu começa: classic (o padrão), high-contrast, metro, adwaita, breeze, luna, aero, aqua, ou outro arquivo de tema na mesma pasta.
    • [seeds]são algumas cores (background, surface, header, text, accent, selection, error, warning, success) que o MDM espalha por todos os controles. [seeds.light] e [seeds.dark] dão a cada lado o seu próprio.
    • [colors]define funções de cor única em ambos os lados, [light] e [dark] em um lado apenas: #rrggbb, ou #rrggbbaa com transparência.
    • [sizes]são raios de canto, larguras de borda, tamanhos de fonte e alturas de linha, em pixels. [controls] escolhe a forma de caixas de texto, caixas de seleção, botões, barras de progresso, barras de rolagem, a marca de foco e a barra de título.
    • iconsé color, mono ou accent. Um tema em sua própria pasta (my-theme/theme.toml) pode trazer seus ícones em icons/16 e icons/24, cada um nomeado pelo que mostra (tb-add-url.svg, cat-music.png); os -symbolic assumem a cor do texto do tema.
    • contrast = "high"fortalece cada borda e cor de texto por cima.

    Uma chave que o MDM não reconhece, ou um valor que não consegue ler, é ignorada e escrita no log do MDM (a pasta logs ao lado da pasta de temas), para que um arquivo feito para um MDM mais recente ainda seja carregado. Os temas integrados são escritos da mesma forma: leia-os no GitHub.

    Cada função de cor (156)
    ChaveO que colore
    windowWindows' and dialogs' background
    textTexto e glifos
    text.disabledTexto desativado, o único cinza de cada controle e rótulo acinzentado
    text.mutedTexto secundário: notas, tamanhos, versões
    linkTexto que abre algo
    errorTexto de erro
    error.strongMensagem de uma verificação falha em Opções (testes de conexão, navegador e auxiliar)
    warningTexto de aviso
    successTexto de sucesso (um checksum correspondente)
    reach.nearServidor de um download próximo pelo seu tempo de ida e volta (abaixo de 60 ms), em Propriedades
    reach.mediumUm servidor com tempo de ida e volta médio (60 a 150 ms)
    reach.farUm servidor distante pelo seu tempo de ida e volta (acima de 150 ms)
    flag.edgeA borda fina ao redor da bandeira de um país
    accentO destaque: linhas de foco, controles abertos e padrão, filtros, foco de links
    focus.ringO retângulo de foco pontilhado do teclado
    selectionPreenchimento de uma seleção: linhas, um dia escolhido, texto selecionado
    selection.textTexto na seleção
    selection.mutedTexto secundário na seleção
    selection.inactiveUma linha selecionada em uma lista sem foco
    selection.focusO contorno pontilhado da linha focada em uma linha selecionada
    group.lineMoldura de uma caixa de grupo
    etch.shadowLinha de sombra de um separador gravado
    etch.lightLinha de destaque de um separador gravado
    tab.pageCorpo de uma página de aba
    tabUma aba não selecionada e a sombra da página
    tab.hotUma aba sob o ponteiro
    chevronUma seta de lista suspensa ou caixa de rotação
    chevron.disabledUma seta esmaecida
    subtle.hotUma parte sem face própria (uma seta, um cabeçalho de coluna) sob o ponteiro
    subtle.pressedEssa parte pressionada ou aberta
    highlight.hotUm dia ou seta de calendário sob o ponteiro, um alvo de arrastar e soltar
    highlight.pressedUm dia ou seta de calendário pressionado
    fieldO interior de uma caixa de texto ou de uma lista
    field.borderA borda de uma caixa de texto
    field.bottomA linha inferior de uma caixa de texto enquanto ela pode ser digitada
    field.disabledO interior de uma caixa de texto esmaecida
    field.disabled.borderA borda de uma caixa de texto esmaecida
    field.readonlyO interior de uma caixa de texto somente leitura
    field.readonly.borderA borda de uma caixa de texto somente leitura
    combo.chevronO chevron de uma lista suspensa
    combo.arrow.hotA zona da seta de uma lista suspensa editável sob o ponteiro
    combo.arrow.pressedA zona da seta de uma lista suspensa editável pressionada ou aberta
    buttonA face de um botão
    button.hotA face de um botão sob o ponteiro
    button.pressedA face de um botão pressionada
    button.borderA borda de um botão
    button.bottomA borda inferior de um botão
    button.textO texto de um botão
    button.text.pressedO texto de um botão pressionado
    button.default.borderA borda do botão padrão
    button.default.bottomA borda inferior do botão padrão
    button.disabledA face de um botão esmaecido
    button.disabled.borderA borda de um botão esmaecido
    button.accentA face de um botão de destaque
    button.accent.hotFace de um botão de destaque sob o ponteiro
    button.accent.pressedFace de um botão de destaque pressionado
    button.accent.bottomBorda inferior de um botão de destaque
    button.accent.textTexto de um botão de destaque
    button.accent.text.pressedTexto de um botão de destaque pressionado
    button.glowO brilho dentro de um botão sob o ponteiro, onde o estilo desenha um (Luna; transparente: nenhum)
    glossO brilho para o qual as partes brilhantes se misturam no topo: botões, caixas, barras e barras de título (Luna, Aero, Aqua)
    checkInterior de uma caixa de seleção ou rádio desmarcada
    check.hotSeu interior sob o ponteiro
    check.pressedSeu interior pressionado
    check.borderBorda de uma caixa de seleção ou rádio desmarcada
    check.border.hotSua borda sob o ponteiro
    check.border.pressedSua borda pressionada
    check.border.disabledBorda de uma caixa de seleção desmarcada e esmaecida
    check.onDestaque de uma caixa de seleção ou rádio marcada
    check.on.hotO destaque marcado sob o ponteiro
    check.on.pressedO destaque marcado pressionado
    check.on.disabledPreenchimento de uma caixa de seleção marcada e esmaecida
    check.markO tique ou ponto no destaque marcado
    progress.trackTrilha de uma barra de progresso
    progress.barPreenchimento de uma barra de progresso
    meter.trackTrilha de um medidor (parte de um download concluída)
    meter.edgeBorda de um medidor
    meter.fillPreenchimento de um medidor
    listPlano de fundo da lista de downloads
    list.frameContorno de uma lista, tabela ou caixa
    gridLinhas de grade entre as linhas de uma lista em diálogos
    list.gridLinhas de grade da lista de downloads
    headerCabeçalhos de coluna de todas as listas e tabelas
    header.lineLinha inferior de um cabeçalho em listas de diálogos
    header.sepOs divisores entre os cabeçalhos das colunas
    table.lineOs divisores nas tabelas do extrator de links e de "Adicionar torrent"
    header.sortedO cabeçalho da coluna classificada
    header.sort-arrowO chevron de classificação
    row.pressedUma linha da lista pressionada
    chip.webO chip "Web" da lista de downloads
    chip.torrentO chip "Torrent" da lista de downloads
    chip.textTexto em um chip
    list.drag-ghostUm cabeçalho de coluna sendo arrastado
    list.marqueeA faixa de seleção que seleciona linhas
    list.marquee.borderA borda da faixa de seleção
    scroll.trackA trilha de uma barra de rolagem
    scroll.cornerOnde duas barras de rolagem se encontram
    scroll.thumbO controle deslizante e as setas de uma barra de rolagem
    scroll.thumb.hotO controle deslizante ou uma seta sob o ponteiro
    scroll.thumb.pressedO controle deslizante ou uma seta pressionada ou arrastada
    menubarA barra de menu
    menubar.bottomA última linha da barra de menu
    menubar.lineA linha sob a barra de menu
    menubar.hotUm título de menu sob o ponteiro
    menubar.openO título do menu aberto
    menuO plano de fundo de um menu
    menu.itemUm item de menu
    menu.hotUm item de menu sob o ponteiro
    menu.borderA moldura de um menu e de um pop-up
    menu.sepOs separadores de um menu
    menu.textO texto de um menu
    menu.glyphMarcadores, tiques e setas de submenu
    menu.text.disabledUm item de menu esmaecido
    toolbar.lineA linha superior da barra de ferramentas
    toolbar.line.lightO destaque abaixo dele
    toolbar.hotUm botão da barra de ferramentas sob o ponteiro
    toolbar.hot.faintA outra parte de um botão dividido enquanto uma está sob o ponteiro
    toolbar.pressedUm botão da barra de ferramentas pressionado
    toolbar.hot.edgeA borda de um botão ativo da barra de ferramentas
    toolbar.hot.borderA borda de um botão ativo da barra de ferramentas (transparente: nenhuma)
    toolbar.split.shadowO divisor de um botão dividido em repouso: sua sombra
    toolbar.split.lightO destaque do divisor
    toolbar.text.disabledUm rótulo acinzentado da barra de ferramentas
    toolbar.arrowA seta de um botão suspenso
    icon.disabledA tinta de um ícone acinzentado (seu início)
    icon.disabled.endA tinta de um ícone acinzentado (seu fim)
    treeO fundo da árvore de categorias
    tree.linesOs conectores pontilhados da árvore
    tree.expanderOs chevrons da árvore, onde a variante os desenha
    tree.frameA moldura do painel de categorias
    progress.statusO valor de "Status" da janela de progresso
    progress.label.disabledUm rótulo acinzentado na janela de progresso
    segments.borderA moldura da barra de segmentos
    segments.cornerOs pixels de canto da barra de segmentos
    pieces.haveUm pedaço de torrent que está aqui
    pieces.partialUm quadrado que representa pedaços parcialmente aqui
    pieces.missingUm pedaço ainda não aqui
    captionUma barra de título que o MDM desenha
    caption.textSeu título e glifos
    caption.text.inactiveSeu título e glifos enquanto a janela não é a ativa, e os de um botão acinzentado
    caption.hotUm botão de legenda sob o ponteiro (uma tonalidade sobre a barra)
    caption.pressedUm botão de legenda pressionado (uma tonalidade sobre a barra)
    caption.buttonUm botão de legenda em repouso, onde o estilo mostra um (uma tonalidade sobre a barra; transparente: nenhum)
    caption.closeO botão "Fechar" sob o ponteiro
    caption.close.textGlifo de Fechar sob o ponteiro
    caption.inactiveBarra de título desenhada pelo MDM, quando a janela não está ativa (transparente: como quando ativa)
    drop-target.edgeBorda do alvo de arrastar em repouso
    egui.panelFundo do painel do egui
    egui.windowFundo das dicas de ferramentas
    egui.window.borderBorda das dicas de ferramentas
    egui.textTexto das dicas de ferramentas
    egui.selection.textCor do texto selecionado nas caixas do egui
    egui.extremeFundo mais escuro (ou mais claro) do egui
    egui.faintFundo suave do egui
    egui.widgetWidgets do egui em repouso
    egui.widget.borderBorda deles (transparente: nenhuma)
    Todos os tamanhos (26)
    ChaveO que define
    radiusRaio do canto de botões, caixas de texto e menus suspensos
    radius.buttonRaio do canto de um botão de apertar brilhante (Luna, Aero; os do Aqua são redondos nas extremidades)
    radius.partRaio do canto de uma parte colorida (uma zona de seta, um botão giratório)
    radius.checkRaio do canto de uma caixa de seleção
    radius.flyoutRaio do canto de um pop-up em uma janela (um calendário, uma caixa de filtro)
    radius.menu-itemRaio do canto de um item de menu sob o ponteiro
    radius.eguiRaio do canto dos próprios widgets do egui
    radius.popupRaio do canto das dicas de ferramentas
    borderLargura da borda de um controle
    focus-lineAltura da linha de destaque de uma caixa de texto focada
    chevron.widthEspessura do traço do chevron de um menu suspenso
    font.dialogTexto da caixa de diálogo (Tahoma nas caixas de diálogo do IDM)
    font.dialog.boldTítulos das páginas de Opções
    font.titleTítulo de uma janela (Tahoma Negrito): da extensão do navegador, dos auxiliares
    font.codeUm código de login para digitar na página de um serviço
    font.uiMenus e texto da janela principal (Segoe UI)
    font.ui.boldTítulos em negrito na janela principal
    font.smallTexto pequeno do egui
    font.bodyTexto principal do egui: dicas de ferramentas, caixas de várias linhas
    font.headingTítulos do egui
    list.rowAltura de uma linha na lista de downloads
    list.headerAltura dos cabeçalhos das colunas da lista de downloads
    tooltip.widthOnde o texto de uma dica de ferramenta quebra
    tooltip.margin-xPreenchimento esquerdo e direito de uma dica de ferramenta
    tooltip.margin-topPreenchimento superior de uma dica de ferramenta
    tooltip.margin-bottomPreenchimento inferior de uma dica de ferramenta
    Estilo de cada controle (7)
    ChaveSeus estilos
    field-focuslinha, borda, anel
    checkfluente, quadrado, adwaita, breeze, luna, aero, aqua
    buttonfluente, breeze, luna, aero, aqua
    progresslinha, barra, blocos, brilho
    scrollsobreposição, clássico
    captionsistema, metro, adwaita, breeze, luna, aero, aqua
    focuspontilhado, anel, moldura

    Ou deixe um assistente de IA escrever

    Copie este prompt para seu assistente de IA e descreva o visual que você deseja no final. Ele fornece ao assistente o formato, as chaves e as regras: texto legível e um foco visível em ambos os lados, e nada copiado de obras de arte de outras pessoas. Olhe para ambos os lados você mesmo antes de compartilhar o resultado.

    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. Experimente, sem compilar o MDM

    Coloque o arquivo na pasta de temas do MDM. Exibir → Tema → Abrir pasta de temas a abre, e a cria na primeira vez. Ela está na pasta de dados do MDM:

    Windows
    %APPDATA%\misterdownloadmanager\themes
    Linux
    ~/.local/share/misterdownloadmanager/themes
    macOS
    ~/Library/Application Support/misterdownloadmanager/themes
    Cópia portátil
    data\themesao lado do programa

    Em dois segundos, ele aparece em Exibir → Tema, abaixo dos temas integrados, pelo name que ele mesmo se dá. Escolha-o e a janela inteira muda de uma vez. Depois de editar o arquivo, escolha-o novamente em Exibir → Tema para ver a alteração. Exibir → Suporte ao Modo Escuro e Sempre escuro alternam entre seu lado claro e escuro.

    O caminho Exibir → Tema → Adicionar um arquivo de tema… faz isso por você: escolha o arquivo em qualquer lugar, e o MDM o copia para a pasta de temas e o usa imediatamente.

    Já tem um esquema Base16 ou pywal?

    Já é um tema. Um esquema Base16 ou Base24 (.yaml) ou o colors.json do pywal, adicionado da mesma forma, muda as cores do MDM e nada mais: os fundos do esquema atrás da lista e das janelas, seu texto mantido legível (4.5:1 ou mais), seu azul no foco, na seleção e na barra de progresso. Depois que wal for executado, Exibir → Tema lista pywal, lido de ~/.cache/wal/colors.json (%USERPROFILE%\.cache\wal\colors.jsonno Windows), e o MDM segue as cores de cada novo papel de parede em dois segundos. O guia mostra qual cor vai para onde.

  3. Compartilhe

    Fez algo que outras pessoas gostariam? Abra um pull request no GitHub que o adicione a crates/app/assets/themes, com:

    • o arquivo .toml, e sua pasta de ícones, se houver;
    • capturas de tela da janela principal em seu lado claro e escuro;
    • uma SOURCES.txt ao lado de qualquer ícone, informando quem o desenhou e sob qual licença. Os ícones devem ser seus ou estar sob uma licença que permita ao MDM compartilhá-los (GPL-3.0), nunca copiados de outro programa.

    Ainda não tem certeza? Mostre nas discussões primeiro. O guia de contribuição explica como os pull requests funcionam aqui.

Gratuito, de código aberto, sem anúncios, sem período de teste.

Baixar Mister Download Manager