You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

466 lines
16 KiB

# ---------------------------------------------------------------- #
# Go-Musicfox Configuration File #
# ---------------------------------------------------------------- #
# 本文件使用TOML格式。详细语法请参考: https://toml.io/ #
# ---------------------------------------------------------------- #
# 启动页相关配置
[startup]
# 是否显示启动页
enable = false
# 启动页进度条是否具有回弹效果
progressOutBounce = true
# 启动页的持续时长(秒)
loadingSeconds = 2
# 启动页欢迎语
welcome = "musicfox"
# 启动页动画:sequence、fade-in、rainbow-wave、typewriter、spinner、slide-in、glitch、matrix-rain、particle-burst
animation = "sequence"
# 是否停用启动页动画以减少动态效果
reducedMotion = false
# 启动时是否自动签到 (网易云有风控,建议关闭)
signIn = false
# 启动时是否检查应用更新
checkUpdate = true
# 主界面与核心功能配置
[main]
# altScreen 显示模式
altScreen = true
# 是否在界面中启用鼠标事件
enableMouseEvent = true
# 是否开启 Debug 模式(封面大包写入时记录字节/耗时/RSS/限流状态到 musicfox.log;慢写会 Warn)
debug = false
# 播放时 UI 刷新帧率(更高帧率可使动画更平滑,但消耗更多cpu)
frameRate = 5
# 界面语言(影响 foxful-cli 内置文案,如帮助提示、弹窗按钮)
# 可选:"zh"(中文,默认)、"en"(英文)等;留空跟随中文
locale = "zh"
# 实时频谱显示(目前仅支持 osx, beep 播放引擎)
# 调高 main.frameRate 更丝滑
[main.visualizer]
# 是否显示实时频谱
enable = false
# 频谱最大行数(0 表示不限制;会随可用空间自动缩小)
maxHeight = 8
# 频谱渲染样式:bar(柱状图), line(折线图), mirror_bar(镜像柱状图), dot(散点图),
# oscilloscope(示波器), vectorscope(向量示波器), spectrogram(滚动频谱图)
style = "oscilloscope"
# 声道模式:dual(左右声道分开显示,默认) / mono(左右声道合并显示)
channelMode = "mono"
# bar / mirror_bar 样式字符(仅使用首个 Unicode 字符)
barHalfBlock = "▌"
barFullBlock = "█"
barEmptyBlock = " "
barVerticalGradient = false
# 启用条间水平渐变(每条独立颜色,默认false)
barHorizontalGradient = false
# 无声时显示微小顶部标记(cava 风格 idle bar heads)
showIdleBarHeads = false
# 条生长方向:bottom(从下往上,默认) / top / left / right / horizontal / vertical
barOrientation = "bottom"
# mirror_bar 样式字符(留空则沿用 bar 对应项)
mirrorBarHalfBlock = "▌"
mirrorBarFullBlock = "█"
mirrorBarEmptyBlock = ""
# line 样式:braille(盲文,细腻) / block(块字符,醒目)
lineMode = "braille"
# 波段交叉点:满格
lineFullBlock = "•"
# 插值线段:下半角,纵向填充分层
lineHalfBlock = "•"
lineEmptyBlock = "•"
# dot 样式:braille(盲文,细腻) / block(块字符,醒目)
dotMode = "braille"
dotFullBlock = "•"
dotHalfBlock = "•"
dotEmptyBlock = " "
# oscilloscope 示波器样式:braille(盲文,细腻) / block(块字符,醒目)
oscilloscopeMode = "braille"
oscilloscopeScatter = false
oscilloscopeFullBlock = "█"
oscilloscopeHalfBlock = "▌"
oscilloscopeEmptyBlock = " "
# vectorscope 向量示波器样式:braille(盲文,细腻) / block(块字符,醒目)
vectorscopeMode = "braille"
vectorscopeFullBlock = "•"
vectorscopeHalfBlock = "•"
vectorscopeEmptyBlock = " "
# spectrogram 滚动频谱图设置
# 滚动速度(1=慢, 10=快,默认4)
spectrogramSpeed = 4
# FFT 频谱增强(对 line/dot 等频谱样式生效)
# FFT 帧平均数量(1 表示不平滑,越大越平滑但响应越慢)
spectrumAverage = 1
# 纵轴刻度:true=对数(dB,默认) / false=线性(原始振幅)
spectrumLogScale = true
# 叠加显示左右声道相位相关性(仅 dual 声道模式生效)
spectrumPhaseDiff = false
# cava 风格后处理平滑(对 bar/mirror_bar 样式生效)
# monstercat 指数扩散平滑(0=关,>0=启用,典型值1.0-3.0,值越小条越融合)
monstercat = 0
# waves 二次扩散模式(与monstercat互斥,0=关,1=开)
waves = false
# 视觉超调百分比(0=关,典型值10-30)
overshoot = 0
# 桌面通知相关设置
[main.notification]
# 是否启用桌面通知
enable = false
# (Windows/Linux) 默认通知图标
icon = "logo.png"
# (Windows/Linux) 是否使用歌曲的专辑封面作为通知图标(如为否则使用默认通知图标)
albumCover = true
# 是否在 TUI 内显示原生 toast 通知(点赞、下载、订阅、签到等瞬时事件)
# 独立于桌面通知开关,可与桌面通知同时启用
inApp = false
# TUI 内 toast 自动消失时长(秒,0 使用默认 4 秒)
inAppTimeout = 4
# 歌词显示相关设置
[main.lyric]
# 是否显示歌词
show = true
# 是否显示翻译歌词
showTranslation = true
# 歌词显示时间的全局偏移量(毫秒),正值表示歌词提前显示
offset = 0
# 忽略歌词解析错误
skipParseErr = false
# YRC 歌词渲染模式(仅对逐字歌词有效)
# 可选: "simple"(简单,默认), "smooth"(平滑), "wave"(波浪), "glow"(发光)
renderMode = "smooth"
# 封面图显示设置(需要支持Kitty图形协议的终端,如Kitty、WezTerm、Ghostty等)
[main.lyric.cover]
# 是否显示封面图
show = true
# 封面图宽度占窗口宽度的比例(取值范围 0.1-0.8,默认 0.3)
widthRatio = 0.1
# 封面图圆角半径百分比(取值范围 0-100,默认 8 即 8%,0 则关闭,越大越圆)
cornerRadius = 8
# 是否启用旋转封面(需要更高的帧率支持平滑效果)
spin = false
# Kitty图形协议不支持角度变化目前只能以动画呈现,合成动画需要更高的CPU性能
# 旋转封面帧率(取值范围 1-60,默认 30,更高帧率更流畅但消耗更多CPU)
spinFPS = 30
# 旋转一圈的时长(秒,取值范围 1-30,默认 6)
# 时长和帧率挂钩:60fps*6s=360帧,30fps*6s=180帧,30fps*12s=360帧
spinDuration = 6
# 是否允许在 tmux 内经 DCS 透传绘制封面,默认关闭,需要时手动开启
# 开启后仅显示静态封面,并自动缩图、限流;写入缓慢时暂停传输后重试
# 不使用 tmux 时,此设置不影响封面显示与旋转
tmuxPassthrough = false
# 桌面歌词设置(目前仅支持 macOS)
[main.lyric.desktopLyrics]
# 是否启用桌面歌词
enable = false
# X 位置系数(0.0-1.0,0.5 表示居中,0.0 最左,1.0 最右)
xPositionFactor = 0.5
# Y 位置系数(0.0-1.0,0.0 底部,1.0 顶部,默认 0.5 居中)
yPositionFactor = 0.5
# 字体大小(默认 24 匹配系统标签字体)
fontSize = 24
# 字体名称(留空使用系统默认字体)
fontName = ""
# 文字颜色(十六进制)
textColor = "#FFFFFF"
# 文字阴影颜色(十六进制)
shadowColor = "#EA403F"
# 阴影模糊半径(像素)
shadowRadius = 1.0
# 背景颜色(十六进制)
backgroundColor = "#000000"
# 背景透明度(0.0-1.0,默认 0.60)
backgroundAlpha = 0.60
# 背景圆角半径(像素,0 使用默认胶囊形状 fontSize/2)
cornerRadius = 0
# 窗口整体透明度(0.0-1.0)
windowAlpha = 1.0
# 单行模式(只显示当前行)
oneLineMode = false
# 暂停时隐藏歌词
hideOnPause = false
# 允许拖拽移动歌词窗口
draggable = true
# 窗口最大宽度占屏幕比例(0.3-0.9,默认 0.7)
maxWindowWidth = 0.7
# 桌面歌词频谱可视化(GPU 加速,Core Animation 渲染)
spectrumEnabled = false
# 频谱区域高度(像素,默认 60)
spectrumHeight = 60
# 频段数量(2-64,默认 64)
spectrumBarCount = 64
# 频段间距(像素,默认 1)
spectrumBarGap = 1
# 频谱刷新帧率(默认 30)
spectrumFPS = 30
# 频谱渲染样式:"bar" / "line" / "capsule" / "dot" / "mirror" / "waveform" / "fire" / "led" / "circular" / "ring_arc" / "ripple"
spectrumStyle = "line"
# 频谱整体透明度(0.0-1.0,默认 0.8)
spectrumOpacity = 0.8
# 低频颜色(十六进制)
spectrumColorLow = "#00FF00"
# 中频颜色(十六进制)
spectrumColorMid = "#FFCC00"
# 高频颜色(十六进制)
spectrumColorHigh = "#FF0000"
# Go性能分析工具pprof的相关设置
[main.pprof]
# pprof 服务监听的端口,通过 --pprof 命令行选项启用
port = 9876
# 账号相关配置
[main.account]
# 网易云音乐的登录 Cookie
neteaseCookie = ""
# 主题设置
[theme]
# 活跃主题名称(对应主题文件中的 name 字段,默认 "Default")
# 主题文件存放于 embed/themes/(内置)和 ~/.config/go-musicfox/themes/(用户自定义)
activeTheme = "Default"
# 是否在界面顶部显示标题
showTitle = true
# 菜单加载时显示的提示文字
loadingText = "[加载中...]"
# 是否使用双列布局(需要等宽字体以获得最佳体验)
doubleColumn = true
# 菜单行数是否根据终端高度动态变化
dynamicMenuRows = false
# 菜单内容起始行上限,限制菜单上方标题区域向下的最大偏移量(0 不限制)
maxTitleStartRow = 12
# 界面所有内容居中(实验性功能,未来版本中可能会大幅改动)
centerEverything = false
# 主题颜色
# 随机
# primaryColor = "random"
# 经典网易云音乐红
primaryColor = "#EA403F"
# 是否显示底部状态栏(面包屑导航路径 + 时间)
statusBar = true
# 无障碍模式:高对比度主题 + 强调样式
# 关闭时仍会依据终端 NO_COLOR/ACCESSIBLE 环境变量自动探测
accessibleMode = false
# 进度条字符样式配置
[theme.progress]
# 进度条渲染模式
# 可选: "smooth"(平滑,默认), "wave"(波浪), "glow"(发光)
renderMode = "smooth"
# 进度条已加载字符
fullChar = "#"
fullCharWhenFirst = "#"
fullCharWhenLast = "#"
lastFullChar = "#"
# 进度条未加载字符
emptyChar = "·"
emptyCharWhenFirst = "·"
emptyCharWhenLast = "·"
firstEmptyChar = "·"
# 下载、缓存等文件存储相关配置
[storage]
# 下载目录
# 若设置了 MUSICFOX_ROOT 变量,则默认为 ${MUSICFOX_ROOT}/download
# 若未设置 MUSICFOX_ROOT 变量,则为相应系统的默认下载目录的 go-musicfox 子目录
# 请使用绝对路径
downloadDir = ""
# 歌词文件的默认下载目录。如果为空,则与downloadDir保持一致。
lyricDir = ""
# 下载歌曲时是否同时下载歌词文件(仅当下载歌曲成功时)
downloadSongWithLyric = true
# 下载文件的命名模板
# 可用字段参考 #自定义分享模板 中的 song 部分,FileExt 为自适应的后缀名
# fileNameTpl = "{{.SongName}}-{{.SongArtists}}.{{.FileExt}}"
# 音乐播放缓存相关设置
[storage.cache]
# 缓存目录
# 若设置了 MUSICFOX_ROOT 变量,则默认为 ${MUSICFOX_ROOT}/cache
# 若未设置 MUSICFOX_ROOT 变量,则为相应系统的默认缓存目录的 go-musicfox 子目录
dir = ""
# 音乐缓存路径,相对路径相对于 dir
# 注意:如果使用 mpd,mpd 配置中的 "music_directory" 必须与 musicDir 路径一致
musicDir = "music_cache"
# 音乐缓存文件的总大小限制(单位:MB)
# 0 为不使用缓存,-1 为不限制
limit = 0
# 播放器引擎与行为配置
[player]
# 播放引擎,可选: "beep", "dlna", "mpd", "mpv", "osx", "win_media", "auto"(根据系统自动选择)
# Mac 默认 "osx", Windows 默认 "win_media", 其他系统默认 "beep"
engine = "auto"
# 允许的最大连续失败重试次数
maxPlayErrCount = 3
# 期望的歌曲音质
# 可选: "standard", "exhigh", "higher", "lossless", "hires",
# "jyeffect"(高清环绕声), "sky"(沉浸环绕声), "jymaster"(超清母带)
songLevel = "higher"
# 是否获取并显示歌单下的所有歌曲,默认前 1000 首
# 开启后可能会占用更多内存(大量歌曲数据)和带宽(会同时发送多个请求获取歌单下歌曲数据)
showAllSongsOfPlaylist = false
# Ctrl + 鼠标滚轮单次滚动调节的音量值 (取值范围 1-20)
mouseVolumeStep = 1
# `beep` 引擎专属配置 (跨平台)
[player.beep]
# MP3解码器,可选: "go-mp3", "minimp3"
# "minimp3" CPU占用更低,但稳定性可能稍逊于 "go-mp3"
mp3Decoder = "go-mp3"
# 无缝播放(仅 beep 引擎),默认关闭;MP3 使用 go-mp3 时会裁剪编码器延迟和尾部填充
# minimp3 仅支持连续流切换,不处理 MP3 编码器延迟和尾部填充
gapless = false
# 开始预加载下一首时,当前歌曲的剩余秒数
gaplessPreloadSeconds = 15
# `mpd` 引擎专属配置,需要安装mpd
[player.mpd]
# mpd 可执行文件的路径,如果为空,则在系统 PATH 中查找
bin = "mpd"
# mpd配置文件的路径
# 注意:配置文件中必须设置 pid_file,否则应用退出时无法正确关闭 mpd 进程
configFile = ""
# 与mpd服务的连接方式,可选: "tcp", "unix"
network = "unix"
# 连接地址
# network 为 "tcp" 时,填写 "ip:port" (如 "127.0.0.1:6600")
# network 为 "unix" 时,填写 socket 文件路径
addr = ""
# 是否在需要时自动启动 mpd 服务
autoStart = true
# `mpv` 引擎专属配置,需要安装 mpv
[player.mpv]
# mpv 可执行文件的路径,如果为空,则在系统 PATH 中查找
bin = "mpv"
# `dlna` 引擎专属配置
[player.dlna]
# DLNA 设备描述 URL,例如:http://192.168.1.100:49152/description.xml
# 使用 gupnp-tools 的 gupnp-universal-cp 工具可扫描并获取设备 URL
deviceUrl = ""
# 本机局域网 IP(用于内置 HTTP server)
localIP = ""
# 启动时自动播放相关配置
[autoplay]
# 是否在启动后自动开始播放
enable = false
# 自动播放的歌单
# 可选: "dailyReco", "like", "no", 或 "name:歌单名"
# "no" 表示保持上次退出时的播放列表,无视 offset
playlist = "dailyReco"
# 播放列表的起始偏移量,0 为第一首,-1 为最后一首
offset = 0
# 播放模式
# 可选: "listLoop", "order", "singleLoop", "random"(无视offset), "intelligent"(心动), "last"(上次退出时的模式)
mode = "last"
# UNM (Unlock NetEase Music) 相关配置,用于解锁灰色或无版权歌曲
[unm]
# 是否启用 UNM 功能
enable = false
# 音源匹配来源,可配置多个,用逗号分隔
# 可选: "kuwo", "kugou", "migu", "qq"
sources = ["kuwo"]
# UNM搜索其他平台限制 0-3
searchLimit = 0
# 解除会员限制
enableLocalVip = true
# 解除音质限制
unlockSoundEffects = true
# 用于获取QQ音乐音源的Cookie文件路径
qqCookieFile = ""
# 检测到无效的歌(如提示酷我...)时跳过播放,该效果计入播放错误计数
skipInvalidTracks = false
# unm代理URL,"http://127.0.0.1:8080",配置后会禁用内置的unm
proxyURL = ""
# 播放状态上报配置
[reporter]
# 是否将播放状态上报回网易云音乐(“听歌排行”)
# 注意:可能存在风控风险
[reporter.netease]
enable = false
# 上报至 Last.fm
[reporter.lastfm]
enable = false
# Last.fm API Key
key = ""
# Last.fm API Shared Secret
secret = ""
# 播放一首歌的百分比达到多少时,才进行上报
# 范围: 50-100
scrobblePoint = 50
# 是否只上报歌曲的第一位艺术家
onlyFirstArtist = false
# 是否跳过电台节目的上报
skipDjRadio = false
# 快捷键绑定配置
[keybindings]
# 是否使用应用内置的默认快捷键作为基础
# 设置为false时,只有您在 [keybindings.app] 中定义的快捷键会生效。
useDefaultKeyBindings = true
# 全局快捷键,即使应用在后台也能响应
# 格式: "快捷键组合" = "功能名"
# 功能名列表请参考项目文档
[keybindings.global]
# "ctrl+shift+space" = "toggle"
# 应用内快捷键
# 格式: "功能名" = ["按键1", "按键2", ...]
[keybindings.app]
help = ["?", "?"]
pageUp = ["ctrl+u", "pgup"]
pageDown = ["ctrl+d", "pgdown"]
# 空格
playOrToggle = ["space"]
# 空数组表示取消此功能的快捷键
toggle = []
previous = ["[", "【"]
next = ["]", "】"]
backwardFiveSec = ["X"]
backwardOneSec = ["x"]
forwardFiveSec = ["v"]
forwardTenSec = ["V"]
downVolume = ["-", "−", "ー"]
upVolume = ["=", "="]
switchPlayMode = ["p"]
intelligence = ["P"]
clearSongCache = ["u", "U"]
logout = ["W"]
curPlaylist = ["c", "C"]
# 自定义分享模板
# 格式: "名称" = "模板字符串"
# 详细用法请参考项目文档(README)
[share]