oflow のすべての投稿

Googleリーダーと同期してくれるスタイリッシュなRSSリーダー「feedly」を微妙に変えるユーザースタイル.css

Googleリーダーの表示方法がどうもぱっとしないと思って他のサービスを探してたところに見つけたのがfeedly (www.feedly.com)。
わりとスタイリッシュでかつ見やすく、各フィードごとに表示形式を記憶してくれるなかなかの優れものです。
Googleリーダーと同期してくれるので移行の手間も省けますしね。

それで使い始めたのですが、右側のウィジットが邪魔だったのでユーザースタイルで変えてしまおうって事です。

以下の様に変えてます。

  • フォントはHelveticaを優先
  • フォントサイズをやや小さめ(基本12px)
  • 右側のウィジットを非表示にしてフィードエントリーを広く表示
  • プレビュー表示[Shift + v]のスタイルを変更(黒ベースから白ベースに)

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain(feedly.com) {
  /* Helvetica */
  h1, h2, div, p, span, a {
    font-family: Helvetica, sans-serif !important;
  }
  /* サイドエリア非表示にする */
  #sideArea {
    display: none !important;
  }
  /* メインエリア広くする */
  #feedlyPart {
    float: none !important;
    padding-right: 0 !important;
    margin-right: 33px !important;
  }
  /* ウィジット非表示にしたからエントリー部分を広く */
  #feedlyPage,
  #mainArea {
    width: auto !important;
    max-width: 100% !important;
  }
  /* 左側のフィード一覧の最後に付け足されたやついらん */
  #tagList + div[style] {
    display: none !important;
  }
  /* Magazine, Timelineの横幅 */
  .u4Entry {
    width: auto !important;
    max-width: 100% !important;
  }
  /* Mosaicの横幅 */
  .u6EntryList {
    margin-right: 0 !important;
  }
  /* Full Articleの横幅*/
  .u100Entry {
    width: auto !important;
  }
  .condensed .inlineFrame {
    padding-left: 30px !important;
    padding-right: 30px !important;
  }
  .inlineFrame {
  }
  .inlineFrame > table {
    width: 100% !important;
    margin-right: -10px !important;
  }

  /* 余計な空白できるので幅狭くする */
  #feedlyTabsHolder.picturePicture {
    width: 240px !important;
  }
  /* フィードタイトルの件数がはしすぎる */
  #feedlyTabs {
    overflow-y: auto !important;
    width: 205px !important;
  }
  /* 打ち消し線やめて */
  #feedlyTabsHolder div.simpleunreadcount {
    text-decoration: none !important;
  }
  /* フィードタイトルのフォントサイズ */
  #feedlyTabs .label,
  #feedlyTabs .feedTitle {
    font-size: 11px !important;
  }
  /* 未読数のフォントサイズ */
  #feedlyTabsHolder .simpleUnreadCount {
    font-size: 11px !important;
    margin-top: 3px !important;
  }
  /* 右側の更新、読んだボタンは常に表示 */
  #feedlyNext {
    visibility: visible !important;
  }
  /* Capitalizeやめて! */
  #feedlyTabs > div:nth-child(2) div[id$="_tab"] .label {
    text-transform: none !important;
  }
  /* Featuredのフォントサイズ */
  .topRecommendedEntry .title {
    font-size: 14px !important;
    line-height: 1.3em !important;
  }
  .topRecommendedEntry .summary {
    font-size: 11px !important;
  }
  /* latestとかのフォントサイズ */
  .u0Entry .title {
    font-size: 12px !important;
  }
  /* 既読エントリーはfont-weight変更 */
  .u0Entry .title.read {
    font-weight: normal !important;
  }
  /* Titlesのフォントサイズ */
  .u1Entry .sourceInfo {
    width: 150px !important;
  }
  .u1Entry .title {
    font-size: 12px !important;
    line-height: 1.3em !important;
  }
  /* Tilesの既読エントリーはfont-weightを変更 */
  .u1Entry .title.read {
    font-weight: normal !important;
  }
  /* Magazine, Timelineのフォントサイズ */
  .u4Entry .title {
    font-size: 14px !important;
    line-height: 1.4em !important;
  }
  .u4Entry .summary {
    font-size: 11px !important;
    line-height: 1.4em !important;
  }
  /* Magazine, Timelineの既読エントリーはfont-weight, colorを変更 */
  .u4Entry .title.read {
    font-weight: normal !important;
  }
  .u4Entry .title.read + .summary {
    color: #888 !important;
  }
  /* Mosaicのフォントサイズ */
  .u6Entry .title {
    font-size: 11px !important;
  }
  /* Mosaicの既読エントリーはfont-weightを変更 */
  .u6Entry .title.read {
    font-weight: normal !important;
  }

  /* Full Articleのフォントサイズ */
  .u100Entry .entryTitle {
    font-size: 16px !important;
    margin-bottom: 0.5em !important;
  }
  .u100Entry .entryBody {
    font-size: 11px !important;
  }
  .u100Entry .title {
    font-size: 16px !important;
    margin-bottom: 0.5em !important;
  }

  /* エントリー内容が短いときに空白ができるのでmin-height小さくする */
  .inlineFrame,
  .u100Entry {
    min-height: 20px !important;
  }
  /* エントリー内容にVisit Websiteはいらない(タイトルクリックか続きを読むで) */
  .itemscope .navButton {
    display: none !important;
  }

  /* 広告らしいエントリー薄くする */
  a[href^="http://rss.rssad.jp/rss/ad/"] {
    opacity: 0.3 !important;
    color: #555 !important;
    font-weight: normal !important;
    font-size: 85% !important;
  }
  a[href^="http://rss.rssad.jp/rss/ad/"] + span {
    opacity: 0 !important;
  }

  /* プレビューアイコンを右上(ゴミ箱の右)に持ってくる */
  .itemscope {
    position: relative !important;
  }
  .itemscope .entryTitle {
    margin-top: 0.4em !important;
  }
  /* ゴミ箱 (非表示) */
  .topWikiWidget div[title^="remove this article"] {
    position: absolute !important;
    top: 0 !important;
    display: none !important;
    right: 0 !important;
    margin-right: 23px !important;
  }
  .topWikiWidget {
    position: absolute !important;
    right: 0 !important;
    top: 0 !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    border-bottom: 0 !important;
  }
  .topWikiWidget div {
    margin-left: 0 !important;
  }
  .topWikiWidget div div div {
    width: auto !important;
  }
  .topWikiWidget .abZone,
  .topWikiWidget .abZone + div + div {
    display: none !important;
  }
  /* プレビューアイコン */
  div.viewerIcon[data-page-entry-action="previewEntry"] {
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
  }
  /* 下のウィジット */
  .bottomWikiWidget,
  .bottomWikiWidget > div {
  }
  .wikiWidgetAction,
  .gplus {
  }
  /* プレビュー表示を白ベースに */
  #quicklookFramePart {
    background-color: #fff !important;
    box-shadow: 0 1px 8px rgba(0, 0, 0, 0.3) !important;
    border-radius: 4px !important;
    border: 1px solid #cfcfcf !important;
    margin-top: -35px !important;
  }
  #quicklookHeader {
    margin-right: 2px !important;
    background-color: transparent !important;
  }
  #quicklookTitle {
    font-weight: bold !important;
    text-transform: capitalize !important;
    color: #444 !important;
  }
  #quicklookActions a,
  #quicklookActions span {
    text-transform: capitalize !important;
    color: #444 !important;
  }
  #quicklookFramePart iframe {
    margin-top: 5px !important;
    border-color: transparent !important;
  }

  /* プレビューのメニューをアイコン化 */
  #quicklookActions {
    margin-top: -2px !important;
  }
  #quicklookActions,
  #quicklookActions .requiresLogin {
    color: #fff !important;
  }
  /* Save For Later */
  #ql_save {
    text-indent: -9999px !important;
    display: inline-block !important;
    background: url(http://s3.feedly.com/production/6.1.403/images/icon-save.png) no-repeat top left !important;
    width: 16px !important;
    height: 16px !important;
    position: relative !important;
    top: 3px !important;
    margin-right: -10px !important;
    opacity: 0.7 !important;
  }
  /* アイコンないので非表示にしとく */
  #ql_share,
  #ql_save {
    display: none !important;
  }
  /* open tab */
  /* アイコンなくなってた… */
  #ql_open {
