diff options
Diffstat (limited to 'scroll')
| -rw-r--r-- | scroll/config | 3 | ||||
| -rw-r--r-- | scroll/scripts/maximize.lua | 42 | 
2 files changed, 45 insertions, 0 deletions
| diff --git a/scroll/config b/scroll/config index c695d28..6655223 100644 --- a/scroll/config +++ b/scroll/config @@ -244,6 +244,9 @@ animations {      bindsym $mod+Shift+f fullscreen_application toggle      bindsym $mod+Ctrl+Alt+f fullscreen_application reset +    # Maximize, not fullscreen +    bindsym $mod+m lua $scripts/maximize.lua toggle +      # Toggle the current focus between tiling and floating mode      bindsym $mod+y focus mode_toggle      # Toggle layout type (h<->v) diff --git a/scroll/scripts/maximize.lua b/scroll/scripts/maximize.lua new file mode 100644 index 0000000..f0df156 --- /dev/null +++ b/scroll/scripts/maximize.lua @@ -0,0 +1,42 @@ +local args, state = ... + +-- Set up views table +local views = scroll.state_get_value(state, "views") +if views == nil then +  scroll.state_set_value(state, "views", {}) +  views = scroll.state_get_value(state, "views") +end + +local function find_view(view) +  for _, v in ipairs(views) do +    if v["object"] == view then +      return v +    end +  end +  return nil +end + +if args[1] == 'toggle' then +  local focused_view = scroll.focused_view() +  local view = find_view(focused_view) +  if view == nil then +    view = { +      object = focused_view, +      maximized = false, +      wf = 0, +      hf = 0 +    } +    table.insert(views, view) +  end +  view["maximized"] = not view["maximized"] +  if view["maximized"] then +    local container = scroll.view_get_container(focused_view) +    view["wf"] = scroll.container_get_width_fraction(container) +    view["hf"] = scroll.container_get_height_fraction(container) +    scroll.command(nil, "set_size h 1.0") +    scroll.command(nil, "set_size v 1.0") +  else +    scroll.command(nil, "set_size h " .. view["wf"]) +    scroll.command(nil, "set_size v " .. view["hf"]) +  end +end | 
