Выполняет ли приложение на основе графического интерфейса выполнение команд оболочки в фоновом режиме?

Я перешел на Ubuntu 16.04 всего 2 дня назад из Windows. Мне нравится, как мы можем настроить Unity Desktop. Я просто общаюсь с внешним видом рабочей среды. Как и в Windows, я хотел, чтобы пусковая установка находилась в нижней части экрана. В Googling я нашел команду, которая выглядит следующим образом:

gsettings set com.canonical.Unity.Launcher launcher-position Bottom

Кроме того, для выполнения этой задачи есть инструмент для редактирования единственного числа и dconf. Но это GUI-подход к выполнению.

Мои вопросы:

Выполняют ли эти приложения на основе графического интерфейса выполнение одной и той же команды в фоновом режиме? Как взглянуть на внутреннюю работу этих приложений? Я имею в виду, есть ли способ смотреть на команды, которые выполняются при каждом нажатии кнопки? Разве эти приложения открывают терминал в фоновом режиме и выполняют эти команды?

В этом ответе рассказывается, как получить стандартный дескриптор файла процесса. Но я ничего не получил в выходе.

Кроме того, команда strace -p pid -o output.txt выдает огромное количество текста в файл.

Итак, короче говоря, вещи, использующие приложения с графическим интерфейсом, такие же, как и в командной строке?

1
задан 13 April 2017 в 15:25

1 ответ

Шпионаж о том, что происходит

. Большинство из этих редакторов настроек можно наблюдать, запустив

dconf watch /

в терминале.

gsettings

Также в большинстве случаев для достижения того, что вы видите, что происходит с приведенной выше командой, этим приложениям необходимо будет отредактировать базу данных dconf (ниже). Это можно сделать либо напрямую, используя параметры cli dconf (что не является предпочтительным), либо путем запуска соответствующих команд gsettings, как тот, который вы упомянули.

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

О, gsettings, dconf и база данных dconf

gsettings - это интерфейс cli к dconf, который в его очередь редактирует базу данных dconf, где хранится большая часть настроек в двоичном формате. См. Также dconf .

База данных dconf, кстати, также может быть отредактирована из графического интерфейса с помощью редактора dconf, который находится в репозиториях: [!d11 ]

Рабочие образцы

a. В python

Чтобы показать вам, что происходит под капотом, ниже рабочего образца, чтобы переключить вашу позицию запуска из графического интерфейса в одной (переключающейся) кнопке :

#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
import subprocess

key = ["com.canonical.Unity.Launcher", "launcher-position"]

class ToggleWin(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Toggle")
        button = Gtk.Button("Toggle launcherposition")
        button.connect("clicked", self.toggle)
        self.add(button)

    def toggle(self, *args):
        # read the current setting on launcher position
        current = subprocess.check_output([
            "gsettings", "get", key[0], key[1]
            ]).decode("utf-8").strip()
        # toggle to the other option
        new = "'Left'" if current == "'Bottom'" else "'Bottom'"
        subprocess.Popen([
            "gsettings", "set", key[0], key[1], new
            ])

def delete_actions(*args):
    Gtk.main_quit()

def miniwindow():
    window = ToggleWin()
    window.connect("destroy", delete_actions)
    window.show_all()
    Gtk.main()

miniwindow()
Вставьте код в пустой file.py запустите его командой:
python3 /path/to/file.py

... и получайте удовольствие.

б. Значок пусковой установки

Даже простая пусковая установка может выполнить задание из графического интерфейса пользователя:

enter image description here

[Desktop Entry]
Name=Set launcherposition
Exec=zenity --info --text="Right- click to set launcher position"
Type=Application
StartupNotify=False
Icon=preferences-system

Actions=Launcher to bottom;Launcher on the left;

[Desktop Action Launcher to bottom]
Name=Launcher to bottom
# right click option to set launcher to bottom
Exec=gsettings set com.canonical.Unity.Launcher launcher-position Bottom

[Desktop Action Launcher on the left]
Name=Launcher on the left
# right click option to set launcher to left
Exec=gsettings set com.canonical.Unity.Launcher launcher-position Left
Вставить код в пустой file.py Перетащите его в панель запуска и щелкните правой кнопкой мыши

. Для постоянного использования сохраните его в ~/.local/share/applications (для локального использования) или ~/usr/share/applications для всех пользователей .

21
ответ дан 23 May 2018 в 04:13

Другие вопросы по тегам:

Похожие вопросы: