どうも、さ犬🐶です。
実は、Macで開発環境を作った後にスクリーンショットを撮ると以下のようなアラートが出てスクリーンショットが撮れないという事態が起こるようになって困っていたのですが、解決方法がわかったので記事にしました!
ググってもこの症状自体まれらしく、ちゃんとまとまってる記事がなくてしばらく諦めてGyazo使ってたけど、やっぱりローカルの時はmacのスクショを使いたかった...
再現手順
- 「Command + Shift + 3」や「Command + Shift + 4」を押す
- 以下のようなアラートが出てスクリーンショットが保存されない
前提
よく
「システム環境設定>キーボード>ショートカット>スクリーンショット」にあるチェックボックスにチェックがついていないのでは?
という回答があるけど、それで解決できたら困ってないし、そもそも事象と解決方法に何も関連性がないのでそれはないですね。
それならそもそもスクリーンショットすら起動しないはずなので、こんなアラートはでないはずです。
そこで、このアラートの文章を読むと、どうやら以下のようなことが起こっていると予測できます。
原因
画像データを特定の拡張子で保存したいんだけど、その拡張子が画像のものではないから保存ができない
つまり、スクリーンショットの保存形式が png, jpg, pdf などのような画像を表示できるものではないということ。
Macではスクリーンショットの保存形式はデフォルトで、pngになっているので普通ならこんなことは起きないです。しかし起きてしまった。。。
調べると、macのスクリーンショットの設定が書かれたファイルがあってそれを変更すると治る感じだったので、まずは設定ファイルを色々書き換えるコマンドを紹介します。
スクリーンショットの設定方法
Macのスクリーンショットの設定を行うコマンドが用意されているので紹介します。参考
設定を確認
defaults read com.apple.screencapture
json形式で設定を確認できます。
設定をデフォルトに戻す
以下のコマンドでスクリーンショットの全設定をデフォルトに戻せます。
defaults delete com.apple.screencapture
ただし、特定の属性のみをデフォルトに戻すには以下のようにします。
defaults delete com.apple.screencapture {属性の識別子}
ex) defaults delete com.apple.screencapture type
属性 | 識別子 |
---|---|
保存形式 | type |
保存場所 | location |
ウィンドウの影 | disable-shadow |
設定の反映
killall SystemUIServer
保存形式を変更
defaults write com.apple.screencapture type {保存形式}
ex) defaults write com.apple.screencapture type png
保存形式一覧
- png
- gif
- jpg
- jp2 (JPEG2000)
- bmp
- exr (OpenEXR)
- psd (Photoshop 形式)
- pct (PICT)
- sgi
- tga
- tif
保存場所を変更
defaults write com.apple.screencapture location {保存先フォルダ}
ex) defaults delete com.apple.screencapture location ~/Desktop/Screenshot
ウインドウの影が無い状態のスクリーンショットを撮る
defaults write com.apple.screencapture disable-shadow -bool true
解決方法
おそらく開発環境を構築する際に何らかの操作でスクリーンショットの保存形式が変わってしまっているので、デフォルトに戻してあげれば良いです。
- コンソールを開く(ターミナル.appまたはiTerm.app)
- 以下のコマンドをを実行する
$ defaults delete com.apple.screencapture type
$ killall SystemUIServer
これでCommand + Shift + 4が復活しました