diff --git a/assets/src/components/files/Listing.vue b/assets/src/components/files/Listing.vue
index 8eb7497f..af7a8c6b 100644
--- a/assets/src/components/files/Listing.vue
+++ b/assets/src/components/files/Listing.vue
@@ -15,16 +15,31 @@
       <div class="item header">
         <div></div>
         <div>
-          <p :class="{ active: nameSorted }" class="name" @click="sort('name')">
+          <p :class="{ active: nameSorted }" class="name"
+            role="button"
+            tabindex="0"
+            @click="sort('name')"
+            :title="$t('files.sortByName')"
+            :aria-label="$t('files.sortByName')">
             <span>{{ $t('files.name') }}</span>
             <i class="material-icons">{{ nameIcon }}</i>
           </p>
 
-          <p :class="{ active: sizeSorted }" class="size" @click="sort('size')">
+          <p :class="{ active: sizeSorted }" class="size"
+            role="button"
+            tabindex="0"
+            @click="sort('size')"
+            :title="$t('files.sortBySize')"
+            :aria-label="$t('files.sortBySize')">
             <span>{{ $t('files.size') }}</span>
             <i class="material-icons">{{ sizeIcon }}</i>
           </p>
-          <p :class="{ active: modifiedSorted }" class="modified" @click="sort('modified')">
+          <p :class="{ active: modifiedSorted }" class="modified"
+            role="button"
+            tabindex="0"
+            @click="sort('modified')"
+            :title="$t('files.sortByLastModified')"
+            :aria-label="$t('files.sortByLastModified')">
             <span>{{ $t('files.lastModified') }}</span>
             <i class="material-icons">{{ modifiedIcon }}</i>
           </p>
diff --git a/assets/src/components/files/ListingItem.vue b/assets/src/components/files/ListingItem.vue
index 20f13db2..81c7be12 100644
--- a/assets/src/components/files/ListingItem.vue
+++ b/assets/src/components/files/ListingItem.vue
@@ -1,5 +1,7 @@
 <template>
   <div class="item"
+  role="button"
+  tabindex="0"
   draggable="true"
   @dragstart="dragStart"
   @dragover="dragOver"
@@ -7,6 +9,7 @@
   @click="click"
   @dblclick="open"
   @touchstart="touchstart"
+  :aria-label="name"
   :aria-selected="isSelected">
     <div>
       <i class="material-icons">{{ icon }}</i>
diff --git a/assets/src/components/prompts/Copy.vue b/assets/src/components/prompts/Copy.vue
index b4cb403c..53b9d1fd 100644
--- a/assets/src/components/prompts/Copy.vue
+++ b/assets/src/components/prompts/Copy.vue
@@ -6,7 +6,10 @@
     <file-list @update:selected="val => dest = val"></file-list>
 
     <div>
-      <button class="ok" @click="copy">{{ $t('buttons.copy') }}</button>
+      <button class="ok"
+        @click="copy"
+        :aria-label="$t('buttons.copy')"
+        :title="$t('buttons.copy')">{{ $t('buttons.copy') }}</button>
       <button class="cancel"
         @click="$store.commit('closeHovers')"
         :aria-label="$t('buttons.cancel')"
diff --git a/assets/src/components/prompts/Delete.vue b/assets/src/components/prompts/Delete.vue
index 3e14fbd0..4d15e653 100644
--- a/assets/src/components/prompts/Delete.vue
+++ b/assets/src/components/prompts/Delete.vue
@@ -4,7 +4,9 @@
     <p v-show="req.kind !== 'listing'">{{ $t('prompts.deleteMessageSingle') }}</p>
     <p v-show="req.kind === 'listing'">{{ $t('prompts.deleteMessageMultiple', { count: selectedCount}) }}</p>
     <div>
-      <button @click="submit" autofocus>{{ $t('buttons.delete') }}</button>
+      <button @click="submit"
+        :aria-label="$t('buttons.delete')"
+        :title="$t('buttons.delete')">{{ $t('buttons.delete') }}</button>
       <button class="cancel"
         @click="$store.commit('closeHovers')"
         :aria-label="$t('buttons.cancel')"
diff --git a/assets/src/components/prompts/Error.vue b/assets/src/components/prompts/Error.vue
index c5e0ea49..fd319762 100644
--- a/assets/src/components/prompts/Error.vue
+++ b/assets/src/components/prompts/Error.vue
@@ -4,8 +4,14 @@
     <h3>{{ $t('prompts.error') }}</h3>
     <pre>{{ $store.state.showMessage }}</pre>
     <div>
