「Firefox」カテゴリーアーカイブ

Googleの検索結果にサムネイルを追加していくユーザースクリプト Part2

google_thumbnail_2

open.thumbshots.org のサムネイルを追加するやつ が使えなくなったりしたので修正したものです。
色々調べてたら似たようなAdd-onsあります。むしろそっちをおすすめします。

動作確認
スクリプトの適当な説明
  • 検索結果の左側に112×82ぐらいの画像を表示
  • AutoPagerizeの2ページ目以降もどんどんサムネ追加
  • Amazonの場合はサムネじゃなくって商品画像を読み込む(一部画像でない)
  • Youtubeの場合は動画サムネを読み込む(一部画像でないかも)
  • ニコニコ動画の場合も動画サムネを読み込む(一部でない)
  • Chromeでも一応動く(要Tampermonkey)
  • Safariでも一応動くかもしれない(要NinjaKit)
  • もしかしたらBing検索でも表示される

ダウンロード: google_search_thumbnail.user.js
GitHub: google_search_thumbnail.user.js
NinjaKitで管理する場合は Scripts→Add new script→スクリプト貼り付け→Saveで保存 (間違ってるかもしれません)

最近の修正内容とか

Firefoxの「すべての表示したページの履歴」を1発で消す.uc.xul

ucjs_clear_history

動作確認

キャッシュを消すやつ作ってたらこれもあったらいいんじゃないかってことです。
「表示したページの履歴」としてますが「ダウンロード履歴」も消えます。わりと適当です。

あと履歴が多いと消すのに時間が掛かってFirefoxが固まります。

ダウンロード: clear_all_page_history.uc.js for Firefox 27

ダウンロード: clear-all-history-fx50.uc.xul for Firefox 50

  • 2017.01.05 Firefox 50でも動くように書き直し
<?xml version="1.0" encoding="UTF-8"?>
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript"><![CDATA[
var ucjsHistoryClear = function() {
    try {
        PlacesUtils.history.clear();
    } catch (e) {
    }
}
]]></script>
<menupopup id="menu_ToolsPopup">
    <menuitem id="menu_ucjsHistoryClear"
              label="表示したページの履歴を消去"
              oncommand="ucjsHistoryClear()"/>
</menupopup>
</overlay>

セキュアなサイトでURLバーの背景色を変えるやつ.uc.js

動作確認

緑色の鍵マーク表示するだけじゃ分かりづらい!
と感じてuserChrome.cssである程度指定できていたのがFirefox 38あたりから使えなくなったので、鍵アイコン(identity-box)と同じような属性持ってきてCSSで背景色を変更してます。
XPCOMなのでそのうち使えなくなります。

HTTPS: 青っぽくする
url_ssl

HTTPS (EV SSL): 緑っぽくする
url_evssl

混在コンテンツ: 黄色っぽくする
url_mixed

ダウンロード: secure-site-urlbar-color.uc.js

// テーマによっては変になるかもしれないのでこの部分の色を変更するといいかもしれない
var colors = {'insecure': '#fff', 'secure': '#def0f7', 'ev': '#def2d7', 'broken': '#ffffdd'},

検索バーのマウスホイールスクロールで検索エンジンを切り替えるやつ.uc.js

wheel_search

動作確認

検索バー上のホイールスクロールで検索エンジン切り替えるだけです。
Firefox 43以降では検索エンジンのアイコンも変えるようにしてます。

ダウンロード: wheelscroll-to-change-search-engine.uc.js
GitHub: wheelscroll-to-change-search-engine.uc.js

中止ボタンがXboxのアレに見えて困る

xbox_no_are

何を馬鹿な、きっと疲れてるんですよ。
あ、すいません…… しいたけのぱくりですwww

というノリで作ったやつを4年ぶりに更新してFirefox 43以降でも使えるよう署名付けました。

Firefox 43で確認。
インストール: xbox_no_are-1.1.1-fx.xpi

※アドオン形式にしましたがStylishやuserChrome.cssだけでいけます。

UserScriptLoader.uc.jsの@requireが動かない

@requireでjQueryやunderscore.jsを読み込んでるユーザースクリプトを使うとき、requireディレクトリにキャッシュがない場合、saveURI()で失敗するようになってます。
調べるとFirefox 36以降でパラメータが増えてるのが原因っぽいです。

void saveURI(
  in nsIURI aURI,
  in nsISupports aCacheKey,
  in nsIURI aReferrer,
  in long aReferrerPolicy,
  in nsIInputStream aPostData,
  in string aExtraHeaders,
  in nsISupports aFile,
  in nsILoadContext aPrivacyContext
);

ということで wbp.saveURI(uri, null, null, null, null, aFile, null); となってる箇所の4番目(in long aReferrerPolicy)に null を追加すると保存されます。

	wbp.persistFlags = Ci.nsIWebBrowserPersist.PERSIST_FLAGS_BYPASS_CACHE;
	wbp.persistFlags |= Ci.nsIWebBrowserPersist.PERSIST_FLAGS_AUTODETECT_APPLY_CONVERSION;
	wbp.saveURI(uri, null, null, null, null, null, aFile, null);
	USL.debug("getContents: " + aURL);

