Firefoxの多段タブ・多段ブックマークツールバー【153・154・155】

過去記事のFirefoxのuserChrome.css関係の記事を最初に書いてから5年経過し、その間Firefox本体も何度もバージョンアップしていて、その都度必要に応じてuserChrome.cssの修正やその他諸々差し替え・修正してきました。

 

この記事を最初に書いた時点ではバージョン119です。
バージョン153・154・155でも、多段タブ・多段ブックマークツールバー・サイドバーの自動開閉に関して問題なく動いています。

 

■Firefoxについて■
2026.8.4時点で

  • Firefox(デスクトップ版):バージョン153.0.1
  • Firefox Portable:バージョン153.0.1
  • Firefox Developer Edition:バージョン154.0b6
  • Firefox Nightly:バージョン155.0a1 (2026-08-03)

ですが、問題なく動いています。

 

 

かなり昔に当サイトの MultiRowTabLiteforFx.uc.js のベースとしていた、昔の多段タブ.zipと比べて、削除した機能が1つあります。

■削除した機能・・・ピン留めタブの位置(分離表示)の設定
ピン留めタブをタブの行から分離して上に出来る行へ移動する設定に関して、(修正をしていませんので)機能していません。

 

そもそもスペースを確保したい目的がメインでピン留めしてるはずなので、(この機能自体があまり意味がない & 修正するのがかなり困難と判断し)当サイトの MultiRowTabLiteforFx.uc.js 内に残っていた関連コードを全て削除しました。

 

バージョン148で導入される新機能「分割ビュー(Split View)」は、about:configで

  • browser.tabs.splitView.enabled:true ※バージョン147の時点ではデフォルトはfalse、バージョン149でデフォルトでtrueになる予定らしいです。

にすると新機能「タブの分割ビュー」が有効になり、タブを右クリックすると
 ・分割ビューを追加

分割ビューを追加

で1つのタブ内で2つのタブを開くことができます。

 

Firefoxの分割ビュー

 

タブの分割ビュー内の2つのタブのどちらかのタブを右クリックすると
 ・分割ビューを終了
とあり、これをクリックすると分割ビューを終了して普通の2つのタブに戻ります。

 

 

なお、分割ビューはバージョン148から正式対応です。

バージョン147でも分割ビューを有効化できますが、バージョン147では分割ビューの横幅や挙動がかなりおかしいです。

 

「■4.22 追記」の時点で
コンテキストメニューのON/OFFを整理・変更しました。
後述の 「■コンテキストメニュー変更について」をお読みください。

 

また、バージョン150以降では、「リンクを新しいタブで開く」が表示されない場合がありますのでご注意ください。

 

■2026.7.23 追記■
「Project Nova」関係を考慮し、「マウスオーバーで自動開閉するサイドバー」関係を大幅に修正しました。
※詳細はこちらです。

 

■2026.8.4 追記■
タブ移動時のドラッグ・アンド・ドロップによるタブグループ操作が機能するよう、MultiRowTabLiteforFx.uc.js を修正しました。

 

また、私がサイドバーに表示しているアドオン「Tree Style Tab - ツリー型タブ」の各種色合いと、(水平タブの)多段タブ・タブグループの色合いを可能な限り統一しました。
※詳細はこちらです。

 

