Справка по скриптовым объектам

Скрипту доступны практически все настройки программы, текущего GPU и отдельных режимов работы, которые доступны из GUI. Также, имеется доступ к некоторым системным функциям. Все эти функции и параметры доступны через глобальный объект $. Ниже, в документации, если не указано обратное, то считается, что поле объекта доступно только для чтения.

Помимо этого, имеется доступ и к большинству стандартных функций и объектов ECMAScript. Список поддерживаемых объектов ECMAScript можно найти здесь: https://doc.qt.io/qt-5.12/ecmascript.html.

Константы

  • $.dev.FAN_SPEED_GPUNumber

    Скрипт должен вернуть эту константу из основной функции, если на данном шаге выполнения скрипта необходимо передать управление вентиляторами видеокарте.

  • $.dev.FAN_SPEED_NO_CHANGENumber

    Скрипт должен вернуть эту константу из основной функции, если на данном шаге выполнения скрипта программе не следует никак влиять на скорость вентиляторов. При этом, скорость вентиляторов всё же может измениться, если ей на данный момент управляет видеокарта (например, на прошлом шаге главная функция скрипта вернула $.dev.FAN_SPEED_GPU).

  • $.dev.MODE_CURVE : String

  • $.dev.MODE_FAN_TOGGLE : String

  • $.dev.MODE_SCRIPT : String

  • $.dev.MODE_GPU : String

    Константы, обозначающие режимы работы программы. Подробнее см. в описании $.dev.mode.

  • $.dev.SCRIPT_STATUS_STOPPED: String

  • $.sys.SCRIPT_STATUS_PAUSED: String

  • $.sys.SCRIPT_STATUS_RUNNING: String

    Константы, обозначающие состояние скрипта. Подробнее см. в описании $.dev.scriptStatus.

  • $.sys.FAILED_AT_START: String

  • $.sys.FAILED_AT_WRITE: String

  • $.sys.FAILED_AT_FINISH: String

    Константы, обозначающие этап, на котором выполнение запущенной из скрипта внешней программы прервалось. Подробнее см. в соответствующем разделе описания функции $.sys.exec.

Данные о текущем GPU

  • $.dev.idString

    Уникальный идентификатор GPU.

    Пример: "GPU-c3b01b58-4dbf-1e8f-8f72-a8360f030d4c"

  • $.dev.realNameString

    Название GPU, заданное его производителем.

    Пример: "GeForce GTX 1060 6GB"

  • $.dev.nameString

    Название GPU, которое отображается в графическом интерфейсе программы. Если пользователь задал своё название ($.dev.customName не пустая строка), то это название будет в $.dev.name, иначе там будет значение из $.dev.realName.

    Пример: "My Fast GPU :)"

  • $.dev.tempNumber

    Текущая температура GPU в градусах Цельсия.

  • $.dev.fanSpeedNumber

    Текущая скорость вентиляторов в диапазоне от 0 до 100. Может отличаться от той скорости, которую вернула главная функция, в зависимости от того, какие скорости реально поддерживаются видеокартой.

  • $.dev.fanManualModeBoolean

    Если true, то вентиляторами управляет программа. Если false - вентиляторами управляет GPU.

  • $.dev.targetFanSpeedNumber

    Скорость вентиляторов, которую хочет установить текущий режим. В отличие от $.dev.fanSpeed, может принимать значения $.dev.FAN_SPEED_GPU и $.dev.FAN_SPEED_NO_CHANGE.

  • $.dev.gpuRateNumber

    Процент времени за последний период семплирования (как правило 1 секунда), в течение которого было задействовано хотя бы одно ядро GPU процессора. Если $.dev.plugin.canGetGpuRate = false, то это значение всегда равно нулю.

    Пример:

    console.log(`Процессор ${$.dev.name} загружен на ${$.dev.gpuRate}%`)
    
  • $.dev.memoryRateNumber

    Процент времени за последний период семплирования (как правило 1 секунда), в течение которого осуществлялись чтение или запись памяти GPU. Если $.dev.plugin.canGetMemoryRate = false, то это значение всегда равно нулю.

    Пример:

    console.log(`Память ${$.dev.name} загружена на ${$.dev.memoryRate}%`)
    
  • $.dev.totalMemoryNumber

    Общее кол-во памяти в байтах. Если $.dev.plugin.canGetTotalMemory = false, то это значение всегда равно нулю.

  • $.dev.freeMemoryNumber

    Общее кол-во свободной памяти в байтах. Если $.dev.plugin.canGetFreeMemory = false, то это значение всегда равно нулю.

