読者です 読者をやめる 読者になる 読者になる

vim8とneovim

vim nvim

neovimがリリースされたと思ったら、vim8.0がリリースされた。 vim使いとしてはちょっと残念。

vim7までは1種類だったvimがvim8とneovimという2種類になってしまった。

どちらでも対応できるように、設定を作り直した。

今回の目標は

  1. 設定を変えることでいらないプラグインを排除できること。
  2. できるかぎりlasy_loadingして起動速度を上げる
  3. 設定を増やしても迷わないファイル構成

Github: haimemat/vim-settings

VIMをセットアップするツール

  1. 設定ファイル群
  2. インストール用makefile

使い方(archlinux)

$ make -f archlinux.mk

設定

" ------------------------------------------------
" 設定
" ------------------------------------------------

"let mapleader = "\<Space>"

" VIMRC用のディレクトリ
let g:my_vimrc_path='~/vimrc'
let g:dein_dir='~/.cache/dein'

" Nora設定
let g:nora = {
  \ 'leader': '<SPACE>',
  \ 'super': 's',
  \ 'enable': 1
  \ }

" 使いたいものだけ定義する
" 例: dein
" 読み込まれるtoml: vimrc/toml/dein.toml
" 読み込まれるtoml: vimrc/toml/dein_lazy.toml
let g:my_pakages = [
 \ 'dein', 
 \ 'unite',
 \ 'extra'
 \ ]

ファイル構成

  • vimrc
  • types/各ファイルタイプ別の設定
  • toml/plugnのインストール設定
  • rc/起動時に読み込まれるファイル
  • plugins/plugin起動時に読み込まれるファイル
.
├── README.md
├── archlinux.mk
├── plugins
│   ├── qfixhowm.rc.vim
│   ├── quickrun.rc.vim
│   ├── unite.rc.vim
│   ├── vimfiler.rc.vim
│   ├── vimshell.rc.vim
│   └── vimtex.rc.vim
├── rc
│   ├── basic.vim
│   ├── dein.vim
│   ├── init.vim
│   ├── keymap-nora-terminal.vim
│   ├── keymap-nora-unite.vim
│   ├── keymap-nora.vim
│   ├── keymap.vim
│   └── types.vim
├── toml
│   ├── dein.toml
│   ├── dein_lazy.toml
│   ├── extra.toml
│   ├── extra_lazy.toml
│   └── unite_lazy.toml
├── types
│   ├── tex.vim
│   └── vim.vim
└── vimrc

キーマップ

mode キー 割当 備考
normal ; : 誤操作防止
command w1 w! 誤操作防止
command q1 q! 誤操作防止
normal ZZ none 誤操作防止
normal ZQ none 誤操作防止
normal Q none 誤操作防止
insert jj ESC モード移動を便利に
insert,normal,visual CTRL-l ESC モード移動を便利に
normal j gj 移動を直感的に
normal k gk 移動を直感的に
normal gj j 移動を直感的に
normal gk k 移動を直感的に
mode キー 割当 備考
insert,normal,visual c-f nora NORAキー
normal space nora NORAキー
normal s snora SUPER NORAキー
normal nora+r vimrcを再読込
normal nora+p :set paste! ペーストモード切り替え
normal nora+a :Alignta 整列
normal nora+h Unite history ファイルヒストリ
normal snora+e vimfiler ファイルエクスプローラを表示

など、詳しくは rc/keymap-nora.vim参照

Rofiをいじる

archlinux rofi

rofiというランチャーをいじる

yoaurt -S rofi

使い方をみる

rofi --help

rofi usage:
    rofi [-options ...]

Command line only options:
    -no-config                             Do not load configuration, use default values.
    -v,-version                            Print the version number and exit.
    -dmenu                                 Start in dmenu mode.
    -display [string]                      X server to contact.
        ${DISPLAY}
    -h,-help                               This help message.
    -dump-xresources                       Dump the current configuration in Xresources format and exit.
    -dump-xresources-theme                 Dump the current color scheme in Xresources format and exit.
    -e [string]                            Show a dialog displaying the passed message and exit.
    -markup                                Enable pango markup where possible.
    -normal-window                         In dmenu mode, behave as a normal window. (experimental)
    -show [mode]                           Show the mode 'mode' and exit. The mode has to be enabled.
