4.7.0

4.7.0

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

Есть ли способ «отключить звук всей команды Slack», чтобы я не получал это уведомление с синим значком? Спасибо.

решение1

Похоже, у меня нет настройки, о которой говорит Шон, но мне удалось заставить это работать, открыв каталог /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

решение2

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

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

До тех пор это должно быть сообществом вики, чтобы предотвратить создание нового ответа для каждой новой версии 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"

решение3

Новейшая версия 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

решение4

Версия 4.27.156

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

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

Связанный контент