在没有启动器的情况下编译Unity


17

我想修改统一,不显示启动(左侧边栏)在所有。我没有在寻找可以在某些情况下使启动器可见的解决方案。我真的希望它完全消失。这是给我的未婚夫的礼物,我希望她的linux笔记本电脑达到最高的女性接受度,该笔记本电脑运行着带有精美图标的码头底座,使它看起来像是来自那家知名的水果公司。

关于应该学习哪些软件包和哪些源文件的任何提示?

我希望它就像用“ unity.launcher.show()”注释掉这一行并重新编译一样容易:-)

谢谢!


您是否真的需要统一,如果没有统一的Ubuntu发行版,看起来很像Apple,您只需要从设置编辑器中取消选中:show-filesystem,-home等!您就可以出发了!
Ken Mollerup

Answers:


20

我自己的问题的答案是:

  • 统一版本<7.4.0和以下版本的Launcher.cpp,unityshell.cpp,DashController.cpp和HudController.cpp
  • 统一版本7.4.0的Launcher.cpp和UnitySettings.ccp

来自unity源码包。

但是我要回答的不仅如此,因为每个人都在寻找我问题的答案,也将对知道如何处理这些源文件感兴趣。

内容:
A.自己编译
B.获取二进制文件

免责声明:我完全不知道,仅在12.04上使用5.20.2进行了测试,在14.04上使用7.2.6进行了测试,在15.10上使用7.3.2进行了测试以及在16.04上使用7.4.0进行了测试。

A.编译Unity以不显示启动器

在此处输入图片说明

0.急躁

该脚本至少应适用于12.04、14.04和15.10。只需根据需要取消注释:

#!/bin/bash
mkdir temp-build-dir; cd temp-build-dir
export HWE=$(dpkg-query -l xserver*-lts-* | grep ^ii  | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u)
sudo apt-get install unity xserver-xorg-video-dummy-lts-$HWE
sudo apt-get build-dep unity
sudo apt-get install apt-show-versions devscripts dpkg-dev fakeroot nano
apt-get source unity
cd unity-*
# you can leave the comment field in the changelog empty but dont forget to save the file
EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2) 
find . -iname Launcher.cpp -exec sed -i -e '1,/void Launcher::DrawContent(nux::GraphicsEngine/b' -e '0,/{/s//{\nreturn;/' {} \;
# for unity 7.4.0 comment out this for statement and read the explanation Nr. A.4
for i in unityshell.cpp DashController.cpp HudController.cpp; do  
    find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; 
done
dpkg-buildpackage -rfakeroot -d -us -uc -b
sudo dpkg -i ../unity_*.deb
# For 12.04 use:
# gconftool --type Integer --set /apps/compiz-1/plugins/unityshell/screen0/options/launcher_hide_mode 1
# For 14.04 use:
# dconf write "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode" 1

然后重新启动unity,就完成了。

1.查找正确的源文件

经过一番尝试和错误后,我发现要更改的源文件是

  • Launcher.cpp->添加一行以不再显示启动器
  • unityshell.cpp,DashController.cpp和HudController.cpp->将启动器的宽度设置为零

所有四个文件都包含在源程序包“ unity”中。

2.获取资源

我必须手动安装软件包xserver-xorg-video-dummy-lts- {您的HWE版本}来解决一些依赖性问题,然后才能安装build-deps以实现统一:

sudo apt-get install xserver-xorg-video-dummy-lts-{put your HWE name here}

您可以使用以下命令找到HWE的名称(版本):

dpkg-query -l xserver*-lts-* | grep ^ii  | cut -d" " -f3 | rev | cut -d- -f1 | rev | sort -u

之后,其余的工作:

sudo apt-get build-dep unity
apt-get source unity
cd unity-*

3.在Launcher.cpp中放入一行

find . -iname launcher.cpp -exec gedit {} \;

查找函数“ void Launcher :: DrawContent(nux :: GraphicsEngine&GfxContext,bool force_draw)”并输入“ return;”。刚开始是这样的:

