Giter Site home page Giter Site logo

haren724 / wallpaper-player-mac Goto Github PK

View Code? Open in Web Editor NEW
344.0 9.0 29.0 115.76 MB

A powerful open source live wallpaper app for mac

Home Page: https://docc.haren724.top

License: GNU General Public License v3.0

Swift 100.00%
dynamic-wallpaper live-wallpaper mac macos swift swift5 swiftui wallpaper xcode xcode15

wallpaper-player-mac's Introduction

Open Wallpaper Engine

GitHub release (latest by date)

An open source wallpaper engine for mac (which is not relative to the existing one on Steam)

Documentation · Authors · Testflight

Menu

Presentation

Wallpaper

UI

Installation

Download the .dmg file to local and drag the .app application file under /Applications folder

Usage

Hi there! I hosted a chat group on QQ: 228230228
Guys If you are interested in contributing to this project, please join this chat so that we could communicate much easier.

大家好呀! 我在QQ上建了个群:228230228 如果您有兴趣为这个项目做出贡献,不介意的话加一下呗,以便我们可以更方便地沟通。

Import from Wallpaper Engine (on Steam)

Check the File Menu

Then select Folder of your wallpaper to be imported

A normal wallpaper folder should like this (video wallpaper):

  • wallpaper_folder_name
    • wallpaper_video_name.mp4
    • project.json
    • preview.gif

Notice

So far, only format from Wallpaper Engine is supported. That means you can't directly drag a .mp4 file in and let it animate your desktop screen. We'll fix that soon.

Build

If you would like to make contribute to this project or for some other purposes, then you probably should at least build once. Here're the steps:

Prerequisite

  • macOS >= 13.0
  • Xcode >= 14.4
  • Xcode Commandline Tools

First, fork and clone your forked repo or just clone this repo directly if you don't plan to be a contributor. If you're in China, you'd better set up a HTTPS Proxy first to avoid failure due to bad connection or poor download speed.

git clone https://github.com/haren724/open-wallpaper-engine-mac

And then open the directory in Xcode.

open open-wallpaper-engine-mac -a /Applications/Xcode.app

Change Signine Certificate to your own or select 'Sign to Run Locally'

Then press command ⌘ + R to build and run

Documentation

(newly update): a testing DocC Documentation is currently on stage. Check it anytime if you need.

(old): This project's documentation can be build with docc. I'll upload the documentation link automatically built by github action here later.

wallpaper-player-mac's People

Contributors

baysonfox avatar erica-iris avatar haren724 avatar toby-shi-cloud avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wallpaper-player-mac's Issues

View太长导致编译器无法类型转换

错误
在macOS 13上编译WallpaperExplorer时出现
The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions

重现过程
重现触发bug的步骤:

  1. 进入 'Open Wallpaper Engine/ContentView/Components/WallpaperExplorer.swift'
  2. 进行编译
  3. 错误出现在第25行

预期行为
编译顺利通过

屏幕截图
FE13A9409A44E7E5C34451498E0CD20E

操作系统

  • OS: macOS
  • Version 13.3.1

Xcode系统

  • Version 14.2 (14C18)

开机壁纸自启后, 动态壁纸只占据左下角 1/4屏幕

描述错误
mac开机, 壁纸自启后, 动态壁纸只占据左下角 1/4屏幕 (后面的全屏背景则是对应的静态图片)

重现过程
重现触发bug的步骤:

  1. 重启或开机
  2. 壁纸软件自启动

重置壁纸软件设置没用;
重新打开壁纸软件则恢复正常.

系统版本: macOS 14.4.1 (23E224)
Open Wallpaper Engine 0.5.1
Mac mini 2018

Not loading anything

Describe the bug
after opening the app and it sets the "wallpaper not found" image and opens, but I can't do anything, everything keeps loading infinitely and I can't change the background.

To Reproduce
Steps to reproduce the behavior:

  1. open the app;
  2. you get it.

Expected behavior
I was hoping to be able to change the wallpaper, search for new wallpapers, upload my wallpapers.

