У меня два монитора, и я давно привык воспринимать их не как отдельные устройства, а как единое рабочее пространство. На одном код, на другом браузер, документация, терминал или что-то ещё.
И однажды я подумал: а почему это пространство вообще должно заканчиваться там, где заканчивается физический монитор?
Так появился EvertyDisplay.
Я сделал приложение для Windows, которое создаёт настоящие виртуальные дисплеи. Для системы это полноценные мониторы: у них есть собственное разрешение, координаты, на них можно переносить окна, запускать приложения в полноэкранном режиме и перемещать между ними курсор.
Но физически этих экранов рядом с вами нет.
Например, я могу расположить виртуальный дисплей слева от своего настоящего монитора. Двигаю мышь к левому краю — и перехожу туда. Перетаскиваю окно — оно уходит вместе со мной. Windows при этом считает, что всё совершенно нормально.
Чтобы виртуальное пространство не превращалось просто в склад невидимых окон, я добавил Live PiP и полноэкранный Viewport. Можно быстро посмотреть содержимое виртуального дисплея или открыть его на физическом экране, не меняя расположение самих приложений.
Есть управление пространственной топологией дисплеев, перенос окон через границы, автоматический фокус, защита для полноэкранных игр, восстановление расположения экранов и работа после перезапуска системы.
Большая часть EvertyDisplay написана на Rust. Внутри много Win32, IPC, хуков ввода, Direct3D 11, DXGI и работы с состоянием Windows. Сам виртуальный видеоадаптер используется как отдельный подписанный компонент, а EvertyDisplay уже строит поверх него пользовательскую логику и рабочее пространство.
Но техническая часть для меня здесь всё-таки вторична.
Главная идея была простой: проверить, обязательно ли цифровому пространству иметь физический экран.
Оказалось, что нет.
Если ты несколько раз отправил окно «влево», а потом возвращался туда курсором, мозг довольно быстро начинает воспринимать это место как существующее.
На столе там ничего нет.
А в компьютере — есть.
И именно это ощущение я хотел получить, когда начинал EvertyDisplay.
Я Артур Валиев, и не буду постить длинных философских статей. Просто делюсь крутой программой.
https://github.com/vaalimusic/EvertyDisplayLite
В релизах можно скачать exe и познакомиться с системными требованиями.
