# Teleport: одна иконка для приложений и ссылок


Написал небольшое приложение для Android — Teleport[^repo]. Его иконка работает как настраиваемая кнопка: обычное нажатие открывает выбранное приложение или ссылку, долгое — меню с другими действиями.

Например, нажатием можно открывать читалку, а в меню держать RSS-клиент и сайт с книгами. Или поставить на основное действие домашнюю панель, а рядом собрать ссылки на отдельные сервисы. При этом менять привычный лаунчер не нужно.

## Зачем отдельная иконка

На Android уже есть папки, ярлыки сайтов и быстрые действия приложений. Teleport пригодится, когда хочется собрать несколько связанных действий в одном месте и назначить одно из них основным.

У папки сначала нужно открыть список, а затем выбрать приложение. У Teleport основное действие запускается сразу. Меню остаётся для того, что нужно реже. И набор в нём определяю я: можно объединить приложения разных разработчиков и обычные ссылки.

Это не замена всему рабочему столу. Если достаточно поставить рядом две иконки или сделать папку, отдельное приложение может и не понадобиться.

## Как это работает

При первом запуске открываются настройки. В них две кнопки:

- `Add app` — выбрать установленное приложение; в списке есть поиск по названию.
- `Add link` — добавить адрес и подпись для него. Это может быть обычный URL или deep link, который понимает другое приложение.

Кружок справа от действия выбирает, что откроется при обычном нажатии на иконку Teleport. Стрелки меняют порядок действий, корзина удаляет ненужное. Порядок важен: именно первые действия попадут в меню лаунчера.

