Xsnow不起作用

我用Apt安装了旧程序xsnow 。 该程序应该使雪( 降水的类型 )出现在桌面上。 但是,除了返回以下代码之外,运行该程序什么也不做:

 Xsnow-1.42resizeable, December 14th 2001 by Rick Jansen (rja@euronet.nl) WWW: http://www.euronet.nl/~rja/Xsnow/ 

这是因为该程序旨在在根X窗口上绘制雪,如网站上所述:

常问的问题:我开始使用Xsnow,但我没有看到任何雪? 答案:Xsnow让它在X窗口“根”窗口下雪。 桌面管理器经常遮盖该根窗口,以显示图标和工具。 所以,Xsnow工作正常,你只是看不到雪! 有关详细信息和可能的解决方案,请参阅README

我在Ubuntu 13.10 VM,Kubuntu 13.10和14.04以及Lubuntu Trusty Live USB中尝试过它。 它在Xubuntu中工作,因为在Xfce中我们默认看到根X窗口。 在聊天中,有人报告它在Ubuntu 12.04中工作,但在我的Ubuntu 13.10 VM中我没有看到雪。

问题是,正如我所提到的, xsnow仅仅依赖于根X Window。 根X窗口是所有其他X窗口的“父”,因此也是不可见的,因为现代桌面环境(如KDE和Unity)通常会使用桌面效果合成器隐藏根X窗口。 所以xsnow仍然会吸引雪,(由于图形碎片,你可以在登录和退出时获取它),它只是不可见。 在Openbox和XFCE等简单的桌面上,X窗口(以及雪)完全可见。

有没有办法查看根X窗口活动,从而看到雪?

使用KDE你可以使用kwin-snow-effect包。

如何安装:

 sudo apt-add-repository ppa:ivan-safonov/ppa sudo apt-get update sudo apt-get install kwin-effect-snow 

然后在KDE中,您可以从System Settings – > Desktop Effects – > All Effects System Settings All Effects并激活雪。

您还可以使用Compiz插件Snow ,检查它在Youtubevideo中的工作原理

我找到了xwinwrap,它可以让你将任何应用程序作为桌面背景。 点击这里下载 ,或者在这里阅读编码器的发行说明

它不允许您访问根窗口(在大多数桌面环境中这似乎很难)。 这个不适用于xsnow但它可以与许多其他应用程序一起工作……

刚刚在12.04进行了一些测试(可能这不是13.10的答案,但对于那些在12.04上想要这个的人来说)

如果在gnome-tweak-tool中,在Desktop I下检查让文件管理器处理桌面。 然后Unity和Unity-2D xsnow可以工作。 在团结-2d中,空气中的雪是看不见的,只有堕落的可见,但那是因为我的显卡和它的驱动器。 在Unity中它完美地运作。

如果在gnome-tweak-tool中我取消选中让文件管理器处理桌面 ,那么xsnow甚至不会启动并在Unity和Unity-2D中抛出错误

我是Precise with Unity环境的用户,在执行此命令之前遇到了同样的问题:

 gsettings set org.gnome.desktop.background show-desktop-icons true 

xsnowSnap


这是xsnow手册页的注释摘录:

SGI Irix 5.x

只要桌面图标可见,Silicon Graphics和Irix 5.x用户就可能看不到任何雪或圣诞老人。 要避免此问题,请发出以下命令:

 /usr/lib/desktop/telldesktop quit 

图标将消失,Xsnow将完美地工作。 要重新启动桌面,请启动

 /usr/lib/desktop/startdesktop 

或从工具箱中选择桌面 – >主目录。

甚至可以同时拥有桌面图标和xsnow(甚至多个桌面)。 您需要修改窗口管理器的资源文件4DWm ,文件〜/ .desktop- hostname / 4DWm 。 例:

  • Global.backgroundDescription: -execute /etc/killall -TERM xsnow ; /usr/local/bin/xsnow
  • Desk 1.backgroundDescription: -execute /etc/killall -TERM xsnow ; /usr/local/bin/xsnow
  • Desk 2.backgroundDescription: -execute /etc/killall -TERM xsnow ; /usr/local/bin/xsnow

从工具箱重新启动窗口管理器(4Dwm),应该出现Xsnow。 这样做是为了停止当前运行的Xsnow并在切换到另一个桌面时启动一个新的Xsnow。

对于gnome,你可以告诉它不要处理桌面

 gconftool-2 --set "/apps/nautilus/preferences/show_desktop" --type bool false 

我也曾经提到使用shantz-xwinwrap for For Unity Compiz,但是,如果没有对xsnow进行更精细的控制,它似乎不可能与13.10版本的Unity一起使用。

