У вас тоже есть такая проблема на windows, что превью к таскбару не прилипает?

Вот хочешь посмотреть (быстро и без переключения)  — "что там скрипт/агент/отладчик прямо сейчас делают?" — наводишь на иконку в таскбаре и смотришь сильно прищуриваясь. Только мышку отвёл — и всё пропало. А раскладывать всё по сеткам windows‑окон сложно: во‑первых напрягает это делать на каждый запуск нового окна, во‑вторых при переключениях получается сюрреалистичная картина «поверх окон одного экрана висят половинки/четвертинки другого». А тут у меня несколько параллельных процессов по несколько часов и я во время работы поймал себя на постоянных переключениях между окнами, что сильно отвлекает.

Решил что «хватит это терпеть» и запилил (через Claude) маленькое приложение, которое решает всю проблему — montab (Monitoring Tabs). Поскольку это windows и нужны прямые системные API — решил делать на NET11. А потом оптимизировать, чтобы размер был минимальный и без всяких зависимостей.

Ожидал что будет возня с видеопотоками, чанками, кодеками, трансляциями, winUI и морально готовился к долгому сложному процессу. Но изучая новинки предметной области — узнал о появлении DWM Thumbnail API которое позволяет рулить отображением прямо на уровне менеджера экрана. Сделал набросок и он прямо сразу заработал как нужно!

Ещё три часа отлаживал UX и «проектировал на живую», потом ещё час делал ревью и «причёсывал код», чтобы не было лишних циклов, аллокаций, вычислений, рефлексий и прочей мешанины. Я просто c олдскульным сознанием из «64k demo scene» и терпеть ненавижу когда мелко функциональная программа весит 100Мб+ и ещё постоянно крутит CPU даже в режиме ожидания. В итоге получился атомарный exe 1.95Mb, потребляет 4Mb памяти (90% из этого системное API, убрать нельзя) и полностью инертно работает в фоне.

Экран с работающим приложением montab
Экран с работающим приложением montab

Функционал:

  • Показывает живые превью активных программ (минимизированные — в свёрнутом виде в конце списка). Всю панель можно раздвигать и перемещать лево\право экрана (или через меню по правому клику, там же можно включить автостарт).

  • Превью можно перемещать вверх/вниз. Колесо мышки листает список, если он выходит за экран.

  • Клик — переключение. Двойной клик — сворачивание\разворачивание. Крестик — закрытие.

  • При наведении на превью включается режим zoom x5 и можно быстро и удобно просмотреть что там происходит внутри.

  • Если зажать Ctrl при наведении, то колесом мышки можно крутить zoom, движением можно позиционировать. После чего будет отображаться именно эта область — что удобно если отслеживаешь только конкретные строчки, а не весь экран.

Сразу захотелось включить видео как PiP и смотреть пока идёт работа. Но оказалось что браузеры перестают рендерить видео как только понимают что приложение не отображается на экране. Нашёл как поправить это через regedit. Рецепт приложил к описанию на github.

Очень доволен новыми ИИ‑возможностями, которые появились у разработчиков в 2026 году.
«Я буду сгибать, что хочу, когда хочу, кого хочу, никто меня не остановит, ура!» ©

GitHub проекта: https://github.com/faxenoff/montab

Комментарии (46)


  1. Revertis
    05.07.2026 03:09

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


  1. d3d11
    05.07.2026 03:09

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

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

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


    1. LiliJulie
      05.07.2026 03:09

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


      1. d3d14
        05.07.2026 03:09

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


        1. Redplcs
          05.07.2026 03:09

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


          1. d3d14
            05.07.2026 03:09

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

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


          1. Siemargl
            05.07.2026 03:09

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

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


    1. faxenoff Автор
      05.07.2026 03:09

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

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


    1. Revertis
      05.07.2026 03:09

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


  1. sogonov
    05.07.2026 03:09

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


  1. AndreyDmitriev
    05.07.2026 03:09

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


    1. AndreyDmitriev
      05.07.2026 03:09

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

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


      1. Dier_Sergio_Great
        05.07.2026 03:09

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


        1. AndreyDmitriev
          05.07.2026 03:09

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


    1. faxenoff Автор
      05.07.2026 03:09

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


    1. faxenoff Автор
      05.07.2026 03:09

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


      1. AndreyDmitriev
        05.07.2026 03:09

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


      1. AndreyDmitriev
        05.07.2026 03:09

        Попробовал на мультимониторной конфигурации - тоже работает, но почему-то окна при максимизации залетают под док, ровно тот же исполняемый файл но на одномониторном ноуте работает норм - при макисмизации они разлетаются только до границы и под док не залазят. Может быть проблема винды. Ну и уже понятно, что надо фильтровать окна - скажем у меня на левом мониторе обычно брааузер открыт и он ничем не перекрывается, и его превьюшка не нужна, ну а в режиме работы с LabVIEW хочется видеть только превьюшки от этой среды, а другие не нужны, но это легко можно допилить. В общем стандартные хотелки, которые можно самому доделать под себя.


        1. faxenoff Автор
          05.07.2026 03:09

          Вернусь из отпуска к мультимониторам, разберусь. Пока нет возможности проверить.

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


  1. JuryPol
    05.07.2026 03:09

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

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

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


    1. hurtavy
      05.07.2026 03:09

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


      1. JuryPol
        05.07.2026 03:09

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


    1. LiliJulie
      05.07.2026 03:09

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


  1. maaGames
    05.07.2026 03:09

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

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


    1. Revertis
      05.07.2026 03:09

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


      1. maaGames
        05.07.2026 03:09

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


        1. Revertis
          05.07.2026 03:09

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


          1. maaGames
            05.07.2026 03:09

            У меня OpenShell.

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

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


            1. Revertis
              05.07.2026 03:09

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

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


              1. maaGames
                05.07.2026 03:09

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


                1. Revertis
                  05.07.2026 03:09

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


                  1. ts347
                    05.07.2026 03:09

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

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


                    1. AndreyDmitriev
                      05.07.2026 03:09

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


                  1. 586
                    05.07.2026 03:09

                    Не знаю, для 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. Перезагрузите компьютер, чтобы изменения вступили в силу


  1. LiliJulie
    05.07.2026 03:09

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


  1. Mixabel
    05.07.2026 03:09

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

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

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


    1. ts347
      05.07.2026 03:09

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

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


    1. faxenoff Автор
      05.07.2026 03:09

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


  1. Redplcs
    05.07.2026 03:09

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


    1. AndreyDmitriev
      05.07.2026 03:09

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


    1. faxenoff Автор
      05.07.2026 03:09

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


      1. AndreyDmitriev
        05.07.2026 03:09

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


        1. zartarn
          05.07.2026 03:09

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


          1. AndreyDmitriev
            05.07.2026 03:09

            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 байт всего.


            1. faxenoff Автор
              05.07.2026 03:09

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


  1. yppro
    05.07.2026 03:09

    Отличное приложение. Нужно сворачивание в трей, с вызовом по клику и меню по правому клику — будет вообще универсальным!