Функции для работы с GPU

  • $.dev.loadGeneralSettings()

    Загрузить ранее сохранённые общие настройки видеокарты.

  • $.dev.saveGeneralSettings()

    Сохранить в файл общие настройки приложения.

  • $.dev.loadModeSettings()

    Загрузить настройки режимов приложения. Эти настройки находятся на вкладках основного окна программы. Выполнение данной функции равносильно нажатию кнопки "Отмена" в этом окне, но только без последующего закрытия окна.

  • $.dev.saveModeSettings()

    Сохранить настройки режимов приложения. Эти настройки находятся на вкладках основного окна программы. Выполнение данной функции равносильно нажатию кнопки "Сохранить" в этом окне, но только без последующего закрытия окна.

  • $.dev.restartScript()

    Запускает новый скрипт на основе текста из $.dev.scriptText. При этом текущий скрипт будет выполнен до конца, а затем остановлен.

  • $.dev.stopScript()

    Останавливает текущий скрипт после того, как он быдет выполнен до конца.

  • $.dev.showNotification(msg: String, isCritical: Boolean)

    Показать системное уведомление с текстом msg. Если isCritical = true, то у сообщения устанавливается повышенный приоритет (то, как это повлияет на отображение уведомления, будет решать система).

    В зависимости от операционной системы и ей версии, системные уведомления могут поддерживать некоторые теги HTML, например <b> или &;lti>, а также ссылки <a>.

    Пример:

    // Показ сообщения с повышенным приоритетом
    $.dev.showNotification('Ваша видеокарта скоро расплавится!', true)
    
    // Показ HTML-сообщения
    // (может не работать или показывать не то, что нужно, на некотрых платформах)
    $.dev.showNotification(
        'Вот вам <a href="https://example.com/">один <i>хороший</i> пример</a>.')
    
  • $.dev.customFunction(name: String, val: Any = undefined)Any

    Запустить функцию name для данного устройства и вернуть результат. В функцию можно любое значение val, а можно не передавать. Список доступных функций можно получить через свойство $.dev.plugin.customFunctions.

    Пример:

    // Пример вызова функции из плагина nvidia-nvml
    const reasons = $.dev.customFunction('getThrottleReasons')
    if(reasons.swThermalSlowdown || reasons.hwThermalSlowdown)
        console.log(`Троттлинг из-за высокой температуры! Код: 0x${reasons.code.toString(16)}`)
    

Общие настройки для видеокарты

  • $.dev.customNameString read/write

    Заданное пользователем название GPU.

    Пример: "My Fast GPU :)"

  • $.dev.colorTempNormal: ColorString read/write

  • $.dev.colorTempWarning: ColorString read/write

  • $.dev.colorTempDanger: ColorString read/write

  • $.dev.tempWarning: Number read/write

  • $.dev.tempDanger: Number read/write

    Если текущая температура видеокарты (в градусах Цельсия) меньше, чем $.dev.tempWarning, то число в иконке из трея, обозначающее температуру, будет иметь цвет $.dev.colorTempNormal. Если температура больше или равна $.dev.tempWarning, но не больше, чем $.dev.tempDanger, то число будет иметь цвет $.dev.colorTempWarning. Если температура больше или равна $.dev.tempDanger, то число будет иметь цвет $.dev.colorTempDanger. Подробнее о типе данных ColorString читайте в разделе "Вспомогательные функции".

  • $.dev.colorFanSpeedNormal: ColorString read/write

  • $.dev.colorFanSpeedWarning: ColorString read/write

  • $.dev.colorFanSpeedDanger: ColorString read/write

  • $.dev.fanSpeedWarning: Number read/write

  • $.dev.fanSpeedDanger: Number read/write

    Если скорость вентиляторов видеокарты (в диапазоне от 0 до 100) меньше, чем $.dev.fanSpeedWarning, то рамка иконки в трее будет иметь цвет $.dev.colorFanSpeedNormal. Если скорость больше или равна $.dev.fanSpeedWarning, но не больше, чем $.dev.fanSpeedDanger, то рамка будет иметь цвет $.dev.colorFanSpeedWarning. Если скорость больше или равна $.dev.fanSpeedDanger, то рамка будет иметь цвет $.dev.colorFanSpeedDanger. Подробнее о типе данных ColorString читайте в разделе "Вспомогательные функции".

  • $.dev.colorBackground: ColorString read/write

    Цвет фона иконки в трее.

  • $.dev.trayUpdateIntervalNumber read/write

    Минимальный интервал обновления данных в трее для данной видеокарты. Измеряется в секундах.

