请建议我一种方法来使用任何图像(例如可调整大小的便签),以便我每次打开 Unity 桌面时都可以查看它。
我希望它能被用作主屏幕照片小部件应用程序可在安卓。这样,即使重新启动系统后,图像仍会停留在之前的位置,就像便笺。
我想要的是下图所示的内容:
在上图中,我将图像放在桌面上,并将图像图标调整到最大尺寸,但这并不能解决我的问题:
我无法进一步放大图像,因为这是调整图标大小的最大尺寸。
当我将鼠标悬停在图标上时,图像会突出显示,这在图标的情况下会发生,而我并不想发生这种情况
即使图标尺寸达到最大,图像质量也会变得很差,因为图像会扭曲。
我想要的图像是轻松调整大小和重新定位而没有上述任何缺点。
我希望现在我的问题已经清楚了。如果仍然无法理解我想要什么,请告诉我。
(Ubuntu 16.04)
答案1
在桌面上显示图像
窗口可以有多种类型。我们不仅有“普通”窗口,还有(在我们的例子中)“DESKTOP”类型的窗口。
“DESKTOP”类型的窗口位于所有内容下方;甚至桌面上的所有项目都显示在它们上方。因此,在窗口中显示图像会导致:
...固定在桌面上的茅膏菜图像实际上是一个窗口(就像图像中的桌面时钟一样)。
代码
#!/usr/bin/env python3
import gi
gi.require_version('GdkPixbuf', '2.0')
from gi.repository import GdkPixbuf
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
import sys
img = sys.argv[1]
xpos = int(sys.argv[2])
ypos = int(sys.argv[3])
w = int(sys.argv[4])
h = int(sys.argv[5])
class ShowPortrait(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="PortraitonMyDesktop")
self.set_type_hint(Gdk.WindowTypeHint.DESKTOP)
self.connect("destroy", Gtk.main_quit)
self.set_skip_taskbar_hint(True)
pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
img, w, h, preserve_aspect_ratio=True,
)
image = Gtk.Image.new_from_pixbuf(pixbuf)
self.add(image)
self.move(xpos, ypos)
self.show_all()
ShowPortrait()
Gtk.main()
如何使用
- 将脚本复制到一个空文件中,另存为
showportrait.py
使用图像、x 位置、y 位置、宽度和高度作为参数进行测试运行它:
python3 /path/to/showportrait.py /path/to/image x y width height
例如:
python3 '/home/jacob/Desktop/showportrait.py' '/home/jacob/Thema/Wallpapers/sundew.jpg' 1000 200 400 400
该图像应显示在您的桌面上。
如果一切正常,请将命令添加到启动应用程序。
关闭窗口
最简单的方法是通过以下命令完成:
kill "$(pgrep -f showportrait.py)"
笔记
设置宽度/高度,脚本将缩放图像,直到首先达到,保留图像的比例。