Приложение Slack на Linux: как отключить значок "синий круг" на активности канала?

Когда на работе я хочу отключить уведомление синим значком, которое происходит, когда в канале, в котором я нахожусь, есть какая-либо активность. В частности, я не хочу это уведомление от некоторых слабых команд:

Есть ли способ "приглушить всю слабую команду", чтобы я не получал уведомление об этом синем значке? Благодарю.

13 ответов

Решение

Кажется, у меня нет настройки, о которой упоминает Шон, но я смог сделать эту работу, открыв /usr/lib/slack/resources/app.asar.unpacked/src/static каталог, делая копию slack-taskbar-rest.png файл и переименование его в slack-taskbar-unread.png переписать версию с синей точкой.

конечно, это избавляет от синей точки для всех команд, но это то, что я хотел.

Редактировать (2019-05-28): Идея по-прежнему верна, но для последней версии Slack (3.4.2) в Ubuntu необходимо заменить еще два файла. У меня сработало следующее:

cd /usr/lib/slack/resources/app.asar.unpacked/src/static
sudo cp slack-taskbar-rest.ico slack-taskbar-unread.ico
sudo cp slack-taskbar-rest.png slack-taskbar-unread.png
sudo cp slack-taskbar-rest-linux.png slack-taskbar-unread-linux.png

Короткий ответ: вы не можете этого сделать, не взламывая слабину.

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

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


4.7.0

Это улучшение на ответ Дмитрия С.,.

  • unreads>0 заменяется на false, поэтому Slack всегда должен думать, что непрочитанных сообщений нет.
  • Замена производится во всех .js файлы, так как код в последней версии кажется разделенным.
  • asar не запускается с привилегиями суперпользователя, что полезно для людей, использующих npm-g_nosudo.

Предпосылки:

  • asar установлен глобально через npm: npm install -g asar

Сценарий:

#!/usr/bin/env sh

set -eu

# Clean up previous failed attempts
rm -rf ~/tmp/slack
rm -rf ~/tmp/app.asar

# Unpack
mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack

# Modify
sed -i 's/unreads>0/false/g' ~/tmp/slack/dist/*.js

# Replace
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
asar pack ~/tmp/slack ~/tmp/app.asar
sudo cp ~/tmp/app.asar /usr/lib/slack/resources/app.asar
sudo cp -r ~/tmp/slack /usr/lib/slack/resources/app.asar.unpacked

echo "Enjoy your productivity"

Новейшая версия 4.1.2 не читает файл.ico в Linux, а вносит изменения src в dist, Вместо этого он строит значок + базу. к счастью unread>0 является проверкой, отвечающей за значок, и появляется только один раз в минимизированном JS, так что это легко исправить. Вам понадобится инструмент ASAR, чтобы изменить электронный архив (npm install -g asar):

mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/unreads>0/unreads<0/g' ~/tmp/slack/dist/main.1.*.js
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
sudo asar pack ~/tmp/slack /usr/lib/slack/resources/app.asar
sudo mv ~/tmp/slack /usr/lib/slack/resources/app.asar.unpacked

Та же идея, что и у notatoad, но в самой последней версии Slack (3.4.2) для Linux есть еще два файла, которые необходимо перезаписать, чтобы заменить значок "синяя точка" на значок "остальные". Я сделал следующее:

cd /usr/lib/slack/resources/app.asar.unpacked/src/static
sudo cp slack-taskbar-rest.ico slack-taskbar-unread.ico
sudo cp slack-taskbar-rest.png slack-taskbar-unread.png
sudo cp slack-taskbar-rest-linux.png slack-taskbar-unread-linux.png

После перезапуска Slack мы избавляемся от синей точки.

Версия 4.27.156

Это обновленная версия ответа Дмитрия С с изменением способа обновления кода. Следуйте его ответу для извлечения и упаковки файлов с помощью asar.

Более подробный, но, надеюсь, перспективный ответ. Вы хотите найтиsetTrayIconфункционировать вmain.*.jsфайл (в версии 4.27 он называетсяmain.bundle.js). Ищите код, используя файл значка -const O = nt.resolve(__dirname, "resources", 'slack-taskbar-${t}.ico');В данном случае переменной является статус выбора изображения. Вы хотите добавить изменение условийtк"rest"когда это"unread".

Неминифицированный результат:

      ...
setTrayIcon(t, n, o) {

  if (t === "hidden") {
    this.tray && (ee.kg.debug("Tray Handler: Destroying tray."), this.tray.destroy(), this.tray = null);
    return
  }
  if (!t) return;
  if (t === "unread") t = "rest"; // <----- new line
  let y;
  if (al) {
    const O = nt.resolve(__dirname, "resources", `slack-taskbar-${t}.ico`);
    y = ce.nativeImage.createFromPath(O)
  } else {
    const O = WM[t];
    y = ce.nativeImage.createFromDataURL(O)
  }
  this.tray ? this.tray.setImage(y) : this.createTrayIcon(y, n, o)
}
...

Slack версии 4.2.0, удалите синюю (уведомления) и красную (выделение) точки уведомления:

mkdir ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/unreads>0/unreads<0/g' ~/tmp/slack/dist/main.2.*.js
sed -i 's/unreadHighlights>0/unreadHighlights<0/g' ~/tmp/slack/dist/main.2.*.js
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
sudo asar pack ~/tmp/slack /usr/lib/slack/resources/app.asar
rm -rf ~/tmp/slack

Что это делает - он распаковывает исходный код Slack и редактирует проверку для отображения непрочитанных и выделенных сообщений, начиная с numberOfMessages>0 и заканчивая numberOfMessages<0. Это означает, что если у вас меньше 0 непрочитанных или выделенных сообщений, будет отображаться синяя / красная точка. У вас никогда не будет меньше нуля непрочитанных сообщений, поэтому вы никогда не увидите синюю / красную точку на панели задач. После этого он снова упаковывает код и заменяет исходную версию отредактированной.

Slack 4.26.1 здесь.

Распакуйте app.asar, отредактируйте main.bundle.js. Существует объект, который сопоставляет «непрочитанный» URL-адресу данных в пакете. Ниже вы видите, что я изменил его, чтобы он ссылался на тот же URL-адрес данных, что и «rest».

      :; grep -oE ......................unread:.... main.bundle.js 
{highlight:E3,rest:b3,unread:b3};

После его изменения запакуйте app.asar еще раз.

В Slack 4.8.0 вы можете отключить это, установив патч main.bundle.js. Вам понадобится программа для архивирования asar.

mkdir /tmp/slack
asar extract /usr/lib/slack/resources/app.asar /tmp/slack
sed -i 's/icon="unread"/icon="rest"/g' ~/tmp/slack/dist/main.bundle.js
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
sudo asar pack /tmp/slack /usr/lib/slack/resources/app.asar
sudo mv /tmp/slack /usr/lib/slack/resources/app.asar.unpacked

В настройках -> Уведомления:

В версии 4.4.0 в файле main.2. *. Js есть определение icon="unread", изменение которого на "rest" скроет индикатор непрочитанных сообщений (синий).

mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/icon="unread"/icon="rest"/g' ~/tmp/slack/dist/main.2.*.js
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
sudo asar pack ~/tmp/slack /usr/lib/slack/resources/app.asar
sudo mv ~/tmp/slack /usr/lib/slack/resources/app.asar.unpacked

Я не вижу способа изменить это для каждого канала, но вы можете изменить его для каждой команды. В ваших предпочтениях перейдите в раздел "Уведомления" и снимите флажок "Показывать значок на значке Slack для обозначения новой активности", и это должно быть сделано.

Чтобы предоставить решение и для пользователей Windows:

Следующий короткий сценарий PowerShell "отключит" точку уведомлений, заменив значки точкой на пустую (как предлагают другие ответы).

# Set the path to the current Slack version here
# (by default the Slack installer puts it in %LocalAppData%)
$currentSlackVersionDir = "$env:LOCALAPPDATA\slack\app-4.3.4"

# Only change the following values if the names of the icons change
$blankIconFile = 'slack-taskbar-rest.ico'
$dottedIconFiles = 'slack-taskbar-highlight.ico', 'slack-taskbar-unread.ico'

# Get default icons folder path
$iconsFolder = "$currentSlackVersionDir\resources\app.asar.unpacked\dist\static"

foreach ($dottedIcon in $dottedIconFiles ) {
  # Rename dotted icon (as backup)
  Rename-Item -Path "$iconsFolder\$dottedIcon" -NewName "$iconsFolder\$dottedIcon.bak.ico"

  # Copy blank icon using its name
  Copy-Item -Path "$iconsFolder\$blankIconFile" -Destination "$iconsFolder\$dottedIcon"
}

Конечно, вы также можете сделать это вручную, но вам, вероятно, придется переделывать это при каждом обновлении приложения. (Улучшенная версия этого сценария также может попытаться найти $currentSlackVersionDirавтоматически, не стесняйтесь редактировать!:-))

С версии 4.1.2 это не работает, потому что кажется, что электронное приложение не использует ресурсы на диске или что-то в этом роде. Я попросил об этом коллег и получил следующее, что помогло мне:

mkdir ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/unreads>0/unreads<0/g' ~/tmp/slack/dist/main.1.*.js
sudo rm /usr/lib/slack/resources/app.asar
sudo rm -rf /usr/lib/slack/resources/app.asar.unpacked
sudo asar pack ~/tmp/slack /usr/lib/slack/resources/app.asar
rm -rf ~/tmp/slack
Другие вопросы по тегам