Настройки режима "Кривая"

Данные настройки относятся к режиму "Кривая".

  • $.dev.curvePointsPoint[] read/write

    Хранит массив точек кривой. Массив представлен стандартным типом Array. Каждая точка представляет собой объект со свойствами x и y, где x - температура в градусах Цельсия, y - скорость вентиляторов в диапазоне от 0 до 100 включительно. Содержимое данного массива нельзя менять напрямую. Вместо этого необходимо создать его копию с помощью функции $.tools.clone, изменить эту копию, а затем присвоить массиву $.dev.curvePoints эту копию. После изменения $.dev.curvePoints все данные в нём будут нормализованы относительно границ графика, поэтому записанные в этот массив данные могут отличаться от тех данных, которые реально там окажутся в конечном итоге.

    Пример:

    // увеличить скорость вентиляторов для предпоследней точки
    var pts = $.tools.clone($.dev.curvePoints)
    pts[pts.length-2].y += 10
    $.dev.curvePoints = pts
    
    // задать новый набор точек
    $.dev.curvePoints = [
        {x: 0, y: 0},
        {x: 60, y: 0},
        {x: 100, y: 50}
    ]
    
    // попытка задать некорректный набор точек
    $.dev.curvePoints = [
        {x: 20, y: 30},
        {x: 50, bogus: 123},
        {x: 100, y: -10}
    ]
    $.dev.curvePoints // [{x: 0, y: 30}, {x: 50, y: 0}, {x: 100, y: 0}]
    
  • $.dev.curveMaxIncTempDiff: Number read/write

    Значение параметра "Макс. увел. темп.".

  • $.dev.curveIncDelay: Number read/write

    Значение параметра "Задержка увел.".

  • $.dev.curveMaxDecTempDiff: Number read/write

    Значение параметра "Макс. уменьш. темп.".

  • $.dev.curveDecDelay: Number read/write

    Значение параметра "Задержка уменьш.".

  • $.dev.curveRefTemp: Number

    Температура, которая используется для расчёта требуемой скорости вентиляторов по графику. См. раздел "Гистерезис", там эта температура обозначена как T1.

Настройки режима "Вкл./выкл. вентиляторов"

Данные настройки относятся к режиму "Вкл./выкл. вентиляторов".

  • fanToggleEnableFansTemp: Number read/write

    Вентиляторы включатся, если температура видеокарты будет равна или больше данного значения на протяжении fanToggleEnableFansTempSecs секунд.

  • fanToggleEnableFansTempSecs: Number read/write

    Время в секундах, после которого включаются вентиляторы, если температура всё это время была как минимум fanToggleEnableFansTemp.

  • fanToggleUseLowFanSpeedBoolean read/write

    Включить правило, по которому вентиляторы будут отключаться, если их скорость не будет превышать fanToggleLowFanSpeed на протяжении fanToggleLowFanSpeedSecs секунд.

  • fanToggleLowFanSpeed: Number read/write

    Вентиляторы отключатся, если их скорость была меньше или равна данного значения на протяжении fanToggleLowFanSpeedSecs секунд. Применяется только если fanToggleUseLowFanSpeed = true.

  • fanToggleLowFanSpeedSecs: Number read/write

    Время в секундах, после которого вентиляторы отключатся, если их скорость всё это время не будет превышать fanToggleLowFanSpeed. Применяется только если fanToggleUseLowFanSpeed = true.

  • fanToggleUseLowTempBoolean read/write

    Включить правило, по которому вентиляторы будут отключаться, если температура видеокарты не будет превышать fanToggleLowTemp на протяжении fanToggleLowTempSecs секунд.

  • fanToggleLowTemp: Number read/write

    Вентиляторы отключатся, если температура видеокарты не будет превышать данного значения на протяжении fanToggleLowTempSecs секунд. Применяется только если fanToggleUseLowTemp = true.

  • fanToggleLowTempSecs: Number read/write

    Время в секундах, после которого вентиляторы отключатся, если температура видеокарты всё это время не будет превышать fanToggleLowTemp. Применяется только если fanToggleUseLowTemp = true.

