Skip to content

ninix44/Nexus_Link

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EN VERSION

🚀 Nexus Link

Nexus Link is a hybrid remote control system that turns your smartphone into a versatile PC controller. It allows you to control your computer in two distinct ways:

  1. Touch Mode: Use your phone screen as a wireless touchpad.
  2. AI Mode: Contactless cursor control using hand gestures via the camera.

The project combines a high-performance Rust backend with a modern Kotlin (Jetpack Compose) Android client powered by Google MediaPipe.

Status Rust Android AI


✨ Modes & Features

📱 1. Touch Mode (Touchpad)

Turns your smartphone screen into a classic laptop touchpad.

  • Move: Drag your finger across the phone screen to move the PC cursor.
  • Click: Simply tap the screen to perform a Left Click.

🤖 2. AI Mode (Air Mouse)

Futuristic contactless control using computer vision.

  • 🖱️ Cursor: Move your index finger in the air to control the mouse.
  • 🤏 Gesture Click: Pinch your thumb and index finger together to click.

⚡ Technical Highlights

  • High Performance: The server is built with Rust (Tokio) for instant response times.
  • Low Latency: Uses UDP protocol (Fire-and-forget) to minimize lag.
  • On-Device AI: Hand tracking runs locally on the phone using MediaPipe, reducing network load.

📂 Project Structure

This is a monorepo containing both the server and client applications:

Module Directory Description Tech Stack
Server (Core) /nexus_core Receives UDP packets & controls OS inputs Rust, Tokio, Enigo, Bincode
Client (App) /nexus_android Touchpad UI & AI Hand tracking Kotlin, Jetpack Compose, MediaPipe

🛠️ Getting Started

Prerequisites

  • Rust installed on your PC.
  • Android Studio for the mobile app.
  • Both devices must be on the same Wi-Fi network.

1. Run the Server (PC)

Navigate to the core directory and run the Rust server:

cd nexus_core
cargo run --release

The server will start listening on UDP port 42069.

2. Configure & Run the Client (Android)

  • Open the nexus_android folder in Android Studio.
  • Open MainActivity.kt.
  • Update the TARGET_IP variable with your PC's local IP address:
val TARGET_IP = "192.168.1.XX" // <- Replace with your local IP
  • Build and run the app on your Android device.
  • Grant camera permissions when prompted.

🎮 How to Use

  1. Ensure the Server is running on your PC.
  2. Open the App on your phone and switch to "AI MODE".
  3. Point the camera at your hand:
    • Move Cursor: Move your index finger.
    • Click: Pinch your index finger and thumb together.

🔧 Technical Details

  • Communication: UDP Protocol (fire-and-forget for speed).
  • Serialization: Bincode (Rust) / Byte packing (Kotlin).
  • Computer Vision: On-device machine learning via MediaPipe Hand Landmarker.

⚠️NECESSARILY!

You may need to add a new "Rule" to the "Windows Defender Firewall with Advanced Security Monitor"

  1. press simultaneously: Win + S (search)
  2. In the search bar, type: Windows Defender Firewall Monitor with Advanced Security
  3. In the left list, you will see:
  • Inbound connection rules
  • Outbound connection rules
  • Connection security rules
  • Monitoring

you will need to click on: "Inbound Rules"

  1. Then you will need to write: "Create a rule..."
  2. In the new window, click: For port (Rule controlling connections for a TPC or UDP port) -> Click next
  3. Narrow down the protocol to which this rule will apply.
  • CHOOSE THE MOST IMPORTANT: UDP Protocol
  1. Specify the ports to which this rule will apply.

select: Specific local ports and write: 42069 !!! -> Click next

  1. In the new window, give permission to connect, item: "Allow connection" (description: Including both IPSec-protected connections and unprotected connections)
  2. In the new window, check all three boxes!
  • 1st box: Domain
  • 2nd box: Private
  • 3rd box: Public

-> Click next

  1. In the new window, type the name NexusLink and click the Done button.

📸 Visual Guide:

Step 1



📝 TODOs

  • Cursor Smoothing: Implement interpolation algorithms (e.g., Moving Average or Kalman Filter) for smoother cursor movement in AI Mode.
  • Internet Control: Implement remote control support over the Internet (WAN), not just Local Network (LAN).
  • Sensitivity Settings: Add sensitivity sliders directly to the mobile app UI.
  • New modes and features: Add something new.

License

MIT

RU VERSION

🚀 Nexus Link

Nexus Link — это гибридная система дистанционного управления компьютером через смартфон. Она превращает ваш телефон в универсальный контроллер с двумя режимами работы:

  1. Touch Mode: Использование экрана телефона как беспроводного тачпада.
  2. AI Mode: Бесконтактное управление курсором жестами руки через камеру (на базе Google MediaPipe).

