Как запустить наутилус развернутым из командной строки?
Я могу легко запустить 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
предложить варианты, чтобы сделать это.
Проблема в том, что если вы хотите максимизировать вновь созданное окно, вы еще не знаете идентификатор окна, когда даете команду. Поэтому скрипт выполняет следующую процедуру:
- составить список существующих на данный момент окон целевого приложения (если есть)
- дать команду открыть приложение (или новое окно запущенного приложения)
- следить за появлением новых окон приложения
- если появляется новое окно, очевидно, наш кандидат - максимизировать -> максимизировать его.
Таким образом, мы можем "умно" развернуть новое окно приложения, которое будет работать независимо от того, работает компьютер медленно (например, занят тяжелой работой) или быстро.
Наконец, сценарий имеет встроенное ограничение времени безопасности, предотвращающее постоянное ожидание в случае, если приложение по какой-то причине не запускается. После ок. 15 секунд, скрипт сдается и выходит из пути.
Наутилус запоминает размер окон.
Начните это как обычно и максимизируйте это, затем закройте это.
Теперь, когда вы печатаете nautilus
в терминале он откроется в развернутом виде.
Проверено на Ubuntu 14.04 LTS.