DMENU command line options:
    -mesg [string]                         Print a small user message under the prompt (uses pango markup)
    -p [string]                            Prompt to display left of entry field
    -selected-row [integer]                Select row
    -format [string]                       Output format string
        s
    -u [list]                              List of row indexes to mark urgent
    -a [list]                              List of row indexes to mark active
    -l [integer]                           Number of rows to display
    -i                                     Set filter to be case insensitive
    -only-match                            Force selection or custom entry
    -no-custom                             Don't accept custom entry
  -select [string]                       Select the first row that matches
  -password                              Do not show what the user inputs. Show '*' instead.
  -markup-rows                           Allow and render pango markup as input data.
  -sep [char]                            Element separator.
      '\n'
  -input [filename]                      Read input from file instead from standard input.
  -sync                                  Force dmenu to first read all input data, then show dialog.
Global options:
  -modi [string]                          Enabled modi
      window,run,ssh (Default)
  -width [number]                         Window width
      50 (Default)
  -lines [number]                         Number of lines
      15 (Default)
  -columns [number]                       Number of columns
      1 (Default)
  -font [string]                          Font to use
      mono 12 (Default)
  -color-normal [string]                  Color scheme for normal row
      #fdf6e3,#002b36,#eee8d5,#586e75,#eee8d5 (Default)
  -color-urgent [string]                  Color scheme for urgent row
      #fdf6e3,#dc322f,#eee8d5,#dc322f,#fdf6e3 (Default)
  -color-active [string]                  Color scheme for active row
      #fdf6e3,#268bd2,#eee8d5,#268bd2,#fdf6e3 (Default)
  -color-window [string]                  Color scheme window
      #fdf6e3,#002b36 (Default)
  -bw [number]                            Border width
      1 (Default)
  -location [number]                      Location on screen
      0 (Default)
  -padding [number]                       Padding
      5 (Default)
  -yoffset [number]                       Y-offset relative to location
      0 (Default)
  -xoffset [number]                       X-offset relative to location
      0 (Default)
  -[no-]fixed-num-lines                   Always show number of lines
      True (Default)
  -terminal [string]                      Terminal to use
      rofi-sensible-terminal (Default)
  -ssh-client [string]                    Ssh client to use
      ssh (Default)
  -ssh-command [string]                   Ssh command to execute
      {terminal} -e {ssh-client} {host} (Default)
  -run-command [string]                   Run command to execute
      {cmd} (Default)
  -run-list-command [string]              Command to get extra run targets
       (Default)
  -run-shell-command [string]             Run command to execute that runs in shell
      {terminal} -e {cmd} (Default)
  -window-command [string]                Command executed on accep-entry-custom for window modus
      xkill -id {window} (Default)
  -[no-]disable-history                   Disable history in run/ssh
      False (Default)
  -[no-]levenshtein-sort                  Use levenshtein sorting
      False (Default)
  -[no-]case-sensitive                    Set case-sensitivity
      False (Default)
  -[no-]cycle                             Cycle through the results list
      True (Default)
  -[no-]sidebar-mode                      Enable sidebar-mode
      False (Default)
  -eh [number]                            Row height (in chars)
      1 (Default)
  -[no-]auto-select                       Enable auto select mode
      False (Default)
  -[no-]parse-hosts                       Parse hosts file for ssh mode
      False (Default)
  -[no-]parse-known-hosts                 Parse known_hosts file for ssh mode
      True (Default)
  -combi-modi [string]                    Set the modi to combine in combi mode
      window,run (Default)
  -matching [string]                      Set the matching algorithm. (normal, regex, glob, fuzzy)
      normal (Default)
  -[no-]tokenize                          Tokenize input string
      True (Default)
  -m [string]                             Monitor id to show on
      -5 (Default)
  -line-margin [number]                   Margin between rows
      2 (Default)
  -line-padding [number]                  Padding within rows
      1 (Default)
  -filter [string]                        Pre-set filter
      (unset) (Default)
  -separator-style [string]               Separator style (none, dash, solid)
      dash (Default)
  -[no-]hide-scrollbar                    Hide scroll-bar
      False (Default)
  -[no-]fullscreen                        Fullscreen
      False (Default)
  -[no-]fake-transparency                 Fake transparency
      False (Default)
  -dpi [number]                           DPI
      -1 (Default)
  -threads [number]                       Threads to use for string matching
      0 (Default)
  -scrollbar-width [number]               Scrollbar width
      8 (Default)
  -scroll-method [number]                 Scrolling method. (0: Page, 1: Centered)
      0 (Default)
  -fake-background [string]               Background to use for fake transparency. (background or screenshot)
      screenshot (Default)
  -window-format [string]                 Window Format. w (desktop name), t (title), n (name), r (role), c (class)
      {w}   {c}   {t} (Default)
  -[no-]click-to-exit                     Click outside the window to exit
      True (Default)
  -[no-]show-match                        Indicate how it match by underlining it.
      True (Default)
  -pid [string]                           Pidfile location
      /run/user/15000/rofi.pid (Default)
  -kb-primary-paste [string]              Paste primary selection
      Control+V,Shift+Insert (Default)
  -kb-secondary-paste [string]            Paste clipboard
      Control+v,Insert (Default)
  -kb-clear-line [string]                 Clear input line
      Control+w (Default)
  -kb-move-front [string]                 Beginning of line
      Control+a (Default)
  -kb-move-end [string]                   End of line
      Control+e (Default)
  -kb-move-word-back [string]             Move back one word
      Alt+b (Default)
  -kb-move-word-forward [string]          Move forward one word
      Alt+f (Default)
  -kb-move-char-back [string]             Move back one char
      Left,Control+b (Default)
  -kb-move-char-forward [string]          Move forward one char
      Right,Control+f (Default)
  -kb-remove-word-back [string]           Delete previous word
      Control+Alt+h,Control+BackSpace (Default)
  -kb-remove-word-forward [string]        Delete next word
      Control+Alt+d (Default)
  -kb-remove-char-forward [string]        Delete next char
      Delete,Control+d (Default)
  -kb-remove-char-back [string]           Delete previous char
      BackSpace,Control+h (Default)
  -kb-remove-to-eol [string]              Delete till the end of line
      Control+k (Default)
  -kb-remove-to-sol [string]              Delete till the start of line
      Control+u (Default)
  -kb-accept-entry [string]               Accept entry
      Control+j,Control+m,Return,KP_Enter (Default)
  -kb-accept-custom [string]              Use entered text as command (in ssh/run modi)
      Control+Return (Default)
  -kb-accept-alt [string]                 Use alternate accept command.
      Shift+Return (Default)
  -kb-delete-entry [string]               Delete entry from history
      Shift+Delete (Default)
  -kb-mode-next [string]                  Switch to the next mode.
      Shift+Right,Control+Tab (Default)
  -kb-mode-previous [string]              Switch to the previous mode.
      Shift+Left,Control+Shift+Tab (Default)
  -kb-row-left [string]                   Go to the previous column
      Control+Page_Up (Default)
  -kb-row-right [string]                  Go to the next column
      Control+Page_Down (Default)
  -kb-row-up [string]                     Select previous entry
      Up,Control+p,Shift+Tab,Shift+ISO_Left_Tab (Default)
  -kb-row-down [string]                   Select next entry
      Down,Control+n (Default)
  -kb-row-tab [string]                    Go to next row, if one left, accept it, if no left next mode.
      Tab (Default)
  -kb-page-prev [string]                  Go to the previous page
      Page_Up (Default)
  -kb-page-next [string]                  Go to the next page
      Page_Down (Default)
  -kb-row-first [string]                  Go to the first entry
      Home,KP_Home (Default)
  -kb-row-last [string]                   Go to the last entry
      End,KP_End (Default)
  -kb-row-select [string]                 Set selected item as input text
      Control+space (Default)
  -kb-screenshot [string]                 Take a screenshot of the rofi window
      Alt+S (Default)
  -kb-toggle-case-sensitivity [string]    Toggle case sensitivity
      grave,dead_grave (Default)
  -kb-toggle-sort [string]                Toggle sort
      Alt+grave (Default)
  -kb-cancel [string]                     Quit rofi
      Escape,Control+g,Control+bracketleft (Default)
  -kb-custom-1 [string]                   Custom keybinding 1
      Alt+1 (Default)
  -kb-custom-2 [string]                   Custom keybinding 2
      Alt+2 (Default)
  -kb-custom-3 [string]                   Custom keybinding 3
      Alt+3 (Default)
  -kb-custom-4 [string]                   Custom keybinding 4
      Alt+4 (Default)
  -kb-custom-5 [string]                   Custom Keybinding 5
      Alt+5 (Default)
  -kb-custom-6 [string]                   Custom keybinding 6
      Alt+6 (Default)
  -kb-custom-7 [string]                   Custom Keybinding 7
      Alt+7 (Default)
  -kb-custom-8 [string]                   Custom keybinding 8
      Alt+8 (Default)
  -kb-custom-9 [string]                   Custom keybinding 9
      Alt+9 (Default)
  -kb-custom-10 [string]                  Custom keybinding 10
      Alt+0 (Default)
  -kb-custom-11 [string]                  Custom keybinding 11
      Alt+exclam (Default)
  -kb-custom-12 [string]                  Custom keybinding 12
      Alt+at (Default)
  -kb-custom-13 [string]                  Csutom keybinding 13
      Alt+numbersign (Default)
  -kb-custom-14 [string]                  Custom keybinding 14
      Alt+dollar (Default)
  -kb-custom-15 [string]                  Custom keybinding 15
      Alt+percent (Default)
  -kb-custom-16 [string]                  Custom keybinding 16
      Alt+dead_circumflex (Default)
  -kb-custom-17 [string]                  Custom keybinding 17
      Alt+ampersand (Default)
  -kb-custom-18 [string]                  Custom keybinding 18
      Alt+asterisk (Default)
  -kb-custom-19 [string]                  Custom Keybinding 19
      Alt+parenleft (Default)
  -display-ssh [string]                   The display name of this browser
      (unset) (Default)
  -display-run [string]                   The display name of this browser
      (unset) (Default)
  -display-drun [string]                  The display name of this browser
      (unset) (Default)
  -display-window [string]                The display name of this browser
      (unset) (Default)
  -display-windowcd [string]              The display name of this browser
      (unset) (Default)
  -display-combi [string]                 The display name of this browser
      (unset) (Default)

