Pull to refresh

Comments 43

Мне вроде такое скорее всего не понадобится, но разработка крутая! Особый респект за размер бинаря и потребление памяти!

Надо было писать на C/C++.

Было бы максимально эффективное приложение.

Тем более, все равно же агент пишет.

Для дергания системных WinAPI дотнет подходит ничуть не хуже, а безопасной возни с указателями там из коробки больше

Зато бинарник был бы на 1.3 МБ, а 130 кБ. И потом, сборка мусор и вызванные ей фризы и лаги.
А с указателями придется "возится" и в .net, если дергать unsafe WinAPI.

1.3 МБ - это всё еще мало. Если так печётесь за размер, то trimming + aot вам в помощь. Сборка мусора не вызывает такие уж сильные фризы, да и никто вам не запрещает сразу писать non-heap код, использовать arraypool, синглтоны и так далее. На крайний случай существует Background GC, который при сборке не блокирует приложение. P/Invoke можно использовать и без указателей - давно существует маршаллинг

 non-heap код, использовать arraypool, синглтоны
Background GC, который при сборке не блокирует приложение. P/Invoke можно использовать и без указателей - давно существует маршаллинг

Хоспаде, зачем мне эти мучения? Я проще напишу (и пишу) на С++.

 trimming + aot вам в помощь

это уже используется. меньше уже никак

Я готовился к тяжёлой фазе с потоками захвата экрана и оркестрацией всего этого. Написать-то агентом всё это можно попробовать, но многочасовые сессии отладки этого зоопарка утомили бы мой энтузиазм очень быстро. Поэтому было ожидание от NET, что там всё более стабильно реализовано.

Не ожидал, что найдётся такое одно “волшебное API”. Теперь-то да, можно этот код попробовать портировать с целью уменьшения кода. Но в моём случае это скорее всего может быть Zig, который достаточно эффективен как C/C++, но не содержит боли и страданий.

В 2026-ом надо писать на Расте, а с/С++ выбросить.

меня, как человека ленивого, Win+Tab почти устраивал до сегодняшнего дня, чтобы посмотреть "че там как у них".
Плюс, учитывая, что у меня вполне понятный биндинг окон на панели задач: WIn+1 - браузер, Win+2 - Far Manager, Win+3 - VScode, Win+4 - телега (причем эти же хоткеи работают если открыто несколько экземпляров приложения) а остальных можно и просто альт-табать, жизнь в принципе казалась мёдом
Запустил ваше приложение - нравится! Классно скроллится, кайфово зумится, с моими 25+ открытыми окнами прям локальный тик-ток. Однозначно остается в C:\portable\
Из пожеланий/идей: закреплять окна вверху списка (сейчас вроде есть перемещение по списку, но хотелось бы просто запинить три самых нужных окна вверху). И автоматическое скрытие, с выскакиванием по наведении в левую/правую границу экрана

А хорошая штука, спасибо! LabVIEW-программистам может понравиться — у нас код раскидан по блок-диаграммам, плюс для каждого инструмента есть панель, так что десяток окошек бывает, а то и больше. Надо будет в реальный проектах поработать, возможно приживётся. Из хотелок — добавить справа от превьюшек классический скролл бар, сейчас их можно скроллить колёсиком, но на ноуте это чуть менее удобно, и не видно, где мы по вертикали находимся. Можно сделать скрываемый, добавив опцию в список под Dock Left/Dock Right.

Хотя стоп, чего я мучаюсь, форкнул, напустил на него копилот, он и добавил:

PR делать не буду, мне не всё там нравится, но если надо, то форк со скроллингом вот тут поживёт пока — https://github.com/AndrDm/montablab

Круть. Такую б утилиту в PowerToys пихнуть бы, очень полезная.

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

Попробую сделать постоянный полупрозрачный с постоянной зоной активации, чтобы она не конфликтовала с крестиками закрытия.

Добавил скроллбар постоянный при наведении на панель, думаю что он хорошо помогает соориентироваться когда много чего открыто. montab v1.0.1

Да, спасибо, стало лучше. Штука оказалась неожиданно удобная, сегодня заполнял налоговую - на экране дофига всего, и калькулятор, а в превьюшке виден последний результат, и эксель, и там увеличение при наведении мыши удобно. Дома у меня не очень большой экран, а на работе не так актуально, там у меня три монитора, из них два вертикальных, но тоже попробую.

наводишь на иконку в таскбаре и смотришь сильно прищуриваясь

Вот этот момент не понял. "Прищуриваясь" - зачем???

Перемещение мышки с иконки приложения в таскбаре на мини-окно позволяет получить реальное окно данного приложения в реальную величину. Уход мышкой на таскбар это реальное окно убирает. И на этом - все. Больше ничего не нужно.

а если кликнуть на Просмотр задач, то на весь экран появятся как раз большие живые превью

Ну да... Но там просто окно переключается, насовсем. А тут для сценария "быстренько глянуть что там и вернуться назад" уже все готово.

