distroscript 0.1.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {distroscript-0.1.0 → distroscript-0.2.1}/PKG-INFO +27 -18
- {distroscript-0.1.0 → distroscript-0.2.1}/README.md +22 -17
- {distroscript-0.1.0 → distroscript-0.2.1}/pyproject.toml +7 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/src/distroscript.py +38 -5
- {distroscript-0.1.0 → distroscript-0.2.1}/src/schema.json +23 -0
- distroscript-0.2.1/tests/inputs/17-appimage.yml +26 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/17-appimage.sh +21 -1
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/17-appimage.sh +21 -1
- distroscript-0.1.0/tests/inputs/17-appimage.yml +0 -14
- {distroscript-0.1.0 → distroscript-0.2.1}/.gitignore +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/LICENSE +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/01-package.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/02-package-default-name.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/03-package-type-only.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/04-pre-post_install.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/05-flags.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/06-depends_on.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/07-snapd.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/08-flatpak.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/09-tarball.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/10-github.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/11-file.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/12-pip.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/13-shell.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/14-zip.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/15-transitive-deps.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/inputs/16-install-first-option.yml +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/01-package.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/02-package-default-name.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/03-package-type-only.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/04-pre-post_install.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/05-flags.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/06-depends_on.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/07-snapd.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/08-flatpak.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/09-tarball.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/10-github.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/11-file.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/12-pip.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/13-shell.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/14-zip.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/15-transitive-deps.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/fedora/16-install-first-option.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/01-package.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/02-package-default-name.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/03-package-type-only.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/04-pre-post_install.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/07-snapd.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/08-flatpak.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/09-tarball.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/10-github.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/11-file.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/12-pip.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/13-shell.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/14-zip.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/outputs/ubuntu/15-transitive-deps.sh +0 -0
- {distroscript-0.1.0 → distroscript-0.2.1}/tests/run_tests.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: distroscript
|
|
3
|
-
Version: 0.1
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Generate Bash installation scripts from a declarative YAML config for multiple Linux distros
|
|
5
5
|
Project-URL: Homepage, https://github.com/RaniAgus/distroscript
|
|
6
6
|
Project-URL: Repository, https://github.com/RaniAgus/distroscript
|
|
@@ -36,6 +36,10 @@ License-File: LICENSE
|
|
|
36
36
|
Requires-Python: >=3.10
|
|
37
37
|
Requires-Dist: jsonschema
|
|
38
38
|
Requires-Dist: pyyaml
|
|
39
|
+
Provides-Extra: dev
|
|
40
|
+
Requires-Dist: mypy; extra == 'dev'
|
|
41
|
+
Requires-Dist: types-jsonschema; extra == 'dev'
|
|
42
|
+
Requires-Dist: types-pyyaml; extra == 'dev'
|
|
39
43
|
Description-Content-Type: text/markdown
|
|
40
44
|
|
|
41
45
|
# distroscript
|
|
@@ -44,7 +48,7 @@ Generate installation scripts for various Linux distributions based on a
|
|
|
44
48
|
declarative YAML configuration file.
|
|
45
49
|
|
|
46
50
|
```txt
|
|
47
|
-
distroscript
|
|
51
|
+
distroscript [-h] --os OS [--out OUT] config_path
|
|
48
52
|
|
|
49
53
|
Generate installation scripts from YAML config.
|
|
50
54
|
|
|
@@ -61,18 +65,18 @@ options:
|
|
|
61
65
|
> For now, only `fedora` is fully supported, but I plan to add support for
|
|
62
66
|
> `ubuntu`, `popos` and `mint` in the future.
|
|
63
67
|
|
|
64
|
-
##
|
|
65
|
-
|
|
66
|
-
- Ubuntu / Debian
|
|
68
|
+
## Installation
|
|
67
69
|
|
|
68
70
|
```bash
|
|
69
|
-
|
|
71
|
+
pip install distroscript
|
|
70
72
|
```
|
|
71
73
|
|
|
72
|
-
|
|
74
|
+
## Development
|
|
75
|
+
|
|
76
|
+
Install dev dependencies with:
|
|
73
77
|
|
|
74
78
|
```bash
|
|
75
|
-
|
|
79
|
+
pip install -e ".[dev]"
|
|
76
80
|
```
|
|
77
81
|
|
|
78
82
|
- MacOS
|
|
@@ -83,10 +87,10 @@ brew install python3 pyyaml jsonschema
|
|
|
83
87
|
|
|
84
88
|
## Schema Validation
|
|
85
89
|
|
|
86
|
-
The configuration files are validated against a JSON Schema specification (`src/schema.json`)
|
|
90
|
+
The configuration files are validated against a JSON Schema specification (`src/schema.json`)
|
|
87
91
|
that defines the structure and constraints for all supported package types and their properties.
|
|
88
92
|
|
|
89
|
-
The validation happens automatically after reading the YAML file and before processing begins.
|
|
93
|
+
The validation happens automatically after reading the YAML file and before processing begins.
|
|
90
94
|
If validation fails, the script will exit with a detailed error message showing:
|
|
91
95
|
- The path to the invalid field
|
|
92
96
|
- A description of what's wrong
|
|
@@ -405,21 +409,26 @@ oh-my-zsh:
|
|
|
405
409
|
**AppImage:**
|
|
406
410
|
|
|
407
411
|
```yaml
|
|
408
|
-
|
|
412
|
+
obsidian:
|
|
409
413
|
- type: appimage
|
|
410
|
-
url: https://github.com/
|
|
411
|
-
name:
|
|
412
|
-
icon_name:
|
|
413
|
-
|
|
414
|
-
-
|
|
415
|
-
-
|
|
414
|
+
url: https://github.com/obsidianmd/obsidian-releases/releases/download/v1.8.10/Obsidian-1.8.10.AppImage
|
|
415
|
+
name: Obsidian
|
|
416
|
+
icon_name: obsidian
|
|
417
|
+
mime_types:
|
|
418
|
+
- x-scheme-handler/obsidian
|
|
419
|
+
- type: text/markdown
|
|
420
|
+
default: true
|
|
416
421
|
```
|
|
417
422
|
|
|
418
423
|
AppImages are downloaded to `$HOME/.local/bin/`, a desktop entry is created in
|
|
419
424
|
`$HOME/.local/share/applications/`, and icons are extracted automatically when `icon_name` is specified.
|
|
420
425
|
|
|
426
|
+
When `mime_types` is provided, the desktop entry advertises those MIME types. If `default` is not set, only scheme
|
|
427
|
+
handler strings register the AppImage as their default handler, other MIME types will not be set as default unless
|
|
428
|
+
`default: true` is explicitly specified.
|
|
429
|
+
|
|
421
430
|
> [!NOTE]
|
|
422
|
-
> AppImage packages require the `url` field. The `name`, `icon_name`, and `
|
|
431
|
+
> AppImage packages require the `url` field. The `name`, `icon_name`, `categories`, and `mime_types` fields are optional.
|
|
423
432
|
> The `name` field defaults to the package name, `icon_name` enables desktop icon extraction when provided,
|
|
424
433
|
> and `categories` defaults to "Application".
|
|
425
434
|
|
|
@@ -4,7 +4,7 @@ Generate installation scripts for various Linux distributions based on a
|
|
|
4
4
|
declarative YAML configuration file.
|
|
5
5
|
|
|
6
6
|
```txt
|
|
7
|
-
distroscript
|
|
7
|
+
distroscript [-h] --os OS [--out OUT] config_path
|
|
8
8
|
|
|
9
9
|
Generate installation scripts from YAML config.
|
|
10
10
|
|
|
@@ -21,18 +21,18 @@ options:
|
|
|
21
21
|
> For now, only `fedora` is fully supported, but I plan to add support for
|
|
22
22
|
> `ubuntu`, `popos` and `mint` in the future.
|
|
23
23
|
|
|
24
|
-
##
|
|
25
|
-
|
|
26
|
-
- Ubuntu / Debian
|
|
24
|
+
## Installation
|
|
27
25
|
|
|
28
26
|
```bash
|
|
29
|
-
|
|
27
|
+
pip install distroscript
|
|
30
28
|
```
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
## Development
|
|
31
|
+
|
|
32
|
+
Install dev dependencies with:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
pip install -e ".[dev]"
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
- MacOS
|
|
@@ -43,10 +43,10 @@ brew install python3 pyyaml jsonschema
|
|
|
43
43
|
|
|
44
44
|
## Schema Validation
|
|
45
45
|
|
|
46
|
-
The configuration files are validated against a JSON Schema specification (`src/schema.json`)
|
|
46
|
+
The configuration files are validated against a JSON Schema specification (`src/schema.json`)
|
|
47
47
|
that defines the structure and constraints for all supported package types and their properties.
|
|
48
48
|
|
|
49
|
-
The validation happens automatically after reading the YAML file and before processing begins.
|
|
49
|
+
The validation happens automatically after reading the YAML file and before processing begins.
|
|
50
50
|
If validation fails, the script will exit with a detailed error message showing:
|
|
51
51
|
- The path to the invalid field
|
|
52
52
|
- A description of what's wrong
|
|
@@ -365,21 +365,26 @@ oh-my-zsh:
|
|
|
365
365
|
**AppImage:**
|
|
366
366
|
|
|
367
367
|
```yaml
|
|
368
|
-
|
|
368
|
+
obsidian:
|
|
369
369
|
- type: appimage
|
|
370
|
-
url: https://github.com/
|
|
371
|
-
name:
|
|
372
|
-
icon_name:
|
|
373
|
-
|
|
374
|
-
-
|
|
375
|
-
-
|
|
370
|
+
url: https://github.com/obsidianmd/obsidian-releases/releases/download/v1.8.10/Obsidian-1.8.10.AppImage
|
|
371
|
+
name: Obsidian
|
|
372
|
+
icon_name: obsidian
|
|
373
|
+
mime_types:
|
|
374
|
+
- x-scheme-handler/obsidian
|
|
375
|
+
- type: text/markdown
|
|
376
|
+
default: true
|
|
376
377
|
```
|
|
377
378
|
|
|
378
379
|
AppImages are downloaded to `$HOME/.local/bin/`, a desktop entry is created in
|
|
379
380
|
`$HOME/.local/share/applications/`, and icons are extracted automatically when `icon_name` is specified.
|
|
380
381
|
|
|
382
|
+
When `mime_types` is provided, the desktop entry advertises those MIME types. If `default` is not set, only scheme
|
|
383
|
+
handler strings register the AppImage as their default handler, other MIME types will not be set as default unless
|
|
384
|
+
`default: true` is explicitly specified.
|
|
385
|
+
|
|
381
386
|
> [!NOTE]
|
|
382
|
-
> AppImage packages require the `url` field. The `name`, `icon_name`, and `
|
|
387
|
+
> AppImage packages require the `url` field. The `name`, `icon_name`, `categories`, and `mime_types` fields are optional.
|
|
383
388
|
> The `name` field defaults to the package name, `icon_name` enables desktop icon extraction when provided,
|
|
384
389
|
> and `categories` defaults to "Application".
|
|
385
390
|
|
|
@@ -16,10 +16,10 @@ import json
|
|
|
16
16
|
from jsonschema import validate, ValidationError
|
|
17
17
|
import os
|
|
18
18
|
import sys
|
|
19
|
-
from typing import ClassVar, Generic, TypeVar
|
|
19
|
+
from typing import ClassVar, Generic, TypeVar, TypedDict
|
|
20
20
|
import yaml
|
|
21
21
|
|
|
22
|
-
__version__ = "0.1
|
|
22
|
+
__version__ = "0.2.1"
|
|
23
23
|
|
|
24
24
|
def main(args: argparse.Namespace) -> None:
|
|
25
25
|
"""
|
|
@@ -189,6 +189,11 @@ PLATFORMS = {
|
|
|
189
189
|
|
|
190
190
|
T = TypeVar('T', bound='Package')
|
|
191
191
|
|
|
192
|
+
|
|
193
|
+
class MimeType(TypedDict):
|
|
194
|
+
type: str
|
|
195
|
+
default: bool
|
|
196
|
+
|
|
192
197
|
@dataclass(frozen=True)
|
|
193
198
|
class Package(ABC, Generic[T]):
|
|
194
199
|
factories: ClassVar[dict[str, type[Package]]] = {}
|
|
@@ -863,6 +868,20 @@ class AppImagePackage(Package, type='appimage'):
|
|
|
863
868
|
def create(cls, name: str, item: dict, platform: Platform) -> list[Package]:
|
|
864
869
|
url = item.get('url')
|
|
865
870
|
icon_name = item.get('icon_name')
|
|
871
|
+
mime_types: list[MimeType] = []
|
|
872
|
+
for mime_type in item.get('mime_types', []):
|
|
873
|
+
if isinstance(mime_type, str):
|
|
874
|
+
mime_types.append({
|
|
875
|
+
'type': mime_type,
|
|
876
|
+
'default': mime_type.startswith('x-scheme-handler/'),
|
|
877
|
+
})
|
|
878
|
+
else:
|
|
879
|
+
mime_type_name = mime_type.get('type')
|
|
880
|
+
mime_types.append({
|
|
881
|
+
'type': mime_type_name,
|
|
882
|
+
'default': mime_type.get('default', mime_type_name.startswith('x-scheme-handler/')),
|
|
883
|
+
})
|
|
884
|
+
mime_type_names = [mime_type['type'] for mime_type in mime_types]
|
|
866
885
|
|
|
867
886
|
if not url:
|
|
868
887
|
raise RuntimeError(f"AppImagePackage requires 'url' field.")
|
|
@@ -876,6 +895,10 @@ class AppImagePackage(Package, type='appimage'):
|
|
|
876
895
|
# Set up post_install commands for desktop integration
|
|
877
896
|
app_name = item.get('name', name)
|
|
878
897
|
destination = f"$HOME/.local/bin/{app_name}.AppImage"
|
|
898
|
+
desktop_file = f"{app_name}.desktop"
|
|
899
|
+
categories = item.get('categories', 'Application')
|
|
900
|
+
if isinstance(categories, str):
|
|
901
|
+
categories = [categories]
|
|
879
902
|
|
|
880
903
|
# Desktop file creation
|
|
881
904
|
desktop_entry = []
|
|
@@ -884,20 +907,30 @@ class AppImagePackage(Package, type='appimage'):
|
|
|
884
907
|
desktop_entry.append('StartupNotify=true')
|
|
885
908
|
desktop_entry.append('Type=Application')
|
|
886
909
|
desktop_entry.append('Terminal=false')
|
|
887
|
-
desktop_entry.append(f'Categories={";".join(
|
|
910
|
+
desktop_entry.append(f'Categories={";".join(categories)};')
|
|
888
911
|
if icon_name:
|
|
889
912
|
desktop_entry.append(f'Icon={icon_name}')
|
|
890
|
-
|
|
913
|
+
if mime_type_names:
|
|
914
|
+
desktop_entry.append(f'MimeType={";".join(mime_type_names)};')
|
|
915
|
+
desktop_entry.append(f'Exec=sh -c \'"{destination}" "$1"\' sh %u')
|
|
891
916
|
desktop_entry.append('')
|
|
892
917
|
|
|
893
918
|
post_install.append(
|
|
894
919
|
TeeCommand(
|
|
895
920
|
'\n'.join(desktop_entry),
|
|
896
|
-
destination=f"$HOME/.local/share/applications/{
|
|
921
|
+
destination=f"$HOME/.local/share/applications/{desktop_file}",
|
|
897
922
|
mkdir=True,
|
|
898
923
|
)
|
|
899
924
|
)
|
|
900
925
|
|
|
926
|
+
for mime_type in mime_types:
|
|
927
|
+
if mime_type.get('default', False):
|
|
928
|
+
post_install.append(
|
|
929
|
+
ShellCommand(
|
|
930
|
+
command=f'xdg-mime default {desktop_file} {mime_type["type"]}'
|
|
931
|
+
)
|
|
932
|
+
)
|
|
933
|
+
|
|
901
934
|
# Icon extraction if icon_name is provided
|
|
902
935
|
if icon_name:
|
|
903
936
|
extract_icons = []
|
|
@@ -544,6 +544,29 @@
|
|
|
544
544
|
}
|
|
545
545
|
]
|
|
546
546
|
},
|
|
547
|
+
"mime_types": {
|
|
548
|
+
"type": "array",
|
|
549
|
+
"items": {
|
|
550
|
+
"oneOf": [
|
|
551
|
+
{
|
|
552
|
+
"type": "string"
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"type": "object",
|
|
556
|
+
"required": ["type"],
|
|
557
|
+
"properties": {
|
|
558
|
+
"type": {
|
|
559
|
+
"type": "string"
|
|
560
|
+
},
|
|
561
|
+
"default": {
|
|
562
|
+
"type": "boolean"
|
|
563
|
+
}
|
|
564
|
+
},
|
|
565
|
+
"additionalProperties": false
|
|
566
|
+
}
|
|
567
|
+
]
|
|
568
|
+
}
|
|
569
|
+
},
|
|
547
570
|
"depends_on": {
|
|
548
571
|
"$ref": "#/definitions/dependencyList"
|
|
549
572
|
},
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
appimage:
|
|
2
|
+
- type: dnf
|
|
3
|
+
packages: [fuse, fuse-libs]
|
|
4
|
+
- type: apt
|
|
5
|
+
packages: [fuse, libfuse2]
|
|
6
|
+
|
|
7
|
+
duckstation:
|
|
8
|
+
- type: appimage
|
|
9
|
+
url: https://github.com/stenzek/duckstation/releases/download/latest/DuckStation-x64.AppImage
|
|
10
|
+
name: DuckStation
|
|
11
|
+
icon_name: org.duckstation.DuckStation
|
|
12
|
+
categories:
|
|
13
|
+
- Game
|
|
14
|
+
- Emulator
|
|
15
|
+
|
|
16
|
+
obsidian:
|
|
17
|
+
- type: appimage
|
|
18
|
+
url: https://github.com/obsidianmd/obsidian-releases/releases/download/v1.8.10/Obsidian-1.8.10.AppImage
|
|
19
|
+
name: Obsidian
|
|
20
|
+
mime_types:
|
|
21
|
+
- x-scheme-handler/obsidian
|
|
22
|
+
- application/x-obsidian-vault
|
|
23
|
+
- type: text/markdown
|
|
24
|
+
default: true
|
|
25
|
+
- type: x-scheme-handler/obsidian-dev
|
|
26
|
+
default: false
|
|
@@ -29,7 +29,7 @@ Type=Application
|
|
|
29
29
|
Terminal=false
|
|
30
30
|
Categories=Game;Emulator;
|
|
31
31
|
Icon=org.duckstation.DuckStation
|
|
32
|
-
Exec=sh -c "$HOME/.local/bin/DuckStation.AppImage"
|
|
32
|
+
Exec=sh -c '"$HOME/.local/bin/DuckStation.AppImage" "$1"' sh %u
|
|
33
33
|
EOF
|
|
34
34
|
|
|
35
35
|
(
|
|
@@ -39,3 +39,23 @@ EOF
|
|
|
39
39
|
cp -rv squashfs-root/usr/share/icons/hicolor/* "$HOME/.local/share/icons/hicolor/" 2>/dev/null || true
|
|
40
40
|
rm -rf "$TMP_DIR"
|
|
41
41
|
)
|
|
42
|
+
|
|
43
|
+
mkdir -p "$(dirname "$HOME/.local/bin/Obsidian.AppImage")"
|
|
44
|
+
curl -fsSL "https://github.com/obsidianmd/obsidian-releases/releases/download/v1.8.10/Obsidian-1.8.10.AppImage" -o "$HOME/.local/bin/Obsidian.AppImage" > /dev/null
|
|
45
|
+
chmod +x "$HOME/.local/bin/Obsidian.AppImage"
|
|
46
|
+
|
|
47
|
+
mkdir -p "$(dirname "$HOME/.local/share/applications/Obsidian.desktop")"
|
|
48
|
+
tee "$HOME/.local/share/applications/Obsidian.desktop" <<'EOF'
|
|
49
|
+
[Desktop Entry]
|
|
50
|
+
Name=Obsidian
|
|
51
|
+
StartupNotify=true
|
|
52
|
+
Type=Application
|
|
53
|
+
Terminal=false
|
|
54
|
+
Categories=Application;
|
|
55
|
+
MimeType=x-scheme-handler/obsidian;application/x-obsidian-vault;text/markdown;x-scheme-handler/obsidian-dev;
|
|
56
|
+
Exec=sh -c '"$HOME/.local/bin/Obsidian.AppImage" "$1"' sh %u
|
|
57
|
+
EOF
|
|
58
|
+
|
|
59
|
+
xdg-mime default Obsidian.desktop x-scheme-handler/obsidian
|
|
60
|
+
|
|
61
|
+
xdg-mime default Obsidian.desktop text/markdown
|
|
@@ -29,7 +29,7 @@ Type=Application
|
|
|
29
29
|
Terminal=false
|
|
30
30
|
Categories=Game;Emulator;
|
|
31
31
|
Icon=org.duckstation.DuckStation
|
|
32
|
-
Exec=sh -c "$HOME/.local/bin/DuckStation.AppImage"
|
|
32
|
+
Exec=sh -c '"$HOME/.local/bin/DuckStation.AppImage" "$1"' sh %u
|
|
33
33
|
EOF
|
|
34
34
|
|
|
35
35
|
(
|
|
@@ -39,3 +39,23 @@ EOF
|
|
|
39
39
|
cp -rv squashfs-root/usr/share/icons/hicolor/* "$HOME/.local/share/icons/hicolor/" 2>/dev/null || true
|
|
40
40
|
rm -rf "$TMP_DIR"
|
|
41
41
|
)
|
|
42
|
+
|
|
43
|
+
mkdir -p "$(dirname "$HOME/.local/bin/Obsidian.AppImage")"
|
|
44
|
+
curl -fsSL "https://github.com/obsidianmd/obsidian-releases/releases/download/v1.8.10/Obsidian-1.8.10.AppImage" -o "$HOME/.local/bin/Obsidian.AppImage" > /dev/null
|
|
45
|
+
chmod +x "$HOME/.local/bin/Obsidian.AppImage"
|
|
46
|
+
|
|
47
|
+
mkdir -p "$(dirname "$HOME/.local/share/applications/Obsidian.desktop")"
|
|
48
|
+
tee "$HOME/.local/share/applications/Obsidian.desktop" <<'EOF'
|
|
49
|
+
[Desktop Entry]
|
|
50
|
+
Name=Obsidian
|
|
51
|
+
StartupNotify=true
|
|
52
|
+
Type=Application
|
|
53
|
+
Terminal=false
|
|
54
|
+
Categories=Application;
|
|
55
|
+
MimeType=x-scheme-handler/obsidian;application/x-obsidian-vault;text/markdown;x-scheme-handler/obsidian-dev;
|
|
56
|
+
Exec=sh -c '"$HOME/.local/bin/Obsidian.AppImage" "$1"' sh %u
|
|
57
|
+
EOF
|
|
58
|
+
|
|
59
|
+
xdg-mime default Obsidian.desktop x-scheme-handler/obsidian
|
|
60
|
+
|
|
61
|
+
xdg-mime default Obsidian.desktop text/markdown
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
appimage:
|
|
2
|
-
- type: dnf
|
|
3
|
-
packages: [fuse, fuse-libs]
|
|
4
|
-
- type: apt
|
|
5
|
-
packages: [fuse, libfuse2]
|
|
6
|
-
|
|
7
|
-
duckstation:
|
|
8
|
-
- type: appimage
|
|
9
|
-
url: https://github.com/stenzek/duckstation/releases/download/latest/DuckStation-x64.AppImage
|
|
10
|
-
name: DuckStation
|
|
11
|
-
icon_name: org.duckstation.DuckStation
|
|
12
|
-
categories:
|
|
13
|
-
- Game
|
|
14
|
-
- Emulator
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|