Monitor layout:
              ID: 0
            name: eDP1
        position: 0,900
            size: 2880,1620

              ID: 1
            name: VGA1
        position: 3704,0
            size: 1920,1080

              ID: 2 (primary)
            name: DP1
        position: 3064,1080
            size: 2560,1440


Compile time options:
  * window  enabled
  * drun    enabled
  * timings disabled
  * gcov    disabled
  * asan    disabled

For more information see: man rofi
                 Version: 1.3.0
              Bugreports: https://github.com/DaveDavenport/rofi/
                 Support: https://forum.qtools.org/
                          #rofi @ freenode.net
      Configuration file: /home/kurari/.config/rofi/config

とりあえず、ウインドウの切り替えとコマンド実行の機能だけ持たせて起動

rofi -combi-modi 'window,run' -show

本家サイトを覗いていたらdmenuとかいうモードを発見

echo -e "Option #1\nOption #2\nOption #3" | rofi -dmenu

戻り値で選択したテキストが帰ってくる。 これをスクリプトで受ければ、グラフィカルな操作できるのね。

i3のランチャコマンドを作成してみた

#!/bin/bash

cmd=$(cat <<EOF | rofi -dmenu -p "i3 menu: " -format s
MainTerminal
firefox
thunderbird
keepassx
nautilus
xprop
sakura
screenshot DP1
screenshot eDP1
screenshot VGA1
edit ~/.config/i3/config
edit $HOME/.dotfiles/Makefile
edit $HOME/.dotfiles/vim/rc/vimrc
lock
exit
cansel
EOF)