/*
    margin-right: -10px !important;
    text-indent: -9999px !important;
    display: inline-block !important;
    background: url(https://s3.feedly.com/production/8.0.417/images/ab-actions.png) no-repeat top left !important;
    width: 22px !important;
    height: 22px !important;
*/
  }
  /* close */
  #ql_clode {
/*
    text-indent: -9999px !important;
    display: inline-block !important;
    background: url(https://s3.feedly.com/production/6.1.403/images/viewer-close-60.png) no-repeat top left !important;
    width: 60px !important;
    height: 22px !important;
*/
  }
}

Gmailの広告を消したり等幅フォントにするユーザースタイル.css

そういえばこのユーザースタイル書いてなかったので。
広告消すだけならAdBlockが簡単ですが重くなるので使ってません。

  • 広告を非表示
  • テキストメール本文など等幅フォントに変更
  • メール本文の右側にある送信者一覧を非表示
@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain("mail.google.com") {

  /* ============== フォント ============== */

  /* テキストメール本文 */
  .ii.gt,
  .ii.gt div {
    font-family: monospace !important;
  }
  /* メール入力欄 */
  textarea  {
    font-family: monospace !important;
  }
  /* メールのソース表示 */
  pre {
    font-family: monospace !important;
  }
   /* 印刷する時の本文 */
  body[onload="Print()"] > table table font {
    font-family: monospace !important;
  }

  /* ============== 広告削除 ============== */

  /* メール上部の広告 */
  div[role="main"] > .mq {
    display: none !important;
  }
  /* メール本文右側の広告 */
  .adC > .nH > .aoh,
  .adC > .nH > .nH > .aoh {
    display: none !important;
  }
  /* メール下部の広告 */
  .hx .PS {
    display: none !important;
  }

  /* ============== 不要な部分削除 ============== */

  /* 印刷する時のロゴ */
  body[onload="Print()"] > table:nth-child(1),
  body[onload="Print()"] > table:nth-child(1) + hr {
    display: none !important;
  }
  
  /* メール本文の右カラム(送信者一覧と広告)を全部消して本文を広くする */
  .adC[style^="width: 1"],
  .adC[style^="width: 2"] {
    display: none !important;
  }
}

