Виджеты для Mac OS. Виджеты для Mac — пять полезных приложений для Центра уведомлений OS X Yosemite

Время от времени в нашем блоге появляются статьи, связанные с виджетами - небольшими мини-программами, написанными на Jasvascript и способными выполнять разные полезные функции. Сегодня же я хотел бы рассказать о своих любимых и просто полезных виджетах, способных упростить жизнь любому . Честно говоря, думал остановиться на ТОП-10, но в результате получилось почти два десятка. И, уверен, это далеко не полный список 🙂

iStat nano

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

Eject Volume

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

Time Machine Buddy

Hiddenfiles, Bluetooth Switch и Firewall Switch


Все три виджета выполняют примерно одинаковые действия: они являются своеобразными переключателями той или иной функции. При помощи первого - Нiddenfiles - вы с легкостью включите показ скрытых файлов в , не прибегая к командам в терминале. Второй, Bluetooth Switch , поможет быстро включить или отключить Bluetooth (ведь вы догадались, правда? 🙂), а третий - Firewall Switch - отключит/включит встроенный в фаервол.

Pixel Fix

Существует поверье, что если очень быстро сменять синий, красный и зеленый цвета в определенной области экрана, этим можно растормошить «залипшие» пиксели. Именно это и делает Pixel Fix . Редакция Маковода не гарантирует вам полное «выздоровление», но мозги пикселю прочистит точно 🙂

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

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

