Хочу показать вам свой open-source проект Cerebro — это бесплатная альтернатива Alfred и Spotligth, работать над которым я начал несколько месяцев назад и лишь недавно добился стабильности и кроссплатформенности, с которой готов показать продукт широкой аудитории.



(под катом будет много скриншотов)


Зачем?


Я ставил для себя несколько целей:


  • Сделать бесплатный open-source аналог Alfred и Spotlight;
  • Он должен быть кросс-платформенным;
  • В отличии от многих open-source проектов сделать акцент на хороший UI/UX и простоту в использовании;
  • Исправить то, что не нравится в Alfred: бoльшая свобода для плагинов (например, отображение не только текста, но и любых других элементов интерфейса);
  • Исправить то, что не нравится в Spotlight: кастомизация, плагины, скорость;
  • «Мощный эй-пи-ай», чтобы любой разработчик на JS мог за 10 минут сделать простое расширение, а пользователи могли найти эти плагины в одном месте.

Что получилось


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


  • Искать в гугле;
  • Искать и запускать приложения (пока только на MacOS);


  • Считать и конвертировать величины


  • Навигироваться по файловой системе и показывать файлы



  • Переводить с одного языка на другой


  • Искать на гугл-картах

Плагины


Плагин — это простой npm-модуль, написанный на javascript. В принципе, вы можете написать плагин на любом другом языке, просто обернув в js вызов вашего скрипта. Документация по созданию плагинов доступна на гитхабе.




На момент написания статьи доступно 10 плагинов, которые можно искать и устанавливать прямо из приложения:


  • Поиск по базе caniuse.com



  • Поиск фильмов на IMDB



  • Поиск gif на giphy.com



  • Поиск подходящих emoji



  • Поиск по контактам в OSx


  • Выполнение shell-comand


  • Системные команды для OSx (screen saver, empty trash, restart)
  • Поиск во встроенном в OSx словаре
  • Отображение внешнего и внутрннего IP адреса
  • Kill — чтобы убить любой процесс в системе

Отзывы


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


> Сайт
> Репозиторий

Поделиться с друзьями
-->

