(KDE 或 X)脚本在错误的虚拟桌面中打开 konsole

(KDE 或 X)脚本在错误的虚拟桌面中打开 konsole

我有这个脚本。我把它放在〜/桌面中。我在桌面上的“文件夹视图”小部件中查看脚本。当我单击脚本时,我会得到用户列表,然后得到一个授权对话框(用于密码),然后得到一个“konsole”,我希望它出现在同一个虚拟桌面中。

不幸的是它出现在随机的虚拟桌面中。因为我不知道VD的“协议”有多少是X的,有多少是KDE的,所以我不知道问题出在哪里。是什么导致了这种行为?如何修复此行为,使其出现在活动 VD 中?

我尝试在 freenode IRC 频道 #linux 上问这个问题,其中一个被昵称为 Psi_Jack 的人对这个脚本给了我很多悲伤,主要是因为我从 bash 调用了 ruby​​。事实是,我只想访问“真实”用户,例如“mom”、“pop”、“sis”、“mouse”,而不是“saned”、“mysqld”、“fethmail”等。所以我必须测试用户 ID。虽然 bash 不是很难,但它比我喜欢的更混乱。在这些情况下,我使用 ruby​​,因为 —— ruby​​ 存在的部分原因是清理 Perl 的一些混乱,而 perls 存在的部分原因是清理各种脚本 shell 的混乱。

问题是我知道 ruby​​ 是正确的,并且 AFAICS 除了“/usr/lib/kde4/libexec/kdesu -u $KA_USER konsole”行之外,脚本没有真正的问题。所以请搁置剧本。

#!/usr/bin/env sh

#  kstart --desktop [#] [command]
# Assign to dlg the specified user.
dlg=$(ruby <<EOF

command = "zenity  --list --column=User root"
File.new("/etc/passwd").readlines.each{|l|
fields=l.split(":")
if ( fields[2].to_i > 1000 and fields[2].to_i<60000) then 
 command = command+" #{fields[0]}"
end
}
puts command
EOF
)

# Execute zenity dialog, assign choice to KA_USER
KA_USER=$($dlg)
if [ -n "$KA_USER" ] 
then
    t=$(mktemp --suffix=log /tmp/sukon-XXXX)
    /usr/lib/kde4/libexec/kdesu -u $KA_USER konsole 
fi

相关内容