爱浮云

“浮云”被用来指花哨而没有实际用处的东西,在计算机日常使用中,我想大多数人是希望自己看到屏幕上的内容能够漂亮一些,是喜欢“浮云”的。不过也有一些人希望计算机反应更快,有更多可用内存,界面简洁朴素,够用就好。虽然我曾经也是后者队伍的一员,但现在计算机这样快,要对自己好一点 :-D

昨天总算把yy许久的自己的桌面歌词在Linux下实现得可以自己用了。

这里有一小段演示视频(1.23MB),由于录制帧速不是很好,实际看起来的动画要比视频中的连贯和清楚一些。如果视频比较麻烦,下面是拼成的图片动画演示,实际文字中心在我屏幕的位置是下方靠近任务栏,横向上的0.618处:

简要动画演示

简要动画演示

这个想法其实是受到foo_osd插件的启发,比Windows下各种播放器的“桌面歌词“出现得要早许多,没想到直到现在才做出了一个成型的版本。

目前的实现是比较快完成的,基本是想到什么问题解决什么问题,事先没有仔细想应该如何规划。现在是由三部分组成,觉得还不错:

  1. C语言实现的osdshow,从标准输入读入一系列的“关键帧”(包括文字,字体颜色、大小、边框颜色、粗细、阴影颜色、位置、横向和纵向模糊程度以及全局透明度等)和它们之间的过渡时间和速度,在屏幕上画出来。这个程序使用了一定的措施在保持较好的灵活性的情况下,尽量保证了绘图的效率和用户看起来的连贯性。
  2. shell脚本简单实现的osdprint.sh,只接受文字和可选的时间参数,负责创建4个关键帧,调用上面的程序,在屏幕固定位置创建固定样式的动画。
  3. lua脚本mpclyosd.lua,负责从MPD获得当前播放的文件和时间,解析lrc文件,每有新的一句歌词要显示的时候就会调用上面的shell脚本去显示歌词。

不知道有多少人会需要以及喜欢这样一个东西? :-? 有意见或者想法的同学在这里留个言吧,或者通过Contact页联系我~

目前还想做一些周边的事情,但是快要考试了,估计要pending一阵子:

  • 找一个自动搜索、下载歌词的办法
  • 看看能不能支持Linux下其他一些主流音乐播放器。

我现在想是如果做得差不多的话,就公开这个项目试试看。这其实又会有一些其他的麻烦,比如我用到了各种语言来实现,其中lua需要luarocks(类似ruby的gem的专用包管理器)安装的luasocket,这样的依赖怎样在各种发行版的包管理器中体现出来,并且得到正确处理?我是不是应该把这些组件分开来?还有是放在本站上,还是放在其他的地方呢等等。

总之,期待吧 :-)

11 thoughts on “爱浮云

  1. 我随便说说啊。首先仰慕,不过三个部分使用和维护起来都比较麻烦。另外我觉得只要能在任务栏上放一个格子里面能显示歌词就很好了。OSD这种似乎有点影响工作。

  2. @pluskid : 不是,X11的各种东西都比较烂,尤其是中文,避之不及……
    这是一个只包含必要区域的不停移动的置顶gtk ARGB窗口,用cairo画的文字,加以人肉模糊的结果。

    @hzqtc : 首先,我觉得到目前为止,还没有很麻烦 :-) 各部分工作良好,几乎不需要修改,也具有我觉得不错的容错性。
    对于放在任务栏,这个使用xfce4-genmon-plugin监视一个程序的输出,然后就很简单了。这里的OSD窗口是透明的,鼠标按上去的消息会传到下面一层的窗口,不过确实会挡住一些内容,但是我觉得几乎没有什么影响,也许是我屏幕上的常年信息量不多,随便挡一下也不会感到缺少了什么的原因吧 -.- 另外我个人觉得听音乐本身也是一种浮云……
    从另外一个角度来看,开发者通常都会对自己在做的东西感觉良好,其实原因很简单,否则的话自己就不会继续做下去了。这样的话几乎不会考虑其他用户的可能的反馈,如果是大型项目的话,就算是缺乏市场调研了吧。我觉得市场调研用处不大,效果也不一定好,自由的个人不受各种限制,有条件并想做就做吧~

  3. @oldherl : 原来有这样的东西啊,我以前不知道呢。其实我也写有一个shell脚本,从google上搜索歌词。

    于是考试结束后我去和lrdis作者商量商量,敬请期待吧 :-)

  4. @xiooli :
    啊,你不说我还把这个事情弄得快忘记了 -,-

    好的啊!我也想找一个现有的项目整合一下 :) 我先去看看 lrcdis 的代码,届时给你发邮件讨论具体事宜,虽然不能马上,但应该在本周内。

Leave a Reply to quark Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>