せっかく整理したこのページもまたゴチャゴチャになってきました。
これもバージョン更新のたびに多段タブを使えなくするFirefox開発チームが悪(ry

 

諸々の説明が必要ない場合は、各ファイルのダウンロードの箇所に飛んでください。
ただし、1度くらいはこのページの全てを読んでおくことをオススメします。

 

■注意■
バージョン150以降ではFirefox本体の仕様変更が増えており、従来の userChrome.css やカスタマイズが影響を受ける場合があります。
当サイトの各ファイルを適用する際は、必ず元のファイルをバックアップしてからご利用されることをおすすめします。

 

さらに、バージョン154以降では(154以下でもNovaを有効にしてあれば)

  • 新しいサイドバーの中に古いサイドバーがある

等、以前より色々変更されていますので、当ページの各ファイルをご使用になる場合は

  • 元のファイルをバックアップしてからご利用ください。
  • 自己責任でご利用ください。
 

特に、新しいサイドバーを使う場合あるいは垂直バーをお使いになる場合は、

当ページにある

  • MultiRowTabLiteforFx.uc.jsそのもの

および

  • userChrome.cssのコードの一部

が干渉する可能性があります

のでご注意ください。

 
  1. 多段タブの説明をする前に
    1. タブの色について、とか
    2. マウスオーバーで自動開閉するサイドバー
  2. 多段タブの導入手順等
    1. about:configで変更したもの(メモが残っている範囲で)
    2. userChrome.css等各ファイルを用意する
      1. 各ファイルの保存場所
      2. 各ファイルのダウンロード
    3. 各ファイルを適用する
    4. Firefox本体を再起動する
  3. 導入後の注意点
    1. コンテキストメニュー変更について
    2. バージョン150以降では、「リンクを新しいタブで開く」が表示されない場合があります
    3. ■2026.7.23 追記■「Project Nova」関係を考慮し、「マウスオーバーで自動開閉するサイドバー」関係を大幅に修正しました。
      1. 元のサイドバー※7.23 修正前
      2. 【7.23 修正後】Novaが無効な場合、つまり古いサイドバーのみの場合
      3. 【7.23修正後】Novaが有効な場合、つまり新しいサイドバーの中に古いサイドバーがある場合
      4. 新しいサイドバーで古いサイドバーの横幅を固定する場合、等
    4. ■2026.8.4 追記■サイドバーに表示しているアドオン「Tree Style Tab - ツリー型タブ」の各種色合いと、(水平タブの)多段タブ・タブグループの色合いを可能な限り統一しました。
      1. 微調整、「Tree Style Tab - ツリー型タブ」用CSSおよび設定インポート
  4. userChrome.cssのコード等
  5. 【参考】多段タブの導入手順が色々ある件について
    1. やり方その1:シンプル・軽量※xPref.sys.mjsは不要
    2. やり方その2:高機能?※xPref.sys.mjsが必要
    3. やり方その3:やり方その2より多くのファイルが必要
    4. 結局どのやり方にすればいいの?
    5. 【注意】多段タブとTabMixPlusを併用する場合
  6. 【番外編】Waterfoxについて
  7. 自分用メモ
 

以下、Firefoxの多段タブ・多段ブックマークツールバー・サイドバーの自動開閉の説明です。

 

Firefoxの多段タブ・多段ブックマークツールバー

 

■追加した、ほにゃらら.uc.jsの一覧
AboutAddonsPlus●改●.uc.js
AddonsPage_fx106.uc.js
Firefox_ToolBarButtons●改●.uc.js
MouseGestures2_e10s.uc.js
MouseGestures2_e10s_menus.uc.js
MultiRowTabLiteforFx.uc.js
OpenWith_1.2.1c.uc.js●改●.uc.js
showParentFolder.uc.js
showScrollbarInMenus.uc.js
tabLock_mod2.uc.js
tabProtect_mod2.uc.js
toggle-findbar.uc.js
zzzz-tabContextMenu_combining_tabProtect_and_tabLock.uc.js
タブをダブルクリックでリロードv2●改●.uc.js

 

上記ほにゃらら.uc.js一式およびuserChrome.css等により、
タブを下にする
多段タブ
タブの既読・未読の色やマウスオーバーした時の色・挙動を自分好みに変更
タブロック
タブプロテクト
タブロック&タブプロテクト
多段ブックマークツールバー(MAX30段(変更できる)/縦のスクロールバーなし/フェードインなし)
ブックマークのアイコンの色を変更
自動開閉のサイドバー
再起動ボタン
不要なコンテキストメニューを非表示
アドレスバーを拡大しない
ツールバーボタンをいくつか追加
『Ctrl+F』で検索バーの表示切り替え
タブをダブルクリックでリロード

が有効になっています。

 

多段タブの説明をする前に

多段タブの諸々を説明する前に、タブの色 & サイドバーについて少し説明します。

 

 

タブの色について、とか

アクティブタブ・・・背景黄色で透過 & 文字は黒で太字 & 黒い枠

非アクティブタブ(既読)・・・背景少し濃い灰色を透過 & 文字は黒

非アクティブタブ(未読)・・・背景薄い灰色を透過 & 文字は薄い黒
※タブを再読み込みして瞬時に別タブに移動してもキャッシュと全く同じ場合は既読らしい

アクティブタブ・非アクティブタブ(既読)・非アクティブタブ(未読)

 

タブをマウスオーバー(全タブ共通)・・・タブの上に青い線

ピン留めしたタブ以外のタブをマウスオーバー・・・タブの右側に閉じるボタン(『X』ボタン)を表示

 

アクティブタブをマウスオーバー・・・文字は黒で太字(元々そうなっています)

非アクティブタブ(既読)をマウスオーバー・・・文字は黒で太字 & タブの背景は少し濃い水色を透過

非アクティブタブ(未読)をマウスオーバー・・・文字は赤で太字 & タブの背景は薄い水色を透過

アクティブタブ・非アクティブタブ(既読)・非アクティブタブ(未読)をマウスオーバー

 

ある程度ライトテーマ・ダークテーマどちらでも認識しやすいように調整しました。

 

マウスオーバーで自動開閉するサイドバー

サイドバーはアドオンのTree Style Tab - ツリー型タブを使用しつつ、サイドバーの挙動・幅・色を少し変更してあります。

 

①閉じた状態のサイドバー(縦に棒状・横幅36px)を常時表示していて、
※Firefoxのメニューの、表示 → サイドバー → ツリー型タブをチェックON

①閉じた状態のサイドバー(縦に棒状・横幅36px)を常時表示

 

②閉じた状態のサイドバーに0.5秒マウスオーバーでサイドバーの中身が開きます。

②閉じた状態のサイドバーに0.5秒マウスオーバーでサイドバーの中身が開く

■2026.7.23 修正前の太さ:36px → 修正後:6px ※詳細はこちらです。

■2026.8.4 サイドバーの「Tree Style Tab - ツリー型タブ」の各種色合いと、多段タブ・タブグループの色合いを可能な限り統一しました。※詳細はこちらです。

 

上記画像のサイドバーで、

  • 下から3番目がアクティブタブ(背景:青色) ←2026.8.4に修正しました。
  • 1番下がマウスオーバー(背景:灰色)

の状態です。

 

開いたサイドバーは横幅300pxで固定してあります。

マウスオーバーをやめると①の状態に戻ります。

 

多段タブの導入手順等

以下、多段タブを初めて導入する際の手順です。
必要ない場合は、各ファイルのダウンロードの箇所に飛んでください。

 

about:configで変更したもの(メモが残っている範囲で)

about:config にて、toolkit.legacyUserProfileCustomizations.stylesheets をtrueにします。
※なければ新規作成します。

 

上記だけでOKなはずです。

 

その他変更した記録がメモに残っていたやつ※多段タブに関係なくて、私用の備忘録です。

browser.tabs.insertRelatedAfterCurrent を true

 

browser.tabs.closeWindowWithLastTab を false
browser.search.openintab を true

 

browser.tabs.loadBookmarksInTabs を true
browser.urlbar.autoFill を false
browser.cache.disk.smart_size.enabled を false

 

media.gpu-process-decoder を false
browser.urlbar.openintab を true

 

userChrome.css等各ファイルを用意する

https://github.com/alice0775/userChrome.js

から『Code』→『Download ZIP』にて

 

①config.js
②config-prefs.js
③userChrome.css
④userChrome.js
の4ファイルを用意します。

※使用しているFirefoxのバージョンに1番近い番号のフォルダに最新版が入っています、あるいは修正の必要がないファイルはフォルダ外にあります。

 

各ファイルの保存場所

それぞれのファイルの保存場所は

■Firefox(デスクトップ版)の場合
①Firefoxのインストールフォルダー内にconfig.js
例、C:\Program Files (x86)\Mozilla Firefox\config.js

 

②Firefoxのインストールフォルダー → 『defaults』 → 『pref』フォルダ内にconfig-prefs.js
例、C:\Program Files (x86)\Mozilla Firefox\defaults\pref\config-prefs.js

 

③④Firefoxのプロファイルフォルダー内※1に『chrome』フォルダーを作成し『chrome』フォルダー内にuserChrome.cssとuserChrome.js

 

例、
C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles\●プロファイル名●\chrome\userChrome.css

 

C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles\●プロファイル名●\chrome\userChrome.js

※1のプロファイルフォルダーは、
Firefoxのメニューバーにて、『ヘルプ』 → トラブルシューティング情報 → プロファイルの右にある『about:profiles』 → 『これは使用中のプロファイルです。削除できません。』 のルートディレクトリの右にある『フォルダを開く』

 

あるいは
Winキー + Rで、%appdata%\Mozilla\Firefox\Profiles\ と入力してエンター

 

でプロファイルフォルダが開けます。

 

■Firefox Portableの場合(例、インストールフォルダがM:の場合)
①Firefox Portableのインストールフォルダー → 『App』 → 『Firefox』のフォルダ内にconfig.js
例、M:\FirefoxPortable\App\Firefox\config.js

 

②Firefox Portableのインストールフォルダー → 『App』 → 『Firefox』 → 『defaults』 → 『pre』フォルダ内にconfig-prefs.js
および
Firefox Portableのインストールフォルダー → 『App』 → 『Firefox64』 → 『defaults』 → 『pre』フォルダ内にconfig-prefs.js

 

例、
M:\FirefoxPortable\App\Firefox\defaults\pref\config-prefs.js
および
M:\FirefoxPortable\App\Firefox64\defaults\pref\config-prefs.js

 

2箇所に入れるのはFirefox PortableはOSが32bitか64bitかを自動判定してどちらかのフォルダ内のFirefoxを起動するからです。

 

③④Firefox Portableのインストールフォルダー →『Data』 → 『profile』フォルダ内に『chrome』フォルダーを作成し『chrome』フォルダー内にuserChrome.cssとuserChrome.js

 

例、
M:\FirefoxPortable\Data\profile\chrome\userChrome.css
M:\FirefoxPortable\Data\profile\chrome\userChrome.js

 

■Waterfoxの場合
①C:\Program Files (x86)\Waterfox\config.js
②C:\Program Files (x86)\Waterfox\defaults\pref\config-prefs.js
③C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Waterfox\Profiles\●プロファイル名●\chrome\userChrome.css
④C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Waterfox\Profiles\●プロファイル名●\chrome\userChrome.js

 

各ファイルのダウンロード

 

■2025.6.21 追記■

下記にある全てのuserChrome.cssには

  • tabLock_mod2.uc.js
  • tabProtect_mod2.uc.js

用のcss

/*●tabProtect_mod2.uc.jsのアイコンの位置●*/
tab[tabProtect] .tab-icon-protect{
  /*■元■margin-top: 0px;■*/ /*要調整*/
  margin-top: -8px !important;
  margin-left: 0px !important; /*要調整*/
}

/*●tabLock_mod2.uc.jsのアイコンの余白●*/
  tab[tabLock] .tab-icon-lock{
    margin-top: 0px !important; /*要調整*/
    margin-left: 0px !important; /*要調整*/
}

が追記してあります。

 
  • tabLock_mod2.uc.js
  • tabProtect_mod2.uc.js

を使ってない場合はそのまま放置しておいても特に問題ありません。

 

不要な方は削除してお使いください。
m(_ _)m

■2025.11.18 追記■
私は DWMBlurGlass でウィンドウのタイトルバーを透過しているのですが、Windows Updateにて11月の累積更新プログラム KB5068861適用後、Firefoxの右クリックのみ背景が透過されるようになりました。

正確に言えば、「背景透過の度合いが強くなった」が正しいです。

 
【DWMBlurGlass】Windows11のタイトルバーの透過を完璧にする
数日前にWindows Updateにて11月の累積更新プログラム KB5068861(セキュリティパッチ) をインストールしてパソコンを再起動したら、キーボード入力が完全におかしくなりました。文字入力が キーボード上部の数字は入力できない...

その対策の一環で userChrome.css の最後に

/* ●DWMBlurGlassを導入している場合、KB5068861適用以降、Firefoxだけ右クリックが透過される対策● */
menupopup {
  -moz-appearance: menupopup !important;
  background-color: -moz-Dialog !important;
  background-image: none !important;
  backdrop-filter: none !important;
  opacity: 0.8 !important;
}

を追記しました。

 

DWMBlurGlassを使ってない場合はそのまま放置しておいても特に問題ないと思いますが、気になる方は上記コードを削除してお使いください。
m(_ _)m

■2026.7.21 追記■
2026.7.21以降の当サイトのuserChrome.cssには

Firefoxのサイドバー全体の右側の余白的な部分をなくす/サイドバーの角の丸みを解除する/「Project Nova」で追加された新サイドバーを非表示にする
Firefoxでは「Project Nova」というプロジェクトを進めていて、デザイン・機能が色々変わる予定です。私のFirefoxのサイドバーは「Firefoxの多段タブ・多段ブックマークツールバー」の記事の内容にて、0.5秒マウスオーバーで自動開閉するようにしてあるのですが、最近サイドバー全体の右側の...

に記載の

/* サイドバー全体の右側の余白的な部分*/
.sidebar-splitter {
width: 1px !important;
--splitter-width: 1px !important;/*●元は4px●*/
border-inline: none !important;
}

が記述してあります。

 

元に戻す、つまり「Project Nova」関係で追加された新サイドバーと同じような角の丸みに戻したい場合は、

  • userChrome.css内の上記コードを削除

で戻ります。

 

■新・フルセット(バージョン155以降用)※■2026.8.4修正後
config.js & config-prefs.js & userChrome.css & userChrome.js & MultiRowTabLiteforFx.uc.js(バージョン155以降用)※■2026.8.4修正後

■2026.8.4 追記■
タブ移動時のドラッグ・アンド・ドロップによるタブグループ操作が機能するよう、MultiRowTabLiteforFx.uc.js を修正しました。

■注意■
バージョン155で

  • config.js
  • config-prefs.js
  • userChrome.js

の更新が必要になります。

 

https://github.com/alice0775/userChrome.js

 

※上記「■新・フルセット(バージョン155以降用)」は諸々含まれています。
※下記「■新・フルセット(バージョン153・154用)」との違いは(2026.8.5時点では)、上記3ファイルの違いのみです。

 

■新・フルセット(バージョン153・154用)※■2026.8.4修正後
config.js & config-prefs.js & userChrome.css & userChrome.js & MultiRowTabLiteforFx.uc.js(バージョン153・154用)※■2026.8.4修正後

 
 

■注意■
「■2026.8.4 追記■」より前の MultiRowTabLiteforFx.uc.js は、タブ移動時のドラッグ・アンド・ドロップによるタブグループ操作は機能していません。
右クリックからのタブグループ操作は可能です。

 

■フルセット(バージョン153以降用)
config.js & config-prefs.js & userChrome.css & userChrome.js & MultiRowTabLiteforFx.uc.js(バージョン153以降用)

■2026.7.23 追記■
「Project Nova」関係を考慮し、「マウスオーバーで自動開閉するサイドバー」関係を大幅に修正しました。
※詳細はこちらです。

 

なお上記153用と下記152用は(2026.7.23時点では)、「マウスオーバーで自動開閉するサイドバー」関係以外は同じです。

 

■フルセット(バージョン152以降用) config.js & config-prefs.js & userChrome.css & userChrome.js & MultiRowTabLiteforFx.uc.js(バージョン152以降用)

■2026.7.21 追記■
userChrome.cssにて、「Project Nova」関係で追加された新サイドバー全体の右側の余白的な部分をなくす記述を追加しました。

 

■2026.7.19 追記■
userChrome.cssにて、

  • コンテキストメニューの「端末へ送信」と「左側のタブをすべて閉じる」を非表示に変更
  • プライベートウィンドウで表示される、タブバー右下の「プライベートウィンドウ」の文字を非表示にするコードを追加

しました。

 

■2026.6.22 追記■
userChrome.cssにて、ページ内検索バーの背景画像を無効化する記述を追加しました。

 

■2026.6.18 追記■
MultiRowTabLiteforFx.uc.jsにて、ピン留めしたタブを後方に移動する際のバグを修正をしました。

 

「■4.22 追記」の時点で
コンテキストメニューのON/OFFを整理・変更しました。
後述の 「■コンテキストメニュー変更について」をお読みください。

 

また、バージョン150以降では、「リンクを新しいタブで開く」が表示されない場合がありますのでご注意ください。

■フルセット(バージョン148・149用)
config.js & config-prefs.js & userChrome.css & userChrome.js & MultiRowTabLiteforFx.uc.js(バージョン148・149用)

※バージョン148未満で使っても(タブグループと分割ビュー以外は)問題なく動くことは確認しました。

 

■注意■
「■2026.8.4 追記■」より前の MultiRowTabLiteforFx.uc.js は、タブ移動時のドラッグ・アンド・ドロップによるタブグループ操作は機能していません。
右クリックからのタブグループ操作は可能です。

■フルセット(バージョン145 ~ 147)
config.js & config-prefs.js & userChrome.css & userChrome.js & MultiRowTabLiteforFx.uc.js(バージョン145~147用)

※バージョン144でも(タブグループ以外は)問題なく動くことは確認しました。

※この記事の冒頭の「2026.3.5追記」に記載の大幅な見直しは反映していません。

 

■注意■
「■2026.8.4 追記■」より前の MultiRowTabLiteforFx.uc.js は、タブ移動時のドラッグ・アンド・ドロップによるタブグループ操作は機能していません。
右クリックからのタブグループ操作は可能です。

 

各ファイルを個別にDLしたい方は、以下の各ファイルをDLしてお使いください。

 

■userChrome.css(全バージョン用)

userChrome.cssのみ(全バージョン用)

■2026.7.23 追記■
「Project Nova」関係を考慮し、「マウスオーバーで自動開閉するサイドバー」関係を大幅に修正しました。
※詳細はこちらです。

 

■2026.7.21 追記■
userChrome.cssにて、「Project Nova」関係で追加された新サイドバー全体の右側の余白的な部分をなくす記述を追加しました。

 

■2026.7.19 追記■

  • コンテキストメニューの「端末へ送信」と「左側のタブをすべて閉じる」を非表示に変更
  • プライベートウィンドウで表示される、タブバー右下の「プライベートウィンドウ」の文字を非表示にするコードを追加

しました。

■2026.6.22 追記■
ページ内検索バーの背景画像を無効化する記述を追加しました。

 

「■4.22 追記」の時点で
コンテキストメニューのON/OFFを整理・変更しました。
後述の 「■コンテキストメニュー変更について」をお読みください。

 

■2025.11.20 追記■
普段明るめのテーマを使っているので気づきませんでしたが、ダークテーマの時のメニューバー・タブ・ブックマークツールバーの文字色を見やすくする記述を追加しました。

 

■MultiRowTabLiteforFx.uc.js※■2026.8.4修正後

MultiRowTabLiteforFx.uc.jsのみ(バージョン153以降用)※■2026.8.4修正後

■2026.8.4 追記■
タブ移動時のドラッグ・アンド・ドロップによるタブグループ操作が機能するよう、MultiRowTabLiteforFx.uc.js を修正しました。

■注意■
バージョン155で

  • config.js
  • config-prefs.js
  • userChrome.js

の更新が必要になります。

 

https://github.com/alice0775/userChrome.js

 

■注意■
「■2026.8.4 追記■」より前の MultiRowTabLiteforFx.uc.js は、タブ移動時のドラッグ・アンド・ドロップによるタブグループ操作は機能していません。
右クリックからのタブグループ操作は可能です。

MultiRowTabLiteforFx.uc.jsのみ(バージョン152以降用)

■2026.6.18 追記■
ピン留めしたタブを後方に移動する際のバグを修正をしました。

■MultiRowTabLiteforFx.uc.jsのみ(バージョン148 ~ 151用)
MultiRowTabLiteforFx.uc.jsのみ(バージョン148 ~ 151用)

※バージョン151以下で使っても(タブグループと分割ビュー以外は)問題ありません。

■MultiRowTabLiteforFx.uc.jsのみ(145 ~ 147用)
MultiRowTabLiteforFx.uc.jsのみ(145 ~ 147用)

※バージョン144でも(タブグループ以外は)問題なく動くことは確認しました。

※この記事の冒頭の「2026.3.5追記」に記載の大幅な見直しは反映していません。

 

当サイトで公開しているバージョン145以降の MultiRowTabLiteforFx.uc.js は、バージョン144用の MultiRowTabLiteforFx.uc.js(※「多段タブ.zip」をベースに自分で修正したもの)をベースに、Izheil氏の Quantum-Nox-Firefox-Customizations 内の MultiRowTabLiteforFx.uc.js を一部参考あるいは改変・流用したものです。

 

一部参考あるいは改変・流用したのはバージョン145の時のみですが、元のライセンスは Mozilla Public License 2.0(MPL 2.0)であり、本改変版も同ライセンスに従って公開しています。

 

この改変版スクリプトは、MPL 2.0 の条件に従い、元のライセンスを保持したまま公開しています。

 

また、元々の「多段タブ.zip」にあったConfig設定はできるだけ残しましたが、バージョン145でFirefox本体の内部が色々変更されたため、修正対応できなかった箇所がいくつかあります、すみません。

 

 

■2025.11.5 追記■
2025.11.5時点では、(おそらく)ほぼ問題ない多段タブのユーザースクリプトは大きく分けると3つかな、存在しています。

 

後述の 【参考】多段タブの導入手順が色々ある件について に書いた3つのやり方で分類しますと、

※世界中の多段タブのユーザースクリプトを調査しているわけではありませんので、他にもあるかもしれません。

 

■注意■

それぞれ、

  • 導入に必要なファイルが異なります
  • 当然 userChrome.css に必要な記述も異なります
  • Merci-chao様の[email protected]の場合、別途 about:config での設定が必要です

のでご注意ください。

 

ご興味ある方は、後述の 【参考】多段タブの導入手順が色々ある件について をお読みください。

 

各ファイルを適用する

必要なuserChrome.js用スクリプト(ほにゃらら.uc.js)を用意して『chrome』フォルダ内に入れ、userChrome.cssに必要な記述を追加します。

 

この記事にある私が生成・修正した各ファイルは私用に微調整済みです。

再度書いておきます。

■各ファイルの保存場所
64bitの場合
C:\Program Files (x86)\Mozilla Firefox\config.js
C:\Program Files (x86)\Mozilla Firefox\defaults\pref\config-prefs.js

 

C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles\●プロファイル名●\chrome\userChrome.css
C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles\●プロファイル名●\chrome\userChrome.js
C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles\●プロファイル名●\chrome\MultiRowTabLiteforFx.uc.js

 

プロファイルフォルダ
C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles
の場所は
Winキー + Rで、%appdata%\Mozilla\Firefox\Profiles\ と入力してエンター
で開けます。

 

■注意■
userChrome.cssおよびほにゃらら.uc.jsの文字コードはUTF-8です。

 

Firefox Portableで使うuserChrome.cssはShift-Jisと書いてあるサイトがありましたが、私の環境ではFirefox PortableもuserChrome.cssおよびほにゃらら.uc.jsの文字コードはUTF-8でOKでした。

 

Firefox本体を再起動する

最後に、Firefox本体を再起動します。

 

以上でFirefoxにて多段タブその他userChrome.css等が使える環境になります。

 

導入後の注意点

コンテキストメニュー変更について

「■2026.4.22 追記■」「■2026.4.23 追記■」「■2026.4.29 追記■」の3つ追記があります。

以ゴチャゴチャして申し訳ありません。
m(_ _)m

 

ウザいので、この3つ追記はいつか削除するかもです。

 

■コンテキストメニュー変更について

 

■2026.4.22 追記■
かなり昔から私のuserChrome.css内に追加してあった「コンテキストメニューのON/OFF」の設定に関して、元サイト

Firefox のコンテキストメニューを編集する
Firefox57 以降、旧アドオン廃止により使用できなくなった Menu Wizard の代替えについて考えます。残念ながら、 WebExtensions API では、コンテキストメニュー編集の拡張機能を作成できないため、自分なりに代替...

が色々更新されていたので、それを元にuserChrome.css内の該当箇所を差し替えました。

 

■2026.4.23 追記■
後述の4.22 追記の件で更新した、userChrome.css内に記述してある「コンテキストメニューのON/OFF」のデフォルト設定がかなりクセがあるので、ご注意ください。

後でよく調査したところ、上記「コンテキストメニューのON/OFF」のデフォルト設定がクセがあるだけではなく、Firefoxバージョン150あたりで追加・変更されたコンテキストメニューがウザいのが諸悪の根源のような気がします。

 

ザックリと確認してON/OFFを調整しましたが、各自必要・不要なコンテキストメニューは違うはずなので、userChrome.css内の「●コンテキストメニュー●」以降にある設定箇所をご確認の上、ON/OFFを調整してお使いください。
m(_ _)m

 

全てデフォルトのコンテキストメニューに戻したい場合は

  • 「●コンテキストメニュー●」の箇所の全ての設定箇所の冒頭に「/*」を記述する
  • 「●コンテキストメニュー●」の箇所全てを削除する

のどちらかでデフォルトに戻ります。

 

以下の 「■2026.4.29 追記■元に戻す場合」 もお読みください。
「■2026.4.29 追記■元に戻す場合」をクリック・タップすると開きます。
m(_ _)m

 

■コンテキストメニューを元に戻す場合

「各ファイルのダウンロード」の箇所でダウンロードできる

の userChrome.css の違いは、

  • 「コンテキストメニューのON/OFF」に関する修正

のみです。

 

以前から当サイトの userChrome.css をお使いで、Firefoxバージョン150への更新後に「右クリックメニューが以前と違うので戻したい」という場合は、すぐ下にある

を適用すれば、従来の表示に戻ると思います。

 

ただし、バージョン150以降では、「リンクを新しいタブで開く」が表示されない場合がありますのでご注意ください。

 

また、先ほど書きましたが

全てデフォルトのコンテキストメニューに戻したい場合は

  • 「●コンテキストメニュー●」の箇所の全ての設定箇所の冒頭に「/*」を記述する
  • 「●コンテキストメニュー●」の箇所全てを削除する

のどちらかでデフォルトに戻ります。

 

なお、Firefoxバージョン150ではデフォルトのコンテキストメニュー自体が少し追加・変更されていますので、当サイトの userChrome.css のコンテキストメニュー部分も、今後必要に応じて調整する可能性があります。
※現時点ではコンテキストメニュー部分のコードを変更・修正する予定はありません。

 

以上、少し分かりづらい部分もあるかと思いますが、ご理解いただければ幸いです。

 

新旧・コンテキストメニュー

以下、バージョン150時点での、文字・リンク・画像のコンテキストメニューの新旧(私のFirefox & たぶん全てデフォルトのFirefox)です。
参考にどうぞ。

 

■文字のコンテキストメニュー

※画像クリックで拡大表示できます。

文字のコンテキストメニュー

 

■リンクのコンテキストメニュー

※画像クリックで拡大表示できます。

リンクのコンテキストメニュー

 

■画像のコンテキストメニュー
※当サイト内の画像を右クリックしても正常なコンテキストメニューは表示されないと思うので、Firefox公式サイトの画像です。

※画像クリックで拡大表示できます。

画像のコンテキストメニュー

 

■当サイトのバージョン150のコンテキストメニューから消えている主な項目

■文字
選択した部分を印刷
追跡を除去した選択部分へのリンクをコピー(グレーアウト)
選択範囲を 〇〇 に翻訳
選択した部分のソースを表示

 

■リンク
(もしかしたら)リンクを新しい 〇〇 タブで開く] 〇〇=コンテナ名
リンクを新しいタブで開く※バージョン150以降、(Firefox側の実験が原因で)プロファイルによっては表示されません。
リンクを分割ビューで開く
リンク先をプレビュー
リンクをブックマーク
追跡を除去リンクをコピー
Google で検索:ページタイトル
リンクテキストを 〇〇 に翻訳

 

■画像・動画・音声
画像をコピー
画像の URL をメールで送信...
動画の URL をメールで送信...
音声の URL をメールで送信...
画像をデスクトップの背景に設定...

 

上記以外は、userChrome.css内の「●コンテキストメニュー●」以降にある設定箇所をご確認くださいませ。

 

Firefoxバージョン150以降では、プロファイルによってはコンテキストメニューの「リンクを新しいタブで開く」が表示されない場合があります。

 

これは、バージョン150で導入された リンクメニューの新仕様 が、プロファイル単位の実験機能(Nimbus)として段階的に有効化されているためです。

 

新仕様が有効になったプロファイルでは、旧来の「リンクを新しいタブで開く」に対応する内部IDが無効化されるため、「リンクを新しいタブで開く」が表示されなくなります。

 

私の場合は

  • アドオンなし
  • 追加テーマなし
  • userChromeは追加してある

のテスト用のプロファイルだけは通常起動でも「リンクを新しいタブで開く」は表示されていますが、それ以外の全てのプロファイルでは、

  • Firefox(デスクトップ版)
  • Firefox Developer Edition
  • Firefox Nightly

の、どのプロファイル・どのFirefoxでも、

  • 通常起動では「リンクを新しいタブで開く」は表示されません。
  • プライベートウィンドウであれば「リンクを新しいタブで開く」が表示されます。

※Firefox Portableは確認していません。

 

つまり4.29時点では、プライベートウィンドウは「実験機能:OFF」の状態で動くみたいです。
まあ、プライベートウィンドウは常用していないので私にとっては意味ないですが。

 

ちなみに私は

  • tabLock_mod2.uc.js および tabProtect_mod2.uc.j による、タブロック・タブプロテクト
  • MouseGestures2_e10s.uc.js および MouseGestures2_e10s_menus.uc.js によるマウスジェスチャー
  • アドオン「Tab Mix - Links」による設定

によって、通常起動のFirefoxでコンテキストメニューの「リンクを新しいタブで開く」がなくてもあまり問題にはなりません。

 

■2026.7.23 追記■「Project Nova」関係を考慮し、「マウスオーバーで自動開閉するサイドバー」関係を大幅に修正しました。

Firefoxのサイドバー全体の右側の余白的な部分をなくす/サイドバーの角の丸みを解除する/「Project Nova」で追加された新サイドバーを非表示にする
Firefoxでは「Project Nova」というプロジェクトを進めていて、色々デザイン・機能が変わる予定です。私のFirefoxのサイドバーは「Firefoxの多段タブ・多段ブックマークツールバー」記載の諸々により、0.5秒マウスオーバーで自動開閉するようにしてあるのでですが、最近サイドバー全体の右側の...

に書いた通り、Firefoxでは「Project Nova」というプロジェクトを進めていて、色々デザイン・機能が変わる予定です。

 

大きな変更点としては

  • 色々な箇所のデザインが角丸になる
  • 新しいサイドバーの中に古いサイドバーがある
 

この「新しいサイドバーの中に古いサイドバーがある」というのが少しやっかいで、詳細は省きますが、「Project Nova」関係を考慮し、「マウスオーバーで自動開閉するサイドバー」関係を大幅に修正しました。

 

元のサイドバー※7.23 修正前

■2026.7.23 修正前
マウスオーバーする前のサイドバーの横幅:36px

 

①閉じた状態のサイドバー(縦に棒状・横幅36px)を常時表示していて、
※Firefoxのメニューの、表示 → サイドバー → ツリー型タブをチェックON

①閉じた状態のサイドバー(縦に棒状・横幅36px)を常時表示

 

②閉じた状態のサイドバーに0.5秒マウスオーバーで(現在の設定では)横幅300pxのサイドバーを開きます。

②閉じた状態のサイドバーに0.5秒マウスオーバーでサイドバーの中身が開きます。

■2026.7.23 修正後
マウスオーバーする前のサイドバーの横幅:6px

こっちが少しややこしいです。

 
  • Novaが無効な場合:今までと同じサイドバー(「古いサイドバー」とします。)
  • Novaが有効な場合:新しいサイドバーの中に古いサイドバーがある
 

色々考慮して、Novaが有効無効どちらの場合も、古いサイドバーの横幅の初期値(マウスオーバーする前の横幅)を 6pxとしました。

古いサイドバーをオーバーレイで開くように修正しました。※スマホのメニューのように、表示しているページの1枚上で開くイメージです。

 

【7.23 修正後】Novaが無効な場合、つまり古いサイドバーのみの場合

マウスオーバーする前のサイドバーの横幅は 6pxです。

マウスオーバーで自動開閉するサイドバー(Nova:無効、古いサイドバー)、マウスオーバーする前

 
マウスオーバーで(現在の設定では)横幅300pxのサイドバーを開きます。

マウスオーバーで自動開閉するサイドバー(Nova:無効、古いサイドバー)、マウスオーバー後

【7.23修正後】Novaが有効な場合、つまり新しいサイドバーの中に古いサイドバーがある場合

マウスオーバーする前は、新しいサイドバーの中の古いサイドバーの横幅は 6pxです。

マウスオーバーで自動開閉するサイドバー(Nova:有効、新しいサイドバー)、マウスオーバーする前

 
マウスオーバーで新しいサイドバーの中に、(現在の設定では)横幅300pxのサイドバーを開きます。

マウスオーバーで自動開閉するサイドバー(Nova:有効、新しいサイドバー)マウスオーバー後

 

Novaが有効だと、(userChrome.css等で上書きしなければ)色々な箇所のデザインが角丸になります。
Firefoxのこの角丸デザインの評価は、両極端にわかれているようです。

 

また、現時点では

  • 古いサイドバーをマウスオーバーで自動開閉
  • 新しいサイドバーの中にある古いサイドバーをマウスオーバーで自動開閉

はできますが、

  • 新しいサイドバーをマウスオーバーで自動開閉

はできず、いちいちクリックしないと開きません。
※新しいサイドバーをマウスオーバーで自動開閉する機能を実装予定とのことです。

新しいサイドバーで古いサイドバーの横幅を固定する場合、等

なお、2026.7.23時点で当ページのuserChrome.cssに記述してある以下のコード

/* サイドバーを自動開閉するようにする (左側用)*/
:root {
  --thin-tab-width: 6px; /*■元設定:36px■*/
  --wide-tab-width: 300px; /*■この2つを同じ横幅にすると常時表示■*/
  --tab-width-diff: calc(var(--wide-tab-width) - var(--thin-tab-width));
  --sidebar-open-delay: 0.5s; /*■ホバーしてから開き始めるまでの待ち時間■*/
  --sidebar-transition-duration: .06s; /*■開き切るまでの速さ■*/
}

  --thin-tab-width: 6px; /*■元設定:36px■*/
  --wide-tab-width: 300px; /*■この2つを同じ横幅にすると常時表示■*/

この2つの値を例えば300pxにすれば、古いサイドバーは固定幅になります。

 

つまり、上記2つの値を300pxにした場合は

  • Novaが無効な場合は、古いサイドバーは幅300pxで固定され、かつ常時表示
  • Novaが有効な場合は、当ページのuserChrome.cssを使っている場合は新しいサイドバーの中に古いサイドバーが幅300pxで固定され、かつ常時表示。ただしマウスオーバーのコードが残っているので、マウスオーバーしないと古いサイドバーの中身が表示されません。




というように若干意味不明になるので、CSS等をよく把握して修正するか、userChrome.css や MultiRowTabLiteforFx.uc.js は諦めて、垂直タブに移行するか、になると思います。

 

 

ちなみにabout:configあるいはuser.jsにて

//●「Project Nova」で追加された新サイドバーを非表示にする
user_pref("sidebar.revamp", false);//「false」で非表示

とすれば、「Project Nova」で追加された新サイドバーを非表示にする、つまり今までの古いサイドバーだけにすることが可能です。
ただし、古いサイドバーは2026年内に廃止する方向・・・と海外のブログ記事に書いてありました、たぶん未定な気がします。

 

あるいは

//●「Project Nova」のプレビュー機能を有効にする
user_pref("browser.Nova.enabled", false);//「true」で有効

とすれば「Nova」の各機能を無効化できます。

 

この件に関してはCSSに詳しくないと超混乱することが容易に予想され、当サイトにこの件に関してお問い合わせ頂いても個別のCSS回答はできない可能性もあります。

 
/* サイドバーを自動開閉するようにする (左側用)*/
:root {
  --thin-tab-width: 6px; /*■元設定:36px■*/
  --wide-tab-width: 300px; /*■この2つを同じ横幅にすると常時表示■*/
  --tab-width-diff: calc(var(--wide-tab-width) - var(--thin-tab-width));
  --sidebar-open-delay: 0.5s; /*■ホバーしてから開き始めるまでの待ち時間■*/
  --sidebar-transition-duration: .06s; /*■開き切るまでの速さ■*/
}

#sidebar-box:hover {
  min-width: var(--wide-tab-width) !important;
  max-width: var(--wide-tab-width) !important;
  width: var(--wide-tab-width) !important;
  flex-basis: var(--wide-tab-width) !important;
  transition-delay: var(--sidebar-open-delay) !important;
}


