Компилировать Unity без лаунчера

17

Я хотел бы изменить единство не показывать пусковую (левая сторона бар) на всех . Я не ищу какого-либо решения, которое позволяло бы запускать пусковую установку в некоторых случаях. Я действительно хочу, чтобы это полностью исчезло. Это подарок для моего жениха, и я хочу достичь максимально возможного коэффициента женского признания для ее ноутбука с Linux, на котором установлена ​​док-станция с причудливыми значками, которые делают его похожим на эту известную и плодотворную компанию.

Любые советы о том, какие пакеты и какие исходные файлы я должен изучить?

Я надеюсь, что это будет так же просто, как закомментировать строку с «unity.launcher.show ()» и перекомпилировать :-)

Спасибо!

СООО
источник
Вам действительно нужно единство, если нет дистрибутивов Ubuntu, похожих на Apple, вам нужно только снять галочку: show-filesystem, -home и т. Д. В редакторе настроек !! и ты готов к работе!
Кен Моллеруп

Ответы:

20

Ответ на мой вопрос:

  • Launcher.cpp, unityshell.cpp, DashController.cpp и HudController.cpp для единой версии <7.4.0 и
  • Launcher.cpp и UnitySettings.ccp для единой версии 7.4.0

из пакета источника единства.

Но я отвечаю не только на это, поскольку всем, кто ищет ответ на мой вопрос, также будет интересно узнать, что делать с этими исходными файлами.

Содержание:
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

Затем возобновите единство, и все готово.

1. Ищите правильные исходные файлы

После некоторых проб и ошибок я обнаружил, что исходные файлы, которые будут изменены,

  • Launcher.cpp -> добавить одну строку, чтобы больше не показывать панель запуска
  • unityshell.cpp, DashController.cpp и HudController.cpp -> установить ширину модуля запуска на ноль

Все четыре файла содержатся в пакете с исходным кодом «Unity».

2. Получить источники

Мне пришлось установить пакет xserver-xorg-video-dummy-lts- {ваша версия HWE} вручную, чтобы решить некоторые проблемы с зависимостями, прежде чем я смог установить build-deps для unity:

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:

Используйте редактор, чтобы заменить все вхождения «launcher_width =» на «launcher_width = 0; //» в unityshell.cpp, DashController.cpp и HudController.cpp.
Или просто используйте эту команду

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

Вот и все. Перезапустил единство и лаунчер ушел!


Б. В случае, если вы предпочитаете доверять и просто получить двоичный

Если вы предпочитаете получить бинарный файл и вашу комбинацию единой версии и архитектуры ПК

unity --version
getconf LONG_BIT

можно найти ниже, просто скачайте нужный пакет

32bit

64bit

и проверьте файл 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

установите панель запуска на автоматическое скрытие и перезапустите Unity. Это оно!

Если что-то пойдет не так и единство не начнется:

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
@JLTD Этот файл удаляется с сервера. Можете ли вы загрузить его снова. Я новичок в Linux, поэтому мне становится все труднее выбрать вариант A
burhanuddin abbas