MacBook AIr」カテゴリーアーカイブ

Automator Clipboard

クイックアクションのネタもう一つ。
やってみたら上手くいったので。

macOS でフルパスが必要な時、Terminal.app にドロップしてからコピー。
が有名な方法だけど正直面倒臭い、クリップボードに一発でコピーしたい。
minipoli を作った作者だもん、もう誰も覚えていないだろうけど。

クリップボードを使ってみる ? Swiftをはじめよう!

macOS では NSPasteboard を使うようだ。
クイックアクションで簡単に作れそう。
NSRect を使わないなら JXA でイケるな、よし。

Automator 起動、クイックアクションを新規作成。
[指定された Finder 項目を取得] を配置
[JavaScript を実行] を配置

ObjC.import("Cocoa");
function run(argv) {
    let s = argv.join('\n');
    let clipboard = $.NSPasteboard.generalPasteboard;
    clipboard.clearContents;
    clipboard.setStringForType($(s), $.NSPasteboardTypeString);
}

ファイル名コピー.workflow

NSPasteboardItem は必要なかった。
後はフルパスを得たいファイルを選択してコンテキストメニューから

後はそのままテキストエディタ等に貼り付けできます。
join(‘ ‘) にすれば端末用の空白区切り、等に応用できます。

ちなみに GNOME(GTK+) 環境では同様な処理は不可能。
クリップボードは特殊なバッファではなく単なるポインタだから。
コピー元アプリを終了させるとバッファを保持できなくてペースト不可になる。
Gedit と gnome-terminal で試してみるとすぐ解ると思う。
Linux ではフルパスを使うことは皆無に近いから別にいいんだけど。

macOS Zip compress without ‘__MACOSX’

前回の続き。
よく考えたら zip コマンドなら __MACOSX は作られないんだよね。
だったらクイックアクションを作ってしまえばイイじゃん。

せっかくなのでプロンプトを出して圧縮名を決められるようにする。
デフォルトはディレクトリ名で、Fedora の file-roller と同じように。

Automator 起動、クイックアクションを新規作成。
[指定された Finder 項目を取得] を配置
[シェルスクリプトを実行] を配置

dpath=`dirname $1`
cd $dpath
dname=`basename $dpath`

res=`osascript -e "set result to display dialog \"Archive Name ?\" default answer \"$dname\"
text returned of result"`

for f in "$@"; do
	s=`basename $f`
	param+=" $s"
done

zip -r $res.zip $param

保存、日本語でもいいよ。

注意点はパラメーターはフルパスだということ。
$@ で zip に渡すと展開時にパスを再現してしまいます。
dirname, basename コマンドをフル活用しよう。

Finder で何か選択して実行、よし __MACOSX の無い zip のできあがり。
二本指タップから ZIP 圧縮するんだから同じだよね。
ただ、Automator のエディタはなんとかならんのか、編集し辛すぎ。

macOS tar

macOS で作った tar.gz を Fedora の flie-roller で開く。

何ですかこのドットディレクトリは!
中身は ._*** というドットファイルがファイル数だけ作られる。
展開すると普通にドットファイルに、普段は見えないから本当に困る。

前回の macOS 版 comipoli の配布の時まで気が付かなかった。
よく解らないから file-roller で削除して差し替えしたけど原因を探らないと。
使えるオプションとかは同じだけど、バージョンの違いかな?

バージョンどころか、そもそもまったくの別物だった。
というか、よく考えたら何か見覚えが。

「__MACOSX」の意味は? いま敢えて「zip」を見直す – 新・OS X ハッキング!(30) | マイナビニュース

__MACOSX の件はあまりにも有名だから zip ではなく tar.gz で配布していたのに。
tar よ、オマエもだったのか。。。。。

Fedora から samba でログインして file-roller を使うか、アプリを探すか迷う。

sips

Retina Display の mac でスクリーンショットする。
mac で見る分にはいいけど Blog にアップするとデカくてビビる。
前回のスクショの詳細を見ると 144dpi もある、通常の二倍だ。

全画面だと 2880x1800px になるからたしかに二倍だね。
色々検索するとみんな困っているようで、何故こうしたのやら。

macos – How can I stop my retina display from taking 2x sized screenshots? – Ask Different

sips という素敵なコマンドがあるようだ。
man を見ると BSD がとか出るけど最後に Darwin の文字が。
Fedora の dnf list にも出ないしやはり macOS 専用のようです。

早速クイックアクションに登録。
コピペだと上書きになるので別名保存処理を入れてみた。
コマンドではないからディレクトリ名を得る必要があるな。

for f in "$@"
do
    width=$((`sips -g pixelWidth "$f" | cut -s -d ':' -f 2 | cut -c 2-` / 2))
    dir=${f%/*}
    name=`date "+72dpi-%Y%m%d-%H:%M.%S.png"`
    sips -s dpiHeight 72.0 -s dpiWidth 72.0 -Z $width "$f" --out "$dir/$name"
done

name はお好みに。

値は正常になるけどなんかボケるなぁ。
でもこんなもんでいいだろう、今回よりコレ使います。

Macbook Plexus

我が Macbook Air 2018 の天板に早くもキズがぁ!
いや爪は引っかからないし線的な汚れかも。

2011 モデルのゴールドは雑に扱ってもこんなにならなかったのに。
スペースグレイの色が汚れやすいのか、新型の表面処理が原因だろうか?

しかしいくら雑巾で拭いても全然消えない、これは困った。
コンパウンドしかないかなぁと思いながら周りを見ると。。。。。

Plexus があるじゃないの。
バイク乗りならみんな持っている、2 りんかんで売っているし。
いや筆者はビッグ?なスクーター、ってそれはどうでもよくて。

いつもヘルメットを拭いている高級な布に吹きかけ天板をサラッと。
一発で綺麗になった、Plexus ってこんなに凄かったのか!

ということで、Macbook のお手入れにも Plexus は’使えます。
Fedora で使っている RealForce も今度バラした時に使うわ。