2018年12月18日火曜日

PPxをもっとだいなファイラーっぽくする





コンセプト


  • PPxをできるだけだいなファイラーっぽくしてみる
  • 以前、見た目だけなんちゃってだいなっぽくしてみたが、今回はキーバインド、メニューを含めてだいなっぽくしてみた
  • ビューアは埋め込み表示にしている。埋め込まない方法についてはppxmemoの「2画面」以下のページを参照のこと
  • 多分ミスしている箇所あるからしばらくはちょくちょく修正するかも


具体的に


  • キーバインドは「だいなファイラーの紹介 - moewe」にあった「だいなまとめヘルプファイル」を参考にした
  • スクリプト等を使わないとできなさそうなものは未実装
  • メニューはコマンドがない箇所はクリックしても反応しない。オプションはクリックしたらカスタマイザーを起動するようにしている
  • Windowsの壁紙の変更の仕方がわからなかったので、それ関係は実装していない

やり方


  1. PPxをダウンロードし、インストールする。詳しくはppxmemoのintroを
  2. Window Module、Text Moduleをインストールする。詳しくは「ppxmemo - 機能拡張のためのソフトウェア」を
  3. 以下にあるコードをクリップボードにコピーする
  4. カスタマイザーを起動(PPCUSTW.EXEを実行するか、メニューバーから「ツール - カスタマイズ」を選択)し、ファイルタブから「編集して取込」をクリック
  5. クリップボードの内容をペーストした状態で「編集して取込」ウィンドウが開く。左下にある「追加する」のCHECKを外し、OKを押す
  6. PPxを再起動する




_Command = { ; ユーザコマンド・関数
allview = %Oi *ppv -bootid:L %*arg(1) %*name(CD,"%R","%1") %: *wait 100,1 %: *execute C,*capturewindow VL -pane:0 %: *execute C,*pane hide ~
halfview = *ifmatch /.+/,%NVY %: *ppvoption sync %: *stop
 %Oi *ppv -bootid:Y %*name(CD,"%R","%1") %: *ppvoption sync %: *wait 100,1 %: *capturewindow VY -pane:~ -selectnoactive
}
MC_celS = { ; エントリ表示 書式([;]メニュー)
だいな1 = M wF16,5 Z10 S1 T14 s1
だいな2 = M wF16,5 z10 S1 T14 s1
だいな3 = M wF16,5 zK10 S1 T14 s1
}
KC_main = { ; PPcメイン窓
B ,%"Binary menu" %M_bin
E ,%"JMTE|Text edit"%Orib,editor %FDC
I ,*ifmatch "option:e,attribure:d+" %: *countsize
L = @\L
N ,*makefile %${%1\%|%} %: %Ob notepad.exe %${%1\%|%}
P ,*pack "%2%\|%X|" %Or-
W = @F12
V ,*allview -hex
F4 = @D
F6 = @S
F7 = @F
F9 = @\L
F10 = @U
F11 ,*maximize %NC#
F12 ,*shownormal %NC#
ESC = @&F4
HOME = @\HOME
'@' ,%z
9 ,%j#18:\
LEFT ,*cursor 4, -1,6,B0100,6,B0100
RIGHT ,*cursor 4, 1,6,B0100,6,B0100
\ENTER = @Z
',' ,*RotateExecute dynastyle,*viewstyle だいな1,*viewstyle だいな2,*viewstyle だいな3
'~' ,*ifmatch "option:e,attribure:d+" %: *execute ~,*jumppath %FCD
\F1 = @A
\F2 = @I
\F3 = @M
\F8 ,%"JMTE|Text edit"%Orib,editor %FDC
\F9 ,*allview -hex
\F10 ,*pack "%2%\|%X|" %Or-
\HOME ,*unmarkentry
\RIGHT ,*cursor 8,1,13,0,13,0
\LEFT ,*cursor 8,1,12,0,12,0
\DOWN = @PDOWN
\UP = @PUP
^D ,*cursor 4, 1,6,B0100,6,B0100
^E = @UP
^F = @J
^M = @'+'
^S ,*cursor 4, -1,6,B0100,6,B0100
^X = @DOWN
^RIGHT ,*pairrate +1
^LEFT ,*pairrate -1
^DOWN ,*pairrate 50
^\RIGHT = @^RIGHT
^\LEFT = @^LEFT
}
KV_main = { ; PPvメイン窓
ENTER ,*ifmatch "!/VL/",%n %: *stop
 *ifmatch "/CA/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CB %%: *focus CA %: *stop
 *ifmatch "/CB/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CA %%: *pane swappane %%: *focus CB
SPACE ,*ifmatch "/VL/",%n %: %K-C"@DOWN@N"
BS ,*ifmatch "/VL/",%n %: %K-C"@UP@N"
F11 ,*maximize %NC#
F12 ,*shownormal %NC#
}
KV_page = { ; PPvテキスト(ページ)追加設定
B ,%K"@["
E ,%"JMTE|Text edit"%Orib,editor %FDC
I ,%K"@U"
L ,%K"@]"
T = @TAB
V ,%K"@C"
W ,%K"@;"
F3 = @']'
TAB ,*RotateExecute tbmode,*viewoption -hex,*viewoption -text
HOME ,%K"@^HOME"
\HOME ,%K"@^END"
\UP = @PUP
\DOWN = @PDOWN
^INS = @^C
}
KV_crt = { ; PPvテキスト(キャレット)追加設定
B ,%K"@["
E ,%"JMTE|Text edit"%Orib,editor %FDC
I ,%K"@U"
L ,%K"@]"
T = @TAB
V ,%K"@C"
W ,%K"@;"
F3 = @']'
TAB ,*RotateExecute tbmode,*viewoption -hex,*viewoption -text
HOME ,%K"@^HOME"
\HOME ,%K"@^END"
\UP = @PUP
\DOWN = @PDOWN
^INS = @^C
}
KV_img = { ; PPv画像追加設定
R ,%K-C"@R"
X = @L
Z = @K
HOME ,*RotateExecute id,*zoom 0,*zoom -1
}
E_cr = { ; [Enter]用判別
PNG ,*allview
:JPEG ,*allview
JPEG ,*allview
JPG ,*allview
:BMP ,*allview
BMP ,*allview
GIF ,*allview
TXT ,*allview
CPP ,*allview
H ,*allview
C ,*allview
L ,*allview
EL ,*allview
HTML ,*allview
HTM ,*allview
XYZZY ,*allview
EMACS ,*allview
SCM ,*allview
INI ,*allview
VBS ,*allview
JS ,*allview
PY ,*allview
PYW ,*allview
CFG ,*allview
LOG ,*allview
HOWM ,*allview
}