Yahoo!メールの広告を消すユーザースタイル.css

わりと最近まで使う機会がなかったYahoo!メールの酷すぎる広告をすぱっと消します。
新バージョン(β)、旧バージョンの両方で確認してます。

全然使ってないので消えてないかもしれません。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document domain(mail.yahoo.co.jp) {
  /* 旧バージョン */
  #northbanner,
  #NW_ADS, #LB_ADS, #LCS_ADS,
  iframe#SQB,
  #lbadsbox,
  #lrecad,
  #monad {
    display: none !important;
  }
  /* インタレストマッチっぽいやつ*/
  #showFolderForm + div,
  #LCS_ADS + div,
  #emptyFilter + div,
  .modulecontainer.nomessages + div,
  #homeANEMOSAds,
  a[href^="http://rd.ane.yahoo.co.jp/rd"],
  a[href^="http://rd.ane.yahoo.co.jp/rd"] + p[style^="display:block;"] {

    display: none !important;
  }
  /* 新バージョン */
  div[id="yFlex.8"],
  #homeLclAds,
  #homeLRECAds,
  .mailviewHrbAds,
  .mailviewmonAds,
  .jprskyad {
    display: none !important;
  }
}

Google リーダーのURLを開くアイコンとスターを入れ替えるユーザースタイル.css

Google リーダーのフィードエントリー一覧(リストビュー)で左端にある (スターアイコン)と右端にある (URLを開くアイコン)を入れ替えるユーザースタイル。

マウスで操作してるとき読みたいエントリーをぱぱっと開きたいので位置的に左端のがいいんじゃないかということです。

ついでにList View, Expand View, Snippet Viewでそれぞれ場所が違ったのをそれとなく左端に移してます。

※Googleリーダーもう使ってないのでずれたりするかもです。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url-prefix("http://www.google.com/reader") {

  /* List View */
  /* ☆を右端 */
  .list .entry .entry-icons {
    left: auto !important;
    right: -15px !important;
  }
  /* >> を左端 */
  .entry-original {
    width: 18px !important;
    left: 2px !important;
  }
  /* Expanded View */
  .cards .entry-title-go-to {
    float: left !important;
    margin-left: 0 !important;
    margin-right: 4px !important;
  }
  /* Snippet View */
  .search .entry-original {
    left: 0 !important;
    top: 7px !important;
  }
  .search .entry-main {
    margin-left: 0 !important;
  }
  .search .entry-attribution,
  .search .entry-title,
  .search .entry-secondary-snippet {
    margin-left: 20px !important;
  }
}

今朝の体重 50.7kg

身長172cmぐらいの人の体重・体脂肪率のグラフです。
●が朝(朝食前)、○が夜(夕食後)。
このまま下がり続けて死ぬか。メタボになるかさて。

とりあえずの目標を51.0kgと設定したので破線と目標値との差が表示されてるはず。

2011-10-03 / 50.7kg
2011-09-20 / 50.4kg
2011-09-13 / 49.9kg
2011-09-08 / 49.4kg
2011-09-06 / 49.4kg
2011-09-05 / 48.7kg
2011-09-02 / 49.2kg
2011-08-31 / 49.0kg
2011-08-29 / 49.5kg
2011-08-27 / 49.6kg

Google検索でw3support.netだとかうざいサイトがあったら消すやっつけGresemonkeyスクリプト

動作確認
Firefox 6.0.2 + ユーザースクリプトを実行できるもの
(Scriptish 0.1.4 or Greasemonkey 0.9.11 or UserScriptLoader.uc.js 0.1.6.1)

ja.w3support.netだとかアホみたいな翻訳してるサイトがGoogle検索でよく引っかかってうざいから消そう!
というので作ったんですが他にもどんどん消したいのが出てきたんで増やせるようにしたやつです。

※Googleの仕様が変わるともの凄い勢いでエラーでるかもしれません

ダウンロード : google_search_urlfilter.user.js (Ver.1.0.20110916)

うざそうなURL
w3support.net, efreedom.com, vidtaker.com : あほ翻訳
aucfan.com : オークション見ないので
calamel.jp : 何かきもちわるい

// ==UserScript==
// @name           Google search urlfilter
// @namespace      http://oflow.me/archives/231
// @description    urlfilter for Google search result
// @include        http://www.google.co.jp/search*
// @include        http://www.google.co.jp/webhp*
// @include        http://www.google.co.jp/#
// @include        http://www.google.co.jp/#q=*
// @include        http://www.google.co.jp/#hl=*
// @include        http://www.google.com/search*
// @version        1.0.20110916
// ==UserScript==

