Справка по скриптовым объектам¶
Скрипту доступны практически все настройки программы, текущего 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.modeString read/write
Текущий режим программы для данной видеокарты.
¶ Значение
Соответствующая константа
Режим
"curve"
$.dev.MODE_CURVE
"fanToggle"
$.dev.MODE_FAN_TOGGLE
"script"
$.dev.MODE_SCRIPT
"gpu"
$.dev.MODE_GPU
Пример:
if($.dev.mode == $.dev.MODE_CURVE) console.log('Сейчас мы в режиме "Кривая"')
- $.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
Состояние, которое примет скрипт по завершению текущего шага. Может принимать следующие значения:
Значение
Соответствующая константа
Режим
"curve"
$.dev.SCRIPT_STATUS_STOPPED
Скприпт остановлен.
"fanToggle"
$.dev.SCRIPT_STATUS_PAUSED
Скприпт на паузе.
"script"
$.dev.SCRIPT_STATUS_RUNNING
Скрипт запущен.
Пример:
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