如何为xscreensaver的解锁屏幕设置主题?

如何在Xubuntu 11.10中替换丑陋的屏幕解锁界面?
标准的xscreensaver非常难看。
有没有适用于解锁界面的主题?
6个回答

最接近主题化的方法是更改颜色/字体和日期时间格式。如果需要更多的变化,可能需要重新编译xscreensaver并更改源代码。
例如 -

enter image description here

可以改成 -

enter image description here

如何操作

使用leafpad(leafpad ~/.Xresources)创建/修改位于主文件夹中的.Xresources文件。

将以下内容复制并粘贴到上面的第一张图片中:

xscreensaver.splash: false
 
!font settings
xscreensaver.Dialog.headingFont:        -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.bodyFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.labelFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.unameFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.buttonFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.dateFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.passwd.passwdFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
 
!general dialog box (affects main hostname, username, password text)
xscreensaver.Dialog.foreground:         #ffffff
xscreensaver.Dialog.background:         #111111
xscreensaver.Dialog.topShadowColor:     #111111
xscreensaver.Dialog.bottomShadowColor:  #111111
xscreensaver.Dialog.Button.foreground:  #666666
xscreensaver.Dialog.Button.background:  #ffffff
 
!username/password input box and date text colour
xscreensaver.Dialog.text.foreground:    #666666
xscreensaver.Dialog.text.background:    #ffffff
xscreensaver.Dialog.internalBorderWidth:24
xscreensaver.Dialog.borderWidth:        20
xscreensaver.Dialog.shadowThickness:    2
 
!timeout bar (background is actually determined by Dialog.text.background)
xscreensaver.passwd.thermometer.foreground:  #ff0000
xscreensaver.passwd.thermometer.background:  #000000
xscreensaver.passwd.thermometer.width:       8
 
!datestamp format--see the strftime(3) manual page for details
xscreensaver.dateFormat:    %I:%M%P %a %b %d, %Y

复制并粘贴以下内容以获取第二张图片:
xscreensaver.splash: false
 
!font settings
xscreensaver.Dialog.headingFont:        -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.bodyFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.labelFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.unameFont:          -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.buttonFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.Dialog.dateFont:           -*-dina-medium-r-*-*-12-*-*-*-*-*-*-*
xscreensaver.passwd.passwdFont:         -*-dina-bold-r-*-*-12-*-*-*-*-*-*-*
 
!general dialog box (affects main hostname, username, password text)
xscreensaver.Dialog.foreground:         #111111
xscreensaver.Dialog.background:         #ffffff
xscreensaver.Dialog.topShadowColor:     #111111
xscreensaver.Dialog.bottomShadowColor:  #111111
xscreensaver.Dialog.Button.foreground:  #ffffff
xscreensaver.Dialog.Button.background:  #666666
 
!username/password input box and date text colour
xscreensaver.Dialog.text.foreground:    #ffffff
xscreensaver.Dialog.text.background:    #666666
xscreensaver.Dialog.internalBorderWidth:24
xscreensaver.Dialog.borderWidth:        20
xscreensaver.Dialog.shadowThickness:    2
 
!timeout bar (background is actually determined by Dialog.text.background)
xscreensaver.passwd.thermometer.foreground:  #ff0000
xscreensaver.passwd.thermometer.background:  #000000
xscreensaver.passwd.thermometer.width:       8
 
!datestamp format--see the strftime(3) manual page for details
xscreensaver.dateFormat:    %I:%M%P %b %d

运行以下步骤以启用您的更改:
xrdb -merge ~/.Xresources
killall xscreensaver
xscreensaver -no-splash &

source


如果你熟悉SVG图像程序(如Inkscape),你也可以修改标志以适应自己的需求。标志位于usr/share/pixmaps目录下,文件名为xscreensaver.svg和xscreensaver.xpm。
然而,关于更改标志有一点需要注意。请参阅this thread for more info获取更多信息。
此外,关于xpm文件还有各种重要限制。我忽略了这些限制,导致系统完全崩溃。将来我会再试一次,但目前我还是会坚持使用火焰计算机标志。 在这里查看我事后才发现的限制:http://www.improbability.net/xss/ 这是你必须遵循的正确硬编码图像的过程:http://www.inductiveload.com/posts/change-the-xscreensaver-icon/ 或者 http://web.archive.org/web/20130309211615/http://www.inductiveload.com/posts/change-the-xscreensaver-icon 顺便说一下,我建议将字体更改为其他字体,因为并非每个人都有"dina"字体。它将恢复到原始的安全字体。 例如,用"arial"替换"dina"可以工作,但Ubuntu字体似乎不起作用。