case "$cmd" in
    MainTerminal) runorraise title MainTerminal 'sakura -t MainTerminal -e ./tmux-single main';;
    firefox) runorraise class Firefox firefox;;
    thunderbird) runorraise class Thunderbird thunderbird;;
    keepassx) runorraise class keepassx keepassx;;
    sakura) sakura ;;
    screenshot*) ~/bin/ss-monitor ${cmd##screenshot } ;;
    lock) xscreensaver-command --lock;;
    edit*)
        # rofi -e "vim ${cmd##edit }"
        sakura -t "$cmd" -e "sh -c \"$EDITOR ${cmd##edit }\""
    ;;
    exit) i3-msg exit;;
    xprop) 
        xprop > /tmp/tmp$$
        sakura -t "$cmd" -e $EDITOR /tmp/tmp$$
        ;;
    *) 
        sh -c "$cmd"  || rofi -e "noting to do $cmd" ;;
esac

Firefoxをvimにする

firefox vim

vimperator addonをfirefoxにインストール。

基本操作

cmd -
j 下へ
k 上へ
C-d スクロールダウン
C-u スクロールアップ
/ ジャンプ
d タブを閉じる
u 閉じたタブを開く
o ページを開く
t ページをタブで開く
gi 1つめの入力ボックスにフォーカス
Ngi Nめの入力ボックスにフォーカス
f リンク移動(番号を打つ)
F fの移動をタブにする)

