phenax / bsp-layout

Manage layouts in bspwm (tall and wide)
MIT License
373 stars 30 forks source link

Looking for maintainers #27

Open phenax opened 3 years ago

phenax commented 3 years ago

I started this project was because an optional ability to have dynamic layouts was the only piece I found missing from my bspwm workflow. One day, while browsing reddit, I found a script that was exploring tiling layout with bspwm. I used it in my workflow and start playing around with it. Eventually I thought I should move it out of my dotfiles turn it into it's own project which I did and from there it became a layout manager.

I am really proud that so many people found this tool useful. However, I am unable to make time to work on this project any more. I would really like this project to be active which is why I am looking for a new set of maintainers.

More specifically, I am looking for people who could pick up one or more of the following responsibilities -

If you have any questions regarding this or you're interested in helping out, leave a comment to this issue.

darkelectron commented 3 years ago

Hi! Would like to help out in maintaining.

I could pick up any of these, except the last one.

phenax commented 3 years ago

@darkelectron, sounds great! We have a few bugs and feature requests already in queue which you could pick up. Let me know if you need any help.

amtoine commented 2 years ago

Hi @phenax :wave:

I just discovered your project, which I found really cool, as I enjoy bspwm soooo much :star_struck:

Is the repo still maintained and do you still need help? :yum:

amtoine commented 2 years ago

Oh crap... I hope it's not too late :cry:

seing such a cool project, not small enough to be negligeable and not big enough to be overwhelming, with issues, pull requests to be addressed, packages to be.. well packaged! :yum:, I'm willing to help the community sooo badly :open_mouth:

:arrow_right: @phenax, if you still would like to see this project alive, :arrow_right: @darkelectron if your're still maintaining this repo, if any one of you needs help, please reach me out and tell me what can be done! :muscle:

Again, I really would love to help :slightly_smiling_face:

phenax commented 2 years ago

Is the repo still maintained and do you still need help?

@a2n-s Unfortunately, I haven't been able to spend time on this project so definitely could use as much help as I can get. Let me know which one of the responsibilities listed, will you be able to pick up

amtoine commented 2 years ago

it is great to hear from you @phenax :relieved:

@a2n-s Unfortunately, I haven't been able to spend time on this project so definitely could use as much help as I can get. Let me know which one of the responsibilities listed, will you be able to pick up

no pressure at all, it's normal if you do not have the time after all :wink: i was just a bit worried about the project :cry:

  • Feature development
  • Bug fixes
  • Pull request reviews
  • Testing prs and attempting to reproduce reported issues
  • Maintaining the AUR package
  • Publishing and maintaining packages on other package repositories

to be honest, i'm not comfortable with the last item as i simply do not know how to do that at all... i'm much more familiar with the AUR and PKGBUILDs in general and there is the install script for non-Arch-based systems, right? however, if there is either a need, a will or requests from the community, i am open to learning this as well :yum:

apart from that, all of these bullet points look fine to me, at least i'll try my best to help maintaining bsp-layout :muscle:

If you have any questions regarding this or you're interested in helping out, leave a comment to this issue.

:one: i was planing the following in my mind:

  • make myself more comfortable with the source code
  • refresh the issues to let people know bsp-layout is back
  • test the 3 or 4 reported bugs
  • review the opened PRs
  • (update the PKGBUILD, but you've already done that, that's great to see bsp-layout up-to-date again :star_struck:)

is that ok for you?

:two: maybe i'm thinking a bit ahead, but what about the general policy of the repo? do I open an issue for every idea I have? what's the merge strategy for PRs and how to merge them without your help every time? ... if you prefer to talk about that in private, not to flood that issue, i'm available on discord at antoine#1306 :wink:

hope that's gonna be a fun adventure :+1: :wave:

phenax commented 2 years ago

Glad to head that @a2n-s

to be honest, i'm not comfortable with the last item as i simply do not know how to do that at all

That is alright. Currently, only the arch package is handled by me. The others are being maintained by the community. Also, I'm on nixos so I'll probably try to become a maintainer for the nix package sometime soon.

