Как переместить окно до уровня его родительского окна в i3wm?

Ответ на мой собственный вопрос. Последний Chrome, работающий на Linux Mint, повреждается.

Мне установили эту версию. Версия 24.0.1312.56

Я установил Хром (полностью версия ОС), и проблема ушла. Хром является этой версией:

Версия 23.0.1271.97 Основанный на Ubuntu 12.10, работая на (23.0.1271.97-0ubuntu0.12.10.1) LinuxMint 14

21
12.12.2014, 01:33
3 ответа

Следующая строка показывает, что у вас есть файловая система только для чтения по адресу /...

/dev/mapper/sysvg-lvroot / ext4 ro,relatime,errors=remount-ro,data=ordered 0 0

Но вы также должны иметь некоторое указание на то, что ваша файловая система действительно имеет ошибки (например, из dmesg , в некоторых системах также journalctl ) и была установлена только для чтения из-за этого. Вероятно, эти ошибки следует исправить. Вы также можете попытаться повторно подключить его как доступный для записи.

mount -o remount,rw /

Существует много возможных причин, по которым /etc/mtab не могут быть записаны, и наиболее заметными из них являются то, что дистрибутивы переключаются на использование symlink /etc/mtab , указывая на /proc .

В моем случае:

$ ls -l /etc/mtab
lrwxrwxrwx 1 root root 19 Aug  8 13:04 /etc/mtab -> ../proc/self/mounts

Другими словами, они отказываются от концепции записываемого mtab, где mount хранит свою информацию. Возможно, вы просто используете инструмент (например, версию монтирования), который еще не готов для такой установки.

-121--128991-

Предложение Дона в комментариях было хорошим началом.

Это то, что мне нужно, чтобы он (в основном) работать:

pr +1 -1 -t -m -l1000 -w 80 tabfile

-m было необходимо, чтобы флаг -w вступил в силу для одного столбца. Мужская страница может использовать некоторые перезаписи, чтобы указать на это.

При попытке обхода я обнаружил, что pr выводит символы \t , поэтому передача их результатов в cut привела к той же проблеме.

-1 (флаг столбца) специально указывает на странице «man»:

Эта опция не должна использоваться с -m.

Однако без этой опции pr усекает линии willy-nilly, намного короче указанной длины.

pr также вставляет пробел перед (или после?) каждым словом в поле (то есть каждое место у меня есть один пробел, имеет два после обработки). Если слов слишком много, вставленные места игнорируют ограничение -w (создание обхода). Но, что любопытно, в противном случае «столбцы» с разделителями, отличными от табуляции (т.е. с расположением пробелов), остаются в очереди.

-121--48659-

Я нашел ответ, посмотрев видеоролик на сайте i3:

Shift + $ mod + Up

Focus parent:

$ mod + a

Я надеюсь, что это будет полезно для других людей, которые также новички в i3wm.

19
27.01.2020, 19:43

Я хотел бы расширить ответ автора.Shift+$mod+Up(move upдляw1-a)очень зависит от вашего текущего макета.

Допустим, начальное состояние дерева контейнеров:

.
├── w1
│   ├── w1-a
│   └── w1-b
└── w2

(Обратите внимание, что w1 не виден напрямую -видны только два его дочерних контейнера/окна.)

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

Изменение порядка внутри одного уровня в дереве контейнеров

Например, если вы используете его с w1-bфизически ниже w1-aв вертикальном разделении:

. (horizontal split)
├── w1 (vertical split)
│   ├── w1-a
│   └── w1-b
└── w2

, затем он просто переключит их, перемещая w1-bвыше w1-aи , а не , на родительский верхний уровень -. Теперь дерево контейнеров выглядит так:

. (horizontal split)
├── w1 (vertical split)
│   └── w1-b
│   ├── w1-a
└── w2

Визуально изменение будет выглядеть так:

+------------------------------------------+      +------------------------------------------+
| +-----------------+  +-----------------+ |      | +-----------------+  +-----------------+ |
| | w1              |  | w2              | |      | | w1              |  | w2              | |
| | +-------------+ |  |                 | |      | | +-------------+ |  |                 | |
| | | w1-a        | |  |                 | |      | | | w1-b        | |  |                 | |
| | |             | |  |                 | |      | | |             | |  |                 | |
| | |             | |  |                 | |      | | |             | |  |                 | |
| | |             | |  |                 | |      | | |             | |  |                 | |
| | +-------------+ |  |                 | |      | | +-------------+ |  |                 | |
| | +-------------+ |  |                 | | ---> | | +-------------+ |  |                 | |
| | | w1-b        | |  |                 | |      | | | w1-a        | |  |                 | |
| | | (move up)   | |  |                 | |      | | |             | |  |                 | |
| | |             | |  |                 | |      | | |             | |  |                 | |
| | |             | |  |                 | |      | | |             | |  |                 | |
| | |             | |  |                 | |      | | |             | |  |                 | |
| | +-------------+ |  |                 | |      | | +-------------+ |  |                 | |
| +-----------------+  +-----------------+ |      | +-----------------+  +-----------------+ |
+------------------------------------------+      +------------------------------------------+

Перемещение на один уровень выше (вероятно, то, что имел в виду задавший вопрос)

Если, с другой стороны, w1-aнаходится слева от w1-b, а w2вышеw1:

. (vertical split)
├── w1 (horizontal split)
│   ├── w1-a
│   └── w1-b
└── w2

, затем после выполнения move upна w1-bвы получите w2и w1-bна одном и том же (верхнем )уровне дерева, но w1-aвсе еще будет в w1, что может сбивать с толку, особенно учитывая, что w1сам по себе является просто невидимым контейнером.

Дерево контейнеров теперь будет выглядеть так:

.
├── w1-b
├── w1
│   └── w1-a
└── w2

+------------------------------------------+      +------------------------------------------+
| +--------------------------------------+ |      | +--------------------------------------+ |
| | w1                                   | |      | | w1-b                                 | |
| | +---------------+  +---------------+ | |      | |                                      | |
| | | w1-a          |  | w1-b          | | |      | +--------------------------------------+ |
| | |               |  | (move up)     | | |      | +--------------------------------------+ |
| | |               |  |               | | |      | | w1                                   | |
| | |               |  |               | | |      | | +----------------------------------+ | |
| | +---------------+  +---------------+ | |      | | | w1-a                             | | |
| +--------------------------------------+ |      | | |                                  | | |
| +--------------------------------------+ | ---> | | +----------------------------------+ | |
| | w2                                   | |      | +--------------------------------------+ |
| |                                      | |      | +--------------------------------------+ |
| |                                      | |      | | w2                                   | |
| |                                      | |      | |                                      | |
| |                                      | |      | |                                      | |
| +--------------------------------------+ |      | +--------------------------------------+ |
+------------------------------------------+      +------------------------------------------+

Если бы вы затем попытались переместиться w1-aвверх, никаких визуальных изменений не было бы заметно, но дерево изменилось бы и w1больше не существовало:

.
├── w1-b
├── w1-a
└── w2

+------------------------------------------+      +------------------------------------------+
| +--------------------------------------+ |      | +--------------------------------------+ |
| | w1-b                                 | |      | | w1-b                                 | |
| |                                      | |      | |                                      | |
| +--------------------------------------+ |      | +--------------------------------------+ |
| +--------------------------------------+ |      | +--------------------------------------+ |
| | w1                                   | |      | | w1-a                                 | |
| | +----------------------------------+ | |      | |                                      | |
| | | w1-a                             | | |      | |                                      | |
| | |                                  | | |      | |                                      | |
| | +----------------------------------+ | | ---> | |                                      | |
| +--------------------------------------+ |      | +--------------------------------------+ |
| +--------------------------------------+ |      | +--------------------------------------+ |
| | w2                                   | |      | | w2                                   | |
| |                                      | |      | |                                      | |
| |                                      | |      | |                                      | |
| +--------------------------------------+ |      | +--------------------------------------+ |
+------------------------------------------+      +------------------------------------------+

Таким образом, вам нужно переместить его еще раз, чтобы изменить порядок на верхнем уровне и поместить w1-aвыше w1-b.

Переход на два уровня выше

Если w1-aфизически находится выше w1-bв вертикальном шпагате,и w2находится справа от w1в горизонтальном разрезе:

. (horizontal split)
├── w1 (vertical split)
│   ├── w1-a
│   └── w1-b
└── w2

, тогда вы получите w1-aкак в том же контейнере, что и контейнер w1и w2.

Контейнерное дерево:

.
├── w1-a
└── container
    ├── w1
    │   └── w1-b
    └── w2

+------------------------------------------+      +------------------------------------------+
| +-----------------+  +-----------------+ |      | +--------------------------------------+ |
| | w1              |  | w2              | |      | | w1-a                                 | |
| | +-------------+ |  |                 | |      | |                                      | |
| | | w1-a        | |  |                 | |      | |                                      | |
| | | (move up)   | |  |                 | |      | +--------------------------------------+ |
| | |             | |  |                 | |      | +--------------------------------------+ |
| | |             | |  |                 | |      | | container (former root)              | |
| | |             | |  |                 | |      | | +---------------+ +----------------+ | |
| | +-------------+ |  |                 | |      | | | w1            | | w2             | | |
| | +-------------+ |  |                 | | ---> | | | +-----------+ | |                | | |
| | | w1-b        | |  |                 | |      | | | | w1-b      | | |                | | |
| | |             | |  |                 | |      | | | |           | | |                | | |
| | |             | |  |                 | |      | | | |           | | |                | | |
| | |             | |  |                 | |      | | | +-----------+ | |                | | |
| | +-------------+ |  |                 | |      | | +---------------+ +----------------+ | |
| +-----------------+  +-----------------+ |      | +--------------------------------------+ |
+------------------------------------------+      +------------------------------------------+

Заключение

Перемещение контейнеров/окон в i3 поначалу может быть немного неинтуитивным, но если вы понимаете, какой контейнер содержит какой из них и где они расположены, вы можете предсказать, как будет вести себя перемещение контейнера. Имейте в виду, что операция перемещения не всегда может привести к видимым изменениям.

PS :Небольшой мысленный эксперимент :Если выmove leftw1-aв примере "Переупорядочение в пределах одного уровня в дереве контейнеров", вы получите что-то похожее на сценарий "Перемещение на один уровень выше".

2
27.01.2020, 19:43

Мой ответ на эту проблему заключается в наличии bash-скрипта i3helper, который может делать это независимо от макета с помощью focus parentи меток. Единственная извлеченная команда —:

#!/bin/bash
case $1 in
  moveToParent)
    i3 mark i3ha
    i3 focus parent
    i3 focus parent
    i3 mark i3hb
    i3 [con_mark="i3ha"] focus
    i3 move window to mark i3hb
    i3 unmark i3ha
    i3 unmark i3hb
    ;;
esac

и связав его в i3 как:

# focus the parent container
bindsym $mod+a focus parent
bindsym $mod+shift+a exec i3helper moveToParent
bindsym $mod+z focus child

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

1
17.03.2020, 10:45

Теги

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