Настройки режима "Скрипт"

Данные настройки относятся к режиму "Скрипт".

  • $.dev.scriptText: String read/write

    Текст скрипта, который отображается в редакторе. Этот текст может не совпадать с текстом запущенного на данный момент скрипта (см. след. параметр).

  • $.dev.runningScriptText: String

    Текст скрипта, который выполнялся последний раз или выполняется сейчас.

  • $.dev.scriptOverride: Boolean read/write

    Включает режим "Переопределения".

  • $.dev.scriptStatus: String

    Состояние, которое примет скрипт по завершению текущего шага. Может принимать следующие значения:

      • Значение

      • Соответствующая константа

      • Режим

    Пример:

    if($.dev.scriptStatus == $.dev.SCRIPT_STATUS_STOPPED)
        console.log('Скрипт будет остановлен после текущего шага')
    
  • $.dev.scriptError: String

    Текущая ошибка, которая произошла в скрипте. Хоть это свойство и доступно через скрипт, но для скрипта оно будет всегда равно пустой строке, т.к. скрипт не может быть запущен при наличии ошибок. Это свойство используется исключительно во внутренних скриптах программы.

Данные о плагине для GPU

  • $.dev.plugin.category: String

    Категория плагина. Обозначает класс GPU, с которыми работает плагин. В GPU Fan Meister не может быть загружено одновременно более одного плагина из отдельно взятой категории.

    Пример: "nvidia"

  • $.dev.plugin.id: String

    Уникальный идентификатор плагина.

    Пример: "nvidia-nvml"

  • $.dev.plugin.name

    Название плагина.

    Пример: "NVIDIA (NVML)"

  • $.dev.plugin.description: String

    Описание плагина.

    Пример: "Плагин для видеокарт NVIDIA, использующий библиотеку NVML."

  • $.dev.plugin.copyright: String

    Информация об авторах плагина.

    Пример: "Alkatraz Studio, 2018"

  • $.dev.plugin.misc: String

    Любая другая информация о плагине, не подходящая для других полей.

    Пример: "Сайт проекта: https://example.com\nПочта: user@example.com"

  • $.dev.plugin.version: String

    Версия плагина в формате SemVer.

    Пример: "1.0.5"

  • $.dev.plugin.majorVersion: Number

    Мажорная версия плагина. Например, для версии 1.0.5 мажорная версия будет равна 1. Подробнее о системе нумерации версий см. SemVer.

  • $.dev.plugin.minorVersion: Number

    Минорная версия плагина. Например, для версии 1.0.5 минорная версия будет равна 0. Подробнее о системе нумерации версий см. SemVer.

  • $.dev.plugin.patchVersion: Number

    Патч-версия плагина. Например, для версии 1.0.5 патч-версия будет равна 5. Подробнее о системе нумерации версий см. SemVer.

  • $.dev.plugin.buildDate: Date

    Дата и время сборки плагина. Если эта информация не доступна, то возвращается объект "Invalid Date".

    Пример:

    if(isNaN($.dev.plugin.buildDate))
        console.log('Дата сборки плагина недоступна')
    else
        console.log(`Дата сборки плагина: ${$.dev.plugin.buildDate}`)
    
  • $.dev.plugin.deviceCount: Number

    Кол-во видеокарт, которые плагин нашёл в системе.

  • $.dev.plugin.canGetGpuRate: Boolean

    Если true, то поле $.dev.gpuRate содержит правильные данные.

  • $.dev.plugin.canGetMemoryRate: Boolean

    Если true, то поле $.dev.memoryRate содержит правильные данные.

  • $.dev.plugin.canGetTotalMemory: Boolean

    Если true, то поле $.dev.totalMemory содержит правильные данные.

  • $.dev.plugin.canGetFreeMemory: Boolean

    Если true, то поле $.dev.freeMemory содержит правильные данные.

  • $.dev.plugin.customFunctions: Array<String>

    Список функций, которые можно запустить через $.dev.customFunction. Описание каждой из функций ищите в документации к соответствующему плагину.

