Что такое XDragMover?
Во многих окружениях рабочего стола Linux (KDE, GNOME и т. д.) достаточно удерживать клавишу-модификатор и нажать кнопку мыши в любом месте окна, чтобы перетащить его — удерживая тот же модификатор с правой кнопкой мыши, можно точно так же изменить размер окна от ближайшего угла. В macOS такого встроенного аналога нет.
XDragMover воссоздаёт этот привычный, эффективный рабочий процесс в macOS — это небольшая, быстрая и надёжная утилита, вдохновлённая классическим инструментом перемещения и изменения размера окон в стиле KDE, изначально опубликованным на corz.org. Она работает незаметно в строке меню, без раздутых фреймворков и фоновых демонов. Проект ранее назывался KDEMoverSizerMacOS (а до этого — KDESizeMoverMac) — если вы искали именно эти названия, вы попали по адресу.
Установка
- Нажмите Скачать DMG выше.
- Откройте скачанный
XDragMover.dmgи перетащите XDragMover.app в папку Программы. - Запустите XDragMover из папки «Программы» или через Spotlight. Приложение подписано Developer ID и нотариально заверено (notarized) Apple, поэтому оно открывается как обычно — без предупреждения Gatekeeper или дополнительного шага подтверждения. Оно работает незаметно как элемент строки меню, без собственного значка в Dock или окна.
- Предоставьте разрешение специальных возможностей, когда об этом попросят (Системные настройки → Конфиденциальность и безопасность → Специальные возможности) — это необходимо, чтобы XDragMover мог перемещать и изменять размер окон других приложений; см. Обзор архитектуры для подробностей.
Возможности
- Перемещение модификатором + левый клик. Удерживайте настроенный модификатор (по умолчанию
⌘) и перетаскивайте в любом месте окна — оно следует за мышью 1:1, пока вы не отпустите кнопку. - Изменение размера модификатором + правый клик. Ближайший к точке клика угол окна становится маркером изменения размера, точно как если бы вы схватили его напрямую.
- Настраиваемая функция «фокус следует за мышью». При желании передавайте фокус ввода окну под курсором после того, как он оставался неподвижным короткое, настраиваемое время (экспериментально).
- Исключение отдельных приложений. Список исключений на основе regex — заполняемый через средство выбора «Добавить из открытых окон…» или вручную — навсегда защищает выбранные приложения от перемещения/изменения размера.
- Настраиваемый модификатор. Любая комбинация Command/Option/Control/Shift (кроме одного Shift) — подстройте под свой рабочий процесс.
- Лёгкое и нативное. Никаких расширений ядра, никаких хаков — только API macOS Accessibility и Quartz Event Services.
Как это работает
XDragMover работает как фоновое приложение строки меню, устанавливающее системный монитор событий через API Quartz Event Services, отслеживающий состояние клавиш-модификаторов и мыши по всей системе. При обнаружении подходящего жеста приложение определяет целевое окно через macOS Accessibility API и напрямую управляет его положением или размером. Поскольку приложение отслеживает события ввода по всей системе и перемещает окна, принадлежащие другим приложениям, XDragMover требует разрешение специальных возможностей (Системные настройки → Конфиденциальность и безопасность → Специальные возможности), предоставляемое один раз при первом запуске.
Требования
- macOS 13 Ventura, macOS 14 Sonoma, macOS 15 Sequoia, macOS 26 Tahoe или новее
- Разрешение специальных возможностей, предоставленное приложению
Проект и лицензия
Каждый помеченный тегом релиз публикует собираемый «соответствующий исходный
код» («Corresponding Source»), требуемый согласно GPLv3 §6, прямо рядом со
своим подписанным .dmg: возьмите source.zip из того же
релиза,
что и установщик. Основной репозиторий разработки приватный; этот репозиторий,
xdragmover-release,
— публичный дом для подписанных сборок и соответствующего им исходного кода.
XDragMover распространяется по лицензии GNU General Public License v3.0.