*: update for arch

This commit is contained in:
Pavel Korytov 2025-11-13 13:34:18 +03:00
parent 9ffcbde6d2
commit 97be992565
18 changed files with 229 additions and 303 deletions

View file

@ -1,14 +1,14 @@
decorations = "none"
# decorations = "none"
[colors.bright]
Black = "#484848"
Blue = "#cbcfff"
Cyan = "#88c8ff"
Green = "#8adf80"
Magenta = "#df8fff"
Red = "#ff8f88"
White = "#ffffff"
Yellow = "#fac200"
black = "#484848"
blue = "#cbcfff"
cyan = "#88c8ff"
green = "#8adf80"
magenta = "#df8fff"
red = "#ff8f88"
white = "#ffffff"
yellow = "#fac200"
[colors.normal]
black = "#222222"

View file

@ -3,7 +3,7 @@ enabled_backends = ["arch"]
hostname_groups_enabled = true
[hostname_groups]
kek = ["browsers"]
weiss = ["system","office","music","mail","latex","emacs","dev","desktop-rofi","desktop-polybar","desktop-misc","desktop","console","browsers"]
archlinux = ["system","office","music","mail","latex","emacs","dev","desktop-rofi","desktop-polybar","desktop-misc","desktop","console","browsers"]

View file

@ -1,4 +1,5 @@
arch = [
"vnstat",
"activitywatch-bin",
"xdg-desktop-portal",
"flatpak",
@ -14,5 +15,4 @@ arch = [
"gnome-themes-extra",
"xsettingsd",
"papirus-icon-theme",
"gtk-engines",
"gtk-engine-murrine",]
"gtk-engines",]

View file

@ -3,8 +3,10 @@ arch = [
"the_silver_searcher",
"ripgrep",
"hledger",
"rclone",
"gnu-free-fonts",
"ttf-unifont",
"telegram-tdlib",
"yt-dlp",
"mpv",
"python-youtube-transcript-api",

View file

@ -23,6 +23,7 @@ arch = [
"pacman-contrib",
"openssh",
"metapac",
"networkmanager",
"nano",
"inetutils",
"linux-firmware",

View file

@ -0,0 +1,8 @@
[Unit]
Description=ActivityWatch
[Service]
ExecStart=/usr/bin/aw-qt
[Install]
WantedBy=wm-session.target

View file

@ -0,0 +1,9 @@
[Unit]
Description=DETERRED MPD Watcher
ConditionPathExists=/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py
[Service]
ExecStart=/usr/bin/python "/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py" "--db" "/home/pavel/.deterred/database.db"
[Install]
WantedBy=wm-session.target

View file

@ -0,0 +1,8 @@
[Unit]
Description=Music Player Daemon
[Service]
ExecStart=/usr/bin/mpd --no-daemon
[Install]
WantedBy=graphical-session.target

View file

@ -0,0 +1,8 @@
[Unit]
Description=Network Manager Applet
[Service]
ExecStart=/usr/bin/nm-applet
[Install]
WantedBy=wm-session.target

View file

@ -0,0 +1,8 @@
[Unit]
Description=vnStat network monitor
[Service]
ExecStart=/usr/bin/vnstatd
[Install]
WantedBy=wm-session.target

View file

@ -0,0 +1,8 @@
[Unit]
Description=X Settings Daemon
[Service]
ExecStart=/usr/bin/xsettingsd
[Install]
WantedBy=wm-session.target

View file

@ -10,6 +10,9 @@
(executable-find "shepherd"))
(call-process "shepherd")))
(defun my/exwm-run-systemd ()
(call-process "systemctl" nil nil nil "--user" "start" "wm-session.target"))
(use-package pinentry
:straight t
:after (exwm)
@ -592,6 +595,7 @@ _d_: Discord
(my/exwm-run-polybar)
(my/exwm-set-wallpaper)
(my/exwm-run-shepherd)
(my/exwm-run-systemd)
(my/run-in-background "gpgconf --reload gpg-agent")
(when (my/is-arch)
(my/run-in-background "set_layout")))

View file