vimrc的な子が使えるらしい ~/.vimperatorrc

"デフォルトのサーチエンジン
set defsearch=google

set hlsearch

まぁ、あんまりいじるとこないからこれくらいかな。

Archlinuxでスクリーンショット

archlinux linux

設定もぼちぼち落ち着いてきたので、スクリーンショットでも取ろうかと。

importというコマンドでスクリーンショットが取れるので、 どのパッケージにあるのか探してみる。

$ pkgfile import
extra/bash-completion
extra/imagemagick
community/plan9port
community/quilt

うん、bash-completionは補完機能だから、imagemagickか。

yaourt -S imagemagick

依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (3) liblqr-0.4.2-1  ocl-icd-2.2.10-1  imagemagick-6.9.7.0-2

合計ダウンロード容量:  2.25 MiB
合計インストール容量:  9.86 MiB

:: インストールを行いますか? [Y/n] 
:: パッケージを取得します...
liblqr-0.4.2-1-x86_64.pkg.tar.xz をダウンロード...
ocl-icd-2.2.10-1-x86_64.pkg.tar.xz をダウンロード...
imagemagick-6.9.7.0-2-x86_64.pkg.tar.xz をダウンロード...
キーリングを確認...
パッケージの整合性を確認しています...
パッケージファイルのロード...
ファイルの衝突を確認しています...
空き容量の確認...
:: パッケージの変更を処理しています...
インストール liblqr...
インストール ocl-icd...
ocl-icd の提案パッケージ
    opencl-driver: packaged opencl driver
インストール imagemagick...
imagemagick の提案パッケージ
    imagemagick-doc: for additional information
    ghostscript: for Ghostscript support [インストール済み]
    openexr: for OpenEXR support
    openjpeg2: for JP2 support [インストール済み]
    libwmf: for WMF support
    librsvg: for SVG support [インストール済み]
    libxml2: for XML support [インストール済み]
    libpng: for PNG support [インストール済み]
    libwebp: for WEBP support [インストール済み]

使い方をみる

$ import --help

