distro specific fixes
[distro-setup] / i3-sway / gen
index 5653547d132decfc46d9414785af64f24104e892..fba0a674616d7ae4e0e21143f181bab0ae03982a 100755 (executable)
@@ -1,4 +1,25 @@
 #!/bin/bash
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+#     http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
@@ -11,3 +32,57 @@ cat common.conf sway.conf > $dir/config
 dir=/a/bin/distro-setup/subdir_files/.config/i3
 mkdir -p $dir
 cat common.conf i3.conf > $dir/config
+
+monitor_count=$(xrandr|grep -c ' connected')
+if [[ $1 == bar ]] || (( monitor_count >= 2 )); then
+  cat bar.conf >> $dir/config
+fi
+
+move_arg=right
+if xrandr --listmonitors | awk '$2 == "BIG-RIGHT"' |grep . >/dev/null; then
+  cat >>$dir/config <<'EOF'
+# by default, new workspaces are created on whatever screen doesn't have
+# one active or else the current one. That is annoying, I have one
+# primary monitor, I don't want a new workspace created on secondary
+# monitor just because I happen be focused on it. This fixes that.
+workspace 1 output primary
+workspace 2 output BIG-LEFT
+workspace 3 output BIG-RIGHT
+workspace 4 output BIG-RIGHT
+workspace 5 output BIG-RIGHT
+workspace 6 output BIG-RIGHT
+workspace 7 output BIG-RIGHT
+workspace 8 output BIG-RIGHT
+workspace 9 output BIG-RIGHT
+workspace 10 output BIG-RIGHT
+EOF
+  move_arg="BIG-RIGHT primary"
+else
+  mon2=$(xrandr | awk '$2 == "connected" && $3 != "primary" {print $1}')
+  if [[ $mon2 ]]; then
+    cat >>$dir/config <<EOF
+# by default, new workspaces are created on whatever screen doesn't have
+# one active or else the current one. That is annoying, I have one
+# primary monitor, I don't want a new workspace created on secondary
+# monitor just because I happen be focused on it. This fixes that.
+workspace 1 output primary
+workspace 2 output $mon2
+workspace 3 output $mon2
+workspace 4 output primary
+workspace 5 output $mon2
+workspace 6 output $mon2
+workspace 7 output $mon2
+workspace 8 output $mon2
+workspace 9 output $mon2
+workspace 10 output $mon2
+EOF
+  fi
+fi
+
+ # shellcheck disable=SC2016
+echo 'bindsym $mod+Shift+t move workspace to output '$move_arg >>$dir/config
+
+if [[ $I3SOCK ]]; then
+  echo $0: i3-msg reload
+  i3-msg reload
+fi