@ -116,7 +116,8 @@
(string-match-p "/gnu/store" default-directory))
(nerd-icons-dired-mode))))
:config
(advice-add #'dired-create-empty-file :around #'nerd-icons-dired--refresh-advice))
;; (advice-add #'dired-create-empty-file :around #'nerd-icons-dired--refresh-advice)
)
(use-package dired-open
:straight t

View file

@ -21,7 +21,7 @@ xss-lock -- i3lock -f -i /home/pavel/Pictures/lock-wallpaper.png &
# Some apps that have to be launched only once.
picom &
# nm-applet &
dunst &
# dunst &
copyq &
# Run the Emacs startup script as a session.

View file

@ -1,5 +1,5 @@
#+PROPERTY: header-args :mkdirp yes
#+TITLE: Arch Linux
#+PROPERTY: header-args :mkdirp yes
I've decided to switch to [[https://archlinux.org/][Arch Linux]] and configure it declaratively with [[https://github.com/ripytide/metapac][metapac]].
@ -70,13 +70,23 @@ yadm clone git@github.com:SqrtMinusOne/dotfiles.git
#+end_src
Checkout the changed files.
Clone the org-mode repo:
Clone org-mode and passwords repos:
#+begin_src bash
git clone git@github.com:SqrtMinusOne/dotfiles.git "/home/pavel/30-39 Life/32 org-mode"
git clone ssh://git@git.sqrtminusone.xyz:222/sqrtminusone/org-mode.git "/home/pavel/30-39 Life/32 org-mode"
git clone ssh://git@git.sqrtminusone.xyz:222/sqrtminusone/passwords.git "/home/pavel/.password-store"
#+end_src
And don't forget to configure git:
#+begin_src bash
git config --global user.email "thexcloud@gmail.com"
git config --global user.name "SqrtMinusOne"
#+end_src
#+begin_src bash
sudo systemctl enable --now NetworkManager
#+end_src
Install wakatime:
#+begin_src bash
cd ~/00-Scratch/
git clone https://github.com/wakatime/wakatime-cli.git
@ -95,8 +105,15 @@ Then run =emacs= and make sure it starts. Run:
- =M-x nerd-icons-install-fonts=
- =M-x all-the-icons-install-fonts=
Run =rclone config=, configure the remotes. Then =M-x my/index-commands-sync=.
If everything works, login into EXWM.
Create some directories:
#+begin_src bash
mkdir -p /home/pavel/Pictures/screenshots/
#+end_src
* Metapac configuration
[[https://github.com/ripytide/metapac][metapac]] is a declarative wrapper around different package managers, including [[https://wiki.archlinux.org/title/Pacman][pacman]] and [[https://github.com/Morganamilo/paru][paru]]. This means the required packages can be listed in configuration files and checked into version control.
@ -106,20 +123,20 @@ In =metapac=, packages are listed in "groups", each group being a TOML file stat
Below is the table enabling different groups on different hostnames:
#+NAME: metapac-groups
| Profile | archlinux | kek |
| browsers | + | + |
| console | + | |
| desktop | + | |
| desktop-misc | + | |
| desktop-polybar | + | |
| desktop-rofi | + | |
| dev | + | |
| emacs | + | |
| latex | + | |
| mail | + | |
| music | + | |
| office | + | |
| system | + | |
| Profile | archlinux | weiss |
| browsers | + | + |
| console | + | + |
| desktop | + | + |
| desktop-misc | + | + |
| desktop-polybar | + | + |
| desktop-rofi | + | + |
| dev | + | + |
| emacs | + | + |
| latex | + | + |
| mail | + | + |
| music | + | + |
| office | + | + |
| system | + | + |
And the code to format it as TOML:
#+NAME: metapac-groups-format
@ -167,6 +184,7 @@ Some necessary Arch packages:
| linux-firmware |
| inetutils |
| nano |
| networkmanager |
| metapac |
| openssh |
| pacman-contrib |
@ -202,5 +220,5 @@ Various drivers, I'm not sure which I actually need, so...
#+end_src
#+begin_src scheme :tangle .config/metapac/groups/system.toml :noweb yes
<<packages()>>
<<packages()>ger>
#+end_src

View file

@ -121,6 +121,7 @@ Also, Xresources are used to set =Xft= settings. Unfortunately, the DPI setting
((string-equal hostname "eminence") 120)
((string-equal hostname "violet") 120)
((string-equal hostname "iris") 120)
((string-equal hostname "weiss") 120)
(t 96)))
#+end_src
@ -130,13 +131,13 @@ Xft.dpi: <<get-dpi()>>
** Themes
A few programs I use to customize the apperance are listed below.
| Arch dependency | Description |
|--------------------+-------------------------|
| gtk-engine-murrine | My preferred GTK theme |
| gtk-engines | |
| papirus-icon-theme | My preferred Icon theme |
| xsettingsd | X11 settings daemon |
| gnome-themes-extra | |
| Arch dependency | Description | Disabled |
|--------------------+-------------------------+----------|
| gtk-engine-murrine | My preferred GTK theme | t |
| gtk-engines | | |
| papirus-icon-theme | My preferred Icon theme | |
| xsettingsd | X11 settings daemon | |
| gnome-themes-extra | | |
[[https://github.com/derat/xsettingsd][xsettingsd]] is a lightweight daemon which configures X11 applications. It is launched with shepherd in the [[*Services][Services]] section.
@ -244,7 +245,7 @@ xss-lock -- i3lock -f -i /home/pavel/Pictures/lock-wallpaper.png &
# Some apps that have to be launched only once.
picom &
# nm-applet &
dunst &
# dunst &
copyq &
# Run the Emacs startup script as a session.
@ -271,6 +272,9 @@ As of now, these are polybar, feh and, shepherd:
(when (and (string-empty-p (shell-command-to-string "pgrep -u pavel shepherd"))
(executable-find "shepherd"))
(call-process "shepherd")))
(defun my/exwm-run-systemd ()
(call-process "systemctl" nil nil nil "--user" "start" "wm-session.target"))
#+end_src
*** Pinentry
The GUI pinentry doesn't work too well with EXWM because of issues with popup windows, so we will use the Emacs one.
@ -1216,6 +1220,7 @@ And the EXWM config itself.
(my/exwm-run-polybar)
(my/exwm-set-wallpaper)
(my/exwm-run-shepherd)
(my/exwm-run-systemd)
(my/run-in-background "gpgconf --reload gpg-agent")
(when (my/is-arch)
(my/run-in-background "set_layout")))
@ -2231,6 +2236,8 @@ elif [ "$hostname" = "eminence" ]; then
fi
elif [ "$hostname" = "iris" ]; then
TRAY_MONITOR="HDMI-1"
elif [ "$hostname" = "weiss" ]; then
TRAY_MONITOR="eDP-1"
else
TRAY_MONITOR="DP-1"
fi
@ -3293,7 +3300,7 @@ References:
### Misc/Advanced ###
dmenu = /usr/bin/dmenu -p dunst:
browser = /home/pavel/.guix-extra-profiles/browsers/browsers/bin/firefox
browser = /user/bin/firefox
always_run_script = true
title = Dunst
class = Dunst
@ -3309,15 +3316,16 @@ References:
mouse_middle_click = do_action
mouse_right_click = close_all
[experimental]
per_monitor_dpi = false
[shortcuts]
### Shortcuts
close = ctrl+space
close_all = ctrl+shift+space
history = ctrl+grave
context = ctrl+shift+period
[experimental]
per_monitor_dpi = false
[urgency_low]
background = <<get-color(name="bg-other", quote=1)>>
frame_color = <<get-color(name="border", quote=1)>>
@ -4373,14 +4381,33 @@ flatpak install -y --user flathub com.github.wwmm.pulseeffects
flatpak install -y --user flathub chat.rocket.RocketChat
#+end_example
* Services
:PROPERTIES:
:header-args+: :tangle ~/.config/shepherd/init.scm
:END:
[[https://www.gnu.org/software/shepherd/manual/html_node/index.html][GNU Shepherd]] is a service management system for GNU Guix. I'll probably migrate to systemd since I'm not on Guix anymore.
See [[https://wiki.archlinux.org/title/Systemd/User][systemd/User]] on Arch Wiki how to create user services.
| Arch dependency | Disabled |
|-----------------+----------|
| shepherd | t |
After editing the services, run:
#+begin_src bash
systemctl --user daemon-reload
#+end_src
It's required to enable them manually for now:
#+begin_src bash
systemctl --user enable --now nm-applet
systemctl --user enable --now aw-qt
systemctl --user enable --now deterred-mpd
systemctl --user enable --now vnstat
systemctl --user enable --now xsettingsd
systemctl --user enable --now flameshot
#+end_src
#+RESULTS:
** Custom target
Creating a custom target because otherwise systemd tries to launch everything before the WM is loaded.
#+begin_src conf :tangle .config/systemd/user/wm-session.target
[Unit]
Description=Window Manager Session
After=graphical-session.target
#+end_src
** Music
| Category | Arch dependency |
@ -4393,51 +4420,29 @@ flatpak install -y --user flathub chat.rocket.RocketChat
| music | cuetools |
| music | flac |
Music player daemon
#+begin_src scheme
(define mpd
(make <service>
#:provides '(mpd)
#:respawn? #t
#:start (make-forkexec-constructor '("mpd" "--no-daemon"))
#:stop (make-kill-destructor)))
#+begin_src conf :tangle .config/systemd/user/mpd.service
[Unit]
Description=Music Player Daemon
[Service]
ExecStart=/usr/bin/mpd --no-daemon
[Install]
WantedBy=graphical-session.target
#+end_src
MPD watcher
#+begin_src scheme
(define sqrt-data-agent-mpd
(make <service>
#:provides '(sqrt-data-agent-mpd)
#:respawn? #t
#:start (make-forkexec-constructor '("sqrt_data_agent_mpd"))
#:stop (make-kill-destructor)
#:requires '(mpd)))
#+begin_src conf :tangle .config/systemd/user/deterred-mpd.service
[Unit]
Description=DETERRED MPD Watcher
ConditionPathExists=/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py
(define deterred-mpd
(make <service>
#:provides '(deterred-mpd)
#:respawn? #t
#:start (make-forkexec-constructor
'("python" "/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py"
"--db" "/home/pavel/.deterred/database.db"))
#:stop (make-kill-destructor)
#:requires '(mpd)))
[Service]
ExecStart=/usr/bin/python "/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py" "--db" "/home/pavel/.deterred/database.db"
[Install]
WantedBy=wm-session.target
#+end_src
** GNU Mcron
[[https://www.gnu.org/software/mcron/][GNU Mcron]] is a replacement for cron, written in Scheme.
| Arch dependency | Disabled |
|-----------------+----------|
| mcron | t |
#+begin_src scheme
(define mcron
(make <service>
#:provides '(mcron)
#:respawn? #t
#:start (make-forkexec-constructor '("mcron"))
#:stop (make-kill-destructor)))
#+end_src
** ActivityWatch
[[https://activitywatch.net/][ActivityWatch]] is a FOSS time tracker. It tracks screen and application usage and has integrations with browsers, Emacs, etc.
@ -4445,212 +4450,65 @@ MPD watcher
|-------------------|
| activitywatch-bin |
aw-server
#+begin_src scheme
(define aw-server
(make <service>
#:provides '(aw-server)
#:respawn? #t
#:start (make-forkexec-constructor '("aw-server"))
#:stop (make-kill-destructor)))
#+begin_src conf :tangle .config/systemd/user/aw-qt.service
[Unit]
Description=ActivityWatch
[Service]
ExecStart=/usr/bin/aw-qt
[Install]
WantedBy=wm-session.target
#+end_src
=aw-watcher-afk= has some problems with statup, so there is a wrapper script
#+begin_src sh :tangle ~/bin/scripts/aw-watcher-afk-wrapper
sleep 5
aw-watcher-afk
#+end_src
aw-watcher-afk
#+begin_src scheme
(define aw-watcher-afk
(make <service>
#:provides '(aw-watcher-afk)
#:requires '(aw-server)
#:respawn? #t
#:start (make-forkexec-constructor '("/home/pavel/bin/scripts/aw-watcher-afk-wrapper"))
#:stop (make-kill-destructor)))
#+end_src
aw-watcher-window
#+begin_src scheme
(define aw-watcher-window
(make <service>
#:provides '(aw-watcher-window)
#:requires '(aw-server)
#:respawn? #t
#:start (make-forkexec-constructor '("aw-watcher-window"))
#:stop (make-kill-destructor)))
#+end_src
** PulseEffects
#+begin_src scheme
(define pulseeffects
(make <service>
#:provides '(pulseeffects)
#:respawn? #t
#:start (make-forkexec-constructor '("flatpak" "run" "com.github.wwmm.pulseeffects" "--gapplication-service"))
#:stop (make-kill-destructor)))
#+end_src
** xsettingsd
#+begin_src scheme
(define xsettingsd
(make <service>
#:provides '(xsettingsd)
#:respawn? #t
#:start (make-forkexec-constructor '("xsettingsd"))
#:stop (make-kill-destructor)))
#+begin_src conf :tangle .config/systemd/user/xsettingsd.service
[Unit]
Description=X Settings Daemon
[Service]
ExecStart=/usr/bin/xsettingsd
[Install]
WantedBy=wm-session.target
#+end_src
** nm-applet
#+begin_src scheme
(define nm-applet
(make <service>
#:provides '(nm-applet)
#:respawn? #t
#:start (make-forkexec-constructor '("nm-applet"))
#:stop (make-kill-destructor)))
#+end_src
** Discord rich presence
#+begin_src conf :tangle .config/systemd/user/nm-applet.service
[Unit]
Description=Network Manager Applet
References:
- [[https://github.com/flathub/com.discordapp.Discord/wiki/Rich-Precense-(discord-rpc)][Rich Precense (discord rpc)]]
[Service]
ExecStart=/usr/bin/nm-applet
#+begin_src scheme
(define discord-rich-presence
(make <service>
#:provides '(discord-rich-presence)
#:one-shot? #t
#:start (make-system-constructor "ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-0")))
#+end_src
** Polkit Authentication agent
Launch an authentication agent. Necessary for stuff like =pkexec=. I suspect I'm not doing that the intended way, but it seems to work.
#+begin_src scheme
(define polkit-gnome
(make <service>
#:provides '(polkit-gnome)
#:respawn? #t
#:start (make-forkexec-constructor '("/lib/polkit-gnome/polkit-gnome-authentication-agent-1"))
#:stop (make-kill-destructor)))
#+end_src
** Xmodmap
#+begin_src scheme
(define xmodmap
(make <service>
#:provides '(xmodmap)
#:one-shot? #t
#:start (make-system-constructor "xmodmap /home/pavel/.Xmodmap")))
#+end_src
** VPN
Run my [[file:Guix.org::*OpenVPN][OpenVPN setup]]. Not lauching this automatially, as it requires an active connection.
#+begin_src scheme
(define vpn
(make <service>
#:provides '(vpn)
#:respawn? #t
#:start (make-forkexec-constructor '("/home/pavel/bin/scripts/vpn-start"))
#:stop (make-kill-destructor)))
#+end_src
** Davmail
#+begin_src scheme
(define davmail
(make <service>
#:provides '(davmail)
#:respawn? #t
#:start (make-forkexec-constructor '("/home/pavel/bin/davmail"))
#:stop (make-kill-destructor)))
[Install]
WantedBy=wm-session.target
#+end_src
** vnstatd
#+begin_src scheme
(define vnstatd
(make <service>
#:provides '(vnstatd)
#:respawn? #t
#:start (make-forkexec-constructor '("vnstatd" "-n"))
#:stop (make-kill-destructor)))
| Arch dependency |
|-----------------|
| vnstat |
#+begin_src conf :tangle .config/systemd/user/vnstat.service
[Unit]
Description=vnStat network monitor
[Service]
ExecStart=/usr/bin/vnstatd
[Install]
WantedBy=wm-session.target
#+end_src
** opensnitch
[[https://github.com/evilsocket/opensnitch][opensnitch]] is a linux firewall.
** flameshot
#+begin_src conf :tangle .config/systemd/user/flameshot.service
[Unit]
Description=Flameshot
=sudoers= has to be modified this to work.
#+begin_src scheme
(define opensnitchd
(make <service>
#:provides '(opensnitchd)
#:respawn? #t
#:start (make-forkexec-constructor '("sudo" "opensnitchd"))
#:stop (make-kill-destructor)))
[Service]
ExecStart=/usr/bin/flameshot
(define opensnitch-ui
(make <service>
#:provides '(opensnitch-ui)
#:respawn? #t
#:start (make-forkexec-constructor '("sudo" "opensnitch-ui"))
#:stop (make-kill-destructor)))
#+end_src
** ollama
#+begin_src scheme
(define ollama
(make <service>
#:provides '(ollama)
#:respawn? #t
#:start (make-forkexec-constructor '("ollama" "serve"))
#:stop (make-kill-destructor)))
#+end_src
** Shepherd config
For some reason, running start on a one-shot service started to hang shepherd, not sure why... Turining these off for now.
Register services:
#+begin_src scheme
(register-services
mpd
sqrt-data-agent-mpd
deterred-mpd
mcron
aw-server
aw-watcher-afk
aw-watcher-window
pulseeffects
xsettingsd
;; discord-rich-presence
polkit-gnome
vpn
davmail
;; xmodmap
nm-applet
vnstatd
;; opensnitchd
;; opensnitch-ui
ollama)
#+end_src
Daemonize shepherd
#+begin_src scheme
(action 'shepherd 'daemonize)
#+end_src
Run services
#+begin_src scheme
(for-each start '(mpd
sqrt-data-agent-mpd
deterred-mpd
mcron
aw-server
aw-watcher-afk
aw-watcher-window
pulseeffects
xsettingsd
;; discord-rich-presence
;; polkit-gnome
davmail
;; ; xmodmap
;; nm-applet
vnstatd
;; opensnitchd
;; opensnitch-ui
))
[Install]
WantedBy=wm-session.target
#+end_src
* Arch settings
Other desktop programs I use are listed below.

View file

@ -11420,6 +11420,7 @@ Or you can load up Element for a moment to see what the mention was, if that's e
| Arch dependency | Disabled |
|--------------------+----------|
| emacs-telega-sever | t |
| telegram-tdlib | |
| ttf-unifont | |
| gnu-free-fonts | |
@ -11436,10 +11437,8 @@ Or you can load up Element for a moment to see what the mention was, if that's e
:background (my/color-value 'fg))
(telega-entity-type-spoiler :background (my/color-value 'base8)))
:config
(when (file-exists-p "~/.guix-extra-profiles/emacs/emacs/bin/telega-server")
(setq telega-server-command
(expand-file-name
"~/.guix-extra-profiles/emacs/emacs/bin/telega-server")))
(setq telega-server-libs-prefix "/usr")
(setq telega-emoji-use-images nil)
(setq telega-chat-fill-column 80)
(setq telega-completing-read-function #'completing-read)
@ -11463,18 +11462,6 @@ Or you can load up Element for a moment to see what the mention was, if that's e
telega-webpage-mode 3 "telega"))
#+end_src
Building =telega-server= can create problems. On Guix I can use the Guix package definition, on termux just build manually.
#+begin_src emacs-lisp
(defun my/telega-server-build ()
(interactive)
(setq telega-server-libs-prefix
(if (executable-find "guix")
(string-trim
(shell-command-to-string "guix build tdlib"))
(expand-file-name "~/bin/td/build/res/usr/local")))
(telega-server-build "CC=gcc"))
#+end_src
Setting up the modeline. The default mode string doesn't look great with my other modeline modules, so I override that.
#+begin_src emacs-lisp
(add-hook 'telega-load-hook #'telega-mode-line-mode)
@ -12795,6 +12782,10 @@ The return value is a list of commands as defined by
#+RESULTS:
: my/index--mega-commands
**** rclone
| Arch dependency |
|-----------------|
| rclone |
This section wraps the [[https://rclone.org/bisync/][bisync]] command for rclone, which implements two-way sync.
The general approach is:

View file

@ -12,6 +12,8 @@ elif [ "$hostname" = "eminence" ]; then
fi
elif [ "$hostname" = "iris" ]; then
TRAY_MONITOR="HDMI-1"
elif [ "$hostname" = "weiss" ]; then
TRAY_MONITOR="eDP-1"
else
TRAY_MONITOR="DP-1"
fi