use*_*904 8 linux bash shell-script gnome-terminal awesome
我正在使用 Gnome 终端和默认 bash 在最新的 Arch Linux 上运行 Awesome WM。我已经设法让这个工作,但我想知道这个实现是否有可能进行任何形式的改进。这个问题确实不涉及开放新的选项卡,只与真棒WM产生新的终端窗口。
我已经重写了“cd”命令以将当前工作目录保存在“.cd_extend”文件中:
~/.bashrc
alias cd='source ~/.cd_extend'
Run Code Online (Sandbox Code Playgroud)
~/.cd_extend
#!/bin/bash
command cd $1
echo $(pwd) > ~/.terminal_directory
Run Code Online (Sandbox Code Playgroud)
当我生成一个新终端时,“.terminal_directory”被读取并作为参数附加到 gnome 终端的“--working-directory”标志。
~/.dotfiles/open_terminal.sh
#!/bin/bash
DIR=$(cat ~/.terminal_directory)
gnome-terminal --working-directory=$DIR
Run Code Online (Sandbox Code Playgroud)
awesomewm rc.lua
terminal = "~/.dotfiles/open_terminal.sh"
awful.key({ modkey, }, "Return", function () awful.util.spawn(terminal) end)
Run Code Online (Sandbox Code Playgroud)
我想知道我是否错过了任何可以简化这一点的内部 bash 功能,以及是否有改进的余地。
在 Arch Linux + GNOME 上(至少),您可以添加以下行~/.bashrc以在当前目录中打开新的终端窗口:
source /etc/profile.d/vte.sh
Run Code Online (Sandbox Code Playgroud)
已经有一个关于新标签的相关问题。事实证明,对于新窗口来说,答案是相同的。
在 Gnome-terminal 的菜单中,使用:
File --> Open Terminal
Run Code Online (Sandbox Code Playgroud)
这将使用 pwd 作为目录打开一个新窗口。
此外,您可以设置打开的标签:
编辑 --> 首选项 --> 常规 --> 在以下位置打开新终端: --> 选择选项卡。
因此,新终端将在同一窗口中以相同的密码打开。
如果需要,您仍然可以打开新窗口:
Alt-F2 --> gnome-终端
经过几天的测试和询问,这似乎是最简单的实现。它可以通过 Awesome WM 读取的全局状态来完成,但是为了保持可预测性和易于实施,我保留了它。
~/.bashrc
function cd {
command cd "$1"
pwd > /tmp/terminal_pwd
}
Run Code Online (Sandbox Code Playgroud)
之后我可以打开终端,它从/tmp/terminal_pwd文件中读取并使用给定的工作目录打开一个新的 gnome shell。
很棒的 WM - rc.lua
-- Terminal
awful.key({ modkey, }, 'Return',
function()
awful.spawn.easy_async_with_shell(
"if [[ -s /tmp/terminal_pwd ]]; then cat /tmp/terminal_pwd; else echo '~'; fi",
function(path)
awful.spawn.easy_async_with_shell('gnome-terminal --working-directory '..path, function() end)
end)
end),
Run Code Online (Sandbox Code Playgroud)