OS自体のライトモードとダークモードの切り替えならそのノリで対応できると思う
Chromeのテーマの切り替えだとループ回して何秒に一回監視とかいうアホなことやらないと追従しない
もちろんツールバー背景だけカスタムで暗い色とかだと全く無理
結局、どっちでも見えるアイコン用意しろ、になっちゃう
Firefoxだとmanifestに書いてるだけで切り替え出来るらしいけどね
Google Chrome 拡張機能 29 ※どんぐり有
659名無しさん@お腹いっぱい。 警備員[Lv.4][新芽] (ワッチョイ 818a-Efm2)
2026/06/17(水) 13:43:53.05ID:9MTGkDyr0660名無しさん@お腹いっぱい。 警備員[Lv.4][新芽] (ワッチョイ 818a-Efm2)
2026/06/17(水) 13:46:42.40ID:9MTGkDyr0 断定口調で書いたけど素人なので、突破できる方法もあるかも
661名無しさん@お腹いっぱい。 警備員[Lv.9][新] (ワッチョイ 451b-5XrM)
2026/06/17(水) 18:16:59.99ID:RgtXFnJA0662名無しさん@お腹いっぱい。 警備員[Lv.0][新芽] (ワッチョイ 3dc1-rqZN)
2026/06/17(水) 23:27:32.94ID:WYTo9SUW0 頭が悪いのかもしれない
663567 警備員[Lv.0][新芽] (ワッチョイ 3d96-d+y+)
2026/06/20(土) 14:04:19.78ID:PAJWywKD0 >>657
これ ??
できるけどChromeがmanifestだけで自動的にライト/ダーク用アイコンを
切り替えてくれる仕組みは弱い/基本ない、と見た方がいい。
実装としては、JSでテーマを判定して chrome.action.setIcon() でツールバーアイコンを差し替える 形になる。
Chrome公式では、拡張機能のツールバーアイコンは action.default_icon で指定でき、
さらに chrome.action.setIcon() でプログラムから変更できると説明されている。
また、prefers-color-scheme はユーザーがライト/ダーク配色を要求しているかを検出するための仕組みで、
OS設定やユーザーエージェント設定を反映する。
これ ??
できるけどChromeがmanifestだけで自動的にライト/ダーク用アイコンを
切り替えてくれる仕組みは弱い/基本ない、と見た方がいい。
実装としては、JSでテーマを判定して chrome.action.setIcon() でツールバーアイコンを差し替える 形になる。
Chrome公式では、拡張機能のツールバーアイコンは action.default_icon で指定でき、
さらに chrome.action.setIcon() でプログラムから変更できると説明されている。
また、prefers-color-scheme はユーザーがライト/ダーク配色を要求しているかを検出するための仕組みで、
OS設定やユーザーエージェント設定を反映する。
664567 警備員[Lv.0][新芽] (ワッチョイ 3d96-d+y+)
2026/06/20(土) 14:05:07.89ID:PAJWywKD0 その2
例えばこういう感じ。
-----------------------
// popup.js や options.js など、window がある拡張ページ側で動かす
const mq = window.matchMedia("(prefers-color-scheme: dark)");
function applyIcon() {
const dark = mq.matches;
chrome.action.setIcon({
path: {
"16": dark ? "icons/icon-dark-16.png" : "icons/icon-light-16.png",
"32": dark ? "icons/icon-dark-32.png" : "icons/icon-light-32.png",
"48": dark ? "icons/icon-dark-48.png" : "icons/icon-light-48.png",
"128": dark ? "icons/icon-dark-128.png" : "icons/icon-light-128.png"
}
});
}
applyIcon();
mq.addEventListener("change", applyIcon);
-----------------------
例えばこういう感じ。
-----------------------
// popup.js や options.js など、window がある拡張ページ側で動かす
const mq = window.matchMedia("(prefers-color-scheme: dark)");
function applyIcon() {
const dark = mq.matches;
chrome.action.setIcon({
path: {
"16": dark ? "icons/icon-dark-16.png" : "icons/icon-light-16.png",
"32": dark ? "icons/icon-dark-32.png" : "icons/icon-light-32.png",
"48": dark ? "icons/icon-dark-48.png" : "icons/icon-light-48.png",
"128": dark ? "icons/icon-dark-128.png" : "icons/icon-light-128.png"
}
});
}
applyIcon();
mq.addEventListener("change", applyIcon);
-----------------------
665567 警備員[Lv.0][新芽] (ワッチョイ 3d96-d+y+)
2026/06/20(土) 14:05:47.47ID:PAJWywKD0 その3
manifest.json 側は、初期アイコンを普通に置いておく。
-----------------------
{
"manifest_version": 3,
"name": "Example",
"version": "1.0.0",
"action": {
"default_icon": {
"16": "icons/icon-light-16.png",
"32": "icons/icon-light-32.png",
"48": "icons/icon-light-48.png",
"128": "icons/icon-light-128.png"
}
}
}
-----------------------
manifest.json 側は、初期アイコンを普通に置いておく。
-----------------------
{
"manifest_version": 3,
"name": "Example",
"version": "1.0.0",
"action": {
"default_icon": {
"16": "icons/icon-light-16.png",
"32": "icons/icon-light-32.png",
"48": "icons/icon-light-48.png",
"128": "icons/icon-light-128.png"
}
}
}
-----------------------
666567 警備員[Lv.0][新芽] (ワッチョイ 3d96-d+y+)
2026/06/20(土) 14:06:48.11ID:PAJWywKD0 その4
注意点は、MV3のbackground service workerでは window.matchMedia() が使えないこと。
matchMedia() はWindowのAPIなので、popup/options/通常の拡張ページなど
windowがある場所で判定するのが素直。
なので結論としては、
可能。ただし「manifestで完全自動」ではなく、prefers-color-scheme を見てchrome.action.setIcon()で差し替える。
なお、これはOS/Chromeのライト・ダーク設定に寄せる方法で、ユーザーが独自のChromeテーマを入れて
ツールバー背景色だけ変えている場合まで完全には判定できない。
Chrome自体はライト/ダーク/デバイス設定に追従する表示モードを持っている。
注意点は、MV3のbackground service workerでは window.matchMedia() が使えないこと。
matchMedia() はWindowのAPIなので、popup/options/通常の拡張ページなど
windowがある場所で判定するのが素直。
なので結論としては、
可能。ただし「manifestで完全自動」ではなく、prefers-color-scheme を見てchrome.action.setIcon()で差し替える。
なお、これはOS/Chromeのライト・ダーク設定に寄せる方法で、ユーザーが独自のChromeテーマを入れて
ツールバー背景色だけ変えている場合まで完全には判定できない。
Chrome自体はライト/ダーク/デバイス設定に追従する表示モードを持っている。
667名無しさん@お腹いっぱい。 警備員[Lv.6][新] (JP 0H8f-S/Q7)
2026/06/22(月) 04:52:58.26ID:6lsjxqFNH AIに聞いたのかな?
この中にもだめな理由がちらっと書かれてるけど、実際にやってみたら何がだめなのかわかるよ
拡張機能を起動させるためのボタンのアイコンだから、拡張機能を起動させてない状態でスクリプトが働かないといけないんだよね
この中にもだめな理由がちらっと書かれてるけど、実際にやってみたら何がだめなのかわかるよ
拡張機能を起動させるためのボタンのアイコンだから、拡張機能を起動させてない状態でスクリプトが働かないといけないんだよね
668567 警備員[Lv.0][新芽] (ワッチョイ 5fa7-e/Io)
2026/06/23(火) 02:29:37.29ID:D0aLv24K0レスを投稿する