为 Conky 发布 spotify 小部件

为 Conky 发布 spotify 小部件

大家好,我一直在尝试将 Khiky-Merveilles (u/Khiky73) 的 REGULUS conky 主题适配到我的高分辨率显示器上(它原本是为高清显示器设计的),同时也让它与 Madh93 的Conky 的 Spotify 脚本因为默认情况下,REGULUS 使用 MPD 来处理音乐统计数据。我花了几个小时才让它工作起来(这是我第一次如此深入地使用 Conky)。现在,当我启动 Spofity 时,歌曲标题和艺术家姓名会与歌曲的封面一起显示在桌面的右下角。当我关闭 spotify 时,它就消失了。

我遇到的问题是,当 conky 在系统启动时启动时,spotify 统计数据不会显示。当我启动 spoity 时,只有“:”符号显示,没有其他内容。由于某种原因,对象中没有执行外部脚本execi。但是,一旦我${if_running spotify}从脚本中删除它,它就会开始正常工作,然后,一旦我${if_running spotify}重新添加脚本并重新启动 conky,它就会按预期正常工作。我真的不知道发生了什么。文本不显示是有道理的,因为需要为文本(歌曲的标题和艺术家的名字)执行外部脚本,但为什么封面图片和 spotify 图标也没有显示,即使它们没有连接到脚本。

图像表明问题

有谁知道是什么原因导致了这种奇怪的行为?

conky.config = {
--==============================================================================
--  2021/10/2
--  this is for conky version 1.10 or Newer
-- 
--  RegSpot - Conky theme (Based on REGULUS theme)

--  authors  : Khiky-Merveilles & Madh93 & Argus_Khan 
--  license : Distributed under the terms of GNU GPL version 3 or later
--  notes   : Created on 2048x1152 resolution.

--==============================================================================

-- Size and Position settings --
  alignment = 'top_right',
  gap_x = 0,
  gap_y = 0,
  minimum_height = 1152,
  minimum_width = 900,
  
-- Text settings --
  use_xft = true,
  font = 'Roboto:light:size=9',
  
-- Color Settings --
  default_color = 'white',
  default_outline_color = 'white',
  default_shade_color = 'white',
  color1 = '212021',
  color2 = 'FF3A70',
  color3 = '0165FE',
  
-- Window Settings --
  background = false,
  border_width = 1,
  draw_borders = false,
  draw_graph_borders = false,
  draw_outline = false,
  draw_shades = false,
  own_window = true,
  own_window_colour = '000000',
  own_window_class = 'Conky',
  own_window_argb_visual = false,
  own_window_type = 'desktop',
  own_window_transparent = true,
  own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
  stippled_borders = 0,
  
-- Others --
  cpu_avg_samples = 2,
  net_avg_samples = 2,
  double_buffer = true,
  out_to_console = false,
  out_to_stderr = false,
  extra_newline = false,
  update_interval = 1,
  uppercase = false,
  use_spacer = 'none',
  show_graph_scale = false,
  show_graph_range = false,
  lua_load = '~/.config/conky/Regulus/rings-v1.2.1.lua',
  lua_draw_hook_pre = 'ring_stats',
}

