Skip to content

Latest commit

 

History

History
123 lines (111 loc) · 5.71 KB

20210905140122-exwm.org

File metadata and controls

123 lines (111 loc) · 5.71 KB

EXWM

概要

EXWM(Emacs X Window Manager)は、ウィンドウマネージャの1つ。Emacs下でX Windowの管理ができる。つまり、Emacsでブラウザを開く…など、あらゆる操作が可能になり、各アプリケーションウィンドウを1つのbufferとして扱える。

Repository
ch11ng/exwm: Emacs X Window Manager
Wiki
Home · ch11ng/exwm Wiki

Memo

起動時微妙にフルスクリーンにならないことがある

たまにEmacsのモードラインの下に、微妙に黒いゾーンができる。 最初に (toggle-frame-fullscreen) してから (exwm-init) するとよい。

アプリケーション起動

S-& でウィンドウが立ち上がるコマンドを実行する。

blueman-manager
bluetooth管理
google-chrome
Chrome
nemo
Linux Mintのファイルマネージャ

X Windowとは

X を理解する

X は最初からネットワークを意識してデザインされており、”クライアント - サーバ”モデルを採用しています。 X では、”X サーバ”はキーボードやモニター、マウスが接続されたコンピュータ上で動きます。このサーバはディスプレイの表示を管理したり、キーボード、マウスなどからの入力を処理したりします。各 X アプリケーション (XTerm や Netscape など) は “クライアント”になります。クライアントは”この座標にウィンドウを描いてください”といったメッセージをサーバへ送り、サーバは”ユーザが OK ボタンを押しました”といったようなメッセージを送り返します。

Code

再起動のコード

  • 新しいEmacsを起動してから、現在のemacsをkill
  • 起動中のプロセスIDを取り、emacsclientだったときは親プロセスをkillする
  • 終了する前にhookを実行する
https://github.com/kd-collective/exwm/blob/10bd12234e896d35a2c4eafabc62a31126d23bf3/exwm.el#L126-L153

Tasks

マルチディスプレイに対応する

設定が必要。

(require 'exwm-randr)
(setq exwm-randr-workspace-output-plist '(1 "eDP-1"))
(add-hook 'exwm-randr-screen-change-hook
          (lambda ()
            (start-process-shell-command
             "xrandr" nil "xrandr --output DP-1 --right-of HDMI-1 --auto")))
(exwm-randr-enable)
(exwm-enable)
  • 微妙に入りきってない
  • 左右分割しないと使い物にならない

など、かなり厳しそうな雰囲気。

Chromeに切り替えたときフォーカスしない

qutebrowserやFirefoxでは起きないのでChromeの問題の可能性が高い。

ブラウザが個別に開く設定にし、各バッファ選択から直に移動できるようにする

どこかSystem Craftersの動画で紹介されていたはずだ。

再帰でEmacsを開く方法を調べる

Reference

公式wiki。

Archives

chromeバッファなどでpersp移動ができなくて不便

いちいちEmacsバッファに移ってからキーを打たないと反応しなかった。 define-keyでmodeに定義してやると共通のキーバインドで使用できるようになった。 こういうのちょっとめんどい。
(global-set-key (kbd "C-M-<right>") 'persp-next) ;; 従来
(global-set-key (kbd "C-M-<left>") 'persp-prev) ;; 従来
(define-key exwm-mode-map (kbd "C-M-<right>") 'persp-next) ;; 加える
(define-key exwm-mode-map (kbd "C-M-<left>") 'persp-prev) ;; 加える

Setting EXWM

単に (start-process-shell-command) を使ってコマンドを実行すればいい。

(start-process-shell-command
   "compton" nil "compton -b --config $HOME/dotfiles/.config/compton/compton.conf")
  • background
  • transparent background
  • polybar