Бэкенд проекта написан на Rust для максимальной скорости отклика, а мобильный клиент — на Kotlin (Jetpack Compose).

Status Rust Android AI


✨ Режимы работы и Возможности

📱 1. Touch Mode (Тачпад)

Превращает экран смартфона в классический тачпад ноутбука.

  • Перемещение: Водите пальцем по экрану телефона, чтобы двигать курсор на ПК.
  • Клик: Просто коснитесь экрана (тап), чтобы сделать левый клик.

🤖 2. AI Mode (Воздушная мышь)

Футуристичный режим управления через камеру без прикосновений к экрану.

  • 🖱️ Курсор: Двигайте указательным пальцем в воздухе перед камерой.
  • 🤏 Жест клика: Сведите большой и указательный палец (щипок), чтобы кликнуть.

⚡ Технические особенности

  • Высокая производительность: Сервер на Rust (Tokio) обрабатывает движения мгновенно.
  • Минимальная задержка: Используется протокол UDP (Fire-and-forget).
  • Умное зрение: Распознавание рук происходит прямо на телефоне (On-Device AI), не нагружая сеть видеопотоком.

📂 Структура проекта

Проект является монорепозиторием:

Модуль Папка Описание Стек
Server (Core) /nexus_core Принимает команды и двигает мышь Rust, Tokio, Enigo, Bincode
Client (App) /nexus_android Тачпад + AI трекинг руки Kotlin, Compose, MediaPipe

🛠️ Установка и запуск

Требования

  • Rust (для ПК).
  • Android Studio (для сборки приложения).
  • Устройства должны быть в одной Wi-Fi сети.

1. Запуск сервера (ПК)

Запустите сервер из папки ядра:

cd nexus_core
cargo run --release

Сервер начнет прослушивать UDP-порт 42069.

2. Настройка и запуск клиента (Android)

  • Откройте папку nexus_android в Android Studio.
  • Откройте MainActivity.kt.
  • Обновите переменную TARGET_IP, указав локальный IP-адрес вашего ПК:
val TARGET_IP = "192.168.1.XX" // <- Замените на ваш локальный IP-адрес.
  • Соберите и запустите приложение на своем устройстве Android.
  • Предоставьте разрешения на использование камеры, когда появится соответствующий запрос.

🎮 Как использовать

  1. Убедитесь, что сервер запущен на вашем ПК.
  2. Откройте приложение на телефоне и переключитесь в режим «AI».
  3. Наведите камеру на руку:
    • Переместите курсор: переместите указательный палец.
    • Нажмите: сожмите указательный палец и большой палец вместе.

🔧 Технические характеристики

  • Связь: протокол UDP (запуск и забвение для скорости).
  • Сериализация: Bincode (Rust) / упаковка байтов (Kotlin).
  • Компьютерное зрение: машинное обучение на устройстве с помощью MediaPipe Hand Landmarker.

⚠️ОБЯЗАТЕЛЬНО!

Возможно, вам потребуется добавить новое правило в «Монитор брандмауэра Защитника Windows в режиме повышенной безопасности»

  1. Одновременно нажмите: Win + S (поиск)
  2. В строке поиска введите: «Монитор брандмауэра Защитника Windows в режиме повышенной безопасности»
  3. В списке слева вы увидите:
  • Правила для входящих подключений
  • Правила для исходящих подключений
  • Правила безопасности подключения
  • Наблюдение

Вам нужно будет нажать на: "Правила для входящих подключений"

  1. Затем вам нужно будет написать: "Создать правило..."
  2. В новом окне нажмите: Для порта (Правило, управляющее подключениями для порта TPC или UDP) -> Нажмите Далее
  3. Уточните протокол, к которому будет применяться это правило.
  • ВЫБЕРИТЕ САМОЕ ВАЖНОЕ: Протокол UDP
  1. Укажите порты, к которым будет применяться это правило.

выберите: Конкретные локальные порты и напишите: 42069 !!! -> Нажмите Далее

  1. В новом окне предоставьте разрешение на подключение, пункт: "Разрешить подключение" (описание: Включая как защищенные IPSec, так и подключения без защиты)
  2. В новом окне отметьте все три поля!
  • 1-е поле: Доменный
  • 2-е поле: Частный
  • 3-е поле: Публичный

-> Нажмите Далее

  1. В новом окне введите имя NexusLink и нажмите кнопку Готово.

📸 Визуальная инструкция:

Step 1



📝 TODOs

  • Сглаживание движений: Внедрить алгоритмы интерполяции (например, скользящее среднее или фильтр Калмана) для более плавного движения курсора в режиме AI Mode.
  • Управление через Интернет: Реализовать возможность подключения не только по локальной сети, но и через глобальный интернет (WAN).
  • Настройки чувствительности: Добавить ползунки чувствительности прямо в приложение.
  • Новые режимы и функции: Добавить что-то новое.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published