Автоматизируем открытие файлов и проектов
Я люблю разумную автоматизацию. То есть автоматизацию для выполнения полезной работы, а не автоматизацию ради красивого числа потраченных токенов. Прошло больше года с моей первой статьи про утилиту QuickSwitch. За это время добавилось несколько интересных опций для автоматического открытия файлов и проектов. В этой статье я разберу их комбинации и покажу, как можно быстро открывать нужные файлы и директории в любом приложении.
Автоматическое Переключение
Начну с простой демонстрации. В Проводнике у меня открыто несколько директорий с моим проектом. Я хочу открыть readme.md в Typora. После выбора File -> Open появился стандартный файловый диалог. Я могу вручную ввести адрес к файлу и открыть его.
Но давайте этот процесс немного автоматизируем. Утилита QuickSwitch предлагает возможность автоматически открыть любую директорию. Как только фокус перемещается в диалоговое окно выбора файла, файл уже становится виден. Все потому что директория с файлом у меня открыта в Проводнике, и режим AutoSwitch автоматически переключил на нее файловый диалог.
Как видите, я могу переключаться между разными директориями. Чтобы включить этот режим, достаточно открыть меню через Ctrl+Q, и выбрать “AutoSwitch” (или нажать клавишу A).
По-умолчанию AutoSwitch открывает первый путь из файлового менеджера. Мы привыкли использовать Проводник, однако для работы с файлами можно использовать Directory Opus, XYplorer, или Total Commander. В данной статье я буду использовать термин файловый менеджер, подразумевая один из них.
Если вы нажимали Alt+Tab, то замечали, что окна отображаются в порядке с недавнего открытого:
┌─────────────────────────┐
│Стек открытых окон
│ ┌──────────────────────┐
│ │ Window 1
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ Explorer <-- AutoSwitch
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ Window 2
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ XYplorer
│ └──────────────────────┘
└─────────────────────────┘
Мы будем рассматривать все пути и окна как стек. Открытое окно находится вверху, предыдущее — за ним, и так далее. Самое давнее окно находится внизу стека.
Прежде чем любой режим вроде AutoSwitch начнет действовать, утилита формирует “контекст” — стек доступных путей. Она обходит окна сверху вниз и находит все окна файловых менеджеров. Дальше все пути из этих окон становятся доступны для режима AutoSwitch. Мы можем выбрать, какое окно по счету добавить и какой путь по счету из найденного окна надо переключить.
Индекс и Источник
Откроем настройки выбрав Settings и выберем вкладку Menu. Различные опции на данной вкладке дополняют AutoSwitch: вы можете включить “Always AutoSwitch”, чтобы не пришлось включать его для каждого диалога. Или “Show menu always”, чтобы меню появлялось сразу после AutoSwitch.
Здесь мы можем изменить источник путей для “AutoSwitch” и порядковый номер пути из источника. В середине окна есть строка которая выглядит примерно так:
AutoSwitch 1 [индекс пути] path from ManagersPaths [источник путей]
QuickSwitch предоставляет 5 основных источников получения и сохранения путей:
-
Пути из файловых менеджеров (Проводник, Xyplorer, …)
-
Закрепленные пользователем пути (удерживая ПКМ нажать на любой путь в меню)
-
Сохраненные пути (закладки с настраиваемым названием и иконками)
-
Скопированные пути (все, что попало в буфер обмена и было похоже на путь)
-
Стек меню (все найденные пути выше в определенном порядке)
Каждый пункт этого списка — отдельная секция. Подробно разбирать их все мы не будем, ограничимся идеей, что у нас есть 5 источников откуда брать путь, чтобы автоматически открыть его при открытии файлового диалога. Разнообразие источников дает мне возможность открывать разные документы в зависимости от моей текущей работы.
Комбинация индекса и источника дает возможность гибко использовать AutoSwitch. Например, я закрыл Проводник. Теперь источник “ManagersPaths” пуст. Но я могу скопировать нужные пути, тогда у меня пополнится источник “ClipboardPaths”.
Стек меню
┌───────────────┐
| Скопированные пути
│ ┌────────────┐
│ │ Скопированный 1 <-- AutoSwitch
│ └────────────┘
│ ┌────────────┐
│ │ Скопированный 2 │
│ └────────────┘
└───────────────┘
После этого скопированные пути будут доступны для работы. Я могу открыть любой файл из них.
Другой пример — заранее подготовить пути, закрепив их в меню. Удерживая ПКМ я нажимаю на пути из проводника и они перемещаются в самый верх.
AutoSwitch их “видит” и может использовать. Оба источника — “MenuStack” и “PinnedPaths” в таком случае будут открывать один и тот же первый путь.
Стек меню
┌────────────────┐
| Закрепленные пути
│ ┌─────────┐
│ │ Закреп 1 <-- AutoSwitch
│ └─────────┘
│ ┌─────────┐
│ │ Закреп 2
│ └─────────┘
| Файловые менеджеры
│ ┌─────────┐
│ │ Проводник 1 │
│ └─────────┘
│ ┌─────────┐
│ │ Проводник 2 │
│ └─────────┘
└─────────────────┘
Теперь рассмотрим индекс. С путями из файлового менеджера все просто: индекс 1 — активная вкладка, индекс 2 — следующая за ней.

