Skip to main content

Documentation Index

Fetch the complete documentation index at: https://bym.lonestill.uk/llms.txt

Use this file to discover all available pages before exploring further.

Глобальные хоткеи для скорости, следующего/предыдущего трека и копирования названия. Работают когда YM свёрнут.
BYM.register({
  id: 'hotkey-controls',
  name: 'Hotkey Controls',
  version: '1.0.0',
  description: 'Глобальные горячие клавиши для управления YM.',
  settings: [
    { key: 'speedUp',   type: 'string', label: 'Скорость +0.1', default: 'Alt+Up' },
    { key: 'speedDown', type: 'string', label: 'Скорость -0.1', default: 'Alt+Down' },
    { key: 'speedReset',type: 'string', label: 'Сброс скорости',default: 'Alt+R' },
    { key: 'next',      type: 'string', label: 'Следующий',     default: 'Alt+Right' },
    { key: 'prev',      type: 'string', label: 'Предыдущий',    default: 'Alt+Left' },
    { key: 'copy',      type: 'string', label: 'Копировать трек',default: 'Ctrl+Shift+C' },
    { key: 'notify',    type: 'boolean',label: 'Уведомление при смене трека', default: true },
  ],
}, (api, getSetting) => ({
  start() {
    // Скорость
    api.Hotkeys.register(getSetting('speedUp') ?? 'Alt+Up', () => {
      const v = Math.min(4, parseFloat((api.Player.getSpeed() + 0.1).toFixed(2)));
      api.Player.setSpeed(v);
      api.UI.toast(v.toFixed(2) + '×', 600);
    });

    api.Hotkeys.register(getSetting('speedDown') ?? 'Alt+Down', () => {
      const v = Math.max(0.25, parseFloat((api.Player.getSpeed() - 0.1).toFixed(2)));
      api.Player.setSpeed(v);
      api.UI.toast(v.toFixed(2) + '×', 600);
    });

    api.Hotkeys.register(getSetting('speedReset') ?? 'Alt+R', () => {
      api.Player.resetSpeed();
      api.UI.toast('1.00×', 600);
    });

    // Навигация
    api.Hotkeys.register(getSetting('next') ?? 'Alt+Right', () => api.Player.next());
    api.Hotkeys.register(getSetting('prev') ?? 'Alt+Left',  () => api.Player.prev());

    // Копировать трек
    api.Hotkeys.register(getSetting('copy') ?? 'Ctrl+Shift+C', async () => {
      const track = api.Player.getTrack();
      if (!track) return;
      await api.Clipboard.write(`${track.artist}${track.title}`);
      api.UI.toast('Скопировано', 1000);
    });

    // Уведомление при смене трека
    if (getSetting('notify') !== false) {
      api.Events.on('trackChange', (track) => {
        if (track) api.UI.notify(track.artist, track.title);
      });
    }
  },

  stop() {
    api.Events.off('trackChange');
    // Hotkeys снимутся автоматически
  },
}));
Использованные API: api.Hotkeys, api.Player, api.UI, api.Clipboard, api.Events, settings