Screenshots
Captura de Tela 2024-04-08 às 00 36 42
Captura de Tela 2024-04-08 às 00 37 03

Desktop (please complete the following information):

  • OS: [MacOS]
  • Browser [safari]
  • Version [0.5.1]

Additional context
i use an amd hackintosh

Roadmap & Known Issues

This issue was drafted for marking the known issue which includes in-progress or waiting to be solved issues, and also for everyone who is currently testing for this app to get the latest progress.

Known Issues

UI Components

  • Many components are in developing. It's normal to discover that clicking some of them like workshop will have no response.

GifImage View

  • Have problems in auto scaling

FilterResults View

  • Filters now can't work with ContentView because they two aren't connected currently

Utility

  • Multiple Screens now can't be detected and modified.
  • Scene Wallpaper can't be imported (pls don't try to import them)
  • Can't customize the wallpaper's playback settings currently (but very soon!)
  • Can only import wallpapers from menu bat - File - Import. It doesn't mean you can't even import wallpapers by dragging them directly into application container directory, but not encouraged to do that.

Small Tips

  • To jump to wallpaper folder, right click in main window's Grid View and select 'Open Wallpapers Folder in Finder'

Xcode14.2是否可以编译此项目

我的系统是macOS Monterey 12.7.2,我准备使用时,他说不符合最低的系统要求
我就寻思自己编译
就想问Xcode14.2是否可以编译此项目
或者说推出适用于macOS Monterey的open-wallpaper-engine-mac

[Pr Required (急需提交)] Modify the Structs to Conform OptionSet Protocol (修改一些结构体以遵从OptionSet协议)

Discussed in #4

Originally posted by haren724 August 7, 2023
Now I have some trouble with Filter Result ViewModel. The classes like
现在我在Filter Result ViewModel上遇到了一些问题。比如这种class

class FRWidescreenResolution<ObjectType>: FilterResultsModel where ObjectType: ObservableObject {
    weak var parent: ObjectType?
    
    required init() {}
    
    @AppStorage("StandardDefinition") public var standardDefinition = true
    @AppStorage("1280x720") public var resolution1280x720 = true
    @AppStorage("1920x1080-FullHD") public var resolution1920x1080 = true
    @AppStorage("2560x1440") public var resolution2560x1440 = true
    @AppStorage("3840x2160-4K") public var resolution3840x2160 = true
}

need to be converted into
需要被转换成

struct FRWidescreenResolution: OptionSet {
    let rawValue: Int
    
    static let allOptions = [
        "StandardDefinition",
        "1280x720",
        "Mature",
        "1920x1080-FullHD",
        "2560x1440",
        "3840x2160-4K"
    ]
    
    static let standardDefinition   = Self.init(rawValue: 1 << 0)
    static let resolution1280x720   = Self.init(rawValue: 1 << 1)
    static let resolution1920x1080  = Self.init(rawValue: 1 << 2)
    static let resolution2560x1440  = Self.init(rawValue: 1 << 3)
    static let resolution3840x2160  = Self.init(rawValue: 1 << 4)
    
    static let all: Self            = [.standardDefinition, resolution1280x720, resolution1920x1080, .resolution2560x1440, .resolution3840x2160]
    static let none: Self           = []
}

And then it comes to UI code. Make a full use of the allOptions created above to the ForEach
然后,对于UI代码的更改,充分利用上面创建的“allOptions”到“ForEach”

ForEach(Array(zip(FRWidescreenResolution.allOptions.indices, FRWidescreenResolution.allOptions)), id: \.0) { (i, option) in
    Toggle(option, isOn: Binding<Bool>(get: {
        viewModel.widescreenResolution.contains(FRWidescreenResolution(rawValue: 1 << i))
    }, set: {
        if $0 {
            viewModel.widescreenResolution.insert(FRWidescreenResolution(rawValue: 1 << i))
        } else {
            viewModel.widescreenResolution.remove(FRWidescreenResolution(rawValue: 1 << i))
        }
        print(String(describing: viewModel.widescreenResolution))
    }))
}

