4.7.0

4.7.0

仕事中、自分が参加しているチャンネルで何かアクティビティがあったときに表示される青いアイコンの通知を無効にしたいです。具体的には、特定の Slack チームからのこの通知は不要です。 ここに画像の説明を入力してください

青いアイコンの通知が表示されないように、「Slack チーム全体をミュート」する方法はありますか? ありがとうございます。

答え1

Shawn が言及している設定は持っていないようですが、/usr/lib/slack/resources/app.asar.unpacked/src/staticディレクトリを開いてファイルのコピーを作成しslack-taskbar-rest.png、名前を変更してslack-taskbar-unread.png青い点があるバージョンを上書きすることで、これを機能させることができました。

もちろん、これによりすべてのチームの青いドットが削除されますが、それが私が望んでいたことです。

編集 (2019-05-28):アイデアは正しいですが、Ubuntu 上の最新の Slack バージョン (3.4.2) では、さらに 2 つのファイルを置き換える必要があります。私の場合は次の方法でうまくいきました。

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

これは、ドミトリーSの回答

  • unreads>0は に置き換えられるfalseため、Slack は常に未読メッセージがないものと認識するようになります。
  • .js最新バージョンではコードが分割されているようなので、すべてのファイルで置き換えが行われます。
  • asarスーパーユーザー権限で実行されないので、npm-g_nosudo

前提条件:

  • asarnpm を通じてグローバルにインストールされます: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はLinux上で.icoファイルを読み込まず、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

答え4

バージョン 4.27.156

これは更新版ですドミトリーSの回答コードの更新方法が変更されました。 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)
}
...

関連情報