Сохраните состояние окон в DWM

Смотрите на Усовершенствованное Руководство по созданию сценариев Bash, конкретно разделите 5.1, который покрывает переменные заключения в кавычки. Причина Вы, которые - переменные двойной кавычки то, потому что содержание переменной может включать пробелы. Пространство обычно является граничным символом, который обозначает перерыв в атомах в строке текста для большинства команд.

Существует хороший пример там, который иллюстрирует этот тезис:

выборка из вышеупомянутой ссылки

variable2=""    # Empty.

COMMAND $variable2 $variable2 $variable2
                # Executes COMMAND with no arguments. 
COMMAND "$variable2" "$variable2" "$variable2"
                # Executes COMMAND with 3 empty arguments. 
COMMAND "$variable2 $variable2 $variable2"
                # Executes COMMAND with 1 argument (2 spaces).
# Thanks, Stéphane Chazelas.

В вышеупомянутом Вы видите, что в зависимости от того, как Вы заключаете переменную в кавычки, это - или никакие аргументы, 3, или 1.

Примечание: Благодаря @StéphaneChazelas для того, если та обратная связь Руководству ABS так, чтобы это могло работать, это - путь назад в этот сайт, где он всегда участвует.

5
28.12.2014, 12:02
1 ответ

DWM не предназначен для экономии состояния вашего сеанса; Как правило, что-то более полное раздутается взорванные настольные среды.

Вместо этого вы можете писать правила в вашем config.h для приложений, которые вы хотели бы начать с постоянных тегов.

Чтобы использовать примеры, которые вы упоминаете, браузер и терминал:

static const Rule rules[] = {
    /* class      instance    title       tags mask     isfloating   monitor */
   { "Vimprobable", NULL,       NULL,       1 << 1,       False,       -1 },
   { "urxvtc",      NULL,       NULL,       0 << 1,       False,       -1 },
...

Это запускает браузер в теге 2, а терминал в теге 1.

Вы также можете добавить ключей для упрощения запуска этих приложений:

/* commands */
static const char   *newtermcmd[] = { "urxvtc", "-title", "newterm", NULL };
static const char   *browsercmd[] = { "vimprobable", "%s", NULL };
...

static Key keys[] = {
    /* modifier                     key        function        argument */
    { 0,                            XK_Menu,   spawn,          {.v = dmenucmd } },
    { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = newtermcmd } },
    { ControlMask|Mod1Mask,         XK_b,      spawn,          {.v = browsercmd } },
...

Когда вы запускаете DWM, вы можете ударить свои ключи и иметь те приложения, назначенные их соответствующие теги. Если вы хотите в дальнейшем развиваться в этой концепции, вы можете написать сценарий оболочки, который открыл все приложения, которые вам требуют, и свяжитесь с ключевой последовательностью:

#!/usr/bin/env sh
# autostart apps

tabbed -d >/tmp/tabbed.xid; vimprobable2 -e $(</tmp/tabbed.xid) &
urxvtc -title "mutt" -e mutt &
$HOME/bin/shux &

до тех пор, пока есть правила для каждого из отдельных приложений, они будут назначены правильные теги; Вы просто назначаете ключевую последовательность для скрипта оболочки:

 { ControlMask|Mod1Mask,         XK_a,      spawn,          SHCMD("$HOME/bin/autostart") },
5
27.01.2020, 20:39

Теги

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