Press "Enter" to skip to content

Windhawk — модульный расширяемый твикер для настройки Windows 11 и 10

Below are examples of projects or customizations which could use Windhawk.

Ramen Software

Windhawk, the customization marketplace for Windows programs

Windhawk aims to make it easier to customize Windows programs. It allows installing and configuring mods (customization modules) with just a couple of clicks. For developers, it provides a convenient platform for developing and sharing such mods.

You can find more details, browse for the available mods and download Windhawk on the official website.

Read on for the motivation behind creating Windhawk.

Background

As a power user, I often find the need to customize the programs I use beyond the default settings. If I’m lucky, the relevant program provides options to customize it the way I need. If that’s not the case, I have several options:

  1. Accept the lack of customization and use the program as is.
  2. Find or create an alternative program.
  3. Find or create a helper program that fills the gap.
  4. Modify the relevant program.

Of course, some annoyances are less important than others. If that’s something I encounter rarely, e.g. if I can save a couple of clicks once a week, I’ll most probably choose the first option as it’s not worth the time. If that’s a very minor annoyance, I will probably live with it too. But if that’s something I encounter regularly and it’s annoying enough, I might start looking for a solution.

Finding an alternative program might be an option, but often there’s no good alternative. Perhaps the program I’m already using is the best of its kind, but it has this little annoyance which I’d like to fix. Of course, creating an alternative program myself is often too time consuming and not feasible.

Finding or creating a helper program that fills the gap is sometimes an option. For example, AutoHotkey can be used to overcome some annoyances (e.g. it can make the target program think as if you’re holding the Shift key). Another example is the X-Mouse Button Control tool which can help customizing mouse behavior for any program. I can also create a helper program from scratch, I’ve done this on several occasions. But there are many cases in which these approaches don’t work.

If none of the above works, what I’m left with is modifying the relevant program to fix an annoyance or add new functionality.

Modifying a program

So, I have a Windows program which I’d like to modify to better fit my needs. What are my options?

If the program is open-source, the best option is to implement the improvement and contribute it to the project. This way, all users can benefit from it, including myself, and that’s where my journey happily ends. But my contribution might be rejected, e.g. because it’s very specific for my needs or for any other reason. In this case, I can choose to fork the program, but if the program is updated regularly, maintaining a fork and keeping it updated can be a hassle.

If the program is not open-source, I can modify the compiled executable of the program, usually the .exe file (as long as it’s legal, of course). That’s a more challenging task and the details are out of scope for this post. I’ll just focus on two ways to apply such a modification:

  1. Modify the .exe file on disk (also known as binary patching).
  2. Modify a running instance of the target program in memory.

Both options are valid, but modifying the file on disk has several drawbacks:

  1. If the executable file is write protected, it can’t be modified.
  2. If the executable file is digitally signed, the signature becomes invalid.
  3. Every time the executable file is updated, it needs to be patched again.
  4. If something goes wrong with the patch, there’s no easy way to revert the changes – one must be careful to create a backup before patching. And if the target program is part of the system, a bad patch might be difficult to recover from, even in safe mode.

Given the above, modifying a running instance of the target program in memory is usually a better, safer and more robust solution.

Modifying a running instance of a program in memory

There are many possible use cases for modifying a running instance of a program in memory. It can be done for a minor customization or for adding a significant missing feature. It can be required because the target program is no longer developed, because the developer refuses to add a feature or fix a bug, or for other reasons. In fact, the most popular program on this website, 7+ Taskbar Tweaker, is a great example – it adds extra features and fixes bugs in the Windows taskbar, features and bugs which Microsoft is not willing to implement or fix, and which many users find useful.

One of the challenges in implementing such a customization is that apart from the customization itself, the developer has to take care of things such as process injection, function hooking, symbol loading, creating a user interface, and more. The extra effort required for even a simple customization means that sometimes it’s not worth the effort for a developer to invest the time and improve the experience for himself and other users. At other times, the developer can take a shortcut, such as patching the file, solving the problem for himself but not having an easy way to share his work with other users.