Version: ImageMagick 6.9.7-0 Q16 x86_64 2016-12-23 http://www.imagemagick.org
Copyright: Copyright 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenCL OpenMP 
Delegates (built-in): bzlib cairo fontconfig freetype gslib jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps rsvg tiff webp wmf x xml zlib
Usage: import [options ...] [ file ]

Image Settings:
  -adjoin              join images into a single multi-image file
  -border              include window border in the output image
  -channel type        apply option to select image channels
  -colorspace type     alternate image colorspace
  -comment string      annotate image with comment
  -compress type       type of pixel compression when writing the image
  -define format:option
                       define one or more image format options
  -density geometry    horizontal and vertical density of the image
  -depth value         image depth
  -descend             obtain image by descending window hierarchy
  -display server      X server to contact
  -dispose method      layer disposal method
  -dither method       apply error diffusion to image
  -delay value         display the next image after pausing
  -encipher filename   convert plain pixels to cipher pixels
  -endian type         endianness (MSB or LSB) of the image
  -encoding type       text encoding type
  -filter type         use this filter when resizing an image
  -format &quot;string&quot;     output formatted image characteristics
  -frame               include window manager frame
  -gravity direction   which direction to gravitate towards
  -identify            identify the format and characteristics of the image
  -interlace type      None, Line, Plane, or Partition
  -interpolate method  pixel color interpolation method
  -label string        assign a label to an image
  -limit type value    Area, Disk, Map, or Memory resource limit
  -monitor             monitor progress
  -page geometry       size and location of an image canvas
  -pause seconds       seconds delay between snapshots
  -pointsize value     font point size
  -quality value       JPEG/MIFF/PNG compression level
  -quiet               suppress all warning messages
  -regard-warnings     pay attention to warning messages
  -respect-parentheses settings remain in effect until parenthesis boundary
  -sampling-factor geometry
                       horizontal and vertical sampling factor
  -scene value         image scene number
  -screen              select image from root window
  -seed value          seed a new sequence of pseudo-random numbers
  -set property value  set an image property
  -silent              operate silently, i.e. don't ring any bells 
  -snaps value         number of screen snapshots
  -support factor      resize support: > 1.0 is blurry, < 1.0 is sharp
  -synchronize         synchronize image to storage device
  -taint               declare the image as modified
  -transparent-color color
                       transparent color
  -treedepth value     color tree depth
  -verbose             print detailed information about the image
  -virtual-pixel method
                       Constant, Edge, Mirror, or Tile
  -window id           select window with this id or name

Image Operators:
  -annotate geometry text
                       annotate the image with text
  -colors value        preferred number of colors in the image
  -crop geometry       preferred size and location of the cropped image
  -encipher filename   convert plain pixels to cipher pixels
  -geometry geometry   preferred size or location of the image
  -help                print program options
  -monochrome          transform image to black and white
  -negate              replace every pixel with its complementary color 
  -repage geometry     size and location of an image canvas
  -quantize colorspace reduce colors in this colorspace
  -resize geometry     resize the image
  -rotate degrees      apply Paeth rotation to the image
  -strip               strip image of all profiles and comments
  -thumbnail geometry  create a thumbnail of the image
  -transparent color   make this color transparent within the image
  -trim                trim image edges
  -type type           image type

Miscellaneous Options:
  -debug events        display copious debugging information
  -help                print program options
  -list type           print a list of supported option arguments
  -log format          format of debugging information
  -version             print version information

By default, 'file' is written in the MIFF image format.  To
specify a particular image format, precede the filename with an image
format name and a colon (i.e. ps:image) or specify the image type as
the filename suffix (i.e. image.ps).  Specify 'file' as '-' for
standard input or output.

なんかいっぱいあるなぁ。 とりあえず、欲しい機能を抜粋

オプション 効果
-frame window別にキャプチャする
-window root 全画面キャプチャ
-crop geometry 画面から特定範囲を切り出す
オプション無し カーソルが出てきて領域を選択できる

ラッパーコマンドを作るならこんな感じか