#sidebar-box:hover #sidebar {
  opacity: 1 !important;
  transition-delay: var(--sidebar-open-delay) !important;
}

だけですので、どうにかご自身で頑張ってください。
m(_ _)m

 

2026.7.21以降の当サイトのuserChrome.cssには

Firefoxのサイドバー全体の右側の余白的な部分をなくす/サイドバーの角の丸みを解除する/「Project Nova」で追加された新サイドバーを非表示にする
Firefoxでは「Project Nova」というプロジェクトを進めていて、デザイン・機能が色々変わる予定です。私のFirefoxのサイドバーは「Firefoxの多段タブ・多段ブックマークツールバー」の記事の内容にて、0.5秒マウスオーバーで自動開閉するようにしてあるのですが、最近サイドバー全体の右側の...

に記載の

/* サイドバー全体の右側の余白的な部分*/
.sidebar-splitter {
width: 1px !important;
--splitter-width: 1px !important;/*●元は4px●*/
border-inline: none !important;
}

が記述してあることもご注意くださいませ。

 

Firefoxに限らず、世の中全てのブラウザが垂直タブに移行するような流れ・雰囲気です。
垂直タブの利点も理解はしていますが、少し試した感じでは(私が垂直タブに慣れてないこともあり)ちょと使いづらいです。

 

ということで私は当面は、水平タブで多段タブでの運用です。
どうしても行方不明なタブがある場合はマウスオーバーでサイドバーを表示して探します・・・って、100タブ開いてても迷子になるタブってないですよね?

 

■2026.8.4 追記■サイドバーに表示しているアドオン「Tree Style Tab - ツリー型タブ」の各種色合いと、(水平タブの)多段タブ・タブグループの色合いを可能な限り統一しました。

(水平タブでの)多段タブの各タブの色等は、以下のようになっています。

 

アクティブタブ・・・背景黄色で透過 & 文字は黒で太字 & 黒い枠

非アクティブタブ(既読)・・・背景少し濃い灰色を透過 & 文字は黒

非アクティブタブ(未読)・・・背景薄い灰色を透過 & 文字は薄い黒
※タブを再読み込みして瞬時に別タブに移動してもキャッシュと全く同じ場合は既読らしい

アクティブタブ・非アクティブタブ(既読)・非アクティブタブ(未読)

 

タブをマウスオーバー(全タブ共通)・・・タブの上に青い線

ピン留めしたタブ以外のタブをマウスオーバー・・・タブの右側に閉じるボタン(『X』ボタン)を表示

 

アクティブタブをマウスオーバー・・・文字は黒で太字(元々そうなっています)

非アクティブタブ(既読)をマウスオーバー・・・文字は黒で太字 & タブの背景は少し濃い水色を透過

非アクティブタブ(未読)をマウスオーバー・・・文字は赤で太字 & タブの背景は薄い水色を透過

アクティブタブ・非アクティブタブ(既読)・非アクティブタブ(未読)をマウスオーバー

 

私はサイドバーにアドオン「Tree Style Tab - ツリー型タブ」を表示しているのですが、私がサイドバーに表示しているアドオン「Tree Style Tab - ツリー型タブ」の各種色合いと、(水平タブの)多段タブ・タブグループの色合いを可能な限り統一しました。

 

■サイドバーで反映できていない項目があるというか、既読・未読の違いによる色分けはサイドバーではできていません。
■2026.8.5 追記■
どうにか「ほぼ」修正できました。

 

サイドバーに表示した「Tree Style Tab - ツリー型タブ」の各タブの色合い

 

厳密に言えば全く同一の色合いではない箇所もあるのですが、私はサイドバーはほとんど使っていませんので、ひとまず以上とします。
m(_ _)m

 

微調整、「Tree Style Tab - ツリー型タブ」用CSSおよび設定インポート

■微調整
なお、「Tree Style Tab - ツリー型タブ」 → オプション → 外観 → テーマにて、上記は「ハイコントラスト」ですが右上の「Photon」に変更すると、アクティブタブの色合いが本来の色に近くなりました。

「テーマ:Photon」がベターかもです。

 

■「Tree Style Tab - ツリー型タブ」用CSS※treestyletab.css
「Tree Style Tab - ツリー型タブ」 → オプション → 詳細設定 → ユーザースタイルシート

/* Show title of unread tabs with red and italic font */
/*
:root.sidebar tab-item.unread .label-content {
  color: red !important;
  font-style: italic !important;
}
*/
/* Add private browsing indicator per tab */
/*
:root.sidebar tab-item.private-browsing tab-label:before {
  content: "🕶";
}
*/
/* ●サイドバーの Tree Style Tab - ツリー型タブ● */
/* ============================
   Tree Style Tab - 色を userChrome.css と同期
   ============================ */
/* --- アクティブタブ --- */
tab-item.active {
  border: 1px solid #9c9c9c !important;
  font-weight: bold !important;
  color: black !important;
}

/* --- 非アクティブ(既読) --- */
tab-item:not(.active):not(.unread):not(.pending) {
  background-color: rgba(183, 183, 183, 0.3) !important;
  color: black !important;
}
/* --- 非アクティブ(未読 / pending) --- */
tab-item.unread,
tab-item.pending {
  background-color: rgba(194, 194, 194, 0.2) !important;
  color: #8a8a8a !important;
}
/* --- 未読 / pending の hover --- */
/* ============================
   分割ビュー内のホバータブのみを赤色に※以下の3つの「0.6」は微調整
   ============================ */

/* 分割ビューのメインタブ(未読のみ) */
tab-item-substance.split-view-main.pending:hover .label-content,
tab-item-substance.split-view-main.unread:hover .label-content {
    color: rgba(255,0,0,0.6) !important;
    font-weight: bold !important;
}

/* 分割ビューのサブタブ(未読のみ) */
tab-item-substance.split-view-sub.pending:hover .label-content,
tab-item-substance.split-view-sub.unread:hover .label-content {
    color: rgba(255,0,0,0.6) !important;
    font-weight: bold !important;
}

/* 分割ビュー外の未読タブ(未読のみ) */
tab-item.unread:not(.split-view):hover .label-content,
tab-item.pending:not(.split-view):hover .label-content {
    color: rgba(255,0,0,0.6) !important;
    font-weight: bold !important;
}


/* --- 既読タブの hover --- */
tab-item:not(.active):not(.unread):not(.pending):hover
 {
  background-color: rgba(173, 216, 230, 0.8) !important;
  color: black !important;
  font-weight: bold !important;
}
/* ============================
   TSTサイドバーの未読タブ:マウスオーバー時のテキスト色を赤に
   ============================ */
 /* 未読タブをマウスオーバー */
tab-item.unread:hover .label-content {
    color: red !important; /* 赤色 */
    font-weight: bold !important;
}
/* ●全タブ・マウスオーバー時の背景と上部青線(アクティブ以外) */
.tabbrowser-tab:not([selected]):hover .tab-background::before {
  content: "";
  display: inline-block;
  width: 100%;
  height: 3px;
  background-color: #0a84ff !important; /* 濃い青線 */
  margin: -1px var(--user-tab-rounding, 2px) 0;
}
/* ●アクティブタブのマウスオーバー時も青線にする場合(任意) */
.tabbrowser-tab[selected]:hover .tab-background::before {
  content: "";
  display: inline-block;
  width: auto;
  height: 3px;
  background-color: #0a84ff !important;
  margin: -1px var(--user-tab-rounding, 1px) 0;
}

.tabbrowser-tab[selected]:hover  .label-content{
  color: black !important;
  font-weight: bold !important;
}


/* --- 角丸を userChrome.css と合わせる(2px) --- */
tab-item {
  border-radius: 2px !important;
}
/* --- ファビコンの透明化を防ぐ(TSTの既定挙動対策) --- */
tab-item .favicon {
  opacity: 1 !important;
}
/*■以下、微調整用■*/
tab-item-substance.active {
  background-color: rgba(255, 255, 0, 0.5) !important;
  border-color: rgba(0, 0, 0) !important;
}
tab-item-substance.active tab-label {
  color: #000 !important;
}
tab-closebox {
  :root.simulate-svg-context-fill &::after {
    background: #000 !important;
  }
}
/* --- アクティブタブのアイコンを黒にする --- */
tab-item.active tab-favicon,
tab-item.active .favicon,
tab-item.active .favicon-image {
  color: black !important;
  fill: black !important;
  filter: none !important;
}
/* ============================
   ピン留めタブのアイコンを黒抜きにする
   ============================ */
/* ピン留めタブの “built-in default icon” も黒にする */
tab-item.pinned .favicon-builtin,
tab-item.pinned .favicon-default {
  color: black !important;
  fill: black !important;
  fill-opacity: 1 !important;
  filter: brightness(0) !important;
}
/* ピン留めタブの “sharing-state / sticky-state” も黒にする */
tab-item.pinned .favicon-sharing-state,
tab-item.pinned .favicon-sticky-state {
  color: black !important;
  fill: black !important;
  fill-opacity: 1 !important;
}
/* ============================
   Tree Style Tab - Hover 時の上部青線(Firefox と完全同期)
   ============================ */
/* 非アクティブタブの hover 時に上部青線を表示(濃い青) */
tab-item:not(.active):hover::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background-color: #0a84ff !important;
  border-radius: 2px 2px 0 0;
  z-index: 999 !important;
  opacity: 1 !important;
}
/* アクティブタブの hover 時も同じ濃さの青線を表示 */
tab-item.active:hover::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background-color: #0a84ff !important;
  border-radius: 2px 2px 0 0;
  z-index: 999 !important;
  opacity: 1 !important;
}
/* ★TST の内部レイヤーが hover 色を薄めるのを防ぐ(重要) */
tab-item:hover .background,
tab-item:hover .background.base,
tab-item:hover .highlighter,
tab-item:hover .burster {
  background: transparent !important;
  opacity: 0 !important;
  box-shadow: none !important;
  filter: none !important;
}
/* ============================
   タブグループの色をFirefox本体と同期する
   ============================*/
:root {
  --tab-group-color-blue: #0053cb;
  --tab-group-color-blue-pale: #e2f7ff;
  --tab-group-color-blue-invert: #23327b;

  --tab-group-color-purple: #8627a8;
  --tab-group-color-purple-pale: #ffecff;
  --tab-group-color-purple-invert: #4f216b;

  --tab-group-color-cyan: #007792;
  --tab-group-color-cyan-pale: #cfffff;
  --tab-group-color-cyan-invert: #034554;

  --tab-group-color-orange: #ae2000;
  --tab-group-color-orange-pale: #ffecd8;
  --tab-group-color-orange-invert: #701c07;

  --tab-group-color-yellow: #985500;
  --tab-group-color-yellow-pale: #fff4d0;
  --tab-group-color-yellow-invert: #5f3100;

  --tab-group-color-pink: #ad0059;
  --tab-group-color-pink-pale: #ffe8f4;
  --tab-group-color-pink-invert: #5f1854;

  --tab-group-color-green: #007700;
  --tab-group-color-green-pale: #e1ffe1;
  --tab-group-color-green-invert: #004933;

  --tab-group-color-gray: #5e6a77;
  --tab-group-color-gray-pale: #f0f0f0;
  --tab-group-color-gray-invert: #3a4048;

  --tab-group-color-red: #b20037;
  --tab-group-color-red-pale: #ffe8ea;
  --tab-group-color-red-invert: #69172d;
}

tab-item[type="group"] {
  & .caption {
background-color: var(--tab-group-color) !important;
  }
}

tab-item-substance {
  & .caption {
    color: #FFF;
  }
}

上記treestyletab.cssをダウンロード

 

■設定インポート
「Tree Style Tab - ツリー型タブ」 → オプション → 1番下の「開発用」 → 1番下の「全ての設定」 → Import

「Tree Style Tab - ツリー型タブ」のImportファイルをダウンロード

■注意■
個人情報に繋がるsyncDevicesだけ空に修正してあります。

 

userChrome.cssのコード等

■バージョン152時点でのuserChrome.css
※変更した場合に更新します。

@charset "utf-8";

/* ******************●全般****************** */
/*●文字全部の色*/
#main-menubar > menu,.tab-label{
color: black !important;
}


@media (prefers-color-scheme: dark) {/*■■*/
  /* ■ダークテーマの場合■メニューバー・タブ・ブックマークツールバーの文字色 */
  #main-menubar > menu, .tab-label, #PersonalToolbar toolbarbutton .toolbarbutton-text {
    color: #e0e0e0 !important;
  }
}/*■■*/


/*●メニューの余白*/
#main-menubar > menu {
margin-top: 4px;
}


/* ●アドレスバーを拡大しない● */
/* based on https://old.reddit.com/comments/fwhlva//fmolndz */
#urlbar[breakout][breakout-extend]:not([open]) {
  top: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2) !important;
  left: 0 !important;
  width: 100% !important;
}


#urlbar[breakout][breakout-extend]:not([open]) > #urlbar-input-container {
  height: var(--urlbar-height) !important;
  padding-block: 0px !important;
  padding-inline: 0px !important;
}


#urlbar[breakout][breakout-extend][breakout-extend-animate] > #urlbar-background {
  animation-name: none !important;
}


#urlbar[breakout][breakout-extend]:not([open]) > #urlbar-background {
  box-shadow: none !important;
}


/*●URL入力欄(左側)*/
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* only needed once */
#urlbar-background, 
#searchbar .searchbar-textbox ,
.searchbar-engine-button
{ background: white !important;}


#urlbar, 
#searchbar .searchbar-textbox 
{opacity: 0.7!important;}


#urlbar:hover, 
#searchbar .searchbar-textbox:hover 
{opacity: 0.8!important}


#urlbar[focused="true"], 
#searchbar .searchbar-textbox[focused="true"]  
{opacity: 1.0!important;}


/* ●リンクをマウスオーバーした時にステータスバーに表示されるURLの文字の大きさ*/
#statuspanel-label {
  font-size: 130% !important;
}


/* ●検索バーの背景画像を無効化*/
.browserContainer > findbar {
  :root[lwtheme] & {
    background-image: unset !important;
  }
}


/* ******************●タブその1●****************** */
/*●タブの文字の下の余白*/
/*.tab-text {margin-bottom: 5px !important;}*/


/*●タブの文字の大きさ*/
.tab-label {font-size: small;}


.tab-text {
  margin: 4px 0 !important;
}



/* ========================================================================= */
/* 1. 全般・基本設定 */
/* ========================================================================= */
/* ●タブの角丸を小さくする(少ない角丸に調整) */
:root {
  --tab-border-radius: 2px !important; /* 角丸のサイズを2pxに設定(デフォルトより小さく、0pxで完全に四角に) */
}


.tabbrowser-tab .tab-background {
  border-radius: var(--tab-border-radius) !important; /* タブの背景に角丸を適用 */
}


/* タブ間の区切り線(tab-lineなど)を非表示にする設定を維持 */
.tabbrowser-tab::before,
.tabbrowser-tab::after {
  display: none !important;
}


/* 「タブのマウスオーバーの上部線」と「コンテナのタブの上部線」がFirefoxのバージョンによって違う対策・全タブのマウスオーバー時の青線(アクティブ・非アクティブ共通) */
.tabbrowser-tab:hover .tab-background::before {
  z-index: 1; /*「マウスオーバーの上部線」を「コンテナのタブの上部線」より前面に出す */
}



/* ========================================================================= */
/* 2. マウスオーバー時(上部線と背景・文字) */
/* ========================================================================= */
/* ●全タブ・マウスオーバー時の背景と上部青線(アクティブ以外) */
.tabbrowser-tab:not([selected]):hover .tab-background::before {
  content: "";
  display: inline-block;
  width: 100%;
  height: 3px;
  background-color: #0a84ff !important; /* 濃い青線 */
  margin: -1px var(--user-tab-rounding, 2px) 0;
}


/* ●アクティブタブのマウスオーバー時も青線にする場合(任意) */
.tabbrowser-tab[selected]:hover .tab-background::before {
  content: "";
  display: inline-block;
  width: auto;
  height: 3px;
  background-color: #0a84ff !important;
  margin: -1px var(--user-tab-rounding, 1px) 0;
}


/* ●tab-background自体には border-top を指定しない(競合するため) */
.tabbrowser-tab .tab-background {
  border-top: none !important;
}