(function() {
    // うざそうなURL一覧
    var regexpUrls = [
        /^http://[^.]+.w3support./,
        /^http://[^.]+.efreedom.com/,
        /^http://[^.]+.vidtaker.com/,
        /^http://vidtaker.com/,
        /^http://aucfan.com/,
        /^http://calamel.jp/
    ];
    var length = regexpUrls.length;
    function urlfilter(doc) {
        if (doc.nodeType != 1) return;
        var nodes = document.evaluate('.//a[@class="l"]',
                        doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

        for (var i = 0, node; node = nodes.snapshotItem(i); i++) {
            for (var j = 0; j < length; j++) {
                if (regexpUrls[j].test(node.href)) {
                    var li = node.parentNode.parentNode.parentNode.parentNode;
                    li.parentNode.removeChild(li);
                    break;
                }
            }
        }
    }
    urlfilter(document.body);

    window.addEventListener('unload', function() {
        document.body.removeEventListener('DOMNodeInserted', urlfilter, false);
        window.removeEventListener('unload', arguments.callee, false);
    }, false);
})();

Firefox 4以降のRSS購読ボタンをFirefox 3みたくURLバーにつっこむ.uc.xul

動作確認
Firefox 4, 5, 6.02 + userChromeJS 1.3, 1.4 + Sub-Script/Overlay Loader v3.0.31mod
テーマ: デフォルト, rein

Firefox 4にしてから購読ボタンどこいった!?なんてことになったのでいつもの場所に戻すuserChrome.jsのスクリプトです。
JavaScriptでボタン移動するだけだといつの間にかどっかいってたので、xulでボタン追加に変更しました。
デフォルトテーマ、reinでのみ確認してるので他のテーマでは表示されないなんてことになるかもしれません。

※ xulにしたのでツールバーに購読ボタン表示しなくてもURLバーの中に勝手に追加されます。
※ RSSフィードがないサイトの場合は購読ボタン非表示になってます。
※ 元々ある購読ボタンは押せなくなるはずです。

ダウンロード : feed-button-in-urlbar.uc.xul (Ver.1.0.20110711)

<?xml version="1.0"?>
<!--
// ==UserScript==
// @name           feed button in urlbar
// @namespace      http://oflow.me/archives/310
// @description    RSS購読ボタンをURLバーの中につっこむ
// @compatibility  Firefox 4.0, 5.0, 6.0b1
// @version        1.0.20110711
// ==/UserScript==
//
// Firefox 6以降でdata:text/cssがbase64エンコードでないとアレ
// 見辛いけど解決策わからん
-->
<?xml-stylesheet type="text/css" href="data:text/css;base64,QG5hbWVzcGFjZSB1cmwoaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9rZXltYXN0ZXIvZ2F0ZWtlZXBlci90aGVyZS5pcy5vbmx5Lnh1bCk7DQojdXJsYmFyLWljb25zICNmZWVkLWJ1dHRvbiBkcm9wbWFya2Vye2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30NCiN1cmxiYXItaWNvbnMgI2ZlZWQtYnV0dG9uIC5idXR0b24tYm94e21hcmdpbjowICFpbXBvcnRhbnQ7cGFkZGluZzowICFpbXBvcnRhbnQ7fQ0KI2ZlZWQtYnV0dG9uey1tb3otaW1hZ2UtcmVnaW9uOiByZWN0KDAsIDE2cHgsIDE2cHgsIDBweCkgIWltcG9ydGFudDttaW4td2lkdGg6MTZweCAhaW1wb3J0YW50O21hcmdpbi1yaWdodDoycHggIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7bGlzdC1zdHlsZS1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEVBQVFBUGNBQUFBQUFQLy8vLzkvQVArQUF2K0JBLytCQlArQ0J2K0RCLytEQ1ArRUN2K0ZDLytGRFArR0R2K0hELytJRXYrSkZQK0tGditMRi8rTEdQK01HZitOSFArT0h2K1BILytQSVArUkpQK1NKZitTSnYrVEtQK1VLditWTFArV0x2K1hNUCtZTWYrWU12K1pNLytjT3YrZFBQK2hRLytpUmYralIvK2pTUCtsVFArbVR2K25ULytvVWYrcFUvK3BWUCtxVmYrclYvK3RXLyt0WFArdVhmK3VYdit2WC8rdllQK3dZZit4WS8reVpmK3ladit6Wi8remFQKzBhZiswYXYrMWJQKzJidiszYi8rM2NQKzRjZis0Y3YrNWMvKzVkUCs2ZHYrN2QvKzhlZis4ZXYrOWZQKytmZisrZnYrL2dQL0FnZi9CZy8vQ2hQL0NoZi9DaHYvRGgvL0VpZi9Iai8vSWtmL0lrdi9Kay8vSmxQL0tsZi9LbHYvTm5QL09uZi9PbnYvUG4vL1BvUC9Rb2YvUW92L1JwUC9UcVAvVXFmL1Vxdi9WcS8vVnJQL1p0UC9hdGYvYnQvL2J1UC9jdXYvZHUvL2R2UC9ldnYvZnYvL2d3Zi9ody8vaXhmL28wZi9ObmYvU3AvL1hzZi9ldi8vZndQL2d3Ly9oeFAvaXh2L2p5UC9tenYvbjBQL28wdi8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBQUlNQUxBQUFBQUFRQUJBQUFBanRBQWNKR0Vpd1lNRkJKRXlvZ0dHalI1RWxWYmlNU2JNR2pod0JJVWFVU1BHaUJvOGhTcWhvRVlObXpSc0JHejU0U1pQSHhRd2RRWkpNeVJJR2pSb0JGalFFMkFub1RKc2NRSkJJd2ZMbGpJQUlGZnI0MlJrZ0VCc2NQNDVBdWZKRlFBTUlGREIwd01OVTBBMGZScDVZRVlDQWdadzVkRGlJT0xQVFRvMGVSSndJSUlDQUtaMG1JTXpzWEVOamg1Q0JBNkpzMFJPQUQ1TVBaUUlBYWlFakI4RUJCaFFROXJMRXcwNFVMR0lRZk9JR1NvSTRBZTVrSUJNQXpJa1ZCTjBFY0ZOQVM0QTlGTUFFK0pOd3M1c25BcTRFaVBPZ1M0QTZHUTArUHJEQXdZUUxLUVVJRkE2NXVJU2Nnd0lDQURzPSIpO30NCiN1cmxiYXItaWNvbnMgI2ZlZWQtYnV0dG9uW2Rpc2FibGVkXXtkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7fQ0K"?>
<!DOCTYPE window SYSTEM "chrome://browser/locale/browser.dtd" >
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<hbox id="urlbar-icons">
    <button id="feed-button"
        insertbefore="star-button"
        type="menu"
        style="-moz-user-focus:none;min-width:16px;"
        class="plain urlbar-icon"
        tooltiptext="&feedButton.tooltip;"
        onclick="return FeedHandler.onFeedButtonClick(event);">
        <menupopup id="feed-menu"
            onpopupshowing="return FeedHandler.buildFeedList(this);"
            oncommand="return FeedHandler.subscribeToFeed(null, event);"
            onclick="checkForMiddleClick(this, event);"/>
    </button>
</hbox>
</overlay>

Google検索の左メニューの「もっと見る」とかまどろっこしいので最初から開いておく.css

Google検索用ユーザースタイル。
まぁ、リアルタイム検索なくなったので今はそれほど使ってないんだけど。

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url-prefix(http://www.google.co.jp/),
               url-prefix(http://www.google.com/) {

  /* 広告(上) */
  #tads {
    display: none !important;
  }
  /* 広告(下) */
  #bottomads {
    display: none !important;
  }
  /* 広告(右) */
  #rhs {
    display: none !important;
  }
  /* 広告消すので検索結果広く */
  #center_col {
    margin-right: 0 !important;
  }
  #center_col .g {
    overflow: hidden !important;
  }
  #center_col .s {
    max-width: 70% !important;
  }
  /* +1ボタン要らない */
  /* 
  .esw.eswd {
    display: none !important;
  }
  */
  /* サイドメニュー全部表示 */
  #hidden_modes {
    height: auto !important;
    display: block !important;
  }
  /* もっと見るは非表示*/
  #showmodes {
    display: none !important;
  }
  /* 文字大きすぎ */
  #ms .mitem a,
  #ms .mitem span {
    font-size: 11px !important;
  }
  /* サイドメニューの高さ */
  #ms .mitem {
    line-height: 22px !important;
  }
  /* サイドメニューアイコンの位置 */
  #ms .micon {
    margin-top: 2px !important;
  }
  /* サイドメニュー ウェブ全体から検索とか */
  #tbd ul {
    margin-bottom: 15px !important;
  }
  #tbd li {
    font-size: 11px !important;
  }
}