-      <button @click="close" autofocus>{{ $t('buttons.close') }}</button>
-      <button @click="reportIssue" class="cancel">{{ $t('buttons.reportIssue') }}</button>
+      <button @click="close"
+        autofocus
+        :aria-label="$t('buttons.close')"
+        :title="$t('buttons.close')">{{ $t('buttons.close') }}</button>
+      <button @click="reportIssue"
+        class="cancel"
+        :aria-label="$t('buttons.reportIssue')"
+        :title="$t('buttons.reportIssue')">{{ $t('buttons.reportIssue') }}</button>
     </div>
   </div>
 </template>
diff --git a/assets/src/components/prompts/FileList.vue b/assets/src/components/prompts/FileList.vue
index eaa29645..6fd82ceb 100644
--- a/assets/src/components/prompts/FileList.vue
+++ b/assets/src/components/prompts/FileList.vue
@@ -4,6 +4,9 @@
       <li @click="select"
         @touchstart="touchstart"
         @dblclick="next"
+        role="button"
+        tabindex="0"
+        :aria-label="item.name"
         :aria-selected="selected == item.url"
         :key="item.name" v-for="item in items"
         :data-url="item.url">{{ item.name }}</li>
diff --git a/assets/src/components/prompts/Help.vue b/assets/src/components/prompts/Help.vue
index fbf88282..0ebafdf4 100644
--- a/assets/src/components/prompts/Help.vue
+++ b/assets/src/components/prompts/Help.vue
@@ -15,7 +15,11 @@
     </ul>
 
     <div>
-      <button type="submit" @click="$store.commit('closeHovers')" class="ok">{{ $t('buttons.ok') }}</button>
+      <button type="submit"
+        @click="$store.commit('closeHovers')"
+        class="ok"
+        :aria-label="$t('buttons.ok')"
+        :title="$t('buttons.ok')">{{ $t('buttons.ok') }}</button>
     </div>
   </div>
 </template>
diff --git a/assets/src/components/prompts/Info.vue b/assets/src/components/prompts/Info.vue
index 2752bb75..cb9f3242 100644
--- a/assets/src/components/prompts/Info.vue
+++ b/assets/src/components/prompts/Info.vue
@@ -21,7 +21,11 @@
     </section>
 
     <div>
-      <button type="submit" @click="$store.commit('closeHovers')" class="ok">{{ $t('buttons.ok') }}</button>
+      <button type="submit"
+        @click="$store.commit('closeHovers')"
+        class="ok"
+        :aria-label="$t('buttons.ok')"
+        :title="$t('buttons.ok')">{{ $t('buttons.ok') }}</button>
     </div>
   </div>
 </template>
diff --git a/assets/src/components/prompts/Move.vue b/assets/src/components/prompts/Move.vue
index be6f42cd..a5ceedad 100644
--- a/assets/src/components/prompts/Move.vue
+++ b/assets/src/components/prompts/Move.vue
@@ -6,7 +6,10 @@
     <file-list @update:selected="val => dest = val"></file-list>
 
     <div>
-      <button class="ok" @click="move">{{ $t('buttons.move') }}</button>
+      <button class="ok"
+        @click="move"
+        :aria-label="$t('buttons.move')"
+        :title="$t('buttons.move')">{{ $t('buttons.move') }}</button>
       <button class="cancel"
         @click="$store.commit('closeHovers')"
         :aria-label="$t('buttons.cancel')"
diff --git a/assets/src/components/prompts/NewDir.vue b/assets/src/components/prompts/NewDir.vue
index 9b33263e..b1229a7a 100644
--- a/assets/src/components/prompts/NewDir.vue
+++ b/assets/src/components/prompts/NewDir.vue
@@ -4,7 +4,10 @@
     <p>{{ $t('prompts.newDirMessage') }}</p>
     <input autofocus type="text" @keyup.enter="submit" v-model.trim="name">
     <div>
-      <button class="ok" @click="submit">{{ $t('buttons.create') }}</button>
+      <button class="ok"
+        :aria-label="$t('buttons.create')"
+        :title="$t('buttons.create')"
+        @click="submit">{{ $t('buttons.create') }}</button>
       <button class="cancel"
         @click="$store.commit('closeHovers')"
         :aria-label="$t('buttons.cancel')"
