kek test
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
pragma Singleton
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
function getAppId(fileName) {
|
||||
return fileName.endsWith(".desktop") ? fileName.replace(".desktop", "") : null;
|
||||
}
|
||||
|
||||
function getFileType(fileName, isDir) {
|
||||
if (isDir)
|
||||
return "directory";
|
||||
let ext = fileName.includes('.') ? fileName.split('.').pop().toLowerCase() : "";
|
||||
if (ext === "desktop")
|
||||
return "desktop";
|
||||
|
||||
const map = {
|
||||
"image": ["png", "jpg", "jpeg", "svg", "gif", "bmp", "webp", "ico", "tiff", "tif", "heic", "heif", "raw", "psd", "ai", "xcf"],
|
||||
"video": ["mp4", "mkv", "webm", "avi", "mov", "flv", "wmv", "m4v", "mpg", "mpeg", "3gp", "vob", "ogv", "ts"],
|
||||
"audio": ["mp3", "wav", "flac", "aac", "ogg", "m4a", "wma", "opus", "alac", "mid", "midi", "amr"],
|
||||
"archive": ["zip", "tar", "gz", "rar", "7z", "xz", "bz2", "tgz", "iso", "img", "dmg", "deb", "rpm", "apk"],
|
||||
"document": ["pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "odt", "ods", "odp", "rtf", "epub", "mobi", "djvu"],
|
||||
"text": ["txt", "md", "rst", "tex", "log", "json", "xml", "yaml", "yml", "toml", "ini", "conf", "cfg", "env", "csv", "tsv"],
|
||||
"code": ["qml", "cpp", "c", "h", "hpp", "py", "js", "ts", "jsx", "tsx", "java", "rs", "go", "rb", "php", "cs", "swift", "kt", "sh", "bash", "zsh", "fish", "html", "htm", "css", "scss", "sass", "less", "vue", "svelte", "sql", "graphql", "lua", "pl", "dart", "r", "dockerfile", "make"],
|
||||
"executable": ["exe", "msi", "bat", "cmd", "appimage", "run", "bin", "out", "so", "dll"],
|
||||
"font": ["ttf", "otf", "woff", "woff2"]
|
||||
};
|
||||
|
||||
for (const [type, extensions] of Object.entries(map)) {
|
||||
if (extensions.includes(ext))
|
||||
return type;
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
function getIconName(fileName, isDir) {
|
||||
if (isDir)
|
||||
return "folder";
|
||||
let ext = fileName.includes('.') ? fileName.split('.').pop().toLowerCase() : "";
|
||||
|
||||
const map = {
|
||||
// Images
|
||||
"png": "image-x-generic",
|
||||
"jpg": "image-x-generic",
|
||||
"jpeg": "image-x-generic",
|
||||
"svg": "image-svg+xml",
|
||||
"gif": "image-x-generic",
|
||||
"bmp": "image-x-generic",
|
||||
"webp": "image-x-generic",
|
||||
"ico": "image-x-generic",
|
||||
"tiff": "image-x-generic",
|
||||
"tif": "image-x-generic",
|
||||
"heic": "image-x-generic",
|
||||
"heif": "image-x-generic",
|
||||
"raw": "image-x-generic",
|
||||
"psd": "image-vnd.adobe.photoshop",
|
||||
"ai": "application-illustrator",
|
||||
"xcf": "image-x-xcf",
|
||||
|
||||
// Vidéos
|
||||
"mp4": "video-x-generic",
|
||||
"mkv": "video-x-generic",
|
||||
"webm": "video-x-generic",
|
||||
"avi": "video-x-generic",
|
||||
"mov": "video-x-generic",
|
||||
"flv": "video-x-generic",
|
||||
"wmv": "video-x-generic",
|
||||
"m4v": "video-x-generic",
|
||||
"mpg": "video-x-generic",
|
||||
"mpeg": "video-x-generic",
|
||||
"3gp": "video-x-generic",
|
||||
"vob": "video-x-generic",
|
||||
"ogv": "video-x-generic",
|
||||
"ts": "video-x-generic",
|
||||
|
||||
// Audio
|
||||
"mp3": "audio-x-generic",
|
||||
"wav": "audio-x-generic",
|
||||
"flac": "audio-x-generic",
|
||||
"aac": "audio-x-generic",
|
||||
"ogg": "audio-x-generic",
|
||||
"m4a": "audio-x-generic",
|
||||
"wma": "audio-x-generic",
|
||||
"opus": "audio-x-generic",
|
||||
"alac": "audio-x-generic",
|
||||
"mid": "audio-midi",
|
||||
"midi": "audio-midi",
|
||||
"amr": "audio-x-generic",
|
||||
|
||||
// Archives & Images
|
||||
"zip": "application-zip",
|
||||
"tar": "application-x-tar",
|
||||
"gz": "application-gzip",
|
||||
"rar": "application-vnd.rar",
|
||||
"7z": "application-x-7z-compressed",
|
||||
"xz": "application-x-xz",
|
||||
"bz2": "application-x-bzip2",
|
||||
"tgz": "application-x-compressed-tar",
|
||||
"iso": "application-x-cd-image",
|
||||
"img": "application-x-cd-image",
|
||||
"dmg": "application-x-apple-diskimage",
|
||||
"deb": "application-vnd.debian.binary-package",
|
||||
"rpm": "application-x-rpm",
|
||||
"apk": "application-vnd.android.package-archive",
|
||||
|
||||
// Documents
|
||||
"pdf": "application-pdf",
|
||||
"doc": "application-msword",
|
||||
"docx": "application-vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||||
"xls": "application-vnd.ms-excel",
|
||||
"xlsx": "application-vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||||
"ppt": "application-vnd.ms-powerpoint",
|
||||
"pptx": "application-vnd.openxmlformats-officedocument.presentationml.presentation",
|
||||
"odt": "application-vnd.oasis.opendocument.text",
|
||||
"ods": "application-vnd.oasis.opendocument.spreadsheet",
|
||||
"odp": "application-vnd.oasis.opendocument.presentation",
|
||||
"rtf": "application-rtf",
|
||||
"epub": "application-epub+zip",
|
||||
"mobi": "application-x-mobipocket-ebook",
|
||||
"djvu": "image-vnd.djvu",
|
||||
"csv": "text-csv",
|
||||
"tsv": "text-tab-separated-values",
|
||||
|
||||
// Data & Config
|
||||
"txt": "text-x-generic",
|
||||
"md": "text-markdown",
|
||||
"rst": "text-x-rst",
|
||||
"tex": "text-x-tex",
|
||||
"log": "text-x-log",
|
||||
"json": "application-json",
|
||||
"xml": "text-xml",
|
||||
"yaml": "text-x-yaml",
|
||||
"yml": "text-x-yaml",
|
||||
"toml": "text-x-toml",
|
||||
"ini": "text-x-generic",
|
||||
"conf": "text-x-generic",
|
||||
"cfg": "text-x-generic",
|
||||
"env": "text-x-generic",
|
||||
|
||||
// Code
|
||||
"qml": "text-x-qml",
|
||||
"cpp": "text-x-c++src",
|
||||
"c": "text-x-csrc",
|
||||
"h": "text-x-chdr",
|
||||
"hpp": "text-x-c++hdr",
|
||||
"py": "text-x-python",
|
||||
"js": "text-x-javascript",
|
||||
"ts": "text-x-typescript",
|
||||
"jsx": "text-x-javascript",
|
||||
"tsx": "text-x-typescript",
|
||||
"java": "text-x-java",
|
||||
"rs": "text-x-rust",
|
||||
"go": "text-x-go",
|
||||
"rb": "text-x-ruby",
|
||||
"php": "application-x-php",
|
||||
"cs": "text-x-csharp",
|
||||
"swift": "text-x-swift",
|
||||
"kt": "text-x-kotlin",
|
||||
"sh": "application-x-shellscript",
|
||||
"bash": "application-x-shellscript",
|
||||
"zsh": "application-x-shellscript",
|
||||
"fish": "application-x-shellscript",
|
||||
"html": "text-html",
|
||||
"htm": "text-html",
|
||||
"css": "text-css",
|
||||
"scss": "text-x-scss",
|
||||
"sass": "text-x-sass",
|
||||
"less": "text-x-less",
|
||||
"vue": "text-html",
|
||||
"svelte": "text-html",
|
||||
"sql": "application-x-sql",
|
||||
"graphql": "text-x-generic",
|
||||
"lua": "text-x-lua",
|
||||
"pl": "text-x-perl",
|
||||
"dart": "text-x-dart",
|
||||
"r": "text-x-r",
|
||||
"dockerfile": "text-x-generic",
|
||||
"make": "text-x-makefile",
|
||||
|
||||
// Executables
|
||||
"exe": "application-x-executable",
|
||||
"msi": "application-x-msi",
|
||||
"bat": "application-x-ms-dos-executable",
|
||||
"cmd": "application-x-ms-dos-executable",
|
||||
"appimage": "application-x-executable",
|
||||
"run": "application-x-executable",
|
||||
"bin": "application-x-executable",
|
||||
"out": "application-x-executable",
|
||||
"so": "application-x-sharedlib",
|
||||
"dll": "application-x-sharedlib",
|
||||
|
||||
// Fonts
|
||||
"ttf": "font-x-generic",
|
||||
"otf": "font-x-generic",
|
||||
"woff": "font-x-generic",
|
||||
"woff2": "font-x-generic"
|
||||
};
|
||||
return map[ext] || "text-x-generic";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
pragma Singleton
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
function fileNameForPath(str) {
|
||||
if (typeof str !== "string")
|
||||
return "";
|
||||
const trimmed = trimFileProtocol(str);
|
||||
return trimmed.split(/[\\/]/).pop();
|
||||
}
|
||||
|
||||
function trimFileExt(str) {
|
||||
if (typeof str !== "string")
|
||||
return "";
|
||||
const trimmed = trimFileProtocol(str);
|
||||
const lastDot = trimmed.lastIndexOf(".");
|
||||
if (lastDot > -1 && lastDot > trimmed.lastIndexOf("/")) {
|
||||
return trimmed.slice(0, lastDot);
|
||||
}
|
||||
return trimmed;
|
||||
}
|
||||
|
||||
function trimFileProtocol(str) {
|
||||
return str.startsWith("file://") ? str.slice(7) : str;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user