那说如果你想在终端执行尝试:

 wget http://anibg.googlecode.com/files/shantz-xwinwrap_v0.3.deb && sudo dpkg -i shantz-xwinwrap_v0.3.deb 

安装后,没有anibg的xwinwrap的可能执行可能如下所示:

 nice -n 15 xwinwrap -ni -o 0.90 -fs -s -sp -st -b -nf -- '/usr/games/xsnow' 

在标准的12.04.3 64位安装,登录,只有一个终端窗口靠近屏幕的底部,并启动xsnow,它的工作原理。 似乎是关于xsnow启动时窗口所在位置的剩余知识,并且在窗口移动或图标化后仍然会发生雪切断。 当窗口靠近屏幕顶部时出现问题。 注销/清除旧窗口位置,因此尝试重新登录(或者重新启动X)。 默认延迟20对我来说非常接近最小值,增加可能会使雪也出现。


xsnow选项在手册页或-h开关中描述。 -delay 30将在更新之间产生30毫秒的延迟,而不是20的默认值。我发现事情在18时变得松软,在15处没有下雪,所以在其他工作系统上,延迟太短会破坏事情。 对于13.10,“根”窗口的堆叠方式肯定存在差异。 12.04统一系统有一个根,子,孙,桌面,伟大的孙子,更新与雪和工作。 (见。的输出

  `xwininfo -root -tree` 

13.10统一系统实际上更新了根窗口,桌面甚至没有全屏子。 使用调试器,将正在更新的窗口更改为桌面会导致图像出现,但它们会删除背景,因此不是一个好的解决方案。 没有其他窗口获取更新显示任何内容,所以我猜这是与统一机制的冲突,看起来它确实需要一些改变才能工作(因为理想的是除了xsnow程序之外不需要改变任何东西)。


运行Unity的14.04更新要查看圣诞老人,请放弃Unity桌面,然后在没有它的情况下创建另一个X显示器。 根据需要来回切换,甚至使用-display:1运行程序以显示在新显示器上。

首先允许任何人运行X服务器

 dpkg-reconfigure x11-common 

并设置X访问所有人是的你可以使用sudo运行,但是你将在桌面上留下一些root拥有的文件,并且将无法再使用GUI登录(使用虚拟终端删除root拥有文件,如果你这样做)。

你是否安装了另一个窗口管理器,这样你就可以在新显示器上移动窗口了(只有当你想在那里运行其他程序时,如果你想要做的只是看到圣诞老人,请不要打扰。即使是像twm这样的简单程序也会,选择你最喜欢的根窗口暴露。

在vt上运行以下内容以获得全屏xsnow。

 xinit /usr/games/xsnow -- :1 vt8 

使用Crtl-Alt-F7切换回vt7上的原始显示,然后使用Ctrl-Alt-F8切换回xsnow

从vt7创建xterms(原始X服务器开启:0)

 xterm -display :1 & 

从新的xterm启动新窗口上的窗口管理器,例如

 twm& 

16.04更新:许多事情自14.04以来就被破坏了(参见bug#1562219),但你仍然可以运行xsnow:

  1. 如果使用Nvidiavideo驱动程序运行,请使用nouveau驱动程序。 软件更新程序/设置按钮/其他驱动程序选项卡,选择nouveau。 重启只是为了确定。
  2. 例如,登录虚拟终端(Ctrl-Alt-F2)
  3. xinit / usr / games / xsnow – :1 vt2或者启动一个xterm,从它开始其他的东西,如窗口管理器,xsnow等。只是不要开始统一,它接管后台。

祝大家圣诞节快乐

如果你查看编译说明,你会得到:

为了与虚拟窗口管理器兼容,Xsnow使用’vroot.h’,这是一个包含文件,使X程序与swm和tvtwm等窗口管理器兼容。 完整的vroot发行版可以从contrib目录中的’ftp.x.org’获得,作为’vroot.shar.Z’。 Vroot由Andreas Stolcke撰写,9/7/90,由Andreas Stolcke于1991年版权所有,1990年由Solbourne Computer Inc.版权所有。

他们似乎把vroot.h从编译中删除了,因为它包含在KDE中。 但是,标题仍然附带最新版本:

 wget http://dropmix.xs4all.nl/rick/Xsnow/xsnow-1.42.tar.gz 

并打开它。 打开xsnow.c并在250之后添加到一个新行(当我将它评论回来时会出现问题。)

 #include "vroot.h" 

然后使用以下内容构建(需要xutils-devxorg-devlibxpm-dev ):

 xmkmf make depend make 

然后(假设没有错误)

 ./xsnow 

那样有用吗? 编译版本在这里工作,但我在12.04的Gnome,而不是在虚拟机上。