Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux版: プロジェクト保存時に自動でvvproj拡張子がつかない #574

Closed
aoirint opened this issue Dec 12, 2021 · 4 comments

Comments

@aoirint
Copy link
Member

aoirint commented Dec 12, 2021

不具合の内容

Linux版(Ubuntu)でプロジェクトファイル(vvproj)を保存するとき、ファイル名に拡張子を自分で記述しなかった場合、拡張子がつきません。

Windowsでは、拡張子なしで保存すると、末尾にファイルの種類で選択したvvprojが自動で追加されます。

macOS #570 では、デフォルトファイル名の拡張子部分が選択されていないほか、拡張子なしで保存すると、vvprojが自動で追加されます。

Linux(Ubuntu)では、vvprojのファイル一覧フィルタは動作していますが、拡張子を自分で記述しなかった場合、拡張子なしで保存されます。

Linuxでも拡張子が自動で付くようにした方がよさそうに思いました。

保存先のパスに拡張子がなかった場合、強制的に追加する処理を入れてもいいかもしれませんが、上書き防止をOSのダイアログに任せる実装になっている場合、自前で実装する必要があるかもです。

現象・ログ

UIの比較

Windows 10

windows-vvproj

macOS Catalina

macos-vvproj macos-vvproj2

Ubuntu 20.04

linux-vvproj

再現手順

Linux版をUbuntuで起動し、プロジェクトを保存する。

期待動作

拡張子がファイル名にない場合、自動的に追加される(Windows、macOSのように)

または、拡張子付きのデフォルトファイル名が表示されている(macOSのように)

VOICEVOXのバージョン

0.9.3

OSの種類/ディストリ/バージョン

  • Ubuntu 20.04

その他

@qwerty2501
Copy link
Contributor

qwerty2501 commented Dec 17, 2021

私はUbuntu20.04を使用してますが、例えばVSCodeだと右下のファイル拡張子を特定の物に変更してもファイル名に拡張子を入れないとやはり拡張子は付きで保存されません。
なのでバグではなく仕様であるととらえることもできます。VOICEVOXだと読み込み時にvvprojで絞り込みされてるのでUbuntu上でのUXは悪いですが。

恐らくこれはデスクトップ環境依存の挙動なのではないでしょうか。
Gnomeではこの挙動ですがKDEやXfaceだとまた違う挙動になるかもしれません。この挙動を変更するとこちらを立てればあちらが立たずといった問題は発生しそうです。
仮にこの問題に対応するとしたらLinuxで推奨するOSはUbuntuのみと明言してしまうのが良さそうです。キリがないので

拡張子付きのデフォルトファイル名が表示されている(macOSのように)

ちなみに私が使用しているGIF録画アプリケーションや動画編集ソフトウェアだとファイル保存時の挙動はこれでした

@Hiroshiba
Copy link
Member

なるほどです。
なにか拡張子を表示するためのフラグがなさそうであれば、デフォルトファイル名を拡張子付きにしてしまうのが手っ取り早いのかなと感じました。

@aoirint
Copy link
Member Author

aoirint commented Dec 18, 2021

プロジェクト保存ダイアログでも、「音声を繋げて書き出し」機能のようにデフォルトファイル名defaultPathがダイアログに入力されているようにする実装になるかなと思いました。

voicevox/src/background.ts

Lines 554 to 558 in 16b2c1e

const result = await dialog.showSaveDialog(win, {
title,
filters: [{ name: "VOICEVOX Project file", extensions: ["vvproj"] }],
properties: ["showOverwriteConfirmation"],
});

voicevox/src/store/audio.ts

Lines 979 to 985 in 16b2c1e

const headItemText = state.audioItems[state.audioKeys[0]].text;
const tailItemText =
state.audioItems[state.audioKeys[state.audioKeys.length - 1]].text;
const defaultFileName =
headItemText !== tailItemText
? headItemText + "..." + tailItemText
: headItemText;

@aoirint
Copy link
Member Author

aoirint commented Dec 29, 2021

#606 が解決策としてマージされたので、Closeします。

@aoirint aoirint closed this as completed Dec 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants