Ubuntu 22.04インストールしてからやること
Ubuntu 22.04がリリースされました。内容をつらつら〜っと書いていきます。基本的には前作とあまり変わってない。
Ubuntu 22.04インストールしてからやること Read More »
Ubuntu 22.04がリリースされました。内容をつらつら〜っと書いていきます。基本的には前作とあまり変わってない。
Ubuntu 22.04インストールしてからやること Read More »
Ubuntu 21.04がリリースされました。LTSじゃないので色々と不安定なところもありそうですが、さっそくインストールして初期設定を楽しむことにしました。内容をつらつら〜っと書いていきます。基本的には前作とあまり変わってない。
Ubuntu 21.04インストールしてからやること Read More »
Linux(Ubuntu)を使用していると、Macのトラックパッドジェスチャーが使いたくなることがあります。特にワークスペースの移動や、戻る(←)・進む(→)が恋しくなります。libinput-gesturesを使用すれば、Macほど快適ではありませんがLinuxでもある程度はできるようになります。
【Linux】トラックパッドでジェスチャーを可能にする Read More »
言語を日本語にしてインストールしておけば、直後からMozcが使えるようになってます(※GUIでの設定変更については後述)。Thinkpadのトラックポイント・トラックパッドもどちらも問題なく使用できます。超簡単。
というわけでさっさとやったことリストに行きます。
正直なんのメリットがあるのかよく分からんのですが(笑)、Ubuntuファンとしてアカウントを登録してログインしておきました。多分不要だと思います。
設定-[外観]から変更可能になってます。
世の中ダークテーマが流行りですな。
設定-[マウスとタッチパッド]で
設定-[ユニバーサルアクセス]のタイピング欄でリピートキーの設定を変更。
設定-[地域と言語]の入力ソースで+ボタンを押してタイ語を追加する。まあ普通の人はタイ語のタイピングなんて必要ないでしょうが・・・。
Ubuntu Softwareを起動して、インストール済みのタブを選択。使用しなさそうなアプリをガンガン削除する。以下は私の場合。
削除したアプリ名 | 理由 |
AisleRiot | やらない |
Solitaire | やらない |
Calendar | Googleカレンダー使うから |
Document Scanner | スキャナ持ってないし |
Déjà Dup バックアップツール | 別の方法でバックアップするし |
GNOME マインスイーパー | やらない |
GNOME 上海 | やらない |
GNOME 数独 | やらない |
Remmina | リモートデスクトップしないし |
Seahorse | Bitwarden使うし |
To Do | Microsoft To-Do使うし |
Rhythmbox | Lollypop使うし |
Ubuntu Softwareからインストールします。Tweakする内容は、
Windowsでいうエクスプローラーのことです。
日本語だとターミナルでcdするときとかに面倒臭いです。英語に変えます。
ターミナル(端末)を開いて次のコマンドを実行します。
$ LANG=C xdg-user-dirs-gtk-update
ダイアログが表示されるので、2度と聞かれないようにチェックを入れてUpdate…でリネーム完了。
日本語でインストールするとMozcは最初からインストールされています。しかしなぜかGUIの設定ツールが入っていません。手動で入れましょう。
$ sudo apt install mozc-utils-gui
これで地域と言語の歯車アイコンで起動できるようになります。
Macも使っているので、[キー設定の選択]でことえりにしておきます。
OpenVPNの場合、ovpnファイルがあればインポートするだけで完了です。
L2TP/IPsecの場合はGUIの設定ツールをインストールしてやります。
$ sudo apt install network-manager-l2tp-gnome
設定-[ネットワーク]でVPNの+ボタンを押すと、L2TPが増えてます。
Linux版の「バックアップと同期」ツールはGoogleからリリースされていません。しょうがないのでgoogle-drive-ocamlfuseというツールを使用します。「バックアップと同期」と違ってローカルにはフイルの実態を置きません。Windowsでいうネットワークドライブみたいな感じだと思っておけばいいと思います。
$ sudo add-apt-repository ppa:alessandro-strada/ppa $ sudo apt-get update $ sudo apt-get install google-drive-ocamlfuse
続いて設定します。私は2つのアカウントを使っているので両方設定しておきます。
まずはマウントポイントをmkdirして、google-drive-ocamlfuseコマンドを叩いて1つめのアカウントで認証を完了します。以下例では~/GoogleDrives/hogeにマウントしてます。
$ mkdir ~/GoogleDrives/hoge $ google-drive-ocamlfuse ~/GoogleDrives/hoge
2つ目のアカウントもほぼ一緒。-labelオプションを付ける点が異なります。
$ google-drive-ocamlfuse -label 適当なラベル ~/GoogleDrives/fuga
認証が済んだらどちらも正常にマウントできているか確認しておきましょうね。
このままだと自動起動してくれないので、自動起動用スクリプトを書きます。内容はさっきやったことです。
$ vi ~/bin/google-drive-ocamlfuse-start.sh
#! /usr/bin/bash google-drive-ocamlfuse ~/GoogleDrives/hoge google-drive-ocamlfuse -label 適当なラベル ~/GoogleDrives/fuga
実行権限も付けて。
$ chmod +x ~/bin/google-drive-ocamlfuse-start.sh
あとはスタートメニューから[自動起動するアプリケーション]を起動して先程のスクリプトを登録しておきます。
大人の事情で初期状態ではMP4などが再生できません。追加パッケージをインストールします。
$ sudo apt-get install ubuntu-restricted-extras $ sudo apt-get install ffmpeg
途中同意を求められたら同意してください。
クリップボード拡張アプリです。履歴からペーストできたり定型文登録できたりととても便利です。
$ sudo apt install copyq
適当に設定してください。私は、
マウスジェスチャーアプリです。Ubuntu Softwareからインストールできます。設定した内容は次のような感じ。
ジェスチャー | 名前 | キー |
← | 前のタブ | Ctrl+PageUp |
→ | 次のタブ | Ctrl+PageDown |
↓ | 閉じる | Ctrl+W |
戻る・進むボタンはマウスに付いてるのでここでは登録しませんでした。
トラックパッドでの3・4本指ジェスチャーを可能にするツールです。
ちょっと長くなるので別の記事にしました。
http://13.231.247.97/trackpad-gestures-with-libinput-on-linux/
キーマップ変更ツールです。
これもちょっと長くなるので別の記事にしました。
http://13.231.247.97/how-to-install-and-autostart-xkeysnail/
LollypopやSpotify、Youtube(ブラウザ)など各種プレイヤーに対し再生や一時停止などをコマンドラインから操作できるようになるツールです。なぜこれを使用するかというと、アプリケーションによっては再生・一時停止などのメディアキーに対応してないものがあるからです。playerctlのコマンドをショートカットキーに登録しておけば、あらゆるプレイヤーを同じショートカットキーで操作できるので便利です。
$ sudo apt install playerctl
インストールしたら試しに何か音楽ファイルを再生してみましょう。そうしたら次のコマンドを叩くことで一時停止・再生がトグルできます。
$ playerctl play-pause
その他のコマンドについては公式のREADMEを見てください。
あとは各種playerctlコマンドをOSのショートカットに登録するだけ。設定の[キーボードショートカット]を開き、一番下の+ボタンで新しいショートカットを追加します。
こんな感じで「再生/一時停止:playerctl play-pause」「前の曲:playerctl previous」「次の曲:playerctl next」の3つをショートカットとして登録しました。
公式からdebをダウンロードしてインストールします。
ダウンロードしたdebファイルを右クリック→別のアプリケーションで開く-[アプリケーションのインストール]で開くとインストールできます。
デフォルトでインストールされてます。まともなメーラーがないので仕方なく使ってます。アカウントの設定とかします。
ポッドキャストアプリです。最初からインストールされているRhythmboxでも聴けるんですが、なんかイマイチもさいです。
というわけでPoddrというアプリをインストールします。
Ubuntu Softwareで検索すると見つかるはず。
こんな感じのアプリです。
結構使いやすげ。
ローカルにある音楽はLollypopで再生してます。
これもUbuntu Softwareからインストールできます。
ちゃんとLinux版があります。公式いわくUbuntu Softwareからのインストールを推奨してるみたい。というわけで入れましょう。
インストールしたらログインして、設定を変更します。
LinuxにはろくなTwitterクライアントがないのですが、まだマシかなーというのがこのCawbirdです。
Ubuntu Softwareからインストールできます。
ヘビーユーザーではない私には十分かな。
zoomなんてオシャレなものは使いません。硬派にSkypeです。
公式サイトからLinux版(deb)をダウンロードしてインストールしましょう。
少し設定を変えておきます。
よく使うWebアプリはGoogle Chromeでショートカットにしておくと便利です。デスクトップにアイコンが追加され、Dockにアイコンを追加することもできるので、通常のアプリと変わらずに使用できます。
私は以下のWebアプリのショートカットを作りました。
ショートカットはChromeのメニューからできますよ。ショートカットを作成したいページに訪れ、設定メニューの中の[その他のツール]-[ショートカットを作成]でOKです。ウィンドウにしておいたほうが便利だと思います。
ショートカットを作成するとデスクトップにアイコンファイルができるのですが、このままではダブルクリックで起動できません。アイコンファイルを右クリックして[起動を許可する]を選択しておくと、次回以降はダブルクリックで起動できるようになります。
デフォルトですでに便利だというfishシェルを使います。公式の手順でもいいですが、aptでインストールできました。
$ sudo apt install fish
ログインシェルはbashから変更しないほうがいいと思います。次節でTerminatorというターミナルアプリをインストールしますので、そちらの設定でfishを使用するようにします。
Gnome端末だとショボいのでTerminatorをインストールします。
$ sudo apt install terminator
ターミナル内で右クリックして[設定]。
/usr/bin/fish
を入力。vimでもいいのですが、なんとなくNeoVim派なので。
$ sudo apt install neovim
開発には必須です。
$ sudo apt install git
最低限の設定もしておきます。
$ git config --global user.name "ユーザー名" $ git config --global user.email メールアドレス $ git config --global core.editor nvim
gitプロトコル使う場合は鍵認証が便利です。
$ bash $ ssh-keygen -t rsa -b 4096 -C "メールアドレス" 〜パスフレーズ使わない私はエンター連打〜 $ eval "$(ssh-agent -s)" $ ssh-add ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub | xclip -selection c # クリップボードにコピー
githubのSettingsページからSSH KEYを登録する。xclipコマンドでクリップボードにコピーされた公開鍵をペーストする。
高速ファインダをインストールします。
$ sudo apt install fzf
何かと必要になりますから。
$ sudo apt install curl
ドットファイル類はPrivateなgithubレポジトリにおいてあるのでpullしてきます。ここは各個人いろんなやり方があるんでしょうね。
バージョン切り替えて使うとかハードなJavaユーザーの人はSDKMANを使ったほうがいいのかもしれませんが、私はJDK8をたまーに使用するだけなので、aptで入れちゃいます。openjdkにしました。
$ sudo apt install openjdk-8
仕事で使用するので。
$ sudo apt install memcached $ sudo systemctl status memcached
よし、ちゃんと起動してるな。
かっこいいターミナルを作るには必須のフォント。公式の手順通りですが、以下の手順でインストールできます。
$ git clone https://github.com/powerline/fonts.git --depth=1 $ cd fonts $ ./install.sh $ cd .. rm -rf fonts
Microsoft製のフォントです。プログラミングに向いてます。
$ sudo apt install fonts-cascadia-code
これで使えるようになってます。
VSCodeも好きなんですが、やっぱりJetBrainsのIDEは最高です。有料のUnlimitedユーザーなので使わないと元取れない気もするし笑。
~/Applications
の中に配置bin
のidea.sh
を実行次回以降は普通にスタートメニューから起動できます。
もはやデベロッパーには必須のツールでしょう。
これは公式からDEB版をダウンロードしてインストールします。
nodeのバージョン管理ができます。
$ curl -fsSL https://raw.githubusercontent.com/nodenv/nodenv-installer/master/bin/nodenv-installer | bash
以下をconfig.fishに追加します。※fishシェルです
set -x PATH $HOME/.nodenv/bin $PATH status --is-interactive; and source (nodenv init -|psub)
あとは好きなバージョンのnodeをインストールしましょう。私は10.13.0をインストールしました。
$ nodenv install 10.13.0
言わずもがなdockerです。公式の方法だとまだUbuntu 20.04のレポジトリがなかったみたい?
というわけでaptでインストールしました。sudoなしで実行できるようにもしておきます。
$ sudo apt install docker.io $ sudo systemctl enable --now docker $ sudo usermod -aG docker あなたのUbuntuユーザー名
ここで一旦ログインしなおす必要ありです。ログイン後にちゃんと動くか試してみます。
$ docker run hello-world
ちゃんとHello, Worldできましたか?
composeもよく使うのでインストールしておきます。
$ sudo apt install docker-compose
ざっとこんな感じです。
Ubuntu 20.04の使用感としては「ほとんど苦労せずに快適に使える」ですね。VineLinux使ってたユーザーとしては、Linuxデスクトップってこんなにもまともになってきたんだなあと感慨深いものがあります。
しかし(Macのおかげで)決して流行らないと思いますが・・・笑
Ubuntu 20.04インストールしてからやること Read More »
from xkeysnail.transform import * define_keymap(re.compile("Firefox|Google-chrome"), { # Ctrl+Alt+j/k to switch next/previous tab K("C-M-j"): K("C-TAB"), K("C-M-k"): K("C-Shift-TAB"), }, "Firefox and Chrome") define_keymap(re.compile("Zeal"), { # Ctrl+s to focus search area K("C-s"): K("C-k"), }, "Zeal") define_keymap(lambda wm_class: wm_class not in ("Emacs", "URxvt"), { # Cancel K("C-g"): [K("esc"), set_mark(False)], # Escape K("C-q"): escape_next_key, # C-x YYY K("C-x"): { # C-x h (select all) K("h"): [K("C-home"), K("C-a"), set_mark(True)], # C-x C-f (open) K("C-f"): K("C-o"), # C-x C-s (save) K("C-s"): K("C-s"), # C-x k (kill tab) K("k"): K("C-f4"), # C-x C-c (exit) K("C-c"): K("M-f4"), # cancel K("C-g"): pass_through_key, # C-x u (undo) K("u"): [K("C-z"), set_mark(False)], } }, "Emacs-like keys")
↑これは公式のサンプルですが、xkeysnailではこのような定義でキーマップをカスタマイズできます。ベタに修飾キー+何かのキーをマップしたり、ワンショットモディファイヤ(押して離すとXX、押しながらだとYYみたいな)もできますし、Emacsみたいに2ストロークにもできるし、特定のアプリケーションにのみ発動する定義もできたりと、かなり高機能な印象です。
やれることは公式サンプルを見たほうが早いです。
https://github.com/mooz/xkeysnail/blob/master/example/config.py
公式の手順通りインストールします。Ubuntu 20.04はpython3はデフォルトで入ってますがpipは入ってません。pipをインストールして、そのpipでxkeysnailをインストールします。
$ sudo apt install python3-pip $ sudo pip3 install xkeysnail
自分のした設定は次のような感じ。
import re from xkeysnail.transform import * define_modmap({ Key.CAPSLOCK: Key.LEFT_CTRL, Key.RIGHT_CTRL: Key.LEFT_CTRL, }) define_multipurpose_modmap({ Key.Q: [Key.Q, Key.RIGHT_META], Key.APOSTROPHE: [Key.APOSTROPHE, Key.RIGHT_CTRL], }) define_keymap(None, { # Vim-like K("RSuper-h"): K("Left"), K("RSuper-j"): K("Down"), K("RSuper-k"): K("Up"), K("RSuper-l"): K("Right"), # Emacs-like K("RC-a"): K("Home"), K("RC-e"): K("End"), K("RC-d"): K("Delete"), K("RC-h"): K("Backspace"), K("RC-k"): [K("Shift-End"), K("Delete")], # Mac-like K("Super-Backspace"): [K("Shift-Home"), K("Backspace")], # Eclipse-like K("Shift-Enter"): [K("End"), K("Shift-Enter")], K("C-Shift-Enter"): [K("Up"), K("End"), K("Enter")], })
すべてのアプリケーションにおいて、q + h/j/k/l
でカーソル移動ができるようにしました。なんでqなの?となるかもしれませんが、通常の修飾キー(Ctrl/Alt/Shift/Window)を使用すると、他のショートカットとバッティングしたり、修飾キーを離した時にワンショットが発火してしまったりとトラブルになることが多いです。例えば、最初はqではなく左Winキー + h/j/k/l
でカーソル移動できるようにしていたのですが、アプリケーションによっては左Winキーを離した時に発火してしまい、Gnomeのアクティビティ画面が表示されてしまうという不都合がありました。左Winではなく右Winにするとアクティビティ画面は起動しないのですが、キーボードによっては右Winキーが無かったりするので万能ではありませんでした。
というわけで凝ったことをするなら「修飾キーではない通常キーを修飾キーとして使う」方が筋がいいと思います。
で、どうしてqキーを選んだかというと、
という理由でqにしました。
上記config.pyの次の部分がqを修飾キーとしても使えるようにする設定にあたります。
define_multipurpose_modmap({ Key.Q: [Key.Q, Key.RIGHT_META], ... })
define_multipurpose_modmap という関数で複数目的の修飾キーを設定できます。ここでは『qを押して離すとqキー』『押しっ放しの間はRIGHT_META(右Winキー)』という設定にしています。押しっ放しのときに右Winというのがポイント。
そしてカーソル移動を実現している設定は次の部分にあたります。
define_keymap(None, { # Vim-like K("RSuper-h"): K("Left"), K("RSuper-j"): K("Down"), K("RSuper-k"): K("Up"), K("RSuper-l"): K("Right"), ...
RSuper というのが右Win(RIGHT_META)にあたります。なんでキーの指定の仕方が違うんだよって思うかもしれません。このあたりは公式のソースを見てみてください。
https://github.com/mooz/xkeysnail/blob/master/xkeysnail/key.py
Emacsはちょっとしか触ってこなかったですが、結構便利だったなと思うキーマップがあったので取り入れてみました。こちらは'
で発動するようにしています。このアポストロフィ(シングルクォート)はUSキーボードだと右手の小指ですぐに押せます。
define_multipurpose_modmap({ ... Key.APOSTROPHE: [Key.APOSTROPHE, Key.RIGHT_CTRL], })
押しっ放しにしたときは右Ctrlキーになります。
この右Ctrlを使ってEmacs風キーマップを設定します。
define_keymap(None, { ... # Emacs-like K("RC-a"): K("Home"), K("RC-e"): K("End"), K("RC-d"): K("Delete"), K("RC-h"): K("Backspace"), K("RC-k"): [K("Shift-End"), K("Delete")], ...
これらはMacならデフォルトでCtrlキーに割り当てられてます。結構色んなところで標準で取り入れられてるキーマップなので、Vimmerでも覚えておいたほうがいいかと思います。
なお、右Ctrlキーを割り当てちゃうと、普通の右Ctrl+a/e/d/h/kが使えなくなるんじゃね?と思うかもしれませんが、先の設定で右Ctrlは左Ctrlに変更しているので大丈夫です。
define_modmap({ ... Key.RIGHT_CTRL: Key.LEFT_CTRL, })
なんだかすごくややこしい話ですが、要するに
'
を押しっぱなしの間は1でフリーになった右Ctrlにマップというふうになっています。ちょっと混乱する場合は、落ち着いてconfig.pyを上から見ていってくだされ。
Mac用のUSキーボードでLinuxを使っていると、「カーソル位置から行頭まで削除」するのに、ついついCMD+Backspaceを押してしまうんですよね・・・。このショートカットはかなり使用頻度が高いので、Linuxでも実現しておきます。
define_keymap(None, { ... # Mac-like K("Super-Backspace"): [K("Shift-Home"), K("Backspace")], ...
通常であればCMDキーがWinキーに割り当てられているはずです。SuperはWinキーなので、つまりCMD+Backspaceを押すと行頭まで削除してくれるようになります。ただ、行頭まで削除をShift+Home→Backspaceで実現しているだけなので、Vimのような特殊な(?)環境下では上手くいきませんが、そこはご愛嬌ということで。
なお、本気でカスタマイズしたいなら、アプリケーションごとに設定を施すこともできます。例えば公式の例には、Google ChromeとFirefoxにのみ有効な設定例が載っています。
define_keymap(re.compile("Firefox|Google-chrome"), { # Ctrl+Alt+j/k to switch next/previous tab K("C-M-j"): K("C-TAB"), K("C-M-k"): K("C-Shift-TAB"), ...
eclipse固有のものではないですが、Shift+Enterでカーソル下に行を挿入、Ctrl+Shift+Enterでカーソル上に行を挿入、というものがあります。あれってプログラミングしてるとすごい便利だなあと感じることが多いです。というわけで、どんなエディタにも必要だと感じたので設定してみました。
define_keymap(None, { ... # Eclipse-like K("Shift-Enter"): [K("End"), K("Shift-Enter")], K("C-Shift-Enter"): [K("Up"), K("End"), K("Enter")], })
ポイントは、Shift+Enter時の最後にEnterではなくShift+Enterを送っていることです。これは、エディタによっては元々Shift+Enterにショートカットが割り当てられていることがあるため、それを殺さないようにするためです。例えばWordpressでも、通常のEnterのみと、Shift+Enterでは違います。Wordとかもそうだったかな?そういったアプリ固有のキーマップを活かすようにしています。
自分で作成したconfig.pyですが、xkeysnailを実行して実際に試してみます。
試すには次のようにxkeysnailをrootで実行して設定ファイルを指定します。
$ sudo xkeysnail config.py
たぶんエラーが出ると思います。セキュリティ上の理由でrootはroot以外のユーザーが起動したXサーバに接続することができませんのです。xhostコマンドでrootを一時的に追加します。
$ xhost +SI:localuser:root
もういちどxkeysnailを実行してみましょう。実行したターミナルはそのままにしておいて、他のアプリケーション上で設定したキーマップを試してください。うまく設定できました?
うまく設定できたらsystemdに登録して自動起動するようにしておきます。xkeysnailはrootで実行する必要がありますが、どっちみち先程のxhostコマンドは一般ユーザーで実行する必要があるので、一般ユーザーで起動するようにしたほうがラクです。というわけで一般ユーザーに必要な権限だけ与えて、user環境のsystemdに登録することにします。
まずはグループを作成します。uinputというグループ名にします。
$ getent group uinput # 一応すでに存在しないか見ておく $ sudo groupadd uinput
できましたら、inputと先程作成したuinputグループにユーザーを追加します。
$ sudo usermod -aG input,uinput あなたのユーザー名 $ getent group input # 確認 $ getent group uinput # 確認
あなたのユーザーがinput, uinputグループに追加されていることを確認しました。
続いてudev ruleを作成します。作成場所は/etc/udev/rules.dの中です。
KERNEL=="event*", NAME="input/%k", MODE="660", GROUP="input"
KERNEL=="uinput", GROUP="uinput"
上記2ファイルを配置したら、一旦PCを再起動します。
続いて、以下のファイルを~/.config/systemd/userに作成します。ディレクトリがなかったら作ってね。あなたのユーザー名は適宜変更してください。
[Unit]
Description=xkeysnail
[Service]
KillMode=process
ExecStartPre=/usr/bin/xhost +SI:localuser:root
ExecStart=/usr/local/bin/xkeysnail /home/あなたのユーザー名/.config/xkeysnail/config.py
Type=simple
Restart=always
RestartSec=10s
# たぶん :0 で問題ないと思いますが環境にもよります。`echo $DISPLAY`の値を設定してください
Environment=DISPLAY=:0
[Install]
WantedBy=default.target
軽くポイントを説明しておくと、
といった感じです。
では次にキーマップ設定であるconfig.pyを~/.config/xkeysnail/config.pyに配置してください。
ではサービスとして登録しましょう。
$ systemctl --user enable xkeysnail
登録できたら起動してみます。
$ systemctl --user start xkeysnail
ちゃんと起動しているかステータスも見ておきます。
$ systemctl --user status xkeysnail
● xkeysnail.service - xkeysnail Loaded: loaded (/home/あなたのユーザー名/.config/systemd/user/xkeysnail.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-04-25 14:24:57 JST; 3h 6min ago Process: 6409 ExecStartPre=/usr/bin/xhost +SI:localuser:root (code=exited, status=0/SUCCESS) Main PID: 6410 (xkeysnail) CGroup: /user.slice/user-1000.slice/user@1000.service/xkeysnail.service └─6410 /usr/bin/python3 /usr/local/bin/xkeysnail /home/あなたのユーザー名/.config/xkeysnail/config.py
Active: active (running) になっていれば成功です。設定したキーマップを試してみましょう。
というわけで快適なLinux生活になりました。作者には強いありがたみ感じます。
Linuxで思い通りのキーマップを設定する【xkeysnail】 Read More »