基于 Tauri 开发的壁纸软件 [跨平台、AI、Web3 畅想] - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lufengd3
V2EX    分享创造

基于 Tauri 开发的壁纸软件 [跨平台、AI、Web3 畅想]

  •  
  •   lufengd3 2023-10-22 11:07:47 +08:00 2606 次点击
    这是一个创建于 719 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当前壁纸软件的一些问题:

    • 图片素材有限
    • 不能跨平台,支持跨平台的 90% 基于 Electron 开发,太臃肿
    • 不支持多设备同步(有多台个人电脑,壁纸共享)

    为了解决上述问题,壁纸软件技术选型:

    1. 支持 Webview ,软件内打开网站,从无穷无尽的壁纸网站中获取素材
    2. 排除 Electron 的技术方案都可以,但综合考虑研发成本,UI 层希望基于 Web 技术栈开发,当前比较有潜力的是各种语言基于 Webview 的 Hybrid 封装,先选比较或的 Tauri 试试
    3. 多设备同步,简单看是有个中心服务器中转即可,但考虑防火墙等问题,理想情况是构建 P2P 网络传输图片

    结合到 AI 与 Web3 进一步解决素材与存储分发问题:

    • 图片素材,结合 AIGC 本地生成图片
    • 图片存储分发,结合 IPFS 等 Web3 技术概念,构建去中心化的图片文件存储、传输

    再下一步:

    • AI 算力共享,本机如果没有强力显卡,分发计算任务到其他设备,支持算力共享
    • AIGC 内容版权:似乎有点像 NFT
    • 磁盘空间共享:FileCoin

    好了,YY 了这么多,回到最初的目的:PC 应用跨平台方案调研... 无论移动端还是 PC 端,研发成本作为高优决策条件时,一定是选择 Web Base 的方案,当前桌面端主流且成熟的方案是 Electron 及 CEF ,但他们的优缺点都很明显; Windows 的 Webview2 、Rust 语言的出现逐步改变这种情况。 Webview2 自不用说,微软 Teams 的重构已经能说明问题。再说到框架封装,Rust 阵营各种 GUI 框架层出不穷,Tauri 作为 Webview 结合方案代表,对比 Electron 以 10MB VS 100MB 的包大小优势吸粉无数,可能是受限于投入资源,进展感觉还比较慢,生态也一般,目前没看到企业级应用落地,可以作为潜力股持续观察,但对于小型应用已足够,主要门槛在于 Rust 。

    最后,再说壁纸软件,基于 Tauri 开发,初步实现了上述 1 2 3 的想法,欢迎一起学习交流: https://github.com/lufengd3/wallpaper-player

    截图: 11

    10 条回复    2023-10-25 13:54:01 +08:00
    jy00566722
        1
    jy00566722  
       2023-10-22 12:26:46 +08:00
    好东西。
    bihui
        2
    bihui  
       2023-10-22 14:03:32 +08:00
    666
    bestie
        3
    bestie  
       2023-10-22 15:10:19 +08:00
    我最近开发的桌面软件最开始也尝试用 Tauri ,可是 rust 我实在学不懂,后来使用了 golang 后端的 wails ,相对来说好写好多,原理上和 Tauri 是一样的。
    lufengd3
        4
    lufengd3  
    OP
       2023-10-22 16:07:52 +08:00 via iPhone
    @bestie 是的,rust 是个问题,我也不太会,基本是边搜索边写
    lsk569937453
        5
    lsk569937453  
       2023-10-23 09:00:45 +08:00
    @bestie 没记错的话,tauri 是支持用 js 操作底层逻辑的。即前端(vue/react)+底层(js)
    lufengd3
        6
    lufengd3  
    OP
       2023-10-23 10:14:25 +08:00
    @lsk569937453 对,tauri 提供了一些基础的底层能力封装,比如文件系统、消息通知、窗口之类的,但要比如要设置个壁纸、开启启动还是要写 rust 实现;除非有人写好了发个 tauri plugin ,注册为 command 给 js 调用
    chenxishen
        7
    chenxishen  
       2023-10-24 14:51:26 +08:00
    大佬没有发布吗,需要自己运行项目是吗?
    chenxishen
        8
    chenxishen  
       2023-10-24 14:54:08 +08:00
    请忽略,看错了
    lufengd3
        9
    lufengd3  
    OP
       2023-10-25 08:48:48 +08:00
    @chenxishen 可以试试安装包能用么,不行的话 clone 下来自己构建,有 rust 和 node 环境就行
    bestie
        10
    bestie  
       2023-10-25 13:54:01 +08:00
    @lufengd3
    @lsk569937453
    是的,除非你的应用知识 web 套个壳,没有什么原生操作,或者是只用 tauri 封装好的几个 api 就足够了。不然的话,还是需要学习 rust 的。相对来说我更愿意学 golang ,更简单一点。wails 和 tauri 用起来其实没太大区别。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1020 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 22:52 PVG 06:52 LAX 15:52 JFK 18:52
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86