Mister Download Manager
  1. Главная
  2. Темы

Одно окно, ваш стиль

Пункт меню Вид → Тема мгновенно меняет внешний вид MDM, сохраняя при этом расположение всех элементов. Выберите один из встроенных стилей, каждый из которых имеет светлую и тёмную стороны, или создайте свой собственный в текстовом файле.

9 встроенных тем · светлая и тёмная

Создайте свою тему

Тема — это небольшой текстовый файл в формате TOML (или JSON). Он содержит только те параметры, которые вы меняете; всё остальное берётся из темы, на которой он основан. Вам не нужно собирать MDM или уметь программировать.

  1. Создать

    Начните с нескольких цветов, затем добавляйте больше по мере необходимости:

    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— это тема, от которой начинается ваша: classic (по умолчанию), high-contrast, metro, adwaita, breeze, luna, aero, aqua или другой файл темы в той же папке.
    • [seeds]— это несколько цветов (background, surface, header, text, accent, selection, error, warning, success), которые MDM распространяет на все элементы управления. [seeds.light] и [seeds.dark] задают свой собственный для каждой стороны.
    • [colors]устанавливает роли одного цвета с обеих сторон, [light] и [dark] — только с одной стороны: #rrggbb или #rrggbbaa с прозрачностью.
    • [sizes]— это радиусы углов, ширина границ, размеры шрифтов и высота строк в пикселях. [controls] выбирает форму текстовых полей, флажков, кнопок, полос прогресса, полос прокрутки, метки фокуса и строки заголовка.
    • iconsэто color, mono или accent. Тема в отдельной папке (my-theme/theme.toml) может содержать свои значки в icons/16 и icons/24, каждый из которых назван в соответствии с тем, что он отображает (tb-add-url.svg, cat-music.png); -symbolic используют цвет текста темы.
    • contrast = "high"усиливает каждый край и цвет текста сверху.

    Неизвестный MDM ключ или нечитаемое значение пропускается и записывается в журнал MDM (папка logs рядом с папкой тем), поэтому файл, созданный для более новой версии MDM, всё равно загружается. Встроенные темы написаны таким же образом: прочитайте их на GitHub.

    Все роли цвета (156)
    КлючЧто окрашивает
    windowWindows' and dialogs' background
    textТекст и глифы
    text.disabledОтключенный текст, единственный серый цвет каждого неактивного элемента управления и метки
    text.mutedВторичный текст: примечания, размеры, версии
    linkТекст, который что-то открывает
    errorТекст ошибки
    error.strongСообщение о неудачной проверке в «Параметрах» (проверки подключения, браузера и вспомогательных программ)
    warningТекст предупреждения
    successТекст успеха (совпадающая контрольная сумма)
    reach.nearСервер загрузки рядом с его временем отклика (менее 60 мс), в «Свойствах»
    reach.mediumСервер со средним временем отклика (от 60 до 150 мс)
    reach.farСервер далеко по времени отклика (более 150 мс)
    flag.edgeТонкий край вокруг флага страны
    accentАкцент: линии фокуса, открытые и стандартные элементы управления, фильтры, фокус ссылок
    focus.ringПунктирный прямоугольник фокуса клавиатуры
    selectionЗаливка выделения: строки, выбранный день, выделенный текст
    selection.textТекст на выделении
    selection.mutedВторичный текст на выделении
    selection.inactiveВыделенная строка в списке без фокуса
    selection.focusПунктирный контур сфокусированной строки на выделенной строке
    group.lineРамка группового поля
    etch.shadowТеневая линия вытравленного разделителя
    etch.lightЛиния подсветки вытравленного разделителя
    tab.pageТело вкладки
    tabНевыбранная вкладка и тень страницы
    tab.hotВкладка под указателем
    chevronСтрелка раскрывающегося списка или счётчика
    chevron.disabledНеактивная стрелка
    subtle.hotЧасть без собственного оформления (стрелка, заголовок столбца) под указателем
    subtle.pressedТакая часть нажата или открыта
    highlight.hotДень или стрелка календаря под указателем, цель перетаскивания
    highlight.pressedДень или стрелка календаря нажаты
    fieldВнутренняя часть текстового поля или списка
    field.borderГраница текстового поля
    field.bottomНижняя линия текстового поля, когда в него можно вводить текст
    field.disabledВнутренняя часть неактивного текстового поля
    field.disabled.borderГраница неактивного текстового поля
    field.readonlyВнутренняя часть текстового поля только для чтения
    field.readonly.borderГраница текстового поля только для чтения
    combo.chevronШеврон раскрывающегося списка
    combo.arrow.hotЗона стрелки редактируемого раскрывающегося списка под указателем
    combo.arrow.pressedЗона стрелки редактируемого раскрывающегося списка нажата или открыта
    buttonЛицевая сторона кнопки
    button.hotЛицевая сторона кнопки под указателем
    button.pressedЛицевая сторона кнопки нажата
    button.borderГраница кнопки
    button.bottomНижний край кнопки
    button.textТекст кнопки
    button.text.pressedТекст кнопки нажат
    button.default.borderГраница кнопки по умолчанию
    button.default.bottomНижний край кнопки по умолчанию
    button.disabledЛицевая сторона неактивной кнопки
    button.disabled.borderГраница неактивной кнопки
    button.accentЛицевая сторона акцентной кнопки
    button.accent.hotЛицевая сторона акцентной кнопки под указателем
    button.accent.pressedЛицевая сторона акцентной кнопки при нажатии
    button.accent.bottomНижний край акцентной кнопки
    button.accent.textТекст акцентной кнопки
    button.accent.text.pressedТекст акцентной кнопки при нажатии
    button.glowСвечение внутри кнопки под указателем, если стиль его предусматривает (Luna; прозрачный: нет)
    glossБлеск, к которому сверху переходят глянцевые части: кнопки, поля, полосы и заголовки (Luna, Aero, Aqua)
    checkВнутренняя часть невыбранного флажка или переключателя
    check.hotЕго внутренняя часть под указателем
    check.pressedЕго внутренняя часть при нажатии
    check.borderГраница невыбранного флажка или переключателя
    check.border.hotЕго граница под указателем
    check.border.pressedЕго граница при нажатии
    check.border.disabledГраница неактивного невыбранного флажка
    check.onАкцент выбранного флажка или переключателя
    check.on.hotВыбранный акцент под указателем
    check.on.pressedВыбранный акцент при нажатии
    check.on.disabledЗаливка неактивного выбранного флажка
    check.markГалочка или точка на выбранном акценте
    progress.trackПолоса индикатора выполнения
    progress.barЗаливка индикатора выполнения
    meter.trackПолоса измерителя (выполненная часть загрузки)
    meter.edgeКрай измерителя
    meter.fillЗаливка измерителя
    listФон списка загрузок
    list.frameКонтур списка, таблицы или поля
    gridЛинии сетки между строками списка в диалоговых окнах
    list.gridЛинии сетки списка загрузок
    headerЗаголовки столбцов всех списков и таблиц
    header.lineНижняя линия заголовка в списках диалоговых окон
    header.sepРазделители между заголовками столбцов
    table.lineРазделители в таблицах перехватчика ссылок и диалогового окна «Добавить торрент»
    header.sortedЗаголовок отсортированного столбца
    header.sort-arrowШеврон сортировки
    row.pressedНажатая строка списка
    chip.webЧип «Веб» в списке загрузок
    chip.torrentЧип «Торрент» в списке загрузок
    chip.textТекст на чипе
    list.drag-ghostПеретаскиваемый заголовок столбца
    list.marqueeРезиновая рамка для выделения строк
    list.marquee.borderКрай резиновой рамки
    scroll.trackДорожка полосы прокрутки
    scroll.cornerМесто пересечения двух полос прокрутки
    scroll.thumbПолзунок и стрелки полосы прокрутки
    scroll.thumb.hotПолзунок или стрелка под указателем
    scroll.thumb.pressedНажатый или перетаскиваемый ползунок или стрелка
    menubarСтрока меню
    menubar.bottomПоследняя строка строки меню
    menubar.lineЛиния под строкой меню
    menubar.hotНазвание меню под указателем
    menubar.openНазвание открытого меню
    menuФон меню
    menu.itemПункт меню
    menu.hotПункт меню под указателем
    menu.borderРамка меню и всплывающего окна
    menu.sepРазделители меню
    menu.textТекст меню
    menu.glyphМаркеры, галочки и стрелки подменю
    menu.text.disabledНеактивный пункт меню
    toolbar.lineВерхняя линия панели инструментов
    toolbar.line.lightПодсветка под ним
    toolbar.hotКнопка панели инструментов под указателем
    toolbar.hot.faintДругая часть разделённой кнопки, когда одна из них находится под указателем
    toolbar.pressedНажатая кнопка панели инструментов
    toolbar.hot.edgeКрай активной кнопки панели инструментов
    toolbar.hot.borderГраница активной кнопки панели инструментов (прозрачная: нет)
    toolbar.split.shadowРазделитель разделённой кнопки в покое: его тень
    toolbar.split.lightПодсветка разделителя
    toolbar.text.disabledНеактивная надпись на панели инструментов
    toolbar.arrowСтрелка кнопки раскрывающегося списка
    icon.disabledЦвет неактивного значка (начало)
    icon.disabled.endЦвет неактивного значка (конец)
    treeФон дерева категорий
    tree.linesПунктирные соединители дерева
    tree.expanderШевроны дерева, если вариант их рисует
    tree.frameРамка панели категорий
    progress.statusЗначение «Состояние» в окне хода выполнения
    progress.label.disabledНеактивная надпись в окне хода выполнения
    segments.borderРамка полосы сегментов
    segments.cornerУгловые пиксели полосы сегментов
    pieces.haveЧасть торрента, которая здесь
    pieces.partialКвадрат, обозначающий частично присутствующие части
    pieces.missingЧасть, которой ещё нет
    captionСтрока заголовка, которую MDM рисует сам
    caption.textЕё заголовок и глифы
    caption.text.inactiveЕё заголовок и глифы, когда окно неактивно, и неактивной кнопки
    caption.hotКнопка заголовка под указателем (оттенок поверх полосы)
    caption.pressedНажатая кнопка заголовка (оттенок поверх полосы)
    caption.buttonКнопка заголовка в покое, если стиль её показывает (оттенок поверх полосы; прозрачная: нет)
    caption.closeКнопка «Закрыть» под указателем
    caption.close.textГлиф кнопки «Закрыть» под указателем
    caption.inactiveЗаголовок окна, нарисованный MDM, когда окно неактивно (прозрачный: как при активности)
    drop-target.edgeКрай области перетаскивания в покое
    egui.panelФон панели egui
    egui.windowФон всплывающих подсказок
    egui.window.borderГраница всплывающих подсказок
    egui.textТекст всплывающих подсказок
    egui.selection.textЦвет выделенного текста в полях egui
    egui.extremeСамый тёмный (или самый светлый) фон egui
    egui.faintСлабый фон egui
    egui.widgetВиджеты egui в покое
    egui.widget.borderИх граница (прозрачная: нет)
    Все размеры (26)
    КлючЧто устанавливает
    radiusРадиус скругления кнопок, текстовых полей и выпадающих списков
    radius.buttonРадиус скругления глянцевой кнопки (Luna, Aero; у Aqua они круглые по краям)
    radius.partРадиус скругления тонированной части (область стрелки, кнопка-счётчик)
    radius.checkРадиус скругления флажка
    radius.flyoutРадиус скругления всплывающего окна (календарь, поле фильтра)
    radius.menu-itemРадиус скругления пункта меню под указателем
    radius.eguiРадиус скругления собственных виджетов egui
    radius.popupРадиус скругления всплывающих подсказок
    borderШирина границы элемента управления
    focus-lineВысота акцентной линии текстового поля в фокусе
    chevron.widthТолщина штриха шеврона выпадающего списка
    font.dialogТекст диалоговых окон (Tahoma в диалоговых окнах IDM)
    font.dialog.boldЗаголовки страниц «Параметров»
    font.titleЗаголовок окна (Tahoma Bold): расширения браузера, помощников
    font.codeКод для входа, который нужно ввести на странице сервиса
    font.uiТекст меню и главного окна (Segoe UI)
    font.ui.boldЖирные заголовки в главном окне
    font.smallМалый текст egui
    font.bodyОсновной текст egui: всплывающие подсказки, многострочные поля
    font.headingЗаголовки egui
    list.rowВысота строки в списке загрузок
    list.headerВысота заголовков столбцов списка загрузок
    tooltip.widthМесто переноса текста всплывающей подсказки
    tooltip.margin-xЛевый и правый отступ всплывающей подсказки
    tooltip.margin-topВерхний отступ всплывающей подсказки
    tooltip.margin-bottomНижний отступ всплывающей подсказки
    Стили всех элементов управления (7)
    КлючЕго стили
    field-focusлиния, граница, кольцо
    checkfluent, square, adwaita, breeze, luna, aero, aqua
    buttonfluent, breeze, luna, aero, aqua
    progressлиния, полоса, блоки, глянец
    scrollналожение, классический
    captionСистемная, Metro, Adwaita, Breeze, Luna, Aero, Aqua
    focusточечный, кольцо, рамка

    Или пусть его напишет ИИ-помощник

    Скопируйте этот запрос в своего ИИ-помощника и опишите желаемый вид в конце. Он предоставит помощнику формат, ключи и правила: читаемый текст и видимый фокус с обеих сторон, а также ничего, скопированного из чужих работ. Проверьте обе стороны самостоятельно, прежде чем делиться результатом.

    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. Попробуйте, не собирая MDM

    Поместите файл в папку тем MDM. Вид → Тема → Открыть папку с темами откроет её и создаст, если её нет. Она находится в папке данных MDM:

    Windows
    %APPDATA%\misterdownloadmanager\themes
    Linux
    ~/.local/share/misterdownloadmanager/themes
    macOS
    ~/Library/Application Support/misterdownloadmanager/themes
    Портативная копия
    data\themesрядом с программой

    В течение двух секунд она появится в Вид → Тема, под встроенными темами, с name, которую она сама себе присваивает. Выберите её, и всё окно изменится сразу. После редактирования файла выберите её снова в Вид → Тема, чтобы увидеть изменения. Вид → Поддержка темного режима и Всегда темная переключают между светлой и темной сторонами.

    Для этого служит Вид → Тема → Добавить файл темы…: выберите файл в любом месте, и MDM скопирует его в папку с темами и сразу же применит.

    Уже есть схема Base16 или pywal?

    Это уже тема. Схема Base16 или Base24 (.yaml) или colors.json от pywal, добавленная таким же образом, меняет только цвета MDM: фоны схемы за списком и окнами, текст остается читаемым (4.5:1 или более), синий цвет для фокуса, выделения и полосы прогресса. После запуска wal в Вид → Тема появится pywal, считанный из ~/.cache/wal/colors.json (%USERPROFILE%\.cache\wal\colors.jsonв Windows), и MDM будет следовать цветам новых обоев в течение двух секунд. Руководство показывает, какой цвет куда применяется.

  3. Поделиться

    Сделали что-то, что понравится другим? Откройте pull request на GitHub, который добавит это в crates/app/assets/themes, со следующим:

    • файл .toml и его папка с иконками, если таковая имеется;
    • скриншоты главного окна в светлом и темном режимах;
    • рядом с любыми значками SOURCES.txt, указывая, кто их нарисовал и по какой лицензии. Значки должны быть вашими собственными или под лицензией, которая позволяет MDM делиться ими (GPL-3.0), и никогда не копироваться из другой программы.

    Ещё не уверены? Сначала покажите это в обсуждениях. Руководство по участию объясняет, как здесь работают запросы на слияние.

Бесплатно, с открытым исходным кодом, без рекламы, без пробного периода.

Загрузить Mister Download Manager