我使用 linux,我喜欢在单个屏幕会话中完成我所有的命令行工作,这样我就可以重新启动图形登录等,而不会丢失我的终端。但是,当我注销并重新进入我的图形会话时,这会更改我的所有会话环境变量,例如 DBus 会话。这意味着再次登录后,我的屏幕会话现在具有旧的(错误的)环境变量。因此,现在当我尝试从我的屏幕会话启动图形程序时,它们最多会发出关于无法连接到会话总线的警告。最糟糕的是,它们无法完全启动。
所以,我正在寻找一种在 screen 的运行实例中修改环境变量的方法,以便所有随后创建的 screen 窗口都将继承新的环境变量。有没有办法做到这一点?
我在 Debian 上安装了 Skype 并无头运行,但是,我无法通过 dbus 与它交互。
到目前为止我所拥有的一些背景:
apt-get install dbus看起来很奇怪:
Skype --enable-dbus --use-system-dbus它启动 Skype时显示警告Skype: unrecognized option '--enable-dbus'现在,当我尝试通过 dbus 向 Skype 发送一些消息时:
dbus-send --system --type=method_call --print-reply --dest=com.Skype.API /com/Skype com.Skype.API.Invoke string:NAME\ hello string:PROTOCOL\ 5 string:SET\ PROFILE\ RICH_MOOD_TEXT\ echo123
Run Code Online (Sandbox Code Playgroud)
它以错误消息结束:
Error org.freedesktop.DBus.Error.ServiceUnknown: The name com.Skype.API was not provided by any .service files
Run Code Online (Sandbox Code Playgroud)
说到 dbus,我是新手。据我了解,下面应该有一些文件,/etc/dbus-1/session.d|system.d但这些目录是空的。
我不认为这是内置在系统中的,但是是否可以在没有太多麻烦的情况下做到这一点?
假设我用一个热键打开一个特定的程序,当我再次按下那个热键时,程序窗口被带到前面。
我想在 Ubuntu 9.04 上执行此操作。
也许用D-Bus?有专家吗?
更新:这是我最终得到的结果,以防它对某人有帮助:
#!/bin/bash
if [ -f "/tmp/myterm.pid" ]; then
WID=`cat /tmp/myterm.pid`
xdotool windowactivate $WID
if [ "$?" != "0" ]; then
WID=""
fi
else
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
fi
if [ "$WID" == "" ]; then
/usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@"
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
echo $WID > /tmp/myterm.pid
else
xdotool windowactivate $WID
fi
Run Code Online (Sandbox Code Playgroud)
当然可以简化,但我不是专家bash。此外,为了让我的示例正常工作,我在终端中创建了一个自定义配置文件,该配置文件将唯一标题应用于窗口,以便稍后找到。可能性是无止境!
多年来,我一直能够使用
dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend
Run Code Online (Sandbox Code Playgroud)
这不再适用于 Ubuntu 15.04,报告如下:
Error org.freedesktop.DBus.Error.UnknownMethod: Method "Suspend" with signature "" on interface "org.freedesktop.UPower" doesn't exist
Run Code Online (Sandbox Code Playgroud)
在没有密码提示的情况下暂停的一种选择是编辑sudoers,然后sudo pm-suspend. 还有其他不涉及授予root权限的方法吗?
是否有 DBus 命令(或来自命令行的其他方式)在 KDE Plasma 的面板上切换自动隐藏?(我正在运行 KDE 4.6。)
我有一个我在 WINE 中运行的游戏,如果它是自动隐藏的,它就不能正常工作,并且从为我处理这个问题的脚本中运行它会很好。
当我在 Debian 9 VPS 中运行此命令时:systemctl --user出现以下错误:Failed to connect to bus: No such file or directory
此错误出现在除用户 root 之外的所有用户上。
我已经有了 dbus dbus-user-session systemd libsystemd-dev libsystemd
这是我的环境:
USER=web
LOGNAME=web
HOME=/home/web
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games
MAIL=/var/mail/web
SHELL=/bin/zsh
SSH_CLIENT=[CENSORED] 23459 22
SSH_CONNECTION=[CENSORED] 23459 [CENSORED] 22
SSH_TTY=/dev/pts/0
TERM=xterm
XDG_SESSION_ID=1824414
XDG_RUNTIME_DIR=/run/user/1000
SHLVL=1
PWD=/home/web
OLDPWD=/home/web
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索的第 3 页找不到解决方案。
谢谢你的帮助!
我正在寻找可在/etc/network/interfaces文件中使用的 wpa-* 选项的详尽列表。
Debian wiki 有一个如何使用页面:https://wiki.debian.org/WiFi/HowToUse,它指的是/usr/share/doc/wpasupplicant/README.modes.gz“附加” wpa-* 选项,但此文件不包含详尽列表,只是常见选项的列表。
我在哪里可以找到每个可用 wpa-* 选项的列表?
如果失败,是否有选项可以指定在启用 D-Bus 的情况下启动 wpa_supplicant?
编辑:在启用 D-Bus 时,查看/etc/wpa_supplicant/functions.sh,似乎没有任何代码将 a 添加-u到WPA_SUP_OPTIONS变量。我functions.sh在初始化时手动将它添加到我自己的WPA_SUP_OPTIONS:
init_wpa_supplicant () {
[ -n "$WPA_SUP_CONF" ] || return 0
local WPA_SUP_OPTIONS
WPA_SUP_OPTIONS="-s -B -P $WPA_SUP_PIDFILE -i $WPA_IFACE -u"
inserted here ^^
Run Code Online (Sandbox Code Playgroud)
我不确定这个脚本是通用的,还是特定于 Debian 的。
在 Ubuntu 桌面 13.10 上,我有一个以 root 身份运行的安装脚本。它基本上根据需要配置计算机,但我需要使用dconf. 该脚本在普通用户下的终端窗口中运行sudo。我需要运行命令dconf write /com/canonical/unity/launcher/favorites "['unity://expo-icon', <...>']"。(它以各种不同的设置运行。)
我已经以登录用户的身份测试了这些命令,它们工作得很好。但是,当我以 root 身份登录时,我不能这样做sudo -u bitc dconf write <...>;我收到类似error: Could not connect: Connection refused或的错误unable to create directory '/root/.cache/conf'。
该脚本必须以 root 身份运行,因为它执行一些其他任务,但似乎dconf必须在特定登录会话下运行,而不仅仅是用户,才能对其进行配置。我宁愿没有单独的脚本dconf,但这是可能的。有没有办法附加到登录会话(或以其他方式dconf为该用户设置密钥)?
(脚本是用 node.js 用 javascript 编写的。)
不幸的是,在我的 Debian 8 中,jessie systemctl 根本不起作用。
每个systemctl命令都会导致:
Failed to get D-Bus connection: Unknown error -1
系统状态 udev
无法获得 D-Bus 连接:未知错误 -1
我该如何解决?
我会很感激你的帮助。
回到 Windows,我可以使用键盘上的媒体按钮在 Firefox 中播放/暂停 youtube 视频。在 Linux 上,我真的很想念这种能力。
有什么方法可以将 MPRIS 命令发送到 Linux (gnome) 上的 Firefox?它不必在任何地方都有效,仅 youtube 就足够酷了。我正在使用 Firefox 56.0.2。
我遇到了这个问题,但安装说明仅适用于 chrome,我无法让 firefox 脚本工作,因为我不知道如何从 github 上的代码创建/获取扩展名/ID。
这里的另一个答案建议使用热键,这是一个好主意,但我想在 Firefox 也在后台时控制 youtube,所以键盘快捷键是不可能的。
这里的所有解决方案要么已经过时,要么仅适用于 Chrome。