rudimentary slideshow functionality
This commit is contained in:
		
							parent
							
								
									ab5b679896
								
							
						
					
					
						commit
						e859037fd5
					
				| 
						 | 
					@ -8,7 +8,8 @@ import (
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Config struct {
 | 
					type Config struct {
 | 
				
			||||||
	ImageFilters
 | 
						ImageFilters
 | 
				
			||||||
	Root string
 | 
						Root     string
 | 
				
			||||||
 | 
						Duration int
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (config *Config) load() {
 | 
					func (config *Config) load() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,5 +3,6 @@
 | 
				
			||||||
"colorize":[ 247,40,60 ],
 | 
					"colorize":[ 247,40,60 ],
 | 
				
			||||||
"contrast":-35,
 | 
					"contrast":-35,
 | 
				
			||||||
"gamma":0.8,
 | 
					"gamma":0.8,
 | 
				
			||||||
"root":"/home/andrzej/bgs"
 | 
					"root":"/home/andrzej/bgs",
 | 
				
			||||||
 | 
					"duration":1
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										15
									
								
								main.go
								
								
								
								
							
							
						
						
									
										15
									
								
								main.go
								
								
								
								
							| 
						 | 
					@ -15,12 +15,15 @@ func main() {
 | 
				
			||||||
	config.load()
 | 
						config.load()
 | 
				
			||||||
	fmt.Printf("%+v\n", config)
 | 
						fmt.Printf("%+v\n", config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	args := []string{""}
 | 
						var dir string
 | 
				
			||||||
	if len(os.Args) > 0 {
 | 
						args := os.Args[1:]
 | 
				
			||||||
		args = os.Args[1:]
 | 
						if len(args) > 0 {
 | 
				
			||||||
 | 
							dir = args[0]
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							dir = ""
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	curr, err := pickRandomImage(args[0])
 | 
						curr, err := pickRandomImage(dir)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		log.Fatal("failed to pick image!", err)
 | 
							log.Fatal("failed to pick image!", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -29,6 +32,8 @@ func main() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var waitGroup sync.WaitGroup
 | 
						var waitGroup sync.WaitGroup
 | 
				
			||||||
	waitGroup.Add(1)
 | 
						waitGroup.Add(1)
 | 
				
			||||||
	go server(&waitGroup)
 | 
						go server()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						go slideshow(dir)
 | 
				
			||||||
	waitGroup.Wait()
 | 
						waitGroup.Wait()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,11 +6,10 @@ import (
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"os/signal"
 | 
						"os/signal"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"sync"
 | 
					 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func server(waitGroup *sync.WaitGroup) {
 | 
					func server() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sockfile := "/tmp/bg-go.sock"
 | 
						sockfile := "/tmp/bg-go.sock"
 | 
				
			||||||
	//Create a Unix domain socket and listen for incoming connections.
 | 
						//Create a Unix domain socket and listen for incoming connections.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								slideshow.go
								
								
								
								
							
							
						
						
									
										17
									
								
								slideshow.go
								
								
								
								
							| 
						 | 
					@ -1,5 +1,20 @@
 | 
				
			||||||
package main
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func slideshow(dir string) {
 | 
					import (
 | 
				
			||||||
 | 
						"log"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func slideshow(dir string) {
 | 
				
			||||||
 | 
						//TODO: use channel to allow changing dir mid flow
 | 
				
			||||||
 | 
						log.Println("starting slideshow goroutine")
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
 | 
							time.Sleep(time.Duration(config.Duration) * time.Minute)
 | 
				
			||||||
 | 
							img, err := pickRandomImage(dir)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								panic(err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							hyprpaperSet(img)
 | 
				
			||||||
 | 
							log.Println("hyprpaper set!")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue