Elv13 / tyrannical

Dynamic tagging configuration system for awesomeWM
211 stars 33 forks source link

Request for ideas for Tyrannical 1.0 #44

Open Elv13 opened 10 years ago

Elv13 commented 10 years ago

Hello all 13 peoples who subscribed to Tyrannical feed.

I plan to release 1.0 soon and would like your opinion and feedback. One thing that will go in for 1.0 is a list is proposed shortcuts. So far I have:

Proposed bash/zsh rc functions:

echo "require('awful').util.spawn('urxvt -e \"kcalc\"',{new_tag=true})" | awesome-client

I also will link to the "Repetitive" module that implement the long requested feature to have keyboard shortcuts for tags and clients declared in Tyrannical rules: https://github.com/Elv13/repetitive

A small set of bash/zsh alias to launch client from terminal with Tyrannical properties:

The last item I plan to add is an implementation of exec_once that works with startup notifications and shell commands and maybe backport the improved launcher (mod4+r firefox + control enter to launch in a new tag) as the patch is kind of staled upstream.

Do you have any other cool ideas that?

Philosoft commented 10 years ago

may be move/reorder tags?

Elv13 commented 10 years ago

This is already supported by awful.tag, there is also a patch in the awesome-3.5.6 queue to handle "swap". I don't really see what Tyrannical could do to improve this, can you share your ideas? I don't plan to restore the full Shifty "position" concept as it was problematic then and will still be problematic now. Maybe a separate tag re-ordering module could be a good idea, unless you have an idea how to make it fit in the Tyrannical code.

Philosoft commented 10 years ago

hmm. if 3.5.6 will ship it, than i really dunno what's to say anymore) it'll be almost heaven on earth then) (obvioslly in conjuction with tyrannical)

ghost commented 9 years ago

Wildcard / glob / regexmatching for clients.

I'd love to get a global setting like so:

tyrannical.properties.maximized = {
    all = false,
    "calligra*" = true,
}

Alternatively, a global setting for client property defaults would be nice.

Elv13 commented 9 years ago

@phmayo:

Hello. The problem with this is that such expressions are very slow to parse. As most users will have 250+ rules, those have to be parsed for every single rule at every single events. Shifty used to do that, but back in the 3.4.* days, I profiled Awesome (run some specialized tools to break down the execution to see what is slow) and that expressions parsing was one of the worst offender. I know some rules should greatly be improved by expressions, but I don't think it is such a good idea for the general user as this doesn't scale very well. Given Tyrannical currently use a hash map to match classes/instances name to rule sets, this would also require very deep changes. I took the decision to do it like that for performance reasons. I hope you understand.

ghost commented 9 years ago

Certainly. :)

radi-ka commented 9 years ago

what would be nice is some kind of saving the current tag setup and client arrangement on awesome restart (or at reboot)

ViktorNova commented 9 years ago

It would be huge if Tyrannical could match clients by more than just their class name, and make use of attributes like wm_name, wm_type, etc

I'm very excited about the new features!

radi-ka commented 9 years ago

@ViktorNova

... more than just their class name, and make use of attributes like wm_name, wm_type, etc

matching by instance is possible. And with help of awful.rules even matching by name, type, id and what not. Its still a hidden gem, but look here: https://github.com/Elv13/tyrannical/issues/51#issuecomment-73543887 and combine with Awful Rules or more

ViktorNova commented 9 years ago

@radi-ka Wow, that is awesome, thank you so much for sharing that with me. This opens up a huge box! And seems very simple to set up. @Elv13 Perhaps explaining this approach in more detail in the readme would be cool, maybe with an example?

ghost commented 9 years ago

Hello,

because I'm using sometimes two screens, I think it would be useful to add an shortcut for moving a tag to another screen (don't know whether this is beyond the scope of this project). Currently I'm using following statement in my rc.conf:

awful.key({ modkey, "Control" }, "s",       
              function () 
                  local t, s = awful.tag.selected(), nil
                  if t then 
                      s = awful.util.cycle(screen.count(), awful.tag.getscreen(t) + 1)
                      awful.tag.setscreen(t, s)
                      awful.tag.viewonly(t)
                      awful.screen.focus(s)
                  end
              end),

It's working for me, but it is cycling through all screens (may be a problem having more than two screens).

Thank you for asking!


Edit: Sorry, I was in a hurry and didn't noticed the comments above completely. Obviously this out of scope ;-)

Elv13 commented 9 years ago

Hello @bastorran, please take a look at my https://github.com/Elv13/collision module, it does that and much more

hari-rangarajan commented 9 years ago

I find myself wanting to , as an example, pull out a terminal window (out of many) and a web browser window (out of many) into a new tag. I wonder how everyone handles this now because I can't find any nice way to do it within the available framework. I think this also overlaps with how to have windows have multiple "identifiers" to allow them to be part of different tag layouts.

Elv13 commented 9 years ago

@hari-rangarajan: Tyrannical shortcut has a "aero" shortcut that take the last 2 focussed clients and create a tag with them. My config also have an alt+tab like menu with search so you can select/focus clients and toggle them from tags (that's part of the Radical module)

lulivi commented 6 years ago

Hello Elv! I have a simple request. I want to set a sepparator between the tag widget and the only way I can think of is addin the sepparator to the tag names. Is there anyway of doing it mor eficiently or is it difficult to implement?

Elv13 commented 6 years ago

Hi @lulivi,

You probably want to install the doc_tests_and_notif branch of my Awesome fork. It has such an API https://elv13.github.io/classes/awful.widget.tasklist.html for all layouts, including the tasklist and taglist. I will upstream these patches soon. The previous patch is already merged but does not contain all the patches, so Awesome-git isn't good enough for you yet, but should be within a month or so. For now the branch is quite stable.

Elv13 commented 6 years ago

@lulivi The feature has been merged in Awesome-git

https://awesomewm.org/apidoc/classes/awful.widget.taglist.html

lulivi commented 6 years ago

Thank you so much! I'll try tomorrow!