#!/bin/basnh
NAME=$NAME
OPTION=$OPTION
DIR=/tmp

# スクリーンショットを取る
import $OPTION $DIR/$NAME
# ビューワーで確認する
feh $DIR/$NAME

マルチモニターでprimaryだけを取得するには全体を範囲にいれから切り抜く必要がある。 xrandrを使ってモニタ情報を取得する

$ xrandr | grep '^DP1' # モニタ名で絞り込むと以下のようなレスポンスがくるので
DP1 connected primary 2560x1440+3152+1152 (normal left inverted right x axis y axis) 600mm x 340mm
$ xrandr | grep '^DP1' | cut -d' ' -f4 # スペース区切りにした4フィールド目を取得
2560x1440+3152+1152

これを使ってスクリーンショットを取る

$ import -window root -crop $(xrandr|grep '^DP1'|cut -d' ' -f4) hoge.png

i3-wmに仕込むなら

~/bin/ss-monitorとかコマンド作成して

#!/bin/bash

MONITOR=${1}
NAME=$(date +%Y%m%d-%H%M%S).png
SIZE=$(xrandr|grep &quot;^${MONITOR}&quot;|cut -d&quot; &quot; -f4)
OPTIONS=&quot;&quot;
OPTIONS+=&quot;-resize 1200x1200&quot;
import -window root -crop $SIZE $OPTIONS $NAME
feh $NAME
exit 0

バインドでつなぐ

bindsym $mod+s exec ~/bin/ss-monitor DP1

f:id:kurari0118:20170102163209p:plain

Bashからfirefoxをリロードする

archlinux

コマンドを使ってWindow操作ができれば仕事が早くできる。

pacman -S xdotool

使い方 1. window idを探す xdotool search 2. window id を操作する

例: firefoxを捕まえて更新する

xdotool search --sync --all --onlyvisible --name firefox | while read id
do
    xdotool key --window $id  "CTRL+F5"
done

シンプルにする

xdotool search --sync --all --onlyvisible --name firefox | xargs  -I {} -n 1 xdotool key --window {} "CTRL+F5"

i3-wmへ

bindsym Control+Shift+r exec sh -c 'xdotool search --all --onlyvisible --name firefox | xargs -I {} xdotool key --window "{}" "CTRL+F5"'

これで、ブラウザを開く+VIで作業。 変更をしたらControl+Shift+rで更新がかかるができたー!

Archlinuxでキーリング

archlinux gnome i3

i3をgnome-session 経由で動かす恩恵の一つ、 キーリングを使うことにしました。

これによって、SSH鍵やパスワードなどを何度も入力せずに済むようになります。

  1. gnome-keyringとseahorse(GUIツール)をインストールする
yaourt -S gnome-keyring seahorse
  1. seahorseを起動
  2. SSH鍵とSSH公開鍵を~/.ssh配下に置く
  3. seahorseのuser keyに出てくるのを確認する
  4. .zshenvに以下を書く if [ -n "$DESKTOP_SESSION" ];then eval $(gnome-keyring-daemon --start) export SSH_AUTH_SOCK fi

ためす

eval $(gnome-keyring-daemon --start)
ssh-add -l <-- これで鍵情報が出てくれば勝利

ついでにGITのHTTPS認証もいけるっぽいので試す

yaourt -S libgnome-keyring
cd /usr/share/git/credential/gnome-keyring
sudo make
git config --global credential.helper /usr/lib/git-core/git-credential-gnome-keyring

うまくいけた。

ちなみにバックアップは~/.local/share/keyrings配下をバックアップ、リストアは置くだけ

しかし、keepassxとgnome-keyringの共存方法を考えたいなぁ。 これができない場合gnome-keyringはSSH鍵の管理、WEB系のパスワード管理などはKeepassXを使うことになりそう。 まぁ、WindowsだろうとLinuxだろうと使えるKeepassXの方をメインにするのが正しいな。

ちなみに、僕は、keepassxのデータベースをencfsで暗号化して、googleドライブで全PCで共有している。