bl_info = { "name": "Active Background", "author": "Dspazio", "version": (1, 0), "blender": (2, 80, 0), "location": "View3D", "description": "Changes background gradient color for each mode.", "warning": "", "doc_url": "", "category": "Themes", } import bpy from bpy.app.handlers import persistent Modes = {'OBJECT':(0.30, 0.30, 0.30), # ORIG # 'EDIT':(0.30, 0.20, 0.20), # xxxx 'EDIT':(0.50, 0.20, 0.20), # ------------------------------- # ORIG # 'SCULPT':(0.05, 0.05, 0.05), # Blue1 # 'SCULPT':(0.1, 0.5, 0.6), # Pink1 # 'SCULPT':(0.8, 0.5, 0.6), # Turquoise # 'SCULPT':(0.0, 0.4, 0.4), # RoyaleBlue 'SCULPT':(0.0, 0.1, 0.6), # ------------------------------- 'VERTEX_PAINT':(0.05, 0.05, 0.05), 'WEIGHT_PAINT':(0.05, 0.05, 0.05), 'TEXTURE_PAINT':(0.05, 0.05, 0.05)} @persistent def my_handler(scene): mode = bpy.context.object.mode bpy.context.preferences.themes[0].view_3d.space.gradients.high_gradient = Modes[mode] class addActiveBackgroundPreferences(bpy.types.AddonPreferences): bl_idname = __name__ edit_mode_color: bpy.props.FloatVectorProperty(name="Edit Mode Color", subtype='COLOR', default=Modes['EDIT'], size=3, min=0, max=1) def draw(self, context): layout = self.layout layout.label(text='Edit Mode :') row = layout.row() row.prop(self, 'edit_mode_color', expand=True) def register(): bpy.app.handlers.depsgraph_update_post.append(my_handler) bpy.utils.register_class(addActiveBackgroundPreferences) def unregister(): bpy.app.handlers.depsgraph_update_post.remove(my_handler) bpy.utils.register_class(addActiveBackgroundPreferences) if __name__ == "__main__": register()