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