Introducing Windhawk

Windhawk was created to make it easier for developers to implement customizations for programs. It does this by taking care of the distractions mentioned above, such as process injection, allowing the developer to focus on the customization itself. This benefits both developers and users: Developers have a simple way to create customizations (good for developers) and share them with the world (good for users).

Another benefit for users is that every mod is just a single file of textual code. This makes it easier to review what the mod really does, unlike with an executable file which is very difficult to verify. And that doesn’t come at the expense of user experience – installing a mod takes a couple of clicks, unlike compiling an open source project which requires time, programming tools, and usually some programming skills. Also, it’s easy for a user without programming skills to make minor edits to existing mods, such as changing texts or tweaking simple calculations. A mod can even be shared via a service such as Pastebin.

Example use cases

Below are examples of projects or customizations which could use Windhawk.

    Fixing a 3+ year old bug in NVIDIA GeForce Experience. A great research by Dmirty, in which he hunts for a bug in an NVIDIA software, and finally finds a solution. For other users to use his solution, he proposes the following:
    Use a hex editor to patch NVIDIA’s binary file. Alternatively, use this PowerShell script. The PowerShell script is tailored for a specific version of the binary, and it links to another PowerShell script which attempts to patch any version using heuristic. The downsides: It might not be obvious to all users how to use a hex editor or how to run a PowerShell script, and this process has to be done after every update. The other downsides of patching a binary file apply here too. With Windhawk, Dmirty could create a mod with a similar amount of effort, making the solution easier to use and accessible to more users. By the way, I like the top comment to the research in Hacker News:

“I changed this byte in the library to fix the problem” is the ultimate triumph of being in control of your device imo. If your CPU can do a thing, you can (in principle) always find out why it does that thing and make it do something else if you want. It’s just bytes all the way down.

  • git clone –recurse-submodules https://github.com/tostercx/GTAO_Booster_PoC
  • build the project with MSVC
  • inject the DLL with your favorite injector while the game is starting up

I don’t think that a third-party solution would be practical, but I’m happy to be proven wrong. My main concern would be that any third-party modification or shimming of winmm.dll would be indistinguishable from malware.

Windhawk and 7+ Taskbar Tweaker

As mentioned earlier, 7+ Taskbar Tweaker, the taskbar customization tool for Windows, is the most popular tool among the tools you can find on this website. You might wonder what are the pros and cons of both tools, since customizations can be developed and shared in both, and how Windhawk affects the future of 7+ Taskbar Tweaker.

Regarding pros and cons, here’s a quick summary:

  • Resource usage: Both have similar resource usage when running in the background, running as a lightweight native module which is injected into the relevant process. Windhawk might use more resources when managing mods, and it also takes more disk space, but I see it as less important since it doesn’t affect the daily computer usage.
  • Stability: In both projects, stability is a very important metric for me. Both are constantly running in the background on my computer, and system stability is not affected in any way. I expect that Windhawk, being a newer project, has more bugs, but I take stability bugs very seriously and I assume most of them will be fixed as they are identified.
  • Ease of use: Both are rather easy to use and require no technical knowledge. Of course, creating mods for Windhawk requires a different set of skills, but it’s not relevant to the comparison.
  • Specialization: 7+ Taskbar Tweaker is specific to taskbar customization, while Windhawk can customize any aspect of any program.

As you can see, for a user, both solutions are quite similar as long as both provide the same customizations. Windhawk makes it easy for developers to create such customizations, and unlike with 7+ Taskbar Tweaker, anyone can contribute customizations, which means users will have more possibilities to customize their programs the way they want it.

Regarding the future of 7+ Taskbar Tweaker: It will keep existing as a separate program which supports Windows 7 to Windows 10. As mentioned in a recent blog post, most parts of the taskbar were reimplemented in Windows 11, and 7+ Taskbar Tweaker can’t be made to work with the new taskbar without a huge amount of work. My plan, at least in the short term, is to implement the most demanded customizations for Windows 11 as Windhawk mods. A couple of mods are already available, take a look. A more detailed blog post about Windows 11 taskbar customization and Windhawk will be published soon.