Люди уже разучились читать юзкейсы. Человеку нужно было закрепить мини-мониторы сбоку, а не просто окна переключать

Только мышку отвёл — и всё пропало.

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

А эти превьюшки можно отключить???

Можно. То ли стандартными настройками, т ли через реестр руками, то ли "Шампунем". Не помню. Раньше отключал, но после последней переустанвоки не выключал и уже забыл, как отключить.

Вот я и не могу найти теперь никаких способов это отключить. Хотя, может это особенность StartAllBack?

У меня OpenShell.

В Вин10 это часть Aero Peek. Advanced System SettingsPerformance Options ➔ uncheck Enable Peek.

загугли "windows taskbar hide thumbnails",

Вот этот вот Peek?

Он выключен давно.

А у меня тоже выключен, а превьюшки есть. Бесполезный гугл-ИИ-поиск опять соврал.

Ну вот. Я тоже сколько не гуглил, сколько не мучил ИИшки, ничего не помогает.

Всплывающие превью окон при наведении мыши на панель задач Windows 10 отключаются через реестр путем задания очень большого времени всплывания.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"ExtendedUIHoverTime"=dword:00007530

А вот тут пишут, что в последних версиях и это может не работать https://learn.microsoft.com/en-in/answers/questions/2263244/extendeduihovertime-is-not-working-anymore, хотя там также и метод через gpedit.msc предлагается, но я с планшета коммент пишу, завтра на работе проверю, любопытно.

Не знаю, для StartAllBack гугл предлагает вполне рабочее решение:

Самый простой способ избавиться от всплывающих окон — изменить стиль панели задач:

  1. Откройте параметры StartAllBack (нажмите правой кнопкой мыши по кнопке «Пуск» и выберите «Свойства»).

  2. Перейдите в раздел «Панель задач» (Taskbar).

  3. Найдите настройку «Визуальный стиль» (Visual style).

  4. Установите значение Plain8

Также можно отключить миниатюры через редактор реестра:

  1. Нажмите Win + R, введите regedit и нажмите Enter.

  2. Перейдите по пути:
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband
    (Если раздела Taskband нет, нажмите правой кнопкой мыши на Explorer -> Создать -> Раздел и назовите его Taskband).

  3. В правой части окна нажмите правой кнопкой мыши на пустом месте и выберите Создать -> Параметр DWORD (32 бита).

  4. Назовите его NumThumbnails.

  5. Убедитесь, что его значение равно 0 (ноль).

  6. Перезагрузите компьютер, чтобы изменения вступили в силу

Прикольно видеть как люди до сих пор чинят UX винды своими костылями на дотнете)

Достаточно долго, но лениво искал подобное решение, спасибо что решили поделиться!

Вопрос: а можно ли реализовать использование хоткеев на то приложение чью миниатюру сейчас просматривает?

Тормознуть процесс запущенный в терминале не переключаясь в него или переключить трек не разворачивая окно плеера как пример.

Переключить трек можно системными медиаклавишами, это стандартная функциональность системы.

Отправить хоткей в определенное неактивное окно тоже можно, на AHK это делается довольно легко, на сабже, видимо, тоже можно сделать.

Изучил вопрос, увы слишком сложный путь. Надо перехватывать ввод всего в системе (сейчас всё сделано без перехвата фокуса активного приложения специально), включая пароли, токены и всё-всё-всё. А это верный путь в бан у всех антивирусов.

Почему выбор пал на .NET 11, а не на .NET 10? Он же еще не вышел

В принципе на .net 10 оно тоже работает, я сделал форк https://github.com/AndrDm/montablab, там понизил версию и явных проблем в общем не заметил.

Я сделал вначале на NET10, но потом решил попробовать NET11 раз нет сервер-критикал работы. И это уменьшило размер бинарника на 500К.

тут странно, я ваш же код скомпилял под 10 (свежеустановленную) и получилось даже на 18 КБ меньше, что-то там лишнего прицепилось.

18кб это если собирать из расчёта что в системе есть рантайм. У автора делается публикация cо всеми зависимосятми + trim + nativeaot, чтоб бинарник запускался на современной венде без установки зависимостей.

18кб это если собирать из расчёта что в системе есть рантайм. 

Вы невнимательно коммент прочитали, не 18 кб, а "на 18 кб меньше". У автора исполняемый файл 2001К или 2.049.024 байт, а если просто заменить таргет с 11 на 10 в csproj и собрать вот ровно той же командой dotnet publish -c Release -r win-x64, то будет 1967К или 2.013.696 байт, то есть на 34 кб меньше. А 18 кб - это после того, как я скроллбар туда добавил. Кстати, его ещё и upx пожать можно, он не потеряет работспособности, а станет меньше мегабайта - 884224 байт всего.

Какие-то ещё оптимизации по ходу разработки помогли сократить размер. У NET11 как раз оптимизации на nativeAOT направлены, плюсы предполагаются, а риск небольшой. Сжимать не стал из-за антивирусов, чтобы они лишний раз сдуру не орали на приложение.

Sign up to leave a comment.

Articles