ダークモードとライトモードで拡張機能のアイコンを切り替えようと思ってAIに相談したら、色々頑張って試してみてくれたけど結局無理みたいだった
まあ理由もわからなくはないけど公式のアイコンではやってるのがずるく感じる
Google Chrome 拡張機能 29 ※どんぐり有
657名無しさん@お腹いっぱい。 警備員[Lv.0][新芽] (ワッチョイ 818a-Efm2)
2026/06/17(水) 11:44:59.16ID:9MTGkDyr0658名無しさん@お腹いっぱい。 警備員[Lv.13][苗] (ワッチョイ 2ed4-F/2s)
2026/06/17(水) 11:55:53.68ID:LFGLLykG0 >>657
prefers-color-schemeみてchrome.browserAction.setIconで指定するだけだぞ
prefers-color-schemeみてchrome.browserAction.setIconで指定するだけだぞ
659名無しさん@お腹いっぱい。 警備員[Lv.4][新芽] (ワッチョイ 818a-Efm2)
2026/06/17(水) 13:43:53.05ID:9MTGkDyr0 OS自体のライトモードとダークモードの切り替えならそのノリで対応できると思う
Chromeのテーマの切り替えだとループ回して何秒に一回監視とかいうアホなことやらないと追従しない
もちろんツールバー背景だけカスタムで暗い色とかだと全く無理
結局、どっちでも見えるアイコン用意しろ、になっちゃう
Firefoxだとmanifestに書いてるだけで切り替え出来るらしいけどね
Chromeのテーマの切り替えだとループ回して何秒に一回監視とかいうアホなことやらないと追従しない
もちろんツールバー背景だけカスタムで暗い色とかだと全く無理
結局、どっちでも見えるアイコン用意しろ、になっちゃう
Firefoxだとmanifestに書いてるだけで切り替え出来るらしいけどね
660名無しさん@お腹いっぱい。 警備員[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レスを投稿する
ニュース
- 女子刑務所は「快適すぎる」「ホテルみたい」SNSで拡散…元受刑者「トイレにも自由に行けず地獄だった」 長期受刑者にはいじめも… [煮卵★]
- デーブ・スペクター、日本戦“地上波放送”のW杯に私見「今回特に盛り上がってるのはWBCの独占配信への腹いせ」 [ネギうどん★]
- 駅のトイレから「トイレットペーパーを持ち帰る人」、実は少なくなかった… [煮卵★]
- 「なぜ夫だったのか」「私は相手を殺さない」、山上被告に対峙した妻・昭恵さんの胸中…安倍氏銃撃4年 [煮卵★]
- 【W杯】「ロナウドにボールを渡す義務や必要性はない」…ポルトガル代表FWのSNS大荒れ「黙って敬意を示せ!」 [王子★]
- 「走って何になるんだろうって」星野真里『24時間テレビ』ランナー決定に疑問殺到 元テレ朝Pも「変えたほうがいい」 [ネギうどん★]
- 【地上波/DAZNほか】 FIFAワールドカップ2026 総合スレ★152【メキシコ/カナダ/アメリカ】
- 【MLB】ツインズ vs ドジャース ★2
- 〓たかせん〓
- わしせん
- とらせん
- こいせん 全レス転載禁止
- 「シャウエッセン」値上げ😲 [521921834]
- 【高市】国会、大荒れ。「聴いてない!聴いてない!」「止めて止めて!」「総理は簡潔に!」怒号飛び交う😳 [518915984]
- 【高市悲報】トンキン民、家賃が高くなりすぎてこんな家に住むしかなくなる そうまでしてトンキンに住みたい? [158478931]
- 自民党「クマの肉を特産品にしよう」🐻「!?」自民が「クマ対策」第2次提言取りまとめ [432287167]
- 【悲報】高市「G7の説明報告?やーやーなの!😡」秘書問題どころか外交成果の審議も拒否し一時国会止まる [359965264]
- 【画像】女の子「今日から私がお前たちの主人だ!!♡」