
В настоящее время в Ubuntu 14.04 в правом верхнем углу есть следующие индикаторы: выключение, кнопка блокировки, сведения о времени календаря, сведения о батарее, формат ввода (английский) в качестве индикаторов по умолчанию. Возможно ли сделатьиндикатор-системный мониторкак один из таких индикаторов по умолчанию.
Теперь, что происходит, только когда мы вошли в систему на компьютере, indicator-sysmonitor будет показан, а когда вы выйдете из системы или заблокируете наш компьютер, indicator-sysmonitor автоматически выйдет из панели. Я знаю по опыту работы с заблокированными компьютерами, indicator-sysmonitor работает в фоновом режиме, но не будет отображаться на панели. У меня есть некоторая статистика (включая cpu,mem и некоторые пользовательские), которую я хочу видеть, когда я блокирую свой компьютер.
можно ли это сделать?
P.S. Я задал этот вопрос на основном сайте программного обеспечения, и автор порекомендовал этот сайт.
Я посмотрел наэтот вопроси его ответы, и это выглядит многообещающе - но я не знаю, как адаптировать ответы для indicator-sysmonitor.
решение1
Приветствие/Экран входа в систему
В итоге я смотрю, как это nm-applet
работает. Я отследил это, так как это, похоже, жестко закодировано в unity-greeter
.
Эта модификация позволяет отображать его на экране приветствия после загрузки или выхода из системы (но не на экране блокировки).
Загрузите исходный код и соберите зависимости
sudo apt-get build-dep unity-greeter apt-get source unity-greeter
Добавить функцию спавна для
indicator-sysmonitor
cd unity-greeter-*/ vim src/unity-greeter.vala +590
Там вы найдете
Process.spawn_command_line_async ("nm-applet");
оригинальный код, который порождаетnm-applet
экран приветствия. Сделайте его копию с полнойtry..catch
оберткой и измените его, чтобы онindicator-sysmonitor
тоже порождал./* Make nm-applet hide items the user does not have permissions to interact with */ Environment.set_variable ("NM_APPLET_HIDE_POLICY_ITEMS", "1", true); try { Process.spawn_command_line_async ("nm-applet"); } catch (Error e) { warning ("Error starting nm-applet: %s", e.message); } /* I added these for sysmonitor, from here */ try { Process.spawn_command_line_async ("indicator-sysmonitor"); } catch (Error e) { warning ("Error starting indicator-sysmonitor: %s", e.message); } /* to here */ }
Строить
./autogen.sh ./configure --prefix=/usr make -j2
Установить
sudo cp src/unity-greeter /usr/local/sbin/unity-greeter
Перезагрузить
Экран блокировки
В любом случае, это покажет все индикаторы приложений (обратите внимание на nm-applet на скриншоте), это может быть недостатком безопасности и конфиденциальности. Можно заранее определить список индикаторов только для режима экрана блокировки, у меня просто нет времени сделать это и протестировать.
Загрузите исходный код и соберите зависимости
sudo apt-get build-dep unity apt-get source unity
Измените unity-panel-service для загрузки индикаторов приложений даже в режиме экрана блокировки.
cd unity-7*/ vim services/panel-service.c +893
if (!lockscreen_mode)
ниже предотвращают загрузку индикаторов в режиме блокировки экрана.static void initial_load_default_or_custom_indicators (PanelService *self, GList *indicators) { GList *l; suppress_signals = TRUE; if (!indicators) { /* comment these lines if (!lockscreen_mode) { load_indicators (self); } */ // add this line load_indicators (self); load_indicators_from_indicator_files (self); sort_indicators (self); } ...
Строить
mkdir build cd build/ cmake ../ make
Установить
sudo mv /usr/lib/unity/unity-panel-service /usr/lib/unity/unity-panel-service.orig sudo cp services/unity-panel-service /usr/lib/unity/unity-panel-service
Попробуй это:CtrlAltL