/* ========================================================================= */
/* 3. アクティブタブ */
/* ========================================================================= */
/* ●アクティブタブの外枠を黒く囲む */
.tabbrowser-tab[selected] .tab-background {
  border: 1px solid #9c9c9c !important; /* 四辺に黒枠 */
  border-radius: var(--tab-border-radius) !important; /* 角丸を維持 */
  background-color: rgb(255, 255, 0, 0.5) !important; /* 背景は透過黄色のまま */
  background-image: none !important;
  box-shadow: none !important;/*なぜかシャドウがかかるので除去*/
  filter: none !important;
}


/* 背景: 黄色で透過 */
.tabbrowser-tab[selected] .tab-background {
  background-color: rgb(255, 255, 0, 0.5) !important;
  background-image: none !important;
}


/* 文字: 黒で太字 */
.tabbrowser-tab[selected] .tab-label {
  color: black !important;
  font-weight: bold !important;
}



/* ========================================================================= */
/* 4. 非アクティブタブ(未読) */
/* ========================================================================= */
/* 背景:中間グレー・やや透過(Light/Darkテーマ両対応)  
   → 背景テーマが透けすぎないようにしつつ、未読タブの存在感を出す */
.tabbrowser-tab:not([selected])[pending="true"] .tab-background,
.tabbrowser-tab:not([selected])[unreadTab="true"] .tab-background {
  background-color: rgba(194, 194, 194, 0.2) !important !important; 
  background-image: none !important;
}


/* 文字:薄い灰色(既読の黒と差別化)  
   → Lightテーマでは控えめに、Darkテーマでも沈みすぎないように調整 */
.tabbrowser-tab:not([selected])[pending="true"] .tab-label,
.tabbrowser-tab:not([selected])[unreadTab="true"] .tab-label {
  color: #8a8a8a !important /* 薄いグレー文字で未読感を演出 */
  font-weight: normal !important;
}


/* マウスオーバー時:背景=薄い水色、文字=赤で太字  
   → ユーザーの注目を引く視覚効果を追加 */
.tabbrowser-tab:not([selected])[pending="true"]:hover .tab-background,
.tabbrowser-tab:not([selected])[unreadTab="true"]:hover .tab-background {
  background-color: rgba(173, 216, 230, 0.3) !important; /* LightBlue・やや強調 */
  background-image: none !important;
}


.tabbrowser-tab:not([selected])[pending="true"]:hover .tab-label,
.tabbrowser-tab:not([selected])[unreadTab="true"]:hover .tab-label {
  color: red !important; /* マウスオーバー時に強調 */
  font-weight: bold !important;
}



/* ========================================================================= */
/* 5. 非アクティブタブ(既読) */
/* ========================================================================= */
/* 背景: 少し濃い灰色透過 */
.tabbrowser-tab:not([selected]):not([pending="true"]):not([unreadTab="true"]) .tab-background {
  background-color: rgba(183, 183, 183, 0.3) !important;
  background-image: none !important;
}


/* 文字: 黒 */
.tabbrowser-tab:not([selected]):not([pending="true"]):not([unreadTab="true"]) .tab-label {
  color: black !important;
  font-weight: normal !important;
}


/* マウスオーバー時:背景=少し濃い水色、文字=黒で太字 */
.tabbrowser-tab:not([selected]):not([pending="true"]):not([unreadTab="true"]):hover .tab-background {
  background-color: rgba(173, 216, 230, 0.8) !important;
  background-image: none !important;
}


.tabbrowser-tab:not([selected]):not([pending="true"]):not([unreadTab="true"]):hover .tab-label {
  color: black !important;
  font-weight: bold !important;
}



/* ========================================================================= */
/* 6. 未読み込みタブ(pending) */
/* ========================================================================= */
/*「pending="true"」を「未読タブ」として扱っているため、セクション4で文字色やマウスオーバー時のスタイルをすでに定義済み*/
/* タブ復元時にまだ読み込まれていないタブを半透明化 */
.tabbrowser-tab[pending="true"] {
  opacity: 0.6 !important;
}


/* 未読タブでもファビコンを表示する(たぶんバージョン145未満用) */
/*●.tabbrowser-tab[pending="true"] .tab-icon-image {
  opacity: 1 !important;
  visibility: visible !important;
  display: inline !important;
}●*/



/* ========================================================================= */
/* 7. ダークテーマの時の文字色 */
/* ========================================================================= */
@media (prefers-color-scheme: dark) {/*■■*/
/* アクティブタブの文字色(ダークテーマ時) */
  .tabbrowser-tab[selected] .tab-label {
    color: #f0f0f0 !important; /* 明るめの白系 */
  }


/* 非アクティブタブ(既読)の文字色(ダークテーマ時) */
  .tabbrowser-tab:not([selected]):not([pending="true"]):not([unreadTab="true"]) .tab-label {
    color: #d0d0d0 !important; /* やや暗めの白系で控えめに */
  }


/* 非アクティブタブ(未読)の文字色(ダークテーマ時) */
  .tabbrowser-tab:not([selected])[pending="true"] .tab-label,
  .tabbrowser-tab:not([selected])[unreadTab="true"] .tab-label {
    color: #e0e0e0 !important; /* 未読感を保ちつつ明るめに */
  }
}/*■■*/



/* ******************●タブその2(場合によっては必要・不要かも)●****************** */
/* Remove padding between tabs */
.tabbrowser-tab {
    padding-left: 0 !important;
    padding-right: 0 !important;
}


/* Adjust margin on blue tab line for squared background tabs */
.tabbrowser-tab:not([selected], [multiselected]) .tab-background::before {
  margin: -1px 0 0 !important;
}


/* Tweak for covering a line at the bottom of the active tab on some themes 8/11/2021 */
#main-window[sizemode="normal"] #toolbar-menubar[autohide="true"] + #TabsToolbar, 
#main-window[sizemode="normal"] #toolbar-menubar[autohide="true"] + #TabsToolbar #tabbrowser-tabs {
    --tab-min-height: calc(var(--tab-min-height) +10px) !important;
}


/* ●プライベートウィンドウ●タブ右側の「プライベートウィンドウ」の文字を非表示 */
.private-browsing-indicator-with-label > label {
  display: none;
}



/* ******************●その他多段タブ●****************** */
/* ●多段タブ●念の為、残しておく */
/*●
:root{ --multirow-n-rows: 3;}
#tabbrowser-tabs{
min-height: unset !important;
padding-inline-start: 0px !important;
}
@supports (inset-block:auto){
#tabbrowser-tabs > .tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox{
display: flex;
flex-wrap: wrap;
overflow-y: auto;
max-height: calc(var(--tab-min-height) * var(--multirow-n-rows));
scrollbar-color: var(--toolbar-bgcolor) var(--lwt-accent-color);
scrollbar-width: thin;
}
#tabbrowser-tabs > .tabbrowser-arrowscrollbox {
overflow: -moz-hidden-unscrollable;
display: block;
}
}
@supports not (inset-block:auto){
	#tabbrowser-tabs > .tabbrowser-arrowscrollbox{
	min-height: unset !important;
	}
	#tabbrowser-tabs .scrollbox-innerbox{
	display: flex;
	flex-wrap: wrap;
	}
	#tabbrowser-tabs .arrowscrollbox-scrollbox {
	overflow: -moz-hidden-unscrollable;
	display: block;
	}
}
.tabbrowser-tab{ height: var(--tab-min-height); }
#tabbrowser-tabs .tabbrowser-tab[pinned]{
position: static !important;
margin-inline-start: 0px !important;
}
.tabbrowser-tab > stack{ width: 100%; height: 100% }
#tabbrowser-tabs .scrollbutton-up,
#tabbrowser-tabs .scrollbutton-down,
#alltabs-button,
:root:not([customizing]) #TabsToolbar #new-tab-button,
#tabbrowser-tabs spacer,
.tabbrowser-tab::after{ display: none !important }
●*/



/* ******************●ブックマーク●****************** */
.bookmark-item {height: 21px !important;}


/* ブックマークアイコンの色を変更 */
.bookmark-item[container] {fill:#e8bb00 !important;}



/* ******************●多段ブックマークツールバー●****************** */
/* --bookmark_items_lines: 3; で段数を変更で段数を変更する。 */
/* 右側に動作しないスクロールバーが出てくるので、不要なら#personal-bookmarks #PlacesToolbarに「scrollbar-width: none !important;」を入れると非表示になる。 */
/* ブックマークツールバーに表示されるブックマークの幅を狭めたいなら、#navigator-toolbox #PersonalToolbarにtoolbarbutton.bookmark-item {max-width: 100px !important;}のコードを記述する。 */


:root {
  --bookmark_items_height: 22px; /*●1行あたりの高さ <- bookmark items - line height */
  --bookmark_items_lines: 30; /*●最大の多段数 <- maximum amount of lines */
}


#PersonalToolbar {
  min-height: var(--bookmark_items_height) !important;
  max-height: calc(var(--bookmark_items_height)*(var(--bookmark_items_lines))) !important;

/*●ブックマークの背景*/
background: #ffffff59 !important;
opacity: 1.0 !important;
color : black !important;
}


#personal-bookmarks,
#PlacesToolbar > hbox {
  display: block;
}


#PlacesToolbarItems {
  display: flex;
  flex-wrap: wrap;
  overflow-x: visible;
  overflow-y: auto;
}


#PlacesToolbarItems > .scrollbox-innerbox {
  display: flex;
  flex-wrap: wrap; 
  overflow-x: hidden !important;
  overflow-y: visible !important;
  max-height: calc(var(--bookmark_items_height)*(var(--bookmark_items_lines))) !important;
}


#personal-bookmarks #PlacesToolbar {
  display: block;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  max-height: calc( var(--bookmark_items_lines) * var(--bookmark_items_height) );
scrollbar-width: none !important;
}


#personal-bookmarks #PlacesToolbar > .bookmark-item{
  visibility: visible !important;
}


#personal-bookmarks #PlacesToolbar .chevron{
  visibility: collapse;
}


#personal-bookmarks #PlacesToolbar > hbox > hbox{
  overflow-x: hidden;
  overflow-y: hidden;
}


#personal-bookmarks #PlacesToolbar #PlacesToolbarDropIndicator[collapsed="true"],
#personal-bookmarks #PlacesToolbar #PlacesToolbarDropIndicator{
  display: none;
}


#personal-bookmarks #PlacesToolbar toolbarbutton.bookmark-item{
padding-top: 2px !important;
padding-bottom: 2px !important;
/*●元
margin-top: 0px !important;
margin-bottom: 1px !important;
●*/
margin-top: 2px !important;
margin-bottom: 2px !important;
/*●これ効いてない(display: inline;を追加すれば効くらしい
vertical-align: middle;
●*/
}


#personal-bookmarks #PlacesToolbar toolbarseparator{
  -moz-appearance: none !important;
  visibility: visible !important;
  display: inline;
  text-shadow: none !important;
  border-left: 3px solid ThreeDShadow !important;
  border-right: 3px solid ThreeDHighlight !important;
  vertical-align: middle;
}


#personal-bookmarks toolbarbutton.bookmark-item[dragover][open]{
  -moz-appearance: toolbarbutton;
}


#navigator-toolbox #PersonalToolbar { 
  max-height: calc( var(--bookmark_items_lines) * var(--bookmark_items_height) ) !important;
}


/* ブックマークツールバー上部余白調整 */
#PersonalToolbar {
 margin-top: -2px !important;
}


/* 透過フェードインフェードアウト */
/*●
#PlacesToolbarItems:hover{
transition-delay: 0.1s !important;
opacity: 1 !important;
}


#PlacesToolbarItems{
opacity: 0.3 !important;
transition-delay: 2s !important;
transition-duration: 1s !important;
}
●*/


/* ブックマークとメニューの項目間の余白幅 */
menupopup > menuitem,
menupopup > menu {
  padding-block: 0.15em !important;
}


:root {
  --arrowpanel-menuitem-padding: 3px 6px !important;
}


/*●多段ブックマークツールバーの下の余白を消す*/
#PlacesToolbarItems {
contain: initial!important;
}


/*●多段ブックマークツールバーの下の余白を消す*/
#PersonalToolbar .toolbarbutton-1{
padding-bottom: 0px !important;
margin-bottom: 0px !important;
}


/*●多段ブックマークツールバーの上の余白*/
#personal-bookmarks {
padding-top: 2px!important;
}



/* ******************●コンテキストメニュー●****************** */
/* 「/*  #mainPopupSet,」以降の各項目に関して、先頭の「/*」を追加/削除することでメニューの表示/非表示を制御出来ます。お好みで変更してください。先頭の「/*」を追加すると表示、先頭の「/*」を削除すると非表示です。 */
/* ※全角文字を含む場合(拡張機能用の[スクリーンショットを撮る]を指定する場合)、@charsetの指定が必要になります。また、userChrome.cssファイルを指定した文字コードで保存してください。 */


/* @author      toshi (https://github.com/k08045kk)
/* @license     MIT License | https://github.com/k08045kk/userChrome.menus.css/blob/master/LICENSE
/* @version     150.20260421
/* @since       57.20171227 - 初版
/* @see         https://github.com/k08045kk/userChrome.menus.css
/* @see         https://www.bugbugnow.net/2017/12/firefox-quantum-57.html
/* @see         https://www.bugbugnow.net/2018/04/firefox-quantum-context-menu-editing.html

/* ========================================================================== */
/*  #mainPopupSet,                                      /* ポップアップ */
/* -------------------------------------------------------------------------- */
/*    #tabContextMenu,                                  /* タブ */
        #context_openANewTab,                           /* [新しいタブを右隣に開く] 89+ 132+? */
        #context_addTabToNewGroup,                      /* [Add Tab to New Group] 132-133 delete? */
/*      #context_moveTabToNewGroup,                     /* [このタブを新しいグループに追加][選択したタブを新しいグループに追加] 133+? 138+ */
/*      #context_moveSplitViewToNewGroup,               /* [分割ビューを新しいグループに追加] 149+ */
/*      #context_moveTabToGroup,                        /* [このタブをグループに追加][選択したタブをグループに追加] 133+? 138+ */
/*        #context_moveTabToGroupNewGroup,              /*   [新しいグループ] 138+ */
/*        #open-tab-groups-separator-upper,             /*   [----------------] 138+ 147+? */
/*                                                      /*   新しいグループ一覧 138+ */
/*        #open-tab-groups-separator-lower,             /*   [----------------] 147+? */
/*        #context_moveTabToSavedGroup,                 /*   [閉じたグループ] 147+? */
/*                                                      /*     閉じたグループ一覧 147+? */
/*      #context_ungroupTab,                            /* [このタブを各グループから除外][選択したタブを各グループから除外] 133+? 138+ */
/*      #context_ungroupSplitView,                      /* [このタブをグループから除外] 147+ */
/*      #context_moveTabToSplitView,                    /* [分割ビューを追加] 146+ 149+ */
/*      #context_separateSplitView,                     /* [分割ビューを終了] 146+ */
/*      #context_reverseSplitView,                      /* [Reverse Tabs] ???+ */
        #context_openANewTab + menuseparator,           /* [----------------] 89-132 delete? */
        #context_addTabToNewGroup + menuseparator,      /* [----------------] 89+ 132-133 delete? */
/*      #context_ungroupTab + menuseparator,            /* [----------------] 89+ 133+? */
/*      #context_separateSplitView + menuseparator,     /* [----------------] 146+ */
/*      #context_reverseSplitView + menuseparator,      /* [----------------] ???+ */
        #context_reloadTab,                             /* [タブを再読み込み] */
        #context_reloadSelectedTabs,                    /* [タブを再読み込み] 67+ */
        #context_playTab,                               /* [タブのメディアを再生] 132+? */
        #context_playSelectedTabs,                      /* [タブのメディアを再生] 132+? */
        #context_toggleMuteTab,                         /* [タブをミュート] */
        #context_toggleMuteSelectedTabs,                /* [タブをミュート] 67+ */
/*      #context_pinTab,                                /* [タブをピン留め] */
/*      #context_unpinTab,                              /* [タブのピン留めを外す] */
/*      #context_pinSelectedTabs,                       /* [タブをピン留め] 67+ */
/*      #context_unpinSelectedTabs,                     /* [タブのピン留めを外す] 67+ */
        #context_unloadTab,                             /* [タブを解放] 140+ */
/*      #context_duplicateTab,                          /* [タブを複製] */
/*      #context_duplicateTabs,                         /* [タブを複製] 67+ */
/*      #context_duplicateTabs + menuseparator,         /* [----------------] 67+ */
        #context_askChat,                               /* [AI チャットボットに尋ねる] 142+ */
/*                                                      /*   [ページを要約] 142+ */
/*                                                      /*   [AI チャットボットを選ぶ] 142+ */
/*                                                      /*   [----------------] 142+ */
/*                                                      /*   [AI チャットボットを削除] 142+ */
        #context_askChat + menuseparator,               /* [----------------] 142+ */
        #context_bookmarkSelectedTabs,                  /* [タブをブックマーク...] */
        #context_bookmarkTab,                           /* [タブをブックマーク] 64+ */
        #context_moveTabOptions,                        /* [タブを移動] 64+ 67+ */
/*        #context_moveToStart,                         /*   [最初のタブへ移動] 67+ */
/*        #context_moveToEnd,                           /*   [最後のタブへ移動] 67+ */
/*        #context_openTabInWindow,                     /*   [新しいウィンドウへ移動] 67+ */
        #tabContextMenu > .share-tab-url-item,          /* [共有] 89+ 92+ */
        #context_reopenInContainer,                     /* [新しいコンテナータブで開く] 88+ 89+ */
/*                                                      /*   コンテナー */
        #context_selectAllTabs,                         /* [すべてのタブを選択] 64+ 88+ */
        #context_selectAllTabs + menuseparator,         /* [----------------] 88+ */
        #context_sendTabToDevice,                       /* [端末へ送信] 147+ */
/*                                                      /*   [接続された端末がありません] 147- */
/*                                                      /*   端末一覧 */
/*                                                      /*   [----------------] */
/*                                                      /*   [他の端末を接続...] 147- */
/*                                                      /*   [タブの送信について...] 147- */
/*                                                      /*   [すべての端末に送信] */
/*                                                      /*   [端末を管理...] */
/*      #context_sendTabToDeviceSeparator,              /* [----------------] 147+ */
        #context_closeTab,                              /* [n 個のタブを閉じる] 88+ 132+? */
/*      #context_closeDuplicateTabs,                    /* [重複タブを閉じる] 127+ */
/*      #context_closeTabOptions,                       /* [複数のタブを閉じる] 78+ */
        #context_closeTabsToTheStart,                 /*   [左側のタブをすべて閉じる] 88+ */
/*        #context_closeTabsToTheEnd,                   /*   [右側のタブをすべて閉じる] */
/*        #context_closeOtherTabs,                      /*   [他のタブをすべて閉じる] */
/*      #context_undoCloseTab,                          /* [閉じたタブを開きなおす] 88+ */
/*      #context_undoCloseTab + menuseparator,          /* [----------------] 132+? */
/*      #context_fullscreenAutohide,                    /* [ツールバーを隠す] 132+? */
/*      #context_fullscreenExit,                        /* [全画面表示モードを終了] 132+? */
/*      #context_fullscreenExit + menuseparator,        /* [----------------] 88+ 132+? */
/*                                                      /* 拡張機能(タブ) */
/* -------------------------------------------------------------------------- */
/*    #toolbar-context-menu,                            /* ツールバー */
/*                                                      /* 拡張機能(ブラウザアクション) */
/*                                                      /* [----------------] */
/*      #toolbar-context-manage-extension,              /* [拡張機能を管理] 138+? */
        #toolbar-context-remove-extension,              /* [拡張機能を削除] 138+? */
        #toolbar-context-report-extension,              /* [拡張機能を報告] 138+? */
/*      #toolbar-context-report-extension+menuseparator,/* [----------------] 138+? */
/*      #toolbar-context-openANewTab,                   /* [新しいタブ] 89+ 138+? */
/*      #toolbarNavigatorItemsMenuSeparator,            /* [----------------] 89+ 138+? */
/*      #toolbar-context-reloadSelectedTab,             /* [選択したタブを再読み込み] */
/*      #toolbar-context-reloadSelectedTabs,            /* [選択したタブを再読み込み] */
/*      #toolbar-context-bookmarkSelectedTab,           /* [選択したタブをブックマーク...] */
/*      #toolbar-context-bookmarkSelectedTabs,          /* [選択したタブをブックマーク...] */
/*      #toolbar-context-selectAllTabs,                 /* [すべてのタブを選択] */
/*      #toolbar-context-undoCloseTab,                  /* [閉じたタブを開きなおす] 88+ */
/*      #toolbarItemsMenuSeparator,                     /* [----------------] */
/*      #toolbar-context-customize-sidebar,             /* [サイドバーをカスタマイズ] 138+? */
/**     #toolbar-context-toggle-vertical-tabs,          /* [垂直タブをオンにする][垂直タブをオフにする] 138+? */
/**     #sidebarRevampSeparator,                        /* [----------------] 138+? */
        #toolbar-context-customize-sidebar[hidden] ~ #toolbar-context-toggle-vertical-tabs, /* [垂直タブをオンにする][垂直タブをオフにする] 138+? **/
        #toolbar-context-customize-sidebar[hidden] ~ #sidebarRevampSeparator,   /* [----------------] 138+? **/
        #toolbar-context-move-to-panel,                 /* [オーバーフローメニューにピン留め] 138+? */
/*      #toolbar-context-autohide-downloads-button,     /* [履歴がないときはボタンを非表示にする] 88+? 138+? */
        #toolbar-context-remove-from-toolbar,           /* [ツールバーから削除] 138+? */
/**     #toolbar-context-pin-to-toolbar,                /* [ツールバーにピン留め] 109+ 138+? */
/*      #toolbarDownloadsAnchorMenuSeparator,           /* [----------------] 138+? */
/*      #toolbar-context-always-open-downloads-panel,   /* [ダウンロード開始時にパネルを表示する] 138+? */
/**     #customizationMenuSeparator,                    /* [----------------] 138+? */
        #toolbar-context-pin-to-toolbar[hidden] ~ #toolbar-context-always-open-downloads-panel[hidden] ~ #customizationMenuSeparator,/* [----------------] 138+? **/
/**     #toggle_toolbar-menubar,                        /* [メニューバー] */
/**     #toolbar-context-menu > #toggle_PersonalToolbar,/* [ブックマークツールバー] 85+ */
/*                                                      /*   [常に表示する] 85+ */
/*                                                      /*   [新しいタブのみ表示する] 85+ 138+? */
/*                                                      /*   [表示しない] 85+ 138+? */
/**     #viewToolbarsMenuSeparator,                     /* [----------------] */
        #toolbar-context-report-extension:not([hidden]) ~ #toggle_toolbar-menubar,  /* [メニューバー] **/
/*        #toolbar-context-report-extension:not([hidden]) ~ #toggle_PersonalToolbar,  /* [ブックマークツールバー] **/
/*        #toolbar-context-report-extension:not([hidden]) ~ #viewToolbarsMenuSeparator,   /* [----------------] **/
/*      #toolbar-context-customize,                     /* [ツールバーをカスタマイズ...] 138+? */
/*      #toolbar-context-customize + menuseparator,     /* [----------------] */
/*      #toolbar-context-full-screen-autohide,          /* [ツールバーを隠す] 138+? */
/*      #toolbar-context-full-screen-exit,              /* [全画面表示モードを終了] 138+? */
/* -------------------------------------------------------------------------- */
/*    #contentAreaContextMenu,                          /* コンテンツエリア */
/*      #context-navigation,                            /* ナビゲーション */
/*        #context-back,                                /*   [戻る] */
/*        #context-forward,                             /*   [進む] */
/*        #context-reload,                              /*   [更新] */
/*        #context-stop,                                /*   [停止] */
/*        #context-bookmarkpage,                        /*   [このページをブックマーク] */
/*      #context-sep-navigation,                        /* [----------------] */
/*      #context-viewsource-goToLine,                   /* [指定行へ移動...] 88+ */
/*      #context-viewsource-wrapLongLines,              /* [長い行を折り返す] 88+ */
/*      #context-viewsource-highlightSyntax,            /* [構文を強調表示] 88+ */
/*      #context-sep-viewsource-commands,               /* [----------------] 88+ */
/*      #spell-no-suggestions,                          /* [修正候補なし] 88+ */
/*                                                      /* 修正候補 */
/*      #spell-add-to-dictionary,                       /* [辞書に追加] */
/*      #spell-undo-add-to-dictionary,                  /* [辞書への追加を元に戻す] */
/*      #spell-suggestions-separator,                   /* [----------------] */
/*      #context-openlinkincurrent,                     /* [選択した URL を開く] */
        #context-openlinkincontainertab,                /* [リンクを新しい 〇〇 タブで開く] 〇〇=コンテナ名 */
/*        #context-openlinkintab,                         /* [リンクを新しいタブで開く] */
        #context-openlinkinsplitview,                   /* [リンクを分割ビューで開く] 150+ */
        #context-openlinkinusercontext-menu,            /* [リンクを新しいコンテナータブで開く] */
/*                                                      /*   コンテナ */
/*        #context-openlink,                              /* [リンクを新しいウィンドウで開く] */
/*        #context-openlinkprivate,                       /* [リンクを新しいプライベートウィンドウで開く] */
        #context-previewlink,                           /* [リンク先をプレビュー] 146+? */
/**     #context-sep-open,                              /* [----------------] */
        #context-openlinkincurrent[hidden] ~ #context-sep-open, /* [----------------] **/
        #context-bookmarklink,                          /* [このリンクをブックマーク] */
/*      #context-savelink,                              /* [名前を付けてリンク先を保存...] */
        #context-savelinktopocket,                      /* [リンクを Pocket に保存] */
/*      #context-copyemail,                             /* [メールアドレスをコピー] */
/*      #context-copyphone,                             /* [電話番号をコピー] 110+? */
/*      #context-copylink,                              /* [リンクをコピー] 88+ */
        #context-stripOnShareLink,                      /* [サイト追跡を除いたリンクをコピー] 120+ */
/*      #context-sep-copylink,                          /* [----------------] 147+ */
        #context-sendlinktodevice,                      /* [リンクを端末へ送信] 89+ */
/*                                                      /*   [接続された端末がありません] */
/*                                                      /*   [----------------] */
/*                                                      /*   [他の端末を接続...] */
/*                                                      /*   [タブの送信について...] */
/*                                                      /*   [すべての端末に送信] */
/*                                                      /*   [端末を管理...] */
        #context-sep-sendlinktodevice,                  /* [----------------] 89+ */
/*      #context-media-play,                            /* [再生] */
/*      #context-media-pause,                           /* [一時停止] */
/*      #context-media-mute,                            /* [ミュート] */
/*      #context-media-unmute,                          /* [ミュート解除] */
/*      #context-media-playbackrate,                    /* [再生速度] 110+? */
/*        #context-media-playbackrate-050x,             /*   [0.5 倍] 110+? */
/*        #context-media-playbackrate-100x,             /*   [1.0 倍] 110+? */
/*        #context-media-playbackrate-125x,             /*   [1.25 倍] 110+? */
/*        #context-media-playbackrate-150x,             /*   [1.5 倍] 110+? */
/*        #context-media-playbackrate-200x,             /*   [2 倍] 110+? */
/*      #context-media-loop,                            /* [連続再生] */
/*      #context-leave-dom-fullscreen,                  /* [全画面表示モードを終了] 88+ */
/*      #context-video-fullscreen,                      /* [全画面表示] 88+ */
/*      #context-media-hidecontrols,                    /* [コントロールを隠す] 88+ */
/*      #context-media-showcontrols,                    /* [コントロールを表示] 88+ */
/*      #context-media-sep-video-commands,              /* [----------------] 88+ */
        #context-viewvideo,                             /* [動画を新しいタブで開く] 88+ 89+ */
/*      #context-video-pictureinpicture,                /* [ピクチャーインピクチャーで視聴] 85+? 102+? */
/*      #context-media-sep-commands,                    /* [----------------] */
        #context-reloadimage,                           /* [画像を再読み込み] */
/*        #context-viewimage,                             /* [画像を新しいタブで開く] 88+ */
/*      #context-saveimage,                             /* [名前を付けて画像を保存...] 87+ */
/*      #context-video-saveimage,                       /* [スナップショットを保存...] 87+ 110+? */
/*      #context-savevideo,                             /* [名前を付けて動画を保存...] 87+ */
/*      #context-saveaudio,                             /* [名前を付けて音声を保存...] 87+ */
        #context-copyimage-contents,                    /* [画像をコピー] */
/*      #context-copyimage,                             /* [画像のリンクをコピー] 88+ */
/*      #context-copyvideourl,                          /* [動画のリンクをコピー] 88+ */
/*      #context-copyaudiourl,                          /* [音声のリンクをコピー] 88+ */
        #context-sendimage,                             /* [画像の URL をメールで送信...] */
        #context-sendvideo,                             /* [動画の URL をメールで送信...] */
        #context-sendaudio,                             /* [音声の URL をメールで送信...] */
/*      #context-imagetext,                             /* [画像からテキストをコピー] 110+? */
/*      #context-viewimageinfo,                         /* [画像の情報を表示] 89+ (browser.menu.showViewImageInfo=true) */
/*      #context-viewimagedesc,                         /* [画像の詳細情報を表示] 87+ */
/*      #context-visual-search,                         /* [Google Lens で画像を検索] 144+ */
/**     #context-sep-setbackground,                     /* [----------------] 87+ */
        #context-copyimage-contents:not([hidden]) ~ #context-sep-setbackground, /* [----------------] (#context-setDesktopBackground + 画像コンテキストメニュー用) **/
        #context-setDesktopBackground,                  /* [画像をデスクトップの背景に設定...] 87+ 88+ */
/*      #context-ctp-play,                              /* [このプラグインを有効化] */
/*      #context-ctp-hide,                              /* [このプラグインを非表示] */
/*      #context-sep-ctp,                               /* [----------------] */
/*        #context-savepage,                              /* [名前を付けてページを保存...] */
        #context-pocket,                                /* [ページを Pocket に保存] */
/*      #fill-login,                                    /* [保存したパスワードを使用] 84+? 88+? */
/*                                                      /*   ログイン情報 84+? */
/*      #fill-login-generated-password,                 /* [安全なパスワードを生成...] 84+? 88+ */
/*      #manage-saved-logins,                           /* [ログイン情報を管理...] 88+ */
/*      #passwordmgr-items-separator,                   /* [----------------] 88+ */
/*      #context-undo,                                  /* [元に戻す] */
/*      #context-redo,                                  /* [やり直し] 88+? */
/*      #context-sep-undo,                              /* [----------------] */
/*      #context-cut,                                   /* [切り取り] */
/*      #context-copy,                                  /* [コピー] */
/*      #context-paste,                                 /* [貼り付け] */
/*      #context-paste-no-formatting,                   /* [書式なしで貼り付け] 106+? */
/*      #context-delete,                                /* [削除] */
/*      #context-selectall,                             /* [すべて選択] */
/*      #context-reveal-password,                       /* [パスワードを開示] 110+? */
        #context-print-selection,                       /* [選択した部分を印刷] 84+ 88+ */
/*      #context-sep-selectall,                         /* [----------------] 88+ */
/*        #context-copy-link-to-highlight,                /* [選択部分へのリンクをコピー] 145+ */
        #context-copy-clean-link-to-highlight,          /* [追跡を除去した選択部分へのリンクをコピー] 145+ */
        #context-remove-highlight,                      /* [選択部分を解除] 145+ */
        #context-sep-highlights,                        /* [----------------] 145+ */
/*      #context-pdfjs-undo,                            /* [元に戻す] 110+? */
/*      #context-pdfjs-redo,                            /* [やり直し] 110+? */
/*      #context-sep-pdfjs,                             /* [----------------] 110+? */
/*      #context-pdfjs-cut,                             /* [切り取り] 110+? */
/*      #context-pdfjs-copy,                            /* [コピー] 110+? */
/*      #context-pdfjs-paste,                           /* [貼り付け] 110+? */
/*      #context-pdfjs-delete,                          /* [削除] 110+? */
/*      #context-pdfjs-selectall,                       /* [すべて選択] 110+? */
/*      #context-sep-pdfjs-selectall,                   /* [----------------] 110+? */
/*      #context-take-screenshot,                       /* [スクリーンショットを撮影] 88+ 110+? (screenshots.browser.component.enabled=true) */
/*      #context-sep-screenshots,                       /* [----------------] 88+ 110+? */
        #context-keywordfield,                          /* [この検索にキーワードを設定...] 88+ */
        #context-add-engine,                            /* [検索エンジンを追加] 141+? */
/**     #context-searchselect,                          /* [〇〇 で検索: "△△"] 〇〇=検索エンジン、△△=選択文字列 88+ */
/*      #context-searchselect-private,                  /* ??? 84+? 88+ */
        #context-translate-selection,                   /* [選択範囲を 〇〇 に翻訳][リンクテキストを 〇〇 に翻訳] 128+ */
        #context-ask-chat,                              /* [AI チャットボットに尋ねる] 128+? 142+ */
/*                                                      /*   [ページを要約] 142+ */
/*                                                      /*   [AI チャットボットを選ぶ] 142+ */
/*                                                      /*   [----------------] 142+ */
/*                                                      /*   [AI チャットボットを削除] 142+ */
/**     #frame-sep,                                     /* [----------------] */
        #context-sep-selectall:not([hidden]) ~ #context-searchselect[hidden] ~ #frame-sep,  /* [----------------] (#context-keywordfield + 入力コンテキストメニュー用) **/
        #context-copyimage:not([hidden]) ~ #frame-sep,  /* [----------------] (#context-ask-chat + 画像コンテキストメニュー用) **/
        #context-savepage:not([hidden]) ~ #frame-sep,   /* [----------------] (#context-ask-chat + ファイルコンテキストメニュー用) **/
/*      #frame,                                         /* [このフレーム] */
          #context-showonlythisframe,                   /*   [このフレームだけを表示] */
/*        #context-openframeintab,                      /*   [フレームを新しいタブで開く] */
          #context-openframe,                           /*   [フレームを新しいウィンドウで開く] */
/*        #open-frame-sep,                              /*   [----------------] */
          #context-reloadframe,                         /*   [フレームの再読み込み] */
          #context-reloadframe + menuseparator,         /*   [----------------] */
          #context-bookmarkframe,                       /*   [このフレームをブックマーク] */
          #context-saveframe,                           /*   [名前を付けてフレームを保存...] */
          #context-saveframe + menuseparator,           /*   [----------------] */
          #context-printframe,                          /*   [フレームを印刷...] */
          #context-printframe + menuseparator,          /*   [----------------] */
          #context-take-frame-screenshot,               /*   [スクリーンショットを撮影] 110+? */
          #context-sep-frame-screenshot,                /*   [----------------] 110+? */
/*        #context-viewframesource,                     /*   [フレームのソースを表示] */
/*        #context-viewframeinfo,                       /*   [フレームの情報を表示] */
/*      #spell-separator,                               /* [----------------] */
/*      #spell-check-enabled,                           /* [スペルチェックを行う] */
/*      #spell-add-dictionaries-main,                   /* [辞書を追加...] */
/*      #spell-dictionaries,                            /* [言語] */
/*                                                      /*   言語 */
/*        #spell-language-separator,                    /*   [----------------] */
/*        #spell-add-dictionaries,                      /*   [辞書を追加...] */
/*      #context-sep-bidi,                              /* [----------------] */
/*      #context-bidi-text-direction-toggle,            /* [テキストの記述方向を切り替える] */
/*      #context-bidi-page-direction-toggle,            /* [ページの記述方向を切り替える] */
/*      #inspect-separator,                             /* [----------------] */
        #context-viewpartialsource-selection,           /* [選択した部分のソースを表示] 88+ */
/*      #context-viewsource,                            /* [ページのソースを表示] 88+ */
        #context-inspect-a11y,                          /* [アクセシビリティプロパティを調査] 67+ 82+? */
/*      #context-inspect,                               /* [調査] 82+? 89+? */
        #context-sep-sendpagetodevice,                  /* [----------------] 147+ */
        #context-sendpagetodevice,                      /* [端末へ送信] 147+ */
/*                                                      /*   [接続された端末がありません] 147- */
/*                                                      /*   端末一覧 */
/*                                                      /*   [----------------] */
/*                                                      /*   [他の端末を接続...] 147- */
/*                                                      /*   [タブの送信について...] 147- */
/*                                                      /*   [すべての端末に送信] */
/*                                                      /*   [端末を管理...] */
/*      #context-media-eme-separator,                   /* [----------------] */
/*      #context-media-eme-learnmore,                   /* [DRM の詳細...] */
/*      #context-media-eme-learnmore + menuseparator,   /* [----------------] */
/*                                                      /* 拡張機能(コンテンツエリア) */
/* -------------------------------------------------------------------------- */
/*    #placesContext,                                   /* ブックマーク・履歴 */
        #placesContext_open,                            /* [開く] */
/*        #placesContext_openBookmarkContainer\:tabs,     /* [ブックマークをすべて開く] 89+ */
/*        #placesContext_openBookmarkLinks\:tabs,         /* [ブックマークをすべて開く] 89+ */
/*        #placesContext_open\:newtab,                    /* [新しいタブで開く] 89+ */
/*        #placesContext_open\:newcontainertab,           /* [新しいコンテナータブで開く] 100+? */
/*                                                      /*   コンテナー */
        #placesContext_openContainer\:tabs,             /* [タブですべて開く] 89+ */
        #placesContext_openLinks\:tabs,                 /* [タブですべて開く] 89+ */
/*        #placesContext_open\:newwindow,                 /* [新しいウィンドウで開く] 89+ */
/*        #placesContext_open\:newprivatewindow,          /* [新しいプライベートウィンドウで開く] 89+ */
        #placesContext_openSeparator,                   /* [----------------] */
/*      #placesContext_show_bookmark\:info,             /* [ブックマークを編集...] 89+ */
/*      #placesContext_show\:info,                      /* [編集...] 89+ */
/*      #placesContext_show_folder\:info,               /* [フォルダーを編集...] 89+ 146+? */
/*      #placesContext_deleteBookmark,                  /* [ブックマークを削除] 89+ */
/*      #placesContext_deleteFolder,                    /* [フォルダーを削除] 89+ */
/*      #placesContext_delete,                          /* [削除] 89+ */
/*      #placesContext_delete_history,                  /* [ページを削除] 89+ */
/*      #placesContext_deleteHost,                      /* [このサイトの履歴を消去] 89+ */
        #placesContext_sortBy\:name,                    /* [名前順に並べ替える] 89+ */
