Как я могу запустить приложение с заранее определенным размером и положением окна?

Лично я считаю, что общий внешний вид Netbeans на Linux немного разочаровывает, особенно учитывая, насколько хорошо он выглядит на других платформах. К счастью, изменение внешнего вида & amp; (LAF) можно легко сделать изнутри IDE. В зависимости от вашего выбора это часто улучшает внешний вид шрифтов.

Чтобы изменить LAF, сделайте следующее: Нажмите «Инструменты >>». «Параметры». В диалоговом окне выберите «Внешний вид», затем вкладку «Поиск» и «Чувство». Просто выберите один из LAF. Мое предпочтение - Нимбус, но вы можете предпочесть что-то еще.

Доступны также два доступных плагина Dark MAP: Dark Metal и Dark Nimbus.

1
задан 28 April 2015 в 22:15

4 ответа

Фактическая команда, которую вы хотите, похожа на

wmctrl -r :ACTIVE: -b add,maximized_vert && 
wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1

. Это заставит текущее окно занимать половину экрана (смените $HALF на размеры вашего экрана) и привяжите к левой руке боковая сторона. Для привязки вправо используйте

wmctrl -r :ACTIVE: -b add,maximized_vert && 
wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1 

Вы также можете играть с wmctrl, чтобы получить идентификатор интересующих вас окон вместо использования :ACTIVE:. Я не могу помочь, хотя, поскольку это зависит от рассматриваемых окон. Посмотрите на man wmctrl для большего.

Я написал для этого сценарий. Я не использую Unity, поэтому я не могу гарантировать, что он сработает с этим, но я не вижу причин, почему бы и нет. Для этого необходимо установить wmctrl, xdpyinfo и disper:

sudo apt-get install wmctrl x11-utils disper

Затем сохраните сценарий ниже как ~/bin/snap_windows.sh, сделайте его исполняемым с помощью chmod a+x ~/bin/snap_windows.sh, и вы можете запустить [ ! d5]

snap_windows.sh r

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

Сценарий немного сложнее, чем вы просите потому что я написал его для работы как с одним, так и с двумя мониторами.

#!/usr/bin/env bash

## If no side has been given, maximize the current window and exit
if [ ! $1 ]
then
    wmctrl -r :ACTIVE: -b toggle,maximized_vert,maximized_horz
    exit
fi

## If a side has been given, continue
side=$1;
## How many screens are there?
screens=`disper -l | grep -c display`
## Get screen dimensions
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'`;
HALF=$(($WIDTH/2));

## If we are running on one screen, snap to edge of screen
if [ $screens == '1' ]
then
    ## Snap to the left hand side
    if [ $side == 'l' ]
    then
        ## wmctrl format: gravity,posx,posy,width,height
    wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
    ## Snap to the right hand side
    else
    wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1 
    fi
## If we are running on two screens, snap to edge of right hand screen
## I use 1600 because I know it is the size of my laptop display
## and that it is not the same as that of my 2nd monitor.
else
    LAPTOP=1600; ## Change this as approrpiate for your setup.
    let "WIDTH-=LAPTOP";
    SCREEN=$LAPTOP;
    HALF=$(($WIDTH/2));
    if [ $side == 'l' ]
    then
        wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$LAPTOP,0,$HALF,-1
    else
    let "SCREEN += HALF+2";
    wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$SCREEN,0,$HALF,-1;
    fi
fi
3
ответ дан 23 May 2018 в 21:01

Вы можете сделать это, используя xdotool.

Чтобы установить xdotool, вы можете запустить:

sudo apt-get update && sudo apt-get install xdotool

Затем отправить Ctrl + Alt + & lt; keypad_key & gt; нажатие клавиши в окне терминала X вы можете запустить:

xdotool key Ctrl+Alt+<keypad_key_value>

* & lt; keypad_key_value & gt; = значение клавиши клавиатуры в списке ниже

Чтобы запустить программу GUI и отправить нажатие клавиши в окно X (которое в этом случае является активным окном во время выполнения команды xdotool), вы можете запустить:

<command> && window="$(xdotool getactivewindow)" xdotool key --delay <delay> --window "$window" <keypad_key_value>

* & lt; keypad_key_value & gt; = значение клавиши клавиатуры в списке ниже

Обратите внимание, что в большинстве случаев вам нужно будет запустить команду, которую вы выдаете как отдельный процесс (например, запустив nohup <command> & из <command> в примере выше), в противном случае xdotool не будет выполняться до завершения выполнения <command>.

Также вам нужно установить некоторую задержку, иначе нажатие клавиши будет (d13)

Возможные значения для <keypad_key_value>:

0: [ f16] 1: 87 2: 88 3: 89 4: 83 5: 84 6: 85 7: 79 8: 80 9: 81 [!d14 ]

В качестве правила большого пальца, чтобы узнать значение любой клавиши на клавиатуре в среде X, можно запустить xev и нажать клавишу, чтобы выводить ее значение внутри терминала.

3
ответ дан 23 May 2018 в 21:01
  • 1
    Что-то не так с нашими изменениями? – Tim 25 April 2015 в 21:18
  • 2
    @Tim Нет, по крайней мере, не удаление последней строки, и я согласен, что это довольно непривычно, но то, что может варьироваться в пределах команды, на мой взгляд лучше отформатировано, если оно заключено в угловые скобки, что является стандартной нотацией в теории языка для ссылки к синтаксической категории (ссылаясь на ваше редактирование), и я думаю, что имя команды лучше форматировано, если оно включено в обратные ссылки, чтобы сразу же распознаваться как таковое (ссылаясь на редактирование AB); обратите внимание, что не все это не в моей голове, раньше у меня были сомнения, и я спросил этот по мета – kos 25 April 2015 в 21:38
  • 3
    Да, это прекрасно, как сейчас :) & lt; & gt; является стандартом, и я иду за `` вокруг любой команды :) – Tim 25 April 2015 в 21:40

У меня есть приложение с именем Worksets (on github) для Unity, которое позволяет вам делать это легко через графический интерфейс пользователя - это бесплатный и открытый источник.

github [ ! d2]

Это в основном оболочка для решений wmctrl и xdotool, перечисленных здесь в качестве ответов, и предоставляет простой способ быстро сделать и сохранить такие настройки.

2
ответ дан 23 May 2018 в 21:01

У меня нет комментариев комментировать прямо на превосходной записи Якова Влайма, но я изменил сценарий, чтобы разрешить запуск приложения с аргументами (необходимо использовать setwindow с gedit --new-window). Изменить:

if app in p and w[2] in p] for w in ws2]

на:

if app.split()[0] in p and w[2] in p] for w in ws2]
1
ответ дан 23 May 2018 в 21:01

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

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