MC_menu = { ; PPc メニューバー、※指定すると初期メニューがなくなる
ファイル(&F) = %M_menuCFile
編集(&E) = %M_menuCEdit
ツール(&T) = %M_menuCTool
ウィンドウ(&W) = %M_menuCWindow
オプション(&O) = %K"CUSTOMIZE"
ヘルプ(&H) = %M_menuCHelp
}
M_menuCFile = { ** comment **
ドライブ情報...\t = %K"@I"
ドライブ移動(&W)...\t = %K"@\L"
ディレクトリサイズ\t = *countsize
}
M_menuCEdit = { ** comment **
すべて選択...\tK = *markentry
選択解除(&W)...\tShift+K = *unmarkentry
比較マーク\t = %K"@\O"
検索マーク\t = %K"@+"
壁紙に設定\t = 
機能一覧から\t = 
}
M_menuCTool = { ** comment **
ネットワークドライブの割当...\t = %K"NETUSE"
ネットワークドライブの切断(&W)...\t = %K"NETUNUSE"
ファイル検索\t = %K"@^W"
}
M_menuCWindow = { ** comment **
左右を均等にする...\tK = *pairrate 50
壁紙の更新(&W)...\tShift+K = 
}
M_menuCHelp = { ** comment **
目次...\tK = *help
about...\tShift+K = %K"ABOUT"
}

XC_stat = _AUTO,_AUTO,0,0,O"_GRE" R60 C / i"Marked" mn i"/" E0 S1 ms8 S1 i"Bytes" Df8 S1 i"Free" ; ステータス行
X_win = { ; 表示形式全般 *layout
CA = B001001001
CB = B001001001
}
F_mes = -16,0,0,0,400,0,0,0,128,3,2,1,17,MS 明朝 ; 汎用
C_entry = _WHI,_WHI,_CYA,_RED,_CYA, _MAG,_BLU,_GRE,_DWHI, _SBLU,_DBRO,_GRE,_RED,_MAG 
C_eInfo = _AUTO,_DRED,_AUTO,_DBLA,_DBLU,_DCYA,_DBLA,_BRO,_WHI,_WHI,_AUTO,_BLU,_AUTO, H404000,_BRO,_CYA,_GRE 
XC_celD = _AUTO,_AUTO,4,7 ; エントリ表示 文字,背景,カーソル,マーク 
X_inag = 0 ; 現在窓以外はグレー調に 0:しない 1:する
X_combo = 1 ; 複数 PPc を一体化 0:しない 1:する
X_combos = B0000000000001000010010000000000,B000 ; 一体化時の表示形式CC_log = _WHI,_BLA ; 共用ログ、アドレスバー(文字,背景)_AUTO可
X_mpane = 2,2 ; 一体化時の最大同時表示ペイン数,起動時のペイン数
XV_drag = 0,1,3,0 ; ドラッグ開始ボタン スクロール,選択,窓移動,ジェスチャ(右のみ)
  ; 0:使用しない 1:左 2:右 3:中/ホイール 4:左右同時 5:第4 6:第5
XC_dset = { 
* = B0000,0,0,0,-1,-1,B011111,B00000000000000000000000001,disp:"だいな1"
}


2018年12月14日金曜日

PPxでだいなっぽく画像表示(両窓に埋め込み)



前回は反対窓に埋め込み表示をした。今回は両窓にまたがって埋め込み表示をする。

やり方


二画面で、左にA、右にBがある状態を想定している。

_Command = {
allview = %Oi *ppv -bootid:L %*name(CD,"%R","%1") %: *wait 100,1 %: *execute C,*capturewindow VL -pane:0 %: *execute C,*pane hide ~
}

KV_main = { ; PPvメイン窓
ENTER ,*ifmatch "!/VL/",%n %: *stop
 *ifmatch "/CA/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CB %%: *focus CA %: *stop
 *ifmatch "/CB/",%*extract(C"%%n") %: *closeppx "VL" %: *execute C,*pane newpane CA %%: *pane swappane %%: *focus CB
UP ,*ifmatch "/VL/",%n %: %K-C"@UP@N"
DOWN ,*ifmatch "/VL/",%n %: %K-C"@DOWN@N"
SPACE ,*ifmatch "/VL/",%n %: %K-C"@SPACE@N"
\SPACE ,*ifmatch "/VL/",%n %: %K-C"@SPACE@N"
}

E_cr = { ; [Enter]用判別
PNG ,*allview
:JPEG ,*allview
JPEG ,*allview
JPG ,*allview
:BMP ,*allview
BMP ,*allview
GIF ,*allview
TXT ,*allview
CPP ,*allview
H ,*allview
C ,*allview
L ,*allview
EL ,*allview
HTML ,*allview
HTM ,*allview
XYZZY ,*allview
EMACS ,*allview
SCM ,*allview
INI ,*allview
VBS ,*allview
JS ,*allview
PY ,*allview
PYW ,*allview
CFG ,*allview
LOG ,*allview
HOWM ,*allview
}


  • 画像ファイルやテキストファイルの上でEnterを押すと、PPvを両窓にわたって埋め込み表示
  • カーソル上下で表示エントリを切り替え
  • もう一度Enterを押すとPPvを閉じる


解説


  1. PPVを起動
  2. 左ペインでPPVを埋め込み表示
  3. 反対窓をhide

というやり方でPPV全画面表示を実現し、閉じるときには

  1. PPVを閉じる
  2. hideしていたタブをnewpaneで開く
  3. もともとの状態に戻るように、PPCのペインの位置をかえたりフォーカスをかえたりする

という手順。少々トリッキー。
起動PPVIDはLに固定。

2018年12月9日日曜日

PPxであふっぽく画像表示(反対窓に埋め込み)



PPXであふっぽく画像表示できるようにする。
何年か前にもしたことがあったが(PPxをさらにあふっぽくする)、そのときは反対窓の上にPPVを重ねて表示するだけだった。今回は埋め込みでやってみる。
埋め込みのメリットは、Alt+Tabの切り替えをしても配置がずれないこと。

やり方


当然一体化型でないと機能しない。試してみたい人は、窓オプションから一体化を選択しよう。

