[Bin] Fish to bash autostart, fix some bash issues
Autostart is now written in Bash. Autostart now loads a module to automatically switch devices for PipeWire/PulseAudio when a new one is connected. Fix some issues with using "$@" instead of "$*" See Shellcheck’s SC2148
This commit is contained in:
parent
e1077bad9a
commit
c0f6bbc5a7
@ -17,7 +17,7 @@ from this file to the actual executables.
|
|||||||
|
|
||||||
* Autostart
|
* Autostart
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:HEADER-ARGS: :shebang "#!/usr/bin/env fish" :mkdirp yes :tangle ~/.local/bin/autostart
|
:HEADER-ARGS: :shebang "#!/usr/bin/env bash" :mkdirp yes :tangle ~/.local/bin/autostart
|
||||||
:CUSTOM_ID: Autostart-a99e99e7
|
:CUSTOM_ID: Autostart-a99e99e7
|
||||||
:END:
|
:END:
|
||||||
Because I sometimes switch from window manager to window manager, creating a
|
Because I sometimes switch from window manager to window manager, creating a
|
||||||
@ -28,64 +28,98 @@ of said command running.
|
|||||||
|
|
||||||
~set-screens~ is a custom script declared [[*set-screens][below]].
|
~set-screens~ is a custom script declared [[*set-screens][below]].
|
||||||
#+NAME: autostart-table
|
#+NAME: autostart-table
|
||||||
| Command | Arguments | Run once? |
|
| Command | Arguments | Run once? |
|
||||||
|-------------+-------------------------------------+-----------|
|
|-------------+------------------------------------------+-----------|
|
||||||
| ~mpc~ | ~stop~ | no |
|
| ~pactl~ | ~load-module module-switch-on-connect~ | |
|
||||||
| ~picom~ | ~--experimental-backends~ | yes |
|
| ~mpc~ | ~stop~ | no |
|
||||||
| ~set-screens~ | | no |
|
| ~picom~ | ~--experimental-backends~ | yes |
|
||||||
| ~numlockx~ | ~on~ | yes |
|
| ~set-screens~ | | no |
|
||||||
| ~pumopm~ | | yes |
|
| ~numlockx~ | ~on~ | yes |
|
||||||
| ~xfce-polkit~ | | yes |
|
| ~pumopm~ | | yes |
|
||||||
| ~nm-applet~ | | yes |
|
| ~xfce-polkit~ | | yes |
|
||||||
| ~xwallpaper~ | ~--zoom (cat $HOME/.cache/wallpaper)~ | no |
|
| ~nm-applet~ | | yes |
|
||||||
| ~xss-lock~ | ~plock~ | yes |
|
| ~xwallpaper~ | ~--zoom "$(cat "$HOME"/.cache/wallpaper)"~ | no |
|
||||||
| ~xrdb~ | ~-merge $HOME/.Xresources~ | no |
|
| ~xss-lock~ | ~plock~ | yes |
|
||||||
|
| ~xrdb~ | ~-merge "$HOME"/.Xresources~ | no |
|
||||||
|
|
||||||
#+NAME: autostart-gen
|
#+NAME: autostart-gen
|
||||||
|
#+header: :wrap "src bash :exports code"
|
||||||
#+BEGIN_SRC emacs-lisp :var table=autostart-table :cache yes
|
#+BEGIN_SRC emacs-lisp :var table=autostart-table :cache yes
|
||||||
(mapconcat (lambda (start-command)
|
(mapconcat (lambda (start-command)
|
||||||
(let ((command (replace-regexp-in-string (regexp-quote "~") "" (nth 0 start-command)))
|
(let ((command (replace-regexp-in-string (regexp-quote "~") "" (nth 0 start-command)))
|
||||||
(arguments (replace-regexp-in-string (regexp-quote "~") "" (nth 1 start-command)))
|
(arguments (replace-regexp-in-string (regexp-quote "~") "" (nth 1 start-command)))
|
||||||
(oncep (string= "yes" (nth 2 start-command))))
|
(oncep (string= "yes" (nth 2 start-command))))
|
||||||
(if oncep
|
(if oncep
|
||||||
(format "pgrep -x %s 2&>/dev/null || echo (%s) 2&>/dev/null"
|
(format
|
||||||
command
|
(concat "if pgrep -x %s ; then\n"
|
||||||
(replace-regexp-in-string " +" " " (format "%s %s & && disown"
|
" echo \"%s already running\"\n"
|
||||||
command
|
"else\n"
|
||||||
arguments)))
|
" %s &\n"
|
||||||
|
" disown\n"
|
||||||
|
"fi")
|
||||||
|
command
|
||||||
|
command
|
||||||
|
(replace-regexp-in-string " +" " " (format "%s %s"
|
||||||
|
command
|
||||||
|
arguments)))
|
||||||
(format "%s %s &" command arguments))))
|
(format "%s %s &" command arguments))))
|
||||||
table
|
table
|
||||||
"\n")
|
"\n")
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+RESULTS[6246524876f7d46a8649c951a1145302c603bc78]: autostart-gen
|
#+RESULTS[337fc252540623d17d47dc7e0661840db2a4eab5]: autostart-gen
|
||||||
#+begin_example
|
#+begin_src bash :exports code
|
||||||
|
pactl load-module module-switch-on-connect &
|
||||||
mpc stop &
|
mpc stop &
|
||||||
pgrep -x picom 2&>/dev/null || echo (picom --experimental-backends & && disown) 2&>/dev/null
|
if pgrep -x picom ; then
|
||||||
|
echo "picom already running"
|
||||||
|
else
|
||||||
|
picom --experimental-backends &
|
||||||
|
disown
|
||||||
|
fi
|
||||||
set-screens &
|
set-screens &
|
||||||
pgrep -x numlockx 2&>/dev/null || echo (numlockx on & && disown) 2&>/dev/null
|
if pgrep -x numlockx ; then
|
||||||
pgrep -x pumopm 2&>/dev/null || echo (pumopm & && disown) 2&>/dev/null
|
echo "numlockx already running"
|
||||||
pgrep -x xfce-polkit 2&>/dev/null || echo (xfce-polkit & && disown) 2&>/dev/null
|
else
|
||||||
pgrep -x nm-applet 2&>/dev/null || echo (nm-applet & && disown) 2&>/dev/null
|
numlockx on &
|
||||||
xwallpaper --zoom (cat $HOME/.cache/wallpaper) &
|
disown
|
||||||
pgrep -x xss-lock 2&>/dev/null || echo (xss-lock plock & && disown) 2&>/dev/null
|
fi
|
||||||
xrdb -merge $HOME/.Xresources &
|
if pgrep -x pumopm ; then
|
||||||
#+end_example
|
echo "pumopm already running"
|
||||||
|
else
|
||||||
|
pumopm &
|
||||||
|
disown
|
||||||
|
fi
|
||||||
|
if pgrep -x xfce-polkit ; then
|
||||||
|
echo "xfce-polkit already running"
|
||||||
|
else
|
||||||
|
xfce-polkit &
|
||||||
|
disown
|
||||||
|
fi
|
||||||
|
if pgrep -x nm-applet ; then
|
||||||
|
echo "nm-applet already running"
|
||||||
|
else
|
||||||
|
nm-applet &
|
||||||
|
disown
|
||||||
|
fi
|
||||||
|
xwallpaper --zoom "$(cat "$HOME"/.cache/wallpaper)" &
|
||||||
|
if pgrep -x xss-lock ; then
|
||||||
|
echo "xss-lock already running"
|
||||||
|
else
|
||||||
|
xss-lock plock &
|
||||||
|
disown
|
||||||
|
fi
|
||||||
|
xrdb -merge "$HOME"/.Xresources &
|
||||||
|
#+end_src
|
||||||
|
|
||||||
I also have an external sound card, a Scarlet 2i2 G3, that I would like to use
|
I also have an external sound card, a Scarlet 2i2 G3, that I would like to use
|
||||||
as my default audio output. However, it might not be always connected, hence the
|
as my default audio output. However, it might not be always connected, hence the
|
||||||
following code:
|
following code:
|
||||||
#+NAME: default-soundcard
|
# #+NAME: default-soundcard
|
||||||
#+BEGIN_SRC fish :tangle no
|
# #+BEGIN_SRC fish
|
||||||
set SOUNDCARD "alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8KJ6NH094EF1C-00.analog-stereo"
|
# # set SOUNDCARD "alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8KJ6NH094EF1C-00.analog-stereo"
|
||||||
pactl list short sinks | grep $SOUNDCARD 2&> /dev/null && pactl set-default-sink $SOUNDCARD
|
# # pactl list short sinks | grep $SOUNDCARD 2&> /dev/null && pactl set-default-sink $SOUNDCARD
|
||||||
#+END_SRC
|
# #+END_SRC
|
||||||
|
|
||||||
#+BEGIN_SRC fish :noweb yes
|
|
||||||
set -l PATH $PATH /usr/lib/xfce-polkit
|
|
||||||
<<autostart-gen()>>
|
|
||||||
<<default-soundcard>>
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Screen utilities
|
* Screen utilities
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@ -625,7 +659,7 @@ adjust_device
|
|||||||
:HEADER-ARGS: :shebang "#!/bin/bash" :mkdirp yes :tangle ~/.local/bin/dired
|
:HEADER-ARGS: :shebang "#!/bin/bash" :mkdirp yes :tangle ~/.local/bin/dired
|
||||||
:END:
|
:END:
|
||||||
#+BEGIN_SRC bash
|
#+BEGIN_SRC bash
|
||||||
emacsclient -c -a emacs -e "(dired \"$@\")"
|
emacsclient -c -a emacs -e "(dired \"$*\")"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Emacsmail
|
** Emacsmail
|
||||||
@ -636,7 +670,7 @@ emacsclient -c -a emacs -e "(dired \"$@\")"
|
|||||||
This short script is used in my =~/.local/share/applications/mu4e.desktop= file
|
This short script is used in my =~/.local/share/applications/mu4e.desktop= file
|
||||||
in order to send to Emacs any ~mailto:~ requests made in my system.
|
in order to send to Emacs any ~mailto:~ requests made in my system.
|
||||||
#+BEGIN_SRC bash
|
#+BEGIN_SRC bash
|
||||||
emacsclient -c -n -a emacs -e "(browse-url-mail \"$@\")"
|
emacsclient -c -n -a emacs -e "(browse-url-mail \"$*\")"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Media
|
* Media
|
||||||
|
Loading…
Reference in New Issue
Block a user