]> git.donarmstrong.com Git - x_base.git/blob - .xsession
use pactl info instead of pacmd list-sinks for compatibility with pipewire
[x_base.git] / .xsession
1 #!/bin/sh
2
3 cmd_exists () {
4     if which "$1" >/dev/null 2>&1; then
5         return 0;
6     else
7         return 1;
8     fi;
9 }
10
11 fork () {
12     ( "$@" >/dev/null 2>&1 & )
13 }
14
15 echo "Starting new session"
16
17 DATE=$(date "+%Y%m%d_%H%M%S")
18 # track xsession errors
19 mv ~/.xsession-errors ~/.xsession-errors_${DATE};
20 ln -sf ~/.xsession-errors_${DATE} ~/.xsession-errors-current;
21 # delete old xsession error files
22 find ~/ -maxdepth 1 -mindepth 1 -type f \
23     -iname '.xsession-errors_*' -ctime +30 -delete;
24
25 if locale -a |grep -qi en_US.utf8; then
26     LANG="en_US.UTF-8"
27 else
28     LANG=C
29 fi;
30 export LANG
31
32 HOSTNAME=$(hostname)
33
34 if [ -d ~/tmp ]; then
35    export TMPDIR=$(echo ~/tmp)
36 fi;
37
38 # No clue why this has changed from Alt_R to Down, but we really want Down.
39 if ! xmodmap -pk|grep -qe '116.*Down'; then
40     xmodmap -e 'keycode 116 = Super_L'
41     xmodmap -e 'keycode 115 = Multi_key'
42 fi;
43 xmodmap -e 'clear mod4'
44 xmodmap -e 'add mod4 = Super_L Super_R'
45
46 if [ -e ~/.Xresources_$HOSTNAME ]; then
47     xrdb -merge < ~/.Xresources_$HOSTNAME;
48 fi;
49
50 if [ -e ~/.xsession_$HOSTNAME ]; then
51     . ~/.xsession_$HOSTNAME
52 fi;
53
54 # make a backup of the .Xauthority
55 if [ -e ~/.Xauthority ]; then
56     cp -f .Xauthority .Xauthority.bak
57 fi
58
59 if [ -e ~/bin/screensaver ]; then
60     ~/bin/screensaver on;
61 elif cmd_exists i3lock && cmd_exists xss-lock; then
62     fork xss-lock -l -- ~/bin/locker
63 elif cmd_exists slock && cmd_exists xautolock; then
64     fork xautolock -notifier true -bell 0 -locker slock;
65     if cmd_exists xss-lock; then
66         fork xss-lock -- xautolock -locknow;
67     fi;
68 elif cmd_exists xscreensaver && [ -e ~/.xscreensaver ]; then
69     fork XENVIRONMENT=~/.xscreensaver /usr/bin/xscreensaver;
70 elif cmd_exists xautolock; then
71     fork xautolock -notifier true -bell 0;
72     if cmd_exists xss-lock; then
73         fork xss-lock -- xautolock -locknow;
74     fi;
75 fi;
76
77 if cmd_exists redshift; then
78     fork redshift;
79 fi;
80
81 if cmd_exists mpd && [ -e ~/.mpdconf ]; then
82     fork mpd;
83     MPD_HOST=$(awk '/^bind_to_address/{print $2}' ~/.mpdconf|sed "s|~|$HOME|; s/^\"//; s/\"$//; ");
84     export MPD_HOST;
85 elif cmd_exists mopidy && [ -e ~/.config/mopidy/mopidy.conf ]; then
86     fork mopidy;
87 fi;
88
89 if [ -x /sbin/iw ] && cmd_exists nm-applet && /sbin/iw list|grep -q '^Wiphy'; then
90     fork nm-applet;
91 fi;
92
93 if cmd_exists i3; then
94     if [ -x ~/.config/i3/build_config.sh ]; then
95         ~/.config/i3/build_config.sh;
96     fi;
97     exec /usr/bin/i3;
98 else
99     for prog in awesome ion3 openbox stterm st rxvt rxvt-unicode xterm; do
100         if cmd_exists $prog; then
101             exec $(which $prog)
102         fi
103     done;
104 fi;