/*      #placesContext_deleteSeparator,                 /* [----------------] 89+ */
/*      #placesContext_cut,                             /* [切り取り] 89+ */
/*      #placesContext_copy,                            /* [コピー] 89+ */
/*      #placesContext_paste_group,                     /* [貼り付け] 89+ */
/*      #placesContext_editSeparator,                   /* [----------------] 89+ */
/*      #placesContext_new\:bookmark,                   /* [ブックマークを追加...] */
/*      #placesContext_new\:folder,                     /* [フォルダーを追加...] */
/*      #placesContext_new\:separator,                  /* [区切りを追加] */
/*      #placesContext_newSeparator,                    /* [----------------] */
/*      #placesContext_paste,                           /* [貼り付け] 89+ */
/*      #placesContext_pasteSeparator,                  /* [----------------] 89+ */
/*      #placesContext_createBookmark,                  /* [ページをブックマークに追加] */
/*        #placesContext > #toggle_PersonalToolbar,       /* [ブックマークツールバー] 85+ */
/*                                                      /*   [常に表示する] 85+ */
/*                                                      /*   [新しいタブのみ表示する] 85+ */
/*                                                      /*   [表示しない] 85+ */
/*      #show-other-bookmarks_PersonalToolbar,          /* [他のブックマークを表示] 85+ */
/*      #placesContext_showAllBookmarks,                /* [ブックマークを管理] 89+ */
/*      #placesContext_showAllBookmarks + menuseparator,/* [----------------] 89+ */
/*                                                      /* 拡張機能(ブックマーク・履歴) */
/* -------------------------------------------------------------------------- */
/*    #pageActionContextMenu,                           /* ページアクションコンテキストメニュー */
/*                                                      /* 拡張機能 (ページアクション) */
/*                                                      /* [----------------] */
/*      #pageActionContextMenuManageExtension,          /* [拡張機能を管理...] 110+? 138+? */
        #pageActionContextMenuRemoveExtension,          /* [拡張機能を削除] 110+? 138+? */
/* ========================================================================== */
/* 追加機能                                                                   */
/* ========================================================================== */
/* [〇〇 で検索: "△△"]を削除                                                */
/* リンクを右クリックした場合、削除する。                                     */
/* 選択中のテキストがある場合、削除しない。                                   */
/* -------------------------------------------------------------------------- */
/*  #mainPopupSet,                                      /* ポップアップ */
/*    #contentAreaContextMenu,                          /* コンテンツエリア */
        #context-copylink:not([hidden]) ~ #context-copy[hidden] ~ #context-searchselect,/* [〇〇 で検索: "△△"] */
        #context-copylink:not([hidden]) ~ #context-copy[hidden] ~ #frame-sep,   /* [----------------] */
/* ========================================================================== */
/* ブックマークツールバーメニューの[タブですべて開く]を削除                   */
/* -------------------------------------------------------------------------- */
/*  #navigator-toolbox,                                 /* ナビゲーションツールボックス */
/*    #PlacesToolbar,                                   /* ブックマークツールバー */
/*                                                      /* ブックマーク */
/*        #PlacesToolbar .bookmarks-actions-menuseparator,/* [----------------] */
/*        #PlacesToolbar .openintabs-menuitem,            /* [タブですべて開く] */
/* ========================================================================== */
/* コンテキストメニュー削除(拡張機能用)による不要な区切りを削除             */
/* ただし、[要素を調査]を拡張機能の区間に表示する。                           */
/* -------------------------------------------------------------------------- */
/*  #mainPopupSet,                                      /* ポップアップ */
/*    #contentAreaContextMenu,                          /* コンテンツエリア */
/*      #context-media-eme-separator,                   /* [----------------] */
/*      menuseparator:first-child,                      /* [----------------] */
/*      menuseparator:last-child,                       /* [----------------] */
/* -------------------------------------------------------------------------- */
/* コンテキストメニューを削除(拡張機能用)                                   */
/* コンテキストメニューのラベル名を直接指定して削除する。                     */
/* メニューアイテムは、 menuitem で指定する。                                 */
/* メニューグループは、 menu で指定する。                                     */
/* -------------------------------------------------------------------------- */
/*      menuitem[label="NoScript"],                     /* NoScript */
/*      menu[label="Firefox Multi-Account Containers"], /* Firefox Multi-Account Containers */
/* ========================================================================== */
    #context-dummy-dummy-dummy                          /* ダミー */
{
  display: none !important;
}



/* コンテキストメニューを削除(拡張機能用) */
/* @charsetとuserChrome.cssの文字コードに注意 */
    menuitem[label="Take a Screenshot"],        /* スクリーンショットを撮る */
/*    menuitem[label="スクリーンショットを撮る"], /* スクリーンショットを撮る */
/*  menuitem[label="NoScript"],                 /* NoScript */
    #context-dummy-dummy-dummy                  /* ダミー */
{
  display: none !important;
}



/* ******************●サイドバー●****************** */
/* サイドバー全体の右側の余白的な部分*/
.sidebar-splitter {
width: 1px !important;
--splitter-width: 1px !important;/*●元は4px●*/
border-inline: none !important;
}

/* サイドバーを自動開閉するようにする (左側用)*/
:root {
  --thin-tab-width: 36px;
  --wide-tab-width: 300px;
}


#sidebar-box {
  position: relative !important;
  overflow-x: hidden !important;
  min-width: var(--thin-tab-width) !important;
  max-width: var(--thin-tab-width) !important;
  box-shadow: 0 0 2px 0 rgba(0,0,0,.35);
  z-index: 1 !important; 
  transition: all .1s ease; 
  flex-basis: var(--thin-tab-width) !important;
  flex-shrink: 0 !important;
}


#sidebar-header {
  width: var(--thin-tab-width) !important;
}


#sidebar {
  min-width: var(--thin-tab-width) !important;
  max-width: var(--thin-tab-width) !important;
opacity: 0 !important;
}


#sidebar-box:hover {
  min-width: var(--wide-tab-width) !important;
  max-width: var(--wide-tab-width) !important;
  width: var(--wide-tab-width) !important;
  flex-basis: var(--wide-tab-width) !important;
  flex-shrink: 0 !important;
/* 0.5秒ホバーで開く */
transition-delay: 0.5s!important;
}


#sidebar-header:hover {
  width: var(--wide-tab-width) !important;
}


#sidebar:hover {
  min-width: var(--wide-tab-width) !important;
  max-width: var(--wide-tab-width) !important;
opacity: 1 !important;
}


/* ●サイドバーの Tree Style Tab - ツリー型タブ用● */
/* ツリー型タブ用 */
tab-item {
border-color:#000!important;
}


tab-item.active {
background-color: #A05E63!important;
}


tab-item.active .label-content {
font-weight: bold!important;
}



/* ******************●その他●****************** */
/*●tabProtect_mod2.uc.jsのアイコンの位置●*/
tab[tabProtect] .tab-icon-protect{
  /*■元■margin-top: 0px;■*/ /*要調整*/
  margin-top: -8px !important;
  margin-left: 0px !important; /*要調整*/
}


/*●tabLock_mod2.uc.jsのアイコンの余白●*/
  tab[tabLock] .tab-icon-lock{
    margin-top: 0px !important; /*要調整*/
    margin-left: 0px !important; /*要調整*/
}


/* ●DWMBlurGlassを導入している場合、KB5068861適用以降、Firefoxだけ右クリックが透過される対策● */
menupopup {
  -moz-appearance: menupopup !important;
  background-color: -moz-Dialog !important;
  background-image: none !important;
  backdrop-filter: none !important;
  opacity: 0.8 !important;
}


/* ●Firefox 152以降? ピン留めタブ幅が半分になる対策● */
#tabbrowser-tabs[positionpinnedtabs] .tabbrowser-tab[pinned] {
  flex-shrink: 0 !important;
}
.tabbrowser-tab[pinned] .tab-label-container {
  display: none !important;
}
.tabbrowser-tab[pinned] {
  min-width: 36px !important;
  max-width: 36px !important;
}
.tabbrowser-tab[pinned] .tab-content {
  padding: 0 !important;
  justify-content: center !important;
}


 

 

■バージョン152時点でのuser.js
独自の設定が山盛りです。
※特にRamディスク向けのキャッシュ設定があるので、不要な場合は「Ramディスク向けのキャッシュ」の箇所を確認・変更してお使いください。

//■■■■■ ■■■■■ セキュリティ ■■■■■ ■■■■■
// 情報収集機能(ヘルスレポート)を無効化
//↓オプション画面にもある
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.healthreport.logging.consoleEnabled", false);
user_pref("datareporting.healthreport.service.enabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);


// 情報収集機能(テレメトリ)を無効化
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false);
user_pref("browser.ping-centre.telemetry", false);
user_pref("datareporting.healthreport.service.enabled", false);
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("datareporting.sessions.current.clean", true);
user_pref("devtools.onboarding.telemetry.logged", false);
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.telemetry.hybridContent.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.prompted", 2);
user_pref("toolkit.telemetry.rejected", true);
user_pref("toolkit.telemetry.reportingpolicy.firstRun", false);
user_pref("toolkit.telemetry.server", "");
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.unifiedIsOptIn", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);


//●位置情報通知機能を無効
user_pref("geo.enabled", false);


//●アクセシビリティサービスを無効化
user_pref("accessibility.force_disabled", 1);


//●日本語URLをそのまま表示する※ホモグラフ攻撃防止を優先する場合はtrueにする
user_pref("network.IDN_show_punycode", true);


//●URLのプロトコル(http・https)を表示する
user_pref("browser.urlbar.trimURLs", false);



//■■■■■ ■■■■■ その他 ■■■■■ ■■■■■
// リーダービューを無効
user_pref("reader.parse-on-load.enabled", false);


// 右クリックを禁止させない
user_pref("nglayout.events.dispatchLeftClickOnly", true);


// JavaScriptのコンテキストメニューを無効化または変更させない
//user_pref("dom.event.contextmenu.enabled", false);


//●YouTube対策
user_pref("general.useragent.override.youtube.com", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36");//●わざと最新のChromeではなく少し古いバージョンに偽装している


//●YouTubeの動画の読み込み完了を待たず音声再生させる
//●以下を設定すると逆に遅くなる場合がある
//●user_pref("dom.webcomponents.enabled", true);
//●user_pref("dom.webcomponents.shadowdom.enabled", true);
//●user_pref("dom.webcomponents.customelements.enabled", false);



//●追加のYouTube対策その1
//●ハードウェア アクセラレーション:有効であることが前提
user_pref("gfx.webrender.layer-compositor", true);

//●主にAMD向け
//●user_pref("media.wmf.zero-copy-nv12-textures-force-enabled", true);//●古いPCでは無効「false」推奨
//●user_pref("gfx.direct3d11.reuse-decoder-device-force-enabled", true);

//●必要に応じて
user_pref("media.av1.enabled", false);//●AV1コーデックを無効


//●必要に応じて
user_pref("dom.ipc.processCount", 16);//●初期値:8●メモリ使用量が増えるので注意//●YouTube対策と重複
user_pref("dom.ipc.processCount.webIsolated", 8);//●初期値:4●メモリ使用量が増えるので注意//●YouTube対策と重複



//●追加のYouTube対策その3
//●uBlock Originの設定 → プライバシーにて、「先読み機能を無効にする」をチェックOFFが前提
user_pref("security.remote_settings.crlite_filters.enabled", true);
//●user_pref("network.http.speculative-parallel-limit", 10);//●マウスオーバーで先読み。有効にするとセキュリティ低下の可能性あり。初期値:0
user_pref("network.http.speculative-parallel-limit", 0);//一度「0」以外で設定すると、「0」で再設定しないと上書き反映できない


//●追加のYouTube対策その4
user_pref("network.dnsCacheEntries", 4096);
user_pref("browser.cache.disk.metadata_memory_limit", 6000);


//●全画面時のメッセージを非表示にする※ HTML5版のプレイヤーのみ
user_pref("full-screen-api.warning.timeout", 0);


//●マウスのフォーカスが外れる対策※おまじない
//●user_pref("mousewheel.withnokey.action", 0);//●推奨?は 0
//●user_pref("mousewheel.withnokey.numlines", 1);//●推奨?は 1
//●user_pref("mousewheel.withnokey.sysnumlines", true);//●


//●Ctrl + Shift + Qでブラウザが閉じる(警告なし)のを無効にする
user_pref("browser.sessionstore.warnOnQuit", true);
user_pref("browser.warnOnQuit", true);
user_pref("browser.quitShortcut.disabled", true);


//●アドオンにElectrolysis技術と互換性のないものが使われているとマルチプロセス機能が有効にならない対策
//●今はデフォルトで有効になっている●user_pref("browser.tabs.remote.force-enable", true);


//●Pocket サービスを無効
user_pref("extensions.pocket.enabled", false);


//●「おすすめのテーマ」を非表示にする
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);


//●Firefoxだけカラフルボックスのサポートサイト(help.colorfulbox.jp)の表示が遅い対策
user_pref("capability.policy.policynames", "nojs_for_help.colorfulbox.jp");
user_pref("capability.policy.nojs.sites", "https://help.colorfulbox.jp/");
user_pref("capability.policy.nojs.javascript.enabled", "noAccess"); 


//●ページ読込中に砂時計になる対策
user_pref("ui.prefersReducedMotion", 0);//●元は存在しない


//●リモートデバッグを常に許可
user_pref("devtools.debugger.force-local", true);
user_pref("devtools.debugger.prompt-connection", false);
//●Firefox自身のデバッグ用
//●使い方: ツール → ブラウザツール → ブラウザツールボックス
//●あるいは、 F12 → Ctrl + Shift + Alt + I
//●
//●その後、『リモートデバッグ接続要求』を許可する
user_pref("devtools.chrome.enabled", true);
user_pref("devtools.debugger.remote-enabled", true);


//●AIチャット機能を無効
user_pref("browser.ml.chat.menu", false);

//●画像の右クリックで「Google Lensによる画像検索」を無効化
//●user_pref("browser.search.visualSearch.featureGate", false);



//■■■■■ ■■■■■ 「Project Nova」関係 ■■■■■ ■■■■■
//●サイドバーの角の丸みを解除する
user_pref("sidebar.revamp.round-content-area", false);//■Firefox Nightlyだけ「true」■

//●「Project Nova」で追加された新サイドバーを非表示にする■「true」で新サイドバー
user_pref("sidebar.revamp", false);//■Firefox Nightlyだけ「true」■

//●「Project Nova」のプレビュー機能を有効にする
user_pref("browser.Nova.enabled", false);///■Firefox Nightlyだけ「true」■

//●コンパクトモードを復活
user_pref("browser.compactmode.show", true);//


//■■■■■ ■■■■■ 高速化 ■■■■■ ■■■■■
//●その他 browser.cache. 関係
//●●●browser.cache.disk.parent_directoryは後述●●●
user_pref("browser.cache.check_doc_frequency", 3);//●ここが 1 だとページにアクセスするたびに更新を確認するけど、ページの読み込みが少し遅くなる
user_pref("browser.cache.disk.amount_written", 53203);//●53203●Developer Editionの元は3998

//●IPv6を無効にする
//●user_pref("network.dns.disableIPv6", false);//●trueでIPv6無効


//●高速化・全てに共通の設定
//●廃止済み●user_pref("network.http.pipelining", true);
//●廃止済み●user_pref("network.http.proxy.pipelining", true);
//●廃止済み●user_pref("network.http.pipelining.maxrequests", 32);//●元は32
user_pref("content.notify.backoffcount", 5);//●元は5
user_pref("plugin.expose_full_path", true);
user_pref("ui.submenuDelay", 0);//●元は0

//●廃止済み●user_pref("network.http.pipelining.ssl", true);
//●廃止済み●user_pref("network.http.pipelining.firstrequest", true);


//●高速化●速いPC・速い回線速度の場合
user_pref("nglayout.initialpaint.delay", 0);//●元は0
user_pref("network.http.max-connections", 256);//●初期値:900
user_pref("network.http.max-connections-per-server", 32);//●廃止済みなので無視される
user_pref("network.http.max-persistent-connections-per-proxy", 32);//●初期値:32
user_pref("network.http.max-persistent-connections-per-server", 12);//●元は8


//●効果不明user_pref("content.notify.interval", 750000);


//●メモリキャッシュ
user_pref("browser.cache.memory.enable", true);
user_pref("browser.cache.memory.capacity", 2097152);//●元は2097152(2GB)/524288(512MB)
user_pref("browser.cache.memory.max_entry_size", 128);//●変更前:-1●変更後:128(YouTube対策)●元は200MB(204800)●初期値は5MB(5120)


//●Ramディスク向けのキャッシュ
user_pref("browser.cache.disk.enable", true);
user_pref("browser.cache.disk.parent_directory", "Z:\\temp");//●●●about:configからじゃないと反映されない●●●
user_pref("browser.cache.disk.capacity", 4194304);//●4GB●元は2GB(2097152)
user_pref("browser.cache.disk.smart_size.enabled", false);
user_pref("browser.cache.disk.smart_size.first_run", false);
user_pref("browser.cache.disk.smart_size.use_old_max", false);
user_pref("browser.cache.disk.smart_size_cached_value", 358400);//●350MB


//●ページの先読み
user_pref("network.predictor.enabled", true);
user_pref("network.prefetch-next", true);//●uBlock Originの設定 → プライバシーにて、「先読み機能を無効にする」をチェックOFF●


//●DNSプリフェッチ
//●uBlock Originの設定で『先読み機能を無効にする』をOFFにしないとダメ●
user_pref("network.dns.disablePrefetch", false);
user_pref("network.dns.disablePrefetchFromHTTPS", false);

user_pref("network.predictor.enable-hover-on-ssl", true);
user_pref("network.predictor.enable-prefetch", true);


//●httpキャッシュ
user_pref("browser.cache.use_new_backend", 1);


//●セッション保存時間を長くして動画サイトのイライラを解消する、とのこと
user_pref("browser.sessionstore.interval", 60000);//●元は15000

//●以前のセッションを復元を無効●高速化のためにセッション保存を無効にしたのかも?
user_pref("browser.sessionstore.resume_from_crash", false);


//30分以上触っていないタブだけ自動アンロード
user_pref("browser.tabs.unloadOnLowMemory.min_inactive_time", 1800000);


//●同一サイト用プロセスを4本に抑え、プロセス増殖とガベージコレクションの負荷を防ぐ
//●user_pref("dom.ipc.processCount.webIsolated", 4);//●YouTube対策と重複

//●JavaScriptヒープ上限を1024MBに引き上げ、ガベージコレクション回数を減らす
user_pref("javascript.options.mem.high_water_mark", 2048);//●元は1024●WordPress編集画面で1記事10万文字以上とかで遅くなる・無反応になる対策

//●「閉じたタブを元に戻す」履歴を50 → 25件に減らし、メモリ使用量を抑える
user_pref("browser.sessionstore.max_tabs_undo", 25);


