是否可以在我的 i3 启动文件中专门配置一个桌面来启动程序,但只在那里启动一次而不将该程序分配给桌面。
我知道存在一个涉及更改到另一个工作区的解决方案,但这给我留下了一个主要问题:只要我有一个具有“非即时”启动时间的程序,该程序就会出现在我最后一个工作区中切换到而不是在我想要的工作区。
具体来说,这是我当前的启动文件,我在其中做了一个解决方法,涉及将原子(这是困扰我 atm 的程序)分配到工作区 9,这目前还可以,但从长远来看是不可取的:
assign [class="Atom"] $workspace9
exec atom
exec --no-startup-id i3-msg 'workspace $workspace9; exec
/usr/bin/urxvt'
#exec --no-startup-id i3-msg 'workspace $workspace9; exec /usr/bin/atom'
exec --no-startup-id i3-msg 'workspace $workspace1; exec /usr/bin/urxvt'
Run Code Online (Sandbox Code Playgroud)
我想获得对 atom 的注释调用以所需的方式执行并完全抛弃赋值方法。
我实际上并不认为它具有相关性,但以防万一:我运行基于 Arch 的 Manjaro-Linux。
编辑:以下代码片段有效,但仍然保留这个问题,因为它限制我最后打开原子并在该桌面上启动我的会话:
#assign [class="Atom"] $workspace9
#exec atom
exec --no-startup-id i3-msg 'workspace $workspace9; exec
/usr/bin/urxvt'
exec --no-startup-id i3-msg 'workspace $workspace1; exec /usr/bin/urxvt'
exec --no-startup-id i3-msg 'workspace $workspace9; exec /usr/bin/atom'
Run Code Online (Sandbox Code Playgroud)
这也有一个明显的缺点,它不允许多个程序在不同的工作空间上启动,如果它们表现出与 atom 相同的行为。
我测试安装一个我必须使用的包yum localinstall <pkgfile>.rpm。工作正常,但我不知道如何删除它。我怎样才能做到这一点?
对于备份程序的一致性检查,我想定义一个函数来计算目录中的所有文件,包括子目录、子目录等中的所有文件。
到目前为止,我正在尝试的解决方案如下:
countfiles() {
local cdir=$1
local files=$(ls -la $cdir | grep -cv '^[dl]')
local dirstring=$(ls -la $cdir | grep '^d' | egrep -o ' \.?[^[:space:].][^[:space:]]+$')
local directories=(${dirstring//"\n"/})
echo ${directories[@]}
for dir in ${directories[@]}; do
echo -n "$dir "
echo -n 'filecount >> '
local dirfiles=$(countfiles "$cdir/$dir")
echo -n $dirfiles
echo ' <<'
#files=$(($files+$dirfiles))
done
echo $files
}
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出:
.config .i3 .scripts
.config filecount >> gtk-3.0 termite gtk-3.0 filecount >> 2 << termite filecount >> 2 << 1 <<
.i3 …Run Code Online (Sandbox Code Playgroud)