【问题标题】:I3wm config randomly runs (or not) scriptsI3wm 配置随机运行(或不运行)脚本
【发布时间】:2021-02-08 11:13:22
【问题描述】:

在我的 i3 配置文件中,我有许多脚本要在 i3 启动时运行,包括一个用于选择壁纸的脚本和另一个用于运行 polybar 的脚本。这两个脚本都完美运行了一年多,但突然开始出现奇怪的行为:有时它们都不运行,有时只运行一个,有时只运行一半脚本 (wtf)。

我所说的只运行一半脚本的意思是,例如,polybar 可能会杀死 polybar 的所有实例(第一行)但不会运行我的 bar(第二行),或者 wal 脚本可能会按预期更改颜色,但不设置壁纸。

配置中的所有其他脚本都运行良好,除了这两个。在终端中单独运行它们总是有效的。

这是 .config/i3/config 的一部分:

exec_always --no-startup-id /usr/bin/change-wallpaper
exec_always --no-startup-id $HOME/.config/polybar/launch.sh

这是更换壁纸(我使用 pywal):

#!/bin/sh
files=(/home/marlon/Pictures/Wallpapers/*)
wal -i "${files[RANDOM % ${#files[@]}]}"

这是启动 polybar 的脚本:

#!/usr/bin/env bash
killall -q polybar
polybar bar1 >>/tmp/polybar1.log 2>&1 &

如果我从配置中删除更改壁纸,polybar 始终运行良好。

我已经尝试过使用完整路径,更改顺序,只使用一个脚本来完成这两件事,但到目前为止没有任何效果。

【问题讨论】:

    标签: i3


    【解决方案1】:

    如您所说,如果脚本只运行了一半。最有可能的是,表面上没有运行的部分,它们确实运行了,但由于某种原因失败了,您看不到这些命令通常具有的效果。

    程序通常会在这些情况下编写某种错误消息。所以这主要是一个调试问题。 对于 polybar,您已经将输出重定向到位于 /tmp/polybar1.log 的日志文件。该文件很可能包含有关栏无法启动的原因的信息。

    我建议你对你的 pywal 脚本做同样的事情,看看为什么它无法设置壁纸。

    【讨论】:

    • polybar启动失败时,日志中只有一行:polybar|notice: Parsing config file: /home/marlon/.config/polybar/.config
    • 嗯,通常情况下,polybar 会打印至少一条其他消息。唯一不会发生这种情况的方法是,如果它以某种方式在两者之间退出。如果发生类似 segault 之类的事情,您的脚本不会捕获生成的消息。尝试使用{ polybar bar1; } >>/tmp/polybar1.log 2>&1 &
    • 这是它记录的另一行 /home/marlon/.config/polybar/launch.sh: line 10: 13240 User defined signal 1 polybar bar1
    • 在 polybar 安装信号处理程序之前,您的机器上似乎有东西正在向 polybar 进程发送 SIGUSR1 信号,从而杀死它。
    • 您可以从 polybar 启动脚本调用 pywal 或从更改壁纸脚本启动 polybar。
    猜你喜欢
    • 2021-03-16
    • 2010-10-28
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 2022-10-17
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多