//●http3を無効にする
//●user_pref("network.http.http3.enabled", false);//●無効●WordPress編集画面で1記事10万文字以上とかで遅くなる・無反応になる対策の場合はこっちにする■注意■「network.http.http3.enabled", false」にするとFirefox Developer EditionでのECH(Encrypted Client Hello)により404が発生しやすくなる※HTTP/3(QUIC)・DNS HTTPS RR(SVCB)・ECHConfigの3つが有効な場合にECH(Encrypted Client Hello)がうまく機能する
user_pref("network.http.http3.enabled", true);//●有効


//●動画サイトを大量に開き続けるとたまにタブがクラッシュする対策
user_pref("browser.cache.disk.max_entry_size", 128);//●元は51200
user_pref("places.history.expiration.transient_current_max_pages", 30000);//●元は78252
user_pref("places.history.expiration.max_pages", 20000);//●新規作成

//●続・高速化
user_pref("network.buffer.cache.size", 2662144);//●256KB●初期値は332768(32KB)
user_pref("network.buffer.cache.count", 128);//●元は24●128
user_pref("network.http.pacing.requests.burst", 10);//●初期値は10●32はだめ?
user_pref("network.http.pacing.requests.min-parallelism", 10);//●初期値は6
user_pref("network.websocket.max-connections", 400);//●初期値は200
user_pref("network.ssl_tokens_cache_capacity", 32768);//●初期値は2048
user_pref("security.pki.crlite_mode", 2);//●初期値は3

user_pref("gfx.webrender.all", true);
user_pref("gfx.webrender.enabled", true);
user_pref("gfx.webrender.precache-shaders", true);
user_pref("gfx.webrender.compositor", true);
user_pref("gfx.canvas.accelerated", true);
user_pref("gfx.canvas.accelerated.cache-items", 32768);
user_pref("gfx.canvas.accelerated.cache-size", 4096);
user_pref("gfx.content.skia-font-cache-size", 80);
user_pref("image.cache.size", 10485760);
user_pref("image.mem.decode_bytes_at_a_time", 131072);
user_pref("image.mem.shared.unmap.min_expiration_ms", 120000);
user_pref("layers.gpu-process.enabled", true);
user_pref("media.memory_cache_max_size", 104857600);//●元は1048576(1M)/209715200(200MB)/524288000(500MB)
user_pref("media.memory_caches_combined_limit_kb", 2560000);
user_pref("media.cache_size", 2048000);//●元は2048000(2GB)
user_pref("media.cache_readahead_limit", 9000);//●元は9000
user_pref("media.cache_resume_threshold", 6000);//●元は6000■注意■12000とか値を大きくすると、十分に溜まるまで再生を始めない


//●WordPress編集画面で1記事10万文字以上とかで遅くなる・無反応になる対策
user_pref("dom.max_script_run_time", 120);//●スクリプトの最大実行時間(秒)●修正前:30●初期値:10


//■■■■■ ■■■■■ userChrome関係 ■■■■■ ■■■■■
//●userChrome.cssを使うための設定
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);

//●何故か設定してある項目
user_pref("browser.tabs.insertRelatedAfterCurrent", true);
user_pref("browser.tabs.closeWindowWithLastTab", false);
user_pref("browser.search.openintab", true);
user_pref("browser.tabs.loadBookmarksInTabs", true);
user_pref("browser.urlbar.autoFill", false);


//●後々見たらtrueあるいはfalseになってる
user_pref("browser.cache.disk.smart_size.enabled", false);
user_pref("browser.urlbar.openintab", true);
//●現在のFirefoxでは機能しない●user_pref("browser.proton.contextmenus.enabled", false);
//●現在のFirefoxでは機能しない●user_pref("browser.proton.doorhangers.enabled", false);
//●現在のFirefoxでは機能しない●user_pref("browser.proton.enabled", false);
//●現在のFirefoxでは機能しない●user_pref("browser.proton.modals.enabled", false);


//●ビルトインページでもマウスジェスチャーを有効にする
//●アドオン無効化するのを解除
user_pref("privacy.resistFingerprinting.block_mozAddonManager", true);//●初期値:false
user_pref("extensions.webextensions.restrictedDomains","");//元はaccounts-static.cdn.mozilla.net,accounts.firefox.com,addons.cdn.mozilla.net,addons.mozilla.org,api.accounts.firefox.com,content.cdn.mozilla.net,discovery.addons.mozilla.org,install.mozilla.org,oauth.accounts.firefox.com,profile.accounts.firefox.com,support.mozilla.org,sync.services.mozilla.com



/*■■■■■ ■■■■■ 以下、タブ関係 ■■■■■ ■■■■■*/
//●最後のタブを閉じてもウィンドウを閉じない
user_pref("browser.tabs.closeWindowWithLastTab", false);


//●検索ボックスでの検索時に結果を新しいタブで開く
user_pref("browser.search.openintab", true);


//●「タブ」の切り離し(分離)を無効
user_pref("browser.tabs.allowTabDetach", false);


//●全タブ自動読み込みを無効
user_pref("browser.sessionstore.restore_on_demand", true);


//●ブックマークを新しいタブで開く
user_pref("browser.tabs.loadBookmarksInTabs", true);


//●アクティブでないタブをアンロードしてシステムのメモリーを節約する
//■2026.7.5■※●WordPress編集で使っているFirefox通常版のみ、「flase」から「true」に変更
user_pref("browser.tabs.unloadOnLowMemory", true);


//●別ウィンドウで開く を 新しいタブで開くに変更、つまりbrowser.link.open_newwindowの設定に従う
user_pref("browser.link.open_newwindow", 3);
user_pref("browser.link.open_newwindow.restriction", 0);


//●タブのプレビューを無効
user_pref("browser.tabs.hoverPreview.enabled", false);


//●タブ上でマウスホイールのスクロールでタブ切り替え
user_pref("toolkit.tabbox.switchByScrolling", true);


//●「タブをタスクバーに追加します」を無効にする
user_pref("browser.taskbarTabs.enabled", false);


//●Tab Mix Links用
user_pref("browser.link.open_newwindow", 3);
user_pref("browser.link.open_newwindow.override.external", 3);
user_pref("browser.link.open_newwindow.restriction", 2);
user_pref("browser.tabs.opentabfor.middleclick", true);
user_pref("browser.altClickSave", false);


//●たまに勝手に「履歴:履歴を一切記憶させない」になる対策
user_pref("browser.privatebrowsing.autostart", false); // これがtrueだと「履歴を一切記憶させない」モードになるらしい
user_pref("places.history.enabled", true); // 履歴機能自体の有効化
user_pref("privacy.sanitize.sanitizeOnShutdown", true); // 終了時のデータ消去機能を有効化
user_pref("privacy.clearOnShutdown.history", false); // 終了時に履歴をクリアしない
user_pref("privacy.clearOnShutdown.sessions", false); // 終了時にセッションをクリアしない
user_pref("privacy.clearOnShutdown.cache", true); // 終了時にキャッシュをクリア
user_pref("privacy.clearOnShutdown.formdata", true); // 終了時にフォーム履歴をクリア

 

 

■AboutAddonsPlus●改●.uc.js
※アドオンのバージョンを表示するユーザースクリプト

// ==UserScript==
// @name         Show addon details in about:addons
// @include      about:addons
// ==/UserScript==

(function() {
    const lazy = {};
    ChromeUtils.defineESModuleGetters(lazy, {
        AddonManager: "resource://gre/modules/AddonManager.sys.mjs"
    });

    function show() {
        const addons = document.querySelectorAll(".addon-name");
        for (let addon of addons) {
            // すでにバージョン情報が追加されている場合はスキップ
            if (addon.nextElementSibling && addon.nextElementSibling.classList.contains("addon-version-info")) {
                continue;
            }

            const aTag = addon.tagName === "A" ? addon : addon.querySelector("a");
            const href = aTag?.getAttribute("href");
            
            if (!href || !href.startsWith("addons://detail/")) continue;

            const addonId = href.slice("addons://detail/".length);
            if (addonId) {
                lazy.AddonManager.getAddonByID(decodeURIComponent(addonId)).then(result => {
                    // result が null の場合(userChrome.js製スクリプトなど)の安全なガード
                    if (!result || !result.version) return;

                    if (addon.nextElementSibling && addon.nextElementSibling.classList.contains("addon-version-info")) {
                        return;
                    }

                    const {version} = result;
                    const info = document.createElement("span");
                    info.className = "addon-version-info";
                    info.style.fontSize = "smaller";
                    info.style.fontStyle = "italic";
                    info.style.marginInlineEnd = "8px";
                    info.textContent = `${version}`;
                    
                    addon.insertAdjacentElement("afterend", info);
                }).catch(err => {
                    // userChrome.jsスクリプト等のエラーは無視する
                });
            }
        }
    }

    document.addEventListener("view-loaded", show);
    
    const observer = new MutationObserver(() => {
        show();
    });
    
    if (document.body) {
        observer.observe(document.body, { childList: true, subtree: true });
    } else {
        document.addEventListener("DOMContentLoaded", () => {
            observer.observe(document.body, { childList: true, subtree: true });
            show();
        });
    }

    show();
}());

 

 

■Firefox_ToolBarButtons●改●.uc.js
何故かコードを正常に貼ることができないので、 → Firefox_ToolBarButtons●改●.uc.jsをダウンロード

「■独自追加■」ボタンを2つ追加しました。

 

※firefox用スクリプトアップローダーにあった Firefox_ToolBarButtons.uc.js を少し改造して、

  • 読み込み中止 (現在のタブの読み込みを中止)
  • タブを閉じる (現在のタブを閉じる)

「■独自追加■」ボタンを2つ追加しました。

 

「ツールバーをカスタマイズ」からボタンを追加します。

 

アドオンの

でも代用可能かと思います。

 

 

■OpenWith_1.2.1c.uc.js●改●.uc.js
※リンクを別のブラウザで開くメニューをコンテキストメニューに追加するユーザースクリプト

// ==UserScript==
// @name			OpenWith
// @description			現在のページと選択したリンクを別のブラウザで開くメニューをコンテキストメニューに追加します。
// @version			1.2.1c  143+
// @version			2025/09/16
// @author			y2k
// @include			main
// @charset			UTF-8
// @namespace			https://egg.5ch.net/test/read.cgi/software/1741415944/492,493
// @note			アプリケーションアイコンを表示
// @note			.uc.jsに書き換え

