Как стать автором
Обновить

Пишем MetroUI Desktop для Win7. Часть 0

В этом небольшом цикле я хочу описать процесс создания максимально приближённого к концепции MetroUI рабочего стола для Windows 7.

Зачем, если скоро Win8 будет?


Буквально после нескольких недель активного использования WP7 я полюбил все его мелочи и дико захотел оформить свой рабочий стол также. До Win8 тогда ещё было далековато, но нашёлся интересный вариант Rainmeter c темой Omnimo.

image

С первого взгляда – мечта идиота.

Поработав с Omnimo больше недели, я не выдержал и снёс его. Что мне не понравилось?
  • Сходство с Metro только визуальное. У меня сложилось впечатление о непонимании концепции MetroUI создателями – наляпанная радуга цветов, яркие hover’ы на всех тайлах, смесь тайлов и объемных квадратиков и т.д.;
  • Тайлы абсолютно статичны, а те которые выполняют информационные функции – делают это совсем не Metro-way;
  • Сверх гибкость программы вызывала у меня регулярные трудности при настройке под себя;
  • Регулярные глюки с пропаданием части тайлов, всплыванием тайлов наверх и т.п.;
  • Отсутствие анимации. Понимаю что это свистелки-перделки, но на WP они очень органично вписываются в концепцию.
В это время неожиданно появилась Win8 Developers Preview. Проинсталил — счастье и радость. Через 2 часа уже опять на семёрке.
Почему? Банально потому, что я не хочу иметь один из двух рабочих столов метрошным. Я хочу иметь один единственный, метрошный стол.

А теперь, то что я хочу


Максимально соответствие стилю Metro UI
Под этим я подразумеваю упор на информацию и на удобство использования. Никаких финтифлюшек в стиле aero — можно уже и отдохнуть немного от псевдо-реалистичных иконок.

Omnimo вытаскивала весь контент на десктоп. Этого не должно быть — десктоп должен стать Home Screen (или dashboard в каком-то смысле) и только индицировать наличие новой информации или событий.

Live-вость тайлов
Самое приятное в концепции тайлов — это их «живость», значит и наш десктоп должен уметь получать инфу из инета, выдёргивать из доступных источников на винте/через API работающего софта.

Как один из дополнительных вариантов — написание Winows сервиса и плагинов к интересующему софту для пересылки уведомлений в Live Tiles.

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

Расширяемость
Конечная цель – десктоп, дающий возможность добавления тайлов и полной их настройки. Весь остальной функционал (скорее можно назвать типами тайлов) — должен реализовываться исключительно с помощью подключаемых плагинов.

Мне бы очень хотелось выложить наброски того, что хочется увидеть в итоге, но не хочется отбивать интерес сырыми и неинтересными картинками :-)

Как делать будем?


Я рассматривал 3 варианта:

Windows Sidebar Gadget: WPF
Довольно много времени ушло на поиск информации по работе гаджетов с WPF. Единственный адекватный вариант — WPF завёрнутый в XBAP завёрнутый в HTML.
Из плюсов — не нужно инсталлировать дополнительный софт и знакомый пользователю процесс подключения и настройки.
Из минусов — не сложилось у меня с этим… Честно. Слишком много проблем деплоймента во время разработки не вызвали у меня энтузиазма и напрочь отбили желание связываться с этим подходом.

Windows Sidebar Gadget: Sivlerlight
Практически тоже самое что и предыдущий вариант, только без костылей. Да и Silverlight более-менее знаком. Вот только обрезали его слишком сильно — тоже не подходит.

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

Структура серии статей

  1. Введение
  2. Первая итерация – работающие тайлы на рабочем столе с примитивным конфигуратором
  3. Вторая итерация – реализация списка приложений помимо основных тайлов, добавление secondary tiles
  4. Третья итерация – механизм Live Tiles, подключаемый модуль для работы с RSS (или чем-либо другим)
В следующей статье я бы хотел показать процесс создания Control'a, реализующего функционал Live Tile'а, со всеми свойственными ему эффектами и анимацией (на ранней стадии — без tilt эффекта) и написания оболочки, которая будет контролировать все LiveTile'ы, а в будущем и список приложений. В итоге мы должны получить уже готовую программу, которая позволит выносить на рабочий стол ярлыки-tile'ы.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.