Комментарии (56)


  1. Here_and_Now
    26.01.2017 13:09

    Классно!
    Пытаюсь поменять HotKey, но оно просит его напечатать. Лучше чтобы просто определяло нажатие


    1. Here_and_Now
      26.01.2017 13:22

      Перезапустил и все заработало)

      ещё 3 наблюдения:
      1) При вводе текста и последующей попытке его выделить курсором — у вас двигается все окно. Спотлайт умеет разделять эти два действия.
      2) Спотлайт закрывается при клике мимо окна. У Церебро этого нет. Это фича?
      3) Поиск по приложениям зависит от прописных/заглавных букв. Нужно искать независимо от символов


      1. KELiON
        26.01.2017 13:27

        Отличные наблюдения)

        1 — точно, я даже не думал об этом
        2 — А какая у вас система? Это баг, но на OSx он не воспроизводится
        3 — ага, в какой-то из релизов это сломалось) Поправим!


        1. Here_and_Now
          26.01.2017 13:37

          2) У меня тоже макос. Нашел причину. По-умолчанию выставлена галочка «Developer mode». Если её убрать — клик мимо окна закрывает приложение

          Классный проект! Поменял свой спотлайт на церебро. Будем тестить)


    1. KELiON
      26.01.2017 13:23

      В принципе, хоткей просто определяется, но должна быть нажата хотя бы одна спец. клавиша (alt, ctrl или cmd)


      1. Here_and_Now
        26.01.2017 13:28

        Еще в окне плагинов не очень логично:

        Наводишь на плагин (не кликаешь)
        Нажимаешь Details — появляется информация о плагине
        Всё, с этого момента на другие плагины неясно как перейти — список плагинов затемнён, а при клике по списку кидает на гитхаб.

        Думаю лучше убрать редирект на гитхаб, сделать для плагина действие по клику — выделение, а ссылку на гитхаб добавить в описание плагина


        1. KELiON
          26.01.2017 13:34

          Тоже хорошее наблюдение, подмаю над этим. Я всё делаю без мыши и интерфейс получился в основном под клавиатуру: выбор плагина стрелками вверх/вниз, стрелка вправо — его выделение, стрелка влево или esc – переход обратно в список результатов.


  1. leoismyname
    26.01.2017 13:28
    +1

    Выглядит крайне приятно, просто решил написать об этом.


  1. dvor
    26.01.2017 13:37

    Спасибо, выглядит перспективно.

    Возможно ли добавить некое подобие vi-mode? Переход в «нормальный» режим при нажатии на Esc и перемещение с помощью hjkl в нем?


    1. KELiON
      26.01.2017 13:46

      Интересная идея) Теоретически всё можно. Сможете подробнее расписать, как вы это видите? Получается, что после ввода текста сначала нужно нажать хоткей для перехода в vi-mode (чтобы символы hjkl не писались в поле поиска), и потом по esc переходить в обычный режим?


      1. dvor
        26.01.2017 14:05

        В моем представлении это выглядит как-то так — по-умолчанию включен insert-mode, ввод текста осуществляется обычным способом. При нажатии Esc включается normal-mode:

        — навигация осуществляется при помощи hjkl
        — i возвращает insert-mode, автоматически фокусируется поле ввода
        — y копирует выделенный текст
        — Esc убивает панель.

        Еще можно добавить цифровые модификаторы для некоторых действий — 4j перемещает на четыре строки вниз, 3k на три вверх.


  1. MikeVazovsky
    26.01.2017 13:47

    Скажите, а при добавлении плагина нужно пересобрать приложение, как я понял? Не размышляли ли Вы над возможностью добавления плагина в работающее приложение (т.е. просто указываем файлы со скриптами/шаблонами и оно усваивается и сразу работоспособно без пересборки)? Я просто как раз сейчас занимаюсь приложением на том же стеке технологий и пытаюсь наколхозить подобную систему…


    1. KELiON
      26.01.2017 13:54

      Не совсем — чтобы добавить плагин приложение нужно просто перезагрузить.


      В Cerebro для плагинов я сделал следующее: я сделал скелет, который в режиме разработки (npm run debug) запускает webpack в watch-режиме и создаёт симлинк в папке с плагинами. Поэтому чтобы применить изменения в плагине при разработке нужно просто нажать cmd+r в dev tools Cerebro. Когда отладка закончена (разработчик жмёт ctrl+c в терминале) — симлинк удаляется.


      Когда плагин готов просто запускаем npm run build чтобы собрать и минифицировать код и паблишим плагин в npm с определённым тегом — и он готов для установки всем пользователями. А установка плагина — это просто установка npm-пакета в определённую директорию и перезагрузка приложения.


      1. MikeVazovsky
        26.01.2017 13:58

        Спасибо, поразбираюсь с Вашими исходниками )


  1. savostin
    26.01.2017 13:47
    +5

    Системная утилита на Electron — как минимум занятно и смело!


  1. RaymanOne
    26.01.2017 13:55

    Не могу поменять HotKey, ничего не печатает в этом поле и не дает стереть.


    1. KELiON
      26.01.2017 13:55

      Попробуйте рецепт выше


      1. RaymanOne
        26.01.2017 14:02

        Пытался поставить cmd + space, почему-то не дает. Остальные срабатывают.


        1. KELiON
          26.01.2017 14:05

          Возможно этот хоткей уже используется для чего-то другого (например, смена раскладки или spotlight). Если так — сначала нужно освободить хоткей:)


          1. RaymanOne
            26.01.2017 14:08

            Стоял поиск Spotlight. Я выключил этот шорткат, потом вообще затер на другой — без изменений, его нельзя выбрать.


          1. RaymanOne
            27.01.2017 12:00

            Получилось после перезагрузки системы, не знаю в чем проблема была)


  1. tnc4401
    26.01.2017 14:08
    +1

    Для меня фича №1 — запуск файлов, это умеют делать все конкуренты
    Фича №2 — открыть файл. А это значит интеграция с Everything или Locate под Windows для поиска файлов. И под Mac хотя бы с проиндексированной базой Spotlight.

    Без этого не конкурент FARR, Listary, Wox, Spotlight (Flashlight и что там еще) — у всех все есть и работает великолепно. Farr и заметки с напоминаниями сделает, Flashlight в Todoist задачу занесет.

    Сейчас запуск программ и калькулятор кажется у всех есть. Плагинов катастрофически мало…
    Даешь больше полезных плагинов, например как тут http://flashlight.nateparrott.com/browse


  1. EvilGenius18
    26.01.2017 14:14

    А открытие программ в windows не планируете реализовать (хотя бы windows 10)?


    1. KELiON
      26.01.2017 14:14

      Конечно планирую! Сейчас работаю над этим


  1. Screatch
    26.01.2017 14:19

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

    При конвертации валют например такой запрос «300 baht in eur» не понимает, приходится уточнять и писать «300 thb in eur»

    С несколькими мониторами, не запоминает позицию при перезагрузки приложения.

    А так, очень перспективно на мой взгляд.


    1. Screatch
      26.01.2017 14:24

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


  1. eshill
    26.01.2017 14:25

    А где можно посмотреть список что и во что можно перевести?
    И можно ли посчитать, например процент от числа?

    P.S. Есть супер-классная программа для пользователей Маков — Numi (рекомендую). У них в документации подробно написано какие математические операции и функции конвертации присутствуют.


    1. KELiON
      26.01.2017 14:30

      Посмотреть только в исходниках, к сожалению:) Пока можно конвертировать только массу, дистанцию, валюты и температуру.


  1. gatoazul
    26.01.2017 14:31
    +8

    Статья стала бы лучше, если бы начиналась с того, зачем нужны Alfred и Spotlight. Ведь не все сталкивались с этими программами.


    1. Nengchak
      26.01.2017 14:57

      Полностью с Вами согласен.


  1. Crandel
    26.01.2017 15:46
    +4

    Для тех кто на линуксе — Albert, написанный на с++, работает очень шустро


  1. pavleg
    26.01.2017 16:19
    +1


    Надо запретить повторный запуск


  1. Here_and_Now
    26.01.2017 16:21

    Даже не пытайтесь запустить Cerebro из Cerebro на русской раскладке


  1. dmitry_hidden
    26.01.2017 17:53

    под Linux Mint ecли установить shell plugin, то введение "$" ни к чему не приводитimage


  1. DenimTornado
    26.01.2017 21:08

    Вот это подарок! Огромное вам спасибо! Пойду писать плагины)


    1. DenimTornado
      26.01.2017 21:23

      Ой, я дико извиняюсь, мой внутренний перфекционист бьётся в истерике — http://take.ms/2wB8S, пожалуйста, подвиньте слово Search на три пикселя вправо и увеличьте высота поля на 1 пиксель вниз.


  1. Xrazont
    26.01.2017 23:34

    А вы не смотрели на https://www.lacona.io? Крайне интересный проект в том же поле.


  1. BitHint
    27.01.2017 07:35

    Видимо у меня одного не работает поиск по файловой системе windows


  1. DevMan
    27.01.2017 09:37
    -1

    автор, вам огромный респект за труды. често и без подколов. я всегда уважаю чужой труд, даже если не вижу в нем для себя пользы.
    тепеь немного скепсиса:
    1. спотлайт. прежде всего — это системный сервис индексирования файлов, и только потом морда к нему. соответственно, ваш продукт может быть некой заменой только последнему.
    2. попытка конкурировать альфреду смела, но, имхо, при его возможностях и стоимости, безперспективна. это не минус, а только намек на трезвую оценку своих шансов.

    все написанное касается исключительно OSX.


    1. DenimTornado
      27.01.2017 10:02

      вот не согласен ни по первому, ни по второму…

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

      По поводу цены Alfred, вы считаете 19 фунтов стерлингов для текущей версии ценой, которая не оставляет шансов бесплатной Cerebro, серьёзно? Что заставляет вас так считать?


      1. DevMan
        27.01.2017 10:48

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

        Что заставляет вас так считать?
        цена в 35 фунтов за вечную лицензию, обширная библиотека уже существующих workflow (плагинов) и возможность писать их на любом языке, установленном в системе (чем, кстати, и пользуюсь).
        я желаю всех благ начинанию автора, но отписал как человек, трезво смотрящий на вещи.


  1. lsknwns
    27.01.2017 15:13

    У меня лишь один единственный вопрос. Зачем для таких приложений тащить за собой электрон (или другую подобную платформу). если можно ограничиться написанием демона, а ui уже отрисовывать в браузере?
    Зачем?

    Когда электрон используют для написания какие-то крупных систем (ide, браузеры, CRM\ERP, etc) это еще может быть оправдано.

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


    1. KELiON
      27.01.2017 15:14

      Ну например, потому что у меня не было цели написать бесплатный лончер, а была цель поиграть с электроном и понять его возможности:) Что в итоге получилось — то и показываю


    1. justboris
      29.01.2017 01:59

      Ну напишите свое приложение, покажите как надо. Недавно в статье c описанием Electron тоже в коментариях тоже было много критики формата "что вы делаете, кому нужен этот тяжелый Electron". Критиковать легко, а сделать самому сложнее.


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


  1. HectorPrima
    27.01.2017 15:14

    Написали бы что 64 bit obly, а то скачал 34 метра :)


    1. KELiON
      27.01.2017 15:15
      +1

      О, спасибо за репорт, поправлю, не должно быть только 64 bit


  1. stillHitch
    27.01.2017 15:15

    Очень удобно — спасибо! Все основные сценарии покрыты, но для меня очень важная фича это быстрый просмотр гуглокарт, а там какая-то хитрая логика с зумом.
    — Если указать только город — зум маленький, видно только очертания города, а когда улица указана, то для некоторых адресов зум меняется на максимальный — видна только часть дома без окрестностей.(Можно сравнить разницу на этих адресах: «киев львовская 22а карта» и «киев львовская 22 карта»). Гораздо удобнее когда на карте виден не только дом, а и окрестности рядом — тогда понятно где это и как туда добраться.
    — Если адрес вставить из буфера, то карта может уплыть куда-то влево, а зум станет минимальным
    — Также не понял как поставить в качестве хоткея двойной клик по какой-либо кнопке.


    1. KELiON
      27.01.2017 15:16

      Зум сейчас ставится автоматически гуглом, но его он легко изменяется скроллом по карте


      1. stillHitch
        27.01.2017 15:20

        Зум сейчас ставится автоматически гуглом, но его он легко изменяется скроллом по карте

        Даже если открыть строку ввода и вставить туда адрес? Зачастую результат будет разным при вставке адреса в строку ввода и наборе вручную.


  1. Roman_Zhuravskiy
    27.01.2017 17:11
    +1

    мне на macos в Spotlight очень не хватает поиска сразу на русском и на heccrjv ( на англ раскладке ) приложений.


    1. Here_and_Now
      27.01.2017 17:21

      +1. Уже было бы лучше чем спотлайт для русской аудитории


    1. KELiON
      27.01.2017 17:25

      Добавил в список фич!


    1. ArtRoman
      30.01.2017 14:17

      Или, как в Alfred, нужна настройки раскладки, которая всегда будет активироваться при открытии окна поиска – это позволяет не проверять раскладку каждый раз, а просто писать оригинальное (англоязычное) название приложения и гарантированно получать нужный результат. Например, Словарь можно найти и по «сло» и по «dic».
      Делать перевод между раскладками («heccrjv») нужно для каждой пары языков, а у пользователя может быть не самая стандартная раскладка.


  1. fr_ant
    27.01.2017 17:12

    Классный проект! Автор молодец! Советую!


  1. uaSaint
    27.01.2017 17:12

    • В windows10 у меня черная панель и значек приложения там видно плохо.


    • Возможность запуска нескольких копий — это фича? после третьего запуска и попытки закрыть вторую копию перестала перехватывать "хоткей" и выкинуло ругательство на какой то ексепшен в основном потоке js. Закрыть приложение не получается. Что странно, в трее один черный значек и выйти из приложения никак… а вот в диспетчере задач их три, правда у двух значки таки белые )))

    p.s. в целом хорошо, но без возможности запуска приложений, открытия файлов смысла не вижу в использовании, потому подожду поддержки windows. В linux не знаю зачем оно мне, поскольку нативно без мышки с клавиатуры все выполняется отлично.


  1. Yadro
    30.01.2017 15:00

    Собирался сделать такую же штуку, и даже кое что сделал на c# (тоже чутка попиарюсь), но увидел что есть аналоги лучше.
    Касательно вашей поделки, хотелось бы уже запускать через него проги на винде)