Last. The declaration of struct's variable needs to be modified. And because there's no methods in newly created struct anymore, so the .reset() call should be changed into = .all
最后一点,需要修改一下结构体变量的声明方法。而且因为新创建的结构体中不再有内部方法,所以.reset()调用应该更改为= .all

class FilterResultsViewModel: ObservableObject {
    // ... some codes
    @AppStorage("FRWidescreenResolution") public var widescreenResolution = FRWidescreenResolution.all
    // ... some codes
    public func reset() {
        // ... some codes
        self.widescreenResolution = .all
        // ... some codes
    }
}

播放带有音频的壁纸时”参数设置“的音量对壁纸无效

描述错误
在侧栏的参数设置中将音量调整到0.0后,壁纸音频依然不会被静音

重现过程
重现触发bug的步骤:

  1. 播放一个带有音频的壁纸
  2. 在侧栏的设置中调整音量

预期行为
壁纸播放的音频被静音

Desktop (please complete the following information):

  • OS: macOS Sonoma (23A5312d)
  • Version: git clone 的源代码

附加内容
似乎调整音量的时候会出现两个音频,一个可以被参数设置的音量控制,另一个无法被控制.

BUG反馈

1.在导入多张壁纸时无法切换壁纸
2.在呼出设置和筛选结果菜单时会出现黑屏的情况
3.某些视频壁纸无法识别

设备:DELL灵越5570
系统:MacOS13
版本:0.1.0

使用 Steam CMD 安装 Wallpaper Engine 自动拉取壁纸

您的功能请求是否与目前所存在的问题有关?请描述一下

使用 Steam CMD 安装 Wallpaper Engine 自动拉取创意工坊的壁纸列表

描述您想要的解决方案

等待 Steeam CMD 拉取完成后,可以自动扫描 ~/Library/Application Support/Steam/steamapps/content/431960 下的壁纸(默认),如果没有则可以由用户提供。

简单命令过程:

	mkdir ~/Steam && cd ~/Steam
	curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz" | tar zxvf -
	./steamcmd.sh
	# 登录
	login user pass
	# 必须设置平台为 Windows
	@sSteamCmdForcePlatformType windows
	# 下载安装 Wallpaper Engine
	app_update 431960

附加内容

拉取完成后, 可以看到在这个目录下有在创意工坊中收藏的所有壁纸

image

GifImage的View在macOS13会导致程序崩溃

GifImage的View在macOS13会导致程序崩溃

以下是报错日志:

Engine[23897:171509] -[NSNib _initWithNibNamed:bundle:options:] could not load the nibName: Open_Wallpaper_Engine.WallpaperViewController in bundle NSBundle </Users/yujiale/Library/Developer/Xcode/DerivedData/Open_Wallpaper_Engine-bxsqphaeozfylefxrsanvmmodibt/Build/Products/Debug/Open Wallpaper Engine.app> (loaded).

Roadmap New (for TestFlight)

0.8.0

  • Primary online sharing wallpaper workshop support (based on iCloud)
  • Users can subscribe & unsubscribe the wallpapers on workshop

...

0.6.0

  • Multi-display management

...

0.5.4

  • More Functions in Wallpaper Preview

0.5.3

  • Search & Filter & Sort
  • Basic Discover & Workshop page support

0.5.2

  • Installed wallpapers can be deleted directly in the context menu
  • Fix wallpaper preview thumbnail's scale issue, which can be a rectangle without the same width & height

0.5.1

  • Playback settings in SettingsView now take effect (except for when other apps entered fullscreen)
  • Fix the interactive wallpaper issue, which captures all the user input event even when the wallpaper was retained
  • Interactive wallpaper issue again, which not handle mouse movements so well (hover effects are missing)

0.5.0

  • Interactive web wallpaper
  • More Video File Format Support
  • A confirmation before switching to web & application (come soon) for safety reason

0.4.1

  • Import .mp4 files directly by dragging into main window

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.