Всем привет!

Для своих нужд я использую личный компьютер с установленной операционной системой Linux. А для работы необходимо использовать Windows. И иногда хочется какие-то инструменты перенести из мира Linux в мир Windows. Хороших инструментов в среде Linux немало. В Windows тоже, конечно, много хорошего, но иногда бывает не хватает тех или иных инструментов.

Именно подобное сравнение часто приводит меня к написанию каких-то новых программ, которых не хватает, а найти аналоги не получается.

Например вот инструмент тайловый оконный менеджер (Tiling window manager) это менеджер который делает из окон не пересекающие области. В отличии от окон в классическом представлении, когда мы можем накладывать друг на друга различные приложения.

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

Я понимаю что в Windows управление окнами становится лучше с каждой версией. В Windows 7 появилось несколько таких новых возможностей, ��оторые позволяют быстро развернуть окно только по вертикали или расположить его ровно на половине экрана, справа или слева. Но это всё равно не решает проблему перекрытия окон.

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

Таким образом я понял, что можно попробовать написать, что-то своё.

Возможности программы

Работа с окнами

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

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

Кстати сами формы взяты из библиотеки DockPanelSuite это помогло решить о большую часть проблем с размещением окон.

Работа с браузером

Дальше мне захотелось адаптировать сам браузер. Его тоже можно занести в форму, но верхняя панель вкладок всё равно остается и это неудобно:

Поэтому я решил прикрутить еще и свой браузер на основе Chromium, к счастью, уже есть готовый пакет CefSharp.WinForms, который не сложно подключается.

И теперь это выглядит так:

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

Работа с сессиями

Еще одна фича которая мне нужна была это сохранение состояний открытых окон. Я назвал это сессиями, но пока есть возможность сохранять только одну сессию:

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

Заключение

Вот так мне удалось написать небольшую программку, которая помогает в работе. Я активно её использую и продолжаю дорабатывать. Если есть какие-то идеи то буду рад любым предложениям.

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

Исходники находятся тут

Всем спасибо за внимание!