Дві мітки 2 липня з різницею в годину: 1.7, потім 1.8. Це не помилка в журналі. 1.7 — це функціональний випуск, той, у якому віддалений робочий стіл перестав бути переглядачем і став місцем, де справді можна працювати, — а 1.8 — це 1.7 плюс одна річ: справжній аудіокодек під звуком, який 1.7 щойно почав надсилати. На боці Mac їм відповідають SharkTTY Desk 0.7.0 і 0.8.0.
Клавіатура, яка справді є клавіатурою
Керувати Mac з iPad за допомогою клавіатури iOS — це вправа на терпіння. Немає Escape. Немає Control. Немає функційних клавіш. Нічого з того, що macOS очікує від вас утримувати, в iOS немає.
Тож у 1.7 виросла власна. Вона почалася як плавуча панель QWERTY у віддаленому робочому столі на iPad, а потім, за десяток комітів, перетворилася на щось, що ви впізнаєте як клавіатуру: символи, Tab і Return; ⌃, ⌥ і ⌘ як справжні клавіші-модифікатори з широким Shift; Г-подібний Return у стилі ISO на два ряди, який потім перемістився вниз, до основного й нижнього рядів, із Shift завширшки у дві клітинки та клавішею fn — після того, як ми подивилися, куди насправді потрапляють великі пальці.
Два налаштування, які зробили її придатною для роботи, а не просто наявною: розмір можна змінювати, а непрозорість задавати повзунком — аж до повністю непрозорої, якщо ви волієте не бачити крізь неї робочий стіл. Клавіатура, що вкриває нижню третину iPad, — це зовсім інша річ, коли видно, що під нею. І замість двох конкурентних кнопок тепер є одна кнопка клавіатури з випадним меню режимів: плавуча панель або системна клавіатура з панеллю комбінацій.
Влучити пальцем у піксель
Кінчик пальця вкриває приблизно площу трьох кнопок-«світлофора» вікна macOS. Віртуальна миша існує саме через цю арифметику, і 1.7 дав їй лупу — збільшувач, що показує ділянку під вашим пальцем у рідній роздільності Mac, тож ви влучаєте в прапорець, а не поруч із ним. І вказівник, і лупу розширили так, щоб вони працювали на зведеній розкладці екранів, а не лише в межах одного дисплея.
Одне виправлення в цій області варто розписати, бо воно з тих, що вилазять лише в роботі. Плитка лупи — це окремий потік пікселів від основної картинки, і приходить він на частку секунди пізніше. Поки курсор рухається, це означає, що збільшений вигляд показує, де курсор був. Показувати застарілу лупу гірше, ніж не показувати жодної, тож тепер вона ховається, поки курсор рухається, і повертається, коли той зупиняється.
Екрани як одна картинка, яку можна розкласти
1.6 вивів на екран усі дисплеї. 1.7 дозволив їх розкласти: випадне меню об’єднаних екранів і область дисплеїв, яку можна пересувати й масштабувати. Для останнього знадобився маркер, і ось чому. Той самий жест перетягування означає дві різні речі залежно від наміру — пересунути цю картинку або пересунути вказівник на Mac усередині неї. Вгадувати між ними — погано в обох напрямках, тож пересування й зміна розміру сховані за явним режимом коригування з маркером, і масштабування щипком діє теж лише там.
З правим кліком була та сама проблема в мініатюрі. У різних місцях він працював по-різному; 1.7 зробив його торканням двома пальцями всюди — і в розкладеному вигляді, і у сфокусованому. Поодинокі дисплеї також відсунули від верхньої панелі та нижнього краю, щоб картинка не ховалася під елементами інтерфейсу самого застосунку.
Якість, яку узгоджують, а не припускають
Якість відео тепер є предметом домовленості. Агент на Mac оголошує, які рівні він уміє кодувати, глядач обирає один із них і виводить його, а стелю — xHD, рідні пікселі Mac — можна запросити з пристрою. Усе це стоїть на механізмі бітів можливостей, доданому в 1.6, який дає новішому застосунку змогу попросити щось у старішого агента й отримати зрозуміле «ні» замість зламаного потоку.
Звук в обидва боки
1.7 додав системний звук з Mac на пристрій і канал мікрофона у зворотний бік, тож iPhone може бути мікрофоном для Mac, що стоїть в іншому місці. Разом вони роблять дзвінок, прийнятий на Mac, дзвінком, який ви справді можете прийняти.
Ось тут і з’являється 1.8. Звук на той момент був сирим PCM у каналі даних: Коректно — і значно більше пропускної здатності, ніж потрібно звуку. 1.8 додав Opus — словник кодеків у протоколі з власним бітом можливостей, libopus 1.5.2, вбудований у збірку з безпечною обгорткою навколо нього, і декодування на боці глядача, підведене через FFI. Біт можливостей — важливіша половина: якщо Opus володіють не обидва боки, агент і глядач повертаються до того, що в них спільне, замість того щоб зламатися. Решта частин цього шляху — буферизований кодувальник, що перетворює довільний PCM на кадри Opus по 20 ms, і відтворення на боці глядача — були завершені в наступній збірці.
Тим часом у терміналі
Віддалений робочий стіл забрав більшість уваги в 1.7, але й термінал отримав три речі, які варто мати:
- Надсилання файлу просто з допоміжної панелі, тож файл конфігурації потрапляє на сервер без гака через файловий менеджер.
- Кнопка приховування клавіатури — щоб читати вивід на екрані телефона, який здебільшого зайнятий клавіатурою.
- Перемикач передавання подій миші. Увімкнено — під’єднаний трекпад чи миша надсилають свої кліки й перетягування програмам, які їх розуміють: vim, tmux, htop, less. Вимкнено — вказівник натомість виділяє текст. Обидві поведінки правильні; лише ви знаєте, яка потрібна вам зараз.
Плавуча клавіатура також отримала символи, Tab і Return на боці термінала й була перерозкладена так, щоб відповідати стандартній американській клавіатурі, а не її приблизній подобі — підґрунтя для шести справжніх розкладок, які прийшли в наступній збірці.
Читати цю статтю: English · 中文 · 日本語 · Español · Français · 한국어 · Українська
Більше про сам застосунок — у посібнику SharkTTY; короткі нотатки для користувачів — у розділі Що нового, а найшвидший спосіб зв’язатися з нами — дошка відгуків. Повернутися до девблогу.