Данные о приложении

  • $.app.id: String

    Идентификатор приложения.

    Пример: "|project-id|"

  • $.app.title

    Название приложения.

    Пример: "|project|"

  • $.app.author

    Автор приложения.

    Пример: "|project-org|"

  • $.app.version: String

    Версия приложения в формате SemVer.

    Пример: "1.0.5"

  • $.app.majorVersion: Number

    Мажорная версия плагина. Например, для версии 1.0.5 мажорная версия будет равна 1. Подробнее о системе нумерации версий см. SemVer.

  • $.app.minorVersion: Number

    Минорная версия плагина. Например, для версии 1.0.5 минорная версия будет равна 0. Подробнее о системе нумерации версий см. SemVer.

  • $.app.patchVersion: Number

    Патч-версия плагина. Например, для версии 1.0.5 патч-версия будет равна 5. Подробнее о системе нумерации версий см. SemVer.

Данные о системе

Через объект $.sys скрипт может получить доступ к некоторым характеристикам системы (например, название операционной системы). Свойства данного объекта соответствуют методам, описанным на https://doc.qt.io/qt-5.12/qsysinfo.html.

  • $.sys.buildAbi: String

    Полное описание архитектуры, для которой предназначена текущая сборка приложения.

    Пример: "x86_64-little_endian-lp64"

  • $.sys.buildCpuArchitecture: String

    Архитектура CPU, для которой предназначена текущая сборка приложения.

    Пример: "x86_64"

  • $.sys.currentCpuArchitecture: String

    Архитектура CPU, на котором выполняется сейчас программа.

    Пример: "x86_64"

  • $.sys.kernelType: String

    Тип ядра операционной системы.

    Пример: "linux"

  • $.sys.kernelVersion: String

    Версия ядра операционной системы.

    Пример: "4.15.0-34-lowlatency"

  • $.sys.prettyProductName: String

    Название операционной системы (может не соответствовать действительности).

    Пример: "Ubuntu 18.04.1 LTS"

  • $.sys.productType: String

    Тип дистрибутива операционной системы.

    Пример: "ubuntu"

  • $.sys.productVersion: String

    Версия операционной системы.

    Пример: "18.04"