お名前.com+さくらレンタルサーバでGoogle Apps覚え書き

oflowme_apps

ドメイン取得したのでGmailも独自ドメインで利用したい。何だかんだいってGmail便利だし。
そんな事を思って最初はさくらコントロールパネルのメール転送機能でGmailに転送専用で使ってたんだけど、これがどうもすっきりしない。
ログインするのは結局「ホゲホゲ@gmail.com」で取得したドメインは関係ないし。

と、いうことで調べてたらGoogle Appsが便利そうなので変更した。

通常、さくらレンタルサーバーを使う場合は
お名前.com → ドメイン設定 → ネームサーバの変更から

プライマリネームサーバ ns1.dns.ne.jp
セカンダリネームサーバ ns2.dns.ne.jp

という設定をするはず(違う人は詳しいだろうから知らん)、けどこのままだとGoogle Appsでメールなんかが届かない。

そこでお名前.comのレンタルDNSレコード設定を使うわけです。
まず、このレンタルDNSレコード設定を使う為に、ネームサーバ設定で

プライマリネームサーバ 01.dnsv.jp
セカンダリネームサーバ 02.dnsv.jp

に戻しといてレンタルDNSレコード設定で以下のようにどんどん追加。
(ホスト名は取得したドメインに合わせといて下さい)

