はじめに

最近よくマックにいくのだけれども, ここがとても電波回線が悪い (@_@);

ネットサーフィンをしてても, とてもストレスがたまる. このままだと, マックのせいでストレスから立ち直れなくなってしまうので なんとかしようと思った.

テキストブラウザをつかえば, よりサクサクとネットを楽しめるのではとお もい, Emacs での テキストブラウザの eww をつかってみた.

EWW とは

Emacs での テキストブラウザ. Emacs24.4 からデフォルトで Emacs にはいっている.

Basics Config

KeyBindings

  • N (eww-next-url)
  • P (eww-previous-url)
  • l (eww-back-url)
  • r (eww-forward-url)
  • H (eww-list-histories)
  • & (eww-browse-with-external-browser)
  • b (eww-add-bookmark)
  • B (eww-list-bookmarks)
  • q (quit-window)

見にくいときは, R eww-readable をすると, 余計なリンクやサイドバーが消えて見えやすくなる.

いくつか自分でも追加.

(define-key eww-mode-map "r" 'eww-reload)
(define-key eww-mode-map "c 0" 'eww-copy-page-url)
(define-key eww-mode-map "p" 'scroll-down)
(define-key eww-mode-map "n" 'scroll-up)

背景色の設定

正直, 以下の記事をみつけなければ, eww は利用していなかった!!

黒背景を利用していると, google の検索結果が白みががかってしまってつか いものにならなかった. 以下の設定をしたら, あらー不思議. いろが消えた.

(defvar eww-disable-colorize t)
(defun shr-colorize-region--disable (orig start end fg &optional bg &rest _)
  (unless eww-disable-colorize
    (funcall orig start end fg)))
(advice-add 'shr-colorize-region :around 'shr-colorize-region--disable)
(advice-add 'eww-colorize-region :around 'shr-colorize-region--disable)
(defun eww-disable-color ()
  "eww で文字色を反映させない"
  (interactive)
  (setq-local eww-disable-colorize t)
  (eww-reload))
(defun eww-enable-color ()
  "eww で文字色を反映させる"
  (interactive)
  (setq-local eww-disable-colorize nil)
  (eww-reload))

default の検索エンジンを Google に変更

default では, duckduckgo が設定されている. Google へ.

(setq eww-search-prefix "https://www.google.co.jp/search?q=")

dokudokgo

こまかくパラメータ設定

  • kl=ja-jp 日本語
  • k1=-1 広告なし
  • kc=1 自動先読み
  • kf=-1 サイトアイコンなし
  • q = 検索文字

=> サイトアイコンなしは動かない.

;; (setq eww-search-prefix "https://duckduckgo.com/html/?kl=jp-jp&k1=-1&kc=1&kf=-1&q=")

eww 複数起動する

バッファ名を rename すればいい.

(defun eww-mode-hook--rename-buffer ()
  "Rename eww browser's buffer so sites open in new page."
  (rename-buffer "eww" t))
(add-hook 'eww-mode-hook 'eww-mode-hook--rename-buffer)
  • eww-list-buffers (S にキーバインドされている) 生成した eww を一覧で表示できる.

クイック検索

サクッと Google 検索をしたいので, 検索機能を強化した.

  • 検索結果にハイライトをつける.
(defun eww-search (term)
  (interactive "sSearch terms: ")
  (setq eww-hl-search-word term)
  (eww-browse-url (concat eww-search-prefix term)))

(add-hook 'eww-after-render-hook (lambda ()
                   (highlight-regexp eww-hl-search-word)
                   (setq eww-hl-search-word nil)))

テキストブラウザは地味なので, ときには別のブラウザでも Web ページを閲覧したい. 私は普段は conkeror を利用しているので, これで開きたい.

以下の関数で今見ているページを外部ブラウザで開くことができる. &にキーバインドされている.

eww-browse-with-external-link

以下の設定で, ブラウザを conkeror に指定.

(setq browse-url-generic-program (executable-find "conkeror"))
(setq shr-external-browser 'browse-url-generic)

現在の url を eww で開く

外部ブラウザで開きたいときもあれば, eww で開きたいときもある.

(defun browse-url-with-eww ()
  (interactive)
  (let ((url-region (bounds-of-thing-at-point 'url)))
    ;; url
    (if url-region
      (eww-browse-url (buffer-substring-no-properties (car url-region)
                              (cdr url-region))))
    ;; org-link
    (setq browse-url-browser-function 'eww-browse-url)
    (org-open-at-point)))
(global-set-key (kbd "C-c p") 'browse-url-with-eww)

画像表示

画像は遅いので表示させない. 以下の記事のテクをそのまま借りた.

(defun eww-disable-images ()
  "eww で画像表示させない"
  (interactive)
  (setq-local shr-put-image-function 'shr-put-image-alt)
  (eww-reload))
(defun eww-enable-images ()
  "eww で画像表示させる"
  (interactive)
  (setq-local shr-put-image-function 'shr-put-image)
  (eww-reload))
(defun shr-put-image-alt (spec alt &optional flags)
  (insert alt))
;; はじめから非表示
(defun eww-mode-hook--disable-image ()
  (setq-local shr-put-image-function 'shr-put-image-alt))
(add-hook 'eww-mode-hook 'eww-mode-hook--disable-image)

eww-copy-page-url (w) で現在の URL をクリップボードにコピー.

しかし, やりたいことは org-mode のリンクをクリップボードにコピーす ること.この機能かあるかどうかで, 情報収集のスピードが全然違う.

別記事にしました.

External Elisps

eww-hatebu

モードラインにはてぶ数を表示する.

(require' eww-hatebu)
(eww-hatebu-setup)

はてなブックマークを投稿するには, メールからのブックマーク機能を利用する. wl-draft を起動して, コメント書いて送信.

helm-eww-history

helm インタフェースで履歴を見る.

helm-eww-bookmarks

helm インタフェースでブックマークを見る.

(require 'helm-eww-bookmark)
(define-key eww-mode-map "B" 'helm-eww-bookmark)

auto-hightlight-symbol で語句をハイライト

auto-hightlight-symbol を利用すると, 語句にカーソルを当てるだけで, キーワードがハイライトされる.

なんかもうメンテナンスされていないようにみえる.

(require ' auto-highlight-symbol)
(add-hook 'eww-mode-hook 'auto-highlight-symbol-mode)
(global-auto-highlight-symbol-mode t)

ace インタフェースによるリンクの選択. これは必須!! conkeror のようなリンク選択ができる.

o をおすと発動.

(require 'ace-link)
(eval-after-load 'eww '(define-key eww-mode-map "f" 'ace-link-eww))
(ace-link-setup-default)