**Use a property switch** Declare a boolean property with an update method. def toggle_op(self, context): if self.toggle: bpy.ops.foo.bar() # start the operator bpy.types.Scene.toggle = BoolProperty(update=toggle_op) In your modal if not scene.toggle: return {'CANCELLED'} # or self.cancel(context) to do some clean up Related example for 2.7x https://blender.stackexchange.com/questions/69578/link-selection-between-vse-strip-and-object/69599?r=SearchResults&s=6|4.8939#69599