Solist Work Blog

Software engineer note

Alt Tab 問題

トグルは便利なのでよく使う作業をトグルで対処するようにすると作業効率があがります。 トグルとは操作するたびに二つの状態が交互に入れ替わる機能のことです。Emacsでよく使われている機能なのですが、それ以外ではそんなに使われているのを見たことがありません。インプットメソッドの切り替えに使われているくらいでしょうか。

GuakeではF12を押すとターミナルエミュレータが現れ再度F12を押すとターミナルエミュレータをしまってくれる機能があってとても便利です。私はターミナルエミュレータは常に出しておきたいので使っていませんがトグルでターミナルエミュレータを操作するのはよい発想のソフトウェアだと思います。

トグルに使えそうなショートカットを割り当てていないキーはそんなにありませんし、 たくさんあっても使いこなせないことが容易に想像できるので一つだけトグルを割り当てるのがよさそうです。 一つだけ割り当てるならば一番効果が高いものがよいでしょう。 よく使う機能に一つのトグルを割り当てないともったいないと思います。

Alt Tab 問題

Alt Tabでタスクを切り替えている画面

これは今このブログを書いているEmacsの画面です。 ソフトウェアエンジニアなのでソースコードを書いている状況だと思ってください。 ソースコードを書いていると調べたいことがでてきたのですぐChromiumを開きたいのですが

Alt Tab

を打ち込んですぐブラウザが開いてくれると思いきや、その前にメールを書いたり別の作業をしていたので Alt Tab 一回で切り替えることができません。 スタックにいろいろなソフトウェアが積まれているので仕方がないことですが、イラッとするものです。 ささいなことであってもこのような不快さは取り除いておいたほうがよいでしょう。 これをトグルでなんとかします。 どのようになればこの問題が解決できるのか考えます。

  • Emacsを開いているときにトグルを押すとブラウザに遷移してほしい
  • ブラウザを開いているときにトグルを押すとEmacsに遷移してほしい
  • それ以外のソフトウェアを開いているときにトグルを押すとEmacsに遷移してほしい

これらが実現すれば不快さは取り除かれるでしょう。

install

xdotoolというキーボードやマウスやウインドウをコントロールする発想が斜め上を行くソフトウェアがあるのでこれを利用します。

sudo pacman -S xdotool

xdotoolには現在の開いているウインドウを調べたり 他のウインドウを探したりウインドウを遷移させたりする機能があるので利用します。

#!/bin/bash

current_window=$(xdotool getwindowfocus)
emacs_window=$(xdotool search --name --onlyvisible "Emacs")
browser_window=$(xdotool search --name --onlyvisible "Chromium")

if test $current_window -eq $emacs_window
then
	xdotool windowactivate $browser_window
else
	xdotool windowactivate $emacs_window
fi

このシェルスクリプトを実行権限をつけて/usr/local/bin/toggleにおいておきます

GNOME設定画面

GNOMEの設定画面からショートカットを割り当てます。 使っていないのと押しやすい場所なのでF8にします。 この Alt Tab 問題はささいな問題のようでいて結構根深い問題だったのでスッキリしました。 前にやっていた作業が何であれ少なくとも2回トグルを押すとそれ以降はAlt Tabを押しても絶対に問題がないことがわかっているので、 何も考えないでF8を2回押すのが手グセになりました。 思考を妨げないのでこういった手グセで解決する方法はよいです。

さらにGNOMEのアクティビティ画面でtoggleと打つと同じ動作になるようにしておきます。

[Desktop Entry]
Name=Toggle
GenericName=Toggle Script
Comment=no comment
Exec=/home/masa/src/github.com/masasam/dotfiles/.toggle.sh
Icon=utilities-terminal
Terminal=true
Type=Application
StartupNotify=false

このデスクトップエントリを/usr/share/applications/toggle.desktopにおいて登録します。

気に入ったらMakefileを書く

この設定が気に入ったのでMakefileに登録しておきましょう。くわしくはこちらの記事に書いてあるので参考にしてください。今回の例ではこうなります。

	toggle: ## Prepare command that toggle between emacs and chromium
		sudo ln -vsf ${PWD}/usr/share/applications/toggle.desktop   /usr/share/applications/toggle.desktop
	    sudo cp ${PWD}/.toggle.sh /usr/local/bin/toggle

	allinstall: ttf-cica install pipinstall goinstall aur mozc neomutt docker mariadb redis rbenv rustinstall nodeinstall screenkey dnsmasq desktop chromium jekyll sxiv zeal zoom toggle

これで

make toggle

を実行するだけで次回のラップトップ再インストール時にこの設定が適応されます。

make allinstall

を実行するとmake toggleも実行されるようになるのでさらに楽です。

Google検索したい時限定のAlt Tab問題の回避方法

Emacsでコードを書いていてGoogle検索したい時限定ならば google-thisを使うのも手です。

M-x package-install google-this

MELPAからインストールします。 これだけで使えるようになるので、調べたい単語の上で

M-x google-this

するとブラウザが開いてその単語で検索できます。 リージョンを選択しておけばリージョンが検索ワードになります。

タグ一覧

お仕事のご相談などはこちらからどうぞ

お仕事の依頼はこちらからどうぞ