找回密码
 立即注册
查看: 186|回复: 0

Unity窗体背景色透明方法(Linux)

[复制链接]
发表于 2023-3-10 16:13 | 显示全部楼层 |阅读模式
方法排名

关于在 Linux 中实现 Unity 窗口背景透明的方案有很多,而且有些方案可能更适合特定的环境或使用情况。以下是几个常用方案及其排名:

  • 使用 Compton Compton 是一个轻量级的窗口管理器,支持多种透明效果。它可以与 Unity 桌面完美集成,只需简单的配置就可以实现窗口透明效果。这是一个非常受欢迎的方案,也是很多 Linux 用户的首选。
  • 使用 Xfce 桌面环境 Xfce 是一个轻量级的桌面环境,支持窗口透明效果。它可以与 Unity 桌面环境协同工作,并且可以自定义透明度和其他属性。Xfce 桌面环境的安装和配置相对较为简单,因此是一个不错的选择。
  • 使用 Openbox Openbox 是一个轻量级的窗口管理器,支持窗口透明效果。与 Xfce 和 Compton 一样,它可以与 Unity 桌面环境协同工作,并且可以自定义透明度和其他属性。Openbox 的配置比较复杂,需要一定的技术知识。
  • 使用 Gnome 桌面环境 Gnome 是一个流行的桌面环境,支持窗口透明效果。它可以与 Unity 桌面环境协同工作,并且可以自定义透明度和其他属性。但是,Gnome 的配置比较复杂,需要一定的技术知识。
这些方案的排名仅供参考,具体的使用情况还要根据个人需求和技术水平来选择。
方法1

Linux中,如何使Unity的窗体和背景色设置为透明,而不影响渲染的内容 只影响app自身,不影响其他应用
如果你只想让特定的应用程序的窗口透明,而不影响其他应用程序窗口的外观,那么你可以使用xprop和transset命令来实现。
以下是设置步骤:

  • 打开终端,使用以下命令获取目标窗口的ID:

perlCopy code
xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"

  • 将鼠标放在你想要设置为透明的窗口上,并单击窗口。终端中将显示窗口ID。
  • 在终端中使用以下命令来为窗口设置透明度:
其中,[透明度]是一个介于0和1之间的浮点数,表示透明度的程度。例如,如果你想要设置透明度为50%,则可以输入0.5。[窗口ID]是第2步中获取到的窗口ID。

  • 为了使窗口变为透明状态,您需要使用以下命令:
其中,[窗口ID]是你想要设置透明度的窗口的ID,[透明度值]是16进制值,例如FF表示不透明,00表示完全透明。
现在,你应该可以看到窗口变为透明状态。如果需要恢复窗口的不透明度,只需重复步骤3和4,并将透明度设置为1。

如何设置Linux Unity 背景色为透明

方法2:

除了使用CompizConfig和devilspie工具以及xprop和xdotool命令之外,还有一些其他方法可以使Linux Unity应用的窗口和背景透明,只显示渲染的虚拟人。
一种方法是使用透明的窗口管理器,例如xfwm4或Openbox。这些窗口管理器允许你轻松地将窗口设置为透明,并可以通过配置文件来自定义透明度和其它属性。要使用透明的窗口管理器,你需要首先安装它们,然后在Unity会话中使用它们。
另一种方法是使用compton这样的合成管理器。compton是一个轻量级的X合成管理器,它允许你在Linux桌面上使用透明度、阴影和其他特效。你可以使用compton来使Unity应用的窗口和背景透明,并只显示渲染的虚拟人。
以下是使用compton设置窗口透明度的步骤:

  • 安装compton。在大多数Linux发行版中,你可以使用包管理器来安装compton。例如,在Ubuntu中,你可以运行以下命令来安装compton:

csharpCopy code
sudo apt-get install compton

  • 创建一个名为“compton.conf”的配置文件。在终端中运行以下命令来创建该文件:
  • 将以下内容添加到“compton.conf”文件中:
请注意,“shadow”和“inactive-opacity”属性已被设置为false和1,这将禁用窗口阴影并使非活动窗口完全不透明。要将窗口设置为透明,请将“active-opacity”属性设置为小于1的值,例如0.5。

  • 运行以下命令以启动compton:
  • 打开你想要设置为透明的应用程序,并使用“Alt + F3”组合键打开窗口属性对话框。在该对话框中,选择“Opacity”选项卡,然后将透明度设置为你想要的值。
请注意,compton可能会在某些系统上导致性能下降或者在一些应用程序上出现不兼容的问题。如果你遇到了这些问题,请考虑使用其他方法来实现窗口透明效果。

方法3:

以下是在Ubuntu中使用Openbox作为透明窗口管理器的示例说明:

  • 安装Openbox:
  • 在主目录中创建Openbox配置文件.config/openbox/rc.xml
  • rc.xml文件中添加以下行:
  • 启动Openbox,并启动你想要设置为透明的应用程序。你可以在Unity会话中通过注销、选择"Openbox"作为会话类型、然后重新登录来启动Openbox。或者,你可以直接从终端使用openbox命令启动Openbox。
  • 启动你想要设置为透明的应用程序,它应该会显示你在rc.xml文件中设置的属性。
