ターミナルコマンドでデスクトップの背景を変更するにはどうすればよいですか?


19

OS X構成スクリプトに背景をプレーンダークグレーに設定するコマンドを追加しようとしていますが、適用すると、メインモニターにのみ設定され、現在接続されている追加のモニターは現在の背景を保持し、その後追加されたものはそのまま残りますデフォルトのスペース背景を受け取ります。私がこれまでに持っているものは次のとおりです。

# Change Desktop default BackgroundColor to grey
defaults write com.apple.desktop '{ Background = { default = {BackgroundColor = ( "0.2549019753932953", "0.4117647111415863", "0.6666666865348816" ); Change = Never; ChangePath = "/Library/Desktop Pictures/Solid Colors"; ChangeTime = 1800; DrawBackgroundColor = 1; ImageFileAlias = <00000000 00ce0003 00000000 c73804cd 0000482b 00000000 000c2624 000c2633 0000ca1c 0a310000 00000920 fffe0000 00000000 0000ffff ffff0001 000c000c 2624000c 25fc000a 0789000e 00280013 0053006f 006c0069 00640020 00470072 00610079 00200044 00610072 006b002e 0070006e 0067000f 000c0005 006f0073 00780038 00360012 00394c69 62726172 792f4465 736b746f 70205069 63747572 65732f53 6f6c6964 20436f6c 6f72732f 536f6c69 64204772 61792044 61726b2e 706e6700 00130001 2f00ffff 0000>; ImageFilePath = "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"; NewChangePath = "/Library/Desktop Pictures/Solid Colors"; NewImageFilePath = "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"; NoImage = 0; Placement = Crop; Random = 0; }; }; }'

ターミナルコマンドを使用して、暗い灰色の背景をデフォルトに設定するにはどうすればよいですか?端末コマンドを使用して既にグレーに設定されているすべてのモニターを変更するにはどうすればよいですか?


これは非常に便利なコマンドセットです。あなたの.aliasesも好きです。ありがとう!
binarybob

私はすべてを信用することはできません。mathiasbynensから分岐しましたが、キーボード、マウス、および動作しないバックグラウンド設定を追加しました。
-rudolph9

ああ、マウスの追跡速度はシステム設定で許可されているよりも高く設定されています:()追跡が速いので叫びます。
rudolph9

回答:


22

Appleが設定をsqlite DBに移動したため、これらの他のソリューションはいずれもMavericksで動作しません。しかし、これは大丈夫です。今では簡単になったため、pngはファイルシステム内のどこにでも配置でき、すべてのデスクトップ(仮想であっても)が更新されます。

 #!/usr/bin/env bash
 sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/path/to/any/picture.png'";
 killall Dock;

または、〜/ .bash_profileに関数として追加し、非相対パスを使用して端末コマンドとして呼び出します。

#   Update all Wallpapers
function wallpaper() {
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '$1'" && killall Dock 
}

wallpaper ~/path/to/any/picture.png


これが現在機能している唯一のものです。
saruftw

2
@jeremyjjbrown:答えてくれてありがとう!残念ながら、これはmacOS Sierraでもう機能していません。壁紙として使用する画像をAppleが保存している可能性はありますか?
ベンジャミンヘルツォーク

センター/タイル/スクリーンに合わせるなどの方法を知っていますか?
BSUK

@BenjaminHerzog Lee Sanghyunの答えはまだ機能しています(Mojaveで)、GitHubソースからビルドするだけで、醸造ではありません:apple.stackexchange.com/a/273628/1195
Mint

15

これはあなたのために働くはずです:

osascript
tell application "Finder"
set desktop picture to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
end tell

このMac Rumorsスレッドには他にもいくつかの方法がありますが、彼の方法が最も簡単です。


あなたはこれをあなた自身で働かせましたか?私にはうまくいきませんでした。
-rudolph9

1
私に./a.scpt:31:46: execution error: Finder got an error: Can’t set file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png" to file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png". (-10006)
rudolph9

別の色でもう一度試して、デスクトップが既に濃い灰色に設定されていると関係があるかどうかを確認しました./a.scpt:31:46: execution error: Finder got an error: Can’t set file "/Library/Desktop Pictures/Solid Colors/Solid Gray Medium.png" to file "/Library/Desktop Pictures/Solid Colors/Solid Gray Medium.png". (-10006)
-rudolph9

@KurtRudolph AppleScript Editorで実行してみてください。そこで動作しますか?私はそれを試しませんでしたが、私は過去に持っていると信じています。
-daviesgeek

