File tree Expand file tree Collapse file tree
Sources/ChangeMenuBarColor/Commands Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13,25 +13,33 @@ import SwiftHEXColors
1313
1414class Command {
1515 func createWallpaper( screen: NSScreen ) -> NSImage ? {
16- return nil
16+ fatalError ( " Override for each type " )
17+ }
18+
19+ var useAllDisplays : Bool {
20+ fatalError ( " Override for each type " )
1721 }
1822
1923 func run( ) {
20- Log . info ( " Starting up " )
24+ Log . info ( " Starting up \n " )
2125
22- guard let screen = NSScreen . main else {
23- Log . error ( " Could not find the main screen " )
24- return
25- }
26+ let screens : [ NSScreen ] = useAllDisplays ? NSScreen . screens : [ NSScreen . main ] . compactMap ( { $0 } )
2627
27- guard let adjustedWallpaper = createWallpaper ( screen : screen ) , let data = adjustedWallpaper . jpgData else {
28- Log . error ( " Could not generate new wallpaper fr the main screen " )
28+ guard !screens . isEmpty else {
29+ Log . error ( " Could not detect any screens " )
2930 return
3031 }
3132
32- setWallpaper ( screen: screen, wallpaper: data)
33+ for (index, screen) in screens. enumerated ( ) {
34+ guard let adjustedWallpaper = createWallpaper ( screen: screen) , let data = adjustedWallpaper. jpgData else {
35+ Log . error ( " Could not generate new wallpaper screen \( index) " )
36+ continue
37+ }
38+
39+ setWallpaper ( screen: screen, wallpaper: data)
40+ }
3341
34- Log . info ( " All done!" )
42+ Log . info ( " \n All done!" )
3543 }
3644
3745 func loadWallpaperImage( wallpaper: String ? , screen: NSScreen ) -> NSImage ? {
Original file line number Diff line number Diff line change @@ -24,6 +24,13 @@ final class Gradient: Command, ParsableCommand {
2424 @Argument ( help: " Wallpaper to use. If not provided the current macOS wallpaper will be used " )
2525 private var wallpaper : String ?
2626
27+ @Flag ( help: " Flag to set wallpaper for all displays not just the main display " )
28+ private var allDisplays : Bool = false
29+
30+ override var useAllDisplays : Bool {
31+ return allDisplays
32+ }
33+
2734 override func createWallpaper( screen: NSScreen ) -> NSImage ? {
2835 guard let wallpaper = loadWallpaperImage ( wallpaper: wallpaper, screen: screen) else {
2936 return nil
Original file line number Diff line number Diff line change @@ -22,6 +22,13 @@ final class SolidColor: Command, ParsableCommand {
2222 @Argument ( help: " Wallpaper to use. If not provided the current macOS wallpaper will be used " )
2323 private var wallpaper : String ?
2424
25+ @Flag ( help: " Flag to set wallpaper for all displays not just the main display " )
26+ private var allDisplays : Bool = false
27+
28+ override var useAllDisplays : Bool {
29+ return allDisplays
30+ }
31+
2532 override func createWallpaper( screen: NSScreen ) -> NSImage ? {
2633 guard let wallpaper = loadWallpaperImage ( wallpaper: wallpaper, screen: screen) else {
2734 return nil
You can’t perform that action at this time.
0 commit comments