void Launcher::DrawContent(nux::GraphicsEngine& GfxContext, bool force_draw)
{
  return; //dont show launcher anymore
  ...

这足以不再显示启动器。但是,破折号和平视框将仍然不占用屏幕左侧启动器的位置。

4.在unityshell.cpp,DashController.cpp和HudController.cpp / UnitySettings.cpp中将启动器宽度设置为零。

对于统一性<7.4.0:

使用编辑器在unityshell.cpp,DashController.cpp和HudController.cpp中用“ launcher_width = 0; //”替换所有出现的“ launcher_width =“。
或者只是使用此命令

for i in unityshell.cpp DashController.cpp HudController.cpp; do find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; ; done

对于统一7.4.0:

找到文件UnitySettings.cpp并在LauncherSize的末尾替换返回值,如下所示:

int Settings::LauncherSize(int monitor) const
{
  if (monitor < 0 || monitor >= (int)monitors::MAX)
  {
    LOG_ERROR(logger) << "Invalid monitor index: " << monitor << ". Returning 0.";
    return 0;
  }

  return 0; // pimpl->launcher_sizes_[monitor];
}

仅当您希望将破折号显示在屏幕左侧而没有启动程序会使用的空白时,才需要这样做。

5.在变更日志中设置正确的版本

就我而言(12.04,unity 5.20.2)我必须使用以下命令将unity的版本从5.20更改为5.20.2

EDITOR=nano debchange --newversion $(apt-show-versions unity | cut -d " " -f2) 

进行编译之前,以避免在安装时破坏依赖关系。不要忘记保存文件。

6.编译安装

然后我使用以下命令重新编译:

dpkg-buildpackage -rfakeroot -d -us -uc -b

安装了新软件包:

sudo dpkg -i ../unity_*.deb

(据我所见并对其进行测试,实际上唯一需要的文件是

find . -name libunityshell.so | grep unity/usr/lib/compiz/libunityshell.so

用新的/usr/lib/compiz/libunityshell.so替换就足够了,但是如果要确保按照上面的说明安装新的unity软件包。)

7.将启动器设置为自动隐藏

# For 12.04:
gconftool --type Integer --set /apps/compiz-1/plugins/unityshell/screen0/options/launcher_hide_mode 1
# For 14.04:
dconf write "/org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode" 1

而已。重新开始团结,发射器消失了!


B.如果您更愿意信任并且只获取二进制文件

如果您希望获得二进制文件以及统一版本和PC体系结构的组合

unity --version
getconf LONG_BIT

可以在下面找到,只需下载正确的软件包

32位

64位

并在下载后检查deb文件

md5sum unity_*.deb

结果应该是其中之一

0a5f7fc9255262e5803656d83f84f7c5  unity_5.20.0-0ubuntu3_amd64_nolauncher.deb
717dc41f4cad6410c997e1014f5f3f1d  unity_5.20.0-0ubuntu3_i386_nolauncher.deb
594eb8b87f8a56697865c051c4db5073  unity_5.20.2_i386_nolauncher.deb
8ed070afa4d7d6da8222d03b8ad5ebf3  unity_7.2.6+14.04.20160408-0ubuntu1_amd64_nolauncher.deb
abd32e40e8a10bd603b9fc44014cb179  unity_7.2.6+14.04.20151021-0ubuntu1_i386_nolauncher.deb
43c56b889028bf368da01780c0a099b9  unity_7.3.2+15.10.20151016-0ubuntu1_amd64_nolauncher.deb
64474d1a8280ed4113d748a57422ddcc  unity_7.3.2+15.10.20151016-0ubuntu1_i386_nolauncher.deb
4fecdb9b4f590e00609baa3b98f55cc0  unity_7.4.0+16.04.20160715-0ubuntu1_amd64_nolauncher.deb

然后安装软件包

sudo dpkg -i unity_*.deb

将启动器设置为自动隐藏并重新启动统一。而已!

万一出了什么问题而团结没有开始:

sudo apt-get install --reinstall unity

但是,如果一切正常,则可能要阻止新软件包的更新:

echo "unity hold" | sudo dpkg --set-selections


我的电脑上只编译了文件“ unity_5.20.2_i386_nolauncher.deb”。其他deb文件是使用以下脚本变体在所谓的“云计算机”上创建的(因为机房看上去很像云...)。

#!/bin/bash
sudo apt-get update
sudo apt-get -y dist-upgrade 
sudo apt-get -y build-dep unity
sudo apt-get -y install unity devscripts dpkg-dev fakeroot nano
mkdir temp-build-dir; cd temp-build-dir
rm -r unity-*
apt-get source unity
cd unity-*
find . -iname Launcher.cpp -exec sed -i -e '1,/void Launcher::DrawContent(nux::GraphicsEngine/b' -e '0,/{/s//{\nreturn;/' {} \;
# for unity 7.4.0 comment out this for statement and read the explanation Nr. A.4
for i in unityshell.cpp DashController.cpp HudController.cpp; do  
    find . -iname $i -exec sed -i -e  's/launcher_width =/launcher_width =0; \/\//' {} \; 
done
dpkg-buildpackage -rfakeroot -d -us -uc -j2 -b
cp ../unity_*.deb ../$(echo ../unity_*.deb | sed -e  's/.deb$/_nolauncher.deb/')

1
好吧,您可能想提一下,您编译的.so是32位的,因此任何感兴趣的64位用户都不会被错误的ELF所咬住
doug

1
JLTD的工作真不错,我喜欢看到用户努力回答自己的问题。赏金将为您提供更多访问该网站的权限。(我必须等待24小时)。顺便说一句,您能否看一下这个悬而未决的问题askubuntu.com/q/165888/26246,它只需要HUD,而且我相信Unity可以独立构建(而不是compiz插件)。让我知道,如果您有任何想法,我将提出一笔悬赏,不少于250 :)
user.dz,2016年

@JLTD 文件已从服务器删除。可以再上传一次吗?我是linux的新手,所以对我来说选择选项A变得越来越困难
burhanuddin abbas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.