@ farazの答えに基づいて、例えば、あなたは、ファイルのキーワードの前にPOSIXキーワードを含めることによって、POSIXパスを供給していることをアップルスクリプトに指示する必要があると思われるtell application "Finder" to set desktop picture to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
ジェイソンMusgrove

12

1行で行う最も簡単な方法:

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/Library/Desktop Pictures/Earth Horizon.jpg"'

使用する方法は、後でosascript実行する場合にのみ機能しますkillall Dock。他の誰かがそれに気づいていますか?
クインコメンダント

2

新しい機能を作成するよりも新しいアプリケーションをインストールしたい場合m-cliは、使用する方法があります。使いやすく、必要に応じて他の便利な機能がたくさんあります。

brew install m-cli 
m wallpaper ./wallpapers/tree.jpg

m-cliautoはOSのバージョンを検出し、スクリプトを使用して他の正解と同じことを内部的に行いbashます。


ありがとう!! これはmacOS Mojaveで機能しました(ただし、醸造バージョンは2017年から古くなっているため、Githubソースからm-cliを取得する必要があります)
Mint

1

POSIX filefor /posix/pathsまたはas aliaswith を使用してパスを適切に参照する必要がありますOld:Mac:Style:Paths

あなたの毒を選ぶ...

POSIXパス:

set desktopImage to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
tell application "Finder"
    set desktop picture to desktopImage
end tell

Macパス:

set localLibrary to path to library folder from local domain as string
set desktopImage to localLibrary & "Desktop Pictures:Solid Colors:Solid Gray Dark.png" as alias

tell application "Finder"
    set desktop picture to desktopImage
end tell

以下を使用して、上記のApplescriptを簡単に端末コマンドに変換できますosascript [-e statement]

osascript -e 'set desktopImage to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Light.png"
tell application "Finder"
    set desktop picture to desktopImage
end tell'

複数のデスクトップを設定するには、のようなものを試すことができますtell application "System Events" to set picture of every desktop to "<path>"。残念ながら、これは10.7で壊れているようです。そのため、次のエラーが発生します。Expected class name but found application constant or consideration.


1

組み合わせjeremyjjbrownの答えwillurdことで、この要点を以下のように、エル・キャピタンとアップのための最も便利な方法は次のとおりです。

  1. Automator(アプリケーション内)を開き、新しいサービスを作成します
  2. ワークフローの上部に設定Service receives selectedimage filesます。オプションで、Finderでのみ動作するように制限できます。

サンプル画像1

  1. Run Shell Scriptワークフローにアクションを 追加する
  2. デフォルトのスクリプトを空にして、jeremyjjbrownの回答を少し修正したバージョンをエディターに挿入します。

    read -e IMAGE;
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '$IMAGE'";
    killall Dock;
    
  3. 選択した名前でサービスを保存します(例:)Set Desktop Picture on all Spaces

Finderから画像を直接右クリックし、コンテキストメニューからサービスを選択して、すべてのデスクトップの背景を簡単に設定できるようになりました。


0

同じことを実現するperlスクリプト:

#!/usr/bin/perl
use Cwd;

if ($#ARGV != 1) {
    die "\nUsage: ./changedesktop <filename> <startup disk> \nwhere <filename> may be    any JPEG, PNG, GIF, TIFF or PSD and <startup disk> is the name of your boot volume.\n\n";
}

my $filename = $ARGV[0];
my $bootdisk = $ARGV[1];
my $directory = getcwd;
my $file = $bootdisk.$directory."/".$filename;
$file =~ tr/\//:/;
system("osascript -e \'tell application \"Finder\"\' -e \'set theFile to \"$file\"\' -   e     \'set desktop picture to \(theFile as alias\)\' -e \'end tell'");

3
いいえ、それは最初の投稿と同じ操作を実行するosascriptを実行するperlスクリプトで、背景として設定される画像ファイルを入力する不必要なperlコードの束を持ちます。
rudolph9

0

言及された解決策はどれもmacOS 10.14.2 Sierraで私のために働かず、私はこのAppleScriptで終わった:

tell application "System Events"
    tell every desktop
        set picture to "path_to_wallpaper.jpg"
    end tell
end tell

次のような端末から実行できます。

osascript path_to_applescript_file.scpt

またはワンライナーとして:

osascript -e 'tell application "System Events" to tell every desktop to set picture to "path_to_wallpaper.jpg"'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.