X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=i3-split-maybe;h=0a98c90b3927ed8a499b56f05441b3959bd4fc54;hb=refs%2Fheads%2Fmaster;hp=d8bd54c67745bfb06b073d6e8165b8395d7a68ec;hpb=dab96f8fa4c701db13ba734fa0c07b5d12fc8fae;p=distro-setup diff --git a/i3-split-maybe b/i3-split-maybe index d8bd54c..0e05259 100755 --- a/i3-split-maybe +++ b/i3-split-maybe @@ -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