Looking forward

I hope that Windhawk will fulfill its vision in helping users gain control over their device. Go download Windhawk on the official website and share your experience. I’d love to hear your feedback about Windhawk, both from users and from developers.

Windhawk — модульный расширяемый твикер для настройки Windows 11 и 10

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

Windhawk — одна из таких новых программ, отличающаяся модульностью: возможностью устанавливать конкретные моды для Windows 11 и Windows 10, в зависимости от того, что именно вы хотите настроить, при этом сторонние разработчики, и вы — тоже, могут добавить собственные решения в список доступных. Об этой программе и пойдет речь далее в обзоре.

Использование Windhawk

Скачать текущую версию Windhawk (на сегодня — 1.0 beta) можно с официального сайта https://windhawk.net/. Установка не должна вызвать сложностей, единственный выбор — установка ПО в системе для всех пользователей или использование утилиты в Portable-режиме:

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

Сразу после установки Windhawk в работе Windows 11 или Windows 10 ничего не изменится, для этого нужно выбрать и загрузить доступные моды. Можно выбрать из «Featured Mods» или посмотреть полный список на вкладке «Explore»:

Из доступных уже сейчас и популярных модов (по ссылкам — описание того, как то же самое сделать вручную):

  • Отключение группировки значков панели задач
  • Включение подписей для значков панели задач в Windows 11
  • Настройка часов в трее Windows (добавление секунд, сообщений, канала RSS)
  • Изменение размера значков панели задач
  • Модификация перемещения и прилипания окон Windows
  • Прокрутка вкладок Chrome и Edge с помощью колеса мыши
  • Закрытие программ панели задач кликом средней кнопки мыши
  • Отображение раздела «Все приложения» по умолчанию в меню Пуск
  • Управление громкостью скроллингом в любом месте панели задач
  • И другие…

Для установки и использования конкретного мода достаточно выполнить следующие шаги:

  1. Нажать «Details» у выбранного мода, затем — Install для его установки.
  2. Подтвердить, что вы осознаете возможные риски (моды пишутся не автором программы, а сторонними разработчиками).
  3. Дождаться завершения установки, могут загружаться дополнительные библиотеки.
  4. Установленная модификация появится в разделе «Installed Mods» главной вкладки Windhawk, нажимаем Details и переходим на вкладку «Settings» для просмотра и изменения настроек конкретного мода.
  5. Повторяем для других нужных модификаций, смотрим на результат, например, я использовал мод для настройки часов в области уведомлений:

Для каждого доступного мода можно посмотреть и изменить его код (С++), нажав кнопку Fork в информации о нём, а можно написать собственные: для личного использования или распространения в Windhawk. Редактор кода в наличии: в основе своей Windhawk имеет Visual Studio Code (точнее — VSCodium).

Это позволяет надеяться, что в будущем количество доступных вариантов настройки Windows в программе будет куда более обширным, чем сейчас. Если ожидания оправдаются — утилита может стать достойной заменой многих аналогов.

А вдруг и это будет интересно:

  • Лучшие бесплатные программы для Windows
  • Не открываются Параметры Windows 11 — как исправить?
  • Компьютер не видит микрофон от наушников — варианты решения
  • Как скачать dinput8.dll для игр и программ
  • Как переименовать устройство в диспетчере устройств Windows
  • Внутренняя ошибка CallSpawnServer: Unexpected response — варианты решения
  • Windows 11
  • Windows 10
  • Android
  • Загрузочная флешка
  • Лечение вирусов
  • Восстановление данных
  • Установка с флешки
  • Настройка роутера
  • Всё про Windows
  • В контакте
  • Одноклассники

    Fen1ma 12.01.2023 в 18:11

  • Dmitry 14.01.2023 в 11:45

Comments are closed, but trackbacks and pingbacks are open.