diff --git a/packages/frontend/src/components/MkWidgets.vue b/packages/frontend/src/components/MkWidgets.vue
index 21ebbf37b5..e3e4484405 100644
--- a/packages/frontend/src/components/MkWidgets.vue
+++ b/packages/frontend/src/components/MkWidgets.vue
@@ -15,21 +15,21 @@
 			handle=".handle"
 			:animation="150"
 			:group="{ name: 'SortableMkWidgets' }"
-			@update:model-value="v => emit('updateWidgets', v)"
 			:class="$style['edit-editing']"
+			@update:model-value="v => emit('updateWidgets', v)"
 		>
 			<template #item="{element}">
 				<div :class="[$style.widget, $style['customize-container']]">
 					<button :class="$style['customize-container-config']" class="_button" @click.prevent.stop="configWidget(element.id)"><i class="ti ti-settings"></i></button>
 					<button :class="$style['customize-container-remove']" class="_button" @click.prevent.stop="removeWidget(element)"><i class="ti ti-x"></i></button>
 					<div class="handle">
-						<component :is="`mkw-${element.name}`" :ref="el => widgetRefs[element.id] = el" class="widget" :class="$style['customize-container-handle-widget']" :widget="element" @update-props="updateWidget(element.id, $event)"/>
+						<component :is="`widget-${element.name}`" :ref="el => widgetRefs[element.id] = el" class="widget" :class="$style['customize-container-handle-widget']" :widget="element" @update-props="updateWidget(element.id, $event)"/>
 					</div>
 				</div>
 			</template>
 		</Sortable>
 	</template>
-	<component :is="`mkw-${widget.name}`" v-for="widget in widgets" v-else :key="widget.id" :ref="el => widgetRefs[widget.id] = el" :class="$style.widget" :widget="widget" @update-props="updateWidget(widget.id, $event)" @contextmenu.stop="onContextmenu(widget, $event)"/>
+	<component :is="`widget-${widget.name}`" v-for="widget in widgets" v-else :key="widget.id" :ref="el => widgetRefs[widget.id] = el" :class="$style.widget" :widget="widget" @update-props="updateWidget(widget.id, $event)" @contextmenu.stop="onContextmenu(widget, $event)"/>
 </div>
 </template>
 <script lang="ts">
