Виджеты для 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» виджеты, не забудьте рассказать о них в комментариях. Я и другие пользователи будем очень благодарны!
- 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.