_others = { ; その他設定
SyncViewID = Y
}

_Command = {
halfview = *ifmatch /.+/,%NVY %: *ppvoption sync %: *stop
 %Oi *ppv -bootid:Y %*name(CD,"%R","%1") %: *ppvoption sync %: *wait 100,1 %: *capturewindow VY -pane:~ -selectnoactive
}

E_cr = { ; [Enter]用判別
PNG ,*halfview
:JPEG ,*halfview
JPEG ,*halfview
JPG ,*halfview
:BMP ,*halfview
BMP ,*halfview
GIF ,*halfview
TXT ,*halfview
CPP ,*halfview
H ,*halfview
C ,*halfview
L ,*halfview
EL ,*halfview
HTML ,*halfview
HTM ,*halfview
XYZZY ,*halfview
EMACS ,*halfview
SCM ,*halfview
INI ,*halfview
VBS ,*halfview
JS ,*halfview
PY ,*halfview
PYW ,*halfview
CFG ,*halfview
LOG ,*halfview
HOWM ,*halfview
}



  • 画像ファイルやテキストファイルの上でEnterを押すと、PPvが反対窓に埋め込まれ、連動ビューになる。
  • 連動ビュー時にもう一度Enterを押すと、連動ビューを解除し、PPvを閉じる。