![Настройки Teleport: Chrome выбран основным действием, рядом кнопки добавления приложения и ссылки](https://static.juev.org/2026/11/teleport-settings.png "Экран настроек. На скриншоте добавлен только Chrome.")

После настройки Teleport не показывает свой экран при каждом запуске. Нажатие передаёт управление выбранной цели, а промежуточная activity завершается. Чтобы вернуться к настройкам, нужно удержать иконку и выбрать `Open Teleport settings`.

![Меню долгого нажатия на иконку Teleport: настройки и запуск Chrome](https://static.juev.org/2026/11/teleport-menu.png "Долгое нажатие открывает штатное меню лаунчера. Снимки взяты из репозитория приложения и сделаны на эмуляторе.")

Для меню используется стандартный механизм Android App Shortcuts. У пунктов запуска приложений отображаются их собственные иконки, у ссылок — иконка ссылки. Если лаунчер поддерживает перетаскивание пункта меню на рабочий стол, его можно вынести отдельным ярлыком. Поведение этого жеста стоит проверить в своём лаунчере: в проверках проекта он пока не подтверждён на устройстве[^spec].

## Для чего можно использовать

Ниже несколько вариантов настройки. Это примеры того, как собрать действия, а не готовые профили: каждое приложение и каждую ссылку нужно добавить самостоятельно.

### Чтение

Основным действием выбрать Perigee или другую читалку. В меню добавить Brook, браузерную библиотеку, страницу с отложенными статьями. Всё относится к чтению, но живёт в разных приложениях.

Преимущество перед папкой здесь небольшое, но понятное: книга открывается одним нажатием, остальные источники доступны через удержание той же иконки.

### Свои сервисы

Добавить ссылки на домашнюю панель, библиотеку, мониторинг или веб-интерфейс NAS. Основной сделать страницу, которую открываешь чаще всего. Названия можно задать короткие и понятные, не совпадающие с адресами.

Teleport передаст URL Android, а тот откроет браузер или подходящее приложение. Встроенного браузера, хранения паролей и подключения к домашней сети здесь нет. Если сервис доступен только через VPN, сначала должен работать сам VPN. Авторизация тоже остаётся на стороне сервиса.

### Несколько входов в одно приложение

Иногда нужен не главный экран приложения, а конкретная страница: документ, проект, канал или адрес на карте. Если у этой страницы есть ссылка, которую Android умеет передать нужному приложению, её можно сохранить в Teleport с собственной подписью.

Так можно разделить разные задачи внутри одного приложения, не проходя каждый раз путь от его главного экрана.

Но Teleport не умеет извлекать скрытые экраны из чужих приложений. Ссылку нужно получить у самого сервиса или из его документации. Обычный HTTPS-адрес может открыться в браузере, а не в приложении: результат зависит от обработчиков ссылок и настроек Android. Произвольная схема тоже ничего не гарантирует — на телефоне должен быть обработчик именно такого адреса.

### Кнопка, которую можно переназначить

Можно оставить Teleport на одном месте рабочего стола, а основное действие менять. Например, пробовать разные RSS-клиенты или читалки, не переставляя их иконки. Остальные варианты останутся в меню, пока они нужны для сравнения.

Сама иконка при этом остаётся иконкой Teleport. Выбор приложения меняет действие нажатия, но не превращает её в иконку выбранной программы.

## Где заканчиваются возможности

Сейчас есть только два типа действий: открыть приложение и открыть ссылку. Скриптов Termux, broadcast-действий для Tasker, Automate и MacroDroid, HTTP-webhook, расписаний, виджетов и плиток быстрых настроек нет. Часть этих идей описана как возможное продолжение, но в текущую версию не входит[^spec].

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

Есть и ограничения лаунчера. Многие показывают до четырёх пунктов App Shortcuts, причём один занимает вход в настройки Teleport. В таком случае для действий остаются три места. Точный лимит зависит от лаунчера; длинный список настроенных действий не превратится в длинное прокручиваемое меню.

Лаунчер должен поддерживать App Shortcuts. Без них после назначения основного действия обычное нажатие уже не ведёт в настройки, а меню для возврата к ним нет. Рабочие профили тоже требуют отдельной проверки: запуск приложений через границу профилей не гарантируется.

Если выбранное приложение удалено или ссылку некому открыть, Teleport открывает настройки с сообщением о недоступном действии. Отдельная оговорка касается анимации: своего окна у запуска нет, но лаунчер всё равно может показать короткую пустую карточку. На проверенном устройстве с ColorOS такое поведение есть. Поэтому обещать полностью незаметный переход на любом телефоне было бы неправильно.

## Данные и разрешения

Teleport не запрашивает разрешений Android, не имеет разрешения на доступ в интернет и не содержит рекламы или аналитики. Сохраняет только список действий, их порядок и выбор основного действия в приватном хранилище приложения[^privacy].

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

Системное резервное копирование Android может включать настройки Teleport в резервную копию пользователя. Поэтому формулировка «ничего никогда не покидает телефон» была бы неточной, хотя сам Teleport ничего не отправляет.

## Как попробовать

На момент написания доступна `v0.1.0-rc.2`, предварительная сборка. APK лежит в GitHub Releases[^release], требуется Android 8.0 или новее.

Для обновлений можно использовать Obtainium: добавить источник `https://github.com/juev/teleport` и включить получение предварительных версий (`Include prereleases`). Без этого параметра текущие release candidate не попадут в обновления.

Код написан на Kotlin с Jetpack Compose, лицензия MIT. Ошибки и пожелания можно оставлять в репозитории[^repo]. Особенно полезны название лаунчера, версия Android и описание того, что произошло при обычном или долгом нажатии: значительная часть поведения здесь зависит именно от рабочего стола.

Для меня смысл Teleport — в возможности оставить частое действие на одном нажатии, а связанные с ним приложения и ссылки убрать в меню той же иконки. Если такой сценарий есть, настройка занимает короткий список действий. Если его нет, обычная папка справится не хуже.

*Примечание. Статья написана gpt-6.1-sol по результатам работы на сервере.*

[^repo]: [juev/teleport](https://github.com/juev/teleport), исходный код и описание приложения.
[^spec]: [Спецификация Teleport для v0.1.0-rc.2](https://github.com/juev/teleport/blob/66933811d39f17530b4c4c7efa3ffbbfd1aae284/docs/spec/teleport.md), реализованные сценарии, ограничения и границы проверок.
[^privacy]: [Политика конфиденциальности](https://github.com/juev/teleport/blob/66933811d39f17530b4c4c7efa3ffbbfd1aae284/docs/privacy.md), локальное хранение и системное резервное копирование.
[^release]: [Teleport v0.1.0-rc.2](https://github.com/juev/teleport/releases/tag/v0.1.0-rc.2), APK предварительной версии.