ホスト名 TYPE VALUE 優先度
oflow.me MX aspmx.l.google.com 10
oflow.me MX alt1.aspmx.l.google.com 20
oflow.me MX alt2.aspmx.l.google.com 30
oflow.me MX aspmx2.google.com 40
oflow.me MX aspmx3.google.com 50
mail.oflow.me CNAME ghs.google.com
calendar.oflow.me CNAME ghs.google.com
oflow.me A xx.xx.xx.xx (レンタルサーバのIPアドレス)
www.oflow.me A xx.xx.xx.xx (レンタルサーバのIPアドレス)
gyazo.oflow.me A xx.xx.xx.xx (レンタルサーバのIPアドレス)

MX: メールのやつ
CNAME: http://mail.oflow.me/ でGoogle Apps メールとかに
A: http://oflow.me/ のやつ

Google docs, Google sitesは使ってないので設定してない。
まー、これで今のところGoogle Appsでメール(ほげほげ@oflow.meなメール)とカレンダーも使えてるのでいいっかなー。

find_in_searchbar_highlight.uc.jsに機能追加したりボタンをテーマ「rein」に合わせてみた

Firefox 4.0.1, userChromeJS 1.3, Sub-Script/Overlay Loader v3.0.30modで動作確認。

検索ボックスのボタン(虫眼鏡)をクリックでページ内検索する便利なuserChrome.jsのスクリプト「find_in_searchbar_highlight.uc.js」(Firefox用スクリプトアップローダー(新)の642.js)ですが、テーマ「rein」を使ってるとハイライトボタンが浮いてしまう。
ということで変えました。

ついでにいろいろ変えてます。以下の通り。

  • 虫眼鏡クリック以外にも検索ボックス内でCtrl+EnterまたはAlt+Nでページ内検索(次へ)
  • 同様にCtrl+Shift+EnterまたはAlt+Pでページ内検索(前へ)
  • ハイライトボタンは初期状態で非表示(使えないので)
    ページ内検索を1回実行すると表示
    通常の検索(Enterのみ、Alt+Enterなど)でまたハイライトボタン非表示にする
  • ハイライトはボタンクリック以外にも検索ボックス内Ctrl+Hで切り替えできる
  • 背景色変更あたりを微調整

ダウンロード : find_in_searchbar_highlight_mod.uc.js (デフォルトボタンのまま)
ダウンロード : find_in_searchbar_highlight_mod(rein).uc.js (rein対応ボタン)
※ボタンの画像が違うだけです。たぶん。

// ==UserScript==
// @name           find_in_searchbar_highlight.uc.js (mod)
// @description    検索バーでページ内検索+検索文字のハイライト
// @include        chrome://browser/content/browser.xul
// @author         yosuke
// @compatibility  Firefox 4.0
// @Note           (概要)
// @Note           ・検索バー内にある検索ボタン(虫眼鏡)をクリックすると,検索バーに入力された文字列をページ内検索する.
// @Note           ・検索バーの右端にあるペンボタンをクリックすると,検索バーに入力された文字列をすべてハイライト表示する.
// @Note           ・検索した結果,文字列がみつからない場合,検索バー内の背景が赤になる.
// @Note           ・先頭に戻って検索するか,末尾に戻って検索する場合,検索バー内の背景が緑になる.
// @Note           (具体的な使い方)
// @Note             検索ボタンの右クリック -> ページ内検索,次を検索
// @Note             検索ボタンの左クリック -> 前を検索
// @Note             検索ボタンの中クリック -> 検索バー内の文字列を消去
// @Note             ペンボタンをクリック   -> ハイライトのオン,オフ
// @Note           (注意)
// @Note             「任意の設定」の値を変更することで各種機能を個別に設定できます.
// @Note             検索バーによるページ内検索を行う場合,検索ボタンを表示させてください.
// @Note           (追加機能:oflow)
// @Note             テーマ「rain」に合わせてアイコンを変更
// @Note             ハイライトボタンの位置を検索ボックスの中に移動
// @Note             ページ内検索をした時だけハイライトボタンを表示するように変更
// @Note             Ctrl+Enter, Alt+Nでページ内検索(次を検索)
// @Note             Ctrl+Shift+Enter, Alt+Pでページ内検索(次を検索)
// ==/UserScript==