diff --git a/packages/frontend/src/widgets/activity.calendar.vue b/packages/frontend/src/widgets/WidgetActivity.calendar.vue
similarity index 100%
rename from packages/frontend/src/widgets/activity.calendar.vue
rename to packages/frontend/src/widgets/WidgetActivity.calendar.vue
diff --git a/packages/frontend/src/widgets/activity.chart.vue b/packages/frontend/src/widgets/WidgetActivity.chart.vue
similarity index 100%
rename from packages/frontend/src/widgets/activity.chart.vue
rename to packages/frontend/src/widgets/WidgetActivity.chart.vue
diff --git a/packages/frontend/src/widgets/activity.vue b/packages/frontend/src/widgets/WidgetActivity.vue
similarity index 100%
rename from packages/frontend/src/widgets/activity.vue
rename to packages/frontend/src/widgets/WidgetActivity.vue
diff --git a/packages/frontend/src/widgets/aichan.vue b/packages/frontend/src/widgets/WidgetAichan.vue
similarity index 100%
rename from packages/frontend/src/widgets/aichan.vue
rename to packages/frontend/src/widgets/WidgetAichan.vue
diff --git a/packages/frontend/src/widgets/aiscript.vue b/packages/frontend/src/widgets/WidgetAiscript.vue
similarity index 100%
rename from packages/frontend/src/widgets/aiscript.vue
rename to packages/frontend/src/widgets/WidgetAiscript.vue
diff --git a/packages/frontend/src/widgets/aiscript-app.vue b/packages/frontend/src/widgets/WidgetAiscriptApp.vue
similarity index 100%
rename from packages/frontend/src/widgets/aiscript-app.vue
rename to packages/frontend/src/widgets/WidgetAiscriptApp.vue
diff --git a/packages/frontend/src/widgets/button.vue b/packages/frontend/src/widgets/WidgetButton.vue
similarity index 100%
rename from packages/frontend/src/widgets/button.vue
rename to packages/frontend/src/widgets/WidgetButton.vue
diff --git a/packages/frontend/src/widgets/calendar.vue b/packages/frontend/src/widgets/WidgetCalendar.vue
similarity index 100%
rename from packages/frontend/src/widgets/calendar.vue
rename to packages/frontend/src/widgets/WidgetCalendar.vue
diff --git a/packages/frontend/src/widgets/clicker.vue b/packages/frontend/src/widgets/WidgetClicker.vue
similarity index 100%
rename from packages/frontend/src/widgets/clicker.vue
rename to packages/frontend/src/widgets/WidgetClicker.vue
diff --git a/packages/frontend/src/widgets/clock.vue b/packages/frontend/src/widgets/WidgetClock.vue
similarity index 100%
rename from packages/frontend/src/widgets/clock.vue
rename to packages/frontend/src/widgets/WidgetClock.vue
diff --git a/packages/frontend/src/widgets/digital-clock.vue b/packages/frontend/src/widgets/WidgetDigitalClock.vue
similarity index 100%
rename from packages/frontend/src/widgets/digital-clock.vue
rename to packages/frontend/src/widgets/WidgetDigitalClock.vue
diff --git a/packages/frontend/src/widgets/federation.vue b/packages/frontend/src/widgets/WidgetFederation.vue
similarity index 100%
rename from packages/frontend/src/widgets/federation.vue
rename to packages/frontend/src/widgets/WidgetFederation.vue
diff --git a/packages/frontend/src/widgets/instance-cloud.vue b/packages/frontend/src/widgets/WidgetInstanceCloud.vue
similarity index 100%
rename from packages/frontend/src/widgets/instance-cloud.vue
rename to packages/frontend/src/widgets/WidgetInstanceCloud.vue
diff --git a/packages/frontend/src/widgets/instance-info.vue b/packages/frontend/src/widgets/WidgetInstanceInfo.vue
similarity index 100%
rename from packages/frontend/src/widgets/instance-info.vue
rename to packages/frontend/src/widgets/WidgetInstanceInfo.vue
diff --git a/packages/frontend/src/widgets/job-queue.vue b/packages/frontend/src/widgets/WidgetJobQueue.vue
similarity index 100%
rename from packages/frontend/src/widgets/job-queue.vue
rename to packages/frontend/src/widgets/WidgetJobQueue.vue
diff --git a/packages/frontend/src/widgets/memo.vue b/packages/frontend/src/widgets/WidgetMemo.vue
similarity index 100%
rename from packages/frontend/src/widgets/memo.vue
rename to packages/frontend/src/widgets/WidgetMemo.vue
diff --git a/packages/frontend/src/widgets/notifications.vue b/packages/frontend/src/widgets/WidgetNotifications.vue
similarity index 100%
rename from packages/frontend/src/widgets/notifications.vue
rename to packages/frontend/src/widgets/WidgetNotifications.vue
diff --git a/packages/frontend/src/widgets/online-users.vue b/packages/frontend/src/widgets/WidgetOnlineUsers.vue
similarity index 100%
rename from packages/frontend/src/widgets/online-users.vue
rename to packages/frontend/src/widgets/WidgetOnlineUsers.vue
diff --git a/packages/frontend/src/widgets/photos.vue b/packages/frontend/src/widgets/WidgetPhotos.vue
similarity index 100%
rename from packages/frontend/src/widgets/photos.vue
rename to packages/frontend/src/widgets/WidgetPhotos.vue
diff --git a/packages/frontend/src/widgets/post-form.vue b/packages/frontend/src/widgets/WidgetPostForm.vue
similarity index 100%
rename from packages/frontend/src/widgets/post-form.vue
rename to packages/frontend/src/widgets/WidgetPostForm.vue
diff --git a/packages/frontend/src/widgets/profile.vue b/packages/frontend/src/widgets/WidgetProfile.vue
similarity index 100%
rename from packages/frontend/src/widgets/profile.vue
rename to packages/frontend/src/widgets/WidgetProfile.vue
diff --git a/packages/frontend/src/widgets/rss.vue b/packages/frontend/src/widgets/WidgetRss.vue
similarity index 100%
rename from packages/frontend/src/widgets/rss.vue
rename to packages/frontend/src/widgets/WidgetRss.vue
diff --git a/packages/frontend/src/widgets/rss-ticker.vue b/packages/frontend/src/widgets/WidgetRssTicker.vue
similarity index 100%
rename from packages/frontend/src/widgets/rss-ticker.vue
rename to packages/frontend/src/widgets/WidgetRssTicker.vue
diff --git a/packages/frontend/src/widgets/slideshow.vue b/packages/frontend/src/widgets/WidgetSlideshow.vue
similarity index 100%
rename from packages/frontend/src/widgets/slideshow.vue
rename to packages/frontend/src/widgets/WidgetSlideshow.vue
diff --git a/packages/frontend/src/widgets/timeline.vue b/packages/frontend/src/widgets/WidgetTimeline.vue
similarity index 100%
rename from packages/frontend/src/widgets/timeline.vue
rename to packages/frontend/src/widgets/WidgetTimeline.vue
diff --git a/packages/frontend/src/widgets/trends.vue b/packages/frontend/src/widgets/WidgetTrends.vue
similarity index 100%
rename from packages/frontend/src/widgets/trends.vue
rename to packages/frontend/src/widgets/WidgetTrends.vue
diff --git a/packages/frontend/src/widgets/unix-clock.vue b/packages/frontend/src/widgets/WidgetUnixClock.vue
similarity index 100%
rename from packages/frontend/src/widgets/unix-clock.vue
rename to packages/frontend/src/widgets/WidgetUnixClock.vue
diff --git a/packages/frontend/src/widgets/user-list.vue b/packages/frontend/src/widgets/WidgetUserList.vue
similarity index 100%
rename from packages/frontend/src/widgets/user-list.vue
rename to packages/frontend/src/widgets/WidgetUserList.vue
diff --git a/packages/frontend/src/widgets/index.ts b/packages/frontend/src/widgets/index.ts
index 10b8d94234..9bcb9a317a 100644
--- a/packages/frontend/src/widgets/index.ts
+++ b/packages/frontend/src/widgets/index.ts
@@ -1,33 +1,33 @@
 import { App, defineAsyncComponent } from 'vue';
 
 export default function(app: App) {
-	app.component('MkwProfile', defineAsyncComponent(() => import('./profile.vue')));
-	app.component('MkwInstanceInfo', defineAsyncComponent(() => import('./instance-info.vue')));
-	app.component('MkwMemo', defineAsyncComponent(() => import('./memo.vue')));
-	app.component('MkwNotifications', defineAsyncComponent(() => import('./notifications.vue')));
-	app.component('MkwTimeline', defineAsyncComponent(() => import('./timeline.vue')));
-	app.component('MkwCalendar', defineAsyncComponent(() => import('./calendar.vue')));
-	app.component('MkwRss', defineAsyncComponent(() => import('./rss.vue')));
-	app.component('MkwRssTicker', defineAsyncComponent(() => import('./rss-ticker.vue')));
-	app.component('MkwTrends', defineAsyncComponent(() => import('./trends.vue')));
-	app.component('MkwClock', defineAsyncComponent(() => import('./clock.vue')));
-	app.component('MkwActivity', defineAsyncComponent(() => import('./activity.vue')));
-	app.component('MkwPhotos', defineAsyncComponent(() => import('./photos.vue')));
-	app.component('MkwDigitalClock', defineAsyncComponent(() => import('./digital-clock.vue')));
-	app.component('MkwUnixClock', defineAsyncComponent(() => import('./unix-clock.vue')));
-	app.component('MkwFederation', defineAsyncComponent(() => import('./federation.vue')));
-	app.component('MkwPostForm', defineAsyncComponent(() => import('./post-form.vue')));
-	app.component('MkwSlideshow', defineAsyncComponent(() => import('./slideshow.vue')));
-	app.component('MkwServerMetric', defineAsyncComponent(() => import('./server-metric/index.vue')));
-	app.component('MkwOnlineUsers', defineAsyncComponent(() => import('./online-users.vue')));
-	app.component('MkwJobQueue', defineAsyncComponent(() => import('./job-queue.vue')));
-	app.component('MkwInstanceCloud', defineAsyncComponent(() => import('./instance-cloud.vue')));
-	app.component('MkwButton', defineAsyncComponent(() => import('./button.vue')));
-	app.component('MkwAiscript', defineAsyncComponent(() => import('./aiscript.vue')));
-	app.component('MkwAiscriptApp', defineAsyncComponent(() => import('./aiscript-app.vue')));
-	app.component('MkwAichan', defineAsyncComponent(() => import('./aichan.vue')));
-	app.component('MkwUserList', defineAsyncComponent(() => import('./user-list.vue')));
-	app.component('MkwClicker', defineAsyncComponent(() => import('./clicker.vue')));
+	app.component('WidgetProfile', defineAsyncComponent(() => import('./WidgetProfile.vue')));
+	app.component('WidgetInstanceInfo', defineAsyncComponent(() => import('./WidgetInstanceInfo.vue')));
+	app.component('WidgetMemo', defineAsyncComponent(() => import('./WidgetMemo.vue')));
+	app.component('WidgetNotifications', defineAsyncComponent(() => import('./WidgetNotifications.vue')));
+	app.component('WidgetTimeline', defineAsyncComponent(() => import('./WidgetTimeline.vue')));
+	app.component('WidgetCalendar', defineAsyncComponent(() => import('./WidgetCalendar.vue')));
+	app.component('WidgetRss', defineAsyncComponent(() => import('./WidgetRss.vue')));
+	app.component('WidgetRssTicker', defineAsyncComponent(() => import('./WidgetRssTicker.vue')));
+	app.component('WidgetTrends', defineAsyncComponent(() => import('./WidgetTrends.vue')));
+	app.component('WidgetClock', defineAsyncComponent(() => import('./WidgetClock.vue')));
+	app.component('WidgetActivity', defineAsyncComponent(() => import('./WidgetActivity.vue')));
+	app.component('WidgetPhotos', defineAsyncComponent(() => import('./WidgetPhotos.vue')));
+	app.component('WidgetDigitalClock', defineAsyncComponent(() => import('./WidgetDigitalClock.vue')));
+	app.component('WidgetUnixClock', defineAsyncComponent(() => import('./WidgetUnixClock.vue')));
+	app.component('WidgetFederation', defineAsyncComponent(() => import('./WidgetFederation.vue')));
+	app.component('WidgetPostForm', defineAsyncComponent(() => import('./WidgetPostForm.vue')));
+	app.component('WidgetSlideshow', defineAsyncComponent(() => import('./WidgetSlideshow.vue')));
+	app.component('WidgetServerMetric', defineAsyncComponent(() => import('./server-metric/index.vue')));
+	app.component('WidgetOnlineUsers', defineAsyncComponent(() => import('./WidgetOnlineUsers.vue')));
+	app.component('WidgetJobQueue', defineAsyncComponent(() => import('./WidgetJobQueue.vue')));
+	app.component('WidgetInstanceCloud', defineAsyncComponent(() => import('./WidgetInstanceCloud.vue')));
+	app.component('WidgetButton', defineAsyncComponent(() => import('./WidgetButton.vue')));
+	app.component('WidgetAiscript', defineAsyncComponent(() => import('./WidgetAiscript.vue')));
+	app.component('WidgetAiscriptApp', defineAsyncComponent(() => import('./WidgetAiscriptApp.vue')));
+	app.component('WidgetAichan', defineAsyncComponent(() => import('./WidgetAichan.vue')));
+	app.component('WidgetUserList', defineAsyncComponent(() => import('./WidgetUserList.vue')));
+	app.component('WidgetClicker', defineAsyncComponent(() => import('./WidgetClicker.vue')));
 }
 
 export const widgets = [