同じようにメニューのSave Scriptをクリックしたときに保存できないのもsaveURIのパラメータが足りないからです。
こんな感じで null 追加。

			var loadContext = win.QueryInterface(Ci.nsIInterfaceRequestor)
				.getInterface(Ci.nsIWebNavigation)
				.QueryInterface(Ci.nsILoadContext);
			wbp.saveURI(uri, null, uri, null, null, null, fp.file, loadContext);

XPCOM廃止するとか言ってんのに今さら仕様変更すんなよ……。

Firefoxのブックマークツールバーにあるフォルダをマウスオーバーで開くだけ.uc.js

動作確認

フォルダ開くのに1クリックすら面倒くさい。
そんな感じでしたがマウスオーバーで開くと逆に鬱陶しく感じるようになって使ってないので動作確認しただけです。

ダウンロード: mouseover-open-bookmark-folder.uc.js
GitHub: mouseover-open-bookmark-folder.uc.js

「キャッシュを消す」メニューを追加する (Firefox 34, HTTP cache v2).uc.xul

clear-cache-v2

動作確認

2014年8月ぐらいにHTTP cache v1 API disabledとなってたようで、以前書いたキャッシュを消すスクリプトだとFirefox 32以降の HTTP cache v2 API (cache2フォルダに保存されてるやつ)に対応できてなかったので作り直しました。

.uc.jsじゃなくて.uc.xulになってますが document.createElement(‘menuitem’) とか書いてるのが面倒臭くなっただけです。

基本機能はツールメニューに「キャッシュを消去」を追加するだけです。

Firefox ESR 31でもabout:configでHTTP cache v2を使うようにすればいけます。

ダウンロード : clear-all-cache-v2.uc.xul
GitHub : clear-all-cache-v2.uc.xul

<script type="application/x-javascript"><![CDATA[
var ucjsCacheClear = function() {
    var cacheSS = Cc["@mozilla.org/netwerk/cache-storage-service;1"].getService(Ci.nsICacheStorageService);
    try {
        cacheSS.clear();
    } catch (e) {
    }
    // Vimperator
    var liberator = document.getElementById("liberator-message");
    if (liberator) {
        liberator.value = 'キャッシュ消去';
    }
}
]]></script>
<menupopup id="menu_ToolsPopup">
    <menuitem id="menu_ToolsCacheClear"
              label="キャッシュを消去"
              accesskey="c"
              oncommand="ucjsCacheClear()"/>
</menupopup>

タブを閉じたとき直前に開いていたタブにフォーカスするだけじゃなくなった.uc.js

動作確認

そんなアドオンあったのですが自分が使いたい動作じゃなかったので作ってるとやたら機能が増えて困ってしまったやつ。

開いたり選択するとタイムスタンプを更新していって閉じたときに直前に開いていたタブにフォーカスするというのが基本動作ですが、未読タブがあるときは未読を優先的にフォーカスします。

追加機能としてタブバー上のShift+マウスホイールでタイムスタンプ順に切り替えます。
ただのマウスホイールで普通に切り替えるアドオンとかありそうなのでShift付きです。

さらに、タブ関係のアドオン入れてなくてどのタブが未読か分からなかったので自前でCSS付け足すことも可能になったり、既読タブにもう一度未読属性付け直したりもできます。
flt-unread
CSSサンプルは未読に赤い線付けるような感じです。テーマによってズレまくるので分かる人向け。
簡単に太字とか色を変える程度でも十分ではと。

prefs.jsで新規タブはバックグラウンドで開くようにしてるので(“browser.tabs.loadInBackground”, true)、未読だけ見たいときにそのタブを開いた順番(ここだけ逆順)にフォーカスしていきます。作り込みが甘いので未読関係のは変な動作するかもしれません。

あと、Session store APIを使ってタイムスタンプ等を保存してるのでFirefoxを閉じてもセッション情報が残ってたらタブを開いた順番や未読も次回に持ち越しできます。

セッションを自動で保存するアドオン Session Manager との併用もたぶん大丈夫っぽいです。

ダウンロード: focus-last-tab.uc.js
GitHub: focus-last-tab.uc.js

最近の修正内容とか

Firefoxのタブバー上ミドルクリックで閉じたタブを元に戻すだけ.uc.js

動作確認

Tab Mix PlusやTab Utilitiesは使ってなくてこの機能だけ欲しかったので。
タブ開きすぎるとクリックする場所がないので「新しいタブを開く」ボタンのミドルクリックでも閉じたタブを復元します。

ダウンロード : middle-click-undo-close-tab.uc.js
GitHub : middle-click-undo-close-tab.uc.js