DataLife Engine > Программировнаие > Сказка о неправильном десктопе
Сказка о неправильном десктопе29 октября 2006. Разместил: MACTEP |
|||
|
Приятель посмотрел на мой рабочий стол и буркнул:
"Маленькое интеллигентное чудовище. Как сделал?" Спасибо, друг, мне очень приятно чувствовать себя немного неординарным, хоть ты и польстил. Сделать то, что ты увидел, было несложно, хоть оно и заставило посидеть над справочниками. Впрочем, и этот процесс тоже доставил мне немалое удовольствие. Мы, извращенцы, все такие. Такую занятную реакцию у моего товарища вызвали новые обои на моем рабочем столе. Фоном стала HTML-страничка, а не традиционные JPEG или BMP, и это выглядело как-то… свежо. Windows имеет собственные планировщики, часы, Quick Launch и меню для быстрого доступа к документам. В Интернете полным-полно заменителей стандартных компонентов операционной системы на любой вкус — с календарями, всяко-разными SmartBar'ами и PowerLauncher'ами. Раньше мне нравилось экспериментировать с ними, а теперь… Сев вечером полистать справочник по HTML, я не думал, что к утру стану любителем обоев, набранных в стандартном "Блокноте". В принципе, функциональность языка разметки HTML позволяет реализовать любую идею. Мои новые часики тикают на десктопе, отображая, помимо обычных часов-минут, также секунды и текущую дату. Под ними — список ближайших дел, рассортированных в группы, помеченные разными цветами, а в уголке, рядом с кнопкой "Пуск", приютились линки на папки с музыкой, клипартами, еще с парочкой часто используемых каталогов. Красиво? Пожалуй. Удобно? Уверяю вас: очень удобно. Я уже давно убрал с таскбара панель быстрого запуска и стандартные часы, а на рабочем столе оставил лишь Корзину и иконку "Мой компьютер". Часто используемые программы — недалеко отсюда, всего лишь за щелчком мыши по "Пуску". Списки дел, которые по мере исполнения должны прореживаться, открываются в любом заданном вами редакторе, опять-таки, одним щелчком мыши. Все-таки HTML-обои — не такая уж скверная идея, как мне казалось раньше. Набирая код, я подумал, что такое украшательство изрядно загрузит процессор. Процессор и правда стал отрабатывать потраченные на него деньги — загрузка при простое возросла с 4-5% до 5-6%. Как бы кулер не взлетел:). Хотите себе такую игрушку? Давайте сделаем ее вместе. Системные тебования: ОС: Windows XP (работа на более старых возможна, но не проверялась). ПО: notepad.exe. Компьютер: PC-совместимый, 1 шт. Прямые руки: 1 шт. (рекоменд. 2 шт.). Перво-наперво создадим каталог, в котором будем хранить самодельный Wallpaper. В нем следует завести несколько файлов — для начала это будут wallpaper.jpg (фоновая картинка), wallpaper.html (собственно движок обоев) и 1.task (файл с первым списком задач). Так как в данном примере почти весь текст расположен в правой части экрана, картинку следует подобрать такую, чтобы правая ее половина была по возможности однородной, не пестрой (это ухудшило бы читаемость текста). Приступим к кодированию HTML. Обычно гипертекстовый файл заключается в теги … и состоит из двух частей: заголовка и тела файла. Заголовок размещается между тегами …. Он, как правило, содержит информацию об авторе, ключевых словах для поиска данного файла, используемом при его создании программном обеспечении, кодировке текста и т.д. В этой же секции рекомендуется размещать используемые на страничке скрипты, т.к. старые браузеры могут не понять их: будучи внедренными в тело документа, тексты скриптов будут не исполняться, а отображаться, засоряя при этом экран. В данном случае это не актуально, но лучше все-таки придерживаться правил хорошего тона при верстке странички; к тому же, это облегчает восприятие текста страницы при кодировании и отладке. var timerID=null; var timerRunning=false; var currentcolor="white"; var currentsize=3; function stopclock() {if (timerRunning) clear Timeout (timerID); timerRunning=false;}; function startclock() {stopclock(); showtime();}; function showtime() {var now=new Date(); document.clock.display. value=now.toLocaleString(); timerID=setTimeout("startclock()",1000); timerRunning=true; }; function setcolor(clr) {currentcolor=clr; }; function setsize(sz) {currentsize=sz; }; function task(tsk) {document.write(""+tsk+" ")}; В приведенном фрагменте присутствует начало страницы (заголовок), которая станет обоями рабочего стола. В заголовке инициализируются переменные, которые понадобятся для работы страницы, и задаются скрипты, обеспечивающие работу часов и отображение списка задач. Функции stopclock(), startclock(), showtime(), как можно догадаться из названия, заведуют работой таймера. Один раз в секунду они обновляют ту часть рабочего стола, на которой должны находиться цифры нашего циферблата. Функции setcolor (цвет), setsize (размер) и task(задача) будут использоваться при задании списка дел, находящегося для удобства правки в отдельном файле — мы рассмотрим их позже. Пока отмечу лишь, что первые две из них служат для настройки вида отображаемого текста, а третья является как бы оболочкой для более удобного ввода текста в *.task-файлы. Теперь рассмотрим "ядро" файла обоев — содержимое тега — и прокомментируем его: Задаем цвета фона и ссылок: Указываем основной шрифт, который собираемся использовать на страничке. Разумеется, вы можете изменить его на любой другой: В теге размещаются "контейнеры" — независимые участки HTML-кода. В данном случае мы организовали двухслойную структуру, на нижнем слое (обратите внимание на атрибут z-index) которой находится фоновая картинка wallpaper.jpg, а на верхнем — все остальное содержимое. Второй слой, как и первый, занимает всю возможную площадь — это указывается стилем контейнера: position:absolute; width:100%; height:100%. В данном случае картинка будет занимать весь десктоп, и нам придется немного отступить от края, когда мы будем создавать нижний ряд ссылок, иначе они будут закрываться панелью задач.
Остававшаяся часть кода закрывает ячейку построенной таблицы со списком строк (в данном случае — ваш ежедневник) и в следующей, последней ячейке отображает несколько простых текстовых ссылок на каталоги, к которым вы будете чаще всего обращаться. Теперь нам нужно построить файлы с текстами, которые будут выводиться на рабочий стол при отрисовке обоев. Вот текст одного из этих файлов: setcolor("yellow"); setsize(3); task("купить новый монитор"); task("дать объявление на продажу старого монитора"); task("выписать КГ на следующий год"); setcolor("green"); setsize(2); task("купить пива"); task("купить рыбу"); task("отпраздновать покупку нового монитора"); Фактически этот файл представляет собой текст программы на JavaScript, использующий функции, описанные в заголовке файла wallpaper.html. Форматирование текста осуществляется элементарными командами, для добавления и удаления строки на десктопе достаточно добавить или убрать строчку task(" … "); в соответствующем *.task-файле в каталоге разработанных обоев. Стоит заметить, что тип файлов TASK в системе наверняка не зарегистрирован. Я не случайно создал такие файлы, и объясню, почему. Дело в том, что, если MIME-тип файла является text или image, то файл будет выведен в окне браузера, что не очень удобно. В противном случае поток перенаправляется в плагин либо на загрузку (запуск), что нам и требуется. При первом запуске компьютер спросит вас, что делать с файлом типа task: сохранить на жесткий диск, запустить или отменить неосторожный запуск? В появившемся окне снимите галочку, заставляющую компьютер каждый раз задавать этот вопрос, и выберите запуск. На запрос о выборе приложения я указал "Блокнот". Здесь мое вдохновение разленилось и, покинув рабочий пост, вышло на перекур. Его место было немедленно оккупировано ленью, которая настоятельно рекомендовала устроить длительный отдых. Я не стал добавлять на новый рабочий стол лишние элементы, но ставить препоны вашей фантазии не могу — у творчества нет границ. Никто не запрещает вам, например, заменить аскетичную строчку символов с датой и временем на красивые рисованные часики или вставить колонку ссылок на плейлисты с портретами любимых исполнителей. Счастливые обладатели постоянного доступа к Интернету, например, могут вставить фрейм с лентой новостей с любого сервера, а обитатели локальных сетей наверняка сочтут удобным разбить задачи на две группы: одна личная, с перечнем задач, другая загружается с файл-сервера и содержит объявления ваших сетевиков или избранные модератором анекдоты. На построенном ядре реализация любых замыслов не составит большого труда. Если же у читателя возникнут проблемы с написанием того или иного модуля — жду ваших писем. Ну, а пока — творческих вам успехов, и никогда, никогда не беритесь вечером за справочник по HTML! (Ну и естественно надо как-то запустить это файл чтобы все заработало. Не так ли? Для этого кликните правой кнопой мыши по рабочему столу, выберите меню "Свойства". Затем в появившемся окне перейдите по вкладке "Рабочий стол" -> "Настройка рабочего стола" -> Закладка "Веб" -> Кнопка "Создать..." -> "Обзор..." Тут уже указывайте путь к готовому файлу, жмите ОК и готово. Прим. Редакции) Автор статьи: Поляков Александр |