Elementary OSを入れて最初にやったこと ＆ 入れたツール16個

## 環境

- Elementary OS 0.4 Loki (Ubuntu Xenial 16.04 LTS)

## 環境設定

### システムアップグレード

とりあえずシステムアップグレード

- sudo apt-get update
- sudo apt-get upgrade

### 日本語入力設定

- fcitx-mozcを入れる

[mozc](https://github.com/google/mozc)はgoogle日本語入力のオープンソース版でgoogle内部でGoogle日本語入力がこのコードネームで呼ばれていたからmozcらしいです。
fcitxはAuthyのようなインプットメソッドフレームワーク。

```bash
sudo apt-get install fcitx-mozc
```

インストール後メニューから「Fcitx Configuration」を起動し以下のように`Mozc`というInputメソッドを追加する。英語キーボードの場合はインプットメソッドにKeyboard - Japaneseも追加する。

![Input Method Configuration_010.png](https://qiita-image-store.s3.amazonaws.com/0/47983/414e768d-55a4-ad7a-eb64-2b752a1f7958.png)

入力切り替えのホットキーを設定する。Toggleで切り替えたかったので左Altのみで切り替えにした。デフォルトではCtrl + Shiftで入力切り替え。

![Input Method Configuration_011.png](https://qiita-image-store.s3.amazonaws.com/0/47983/451fca46-b15b-a06c-91f6-2b1b54120597.png)


参考: [UbuntuのmozcでUSキーボード入力/JISキーボード入力を簡単に切り替える方法 \- Qiita](http://qiita.com/AnchorBlues/items/beeb40593fd4c579dbe5)

### マウススクロール反転

スクロール方向を反転したい場合は
System Settings ➔ Mouse & TouchpadからNatural Scrollingをオンに変更

![Mouse & Touchpad_012.png](https://qiita-image-store.s3.amazonaws.com/0/47983/9b47142e-e413-f4ba-0192-8f1ce7ae007f.png)

### マウスの戻る/進むボタンのマッピングを修正

Logitech G403マウスの戻る/進むボタンが効かなかったのでxmodmapでマッピングを修正
デフォルトだとbutton 8/9に割り振られているがbutton 6/7に割り当てたいので以下のようにする

```
xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7"
echo xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7" >> ~/.Xmodmap
```

戻す場合は
`xmodmap -e "pointer = default"`


## 入れたソフト

### Docker

最近はDockerさえあれば特にOS関係なく開発出来るけどやっぱりLinux上でやると楽。あと動作がキビキビしているのでストレスがない。

### [Chrome](https://www.google.co.jp/chrome/browser/desktop/)

とりあえずこれがないと始まらない。

公式からダウンロードしたdebパッケージを`dpkg -i`で入れようとすると

```bash

sudo dpkg -i google-chrome-stable_current_amd64.deb
...
Errors were encountered while processing:  google-chrome-stable
```

となり、エラーになるので`gdebi`で入れる

```bash
sudo apt-get install gdebi
gdebi google-chrome-stable_current_amd64.deb
```


### [Firefox](https://www.mozilla.org/ja/firefox/new/)

chromeを入れるために入れた（？）

### [Atom](atom.io)

Elixirを書くとき用
最近はElectronのおかげでOS agnosticなアプリが増えてきて嬉しい

### [Albert](https://albertlauncher.github.io/)

Macの[Alfred](https://www.alfredapp.com/)のようなランチャ。Windowsだと[Wox](http://www.getwox.com/)ですかね…
アプリ起動、コマンド実行、計算、ファイル検索、Web検索辺りは抑えているので普通にいい感じ。

![albert — Albert_013.png](https://qiita-image-store.s3.amazonaws.com/0/47983/f92209d7-1cac-3f24-c14d-a84adf9fa650.png)

### [Autokey](https://github.com/autokey/autokey)

Applications➔App Centerから「Autokey」で検索してインストール

ホットキーや決められた単語を入力するとスクリプトが起動しタスクを実行出来る。
以下は`date`とキーボードを打つと`date`コマンドの実行結果をカーソル位置に出力する。

![AutoKey_014.png](https://qiita-image-store.s3.amazonaws.com/0/47983/85f80034-112f-f424-1519-a4fc345c0a7e.png)

スクリプトはpythonで書ける

### [Powertop](https://github.com/fenrus75/powertop)

ノートPCのバッテリーの節約をいい感じにやってくれる（らしい）

```bash
# install
sudo apt-get install powertop

# CLIインターフェース起動
sudo powertop

# 自動で節電設定
sudo powertop --auto-tune
```

### [Onedrive](https://github.com/skilion/onedrive)

Linux用のOneDrive CLI。
WindowsではOne Driveをメインで使っているのでLinuxでも同期したく入れた。

```bash
# install dependencies
sudo apt-get install libcurl-dev
sudo apt-get install libsqlite3-dev
sudo wget http://master.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list
wget -qO - http://dlang.org/d-keyring.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install dmd-bin

# install
git clone git@github.com:skilion/onedrive.git
cd onedrive
make
sudo make install

# create a new configuration書ける
mkdir -p ~/.config/onedrive
cp /usr/local/etc/onedrive.conf ~/.config/onedrive/config
```

`onedrive`コマンドのインストールが終わったら、OneDrive APIを使用するためOneDriveのクライアントIDを取得する必要がある

https://apps.dev.microsoft.com/portal/quickstart より「My Application」からアプリの追加を行いアプリケーションの設定から
プラットフォームの追加➔Web➔リダイレクトURLを
「https://login.live.com/oauth20_desktop.srf」
に設定

Microsoft Graph のアクセス許可に`User.Read`があることを確認し
詳細オプション➔`Live SDK サポート`にチェックが入っていることを確認

設定し終えたらクライアントIDをコピーし先ほど作成したOneDriveの初期設定ファイルにコピーする

```
$ cat ~/.config/onedrive/config
client_id = "foobar" // ここ
sync_dir = "~/OneDrive"
skip_file = "~*"
skip_dir = "Music|画像"
```

後は`onedrive`コマンド初回実行時にOAuth2の認証フローで出力されたURLをブラウザで開き、出力されたURLをコンソールに貼り付け認証成功すれば設定完了

```
onedrive
```

ついでに自動起設定動設定をしておく

```
systemctl --user enable onedrive
systemctl --user start onedrive
```

### Steam

App Centerよりインストール。

Steamerの人にとってはLinuxに対応していないゲームが多いのはLinux選ぶ上で結構致命的なポイントかもしれませんがネットワーク内の別のマシンでSteamが動いていたら[Steam ホームストリーミング](http://store.steampowered.com/streaming/?l=japanese)機能でリモートで遊べます
以下はelementary OS(Thinkpad X220)でGTA5をやっている図

![Selection_005.jpg](https://qiita-image-store.s3.amazonaws.com/0/47983/f8cd84f4-c1b6-0b79-fb5e-f8c9def29426.jpeg)

実際Steam ホームストリーミングの中身は、リモートデスクトップでホスト側のSteamマシンを操作しているだけなんだけどゲーム用PCの前に行くのが面倒なときもあったり別の場所で気分転換でやりたいこともありそうだしいいんじゃないでしょうか

### [Slack](https://slack.com/downloads/linux)

公式でLinux版（Beta)あり。チャットワークのLinux公式対応がないので対応してほしい（チラッ

### [Shutter](http://shutter-project.org/)

スクリーンショット作成ツール
矩形選択、ウィンドウ選択、矢印や文字で注釈を入れる等の必要最低限の機能はあるので特に問題なし

### [Wine](https://wiki.winehq.org/Main_Page)

WindowsバイナリをLinux上で実行する
つい最近 [2.0がリリース](https://www.winehq.org/news/2017012401)されたけど93年プロジェクト開始で未だに開発が続いてるのすごい…
何かに似てると思ったけどWindows APIをPOSIX APIに変換してるのでまるっきりWSL (Windows Subsystem for Linux)の逆ですね

Linux用のMySQLとRedisのいい感じのGUIクライアントが見つからなかったので[HeidiSQL](http://www.heidisql.com/)と[Redis Desktop Manager](https://redisdesktop.com/)をWineで起動して使ってる

### [Clipit](https://github.com/CristianHenzel/ClipIt)

クリップボードマネージャ。
色々試したけど履歴の検索、ホットキーで呼び出し等基本的なことが出来て動作が安定していたのでこれにした。

![Manage History_003.jpg](https://qiita-image-store.s3.amazonaws.com/0/47983/54700438-6e9b-3eab-1b82-22e5ba4d2382.jpeg)

ぃぬｘ
### [elementary-tweaks](https://github.com/elementary-tweaks/elementary-tweaks)

elementary OS全体のフォントを変えたり出来る
ファイラ（pantheon-files)でシングルクリックでファイルを開く挙動に違和感があったのでダブルクリックで開くように変更した
ぃぬｃ
### [elementaryPlus](https://github.com/mank319/elementaryPlus)

elementary OSテーマの追加アイコンパック

### [EasyStroke](https://apps.ubuntu.com/cat/applications/precise/easystroke/)

#### :warning: 2020-12-27追記 ※ EasyStrokeを使うとOSが不安定になる場合があります

easystrokeを使っていると突然X11が落ちてログアウト画面に戻るということが使っている中でよくありました. 

```
apt-get remove easystroke
```

xbindkeys で `~/.xbindkeysrc` でマッピングする方が安定すると思います

```
"/usr/bin/xte 'keydown Alt_L' 'key Left' 'keyup Alt_L'"
  b:10
```



マウスジェスチャーソフト
多ボタンマウスの戻るボタンなどがLinuxでは効かない場合などがあるため特定のキーストロークと対応付ける

![image.png](https://qiita-image-store.s3.amazonaws.com/0/47983/de92642c-d1aa-b740-8f3d-e826bace313b.png)

PreferenceよりAdditional ButtonでButton8, Button9を追加ボタンとして追加後Actionsで上記画像のようにKey Combinationと対応付ける。

![easystroke_249.png](https://qiita-image-store.s3.amazonaws.com/0/47983/064433ad-5515-68ae-6ab6-c657f40c32e5.png)



### [Synergy](https://symless.com/synergy)

マウス、キーボード共有ソフト
Windows, Mac, Linux対応でインストールしたPC間でマウスとキーボードを共有出来る. Logicoolの[Flow](https://www.logicool.co.jp/ja-jp/product/options/page/flow-multi-device-control)に似ているがこちらはLogicoolの製品に限定されず好きなマウスとキーボードを使える。

下の図のように配置するとマルチディスプレイのように画面端までマウスカーソルを持ってくともう片方のPCにマウスとキーボードの制御が移る
有料: $15
無線LAN内で接続することも可能だがラグいので有線でスイッチに接続するか、クロスケーブルで直接PC同士接続してインターフェースにIPアドレスを割り振るとほぼラグなしで操作出来る

![image.png](https://qiita-image-store.s3.amazonaws.com/0/47983/9e6e3250-96d2-21ea-0ced-9ce7070c8368.png)

### [WebCatalog](https://webcatalog.io/9)

![image](https://qiita-image-store.s3.amazonaws.com/0/47983/dc602fce-eae7-69b9-bbad-4ea9668d5176.png)

Webベースのアプリをデスクトップアプリ化出来る。
[ChatWork](https://go.chatwork.com/download/)などは公式でLinuxクライアントが存在しないためこれを使っている