dbus
应该提供“一种应用程序相互通信的简单方法”。
但我仍然不确定它实际上有什么用处。我从未见过dbus
有用的情况,我只看到某些dbus
组件遇到错误的警告,例如当我从命令行启动终止符时(以便我可以看到错误):
Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
Run Code Online (Sandbox Code Playgroud)
我通过添加NO_AT_BRIDGE=1
到/etc/environment
. 我不知道那有什么作用。
几乎所有 gui 应用程序似乎都与dbus
. 有些允许在没有 的情况下启动dbus
,即:
terminator --no-dbus
Run Code Online (Sandbox Code Playgroud)
我看不出行为有什么不同。什么应该停止工作,什么时候terminator
开始没有dbus
?
另外,我尝试禁用各种 dbus 组件以查看停止工作的内容:
我删除了/etc/X11/Xsession.d/95dbus_update-activation-env
只是为了看看会发生什么。它包含以下代码:
if [ -n "$DBUS_SESSION_BUS_ADDRESS" ] && [ -x "/usr/bin/dbus-update-activation-environment" ]; then
# subshell so we can unset environment variables
(
# unset login-session-specifics
unset XDG_SEAT
unset XDG_SESSION_ID
unset XDG_VTNR …
Run Code Online (Sandbox Code Playgroud) 我知道如何在终端中为文本使用 256 种颜色:
printf "\033[38;5;196mhello\n"
Run Code Online (Sandbox Code Playgroud)
但是对于背景颜色,我似乎仅限于基本的8种颜色,即:
printf "\033[41mhello\n"
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用 256 色作为背景色?
我的意思是,终端已经知道颜色,所以应该是可能的。但是语法是什么?
如果相关,我将terminator
用作我的终端模拟器和zsh
我的外壳。
在我的zsh
shell 中,我根据我是否在git
存储库中动态更改提示。我正在使用以下 git 命令来检查:
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
...
Run Code Online (Sandbox Code Playgroud)
现在我还想区分当前目录是否被git
. 所以我在我的if
声明中又添加了一张支票:
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1) && ! $(git check-ignore . >/dev/null 2>&1); then
...
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想知道是否可以将其简化为一个git
命令。由于在每个 上都会刷新提示ENTER,因此在某些较慢的机器上,它往往会显着降低 shell 的速度。
@Stephen Kitt 接受的解决方案效果很好,但以下情况除外:
我正在跨文件系统使用存储库。让我们说 git 驻留在/.git
(因为我想跟踪我的配置文件/etc
),但我也想跟踪一些文件/var/foo
,这是一个不同的分区/文件系统。
当我位于/
并执行以下命令时,一切都按预期工作,并且我得到返回代码1
(因为/var/foo
正在被跟踪):
# git check-ignore -q /var/foo
Run Code Online (Sandbox Code Playgroud)
但是,当我位于 中的任何位置时/var
,相同的命令会失败并显示错误代码128
和以下错误消息:
# git check-ignore -q …
Run Code Online (Sandbox Code Playgroud) 在zsh
默认情况下通过,CTRL+w和ALT+Backspace似乎正是同样的效果。
我如何保持CTRL+w原样,并更改ALT+Backspace以使其停在非字母数字字符处。
即,当光标位于以下命令的末尾时:echo /aaa/bbb/ccc
,按CTRL+w应离开echo
,而按ALT+Backspace应离开echo /aaa/bbb/
。
根据来自 的回答@Thomas Dickey
,我已将以下内容添加到我的.zshrc
:
my-backward-delete-word () {
local WORDCHARS='~!#$%^&*(){}[]<>?+;'
zle backward-delete-word
}
zle -N my-backward-delete-word
bindkey '\e^?' my-backward-delete-word
Run Code Online (Sandbox Code Playgroud)
现在命令行编辑器的行为与我预期的不同。
例如,单引号字符'
未在 my 中枚举WORDCHARS
,因此当我按下 时Alt+BackSpace,backward-delete-word
应该停在'
。
这适用于第一个示例,但不适用于第二个示例:
$ echo 'asdf'
$ echo …
Run Code Online (Sandbox Code Playgroud) 假设我有以下条目 /etc/hosts
192.168.1.10 server1.mydomain.com
Run Code Online (Sandbox Code Playgroud)
我SERVER-FILES
在当前目录中有一个目录。我想scp
在SERVER-FILES
某个地方的目录。我输入SE
并使用自动完成功能来完成目录名称:
$ scp -rp SE<TAB>
Run Code Online (Sandbox Code Playgroud)
这个完成应该是完全明确的。但是 zsh 自动完成尝试过于智能,并且不区分大小写处理主机名,因此尝试匹配SE
主机名:
$ scp -rp SE<TAB>
SERVER-FILES/
server1.mydomain.com
Run Code Online (Sandbox Code Playgroud)
如何禁用这个烦人的功能,其中 zsh 试图匹配主机名不区分大小写,从而完成SE<TAB> to
server1.mydomain.com` ?
根据来自 的建议@zeppelin
,我更改了 ssh 完成文件中的以下行Unix/_ssh
:
- compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts
+ compadd "$@" $config_hosts
Run Code Online (Sandbox Code Playgroud)
但这没有帮助。它完全没有效果。
我不明白来自@Tomasz Pala
. 我的 zsh 完成不区分大小写。
请某人告诉我我需要改变什么/usr/share/zsh/functions/Completion/Unix/_foo
来改变这种行为。
我终于缩小了问题的范围,并找出了为什么解决方案@Tomasz Pala
对他有用,但对我不起作用:
当我Unix/_hosts
在新设置的机器/用户帐户上更改文件时,该解决方案有效。
scp -r SE<TAB>
Run Code Online (Sandbox Code Playgroud)
上面的命令忽略 …
我可以使用以下命令空白/关闭笔记本电脑上的显示:
xset dpms force off
Run Code Online (Sandbox Code Playgroud)
然后,任何鼠标移动或键盘按下都会“唤醒”显示。
是否可以忽略鼠标移动,只在键盘操作时取消空白屏幕?
如果目前无法做到xset
这一点,我欢迎任何关于如何修补源代码的建议。
我正在使用 Debian 10。
我已经在/etc/security/limits.conf
. 当我以testuser
正常用户身份登录我的桌面环境时(使用超薄login
管理器),一切正常。
当我登录的用户testuser
通过Xephyr
(从我的其他会议的其他用户),一切工作正常,除了chromium
浏览器。这是我遇到的错误dmesg
:
Chrome_ChildIOT (2472): VmData 4310827008 exceed data ulimit 4294967296. Update limits or use boot option ignore_rlimit_data.
Run Code Online (Sandbox Code Playgroud)
铬不可用(它启动,但无限期地等待加载任何页面)
除了chromium
设置了正确的限制外,所有其他程序。我已经使用以下方法验证了这一点:
find /proc/ -maxdepth 1 -user testuser -exec cat {}/limits \; | grep 'Max data size'
Run Code Online (Sandbox Code Playgroud)
所有PIDs
已Max data size
设置为无限制:
Max data size unlimited unlimited bytes
Run Code Online (Sandbox Code Playgroud)
除了chromium
进程:
Max data size 4294967296 4294967296 bytes
Max data size 17179869184 17179869184 bytes
Max …
Run Code Online (Sandbox Code Playgroud) 我在 Debian 上使用 Thunderbird 68。
对于我发送的任何电子邮件,Thunderbird 在 /tmp 中创建临时文件:
/tmp/nsmail.tmp
/tmp/nsmail-1.tmp
/tmp/nsmail-2.tmp
/tmp/nscopy.tmp
/tmp/nscopy-1.tmp
Run Code Online (Sandbox Code Playgroud)
不仅在发送电子邮件后这些文件没有被删除,更糟糕的是,在 Thunderbird 关闭后它们仍然留在那里。
我在Ubuntu和Bugzilla上都找到了错误报告,但没有解决方案。
我发现在发送电子邮件后不立即删除临时文件是一种非常糟糕的做法。绝对令人发指的是,即使应用程序退出也不会清理其临时文件。
作为解决方法,我可以更改创建这些临时文件的位置吗?例如,使用~/.cache/thunderbird/
会更合适。
当我不包括/
in 时WORDCHARS
,即:
WORDCHARS='~!#$%^&*(){}[]<>?.+;-'
Run Code Online (Sandbox Code Playgroud)
然后kill-word
按需要工作:使用Alt+ d,我可以删除文件系统路径的一部分(在每个 处停止/
)。
但是当使用Ctrl+Right和Ctrl+ 时Left,我希望有不同的行为:我不希望光标停在每个/
. 我想跳过整个路径作为一个词。
我可以WORDCHARS
只为forward-word
and使用不同的backward-word
吗?
我正在使用 3 台显示器,其中 2 台正在旋转。
我无法成功配置xorg.conf
以旋转 2 个显示器,但我找到了一个xrandr
可以在登录管理器启动后使用的命令:
xrandr --output DisplayPort-1 --rotate right --left-of DisplayPort-0
xrandr --output DisplayPort-2 --rotate left --right-of DisplayPort-0
Run Code Online (Sandbox Code Playgroud)
目前,我在登录后手动运行这些命令。
我应该把这些放在哪里,以便我的显示器在登录时旋转。另外,我可以在全球范围内做吗?因此,当我以其他用户身份登录时,显示器会旋转。还是每个用户在登录后都需要一个用户脚本来执行此操作?
zsh ×5
ansi ×1
autocomplete ×1
chrome ×1
colors ×1
command-line ×1
d-bus ×1
display ×1
git ×1
gui ×1
openbox ×1
prompt ×1
screensaver ×1
terminal ×1
thunderbird ×1
ulimit ×1
x-server ×1
xrandr ×1
xset ×1