(function() {
    /*----- 任意の設定 -----*/
    // 検索バーによるページ内検索を許可するか("true" or "false")
    const USE_FINDSEARCH = "true"
    // 強調ボタンを配置するか("true" or "false")
    const USE_HIGHLIGHTBUTTON = "true"
    // 検索バーでページ内検索を行う際にページ内検索バーを表示するか("true" or "false")
    const USE_FINDBAR = "false"
    // 先頭に戻って検索,末尾に戻って検索を許可するか("true" or "false")
    const USE_WRAP= "true"
    
    /*----- 初期設定 -----*/
    // ID, Class  Object
    var searchbar = document.getElementById("searchbar");
    var searchbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "searchbar-textbox");
    var searchGoButton = document.getAnonymousElementByAttribute(searchbar, "anonid", "search-go-button");
    var inputbox = document.getAnonymousElementByAttribute(searchbar, "anonid", "input");
    var findstatus = gFindBar.getElement("find-status-icon");
    
    // Colour, Image
    const white = "#ffffff";
    const green = "#ccffcc";
    const red   = "#ffcccc";
    var onHighlight = 'data:image/png;base64,'+
    'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0'+
    'U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFgSURBVHjaYv7//z/j69evWR8+fMj19etX'+
    'HgYGBhjmxoK5gJhDTEyMOT4+/v+pU6f+AwQQM1Azy5o1a/hevXolC5RUAmIFIJYHYlksWBKIhYEW'+
    'sQEt/PXgwYPfAAHEADQNZKr21KlTD7x8+fLbfwIApAakFqQHpBcggIA0gwAQOxKjGdkQkB6QXoAA'+
    'YgISzCC/AU3jZMADTExMwBgEoGpBLmcGCCCQAYxQQ/BqxgJAehgBAogJymEkUTNcD0AAMZFhMwoA'+
    'CCAmSjSDAEAAMTGQAM6cOYMhBhBAMAP+o9uelpZGSDNYD0AAgQJCGIgtgNG7BZvmWbNmYRgG4jMy'+
    'MvoAmScAAogFSPwF4m/ApPwdlhZAmpAVo2sGqQXpAekFCCCKkzJAADFmZWXBMpMUUFAUmsJYcITj'+
    'H6jNr4Gan4WEhHwCCCAGUHYGGsIKFABlYSGoIWI4MEhOCKQWpAekFyDAAO0k7MPVi8ODAAAAAElF'+
    'TkSuQmCC';
    var offHighlight = 'data:image/png;base64,'+
    'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0'+
    'U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFYSURBVHjaYv7//z/j69evWR4+fMj59etX'+
    'bgYGBhjmwoI5gZhdTEyMOT4+/v+pU6f+AwQQM0jzmjVr+F69eiUHlFQGYkUgVgBiOSxYCohFgBax'+
    'AS389eDBg98AAcQANA1ksvbUqVMPvHz58tt/AgCkBqQWpAekFyCAgDSDABA7EqMZ2RCQHpBegABi'+
    'AhLMIP8BTQP5DycwMTEBYxCAqgW5nBkggEAGMEINwasZCwDpYQQIICYoh5FEzXA9AAHERIbNKAAg'+
    'gJgo0QwCAAHExEACOHPmDIYYQADBDPiPbju6YiyawXoAAgiEhIHYGxbHxsbGKHGOzocBkB6QXoAA'+
    'YgESf4H4GzApf4elBWT/Y3M2SC1ID0gvQABRnJQBAogxKysLlplAGUUUmsJYcITjH6jNr4Gan4WE'+
    'hHwCCCAGUHYGGsIKFOABSghBDRHDgUFyQiC1ID0gvQABBgCgmw2B3mPqtQAAAABJRU5ErkJggg==';

    /*----- 検索ボタンをページ検索ボタンに -----*/
    // ページ内検索検索関数
    function find_in_searchbar(e){
        document.getElementById('toggle-all-highlight').style.display = 'block';
        var sel = searchbar.value;
        // 中クリック -> 検索文字列消去
        if(e.button == 1){
            gFindBar.toggleHighlight(false);
            searchbar.value = "";
            searchbox.style.backgroundColor = white;
        }
        // 左クリック, Ctrl+Enter       -> ページ内検索,次を検索
        // 右クリック, Ctrl+Shift+Enter -> 前を検索
        else if(sel){
            gFindBar._findField.value = sel;
            if(e.button == 0 || (e.ctrlKey && !e.shiftKey && e.keyCode == 13) || (e.altKey && e.keyCode == 78)){
                // 左クリック or Ctrl+Enter or Alt+N
                // 次へ
                gFindBar.onFindAgainCommand(false);
            } else if (e.button == 2 || (e.ctrlKey && e.shiftKey && e.keyCode == 13) || (e.altKey && e.keyCode == 80)) {
                // 右クリック or Ctrl+Shift+Enter or Alt+P
                // 前へ
                gFindBar.onFindAgainCommand(true);
            }
            if(findstatus.getAttribute("status")=="notfound"){
                searchbox.style.backgroundColor = red;
                // 見つからなくても検索ボックスにフォーカス
                searchbox.focus();
            }
            // 折り返し判定
            else if(findstatus.getAttribute("status")=="wrapped"){
                if(USE_WRAP=="false"){
                    if(e.button == 0){
                        gFindBar.onFindAgainCommand(true);
                    }else{
                        gFindBar.onFindAgainCommand(false);
                    }
                }
                searchbox.style.backgroundColor = green;
            }else{
                searchbox.style.backgroundColor = white;
            }
        }
        // ページ検索バーを表示するかどうか
        if(USE_FINDBAR == "true"){
            gFindBar.open();
        }else if(USE_FINDBAR == "false"){
            gFindBar.close();
        }
    }
    
    // 検索ボタン設定
    if(USE_FINDSEARCH == "true"){
        searchGoButton.removeAttribute("onclick");
        searchGoButton.setAttribute("oncontextmenu","return(false);");
        searchGoButton.addEventListener("click", function(e){ find_in_searchbar (e);}, false);
        searchbar.addEventListener("click", function(){searchbox.style.backgroundColor = white;}, true);
    }
    
    /*----- ハイライトボタンの生成 -----*/
    var sw = true;
    var str = "";
    // ハイライトオン,オフ関数
    function highlight_toggle() {
        var sel = searchbar.value;
        if(sel){
            gFindBar._findField.value = sel;
            gFindBar.toggleHighlight(false);                        // ハイライト初期化
            gFindBar.toggleHighlight(true);
            // 検索結果 notfound
            if(findstatus.getAttribute("status")=="notfound"){
                newButton.setAttribute("image",offHighlight);
                searchbox.style.backgroundColor = red;
                sw = false;
            }
            else if(sw){
                newButton.setAttribute("image",onHighlight);
                searchbox.style.backgroundColor = white;
            }else if(!sw){
                if(str == sel){
                    gFindBar.toggleHighlight(false);
                    newButton.setAttribute("image",offHighlight);
                    //sw = false;
                }else{
                    sw = !sw;
                    newButton.setAttribute("image",onHighlight);
                    searchbox.style.backgroundColor = white;
                }
            }
            sw = !sw;
        }
        else{
            sw = "false";
            newButton.setAttribute("image",offHighlight);
            gFindBar.toggleHighlight(false);
        }
        str = sel;
        // ページ検索バーを表示するかどうか
        if(USE_FINDBAR == "true"){
            gFindBar.open();
        }else if(USE_FINDBAR == "false"){
            gFindBar.close();
        }

    }
    // ハイライトボタン設定
    var newButton = document.createElement("toolbarbutton");
    newButton.setAttribute("label", "u3059u3079u3066u5f37u8abfu8868u793a");
    // ツールチップテキストは検索バーと同じ「すべて強調表示」
    newButton.setAttribute("tooltiptext", "u3059u3079u3066u5f37u8abfu8868u793a");
    newButton.setAttribute("id", "toggle-all-highlight");
    newButton.addEventListener("click", highlight_toggle, false);
    newButton.setAttribute("oncontextmenu","return(false);");
    newButton.setAttribute("image",offHighlight);
    // ボタンのマージンとかの設定
    newButton.style.cssText = 'display: none; margin: -6px 0px;';
    // 検索ボックス内にボタン表示する場合は背景色透過も
    //newButton.style.cssText = 'display: none; margin: 0px -2px; background-color: transparent !important';
    if(USE_HIGHLIGHTBUTTON == "true"){
        searchbar.parentNode.insertBefore(newButton, searchbar.nextSibling);
        // 検索ボックス内にボタン表示
        // searchGoButton.parentNode.insertBefore(newButton, searchGoButton.nextSibling);
        // 検索ボックスの左側にボタン表示
        // searchbar.parentNode.insertBefore(newButton, searchbar);

    }

    // 検索ボックスのCtrl+Enterでもページ内検索(次へ)
    //               Ctrl+Shift+Enterでもページ内検索(前へ)
    //               Ctrl+Hでハイライト切り替え
    // ついでに検索バーと同じようにAlt+Nで次、Alt+Pで前も使えるようにしておく
    searchbox.addEventListener('keydown', function(e) {
        // keyCode: 13=Enter, 72=h, 78=n, 80=p
        if ((e.ctrlKey && e.keyCode == 13) || (e.altKey && (e.keyCode == 78 || e.keyCode == 80))) {
            // suggestが出てる場合があるのでページ内検索実行時は消す
            searchbox.blur();
            searchbox.focus();

            find_in_searchbar(e);

            e.stopPropagation();
            e.preventDefault();
        } else if (e.ctrlKey && e.keyCode == 72) {
            highlight_toggle();
            e.stopPropagation();
            e.preventDefault();
        }
        if (!e.ctrlKey && e.keyCode == 13) {
            // ページ内検索を使用しない場合ハイライトボタンは不要なので非表示にする
            newButton.style.display = 'none';
            // ページ内検索して背景色変わってるかもしれないので戻す
            searchbox.style.backgroundColor = white;
        }
    }, false);
    searchbox.addEventListener('keyup', function(e) {
        if (searchbar.value == '') {
            // 検索ボックスのテキストが空なら背景色戻す
            searchbox.style.backgroundColor = white;
        }
    }, false);
})();