csharpCopy code
sudo apt-get install openbox
javascriptCopy code
mkdir -p ~/.config/openbox touch ~/.config/openbox/rc.xml
phpCopy code
<application name="myapp">   <decor>no</decor>   <focus>yes</focus>   <shade>no</shade>   <position force="yes">     <x>100</x>     <y>100</y>   </position>   <size>     <width>500</width>     <height>500</height>   </size>   <opacity>     <active>yes</active>     <value>0.5</value>   </opacity> </application>这将设置一个名为"myapp"的应用窗口的属性,使其没有装饰(标题栏和边框),可获得焦点,不被遮挡,位于屏幕上的(100,100)位置,大小为500x500,并且透明度为50%。
请注意,此方法需要手动配置rc.xml文件,因此可能不如使用基于GUI的工具(如CompizConfig)那样用户友好。此外,此方法仅影响你在rc.xml文件中配置的特定应用程序窗口,而不是所有Unity窗口。

方法4:


以下是在Ubuntu中使用xfwm4作为透明窗口管理器的示例说明:

  • 安装xfwm4:
  • 创建xfwm4配置文件:
  • xfwm4.xml文件中添加以下行:
  • 启动xfwm4:
  • 启动你想要设置为透明的应用程序,然后按下Alt+F3打开窗口属性菜单。在"Appearance"选项卡中,将窗口透明度调整为所需值。
csharpCopy code
sudo apt-get install xfwm4
bashCopy code
mkdir -p ~/.config/xfce4/xfconf/xfce-perchannel-xml/ touch ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
pythonCopy code
<channel name="xfwm4" version="1.0">   <property name="general">     <property name="titleless_maximize" type="bool" value="true"/>     <property name="titleless_maximize_vertical" type="bool" value="true"/>     <property name="titleless_maximize_horizontal" type="bool" value="true"/>     <property name="use_compositing" type="bool" value="true"/>     <property name="compositing" type="bool" value="true"/>     <property name="compositing_type" type="string" value="xrender"/>     <property name="shadow_opacity" type="int" value="75"/>   </property> </channel>这将设置xfwm4的通用属性,使其可以使用XRender来合成窗口,开启阴影效果,并且将阴影不透明度设置为75%。
cssCopy code
xfwm4 --replace
请注意,此方法需要手动配置xfwm4.xml文件,因此可能不如使用基于GUI的工具(如CompizConfig)那样用户友好。此外,此方法仅影响你在应用程序窗口属性菜单中配置的特定应用程序窗口,而不是所有Unity窗口。

方法5:

在 GitHub 上有一些项目提供了关于如何在 Linux 上实现窗口透明效果的示例代码和参考。
其中一个是名为 x11-transparency 的项目。它是一个基于 C 语言的 X11 应用程序,可以在 Linux 桌面环境中创建透明窗口,同时保留应用程序渲染内容的不透明性。该项目的源代码和详细说明可以在以下链接中找到:
https://github.com/cknadler/x11-transparency
另一个项目是名为 transparent-window 的项目。它提供了一个基于 Qt 框架的示例应用程序,可以在 Linux 上创建透明窗口。该项目的源代码和说明可以在以下链接中找到:
https://github.com/LawnchairLarry/transparent-window
这些项目的源代码提供了在 Linux 上实现透明窗口效果的参考和示例。您可以根据自己的需要和要求进行修改和扩展。注意,这些项目可能需要一定的编程和 X11 知识才能理解和使用。

以下是一些在 GitHub 上可以找到的好的解决方案,可以用来使 Linux 中的 Unity 应用的窗口和背景透明,只显示渲染的虚拟人:

  • transparent-window-manager: 这是一个基于 X11 的窗口管理器,可以设置窗口透明度和颜色。它的设计目标是让用户可以更好地控制窗口的外观,使其更加美观和易于使用。该项目支持的 Linux 发行版包括 Arch Linux、Debian、Fedora、Gentoo、openSUSE、Ubuntu 等。
  • compton: 这是一个基于 X11 的复合管理器,可以让窗口具有透明效果,并支持窗口阴影、淡入淡出等特效。它可以通过多种设置来调整窗口透明度,例如透明度规则、透明度步骤、透明度卷曲等。该项目支持的 Linux 发行版包括 Arch Linux、Debian、Fedora、Gentoo、openSUSE、Ubuntu 等。
  • Picom: 这是一个基于 Compton 的 X11 复合管理器,支持窗口透明度、阴影、淡入淡出等特效。它还支持多个 Compton 不支持的特性,例如 OpenGL 3.1 支持、指定窗口不透明度、支持 v-sync 等。该项目是 Compton 的后续维护版本,也支持的 Linux 发行版包括 Arch Linux、Debian、Fedora、Gentoo、openSUSE、Ubuntu 等。