is that ok for you?

Sounds good!

do I open an issue for every idea I have?

Yes. It'll be a lot easier to look after each issue individually.

what's the merge strategy for PRs

Regular old merge commits. It's better to have a true history imo.

how to merge them without your help every time?

For now, I'll have to manage the merging of the prs while you're getting up to speed with the code and testing, once that's done, we can get you in as a collaborator.

Sometime next week, I'll try to document some pointers to make maintaining the repo a little easier

amtoine commented 2 years ago

That is alright. Currently, only the arch package is handled by me. The others are being maintained by the community. Also, I'm on nixos so I'll probably try to become a maintainer for the nix package sometime soon.

ohhhh I see, so let's keep on maintaining the Arch package and maybe the nixos one on our side :+1:

Sounds good!

perfect! :blush:

Yes. It'll be a lot easier to look after each issue individually.

100% agree :ok_hand:

Regular old merge commits. It's better to have a true history imo.

okey, that's what I saw in the current tree of the project and that's fine :slightly_smiling_face:

For now, I'll have to manage the merging of the prs while you're getting up to speed with the code and testing, once that's done, we can get you in as a collaborator.

yes of course! so i'll ping you when i think a merge can be performed :muscle:

Sometime next week, I'll try to document some pointers to make maintaining the repo a little easier

amazing! looking forward to it :tada:

neeasade commented 7 months ago

One day, while browsing reddit, I found a script that was exploring tiling layout with bspwm.

If anyone would like a smaller tinkering point, here is the original script from reddit:

#!/usr/bin/env bash
# a stack layout for bspwm
# bspc subscribe node_{remove,add} | while read _; do ./stack_layout.sh; done

master_size=.63

jget() {
  # thanks camille
  key=$1
  shift
  var=${*#*\"$key\":}
  var=${var%%[,\}]*}
  echo "$var"
}

vdo() {
  echo "$*"
  "$@"
}

# ensure the count of the master child is 1, or make it so
win_count=$(bspc query -N '@/1' -n .descendant_of.window | wc -l)
echo win_count: $win_count
if [ $win_count -ne 1 ]; then
  if [ -z "$*" ]; then
    new_master=$(bspc query -N '@/1' -n last.descendant_of.window | head -n 1)
    # new_master=$(bspc query -N '@/1' -n .descendant_of.window | head -n 1)
  else
    new_master=$*
  fi

  if [ -z "$new_master" ]; then
    new_master=$(bspc query -N '@/2' -n last.descendant_of.window | head -n 1)
  fi

  echo "new master: $new_master"
  # move everything into 2 that is not our new_master
  for wid in $(bspc query -N '@/1' -n .descendant_of.window | grep -v $new_master); do
    vdo bspc node "$wid" -n '@/2'
  done

  vdo bspc node "$new_master" -n '@/1'
fi

# amend the split type so we are arranged correctly
# on all stacking children
correct_rotation() {
  # sleep 5
  # sleep 0.5
  node=$1
  want=$2
  have=$(jget splitType "$(bspc query -T -n "$node")")
  # the only bashism
  have=${have:1:${#have}-2}

  if [ ! "$have" = "$want" ]; then
    vdo bspc node "$node" -R 270
  fi
}

vdo correct_rotation '@/' vertical
vdo correct_rotation '@/2' horizontal

stack_node=$(bspc query -N '@/2' -n)
for parent in $(bspc query -N '@/2' -n '.descendant_of.!window' | grep -v $stack_node); do
  vdo correct_rotation $parent horizontal
done

stack_node=$(bspc query -N '@/2' -n)
bspc node '@/2' -B

# mon_width=$(bspc query -T -m | jq .rectangle.width)
mon_width=$(jget width "$(bspc query -T -m)")

want=$(echo $master_size \* $mon_width | bc -l | sed 's/\..*//')
have=$(jget width "$(bspc query -T -n '@/1')")
bspc node '@/1' --resize right $((want - have)) 0