diff --git a/assets/src/components/prompts/NewFile.vue b/assets/src/components/prompts/NewFile.vue
index d9b6c333..521a8b1a 100644
--- a/assets/src/components/prompts/NewFile.vue
+++ b/assets/src/components/prompts/NewFile.vue
@@ -4,7 +4,10 @@
     <p>{{ $t('prompts.newFileMessage') }}</p>
     <input autofocus type="text" @keyup.enter="submit" v-model.trim="name">
     <div>
-      <button class="ok" @click="submit">{{ $t('buttons.create') }}</button>
+      <button class="ok"
+        @click="submit"
+        :aria-label="$t('buttons.create')"
+        :title="$t('buttons.create')">{{ $t('buttons.create') }}</button>
       <button class="cancel"
         @click="$store.commit('closeHovers')"
         :aria-label="$t('buttons.cancel')"
diff --git a/assets/src/components/prompts/Prompts.vue b/assets/src/components/prompts/Prompts.vue
index 0551bd7a..f42d7369 100644
--- a/assets/src/components/prompts/Prompts.vue
+++ b/assets/src/components/prompts/Prompts.vue
@@ -26,7 +26,10 @@
           :name="input.name"
           :placeholder="input.placeholder">
         <div>
-          <input type="submit" class="ok" :value="prompt.ok">
+          <input type="submit" class="ok"
+          :aria-label="prompt.ok"
+          :title="prompt.ok"
+          :value="prompt.ok">
           <button class="cancel"
             @click="$store.commit('closeHovers')"
             :aria-label="$t('buttons.cancel')"
diff --git a/assets/src/components/prompts/Rename.vue b/assets/src/components/prompts/Rename.vue
index 3951f7d5..dc5bd7e5 100644
--- a/assets/src/components/prompts/Rename.vue
+++ b/assets/src/components/prompts/Rename.vue
@@ -5,7 +5,10 @@
 
     <input autofocus type="text" @keyup.enter="submit" v-model.trim="name">
     <div>
-      <button @click="submit" type="submit">{{ $t('buttons.rename') }}</button>
+      <button @click="submit"
+        type="submit"
+        :aria-label="$t('buttons.rename')"
+        :title="$t('buttons.rename')">{{ $t('buttons.rename') }}</button>
       <button class="cancel"
         @click="$store.commit('closeHovers')"
         :aria-label="$t('buttons.cancel')"
diff --git a/assets/src/components/prompts/Success.vue b/assets/src/components/prompts/Success.vue
index b26150af..4b5bcd65 100644
--- a/assets/src/components/prompts/Success.vue
+++ b/assets/src/components/prompts/Success.vue
@@ -3,7 +3,10 @@
     <i class="material-icons">done</i>
     <h3>{{ $store.state.showMessage }}</h3>
     <div>
-      <button @click="close" autofocus>{{ $t('buttons.ok') }}</button>
+      <button @click="close"
+        :aria-label="$t('buttons.ok')"
+        :title="$t('buttons.ok')"
+        autofocus>{{ $t('buttons.ok') }}</button>
     </div>
   </div>
 </template>
diff --git a/assets/src/i18n/en.yaml b/assets/src/i18n/en.yaml
index dd707833..2157ad95 100644
--- a/assets/src/i18n/en.yaml
+++ b/assets/src/i18n/en.yaml
@@ -42,6 +42,9 @@ files:
   multipleSelectionEnabled: Multiple selection enabled
   name: Name
   size: Size
+  sortByName: Sort by name
+  sortBySize: Sort by size
+  sortByLastModified: Sort by last modified
 help:
   click: select file or directory
   ctrl:
diff --git a/assets/src/i18n/pt.yaml b/assets/src/i18n/pt.yaml
index b0651136..8edf4160 100644
--- a/assets/src/i18n/pt.yaml
+++ b/assets/src/i18n/pt.yaml
@@ -42,6 +42,9 @@ files:
   multipleSelectionEnabled: Seleção múltipla ativada
   name: Nome
   size: Tamanho
+  sortByName: Ordenar pelo nome
+  sortBySize: Ordenar pelo tamanho
+  sortByLastModified: Ordenar pela última modificação
 help:
   click: selecionar pasta ou ficheiro
   ctrl: