diff --git a/config.def.h b/config.def.h index 8ff05094..bb1a393c 100644 --- a/config.def.h +++ b/config.def.h @@ -10,7 +10,10 @@ static const bool animations = true; // Enable animations static const char *animation_type = "slide"; //slide or zoom static const char animation_fade_in = 0; // Enable animation fade in static const float zoom_initial_ratio = 0.5; // Initial window ratio for animations -static const uint32_t animation_duration = 300; // Animation speed +static const uint32_t animation_duration_move = 300; // Animation move speed +static const uint32_t animation_duration_open = 300; // Animation open speed +static const uint32_t animation_duration_close = 200; // Animation close speed +static const uint32_t animation_duration_tag = 300; // Animation tag speed // static const double animation_curve[4] = {0.05,0.9,0.1,1.05}; // Animation curve static const double animation_curve[4] = {0.46,1.0,0.29,0.99}; // Animation curve diff --git a/main.c b/main.c index c75863c5..d5b65a68 100644 --- a/main.c +++ b/main.c @@ -132,6 +132,7 @@ struct dwl_animation { bool begin_fade_in; uint32_t total_frames; uint32_t passed_frames; + uint32_t duration; struct wlr_box initial; struct wlr_box current; }; @@ -1702,7 +1703,7 @@ void client_commit(Client *c) { // 设置动画速度 c->animation.passed_frames = 0; - c->animation.total_frames = animation_duration / output_frame_duration_ms(c); + c->animation.total_frames = c->animation.duration / output_frame_duration_ms(c); // 标记动画开始 c->animation.running = true; @@ -3803,6 +3804,18 @@ resize(Client *c, struct wlr_box geo, int interact) client_set_opacity(c,1); } + if(c->iskilling) { + c->animation.duration = animation_duration_close; + } else if(c->animation.tagouting) { + c->animation.duration = animation_duration_tag; + } else if(c->animation.tagining) { + c->animation.duration = animation_duration_tag; + } else if(c->is_open_animation) { + c->animation.duration = animation_duration_open; + } else { + c->animation.duration = animation_duration_move; + } + // 动画起始位置大小设置 if(c->animation.tagouting) { c->animainit_geom = c->geom;