Системные функции

  • $.sys.exec(partsString|Object, optsObject = {})Object

    Запуск внешней программы. В массиве parts можно задать исполняемый файл (первый элемент), а также аргументы для запускаемой программы (последующие элементы). Если аргументы не нужны, то вместо массива в parts можно указать исполняемый файл как строку.

    opts - набор параметров. Список поддерживаемых параметров для $.sys.exec:

    • env: Object

      Набор переменных окружения. Этот набор будет добавлен к переменным окружения, с которыми был запущен GPU Fan Meister. При совпадении названий переменных, переменные из env перезапишут переменные GPU Fan Meister.

      Значение по-умолчанию: {}

    • detached: Boolean

      Не дожидаться, пока процесс завершится, а вернуть управление скрипту сразу же. При этом, нельзя будет получить код выхода или данные из stdout и stderr.

      Значение по-умолчанию: false

    • timeout: Number

      Максимально допустимое время выполнения программы в секундах. Если запускаемая программа выполняется дольше, чем указанное время, то она принудительно завершается.

      Значение по-умолчанию: 3

    • stdin: String

      Строковые данные в кодировке UTF-8, которые будут переданы запускаемой программе в стандартный поток ввода stdin.

      Значение по-умолчанию: ""

    $.sys.exec возвращает объект, в котором содержится информация о запущенном процессе:

    • started: Boolean

      Если true, то программа была успешно запущена. Это, однако, не означает, что программа была успешно завершена.

    • crashed: Boolean

      Если true, то в процессе работы программы произошёл непредвиденный сбой. Отсутствует, если opts.detached = true.

    • failedAt: String

      Идентификатор этапа, на котором произошла ошибка в программе.

      Возможные значения

      Значение

      Соответствующая константа

      Описание ситуации

      "start"

      $.sys.FAILED_AT_START

      Не удалось запустить программу.

      "write"

      $.sys.FAILED_AT_WRITE

      Ошибка при записи данных в stdin. Если crashed = false, то значит время, отведённое на запись данных в stdin, истекло.

      "finish"

      $.sys.FAILED_AT_FINISH

      Ошибка при ожидании завершения программы. Если crashed = false, то значит программа не успела завершиться в срок.

      Если opts.detached = true, то данный параметр может содержать только значение $.sys.FAILED_AT_START.

    • stdout: String

      Содержимое стандартного вывода программы (stdin), представленное как строка в кодировке UTF-8. Отсутствует, если opts.detached = true.

    • stderr: String

      Содержимое стандартного вывода ошибок программы (stderr), представленное как строка в кодировке UTF-8. Отсутствует, если opts.detached = true.

    • exitCode: Number

      Код выхода программы. Отсутствует, если opts.detached = true.

    Пример:

    // выполнить программу и показать результат
    console.log($.sys.exec('fortune').stdout)
    
    // выполнить программу и проверить, не произошла ли ошибка приз запуске
    if($.sys.exec('ls').failedAt == $.sys.FAILED_AT_START)
        console.log('Программу не удалось запустить')
    
    // выполнить программу, передав ей данные в stdin и дополнительные аргументы
    var result = $.sys.exec(['cowsay', '-t'], {
        stdin: $.dev.name,
        timeout: 1
    })
    console.log(
        result.exitCode === 0
            ? result.stdout
            : 'Произошла ошибка: ' + result.failedAt + ': ' + result.stderr
    )
    

Вспомогательные функции

  • $.tools.fromColor(color: ColorString) : ColorObject

  • $.tools.fromColorF(color: ColorString) : ColorObject

  • $.tools.toColor(color: ColorObject) : ColorString

  • $.tools.toColorF(color: ColorObject) : ColorString

    Преобразование строки, содержащую информацию о цвете (тип ColorString), в объект, содержащий информацию по отдельным цветовым компонентам RGBA (тип ColorObject), и наоборот. Суффикс "F" означает, что ColorObject содержит данные в нормализованной форме (от 0 до 1 включительно). Функции без этого суффикса подразумевают, что каждая цветовая компонента RGBA содержит значения в диапазоне от 0 до 255 включительно. Тип ColorString может представлять из себя строку в следующих форматах: #rrggbb (например, "#ff9900"), #aarrggbb (например, "#eeff9900") или строковое представление цвета (например, "lightblue"). Функции toColor и toColorF воззвращают цвет в формате #rrggbb, если прозрачность у цвета отсутствует (альфа-канал имеет максимальное значение). Если прозрачность имеется, то эти функции возвращают цвет в формате #aarrggbb.

    Пример:

    var cStr = $.dev.colorTempWarning // #ff9900
    var cObj = $.tools.toColorF(cStr) // {r: 1, g: 0.6, b: 0, a: 1}
    cObj.g = 0.2
    cObj.a = 0.25
    cStr = $.tools.fromColorF(cObj) // #40809900
    $.dev.colorTempWarning = cStr
    
    cStr = 'lightblue'
    cObj = $.tools.toColor(cStr) // {r: 173, g: 216, b: 230, a: 255}
    cStr = $.tools.fromColor(cObj) // #add8e6
    
  • $.tools.clone(obj: Object, deep: Boolean = false)Object

    Создание копии объекта obj. Если deep = true, то рекурсивно создаются копии всех вложенных свойств объекта. Если deep = false, то свойства объектов копируются путём простого присваивания.

    Пример:

    var obj = {a: {}}
    
    var shallowCopy = $.tools.clone(obj)
    obj === shallowCopy // false
    obj.a === shallowCopy.a // true
    
    var deepCopy = $.tools.clone(obj, true)
    obj === shallowCopy // false
    obj.a === shallowCopy.a // false