Вопрос или проблема
Когда я на работе, я хочу отключить уведомление синим значком, которое появляется при любой активности в канале, в котором я нахожусь. В частности, я не хочу получать это уведомление от определенных команд Slack:
Есть ли способ «выключить всю команду Slack», чтобы я не получал это уведомление с синим значком? Спасибо.
Я, похоже, не имею настройки, о которой упоминает Шон, но мне удалось добиться этого, открыв директорию /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.
Длинный ответ заключается в том, что конкретный метод взлома будет различаться от версии к версии, так как они обновляют исходный код. Мы все должны объединиться и подать запрос на новую функцию (или, возможно, это можно даже считать ошибкой — это явно беспокоит людей).
До тех пор это должно быть сообществом вики, чтобы предотвратить появление нового ответа для каждой новой версии 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
# Очистка предыдущих неудачных попыток
rm -rf ~/tmp/slack
rm -rf ~/tmp/app.asar
# Распаковка
mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
# Модификация
sed -i 's/unreads>0/false/g' ~/tmp/slack/dist/*.js
# Замена
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 "Наслаждайтесь своей продуктивностью"
Последняя версия 4.1.2 не читает файл .ico на Linux и заменяет src
на dist
. Вместо этого она создает значок + основу. К счастью, unread>0
— это проверка, ответственная за значок, и она появляется только один раз в минифицированном JS, так что ее легко исправить. Вам понадобятся инструменты ASAR для изменения архива Electron (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
— это статус, выбирающий изображение. Вам нужно добавить условие, изменяющее t
на "rest"
, когда оно "unread"
.
Результат без минификации:
...
setTrayIcon(t, n, o) {
if (t === "hidden") {
this.tray && (ee.kg.debug("Обработчик подноса: Уничтожение подноса."), this.tray.destroy(), this.tray = null);
return
}
if (!t) return;
if (t === "unread") t = "rest"; // <----- новая строка
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, чтобы указать новую активность”, и это должно сработать.
Версия 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 и редактирует проверку для отображения непрочитанных и выделенных сообщений от timeOfMessages>0 до timeOfMessages<0. Это означает, что когда у вас меньше 0 непрочитанных или выделенных сообщений, это покажет синий/красный значок. У вас никогда не будет меньше нуля непрочитанных сообщений, так что вы никогда не увидите синий/красный значок на панели задач. После этого код снова упаковывается и заменяет оригинальную версию на отредактированную.
Чтобы предоставить решение и для пользователей Windows, тоже:
Следующий короткий скрипт PowerShell ‘выключит’ значок уведомления, заменив иконки с значком на точке на пустые (как предложено в других ответах).
# Установите здесь путь к текущей версии Slack
# (по умолчанию установщик Slack помещает его в %LocalAppData%)
$currentSlackVersionDir = "$env:LOCALAPPDATA\slack\app-4.3.4"
# Меняйте только следующие значения, если названия значков изменятся
$blankIconFile="slack-taskbar-rest.ico"
$dottedIconFiles="slack-taskbar-highlight.ico", 'slack-taskbar-unread.ico'
# Получите путь к папке с иконками по умолчанию
$iconsFolder = "$currentSlackVersionDir\resources\app.asar.unpacked\dist\static"
foreach ($dottedIcon in $dottedIconFiles ) {
# Переименуйте точечный значок (как резервная копия)
Rename-Item -Path "$iconsFolder\$dottedIcon" -NewName "$iconsFolder\$dottedIcon.bak.ico"
# Скопируйте пустой значок, используя его имя
Copy-Item -Path "$iconsFolder\$blankIconFile" -Destination "$iconsFolder\$dottedIcon"
}
Конечно, вы также можете сделать это вручную, но, вероятно, вам придется повторять это при каждом обновлении приложения. (Улучшенная версия этого скрипта также могла бы попытаться найти $currentSlackVersionDir
автоматически, не стесняйтесь редактировать! :-))
В 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
Slack 4.26.1 здесь.
Распакуйте app.asar, отредактируйте main.bundle.js. Есть объект, который сопоставляет ‘unread’ с URL-адресом данных внутри пакета. Внизу вы видите, что я изменил его так, чтобы он ссылался на тот же URL-адрес данных, что и ‘rest’.
:; grep -oE ......................unread:.... main.bundle.js
{highlight:E3,rest:b3,unread:b3};
После изменения упакуйте app.asar снова.
В версии 4.20.0, предполагая, что строки “unread”, “highlight” и “rest” в main.bundle.js
ссылаются на соответствующие иконки панели задач, изменение “unread” на “rest” скроет синий индикатор, что и происходит.
#!/bin/bash
mkdir -p ~/tmp/slack
asar extract /usr/lib/slack/resources/app.asar ~/tmp/slack
sed -i 's/"unread"/"rest"/' ~/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.1.2 это, похоже, не работает, потому что, похоже, приложение Electron не использует ресурсы на диске или что-то в этом роде. Я спрашивал об этом у коллег и получил следующее, что сработало для меня:
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
Решения с изменением значков не сработали для меня, но я отредактировал решение Эльмира Бечировича по этому вопросу, и оно сработало для меня:
https://github.com/lucaohost/random-codes/blob/master/notifications-slack.sh
Ответ или решение
Как отключить значок «синий круг» уведомления в приложении Slack на Linux
При использовании приложения Slack на Linux многие пользователи сталкиваются с вопросом, как отключить уведомление в виде синего круга, которое появляется при активности в канале. В данной статье будут рассмотрены различные способы решения этой проблемы для конкретных команд в Slack, а также некоторые факты о модификациях, которые могут потребовать усилий.
Мультикомандное решение
На текущий момент у Slack нет встроенной функции для отключения синего индикатора уведомлений по командам. Однако вы можете попробовать следующие шаги, чтобы уменьшить количество уведомлений и отключить визуальные индикаторы:
- Отключение значка уведомлений:
- Перейдите в настройки: Откройте Slack, нажмите на ваше имя или значок профиля в левом верхнем углу.
- Выберите "Настройки": В выпадающем меню найдите опцию "Настройки".
- Настройка уведомлений: Перейдите в раздел "Уведомления" и снимите галочку с параметра "Показывать значок на иконке Slack, чтобы указать на новую активность".
Это поможет отключить уведомление для всех команд, однако, если вы хотите отключить уведомления только для определенных команд, потребуется внести изменения в код.
Хакерские изменения и использование asar
Для более продвинутых пользователей можно использовать следующие методы, которые требуют изменения исходных файлов Slack:
-
Изменение иконок уведомлений:
- Откройте терминал и выполните команду:
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
- Откройте терминал и выполните команду:
-
Патчинг JavaScript кода:
Если вы хотите более гибкое решение, можно изменить JavaScript код Slack:- Убедитесь, что у вас установлен инструмент
asar
. Используйте команду для установки через npm:npm install -g asar
- Распакуйте файлы Slack:
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.bundle.js
- Замените ранее распакованные файлы обратно в Slack:
sudo rm /usr/lib/slack/resources/app.asar sudo asar pack ~/tmp/slack /usr/lib/slack/resources/app.asar
- Убедитесь, что у вас установлен инструмент
Этот метод изменяет поведение приложения и скрывает индикатор нового сообщения, что окажет влияние на всех пользователей Slack на вашей системе.
Важные замечания
- Безопасность. Убедитесь, что вы сохранили копии всех оригинальных файлов перед внесением изменений. Это поможет предотвратить возможные проблемы при обновлении приложения.
- Регулярное обновление. Каждое обновление Slack может нарушить ваши изменения, поэтому вам, возможно, придется повторять описанные процедуры после обновления приложения.
- Команда. Рассмотрите возможность создания командного чата для обсуждения идей, связанных с функционалом Slack, и отправляйте запросы на добавление новых функций.
Заключение
Хотя Slack не предлагает встроенных средств для отключения значка «синий круг» для определенных команд, описанные выше способы позволят вам отключить визуальные уведомления о новых сообщениях. Пользователи, готовые идти на риск, могут использовать хакерские методы для изменения кода, но будьте осторожны и делайте резервные копии файлов перед модификацией.