这些项目都是开源的,可以在 GitHub 上找到它们的源代码和文档。使用这些工具需要一定的 Linux 知识和经验,建议在使用前仔细阅读其文档和使用说明。

方法6:

除了上面提到的示例代码和参考之外,还有一些其他方法可以在 Linux 上实现窗口透明效果。下面是一些可能有用的方法:

  • 使用 Compton
Compton 是一个基于 X Composite 扩展的透明度管理器,它可以实现透明窗口效果,而不会影响应用程序的渲染内容。您可以使用 Compton 作为窗口管理器,或者将其作为后台程序运行。

  • 使用 Xfce4-Panel
Xfce4-Panel 是一个轻量级的面板和窗口管理器,可以轻松地设置透明度和其他外观属性。您可以在 Unity 会话中使用 Xfce4-Panel,将 Unity 的窗口管理器替换为 Xfce4-Panel,并设置透明度属性。

  • 使用 GTK3 应用程序
如果您正在使用基于 GTK3 应用程序,您可以尝试在应用程序代码中添加以下语句:
CCopy code
gtk_widget_set_opacity(window, 0.5);这将设置窗口的透明度为 0.5,您可以将值设置为任何值,以实现所需的透明度级别。
这些方法可能需要一些技术知识和编程能力,但可以提供更灵活和定制化的透明窗口效果。

方法7:

以下是几个国外开发者提出的解决方法:

  • 一个名为"VirtScreen"的开源项目,它提供了一个虚拟屏幕,可以用于显示特定的应用程序或窗口。该项目支持Windows、macOS和Linux平台,可以通过GitHub获取源代码和二进制文件。
  • 使用Xephyr和Xpra工具,可以创建一个虚拟X服务器,并在其中运行Unity应用程序。这种方法可以使Unity应用程序窗口透明,同时不影响其他应用程序和桌面。使用这种方法需要一些命令行技能和Linux知识。
  • 在GitHub上有一个名为"Transparent-Window"的项目,它提供了一种使用OpenGL和Qt5实现透明窗口的方法。该项目提供了一些示例代码和文档,可以帮助开发者了解如何实现透明窗口。
以上是一些国外开发者提出的解决方法,可能需要一些技术知识和实践能力,但是对于想要实现特殊需求的用户来说可能是一个有用的参考。
在Linux Unity中,可以通过设置窗口透明度和渲染设置来实现窗体透明,只显示渲染内容的效果。

下面是具体的步骤:

  • 打开Unity项目,进入Edit->Project Settings->Player,选择Linux平台,然后在Other Settings中启用OpenGLCore选项。
  • 在Unity中创建一个新的摄像机,将摄像机的Clear Flags属性设置为Solid Color,并将摄像机的背景色设置为alpha为0的颜色,这样渲染的时候就不会绘制背景。
  • 在Unity中创建需要渲染的场景和物体,确保它们的材质中的透明度被正确设置。如果需要更好的透明效果,可以在项目中导入支持透明通道的纹理。
  • 在Linux系统中打开终端,进入Unity项目的目录,执行以下命令:
  • 等待Unity项目启动后,可以看到一个透明的窗口,只显示渲染的内容。如果需要更好的性能和更多的自定义选项,可以将Unity项目导出为独立的应用程序,然后将其嵌入到其他应用中。
cssCopy code
./projectname.x86_64 -parentHWND 0 -screen-fullscreen 0 -screen-width 800 -screen-height 600 -screen-quality Fastest -force-opengl这里需要将projectname替换为实际的项目名,同时根据需要设置窗口大小、质量等参数。其中的-parentHWND 0选项表示将窗口嵌入到桌面中。
在Linux Unity中将Unity嵌入到其他应用程序中的方法与Android的SurfaceView类似,可以使用一个透明的窗口或视图来显示Unity渲染的内容。下面是具体的步骤:

  • 将Unity项目导出为独立的应用程序,可以选择Linux平台,然后在Build Settings中选择Build。这将生成一个可执行文件,可以在Linux系统中直接运行。
  • 在其他应用程序中创建一个透明的窗口或视图,然后将Unity的可执行文件作为子进程运行,并将其输出重定向到窗口或视图中。
  • 等待Unity应用程序启动后,可以看到它在其他应用程序中以透明的方式显示出来,只显示渲染的内容。
bashCopy code
unityapp &    # 运行Unity应用程序 export SDL_VIDEO_WINDOW_POS="x,y"  # 设置Unity应用程序的窗口位置 export SDL_VIDEO_WINDOW_ID=windowid  # 设置Unity应用程序的窗口ID这里需要将unityapp替换为实际的可执行文件名,同时根据需要设置窗口位置和ID。
需要注意的是,将Unity嵌入到其他应用程序中可能需要更多的自定义设置和调整,
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-22 01:12 , Processed in 0.101684 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表