// ==/UserScript==
(function() {
"use strict";
/*
	使う前にここを自分の環境にあわせて変更(\は\\に置換)
	引数を渡す場合は以下のようにする
		C:\\Program Files\\Internet Explorer\\iexplore.exe<>$1^^引数^^引数
			※$1はURLに変換される
*/
const BrowserPath = {
	"■Firefox":	"C:\\Program Files\\Mozilla Firefox\\firefox.exe",
	"Firefox(プライベートウィンドウ)":	"C:\\Program Files\\Mozilla Firefox\\firefox.exe<>-private-window^^$1",

	"■Firefox Developer Edition":	"C:\\Program Files\\Firefox Developer Edition\\firefox.exe",
	"Firefox Developer Edition(プライベートウィンドウ)":	"C:\\Program Files\\Firefox Developer Edition\\firefox.exe<>-private-window^^$1",

	"■Firefox Nightly":	"C:\\Program Files\\Firefox Nightly\\firefox.exe",
	"Firefox Nightly(プライベートウィンドウ)":	"C:\\Program Files\\Firefox Nightly\\firefox.exe<>-private-window^^$1",

//●	"●削除した●Waterfox G系":	"C:\\Program Files (x86)\\Waterfox-G\\waterfox.exe<>$1^^-no-remote^^-p^^default-G4",
//●	"●削除した●Waterfox Classic":	"Z:\\Waterfox\\waterfox.exe",

	"■Chrome":	"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
	"Chrome(シークレットウィンドウ)":	"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe<>$1^^-incognito",

	"■Microsoft Edge":		"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe",
	"Microsoft Edge(inprivateウィンドウ)":	"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe<>$1^^--inprivate",

//●	"●入れてない●Opera":	"C:\\Users\\●ほにゃらら●\\AppData\\Local\\Programs\\Opera\\opera.exe",
};

const FlatMenu = false;

const OpenWith = {
	start: function() {
		const cm = document.getElementById("contentAreaContextMenu");
		cm.addEventListener("popupshowing", function(e) {
			if (e.target == this) { OpenWith.onpopup(e); }
		}, false);
	},

	createMenu: function() {
		if (this.pageItem || this.linkItem) {
			return;
		}

		const contextMenu = document.getElementById("contentAreaContextMenu");
		const pageMenu = this.$C("menu", { id: "context-open-with-page", label: "このページを..." });
		contextMenu.insertBefore(pageMenu, contextMenu.querySelector(":scope > #context-bookmarkpage, :scope > #context-savepage"));

		const linkMenu = this.$C("menu", { id: "context-open-with-link", label: "リンクを..." });
		contextMenu.insertBefore(linkMenu, contextMenu.querySelector(":scope > #context-sep-open"));

		this.pageItem = this.createMenuItem(pageMenu, "openPage", FlatMenu? "$1 でこのページを開く": "$1 で開く");
		this.linkItem = this.createMenuItem(linkMenu, "openLink", FlatMenu? "$1 でリンクを開く": "$1 で開く");
	},

	createMenuItem: function(menu, method, format) {
		const frag = document.createDocumentFragment();

		let menuitem = [];
		for (let i of Object.keys(BrowserPath)) {
			const item = this.$C("menuitem", {
				label:	format.replace("$1", i),
				class:	"menuitem-iconic",
				image: "moz-icon:file:///" + encodeURI(BrowserPath[i].split("<>")[0] + "?size=16"),
/*
				image: "moz-icon:file:///" + encodeURIComponent(BrowserPath[i].split("<>")[0]) + "?size=16",
*/
				value:	JSON.stringify([ method, i ]),
			});
			item.addEventListener("command", this, false);

			frag.appendChild(item);
			menuitem[menuitem.length] = item;
		}

		if (!FlatMenu) {
			const menupopup = this.$C("menupopup");
			menupopup.appendChild(frag);
			menu.appendChild(menupopup);
			menuitem = [ menu ];
		}
		else {
			const parent = menu.parentNode;
			parent.insertBefore(frag, menu);
			parent.removeChild(menu);
		}

		return menuitem;
	},

	$C: function(tag, attrs) {
		const elem = document.createXULElement(tag);
		if (attrs) {
			for (let key of Object.keys(attrs))
				elem.setAttribute(key, attrs[key]);
		}
		return elem;
	},

	onpopup: function(e) {
		this.createMenu();

		const isHtml = /^(https?|file):/.test(gBrowser.currentURI.spec);
		const pageItemHidden = !isHtml || gContextMenu.onLink || gContextMenu.onTextInput;
		const linkItemHidden = !isHtml || !gContextMenu.onLink || gContextMenu.onTextInput;

		const pageItem = this.pageItem;
		for (let i = 0, l = pageItem.length; i < l; i++) {
			pageItem&#91;i&#93;.hidden = pageItemHidden;
		}
		const linkItem = this.linkItem;
		for (let i = 0, l = linkItem.length; i < l; i++) {
			linkItem&#91;i&#93;.hidden = linkItemHidden;
		}
	},

	handleEvent: function(event) {
		if (event.type === "command") {
			const &#91; method, key &#93; = JSON.parse(event.originalTarget.getAttribute("value"));
			const url = method === "openPage"? gBrowser.currentURI.spec: gContextMenu.linkURL;
			this.launch(BrowserPath&#91;key&#93;, url);
		}
	},

	launch: function(browserPath, openURL) {
		let &#91; path, args &#93; = browserPath.split("<>");
		if (args) {
			args = args.split("^^").map(a => a.replace("$1", openURL));
		} else {
			args = [ openURL ];
		}

		const file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
		file.initWithPath(path);

		const process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
		process.init(file);
		process.run(false, args, args.length, {});
	},
};

OpenWith.start();

})();

 

リンクの上で右クリックして表示されるブラウザの種類は、ご自身の環境にあわせて削除・修正してお使いください

 

リンクの上で右クリックして表示されるブラウザの種類は、ご自身の環境にあわせて削除・修正してお使いください。

 

 

■タブをダブルクリックでリロードv2●改●.uc.js

(function(){

//●元●Firefox:バージョン126未満およびWaterfox:バージョンG6.0.16(たぶん全Wateffox)はこっちじゃないと機能しない●gBrowser.tabContainer.addEventListener("dblclick", function(e){if(!!e.target.closest('.tabbrowser-tab'))BrowserReload()},false)

//●Firefox:バージョン126以降はこっちじゃないと機能しない●
gBrowser.tabContainer.addEventListener("dblclick", function(e){if(!!e.target.closest('.tabbrowser-tab'))BrowserCommands.reload()},false)
})()

 

以上です。
もし使う場合は、各ファイル私のほうで色々手を入れていますので、(お好みの表示・挙動にならない場合は)各ファイルをご自身の環境にあわせて修正し自己責任でお使いください。

 

 

 

以下は興味がある場合以外は読む必要はありません。

   

【参考】多段タブの導入手順が色々ある件について

ネットで色々調べているとFirefoxの多段タブに関して導入手順が色々なやり方があります。

 

主に、

  • 【やり方その1】シンプルでxPref.sys.mjsが不要(当サイトはこれ)
  • 【やり方その2】高機能というかxPref.sys.mjsが必要
  • 【やり方その3】やり方その2よりも、さらに色々ファイルが必要

と3パターンあり、ネットの情報はゴチャゴチャです。

 

■注意■
後述のやり方その1その2その3では導入手順によって

  • MultiRowTabLiteforFx.uc.jsのコードは異なります。
  • userChrome.jsのコードは全く異なります。
  • userChrome.cssのコードは同じで大丈夫な気がします。
 

やり方その3はおすすめしませんので、やり方その1その2の比較を表にしました。

 

■■■やり方その1・その2の比較■■■

■やり方その1
シンプル・軽量・最小構成。
多段タブ等の基本機能のみならこれで十分。

 

■やり方その2
汎用性・拡張性重視。
複数スクリプトや依存関係管理に強い。
高機能・設定管理も可能。

 
やり方その1
(当サイトはこれ)
やり方その2
userChrome.cssほぼ同じでOK
(多少追記・微調整があっても基本同じ)
ローダー構成userChrome.js単体
(chrome直下)
userChrome.js+xPref.sys.mjs等
(chrome/utils)
userChrome.js全く違う
(読み込み方法も目的も違う)

全く違う
(ローダー仕様)
userChrome.jsの動かし方直接ロードローダー経由でロード
やり方その1やり方その2
utilsフォルダ必要か?不要必要
chrome.manifest必要か?不要必要
xPref.sys.mjs必要か?不要必要
(設定管理に使用)
やり方その1やり方その2
MultiRowTabLiteforFx.uc.js違う
(シンプル版)
違う
(高度版)
 

やり方その1:シンプル・軽量※xPref.sys.mjsは不要

当サイトの多段タブの導入手順です、というか

https://github.com/alice0775/userChrome.js

のuserchrome.jsのインストール方法 方法 その1 と同じです。

 

つまり当サイトの多段タブの導入方法はAlice0775さんの「userchrome.jsのインストール方法 方法 その1」に準拠しています。

私は元々は firefox用スクリプトアップローダー の「多段タブ.zip」を使っていましたが、

  • バージョン144まで:上記「多段タブ.zip」の更新が途絶えたので仕方なく自分で修正して使っていました。
  • バージョン145:上記「多段タブ.zip」ではうまくいかないので、Izheil氏のMultiRowTabLiteforFx.uc.jsを元に、必要な箇所を日本語訳 & 必要に応じてコード修正しました。
 

【インストールファイルおよびインストール場所】
C:\Program Files (x86)\Mozilla Firefox\config.js
C:\Program Files (x86)\Mozilla Firefox\defaults\pref\config-prefs.js
および
プロファイルフォルダ\chrome\userChrome.css
プロファイルフォルダ\chrome\userChrome.js
プロファイルフォルダ\chrome\MultiRowTabLiteforFx.uc.js

 

プロファイルフォルダ
C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles
の場所は
Winキー + Rで、%appdata%\Mozilla\Firefox\Profiles\ と入力してエンター
で開けます。

 

やり方その1は比較的シンプル・軽量な導入手順です。

 

やり方その1はuserChrome.jsがローダーとして機能し、このuserChrome.jsが同じchromeフォルダ内にある「ほにゃらら.uc.jsファイル」(例、MultiRowTabLiteforFx.uc.js)を探して実行します。

 

最近のFirefoxではconfig.js と config-prefs.js の設定のみでuserChrome.js をブラウザ起動時に認識・実行させるようになっているため、追加で utils フォルダや chrome.manifest は不要です。

 

つまりuserChrome.js 自体が自己完結していて、やり方その2その3のように他のライブラリ(xPref.sys.mjsなど)に依存していません。

 

また、やり方その1で使用されているMultiRowTabLiteforFx.uc.jsは単体で動作するように設計されています。
やり方その1のMultiRowTabLiteforFx.uc.jsは、xPref.sys.mjsや他のモジュールに依存しません。

 

やり方その2:高機能?※xPref.sys.mjsが必要

https://github.com/alice0775/userChrome.js

の「userchrome.jsのインストール方法 方法 その2」と同じやり方というか

GitHub - xiaoxiaoflood/firefox-scripts: userChromeJS / autoconfig.js and extensions
userChromeJS / autoconfig.js and extensions. Contribute to xiaoxiaoflood/firefox-scripts development by creating an acco...

のやり方です。

 

やり方その2は

Quantum-Nox-Firefox-Customizations/Multirow and other functions at master ?? Izheil/Quantum-Nox-Firefox-Customizations
Customizations for Firefox. You can add extra functions using the CSS and JS files here. - Izheil/Quantum-Nox-Firefox-Cu...

を参考にしたやり方みたいですが、やり方その2がxPref.sys.mjsが必要なのは、おそらく1番の大元は

GitHub - xiaoxiaoflood/firefox-scripts: userChromeJS / autoconfig.js and extensions
userChromeJS / autoconfig.js and extensions. Contribute to xiaoxiaoflood/firefox-scripts development by creating an acco...

かと思います。

 

【インストールファイルおよびインストール場所】
C:\Program Files (x86)\Mozilla Firefox\config.js
C:\Program Files (x86)\Mozilla Firefox\defaults\pref\config-prefs.js
および
プロファイルフォルダ\chrome\userChrome.css
プロファイルフォルダ\chrome\MultiRowTabLiteforFx.uc.js
および
プロファイルフォルダ\chrome\utils\chrome.manifest
プロファイルフォルダ\chrome\utils\userChrome.js(旧:userChrome.jsm)
プロファイルフォルダ\chrome\utils\xPref.sys.mjs(旧:xPref.jsm)


 

やり方その2はchrome\utils\フォルダ内のuserChrome.jsがローダーの中心的な役割を果たしますが、chrome.manifestやxPref.sys.mjsと連携して動作します。

 

chrome.manifestはFirefoxにスクリプトやモジュールを認識させ、読み込ませるための設定ファイルです。

 

xPref.sys.mjsは主に特権的な設定 (Preferences) へのアクセスを提供するモジュールです。通常のabout:configでは変更できないようなFirefoxの内部設定を読み書きするために使われます。
特に多段タブ以外に様々な機能を同時に導入するためにxPref.sys.mjsが必要です。

 

やり方その2は多段タブ以外の色々な機能も導入する時の手順で、多機能になるぶん複数のモジュールを読み込む必要があります。
chrome.manifestを使うやり方その2では(やり方その1と比べて複雑になる代わりに)各スクリプトをモジュール化し管理しやすくするための比較的新しい・高機能なアプローチ方法です。

 

やり方その3:やり方その2より多くのファイルが必要

https://github.com/Merci-chao/userChrome.js#multi-tab-rows
【インストールファイルおよびインストール場所】

C:\Program Files (x86)\Mozilla Firefox\config.js
C:\Program Files (x86)\Mozilla Firefox\defaults\pref\config-prefs.js
および
プロファイルフォルダ\chrome\userChrome.css
プロファイルフォルダ\chrome\MultiRowTabLiteforFx.uc.js
および
プロファイルフォルダ\chrome\utils\chrome.manifest
プロファイルフォルダ\chrome\utils\userChrome.js(旧:userChrome.jsm)
プロファイルフォルダ\chrome\utils\xPref.sys.mjs(旧:xPref.jsm)
および
プロファイルフォルダ\chrome\utils\BootstrapLoader.js
プロファイルフォルダ\chrome\utils\RDFDataSource.sys.mjs
プロファイルフォルダ\chrome\utils\RDFManifestConverter.sys.mjs

 

やり方その3の手順はやり方その2より複雑というか、さらに高度なカスタマイズをサポートするために追加のモジュール(BootstrapLoader.js、RDFDataSource.sys.mjsなど)を使用しています、らしいです。
これらはFirefoxの内部APIやリソース管理を操作するためのもので、通常の多段タブ実装には不要です。

 

追加するファイルが増えるほどバージョンアップ時の不具合の確率も増えるため、やり方その1またはその2を選ぶのが安全・無難です。

 

以下、AIの回答です。

 

■やり方その3に関するAIの回答
AIにやり方その3について複数のAIに質問したら「特殊ケース以外では非推奨」との回答で、「特殊ケースって具体的に何?」とさらに質問したところ、
1.レガシーなFirefoxフォークの使用
2. 企業内レガシーシステムの維持
3. 歴史的なカスタマイズの継承
とのことです。

 

ここで言う「レガシーなFirefoxフォーク」とは、

  • 古いバージョンのFirefox
  • 古いバージョンのFirefoxの派生
の意味で、超古いバージョンのFirefoxおよびWaterfox・Pale Moon・Floorpなどのことです。

 

■■■やり方その3(RDF系?)■■■

項目詳細
メンテナンスコストRDF関連モジュールの開発が2010年代で停止しており、知識・ドキュメントが枯渇
互換性崩壊Firefox 102以降、XPCOM/RDF関連APIが段階的に削除されている
セキュリティ脆弱性非サポート技術の継続利用によるゼロデイ脆弱性のリスク上昇
 

■やり方その3が必要となる「特殊ケース」は、技術的レガシーがビジネス/運用上やむを得ない環境に限定されます。
2025年現在、一般ユーザーが方法3を選択するメリットはほぼなく、レガシー技術依存からの脱却が最優先課題と言えます。

以上はあくまで複数AIの回答のまとめです。

 

なお、上記AIの回答では、

  • Waterfox・Pale MoonなどのレガシーなFirefoxの場合はやり方3で多段タブが導入できる

とのことですが、そもそもやり方1でもWaterfoxで多段タブが導入可能です。

 

 

 

 

MultiTabRows@Merci.chao.uc.js について

■2025.7.24 追記■

以下、無駄に長文が続きます。
■2025.7.30 追記■ ごっそり削除しました。
ご興味ある方のみお読みください。

 

MultiRowTabLiteforFx.uc.js を使い続ける方には不要な内容です。

■2025.7.30 追記■
日本語での紹介ページができたそうです。

https://github.com/Merci-chao/userChrome.js/blob/main/README.jp.md
このコメント付近に私が書きました返信内容

何度もご紹介いただいて恐縮ですが、【やり方その3】ですね。



古いバージョンのFirefox用のやり方で、・・・

は、やり方次第では私の間違いでした。

 

多段タブの導入手順に関して、当サイトの考え方としては
やり方その3

https://github.com/Merci-chao/userChrome.js#multi-tab-rowsq

の導入手順はセキュリティ上オススメしませんが、上記ページとは違う導入手順で MultiTabRows@Merci.chao.uc.js 自体は導入できるみたいです。

 

つまり、
導入済みの「MultiRowTabLiteforFx.uc.js」を「MultiRowTabLiteforFx.uc.js.txt」とかにファイル名を変更する

MultiTabRows@Merci.chao.uc.js を追加

Firefoxを再起動

 

これだけで、MultiTabRows@Merci.chao.uc.js 自体は導入だけはできるみたいです。

 

場合によっては申し訳ありませんでした。

 

後述の手順で MultiTabRows@Merci.chao.uc.js を導入する場合は、現状のMultiRowTabLiteforFx.uc.js と同じレベルのセキュリティをキープしたまま MultiTabRows@Merci.chao.uc.js を導入することが可能です。

 

ここらへん、数百行削除しました。

   

■2025.7.30 追記■(【参考】[email protected] の多段タブを下に移動する

Merci chao様からのご指摘のコメントに従って、

 

私がuser.jsに追記した「間違った」書き方


//●[email protected]用
user_pref("checkUpdate", 0);
user_pref("checkUpdateFrequency", 30);
user_pref("dynamicMoveOverThreshold", true);
user_pref("gapAfterPinned", 0);
user_pref("maxTabRows", 30);

user_pref("spaceAfterTabs", 0);
user_pref("spaceBeforeTabsOnMaximizedWindow", 0);
user_pref("tabsbarItemsAlign", end);
user_pref("tabsUnderControlButtons", 0);

を「正しい」書き方


//●[email protected]用
user_pref("[email protected]", 0);
user_pref("[email protected]", 30);
user_pref("[email protected]", true);
user_pref("[email protected]", 0);
user_pref("[email protected]", 30);

user_pref("[email protected]", 0);
user_pref("userChromeJS.multiTabRows@Merci.chao.spaceBeforeTabsOnMaximizedWindow", 0);
user_pref("[email protected]", "end");
user_pref("[email protected]", 0);

と修正することで

  • ■不具合その1・・・多段タブの表示位置が最上部だけで、変更できない

の件以外は正常になったような気がします。

 

ただし、

user_pref("[email protected]", "end");

でも

user_pref("tabsbarItemsAlign", "end");

でも、どちらを user.js に記述したとしても
 tabsbarItemsAlign:end
は機能していません。

 

userChrome.cssに

/*■■■■■ MultiTabRows @Merci.chao.uc.js専用ここから ■■■■■ */
/*●多段タブをブックマーク ツールバーの下にする● */
#TabsToolbar {
    order: 100 !important;
}

を追記すれば、MultiTabRows @Merci.chao.uc.js でも多段タブをブックマークツールバーの下に移動することができます。

 

■2025.8.18 追記■
この記事内に私が書いたMultiTabRows @Merci.chao.uc.js に関する文章は本当はまだ数百行ありましたが、余計な指摘・誹謗中傷になりかねないので該当箇所はごっそり削除しました。

 

ごっそり削除したままだと意味不明なので、当たり障りない件だけ書きますと

  • 今まで私が使用していた MultiRowTabLiteforFx.uc.js は約4万文字(約900行)程度

であるのに対し、

つまり、Firefoxの挙動をごっそり修正していると思われ、影響範囲が大きいと予想されます。

 

また、

  • MultiRowTabLiteforFx.uc.js だったら userChrome.css で設定していた箇所は、[email protected] の場合は別途 about:config で設定・追加する必要がある。※user.js での設定は非推奨とのことです。

 

 

私のテスト環境(新しいプロファイルかつプラグイン・テーマは一切追加なし)で試した限りでは、バージョン3.3の[email protected] & Firefoxバージョン142にて、「タブの一覧を表示」ボタンを削除すれば多段タブ・ピン留めしたタブともに、たぶん問題なさそうでした。

 

about:configにて tabsAtBottom を「2」にすれば、上記

/*■■■■■ MultiTabRows @Merci.chao.uc.js専用ここから ■■■■■ */
/*●多段タブをブックマーク ツールバーの下にする● */
#TabsToolbar {
    order: 100 !important;
}

の記述も不要です。

 

私は MultiRowTabLiteforFx.uc.js を常用していて MultiTabRows @Merci.chao.uc.js は使っていませんので、この件は以上とさせていただきます。
m(_ _)m

結局どのやり方にすればいいの?

以下、8つのAIに聞いてみた回答のまとめです笑

 

■やり方その1

  • シンプルに多段タブだけを導入したい。
  • 余計な依存関係や複雑な設定を避けたい。
  • 軽量な実装で十分。
 

MultiRowTabLiteforFx.uc.js:依存モジュールなし、シンプルな多段タブ実装。
userChrome.js:単一スクリプトのロードに特化。TabMixPlusとの統合は困難(配置とローダーの違いによる競合)。

 

メリット:導入・設定が簡単、軽量。
デメリット:モダンなスクリプト(例: TabMixPlus)との互換性が低い。

 

■やり方その2

  • 他のカスタマイズ(例: TabMixPlusあるいはxiaoxiaofloodのスクリプト群)と組み合わせて使いたい。
    設定の動的変更(about:config操作)が必要なスクリプトを使用
    例: xiaoxiaofloodリポジトリのスクリプトや、モジュール化された実装を採用。
 

MultiRowTabLiteforFx.uc.js:xPref.sys.mjs依存、設定操作や追加機能を含む。
userChrome.js:複数スクリプトのロードをサポート。TabMixPlusと同居可能。※同じ機能の重複設定に注意

 

メリット:TabMixPlusとの互換性がある。
デメリット:依存モジュールが多く、設定がやや複雑。

 

■やり方その3

MultiRowTabLiteforFx.uc.js:高度なカスタマイズ、複数のモジュール依存。
userChrome.js:モジュール管理を強化。TabMixPlusとも統合可能だが複雑。

 

メリット:柔軟性が高い。
デメリット:依存ファイルが多く、不具合リスクが高い。

 

当サイトの見解の結論としては、

【やり方その1】
単に多段タブ(MultiRowTabLiteforFx.uc.js)だけ導入できれば良い場合
軽量なのが良い場合

 

【やり方そ2】
多段タブ(MultiRowTabLiteforFx.uc.js)とTabMixPlusを併用したい場合

ということになります。

 

当サイトのやり方は、やり方その1です。

 

やり方その1については、このページのやり方を参考にというか、このページにある各種ファイルをダウンロードして適切な配置をすれば超簡単かと思います。

 

やり方その2については、

https://github.com/alice0775/userChrome.js

のREADMEの箇所の「userchrome.jsのインストール方法 方法 その2」を参考に、各種導入してみてください。

 

【注意】多段タブとTabMixPlusを併用する場合

【多段タブのやり方その1】
多段タブのやり方その1ではuserChrome.jsの設定場所が
 プロファイルフォルダ\chrome\userChrome.js
です。

 

例、
C:\Users\●ユーザー名●\AppData\Roaming\Mozilla\Firefox\Profiles\●プロファイル名●\chrome\userChrome.js

 

【多段タブのやり方その2】および【TabMixPlus】
TabMixPlusおよび多段タブのやり方その2では
 プロファイルフォルダ\chrome\utils\userChrome.js
です。

 

つまり

【多段タブのやり方その1】:プロファイルフォルダ\chrome\userChrome.js
【多段タブのやり方その2】および【TabMixPlus】:プロファイルフォルダ\chrome\utils\userChrome.js

となります。

 

多段タブとTabMixPlus

GitHub - onemen/TabMixPlus: New Tab mix plus for modern Firefox
New Tab mix plus for modern Firefox. Contribute to onemen/TabMixPlus development by creating an account on GitHub.

の両方を併用したい場合は、多段タブのやり方その1では無理です。
やり方その2なら併用可能ですが注意が必要です。

 

■注意■
やり方その2なら多段タブとTabMixPlusを併用可能ですが、どちらもタブに関する機能が複数含まれていますので、同じ機能を両方で設定すると不具合のもとになる可能性が高いので注意が必要です。

 

読み込ませる各ファイルをファイラで開いてみて、まるっきり内容を理解することが難しい場合は、どちらか片方にしておくほうが無難です。

 

私は多段タブのやり方その1 + Tab Mix - Links

Tab Mix - Links – 🦊 Firefox (ja) 向け拡張機能を入手
Firefox 向け Tab Mix - Links をダウンロード。Tab browsing with an added boost.

です。

 

【番外編】Waterfoxについて

■Waterfoxについて■

2025.4.8時点で

  • Waterfox:6.5.6

なんですが、いつの間にかMultiRowTabLiteforFx.uc.js以外はFirefoxと同じで大丈夫になっていました。
多段タブはうまく機能していませんが、もうWaterfoxは使ってないので放置です。

 

放置するのも気になるので、
 Waterfoxのバージョン6.5.6はFirefoxで言うバージョンいくつなのか
ググって解決しました。

 

Waterfox G6.5.xシリーズは開発ブランチとしてはFirefox ESR 128への移行を進めているものの、G6.5.6時点での安定版リリースにおいてはFirefox ESR 115系のセキュリティアップデート (ESR 115.12.0相当) を取り込んでいる・・・みたいです。

 

firefox用スクリプトアップローダー内の「多段タブ.zip」
を検索して、
 日付:未確認
 コメント:Firefox128esr「MultiRowTabLiteforFx.uc.js」多段タブのスクリプトが(ry
の「多段タブ.zip」がWaterfoxのバージョン6.5.6でちゃんと動くことを確認しました。

   

私の環境では多段タブ・多段ブックマークツールバー・サイドバーの自動開閉の全て正常に動いていますが、私はもうWaterfoxは使っていませんので、もし今後Waterfoxで多段タブが動かなくなっても放置するかもしれません。
m(_ _)m

 

■追記■

【たった1クリックのミス】Windows11再インストールの備忘録
文字通りたった1クリックミスっただけでWindows11が起動できなくなり、どうにか復旧しようと2日間いろいろ頑張ったもののダメで、最終的にこの2日間のうちに Cドライブ(NVMe M.2 SSD) Dドライブ(Cドライブとは別のNVMe ...

にてクリーンインストールしたので、もう私のパソコンにはWaterfoxは入ってないです。

 

自分用メモ

インストールしているアドオン等については、「【たった1クリックのミス】Windows11再インストールの備忘録」のその他各種設定 → その他 → Firefox の箇所にとまとめてありますん!

 
この記事を書いた人

kaimonojyoz

Firefoxはかれこれ15年以上使っていて、Firefoxなしでは生きていけない体になってしまいました笑

 

アクアリウムは海水水槽のサンゴを全滅させた黒歴史からモチベーションがほぼゼロとなり、今に至ります。

 

1番長く生きてるお魚はカクレクマノミとゴールドナゲットマロンで、もうすぐ10年になります。

guest

22 Comments