1呃,大多数都是死链接,真是遗憾。 - meawoppl

根据fossfreedom的示例,我在新创建的~/.Xresources文件中选择了以下设置,并发现结果非常吸引人(深色背景主题配以柔和的蓝色):
xscreensaver.splash: false

!font settings
xscreensaver.Dialog.headingFont:        -*-georgia-bold-r-*-*-18-*-*-*-*-*-*-*
xscreensaver.Dialog.bodyFont:           -*-georgia-medium-r-*-*-18-*-*-*-*-*-*-*
xscreensaver.Dialog.labelFont:          -*-georgia-medium-r-*-*-18-*-*-*-*-*-*-*
xscreensaver.Dialog.unameFont:          -*-georgia-medium-r-*-*-18-*-*-*-*-*-*-*
xscreensaver.Dialog.buttonFont:         -*-georgia-bold-r-*-*-18-*-*-*-*-*-*-*
xscreensaver.Dialog.dateFont:           -*-georgia-medium-r-*-*-18-*-*-*-*-*-*-*
xscreensaver.passwd.passwdFont:         -*-georgia-bold-r-*-*-18-*-*-*-*-*-*-*

!general dialog box (affects main hostname, username, password text)
xscreensaver.Dialog.foreground:         #00efef
xscreensaver.Dialog.background:         #111111
xscreensaver.Dialog.topShadowColor:     #111111
xscreensaver.Dialog.bottomShadowColor:  #111111
xscreensaver.Dialog.Button.foreground:  #111111
xscreensaver.Dialog.Button.background:  #2040e0

!username/password input box and date text colour
xscreensaver.Dialog.text.foreground:    #2040e0
xscreensaver.Dialog.text.background:    #efefef
xscreensaver.Dialog.internalBorderWidth:36
xscreensaver.Dialog.borderWidth:        0
xscreensaver.Dialog.shadowThickness:    2

!timeout bar (background is actually determined by Dialog.text.background)
xscreensaver.passwd.thermometer.foreground:  #2040e0
xscreensaver.passwd.thermometer.background:  #2040e0
xscreensaver.passwd.thermometer.width:       0

!datestamp format--see the strftime(3) manual page for details
xscreensaver.dateFormat:    %I:%M%p - %a %b %d, %Y

还有带来的变化:
xrdb -merge ~/.Xresources; killall xscreensaver; xscreensaver -no-splash &

请问你能分享一下截图吗? - user230910


一个很好的提示,但不支持xscreensaver版本大于等于5.0。 - Murphy


2欢迎来到Ask Ubuntu!虽然理论上这可能是对问题的回答,但最好在这里包含回答的关键部分,并提供链接作为参考。 - Peachy

Arch发行版实际上修改了对话框以呈现Arch标志。相关的软件包链接到源代码库在这里:https://aur.archlinux.org/packages/xscreensaver-arch-logo 在该存储库中,您将找到不同尺寸和格式的图像文件,以及一个PKGBUILD文件。该文件描述了他们如何使用Arch图像重新编译原始的xscreensaver源代码。
实现与PKGUILD文件中相同版本应该不会太难。
prepare() {
  local logos_png
  local logos

  cd "${srcdir}"
  logos_png=(logo-32.png
             logo-50.png
             logo-180.png
             logo-360.png)
  for _pngfile in "${logos_png[@]}"; do
  install -Dm0644 "${_pngfile}" "${srcdir}/${pkgname%%-*}-${pkgver}/hacks/images/${_pngfile}"
  done
  
  logos=(logo.pdf
         logo-50.gif
         logo-50.xpm
         logo-180.gif
         logo-180.xpm
         logo-360.gif
         logo-360.xpm
         logo-512.png
         logo-big.gif)
  for _file in "${logos[@]}"; do
  install -Dm0644 "${_file}" "${srcdir}/${pkgname%%-*}-${pkgver}/utils/images/${_file}"
  done
}

build() {
  cd "${pkgname%%-*}-${pkgver}"
  ./configure \
  --prefix=/usr \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --libexecdir=/usr/lib \
  --with-app-defaults=/usr/share/X11/app-defaults \
  --without-setuid-hacks \
  --with-pam \
  --with-login-manager \
  --with-gtk \
  --with-gl \
  --without-gle \
  --with-pixbuf \
  --with-jpeg
  make
}

package() {
  cd "${pkgname%%-*}-${pkgver}"
  install -d "${pkgdir}/etc/pam.d"
  make install_prefix="${pkgdir}" install
  install -Dm0644 ../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}