DWMがアプリケーションを誤って起動する

DWMがアプリケーションを誤って起動する

DWM(6.2)が追加の引数を使用してコマンドを実行しているようですが、理由はわかりません。私はほとんどの在庫のconfig.hファイルを持っていましたが、私が変更した唯一のものは、追加のコマンドとキーバインディングを追加することだけでした。 2つの例:Dolphinを起動するときに「/usr/bin/dolphin」を実行したいのですが、「/usr/bin/dolphin /home/myuser/st/」を実行してDolphinを起動するようです。ただし、存在しないディレクトリにあります。 Firefoxを実行すると、「/usr/bin/terminator」、「/usr/bin/spotify」などの場所に、デフォルトで他のキーバインディングにバインドされた他のコマンドを含む追加のタブがたくさんあります。 Cに関する私の知識は非常に限られており、dwm.cの "spawn"関数を調べましたが、完全には理解していませんでした。私のconfig.hファイルの関連部分は次のとおりです。みんなありがとうございます。

static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *termcmd[]  = { "st", NULL };
static const char *dolphin[] = {"/usr/bin/dolphin"};
static const char *terminator[] = {"/usr/bin/terminator"};
static const char *firefox[] = {"/usr/bin/firefox"};
static const char *spotify[] = {"/usr/bin/spotify"};

/* ##########  Custom Commands : End ########## */

/* ##########  Key Bindings : Start ########## */

static Key keys[] = {
    /* Format = {modifier, key, function, {argument}} */
    { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },
    { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } },
    {MODKEY|ShiftMask, XK_e, spawn, {.v = dolphin}},
    {MODKEY|ShiftMask, XK_t, spawn, {.v = terminator}},
    {MODKEY|ShiftMask, XK_i, spawn, {.v = firefox}},
    {MODKEY|ShiftMask, XK_m, spawn, {.v = spotify}},
    { MODKEY,                       XK_b,      togglebar,      {0} },

ベストアンサー1

気づいた!したがって、「spawn」関数は次のように「execvp」(コマンドを実行する関数)を呼び出します。

int execvp(const char *file, char *const argv[]);

この基本行では、次のことを行います。

static const char *termcmd[]  = { "st", NULL };

コマンド「st」とパラメータ「NULL」があります。私は以下を模倣するために自分の行を修正しました。

static const char *termcmd[]  = { "/usr/bin/firefox", NULL };

これで期待どおりに動作します。

おすすめ記事