А ежели у кого припасены другие «must-have» виджеты, не забудьте рассказать о них в комментариях. Я и другие пользователи будем очень благодарны!

  • Разработка под MacOS ,
  • Разработка веб-сайтов
    • Tutorial

    Здравствуйте, хабравчане-маководы!

    Сегодня мы с вами попробуем разобраться в азах создания виджета для Dashboard в Mac OS X. Нам понадобится программа Dashcode, предназначенная как раз для этого.

    Для начала немного теории. Виджет в Dashboard - это специально сформировання веб-страничка, упакованная в бандл вместе со всем ресурсами. Ну, и немного служебной информации в довесок. Соответственно, используемый язык программирования - JavaScript. Если Вы уже знакомы с ним, а так же с HTML/CSS (хотя это вряд ли понадобится), то Вы уже способны написать простенький виджет. Если же нет, то не стоит расстраиваться, этот язык очень прост и интуитивно понятен, разобраться с ним можно достаточно быстро. Далее я буду считать, что с JS читатель более-менее знаком. Сама же статья рассчитана на новичков, так что прошу не ругать за «слишком простое изложение и детальное разжёвывание элементарных вещей». Кроме того, за дизайн тоже прошу не пинать - ну не дизайнер я, не дизайнер! Если кто хочет помочь с этим делом - welcome =)

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

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


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

    Восстановим справе Восполним эти недостатки.

    Создадим пустой проект. Для этого запустим Dashcode и кликнем в нужные места. Процесс тривиален.

    Что же мы видим? Базовый виджет имеет основное и вспомогательное состояния (соответственно, front и back в левой панели). Первое отображается в обычном режиме работы, второе - для настройки параметров виджета. Переключаться между ними можно выбирая соответствующие пункты в списке компонент слева. Мы можем смело удалить всё лишнее, кроме кнопок «info» и «Done», которые служат для переключения между основным и вспомогательным состояниями. Далее, для простоты, будем называть это лицевой и тыльной сторонами виджета.

    Теперь на лицевую сторону нашего виджета (без единой строчки кода!) кидаем нужные компоненты: несколько надписей. Для этого открываем библиотеку комонент - кнопка Library справа вверху - и перетаскиваем на виджет компоненты типа «Text». Теперь открываем Inspector (так же кнопка справа вверху) и с его помощью настраиваем размеры, цвета и так далее для нашего виджета. С его же помощью зададим осмысленные имена нашим надписям - для более удобного доступа из кода.

    На тыльную сторону кинем надпись и поле ввода. Ну, и ещё картинку - для красоты. И в итоге получаем примерно следующее:

    Что ж, неплохо, наш GUI уже готов! Можем жать Cmd+R и потыкать на кнопки (i) и Done, любуясь эффектом переворота виджета.

    Но одного GUI нам мало, так что переходим к логике. Для этого слева вверху жмём на кнопку View и выбираем в выпадающем списке Source Code. И можем уже лицезреть наш автоматически сгенерированный JavaScript-код. И смело начинаем его править!

    Для начала определимся с «архитектурой» нашего виджета. Мы будем по таймеру запрашивать через данные о пользователе, парсить их и отображать карму и рейтинг на лицевой стороне виджета. Для этого объявляем глобальную переменную updateTimer в начале файла main.js, создаём функции startTimer(msec) и stopTimer() , которые будут с этим таймером работать. Так же создадим функцию updateStats() , которая будет вызываться по таймеру.

    Function startTimer(msec) { updateTimer = setTimeout("updateStats()", msec); } function stopTimer() { clearTimeout(updateTimer); } function updateStats() { alert("It works!"); startTimer(updateInterval); }
    В функцию show() вставим вызов startTimer(5000) для запуска таймера при показе виджета, а в функцию hide() , соответственно, вставим stopTimer() для экономии ресурсов когда виджет не показан (Dashboard не активна). Теперь мы можем запустить наш виджет и увидеть в консоли (Cmd+Alt+1) вывод «It works!» каждые 5 секунд.

    Но нас ведь не интересует такой вздор, мы хотим по таймеру дёргать карму и рейтинг! Так что в функции updateStatus() вместо алерта мы будем вызывать функцию execStatsRequest() (API хабра советует не дёргать данные о пользователе чаще, чем раз в минуту, так что увеличим заодно интервал).

    Теперь дело за HTTP-запросами к API хабрахабра. Создаём новые функции - execStatsRequest() и processStatsRequest(), которые будут служить для запуска и обработки запросов. Вот как они выглядят у меня:
    function execStatsRequest() { if (userName().length > 0) { var Url = "http://сайт/api/profile/" + userName() + "/"; alert("User: " + userName() + "\nURL: " + Url); xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = processStatsRequest; xmlHttp.overrideMimeType("text/xml"); xmlHttp.open("GET", Url, true); xmlHttp.send(); } else { resetStats(); } } function processStatsRequest() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { alert("xml is " + xmlHttp.responseXML); if (xmlHttp.responseXML == null) { resetStats(); } else { alert(xmlHttp.responseText); var error = xmlHttp.responseXML.getElementsByTagName("error"); if (error != null) { alert("Some error occured!"); resetStats(); setLogin("<" + userName() + " not found>"); return; } var login = xmlHttp.responseXML.getElementsByTagName("login").firstChild.nodeValue; var karma = xmlHttp.responseXML.getElementsByTagName("karma").firstChild.nodeValue; var rating = xmlHttp.responseXML.getElementsByTagName("rating").firstChild.nodeValue; var position = xmlHttp.responseXML.getElementsByTagName("ratingPosition").firstChild.nodeValue; setLogin(login); setKarma(karma); setRating(rating); setPosition(position); } } }
    Здесь мы формируем URL запроса, создаём объект типа XMLHttpRequest, и с его помощью запрашиваем методом GET наши данные. Что примечательно, приходится насильно ставить ответу MIME-тип «text/xml» , ибо хабра-апи возвращает почему-то «text/html». А в функции processStatsRequest() мы парсим полученный в XML ответ. При этом, мы проверяем его на наличие ошибки - и уведомляем об этом пользователя.

    Тут стоит отвлечься от кода и настроить сам виджет - разрешить ему работать с сетью. Для этого в левой панели прокручиваем список элементов вниз и видим пункт Widget Attributes. Здесь просто ставим галочку «Allow Network Access». Так же можно настроить id виджета и его версию. Теперь вернёмся к коду.

    Функции setLogin() , setKarma() и иже с ними отображают передаваемую в них строку в нужных полях лицевой стороны. Они были созданы для удобства и выглядят однотипно, вроде того:

    Function setLogin(login) { document.getElementById("userName").innerText = login; }
    Функция же resetStats() устанавливает дефолтные значения для всех полей. А функции setUserName() и userName() служат обёрткой над полем ввода имени хабраюзера на тыльной стороне виджета:

    Function userName() { return document.getElementById("nameEdit").value; } function setUserName(name) { document.getElementById("nameEdit").value = name; }
    Что ж, виджет почти готов. Почему почти? Да потому что нам надо бы ещё сохранять в настройках введённое имя пользователя. Для этого пишем функции loadPrefs() и savePrefs() .

    Var preferenceKey = "habraUserName"; function loadPrefs() { var name = widget.preferenceForKey(widget.identifier + "-" + preferenceKey); alert(widget.identifier + "-" + preferenceKey); alert("name from preferences: " + name); if (name != null) setUserName(name); } function savePrefs() { widget.setPreferenceForKey(userName(), widget.identifier + "-" + preferenceKey); }
    Эти функции целесообразно вызывать соответственно в функциях show() и hide() . Настройка будет уникальна для каждого виджета, что позволяет накидать на Dashboard виджеты с информацией по нескольким пользователям.

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

    Переходм к нашей лицевой стороне, вызываем инспектор. Теперь поочерёдно выделяем наши надписи и в разделе Localization инспектора выставляем в поле Value значение на английском языке. Они, вероятно, будут совпадать с предустановленными уже значениями поля Key. Эти значения будут внесены в дефолтную (английскую) локализацию, что можно увидеть в файле en.lproj/localizedStrings.js .

    Теперь добавим русскую локализацию. Переходм в Widget Attributes и в разделе Localization добавляем (в левом списке) русский язык. Выбираем его, и теперь в правом списке можем вводить локализованные строки.


    Эти значения, соответственно, будут прописаны в ru.lproj/localizedStrings.js .

    Собственно, вот и всё, можем запускать наш виджет и любоваться своей (или чужой) кармой! Чтобы установить виджет в Dashboard, нужно выбрать Run & Share в левой панели и выбрать Save to Disk или Deploy to Dashboard - в зависимости от наших потребностей.

    Если хочется скачать уже готовый виджет, то милости прошу.

    Подборка праздничных обоев опубликована сегодня неслучайно. Во-первых, сегодня канун католического Рождества: русскоязычных католиков (или тех, кто хотя бы понимает по-русски) наверняка немало. А во-вторых, в следующую пятницу практически всем будет не до обоев. 🙂 Ну, и в-третьих, нужно настраиваться на новогоднее настроение заранее, чтобы с первым звоном бокалов с шампанским в голове были только радостные мысли и надежды на лучшее.

    Бесплатный виджет Dashboard, позволяющий создавать разнообразные списки дел. Благодаря интеграции с iCal и Apple Mail собирает всю необходимую для пользователя информацию в одном месте. DoBeDo имеет приятный простой дизайн и может менять тему оформления.

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

    У подавляющего большинства владельцев Mac в центре уведомлений уже не первый месяц копятся тучи ненужных уведомлений разных программ. А функция на самом полезная, позволяет выполнить небольшие действия, не запуская для этого дополнительные программы, а просто сделав свайп влево. Следующие 10 виджетов призваны сделать центр уведомлений в OS X Yosemite несколько удобнее.

    Just Calendar

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

    Countdowns

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

    Battery Diag

    Ёмкие долгоиграющие аккумуляторы - одно из преимуществ Macbook. Для тех, кто беспокоится о здоровье своей , количестве циклов перезарядки, температуре, исходной и текущей ёмкости, Battery Diag подойдёт наилучшим образом. Выглядит он красивее, нежели аналогичные программы или виджеты Dashboard, а то, что его можно скачать бесплатно (ограниченное время) и получить доступ к информации в один свайп - ещё один аргумент в пользу Battery Diag.


    Keypad

    Этот виджет использует ещё одну крутую функцию OS X Yosemite - режим Continuity. Ранее звонки можно было совершать только из Facetime, но Keypad добавляет эту возможность непосредственно в центр уведомлений. Одно поле для ввода номера и три кнопки: Call, Redial, Open App, - достаточный минимум для быстрого и удобного использования этой функции.


    Lyrical

    Обычно, когда вы слушаете музыку с iTunes, всё, что отображается в центре уведомлений - название песни, которая играет, и её исполнитель. Если этого вам недостаточно, скачайте Lyrical. Он добавит не только обложку проигрываемого альбома, управление воспроизведением, рейтингом трека и громкостью, но и текст песни.


    AirMail

    По праву можно считать одним из лучших почтовых клиентов для OS X. Удобный и красивый, с добавлением собственного виджета во второй версии он стал ещё лучше. Функциональность минимальная, но её более чем достаточно для того, чтобы в большинстве ситуаций забыть о приложении на панели состояния. Непосредственно в центре уведомлений отображается адресант и тема сообщения, открыть которое можно простым нажатием, а также три кнопки: «Ответить», «Отправить в архив» и «Удалить». Виджет доступен вместе с приложением, которое обойдётся вам в $10.


    iStat Mini

    Этот виджет собирает актуальные данные о загруженности памяти, процессора, внутреннего хранилища и состоянии сети. iStat Mini является минималистичной мини-версией iStat для Dashboard. Впрочем, это не мешает ему быть полезным не меньше своего старшего брата.

    Swift Note

    Swift Note - это небольшой заметочник для центра уведомлений. Он стоит символичный $1 и будет удобен в случаях, когда нужно сохранить для себя важную, но краткосрочную информацию или напоминание, которые не требуют запуска полноценного Calendar или Reminders. Можно создавать неограниченное количество заметок и менять их цвета в пределах шести стандартных вариантов. Аналогичный виджет, кстати, можно установить и в Dashboard.

    Coinverter

    У подавляющего большинства владельцев Mac в центре уведомлений уже не первый месяц копятся тучи ненужных уведомлений разных программ. А функция на самом полезная, позволяет выполнить небольшие действия, не запуская для этого дополнительные программы, а просто сделав свайп влево. Следующие 10 виджетов призваны сделать центр уведомлений в OS X Yosemite несколько удобнее.

    Just Calendar

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

    Countdowns

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

    Battery Diag

    Ёмкие долгоиграющие аккумуляторы - одно из преимуществ Macbook. Для тех, кто беспокоится о здоровье своей , количестве циклов перезарядки, температуре, исходной и текущей ёмкости, Battery Diag подойдёт наилучшим образом. Выглядит он красивее, нежели аналогичные программы или виджеты Dashboard, а то, что его можно скачать бесплатно (ограниченное время) и получить доступ к информации в один свайп - ещё один аргумент в пользу Battery Diag.


    Keypad

    Этот виджет использует ещё одну крутую функцию OS X Yosemite - режим Continuity. Ранее звонки можно было совершать только из Facetime, но Keypad добавляет эту возможность непосредственно в центр уведомлений. Одно поле для ввода номера и три кнопки: Call, Redial, Open App, - достаточный минимум для быстрого и удобного использования этой функции.


    Lyrical

    Обычно, когда вы слушаете музыку с iTunes, всё, что отображается в центре уведомлений - название песни, которая играет, и её исполнитель. Если этого вам недостаточно, скачайте Lyrical. Он добавит не только обложку проигрываемого альбома, управление воспроизведением, рейтингом трека и громкостью, но и текст песни.


    AirMail

    По праву можно считать одним из лучших почтовых клиентов для OS X. Удобный и красивый, с добавлением собственного виджета во второй версии он стал ещё лучше. Функциональность минимальная, но её более чем достаточно для того, чтобы в большинстве ситуаций забыть о приложении на панели состояния. Непосредственно в центре уведомлений отображается адресант и тема сообщения, открыть которое можно простым нажатием, а также три кнопки: «Ответить», «Отправить в архив» и «Удалить». Виджет доступен вместе с приложением, которое обойдётся вам в $10.


    iStat Mini

    Этот виджет собирает актуальные данные о загруженности памяти, процессора, внутреннего хранилища и состоянии сети. iStat Mini является минималистичной мини-версией iStat для Dashboard. Впрочем, это не мешает ему быть полезным не меньше своего старшего брата.

    Swift Note

    Swift Note - это небольшой заметочник для центра уведомлений. Он стоит символичный $1 и будет удобен в случаях, когда нужно сохранить для себя важную, но краткосрочную информацию или напоминание, которые не требуют запуска полноценного Calendar или Reminders. Можно создавать неограниченное количество заметок и менять их цвета в пределах шести стандартных вариантов. Аналогичный виджет, кстати, можно установить и в Dashboard.

    Coinverter