conky.text = [[
${offset 470}${voffset 0}${color}${font Bebas Neue:size=138}${time %H}${font Bebas Neue:size=0}
${offset 470}${voffset 0}${color}${font Bebas Neue:size=138}${time %M}${font Bebas Neue:size=0}
${offset 470}${voffset 30}${color}${font Bebas Neue:size=20}${time %^A}
${offset 470}${voffset 0}${color}${font Bebas Neue:size=20}${time %d / %B / %Y}${font Bebas Neue:size=0}

# --- Weather scripts --- #
${execi 50 ~/.config/conky/Regulus/scripts/weather.sh}
${execi 50 ~/.config/conky/Regulus/scripts/weather-icon.sh white3 $(cat ~/.cache/weather.json | jq -r '.weather[0].icon')}
${offset 775}${voffset -170}${color}${font Bebas Neue:size=38}${execi 50 cat ~/.cache/weather.json | jq '.main.temp' | awk '{print int($1+0.5)}'}°C${font Bebas Neue:size=0}
${offset 700}${voffset 12}${color}${font Helvetica Neue:size=12}.............
${offset 700}${voffset 0}${color2}${font Helvetica Neue:bold:size=10}${execi 50 cat ~/.cache/weather.json | jq -r '.name'}
${offset 700}${voffset 0}${color}${font Helvetica Neue:size=12}${execi 50 cat ~/.cache/weather.json | jq -r '.weather[0].description' | sed "s|\<.|\U&|g"}${font HelveticaNeue:size=1}
${offset 700}${voffset 3}${color}${font Helvetica Neue:size=10}Wind speed : ${execi 50 (cat ~/.cache/weather.json | jq '.wind.speed')}km/h
${offset 700}${voffset 0}${color}${font Helvetica Neue:size=10}Humidity : ${execi 50 (cat ~/.cache/weather.json | jq '.main.humidity')}%

# --- Network scripts --- #
${offset 700}${voffset 40}${font Material:size=10}${font Helvetica Neue:bold:size=9}: ${execi 5 ~/.config/conky/Regulus/scripts/ssid}
${offset 700}${voffset 5}${font Helvetica Neue:size=10}Downspeed : ${downspeed wlp5s0}
${offset 700}${voffset 0}${color 1EF75E}${downspeedgraph wlp5s0 35,150 1EF75E 1EF75E}
${offset 700}${voffset 0}${color}${font Helvetica Neue:size=10}Upspeed : ${upspeed wlp5s0}
${offset 700}${voffset 0}${color FF3A70}${upspeedgraph wlp5s0 35,150 FF3A70 FF3A70}

# --- Music scripts --- #

${execi 1 cd ./scripts/spotify/ ; ./cover.sh ; cd .. ; cd ..}
${color}${alignr 13}${offset -260}${voffset 300}${font Helvetica Neue:bold:size=18}${if_running spotify}${execi 1 sh ./scripts/spotify/status.sh} :${else} ${endif}
${color2}${alignr 13}${offset -220}${voffset 5}${font Bebas Neue:size=45}${if_running spotify}${execi 1 sh ./scripts/spotify/artist.sh}${else} ${endif}${font Google Sans:bold:size=2}
${color}${alignr 13}${offset -220}${voffset 5}${font Material:size=24}${if_running spotify} ${font Helvetica Neue:size=20}${execi 1 sh ./scripts/spotify/title.sh}${else} ${endif}${font Google Sans:bold:size=2}


# --- Drawing backgrounds and Icons --- #
${image ~/.config/conky/Regulus/Box1.png -s 190x190 -p 680,20}
${image ~/.config/conky/Regulus/Box.png -s 190x190 -p 680,230}
${image ~/.config/conky/Regulus/Box.png -s 190x190 -p 680,440}

${image ~/.cache/weather-icon.png -p 690,250 -s 65x65 -f 100}

# --- Drwaing Current Playing Music HUD --- #
${image ./icons/spotify-512.png -p 635,965 -s 30x30}
${image ./current/current.jpg -p 690,940 -s 185x185 -f 5}

${if_running rhythmbox}${image ./icons/headphones-3-512.png -p 635,965 -s 30x30}${else} ${endif}
${if_running rhythmbox}${image ./icons/headphones-3-512.png -p 690,940 -s 185x185 -f 1}${else} ${endif}

]]

主题正常工作时的样子:

主题正常工作时的外观

PS 我试图让这个主题也能与 Rhythmbox 配合使用,但我不知道如何在 Conky 中使用嵌套的 if else 语句。所以我无法让它工作。也因为没有办法将文本垂直打印到绝对位置。

答案1

这些脚本似乎都用于dbus-send与 spotify 进程通信以检索专辑标题等。如果失败,您将得到返回的空字符串以及您观察到的效果。dbus-send需要知道如何连接到 dbus。通常,这在环境变量中提供,DBUS_SESSION_BUS_ADDRESS该变量设置为字符串,例如unix:path=/run/user/1000/bus

可能当你登录时,conky 会从不存在或尚未设置此变量的环境中启动。但是当你重新启动 conky 时,它可能会从变量已设置。

您可以通过显示文件中的变量来测试这一点.conkyrc,例如使用${execi 1 echo bus is $DBUS_SESSION_BUS_ADDRESS}。一个临时的解决方法是在启动 conky 之前将变量设置为预期的典型值。

答案2

我设法修复了这个问题,结果发现我犯的错误是,我在调用 spotify 的外部脚本和图像绘制调用时使用了相对路径,错误地认为当前工作目录是存储主 conky 启动脚本的目录,但事实并非如此。conky 启动脚本是从而不是执行的,~因此~/.config/conky/regulus/它使相对路径无效。

相关内容