Speed up your Krita workflow. Build sequence of actions or make a collection of tools. Gather your operations into groups and execute them with pie menus.
Do you have repetitive actions while making your art pieces? With Actuator you can combine these actions into a sequence and execute them with a click of a button or assign a shortcut. Also, you can specify settings for filters that will be used next time you execute the sequence.
So stop clicking around and speed up your workflow with Actuator!
Using action can easily lead to problems. Because krita has many types of layers. Not all actions can be used. And when that happens, krita crashes … I guess this is one of the reasons for limiting “task sets docker”. It would be nice to add a simple decision (for example, only for paint layers)
Another thing is that I’m not sure if there is a problem with nodes. I’ve worked on a simple action script in 4.x that had something like “activate previous layer”. It worked fine in 4.0, but after 5.0, even if I activated the previous layer, it would still operate on the original layer. This may be a change in the nodes, but I haven’t looked into it and hope it doesn’t have an effect on this plugin.
Where are all these definitions saved? I don’t want plugin updates to lose my settings. It would be nice if it could be shared with others as something like a resource
For the interface, I’d like to add a separator like the one in the “toolbar”.
Finally, not everything I want has an icon. I’d like to define which ones appear in docker and others in tools/yap. or have shortcuts or something like that.
Does people starting to create new text/code editor are depressed because another already exists? No
Does people starting to create new incredible software are depressed because another already exists? No
For users, having more than one possible choice for a tool is always a good thing.
There’s many possibility in implementation of a such tool: from a code point of view AND from user point of view (use different interface, use different possibilities - conditional actions for example - or many things can be implemented)
Then, just look this as an additional motivation to do something that fit your own vision of stuff
I just actually tested it. I thought it used the action from the “action dictionary”, but it’s actually a bit different. Action is translated and even includes actions from other plugins (very good). This also leads to a problem: I cannot search, no matter Chinese or English. When I press enter, the error appears.
TypeError
Python 3.8.1: C:\GAMES\STEAM\steamapps\common\Krita\krita\bin\krita.exe
Fri Nov 12 14:17:38 2021
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
C:\Users\123\AppData\Roaming\krita\pykrita\actuator\plugin.py in handle_add_action(self=<actuator.plugin.AddOrEditSequence object>)
291 chosen_action = self.actions_list_dialog.chosen_action
292 if len(self.sequence['actions']) == 0 and self.button_icon.icon().isNull():
293 icon = Krita.instance().action(chosen_action['name']).icon()
294
295 if not icon.isNull():
icon undefined
global Krita = <class 'PyKrita.krita.Krita'>
Krita.instance = <built-in function instance>
).action undefined
chosen_action = None
).icon undefined
TypeError: 'NoneType' object is not subscriptable
__cause__ = None
__class__ = <class 'TypeError'>
__context__ = None
__delattr__ = <method-wrapper '__delattr__' of TypeError object>
__dict__ = {}
__dir__ = <built-in method __dir__ of TypeError object>
__doc__ = 'Inappropriate argument type.'
__eq__ = <method-wrapper '__eq__' of TypeError object>
__format__ = <built-in method __format__ of TypeError object>
__ge__ = <method-wrapper '__ge__' of TypeError object>
__getattribute__ = <method-wrapper '__getattribute__' of TypeError object>
__gt__ = <method-wrapper '__gt__' of TypeError object>
__hash__ = <method-wrapper '__hash__' of TypeError object>
__init__ = <method-wrapper '__init__' of TypeError object>
__init_subclass__ = <built-in method __init_subclass__ of type object>
__le__ = <method-wrapper '__le__' of TypeError object>
__lt__ = <method-wrapper '__lt__' of TypeError object>
__ne__ = <method-wrapper '__ne__' of TypeError object>
__new__ = <built-in method __new__ of type object>
__reduce__ = <built-in method __reduce__ of TypeError object>
__reduce_ex__ = <built-in method __reduce_ex__ of TypeError object>
__repr__ = <method-wrapper '__repr__' of TypeError object>
__setattr__ = <method-wrapper '__setattr__' of TypeError object>
__setstate__ = <built-in method __setstate__ of TypeError object>
__sizeof__ = <built-in method __sizeof__ of TypeError object>
__str__ = <method-wrapper '__str__' of TypeError object>
__subclasshook__ = <built-in method __subclasshook__ of type object>
__suppress_context__ = False
__traceback__ = <traceback object>
args = ("'NoneType' object is not subscriptable",)
with_traceback = <built-in method with_traceback of TypeError object>
The above is a description of an error in a Python program. Here is
the original traceback:
Traceback (most recent call last):
File "C:\Users\123\AppData\Roaming\krita\pykrita\actuator\plugin.py", line 293, in handle_add_action
icon = Krita.instance().action(chosen_action['name']).icon()
TypeError: 'NoneType' object is not subscriptable
In addition, “sequence title” requires at least 3 Chinese characters. I hope it can be changed. 2 Chinese characters can solve many titles .I found that English is also three letters. It would be much better if you could change it to three bytes
Will “restart” change? It’s too much trouble to restart every time I set it up
This interface may require a “move up” “move down” button
Many actions do not work (filters, etc.) may be because there are no parameters…
The added parameter I want: fill color for the layer (black white 128gray RGB CMY. It would be better if you can enter a value)
Regarding the error, yes. I need to carefully debug that. Thanks for reporting.
Regarding directory. Yes, the pluging actually looks for actions directly from krita itself. And if some other plugins have some actions, Actuator will find them and you can use these actions in your sequence.
Regarding restart. Yes, I will fix it in the next update. And the changes will be applied right away.
I also have an idea to store the sequence for purpose of sharing or storing for later. For now sequences are stored in krita configuration which user should not bother looking into.
And as a last little thing, I will also include the ability to add separator.
And the biggest thing (teaser alert) which might appear on next updates, I am thinking about developing some sort of a mechanism to have an information on what actions can be chained one after another and which not.
Hm. I thought it is an option that unblocks the content for those who under 18.
In short the video tells about plugin and its capabilities.
It goes on what it can do and how to make sequences of actions. There are examples and explanations.
The main feature of the plugin is that you can create sequences of actions to perform a particular task.
For instance: copy layer - desaturate - invert - convert to mask.
So with a plugin instead of clicking buttons to achieve that, you can just make a sequence and use it with one click. And the panel lets you create as many sequences as you want.
This plugin is very nice. thanks @yetanotherpainter . When I add the commands one after the other, it passes without doing some of them. Could it be because it’s too fast? Do I need to add a time delay between commands? Even if I use separator, it can’t do “paste to active layer”.
maybe you can add a delay feature .(milliseconds)
Does your plugin manage “external” action like global keyboard shortcuts ? I try to automate a second Krita’s instance on a second monitor and could not achieve it with Autoit. So I wondered if it could be done through your plugin.
I want a second view of my work on a second monitor. So I have
to open a new Krita window
2 move the window to the other monitor (I have the shortcut Alt+Win+Enter for this)
open in the second window a new view of the file
That’s it I could have done it with Autoit but Autoit does not seem to grab Krita’s window
UPDATE : I finally managed to write a working Autoit script. I will take a look at your plugin for automation of sequences as it may be quite boring to do every time the same thing (preparing a file for comic color by example).