distro specific fixes
[distro-setup] / i3-split-maybe
index d8bd54c67745bfb06b073d6e8165b8395d7a68ec..0e052599d2b524619bf8e9a05c1a994cf9971d64 100755 (executable)
@@ -1,8 +1,31 @@
 #!/usr/bin/python3
 
-# This anticipates when we want to tab windows. There are 2 options of
-# when to do it: just after a window is created, or just before a window
-# is created.
+# 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 change
+# to a recommended GPL license.
+
+# 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.
+
+
+# This anticipates when we want to tab windows.
+#
+# There are 2 options of when to do it: just after a window is created,
+# or just before a window is created.
 #
 # * Doing it after a window is created allows you to move a window into
 # the split that only has 1 window, whereas the other way doesn't. For
@@ -23,8 +46,9 @@
 #   the window is closed, and I don't want single window splits hanging around,
 #   so I close them out in
 #
-# I have a keybind which disables both, it runs /b/ds/i3-auto-layout-toggle
-
+# I have a keybind which disables both, super+shift+u, it runs
+# /b/ds/i3-auto-layout-toggle
+#
 
 import sys
 import os
@@ -67,35 +91,42 @@ def set_layout(i3):
     workspace = win.workspace()
     #pprint(vars(workspace.rect))
 
-    screen_width = workspace.rect.width
-    screen_height = workspace.rect.height
-    half_w =  screen_width / 2 + 1
-    half_h = screen_height / 2 + 1
+    screen_w = workspace.rect.width
+    screen_h = workspace.rect.height
+    half_w =  screen_w / 2 + 1
+    half_h = screen_h / 2 + 1
 
     w = win.rect.width
     h = win.rect.height
     ph = parent.rect.height
     pw = parent.rect.width
 
-    # There is potential for future use with < 1920, but I'm
-    # not thinking about it yet.
-    if ( screen_width < 1920 or parent.layout == 'tabbed' or gp.layout == 'tabbed'):
+    if ( parent.layout == 'tabbed' or gp.layout == 'tabbed'):
         return
 
-    # print('d2: len(parent.nodes)', len(parent.nodes),' > 1',
-    #       'and ( ph ',ph,' > h + 10',h + 10,' or pw',pw,' > w',w,' )',
-    #       'and w <= half_w',half_w,'+ and h <= half_h',half_h)
+    # debug
+    print('d2: len(parent.nodes):', len(parent.nodes),' > 1',
+          'and ( ph:',ph,' > h + 10:',h + 10,' or pw:',pw,' > w:',w,' )',
+          'and (screen_w:',screen_w,' < screen_h:',screen_h,' or w <= half_w:',half_w,')',
+          'and h <= half_h:',half_h,')')
 
     # h + 10 because a tabbed window loses high compared to its parent.
     # Note, it is redundant since we check above if the parent is tabbed,
     # but just being cautious.
+    #
+    # condition in english
+    #   the parent container is bigger
+    #   and we are on a vertical screen or our window is <= half the screen width
+    #       and we are <= half the screen height
     if (len(parent.nodes) > 1
         and ( ph > h + 10 or pw > w )
-        and w <= half_w and h <= half_h ):
+        and ( screen_w < screen_h or w <= half_w )
+        and h <= half_h ):
        i3.command('split vertical, layout tabbed')
 #       print('d1: tabbed')
 
 
+
 ### further potential use cases:
 
 # We could automatically do a vertical split when there are 2 or 3