備考


  • PPxスレを参考にした(https://egg.5ch.net/test/read.cgi/software/1476708638/180)。
  • 連動ビュー用のPPVはYに設定してある。
  • *ppvoption sync offのあとにコマンドを続けると、*ppvoption sync oと解釈するみたいなので*ppvoption syncにしている。
  • *waitを挟まないと思ったようにフォーカスがPPCに戻ってくれないようだ。




2018年11月28日水曜日

xyzzyで連番を振る



xyzzyで連番を振れるようにする。具体的には以下。

・Enterを押したときに作動
・行頭が・ならば次の行頭にも・を付ける
・行頭が数値+ピリオド(1.や1.)ならば次の行頭に連番を振る
・連番の後ろに文字列がない行でEnterを押せば、その連番を解除

;; ■ 連番を振る
;; 行頭が「・」あるいは「1.」「1.」の場合、Enterで連番にする
;; 連番しかないのにEnterを押した場合は連番を消す

;; 全角数字あるいは半角数字に1プラスして返す関数
(defun plus-1-string (str)
  (cond
   ((string-match "[0-9]+" str)
    (setf int (parse-integer str))
    (format nil "~d" (+ int 1)))
   ((string-match "[0-9]+" str)
    (setf str (map-to-half-width-string str :ascii t))
    (setf int (parse-integer str))
    (setf str (format nil "~d" (+ int 1)))
    (map-to-full-width-string str :ascii t))))

;; 本体
(defun insert-serial-numbers ()
  (interactive)
  (if (eolp) ;;行末のときのみ作動
    (save-restriction
      (narrow-to-region
       (progn (beginning-of-line) (point))
       (progn (end-of-line) (point)))
      (beginning-of-line)
      (cond
       ((scan-buffer "^・.+" :regexp t) (end-of-line)(insert "\n・"))
       ((scan-buffer "^・" :regexp t)  (replace-match ""))
       ((scan-buffer "^\\([0-9]\\|[0-9]\\)\\(\\.\\|.\\).+" :regexp t)
 (end-of-line)
 (let ((f (match-string 1)) (b (match-string 2)))
   (insert "\n" (plus-1-string f) (format nil "~A" b))))
       ((scan-buffer "^\\([0-9]\\|[0-9]\\)\\(\\.\\|.\\)" :regexp t) (replace-match "\n"))
       ( t (end-of-line) (insert "\n"))))
    (newline))) ;; 行末でなかったら普通の改行
;;(define-key *howm-create2dir-mode-map* '#\RET 'insert-serial-numbers)
(global-set-key '#\RET 'insert-serial-numbers)

僕の場合はhowm以外で使う予定はないので、自作のhowmモードでのみ作動するようにしている。

2018年11月21日水曜日

about My Machine


LIVAZ2-4/32-W10(N4100)(メイン機)


今月のはじめに入手。SSDを換装し、そこにOSをインストール。
PPxやxyzzyを動かしたり、Web閲覧したりくらいなら特に不都合はない。ファンレスなのがGood。

【CPU】Intel CPU Celeron N4100 1.10GHz
【メモリ】4GB SO-DIMM DDR4-2400
【SSD】Crucial CT240BX200SSD1 [SSD 240GB] ( SSD )
【OS】 Windows10 Home 64bit
【ディスプレイ】LG 23.8インチ AH-IPS 24EA53VQ-P
【マウス】Logitech M570 Wireless Trackball
【キーボード】マイクロソフト Comfort Curve Keyboard 3000 3TJ-00030

自作(ゲーム機)


2016年6月に自作。

【CPU】Intel CPU Core i5-6500 3.2GHz
【マザボ】ASUSTeK H110M-A
【メモリ】CORSAIR DDR4 8GB×2 CMK16GX4M2A2666C16
【電源】ANTEC NE650C
【光学ドライブ】DRW-1814BLT
【HDD】WD HDD 3.5インチ 1TB Blue WD10EZEX/N
【SSD】Crucial CT240BX200SSD1
【ケース】Define R5
【グラボ】PowerColor Red Devil Radeon RX 470 4GB
【OS】 Windows10 Home 64bit
【ディスプレイ】iiyama 19型ワイド液晶ディスプレイ ProLite E1902WS
【マウス・キーボード】LOGICOOL ワイヤレスコンボ mk270

Asus TransBook T90CHI-3775(モバイル)


2017年1月末に中古で入手。2in1タブレットだがノートとして使用。

【CPU】Intel CPU Atom Z3775 3.2GHz
【メモリ】2GB
【ストレージ】eMMC 64GB
【OS】 Windows10 Home 32bit

2018年11月17日土曜日

M570 Wireless Trackballで仮想デスクトップ切り替え


ロジクールのトラックボールマウスM570で仮想デスクトップ切り替えをできるようにしてみる。



準備


LogicoolサポートからSetPointをダウンロードし、インストール。

タスクを選択 - その他

のドロップダウンリストから、「デスクトップ(右)」「デスクトップ(左)」を選択すればいいのだが、デフォルトの状態ではこれらが出てこない。

設定項目は、

C:\Program Files\Logicool\SetPointP\default.xml

を編集することで調整できる。編集には管理者権限が必要。

default.xml


個々のボタンに応じて、設定項目が異なる。ドロップダウンリストに表示されるアイテムと、各行を照らし合わせて、該当する行を見つけ編集すればいい。
m570の場合、真ん中に2つあるキー(デフォルトでは「進む」「戻る」が割り振られている)に対応するのは、42行目のWindows8OthersTaskGroup。
ここの末尾に「,DesktopRight,DesktopLeft」を付け足せばいい。すなわち

<HandlerSetGroup Name="Windows8OthersTaskGroup" HandlerSetNames="MetroAppMenu,MetroCharms,MetroAppSwitch,MetroStartScreen,MetroShare,MetroSettings,MetroDevices" />



<HandlerSetGroup Name="Windows8OthersTaskGroup" HandlerSetNames="MetroAppMenu,MetroCharms,MetroAppSwitch,MetroStartScreen,MetroShare,MetroSettings,MetroDevices,DesktopRight,DesktopLeft," />

にする。

参考


ロジクールマウスM705tで「デスクトップの表示」と「仮想デスクトップ」切り替えを手に入れた! - daimobi

2018年11月16日金曜日

2018年使用ソフト晒し Windows10 Home 64bit

PVが10万を超えました!(∩´ΦωΦ`)∩にゃーん!
ということでソフトウェアカスタマイズブログ界隈(生き残りいるのか?)では定番(2000年代初頭は)の使用ソフト晒し(死語)です!

ファイル管理




エディタ




ブラウザ


  • kinza (ツリー型にして使用)
    • Checker Plus for Gmai
    • Keepa - Amazon Price Tracker
    • Save to Pocket
    • Search the current site (サイト検索)
    • uBlock Origin
    • その本、図書館にあります。


マルチメディア




ユーティリティーソフト




バックアップ




市販ソフト




感想と分析


以前にやった使用ソフト晒しが2011-06-20とは恐ろしい。
このときよりも、使用ソフトは大幅に減った。今は基本的に、ファイラ、エディタ、ブラウザの3つで完結している。あとはたまに必要になる、個々の機能を持ったソフトをいくつか揃えている、という状態。新しく使うようになったのはNeeViewくらいか。

ブラウザ


ずっとFireFox派だったが、Kinzaに乗り換えている。重くなったり使いづらくなったりしても、ツリー型タブがあるという一点だけでずっと使い続けていたが、Kinzaがツリー化できることに気づき、見捨ててしまった。

ファイラ


2009年にあふから移行して以来、PPxがメインであることは変わっていない。ただその枠内で、1画面にしたり、2画面を試したり、タブを使ってみたりといろいろ変遷してはいる。今は、デスクトップPCは1画面+連動ビュー、サブのt90chiは2画面で使用。
たくさん記事を書いたが、過去の記事は自分でも内容を忘れてしまっているものが多い。以前は、下書きをし、それをプリントアウトして推敲、できる限り無駄を削ぎ落として内容を密にするという暇なことをしてたから、情報量が多すぎて自分でもまともに読めないのだ。カスタマイズの参考にしようと過去の記事をあさることがあっても、何考えてんだこいつと思いながら、疲れて途中で読むのを諦めてしまう。


ランチャ


ランチャについても相当こだわってたはずだが、ここ数年はWin標準の機能しかつかってない。PPxの一行編集をランチャにしだしたのは、ごく最近だ。fenrirは更新しなくなって久しいし、その代替をたまには探すのだが、使い続けたものはなかった。Everythingも、それを頻繁に使うような事態が少なくなり、次第に使わなくなった。
「いかにPCを効率よく使うか」という分野はもっと多くの人が取り組み、洗練されてて然るべきものだと思うんだけど、僕がPCを使いだして以来、それほど発展した気はしていない。

2018年11月13日火曜日

xyzzyでMarkdownの見出しを実装

howmで見出しを実装する際、以前ははてな記法を使ってた。それをMarkdown記法に変えてみる。
以前は「行頭に**を付ける」「行頭に*を付ける」を2つのキーに割り振り、見出し、小見出しの調整を自力でやっていた。今回は、行頭にある文字を判断して行頭に見出しを付けたり、戻したりできるようにした。
Ctrl+:を押すたびに、見出し(## )→小見出し(### )→解除 の順番で切り替わる。

markdown-kihou.l

; -*- Mode: Lisp -*-
;
;;  MarkDown記法の見出しの実装(色づけとキーバインド)
;;
;;  行頭が"##"か"###"ならばその行に色をつける
;;
;;  キーバインド
;;      C-:     行頭に見出しを付けたり、戻したりする
;;              見出し(## )→小見出し(### )→解除 の順番
;;
;;  Installation:
;;
;;      ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加
;;
;;              (require "markdown-kihou")


(defun markdown-heading ()
  (interactive "*")
  (save-excursion
    (save-restriction
      (narrow-to-region
       (progn (beginning-of-line) (point))
       (progn (end-of-line) (point)))
      (beginning-of-line)
      (cond
       ((scan-buffer "^[ \t]*### ?" :regexp t) (replace-match ""))
       ((scan-buffer "^[ \t]*## ?" :regexp t) (insert "#"))
       (t (insert "## "))))))

(global-set-key #\C-: 'markdown-heading)

(defvar *text-mode-formats*
  (compile-regexp-keyword-list
   '(
  ("^[=].*" t (:color 14 7 :line :bold ))
     ("^[#][#][#][^*].*" t (:color 7 14 :line ))
     ("^[#][#][^*].*" t (:color 7 4 :line ))
  )
   )
  ) 

(defun my-color-text-mode ()
  (make-local-variable 'regexp-keyword-list)
  (setq regexp-keyword-list *text-mode-formats*)
  )

(setq regexp-keyword-list *text-mode-formats*)
(add-hook 'text-mode-hook 'my-color-text-mode)


参考


xyzzyで現在行をコメントアウトしたり戻したりする設定 - phithonの日記

2018年11月11日日曜日

PPxをランチャとして使う⑨移動・コピー・展開先の選択




PPCで選択したファイルを、一行編集で表示したパスに移動/コピー/展開できるようにする。


準備


一行編集の文字列がフォルダかどうか判別するため、isThisFolder.jsを用意(参考:PPxをランチャとして使う⑥フォルダパスをPPcに投げる)。
また、解凍のために、7zipをインストールし、7zG.jsをScriptフォルダにいれる必要がある(参考:ppxmemo- trash / つかさのほえほえ日記 - 7-zip(7zG.exe)で書庫の展開)。

以下を編集して取込。

K_edit = { ; 一行編集/PPe兼用
^\C ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*ppcfile !copy,%so"name" %: %k"&F4"
^\M ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*ppcfile !move,%so"name" %: %k"&F4"
^\U ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*script %0Script\wrap_7zG.js,"%%a8FCDN",%so"name" %: %k"&F4"
}

やり方



  1. PPCで移動させたいファイルをマーク。一つしかないなら、カーソルを置くだけでいい
  2. 一行編集を起動し、移動先を表示
  3. Ctrl+Shift+Mを押す


コピーや展開も同様。

その他


操作先のソフトでなにか作業をすることを考えれば、一行編集を閉じる処理はいらないかも。
その場合、コマンド実行後、Enterを押して操作先のフォルダに行くか、それが不要ならEscを押して一行編集を閉じることになる。

K_edit = { ; 一行編集/PPe兼用
^\C ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*ppcfile !copy,%so"name"
^\M ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*ppcfile !move,%so"name"
^\U ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*script %0Script\wrap_7zG.js,"%%a8FCDN",%so"name"
}

参考


つかさのほえほえ日記 - PPxとfenrirの連携

これまでの設定まとめ



  • 7zipをインストール
  • PPtrayを起動
  • isThidFolder.jsとisThisFIle.jsをScriptフォルダに作成
  • isThisEmpty.jsをScriptフォルダに作成
  • subdirlist.jsをScriptフォルダに作成
  • 7zG.jsをScriptフォルダに作成
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成
  • フォルダパスをまとめたl_dir.txtをPPxフォルダに作成


X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
 *string o,name=%"PPlauncher"%eh%E %:
 *if %*script(%0\Script\isThisEmpty.js,%so"name") %: *focus %: *stop
 *if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
 *if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
 *execute,%so"name"
}

K_edit = { ; 一行編集/PPe兼用
^\C ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*ppcfile !copy,%so"name"
^\M ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*ppcfile !move,%so"name"
^\U ,%Os *string o,name=%*edittext %:
 *if !%*script(%0\Script\isThisFolder.js,%so"name") %: *linemessage notfolder %: *stop
 *execute C,*script %0Script\wrap_7zG.js,"%%a8FCDN",%so"name"
^\RIGHT ,%Os *string o,dir=%*edittext %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^\LEFT ,%Os *string o,dir=%*name(D,"%*edittext") %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
F12 ,*ppcust %: %k"&F4"
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt %: *completelist /set /file:%0l_dir.txt
}

2018年11月9日金曜日

PPxをランチャとして使う⑧Enterで空欄コマンド


入力欄に何も入力せず、Enterを押したときの挙動にコマンドを割り当てる。
「何も入力しない」をどうやって取得するかだが、引数を受け取ったか否かを判別するスクリプトを作り、それに%edittextを引数として与えることで判別する。
ランチャをすべての操作の起点に据える場合、この操作は最速になる。なのでもっとも日常的に使う頻度が高いコマンドを割り当てるべきだろう。僕はPPCをアクティブにする*focusを割り当てている。

以下をScriptフォルダに保存。

isThisEmpty.js

//!*script

// 引数があれば0を。なければ1を返す
if (PPx.Arguments.Length < 1){
  PPx.Result  = 1;
} else {
  PPx.Result  = 0;
}

以下のようにして使う。

*if %*script(%0\Script\isThisEmpty.js,%E) %: *focus %: *stop


これまでの設定まとめ



  • PPtrayを起動
  • isThidFolder.jsとisThisFIle.jsをScriptフォルダに作成
  • isThisEmpty.jsをScriptフォルダに作成
  • subdirlist.jsをScriptフォルダに作成
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成
  • フォルダパスをまとめたl_dir.txtをPPxフォルダに作成


X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
 *string o,name=%"PPlauncher"%eh%E %:
 *if %*script(%0\Script\isThisEmpty.js,%so"name") %: *focus %: *stop
 *if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
 *if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
 *execute,%so"name"
}

K_edit = { ; 一行編集/PPe兼用
^\RIGHT ,%Os *string o,dir=%*edittext %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^\LEFT ,%Os *string o,dir=%*name(D,"%*edittext") %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
F12 ,*ppcust %: %k"&F4"
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt %: *completelist /set /file:%0l_dir.txt
}

2018年11月7日水曜日

PPxをランチャとして使う⑦ステップイン・アウト


一行編集内で、ディレクトリパスのサブフォルダに潜ったり、親フォルダに戻ったりできるようにする。
サブフォルダに潜る例。


親フォルダに戻る例。


準備


以下をScriptフォルダに保存。

subdirlist.js

//!*script

// 受け取ったディレクトリのサブディレクトリパスやファイルパスを、ファイルに出力
// 第一引数 : ディレクトリ
// 第二引数 : 出力するファイルパス

// 引数がなければ終了
if (PPx.Arguments.Length < 2){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var pdir = PPx.Arguments(0);
var resultfile = PPx.Arguments(1);
var fso = PPx.CreateObject("Scripting.FileSystemObject");
var dir = fso.GetFolder(pdir);
var folders = new Enumerator(dir.SubFolders);
var files = new Enumerator(dir.Files);
var message = pdir + "\r\n"; // 自パスを追加
for(; !folders.atEnd(); folders.moveNext()){ // サブフォルダを追加
  message += fso.BuildPath(pdir, folders.item().Name) + "\r\n";
}
for(; !files.atEnd(); files.moveNext()){ // ファイルを追加
  var fname = files.item().Name;
  if (fso.GetExtensionName(fname)=="exe"){ // 拡張子がEXEのファイルのみ追加
    message += fso.BuildPath(pdir, fname) + "\r\n";
  }
}

fso.CreateTextFile(resultfile);
// 書き込み
objOutFile = fso.OpenTextFile(resultfile, 2);
objOutFile.Write(message);
objOutFile.Close();

このスクリプトは、引数を2つ与えて使う。

subdirlist.js,ディレクトリパス,テキストファイルパス

とすると、ディレクトリパス、サブフォルダパス、EXEファイルパスをファイルに出力する。こうしてできたテキストファイルを、補完候補リストとして登録すれば、ステップイン・アウトができることになる。

以下を編集して取込。

K_edit = { ; 一行編集/PPe兼用
^\RIGHT ,%Os *string o,dir=%*edittext %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^\LEFT ,%Os *string o,dir=%*name(D,"%*edittext") %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace "" %:
}

操作


  • Ctrl+Shift+←で親フォルダに移動
  • Ctrl+Shift+→でサブフォルダを表示

これまでの設定まとめ


  • PPtrayを起動
  • isThidFolder.jsとisThisFIle.jsをScriptフォルダに作成
  • subdirlist.jsをScriptフォルダに作成
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成
  • フォルダパスをまとめたl_dir.txtをPPxフォルダに作成

X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
 *string o,name=%"PPlauncher"%eh%E %:
 *if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
 *if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
 *execute,%so"name"
}

K_edit = { ; 一行編集/PPe兼用
^\RIGHT ,%Os *string o,dir=%*edittext %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^\LEFT ,%Os *string o,dir=%*name(D,"%*edittext") %:
 *string o,result=%'temp'%\result.txt %:
 *script %0\Script\subdirlist.js,"%so"dir"","%so"result"" %:
 *completelist /file:"%so"result" %:
 *replace ""
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
F12 ,*ppcust %: %k"&F4"
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt %: *completelist /set /file:%0l_dir.txt
}

2018年11月2日金曜日

PPxをランチャとして使う⑥フォルダパスをPPcに投げる



一行編集に入力された文字列がフォルダパスの場合、それをPPcで開くようにする。

準備


以下の2つのファイルをScriptフォルダに保存。isThisFolder.jsは引数を一つ取り、それが実在するフォルダパスの場合は1を、そうでない場合は0を返すスクリプト。isThisFIle.jsはそれのファイルバージョン。

isThisFolder.js

//!*script

// 引数にとった文字列がフォルダパスかどうかを判別
// フォルダパスなら1を。それ以外なら0を返す
// 第一引数 : 文字列

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var fso = PPx.CreateObject("Scripting.FileSystemObject");
var file = PPx.Arguments(0);

if(fso.FolderExists(file)){
  PPx.Result  = 1;
} else {
  PPx.Result  = 0;
}

fso = null;

isThisFile.js

//!*script

// 引数にとった文字列がファイルパスかどうかを判別
// ファイルパスなら1を。それ以外なら0を返す
// 第一引数 : 文字列

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var fso = PPx.CreateObject("Scripting.FileSystemObject");
var file = PPx.Arguments(0);

if(fso.FileExists(file)){
  PPx.Result  = 1;
} else {
  PPx.Result  = 0;
}

fso = null;

あとは、以下のコマンドを実行すれば、入力文字列で判別し、PPCでフォルダパスを開いたり、実行したりできる。

*string o,name=%"PPlauncher"%eh%E %:
*if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
*if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
*execute,%so"name"

ディレクトリの登録


フォルダパスを補完リストに登録するやり方は、PPxをランチャとして使う④ファイルパスの補完を参照のこと。
僕は、PPxフォルダに、フォルダパスを羅列したl_dir.txtというファイルを作り、それを読み込ませている。

l_dir.txt

D:\bin
D:\Data
D:\Download
D:\work
D:\Temp
D:\work\Picture
D:\bin\ppx2window64
C:\Users\tukasa\Dropbox\Temp

これをFIRSTEVENTに登録。

K_edit = { ; 一行編集/PPe兼用
FIRSTEVENT ,*completelist /set /file:%0l_dir.txt
}


これまでの設定まとめ


  • PPtrayを起動
  • isThidFolder.jsとisThisFIle.jsをScriptフォルダに作成
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成
  • フォルダパスをまとめたl_dir.txtをPPxフォルダに作成

X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
 *string o,name=%"PPlauncher"%eh%E %:
 *if %*script(%0\Script\isThisFolder.js,%so"name") %: *ppc -r %so"name" %: *stop
 *if %*script(%0\Script\isThisFile.js,%so"name") %: *execute,"%so"name"" %: *stop
 *execute,%so"name"
}

K_edit = { ; 一行編集/PPe兼用
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
F12 ,*ppcust %: %k"&F4"
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt %: *completelist /set /file:%0l_dir.txt
}

追記 2018/11/06


ファイルパスの実行とエイリアスの実行は、区別する必要ないかと思い、isThisFile.jsとそれに関する設定は省いていた。が、パスに空白が入るときの処理で区別しないとだめなことに気づき、付け足した。

2018年11月1日木曜日

PPxをランチャとして使う⑤特殊な活用

今回は、ランチャとしての純粋な用途からは少し外れる活用法を紹介する。

ショートカットコマンド




一行編集に入力した文字列を、他のソフトに渡す。

K_edit = { ; 一行編集/PPe兼用
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
}

これで、Ctrl+Wで、打ち込んだ文字列をブラウザで検索する。予め、エイリアスのbrowserに自分が使うブラウザのパスを登録しておこう。

空欄コマンド




打ち込んだ文字列に関係なく、登録したソフトウェアを起動する。
一日に何度も使うソフトで、文字を一々入力するのすら面倒なときに便利。

K_edit = { ; 一行編集/PPe兼用
F12 ,*ppcust %: %k"&F4"
}

これで、F12を押せばカスタマイザーが起動する。


計算




特別な設定は不要で、計算式を入力すれば、その結果が表示される。
X_calcがこれに関係するので、もし計算できない場合はここを見てみよう。

これまでの設定まとめ


  • PPtrayを起動
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成

X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
*execute,%"PPlauncher"%eh%E
}

K_edit = { ; 一行編集/PPe兼用
^W ,*execute ,%Ob browser  "http://google.jp/search?q=%*edittext&ie=utf-8&oe=utf-8" %: %k"&F4"
F12 ,*ppcust %: %k"&F4"
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt
}

2018年10月31日水曜日

PPxをランチャとして使う④ファイルパスの補完



ソフトウェアを、エイリアスではなくファイルパスで実行したい場合がある。

例えばたまに使うソフトウェアだ。一々エイリアスを登録するほどでもないが、パスを登録しておけば、ファイラでフォルダを潜って実行ファイルを探す手間が省ける。

これを一行編集で行うのに必要な手順は以下。

  • 補完ウィンドウを表示する設定にする
  • 既存の補完候補ファイルに追記する、あるいは新規に補完候補ファイルを作成して読み込ませる

まずは、補完の仕組みについて解説しよう。


補完について


補完ウィンドウと補完候補ファイル





X_flstで補完ウィンドウの表示設定ができる。これは2枚表示の例。僕の場合は

X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

としている。
補完ウィンドウの内容だが、ヘルプによれば

概ね「ヒストリの一覧」→「補完候補ファイルの一覧」→「カレントディレクトで該当するファイル名の一覧」の順で表示します。(状況によって順番が変わります。)

とのこと。

補完候補ファイルは、
  • PPXUPATH.TXT  ファイル名・パスの候補用
  • PPXUCMD.TXT  コマンドの候補用
  • PPXUMASK.TXT  マスクの候補用

の3つが存在する。
一行編集でどの補完ファイルを使うかは、%eで設定可能。一行編集起動後は、*editmodeで設定を変更できる。

補完候補ファイルの登録


自作の補完リストは、上の3つのファイルを編集し、追記することで登録できる。
また、適当なファイルを作り、それを*completelistで取り込むことでも可能。
その場合はFIRSTEVENTに登録し、一行編集起動時に読み込むようにする。

K_edit = { ; 一行編集/PPe兼用
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt
}

実行ファイルリストの登録


では、実際に自作の補完リストを登録してみよう。

テキストファイルの作成


まずはPPXフォルダに、適当なテキストファイルを作成。そこに登録したいパスを打ち込む。

l_cmd.txt

D:\bin\afxw\AFXW.EXE
D:\bin\AIMP4\AIMP.exe
D:\bin\AU3_Spy.exe
D:\bin\azpt\AzPainter2.exe
D:\bin\CatMemoNote\CatMemoNote.exe
D:\bin\EasyShot\EasyShot.exe
D:\bin\emacs\bin\runemacs.exe
D:\bin\emacs\bin\emacs.exe
D:\bin\Everything\Everything.exe
D:\bin\exiftool\exiftool.exe
D:\bin\FileSum\FileSum.exe
D:\bin\foobar2000\foobar2000.exe
D:\bin\H2k6\H2k6.exe
D:\bin\KOEITECMO SYSTEM VIEWER\KTSYSVIEW.exe
D:\bin\leeyes\Leeyes.exe
D:\bin\LiName\LiName.exe
D:\bin\mp3DC\mp3DirectCut.exe
D:\bin\MP3Tag\Mp3tag.exe
D:\bin\NeeView\NeeView.exe
D:\bin\nyanfi\NyanFi.exe
D:\bin\PCView\PCView.exe
D:\bin\pdfas\pdf_as.exe
D:\bin\radikool\Radikool.exe
D:\bin\rapture\rapture.exe
D:\bin\SETZER\SETZER.exe
D:\bin\Smahey\SmaHey.exe
D:\bin\sumatra\SumatraPDF.exe
D:\bin\STEP_K\x64\SuperTagEditor.exe
D:\bin\WinMerge\WinMerge.exe
D:\bin\WinMerge\WinMergeU.exe
D:\bin\xopsolt19f2\xopsolt19f2.exe
D:\bin\ScreenToGif\ScreenToGif.exe

ソフトウェアばかりを集めたフォルダがあるなら、Ctrl+Wからサブフォルダにあるexeファイルを検索し、マーク、コピーするのが早い。



登録


これを一行編集のFIRSTEVENTに登録する。

K_edit = { ; 一行編集/PPe兼用
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt
}

また、X_flstで補完リストを表示する設定にもしておこう。

実行


あとは普通に一行編集を起動すればいいだけ。補完リストの一番上に登録されているはずだ。


これまでのまとめ


  • PPtrayを起動
  • ファイルパスをまとめたl_cmd.txtをPPxフォルダに作成

X_flst = 3,2 ; エントリ補完結果一覧 0:無 1:有 2:OS版 3~5:動的,0:先頭 1:部分

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
*execute,%"PPlauncher"%eh%E
}

K_edit = { ; 一行編集/PPe兼用
ESC ,%k"&F4"
FIRSTEVENT ,*completelist /set /file:%0l_cmd.txt
}

2018年10月30日火曜日

PPxをランチャとして使う③エイリアスによる起動

エイリアスを登録し、それを実行することで、ソフトウェアを起動する。


A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto.png
}

また、EscキーをAlt+F4に置き換える。PPtrayから一行編集を起動後、Escで閉じようとするとなぜか英語のメニューが表示されてしまうから、それの回避です。

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
ESC ,%k"&F4"
}

これまでの設定まとめ


「PPxをランチャとして使う」関連の記事を続けていくと、今後どんどん設定が長く、複雑になりそうな予感がしている。
そこで、記事本体では初めて行った設定のみを書き、これまでの設定をすべてまとめたものは、一番最後に付け足すようにする。

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
*execute,%"PPlauncher"%eh%E
}

A_exec = { ; エイリアス
NeeView = D:\bin\NeeView\NeeView.exe
aimp = D:\bin\AIMP4\AIMP.exe
xyzzy = D:\bin\xyzzy\xyzzy.exe
weather = *ppv http://wttr.in/kyoto_m_lang=ja.png
}

2018年10月29日月曜日

PPxをランチャとして使う②表示非表示トグル



一行編集の表示と最小化をトグル。

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *focus !"PPlauncher" %: *stop
*execute,%"PPlauncher"%eh%E
}

前回はCtrl+Shift+Zで表示してたが、今回はCtrl+Spaceにしている。
以前fenrirを常用してたとき、このホットキーにしてたのを思い出したのだ。

表示、非表示のトグルの場合は以下になる。

K_tray = { ; PPtrayホットキー(キー指定 不可,V_xx 形式を推奨)
^' ' ,*if %*findwindowtitle("PPlauncher") %: *sendmessage %*findwindowtitle("PPlauncher"),16,0,0 %: *stop
*execute,%"PPlauncher"%eh%E
}

こちらはランチャを閉じたとき、直前にアクティブだったウィンドウにフォーカスが戻らないのが少し気になる。

2018年10月23日火曜日

PPxをランチャとして使う①



PPxをランチャとして使ってみる。一行編集をホットキーで起動、そこを起点にソフトウェアの実行等をできるようにする。
以前はfenrirだとかcraftlaunchだとかを使ってたが、だんだん複数のソフトを扱うのが面倒になり、Windowsデフォの検索機能しか使わなくなってたのだ。

準備


以下を編集して取込。

K_tray = {
^\Z ,*execute,%"PPlauncher"%E
}

ついでPPTRAYW.EXEを実行し、PPtrayを常駐させる。
一々実行するのも面倒なので、スタートアップに登録しておくといい。ちなみにスタートアップには

%j shell:Startup\

で行くことができる。

やり方


PPtrayを常駐させていれば、Ctrl+Shift+Zのホットキーで一行編集が起動する。あとは、登録しているエイリアスなり実行パスなりを打ち込み、Enterを押せばいい。

今後


今回はただ、ホットキーで一行編集を起動するようにしただけ。
具体的にランチャの機能を備えるのは次回以降で。


  • エイリアスの登録と補完リストの活用
  • 空欄コマンド
  • Web検索


などをできるようにする予定。

2018年10月11日木曜日

PCキャスター自作

今まで使ってたデスクトップ用のPCキャスターが壊れたので、自作してみる。
必要なのは以下。


  • 角型キャスター2つ
  • 滑り止めマット
  • 結束バンド


まずは角型キャスターを2つ並べて固定。




それに滑り止めマットを乗せる。



角型キャスターはダイソーの園芸コーナーに売ってた。一つ200円。滑り止めマットもダイソーのもの。結束バンドは、以前百均で買い余ってたのを使った。
角型キャスターの耐荷重は一つ20kgらしい。以前使ってた専用品より安定してて満足。

2018年1月30日火曜日

ブックマークしたファイルを一斉表示

テキストファイルや画像ファイルをブックマークし、あとでそれらを一斉に、PPvで表示/非表示できるようにする。



PPv中心の連動ビューを前提にした記事です。PPv[A]を通常の連動ビューに。それ以降のIDのPPvをブックマークファイル表示用に、というように使い分けています。

準備


Module


  • Script Module
  • Text Module
  • Key Module

を利用してます。入れてない場合はTORO's Libraryからダウンロードして入れましょう。

Script


  • MyClipMenu.js
  • setalias.js
  • resetalias.js

を利用。持ってない場合はここからダウンロードして、Scriptフォルダに保存しよう。また、新たに以下をScirptフォルダに保存。

alias2ppv.js

//!*script
// 
// 第一引数:エイリアスのベースネーム
// 第一引数+連番のエイリアスを、PPvで開くスクリプト
// 例えば第一引数がclipであれば、最初はclip0、次はclip1…と順次
// 登録されたパスをPPvで開いていく

// 引数がなければ終了
if (PPx.Arguments.Length < 1){
  PPx.SetPopLineMessage("引数が正しくありません。");
  PPx.Quit(-1);
}

var cmd = PPx.Arguments.Item(0);

for (var i = 0; i < 30; i++) {
  if (PPx.Extract("%'"+ cmd + i + "'")){
    PPx.Execute("%Oba *ppv "+PPx.Extract("%'" +cmd + i + "'"));
  } else {
    break;
  }
}


編集して取込


以下を編集して取込。

-|K_clip2 =

KV_main = { ; PPvメイン窓
^E ,*setnextkey K_clip2
}

K_clip2 = { ** comment **
E , *script %0\Script\setalias.js,clip,%%FCD
R , *script %0\Script\resetalias.js,clip
^E , *RotateExecute id,"*script %0\Script\alias2ppv.js,clip",*closeppx !/V_*A|^C_*/
',' , *script %0\Script\MyClipMenu.js
}


やり方


  1. PPvで閲覧中、気になったファイルをC_e e(Ctrl+Eを押したあとE)でブックマーク
  2. C_e C_e(Ctrl+Eを二回押し)で、ブックマークファイルをすべてPPvで開く
  3. もう一度C_e C_eで、[A]以外のPPvを閉じる
  4. C_e r(Ctrl+Eを押したあとR) でブックマークをリセット
  5. C_e ","(Ctrl+Eを押したあと,) でブックマークの保存や読み込みができるメニューを表示

このように、別々のフォルダにある画像ファイルを見比べたり



テキストファイルを参照したりできる。



テキストファイルと画像ファイルを表示したところ。


参考


2018年1月13日土曜日

ImageMagickで一括処理+サムネイルの向き修正


更新するのは超久々。つかさです。PPxは日常的に使い続けている。ただカスタマイズする時間がない。

サムネイルの向きを直したい


僕は、画像ファイル上でShift+Enterを押せば、画像処理メニューが出るようにしている。画像の回転には、ImageMagickを利用している。


記録用にガラケーで撮った写真の向きを、直したい時が度々あるのだが、これで「左に90度回転」としてもサムネイルの向きが修正されない。これの対策をする。
また、今までは個別のファイルに対しての処理しかできなかった。なので、一括処理ができるようにする。

対策


一括変更にはmogrifyというオプションを使えばいいらしい。サムネイルの回転については、-auto-orientを使う。

%OB %'imagemagic' mogrify %FCD -auto-orient -rotate 270 %FCD

とすればいい。

-|M_Picture =

A_exec = { ; エイリアス
imagemagic    = "C:\Program Files\ImageMagick-7.0.2-Q16\magick.exe"
azpainter    = D:\bin\azpt\AzPainter2.exe
}

M_Picture = { ** comment **
&Azpainter = %Ob %'azpainter' %FCD
ペイント(&P) = mspaint %FCD
-- = 
左に90度回転(&L) = %OB %'imagemagic' mogrify %FCD -auto-orient -rotate 270 %FCD
右に90度回転(&R) = %OB %'imagemagic' mogrify %FCD -auto-orient -rotate 90 %FCD
拡大縮小 = %Ob %'imagemagic' %FCD -geometry %"数値を入力してください"%{30%}%% %"ファイル名を入力してください"%{%|%X%|.%T%}
拡張子を変換 = %Ob %'imagemagic' %FCD %X.%"拡張子を入力してください"%{%|%T%|%}
マークファイルを横に連結 = %Ob %'imagemagic' %#FCD +append %"ファイル名を入力してください"%{%|%*nowdatetime(Y-N-D-HMS)%|.png%}
非透過に = %Ob %'imagemagic' %FCD -background white -alpha remove %FCD
-- = 
壁紙にする(&W) = *customize X_bg:Path=%FDC %: *customize X_bg:Type=10
}

E_scr = { ; \[Enter]用判別
JPG ,%M_Picture,A
PNG ,%M_Picture,A
JPEG ,%M_Picture,A
BMP ,%M_Picture,A
}