Как запустить наутилус развернутым из командной строки?

Я могу легко запустить Nautilus в определенном каталоге из командной строки:

nautilus /home/nico/Documents

Но я хочу, чтобы окно Наутилуса было максимизировано.
Как написать командную строку?

nautilus кажется, не признает --maximized ни --fullscreen, Я неохотно пытался --geometry 1500x1500 и это, кажется, имеет какой-либо эффект.

2 ответа

Решение

1. Запустите наутилус с развернутым окном

Начать nautilus с развернутым окном вы можете использовать скрипт ниже:

#!/usr/bin/env python3
import subprocess
import time
import sys

def w_list():
    try:
        pid = subprocess.check_output(["pgrep", "nautilus"]).decode("utf-8").strip()
        w_list = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
        return [l.split()[0] for l in w_list if pid in l]
    except subprocess.CalledProcessError:
        pass

relevant1 = w_list()
subprocess.Popen(["nautilus", "--new-window"])

t = 0
while t < 30:
    time.sleep(0.5)
    relevant2 = w_list()
    if all([relevant2 != None, relevant1 != None]):
        new = [w for w in relevant2 if not w in relevant1]
        if new:
            subprocess.Popen(["xdotool", "windowsize", new[0], "100%", "100%"])
            break
    relevant1 = relevant2
    t += 1

Как пользоваться

  • Скрипт использует оба xdotool а также wmctrl первый список новых окон целевого приложения, последний, потому что я предпочитаю xdotool изменяет размеры окон.

    sudo apt-get install xdotool wmctrl
    
  • Затем скопируйте скрипт выше в пустой файл, сохраните его как start_maximized.py

  • Тест - запустите скрипт командой:

    python3 /path/to/start_maximized.py
    

    Теперь nautilus запустится с новым развернутым окном.

  • Добавьте, если хотите, команду как элемент быстрого списка (щелчок правой кнопкой мыши) к Files (Наутилус) пусковой в Unity Launcher.

2. Обобщенная версия; запустить любое приложение развернуто

Вы можете запустить любое приложение с графическим интерфейсом (+ их аргументы) в обобщенном скрипте ниже:

#!/usr/bin/env python3
import subprocess
import time
import sys

appcommand = sys.argv[1:]
app = appcommand[0]
startup = (" ").join(appcommand)

def w_list():
    try:
        pid = subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
        w_list = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
        return [l.split()[0] for l in w_list if pid in l]
    except subprocess.CalledProcessError:
        pass

relevant1 = w_list()
subprocess.Popen(["/bin/bash", "-c", startup])

t = 0
while t < 30:
    time.sleep(0.5)
    relevant2 = w_list()
    if all([relevant2 != None, relevant1 != None]):
        new = [w for w in relevant2 if not w in relevant1]
        if new:
            subprocess.Popen(["xdotool", "windowsize", new[0], "100%", "100%"])
            break
    relevant1 = relevant2
    t += 1

Использовать его

  • Выполните настройку точно так же, как указано выше (включая установку wmctrl а также xdotool, но дополнительно используйте целевое приложение (+ возможные аргументы) в качестве аргумента для запуска скрипта.

    Например:

    python3 /path/to/start_maximized.py nautilus --new-window
    

    или же:

    python3 /path/to/start_maximized.py gedit
    

Дополнительно, добавьте опцию в быстрый список

Вы можете легко добавить опцию в nautilus Quicklist. Предполагая, что вы используете вторую (обобщенную) версию:

  • Скопируйте глобальный nautilus.desktop файл локально:

    который на 14.04 и 14.10: nautilus.desktop:

    cp /usr/share/applications/nautilus.desktop ~/.local/share/applications
    

    и 15.04 и 15.10: org.gnome.Nautilus.desktop

    cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
    
  • Откройте файл с помощью (например) gedit, найдите строку:

    Actions=Window;
    

    Измените это на:

    Actions=Window;Open a maximized window;
    

    Добавьте в самый конец файла:

    [Desktop Action Open a maximized window]
    Name=Open a maximized window
    Exec=python3 '/path/to/start_maximized.py' nautilus --new-window
    OnlyShowIn=Unity;
    
  • Сохраните и закройте файл.

  • Выйдите и вернитесь.

Теперь у вас есть опция быстрого списка, как на картинке.

Концептуальное объяснение

Максимизировать существующее окно не очень сложно. И то и другое wmctrl а также xdotool предложить варианты, чтобы сделать это.

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

  1. составить список существующих на данный момент окон целевого приложения (если есть)
  2. дать команду открыть приложение (или новое окно запущенного приложения)
  3. следить за появлением новых окон приложения
  4. если появляется новое окно, очевидно, наш кандидат - максимизировать -> максимизировать его.

Таким образом, мы можем "умно" развернуть новое окно приложения, которое будет работать независимо от того, работает компьютер медленно (например, занят тяжелой работой) или быстро.

Наконец, сценарий имеет встроенное ограничение времени безопасности, предотвращающее постоянное ожидание в случае, если приложение по какой-то причине не запускается. После ок. 15 секунд, скрипт сдается и выходит из пути.

Наутилус запоминает размер окон.
Начните это как обычно и максимизируйте это, затем закройте это.

Теперь, когда вы печатаете nautilus в терминале он откроется в развернутом виде.
Проверено на Ubuntu 14.04 LTS.

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