背景和顶部栏配置在启动时不适用

Background and top bar configurations does not apply at startup

我正在使用 Manjaro Linux 并使用 dwm。我在我的 ~/.xinitrc 文件中做了一些更改(添加),以便在我登录时设置我的墙纸并在顶部栏显示日期和时间。但是我无法应用这些更改或我的文件有问题,例如~/.xinitrc/etc/X11/xinit/xinitrc.

我的系统上已经安装了 compton、feh(也有氮气,但不喜欢)和 xsetroot。我还对我的 dwm 应用了 this 补丁,以便拥有一个 autostart.sh 文件。

这是我的 ~/.dwm/autostart.sh 文件:

#! /bin/bash
compton --config ~/.config/compton/compton.conf &
feh --bg-fill /home/root113/Pictures/0239.jpg &
xcompmgr &

while true; do
     xsetroot -name "$(date)"
     sleep 1s
done &

这没有用。 29 天前 here 提出了类似的问题,但尚未得到答复或收到任何评论。

然后我在网上搜索更多答案和帮助,意识到我应该尝试编辑我的 ~/.xinitrc 文件。这是:

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager 
from here)

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

DEFAULT_SESSION=gnome-session

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then
    xrdb -merge "$userresources"
fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
    for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
        [ -x "$f" ] && . "$f"
    done
    unset f
fi

get_session(){
    local dbus_args=(--sh-syntax --exit-with-session)
    case  in
        awesome) dbus_args+=(awesome) ;;
        bspwm) dbus_args+=(bspwm-session) ;;
        budgie) dbus_args+=(budgie-desktop) ;;
        cinnamon) dbus_args+=(cinnamon-session) ;;
        deepin) dbus_args+=(startdde) ;;
        enlightenment) dbus_args+=(enlightenment_start) ;;
        fluxbox) dbus_args+=(startfluxbox) ;;
        gnome) dbus_args+=(gnome-session) ;;
        i3|i3wm) dbus_args+=(i3 --shmlog-size 0) ;;
        jwm) dbus_args+=(jwm) ;;
        kde) dbus_args+=(startkde) ;;
        lxde) dbus_args+=(startlxde) ;;
        lxqt) dbus_args+=(lxqt-session) ;;
        mate) dbus_args+=(mate-session) ;;
        xfce) dbus_args+=(xfce4-session) ;;
        openbox) dbus_args+=(openbox-session) ;;
        *) dbus_args+=($DEFAULT_SESSION) ;;
    esac

    echo "dbus-launch ${dbus_args[*]}"
}

exec $(get_session)

#Personal customizations below

compton --config ~/.config/compton/compton.conf &
feh -bg-fill /home/root113/Pictures/0239.jpg &
xcompmgr &

while true; do
    xsetroot -name "$(date)"
    sleep 1s
done &

exec dwm

问题还是没有解决。 然后我改变了行

feh -bg-fill /home/root113/Pictures/0239.jpg &

有了这个:

~/.fehbg &

~/.fehbg里面写的是:

#!/bin/sh
feh --no-fehbg --bg-fill /home/root113/Pictures/0239.jpg

没有解决我的问题。

然后我决定在 /etc/X11/xinit/xinitrc 中导出我的 ~/.xinitrc 文件,方法是在文件末尾添加以下行:

 export PATH="${PATH}:/home/root113/.xinitrc"

这也没有用。因此,我一直在网上寻找解决方案,在其中一个论坛上有人告诉我应该使我的 ~/.xinitrc 文件可执行。所以我用以下命令做到了:

 chmod +x ~/.xinitrc

也没用。每次我重新登录或重新启动时,我的眼睛都是同样烦人的黑屏和顶部栏,根本没有显示日期。

我还尝试在每个文件中用 /home/root113/file 替换 ~/file 以防无法识别路径。这根本不是解决方案。没用。

我一直在寻找答案并阅读这些有用的答案和文章:

其中

None指的是我直接但间接的一种problem/issue。所以我决定(可能是一个愚蠢的想法,但值得一试,因为我开始 运行 没有解决方案)将以下内容添加到我的 ~/.profile 文件中:

export PATH="${PATH}:/home/root113/.xinitrc"

也没有用,然后我将以下内容添加到我的 ~/.zshrc 文件中:

source ~/.profile

再次失败。

我在网上四处寻找解决方案。我现在确实处于绝望的境地。我没有希望了,只能在这里问。感谢您阅读此处。我知道这是一个很长的问题,但我想向您详细解释这个问题,也想告诉您到目前为止我尝试过哪些解决方案。

我发现在 ~/.xinitrc 文件中我必须在所有其他内容之前声明我的个人设置。只需将它们放在文件顶部即可:

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager 
from here)

#Personal customizations below

compton --config ~/.config/compton/compton.conf &
feh -bg-fill /home/root113/Pictures/0239.jpg &
xcompmgr &

while true; do
    xsetroot -name "$(date)"
    sleep 1s
done &

exec dwm

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

DEFAULT_SESSION=gnome-session

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then
    xrdb -merge "$userresources"
fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
    for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
        [ -x "$f" ] && . "$f"
    done
    unset f
fi

get_session(){
    local dbus_args=(--sh-syntax --exit-with-session)
    case  in
        awesome) dbus_args+=(awesome) ;;
        bspwm) dbus_args+=(bspwm-session) ;;
        budgie) dbus_args+=(budgie-desktop) ;;
        cinnamon) dbus_args+=(cinnamon-session) ;;
        deepin) dbus_args+=(startdde) ;;
        enlightenment) dbus_args+=(enlightenment_start) ;;
        fluxbox) dbus_args+=(startfluxbox) ;;
        gnome) dbus_args+=(gnome-session) ;;
        i3|i3wm) dbus_args+=(i3 --shmlog-size 0) ;;
        jwm) dbus_args+=(jwm) ;;
        kde) dbus_args+=(startkde) ;;
        lxde) dbus_args+=(startlxde) ;;
        lxqt) dbus_args+=(lxqt-session) ;;
        mate) dbus_args+=(mate-session) ;;
        xfce) dbus_args+=(xfce4-session) ;;
        openbox) dbus_args+=(openbox-session) ;;
        *) dbus_args+=($DEFAULT_SESSION) ;;
    esac

    echo "dbus-launch ${dbus_args[*]}"
}

exec $(get_session)

现在一切正常。