From 21d5f4ed4fc48479f6f27d60924dc12e88a50348 Mon Sep 17 00:00:00 2001 From: tavo Date: Sat, 27 Sep 2025 17:23:49 -0600 Subject: [PATCH] better xinit --- .gitignore | 4 +- X11/xinit/xinitrc | 65 +++++++++++-------- .../xinitrc.d/{example.sh => 00-example.sh} | 6 +- X11/xinit/xinitrc.d/01-dbus.sh | 5 ++ X11/xinit/xinitrc.d/02-policy-kit.sh | 7 ++ X11/xinit/xinitrc.d/50-repeat-rate.sh | 3 + X11/xinit/xinitrc.d/51-clipboard.sh | 7 ++ X11/xinit/xinitrc.d/99-grace-time.sh | 5 ++ X11/xinit/xinitrc.d/default.sh | 16 ----- 9 files changed, 67 insertions(+), 51 deletions(-) rename X11/xinit/xinitrc.d/{example.sh => 00-example.sh} (77%) create mode 100755 X11/xinit/xinitrc.d/01-dbus.sh create mode 100755 X11/xinit/xinitrc.d/02-policy-kit.sh create mode 100755 X11/xinit/xinitrc.d/50-repeat-rate.sh create mode 100755 X11/xinit/xinitrc.d/51-clipboard.sh create mode 100755 X11/xinit/xinitrc.d/99-grace-time.sh delete mode 100755 X11/xinit/xinitrc.d/default.sh diff --git a/.gitignore b/.gitignore index 594eb9f..35c6bde 100644 --- a/.gitignore +++ b/.gitignore @@ -276,9 +276,7 @@ nvim/lua/plugins/example.lua cvim/ !cvim/vimrc tailscale/ -X11/xinit/xinitrc.d/ -!X11/xinit/xinitrc.d/default.sh -!X11/xinit/xinitrc.d/example.sh +X11/xinit/xinitrc.d/*local.sh *.bak lazydocker/ sunshine/ diff --git a/X11/xinit/xinitrc b/X11/xinit/xinitrc index 4fca507..585fc50 100644 --- a/X11/xinit/xinitrc +++ b/X11/xinit/xinitrc @@ -8,42 +8,51 @@ # . /etc/X11/Xsession # fi -userresources=$XDG_CONFIG_HOME/X11/Xresources -ERRFILE=$XDG_CACHE_HOME/X11/xsession-errors -usermodmap=$XDG_CONFIG_HOME/X11/Xmodmap -sysresources=/etc/X11/xinit/.Xresources -sysmodmap=/etc/X11/xinit/.Xmodmap +OPTIONFILE=/etc/X11/Xsession.options -if [ -f $sysresources ] ; then - xrdb -merge $sysresources +SYSRESOURCES=/etc/X11/Xresources +USRRESOURCES="$XDG_CONFIG_HOME"/X11/Xresources + +SYSSESSIONDIR=/etc/X11/Xsession.d +USERXSESSION="$XDG_DATA_HOME"/xsession +USERXSESSIONRC="$XDG_CONFIG_HOME"/xsessionrc +ALTUSERXSESSION="$XDG_DATA_HOME"/Xsession +ERRFILE="$XDG_CACHE_HOME"/X11/xsession-errors + +if ! [ -d "${ERRFILE%/*}" ] || ! touch "$ERRFILE"; then + if mkdir -p "${ERRFILE%/*}"; then + if ! touch "$ERRFILE"; then + return 1 + fi + else + return 1 + fi fi -if [ -f $sysmodmap ] ; then - xmodmap $sysmodmap -fi +exec >>"$ERRFILE" 2>&1 -if [ -f "$userresources" ] ; then - xrdb -merge "$userresources" -fi +for res in "$SYSRESOURCES" "$USRRESOURCES"; do + if [ -f "$res" ]; then + xrdb -merge "$res" + fi +done +unset res -if [ -f "$usermodmap" ] ; then - xmodmap "$usermodmap" -fi +sys_xinit_d="/etc/X11/xinit/xinitrc.d" +usr_xinit_d="$XDG_CONFIG_HOME/X11/xinit/xinitrc.d" -if [ -d /etc/X11/xinit/xinitrc.d ] ; then - for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do - [ -x "$f" ] && . "$f" +for dir in "$sys_xinit_d" "$usr_xinit_d"; do + if [ -d "$dir" ]; then + for f in "$dir"/?*.sh; do + if [ -x "$f" ]; then + . "$f" + fi done unset f -fi - -if [ -d ~/.config/X11/xinit/xinitrc.d ] ; then - for f in ~/.config/X11/xinit/xinitrc.d/?*.sh ; do - [ -x "$f" ] && . "$f" - done - unset f -fi + fi +done +unset dir while true; do - i3 >/dev/null 2>&1 + i3 >/dev/null 2>&1 done diff --git a/X11/xinit/xinitrc.d/example.sh b/X11/xinit/xinitrc.d/00-example.sh similarity index 77% rename from X11/xinit/xinitrc.d/example.sh rename to X11/xinit/xinitrc.d/00-example.sh index 38c402c..d43ff29 100755 --- a/X11/xinit/xinitrc.d/example.sh +++ b/X11/xinit/xinitrc.d/00-example.sh @@ -3,11 +3,10 @@ # Example initialization script. # # In order to run commands on start, create scripts such -# as this one in the .config/X11/init.d directory and make +# as this one in the .config/X11/xinit/xinitrc.d directory and make # them executable. -# Keyboard configuration -#xset r rate 300 70 +# English keymap #setxkbmap en # Monitors @@ -20,5 +19,4 @@ # Startup programs #STATUS_BLOCKS="tray vol mic net bat kbd time date" dwmstatus & # Status bar #emacs --daemon & -#clipse -listen & #dunst diff --git a/X11/xinit/xinitrc.d/01-dbus.sh b/X11/xinit/xinitrc.d/01-dbus.sh new file mode 100755 index 0000000..543534c --- /dev/null +++ b/X11/xinit/xinitrc.d/01-dbus.sh @@ -0,0 +1,5 @@ +#!/bin/sh +# updates the list of environment variables used by dbus + +dbus-update-activation-environment --systemd --all +systemctl --user import-environment DISPLAY diff --git a/X11/xinit/xinitrc.d/02-policy-kit.sh b/X11/xinit/xinitrc.d/02-policy-kit.sh new file mode 100755 index 0000000..291e92c --- /dev/null +++ b/X11/xinit/xinitrc.d/02-policy-kit.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if command -v lxpolkit >/dev/null; then + lxpolkit & +else + echo "error: lxpolkit not found" +fi diff --git a/X11/xinit/xinitrc.d/50-repeat-rate.sh b/X11/xinit/xinitrc.d/50-repeat-rate.sh new file mode 100755 index 0000000..68c88df --- /dev/null +++ b/X11/xinit/xinitrc.d/50-repeat-rate.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +xset r rate 300 70 diff --git a/X11/xinit/xinitrc.d/51-clipboard.sh b/X11/xinit/xinitrc.d/51-clipboard.sh new file mode 100755 index 0000000..171175b --- /dev/null +++ b/X11/xinit/xinitrc.d/51-clipboard.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if command -v clipse >/dev/null; then + clipse -listen-shell & +else + echo "error: clipse not found" +fi diff --git a/X11/xinit/xinitrc.d/99-grace-time.sh b/X11/xinit/xinitrc.d/99-grace-time.sh new file mode 100755 index 0000000..6436b6d --- /dev/null +++ b/X11/xinit/xinitrc.d/99-grace-time.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +# A bit of grace time to press Ctrl+C if needed +# after startx +sleep 0.2 diff --git a/X11/xinit/xinitrc.d/default.sh b/X11/xinit/xinitrc.d/default.sh deleted file mode 100755 index 14e6e17..0000000 --- a/X11/xinit/xinitrc.d/default.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# Default initialization script -# -# These commands are required at startup, -# If removed, you might run into errors. - -# Environment for dbus and xdg-desktop-portal -dbus-update-activation-environment --systemd --all -systemctl --user import-environment DISPLAY - -# Policy kit -lxpolkit & - -# A bit of grace time to press Ctrl+C if needed -sleep 0.2