Например для “PinnedPaths” индекс будет означать “переключи закрепленный путь №1 отсчитывая сверху”. Для всех источников кроме файловых менеджеров путь отсчитывается сверху. Источники можно переключать на соседней вкладке Theme.
Отдельного внимания заслуживает весь стек меню (“MenuStack”), о котором я упомянул выше. Он включает в себя все остальные источники, но его содержимое может меняться. Если я закрепил пути и открыл новые в проводнике, на стек попадают разные пути.
Если бы я не закрепил пути, содержимое меню напрямую бы зависело от того, какие пути сейчас открыты в других окнах. В этом случае удобно автоматически переключаться на директорию с которой я сейчас работаю. Но если мне нужен один и тот же путь при открытии диалогов, я могу включить “Show pinned paths” на вкладке Theme:
AutoSwitch не сработает, если источник пуст. Например если выбран “ClipboardPaths”, но не был скопирован хотя бы один путь ранее — ничего не произойдет. Если был выбран “ManagersPaths” и закрыты все файловые менеджеры — ничего не произойдет.
Прочие опции на данной вкладке Menu дополняют AutoSwitch. Если вы включили “Show menu always”, то вы можете быстро менять содержимое Меню с помощью закрепления путей.
Окна
Если вы видели окна, появляющиеся при нажатии Alt+Tab, то наверняка заметили, что они отображаются в порядке последнего использования. Этот порядок также известен как “Z-order” или “упорядочивание по недавнему использованию”.
┌─────────────────────────────────────┐
│ Top of Z-Order (Foreground)
│ ┌─────────────────────────────────┐
│ │ Window 1 (Active, On Top)
│ └─────────────────────────────────┘
│ ┌──────────────────────┐
│ │ Window 2 (Middle)
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ Window 3 (Behind)
│ └──────────────────────┘
│ Bottom of Z-Order (Background)
└─────────────────────────────────────┘
На вкладке Theme можно выбрать из какого окна этого стека взять пути:
only from 0 [индекс окна] lister (Z-order)
Здесь индекс — это порядковый номер окна. Причем счет ведется не для всех окон, а индивидуально для каждого файлового менеджера (листера):
┌─────────────────────────────────────┐
│ ┌─────────────────────────────────┐
│ │ XYplorer 1 (Active)
│ └─────────────────────────────────┘
│ ┌──────────────────────┐
│ │ Window 1 (Middle)
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ XYplorer 2 (Recent)
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ DOpus 1 (Recent)
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ DOpus 2 (Old)
│ └──────────────────────┘
└─────────────────────────────────────┘
Если у вас, например, открыто 2 окна XYplorer, вы можете установить индекс равным 1 или 2, даже если между ними находятся другие окна. Окна из других приложений игнорируются.
По умолчанию установлено значение 0, которое означает “собирать пути из всех листеров” (окон). Последний открытый листер будет первым (индекс 1). Каждый открытый листер имеет порядковый номер (индекс), и вы можете настроить отображение путей только из этого окна. Таким образом, последнее открытое окно имеет индекс 1, недавно открытое — 2 и так далее. Таким образом, индекс листера 2 означает “отображать вкладки из предыдущего активного листера” (не текущего, который сейчас активен).
Рабочие столы
Чуть ниже на этой же вкладке можно включить “from all virtual desktops” — отображать все пути со всех листеров со всех рабочих столов (по-умолчанию). Если вы выбрали нужное окно, нужный индекс конкретного окна чуть выше, то счет окон… остается прежним: система и QuickSwitch считают окна с последнего до самого давнего. Это может несколько сломать ожидания о группировке окон по рабочим столам: отдельной нумерации для каждого рабочего стола не существует. Поэтому проще всего запомнить простой пример: если у вас открыто два листера, один на одном рабочем столе, другой — на другом, последний открытый листер имеет индекс 1, а второй — индекс 2. А вот какой конкретно — зависит от того, какой рабочий стол вы открывали последним.
Чтобы не путаться, не стоит открывать один и тот же файловый менеджер на разных рабочих столах. Используйте панели и вкладки (ниже) для упрощения навигации или перегруппируйте окна по разным столам. В любом случае у QuickSwitch есть меню с иконками, которые подскажут, из какого файлового менеджера приехал путь. А закрепленные пути помогут избавиться от постоянного замешательства “что и где открыто”.
Вкладки и Панели
Если вы выбрали “ManagersPaths” или “MenuStack”, то вы можете дополнительно изменить поведение AutoSwitch на вкладке Theme.
Если вы работаете на Windows 10 и ниже, вы можете использовать Total Commander вместо Проводника, ведь там уже больше 20 лет есть вкладки и две панели: текущая и целевая. По-умолчанию QuickSwitch формирует стек из всех вкладок всех панелей (включая и другие файловые менеджеры, например XYplorer и Directory Opus). Если я хочу держать проекты на одной панели, а вспомогательные директории — на другой, я могу включить опцию “only from active pane”. В этом случае AutoSwitch будет выбирать путь только из той панели, что находится в фокусе.
Помимо этого я могу держать некоторые вкладки на этой панели на постоянной основе для быстрой навигации. Ровно как и пути в QuickSwitch можно закрепить, так и вкладки на панели можно закрепить. Если они мне нужны только как вспомогательные, я могу выключить опцию “show locked tabs” чтобы исключить такие вкладки.
И наконец я могу включить “only the active tab”, чтобы не думать о панелях и закрепленных вкладках. Текущая вкладка всегда будет единственной для “ManagersPaths”. Если эта единственная вкладка заблокирована и включена опция выше, ничего не будет добавлено в стек. То же касается и опции активная “only from active pane”: если все вкладки панели заблокированы, они не будут добавлены на стек Меню.
Обратите внимание: если вы ничего не меняли прежде, то эти опции влияют на каждое окно файлового менеджера по-отдельности. QuickSwitch собирает все вкладки со всех окон файловых менеджеров. Если в одном окне все вкладки заблокированы, а в другом нет, то вкладки из другого окна будут доступны.
┌─────────────────────────────────────┐
│ Стек путей формируется из:
│ ┌─────────────────────────────────┐
│ │ XYplorer 1 (Активное)
│ └─────────────────────────────────┘
│ ┌──────────────────────┐
│ │ Window 1 (Что-то)
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ XYplorer 2 (Недавнее)
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ DOpus 1 (Недавнее)
│ └──────────────────────┘
│ ┌──────────────────────┐
│ │ DOpus 2 (Старое)
│ └──────────────────────┘
└─────────────────────────────────────┘
Как работать только с одним конкретным окном описано выше.
Заключение
Поэкспериментировав с настройками можно довольно быстро найти для себя свой способ автоматизировать открытие документов. Как и все новое, QuickSwitch необходимо изучать и пробовать. Но вместе с изучением нового приходят и новые возможности. Я поощряю эксперименты, а потому добавляю самые разные полезные опции в QuickSwitch. Исследуйте настройки и источники путей, чтобы использовать скрытый потенциал инструмента на полную. Если захотите помочь развитию проекта, загляните в contributing.md.
Автор: Rafaell0

