You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NixOS下用Bash自动切换壁纸时出现"No such file or dir"错误

解决Bash脚本中swww无法找到带空格壁纸文件的问题

问题原因

你的脚本中swww img "$Wallpaper_Dir'$chosen'"这一行写法错误,导致传递给swww的路径包含多余的单引号。比如当选中Chill Study.jpg时,实际传递的路径是~/.config/hypr/Wallpapers/'Chill Study.jpg',但真实文件路径是~/.config/hypr/Wallpapers/Chill Study.jpg——多出来的单引号让系统认为这是文件名的一部分,自然找不到对应文件。

你用echo输出的结果看起来像是正确的shell命令,但那只是字符串输出,并不是Bash实际传递给swww的参数内容。

修正方案

  1. 正确拼接路径:直接用双引号包裹完整的路径变量拼接结果,就能正确处理文件名中的空格:

    swww img "$Wallpaper_Dir$chosen"
    
  2. 替换ls为find(可选但更可靠):用ls传递文件名给rofi存在风险(比如文件名含换行符、特殊字符时会出错),改用find命令更安全:

    chosen=$(find "$Wallpaper_Dir" -maxdepth 1 -type f ! -name 'Best Wallpapers.md' -printf '%f\n' | rofi -dmenu -i)
    
  3. 确保路径正确展开:如果脚本中用~表示家目录,建议替换为$HOME,避免双引号中~无法展开的问题:

    Wallpaper_Dir="$HOME/.config/hypr/Wallpapers/"
    

完整修正后的脚本

#!/usr/bin/env bash

Wallpaper_Dir="$HOME/.config/hypr/Wallpapers/"

chosen=$(find "$Wallpaper_Dir" -maxdepth 1 -type f ! -name 'Best Wallpapers.md' -printf '%f\n' | rofi -dmenu -i)

swww img "$Wallpaper_Dir$chosen"

内容的提问来源于stack exchange,提问作者Ethan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:42:48