From d89f1eb34bdb8a939b93097fceb6d6c2be70a981 Mon Sep 17 00:00:00 2001 From: Mahesh Asolkar Date: Mon, 31 May 2021 22:23:35 -0700 Subject: [PATCH] Multi monitor support in DWL --- dwl.entourage | 41 +++++++++++++++++++++++++++-------------- dwl.session | 1 + dwltags.pl | 19 ++++++++++++------- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/dwl.entourage b/dwl.entourage index 3c4f8f1..3104efc 100755 --- a/dwl.entourage +++ b/dwl.entourage @@ -2,6 +2,12 @@ echo "Entourage: $XDG_RUNTIME_DIR - $DWL_TAGS_FILE" >> $DWL_LOG_FILE +# Dual screen +wlr-randr --output HDMI-A-1 --on --pos 0,0 --output eDP-1 --on --pos 1680,0 + +# Single laptop screen +# wlr-randr --output HDMI-A-1 --off --output eDP-1 --on --pos 0,0 + # ---------------------------------------------------------- # Let DWL start # ---------------------------------------------------------- @@ -13,21 +19,28 @@ done echo "DWL ready!" >> $DWL_LOG_FILE echo "Entourage: " $DWL_TAGS_FILE >> $DWL_LOG_FILE -# ---------------------------------------------------------- -# Top bar for displaying DWL tags -# ---------------------------------------------------------- -# Dependency - needs inotify-tools package -touch $DWL_TAGS_FILE -inotifywait -q -m -e close_write $DWL_TAGS_FILE | - (cat $DWL_TAGS_FILE ; - while read -r filename event; do - cat $DWL_TAGS_FILE - done) | dtao -z -z -ta l -tw 100 -expand r -h 22 -fn 'Iosevka Term:style=Regular:size=12' & +DISPLAYS=$(wlr-randr | perl -ne 'print "$1 " if /^([\w-]+)/') +DISP_NUM=$(expr 0) +for DISP in $DISPLAYS; do + DISP_NUM=$(expr $DISP_NUM + 1) + TF=${DWL_TAGS_FILE}.${DISP} + # ---------------------------------------------------------- + # Top bar for displaying DWL tags + # ---------------------------------------------------------- + # Dependency - needs inotify-tools package + echo "Entourage: Monitor - ${DISP_NUM} ${DISP}, new tags file " ${TF} >> $DWL_LOG_FILE + touch ${TF} + inotifywait -q -m -e close_write ${TF} | + (cat ${TF} ; + while read -r filename event; do + cat ${TF} + done) | dtao -z -z -xs ${DISP_NUM} -ta l -tw 100 -expand r -h 22 -fn 'Iosevka Term:style=Regular:size=12' & -# ---------------------------------------------------------- -# Bottom bar for displaying context information -# ---------------------------------------------------------- -(conky -c ~/.conkyrc) | dtao -ta r -tw 100 -expand l -h 22 -fn 'Iosevka Term:style=Regular:size=12' & + # ---------------------------------------------------------- + # Bottom bar for displaying context information + # ---------------------------------------------------------- + (conky -c ~/.conkyrc) | dtao -xs ${DISP_NUM} -ta r -tw 100 -expand l -h 22 -fn 'Iosevka Term:style=Regular:size=12' & +done # ---------------------------------------------------------- # Background diff --git a/dwl.session b/dwl.session index cc3fc5d..a0ab200 100755 --- a/dwl.session +++ b/dwl.session @@ -2,6 +2,7 @@ echo $XDG_RUNTIME_DIR used for Wayland session export WLR_LIBINPUT_NO_DEVICES=1 +# export DWLTAGS_SHOW_MON=1 export PATH=~/bin:$PATH echo "Session: in $XDG_RUNTIME_DIR" >> $DWL_LOG_FILE diff --git a/dwltags.pl b/dwltags.pl index 9cd84d6..546aede 100755 --- a/dwltags.pl +++ b/dwltags.pl @@ -10,6 +10,8 @@ use Getopt::Long; my $info = {}; my $tags_file = $ENV{'DWL_TAGS_FILE'}; +my @mons = map { /^([\w-]+)/; $1 } grep { /^([\w-]+)/ } `wlr-randr`; + GetOptions("file=s" => \$tags_file) or die("Command line usage error"); @@ -40,12 +42,15 @@ my $colorscheme = { print_log("DWLTAGS: $tags_file"); -print_tags({ - 'selmon' => '1', - 'tags' => '1 1', - 'title' => '', - 'layout' => '[]=' - }, $tags_file); +for my $mon (@mons) { + print_tags({ + 'selmon' => '1', + 'mon' => $mon, + 'tags' => '1 1', + 'title' => '', + 'layout' => '[]=' + }, $tags_file . "." . $mon); +} while (<>) { my $line = $_; @@ -59,7 +64,7 @@ while (<>) { # Commit a status # Assumption: layout is the last piece of information dumped by DWL $info->{'mon'} = $mon; - print_tags($info, $tags_file); + print_tags($info, $tags_file.".".$mon); $info = {}; }