machineconfig 8.12__py3-none-any.whl → 8.14__py3-none-any.whl
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.
Potentially problematic release.
This version of machineconfig might be problematic. Click here for more details.
- machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1 +1 -1
- machineconfig/scripts/python/croshell.py +5 -5
- machineconfig/scripts/python/env_manager/env_manager_tui.py +1 -1
- machineconfig/scripts/python/env_manager/path_manager_tui.py +1 -1
- machineconfig/scripts/python/helpers_devops/cli_repos.py +3 -3
- machineconfig/scripts/python/helpers_devops/cli_self.py +16 -8
- machineconfig/scripts/python/helpers_devops/run_script.py +49 -37
- machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py +1 -1
- machineconfig/scripts/python/helpers_utils/python.py +4 -4
- machineconfig/scripts/python/interactive.py +13 -5
- machineconfig/setup_linux/web_shortcuts/interactive.sh +10 -10
- machineconfig/setup_windows/web_shortcuts/interactive.ps1 +10 -10
- machineconfig/utils/code.py +47 -33
- machineconfig/utils/options.py +1 -1
- machineconfig/utils/ssh.py +4 -4
- machineconfig/utils/ssh_utils/abc.py +1 -1
- machineconfig/utils/ssh_utils/copy_from_here.py +2 -2
- machineconfig/utils/ssh_utils/utils.py +2 -2
- {machineconfig-8.12.dist-info → machineconfig-8.14.dist-info}/METADATA +1 -1
- {machineconfig-8.12.dist-info → machineconfig-8.14.dist-info}/RECORD +23 -24
- machineconfig/jobs/scripts/bash_scripts/mint_keyboard_shortcuts.sh +0 -30
- {machineconfig-8.12.dist-info → machineconfig-8.14.dist-info}/WHEEL +0 -0
- {machineconfig-8.12.dist-info → machineconfig-8.14.dist-info}/entry_points.txt +0 -0
- {machineconfig-8.12.dist-info → machineconfig-8.14.dist-info}/top_level.txt +0 -0
|
@@ -7,7 +7,7 @@ $user = ''
|
|
|
7
7
|
$sharePath = ''
|
|
8
8
|
$driveLetter = ''
|
|
9
9
|
|
|
10
|
-
uv run --python 3.14 --with "machineconfig>=8.
|
|
10
|
+
uv run --python 3.14 --with "machineconfig>=8.14" python -m machineconfig.scripts.python.mount_ssh
|
|
11
11
|
|
|
12
12
|
net use T: \\sshfs.kr\$user@$host.local
|
|
13
13
|
# this worked: net use T: \\sshfs\alex@alex-p51s-5.local
|
|
@@ -134,8 +134,8 @@ def croshell(
|
|
|
134
134
|
fire_line = f"uv run {uv_python_line} {user_uv_with_line} {uv_project_line} --with visidata,pyarrow vd {str(file_obj)}"
|
|
135
135
|
elif marimo:
|
|
136
136
|
if Path.home().joinpath("code/machineconfig").exists():
|
|
137
|
-
requirements = f"""{user_uv_with_line} {uv_project_line} --with marimo """
|
|
138
|
-
else: requirements = f"""{uv_python_line} {user_uv_with_line} {uv_project_line} --with "marimo,cowsay,machineconfig[plot]>=8.
|
|
137
|
+
requirements = f"""{user_uv_with_line} {uv_project_line} --with marimo,sqlglot """
|
|
138
|
+
else: requirements = f"""{uv_python_line} {user_uv_with_line} {uv_project_line} --with "marimo,sqlglot,cowsay,machineconfig[plot]>=8.14" """
|
|
139
139
|
fire_line = f"""
|
|
140
140
|
cd {str(pyfile.parent)}
|
|
141
141
|
uv run {uv_python_line} --with "marimo" marimo convert {pyfile.name} -o marimo_nb.py
|
|
@@ -144,7 +144,7 @@ uv run {requirements} marimo edit --host 0.0.0.0 marimo_nb.py
|
|
|
144
144
|
elif jupyter:
|
|
145
145
|
if Path.home().joinpath("code/machineconfig").exists():
|
|
146
146
|
requirements = f"""{user_uv_with_line} {uv_project_line} --with jupyterlab """
|
|
147
|
-
else: requirements = f"""{user_uv_with_line} {uv_project_line} --with "cowsay,machineconfig[plot]>=8.
|
|
147
|
+
else: requirements = f"""{user_uv_with_line} {uv_project_line} --with "cowsay,machineconfig[plot]>=8.14" """
|
|
148
148
|
fire_line = f"uv run {requirements} {uv_project_line} jupyter-lab {str(nb_target)}"
|
|
149
149
|
elif vscode:
|
|
150
150
|
user_uv_add = f"uv add {uv_with}" if uv_with is not None else ""
|
|
@@ -152,7 +152,7 @@ uv run {requirements} marimo edit --host 0.0.0.0 marimo_nb.py
|
|
|
152
152
|
cd {str(pyfile.parent)}
|
|
153
153
|
uv init {uv_python_line}
|
|
154
154
|
uv venv
|
|
155
|
-
uv add "cowsay,machineconfig[plot]>=8.
|
|
155
|
+
uv add "cowsay,machineconfig[plot]>=8.14"
|
|
156
156
|
uv add {user_uv_add}
|
|
157
157
|
# code serve-web
|
|
158
158
|
code --new-window {str(pyfile)}
|
|
@@ -162,7 +162,7 @@ code --new-window {str(pyfile)}
|
|
|
162
162
|
else: profile = ""
|
|
163
163
|
if Path.home().joinpath("code/machineconfig").exists():
|
|
164
164
|
ve_line = f"""{user_uv_with_line} {uv_project_line} """
|
|
165
|
-
else: ve_line = f"""{uv_python_line} {user_uv_with_line} {uv_project_line} --with "cowsay,machineconfig[plot]>=8.
|
|
165
|
+
else: ve_line = f"""{uv_python_line} {user_uv_with_line} {uv_project_line} --with "cowsay,machineconfig[plot]>=8.14" """
|
|
166
166
|
fire_line = f"uv run {ve_line} {interpreter} {interactivity} {profile} {str(pyfile)}"
|
|
167
167
|
|
|
168
168
|
from machineconfig.utils.code import exit_then_run_shell_script
|
|
@@ -76,7 +76,7 @@ def count_lines_in_repo(repo_path: Annotated[str, typer.Argument(..., help="Path
|
|
|
76
76
|
from machineconfig.scripts.python.helpers_repos import repo_analyzer_1
|
|
77
77
|
repo_analyzer_1.count_historical_line_edits(repo_path=repo_path)
|
|
78
78
|
from machineconfig.utils.code import run_lambda_function
|
|
79
|
-
run_lambda_function(lambda: func(repo_path=repo_path), uv_project_dir=None, uv_with=["machineconfig>=8.
|
|
79
|
+
run_lambda_function(lambda: func(repo_path=repo_path), uv_project_dir=None, uv_with=["machineconfig>=8.14"])
|
|
80
80
|
|
|
81
81
|
|
|
82
82
|
def print_python_files_by_size(repo_path: Annotated[str, typer.Argument(..., help="Path to the git repository")]):
|
|
@@ -84,7 +84,7 @@ def print_python_files_by_size(repo_path: Annotated[str, typer.Argument(..., hel
|
|
|
84
84
|
from machineconfig.scripts.python.helpers_repos.repo_analyzer_2 import print_python_files_by_size_impl
|
|
85
85
|
print_python_files_by_size_impl(repo_path=repo_path)
|
|
86
86
|
from machineconfig.utils.code import run_lambda_function
|
|
87
|
-
run_lambda_function(lambda: func(repo_path=repo_path), uv_project_dir=None, uv_with=["machineconfig[plot]>=8.
|
|
87
|
+
run_lambda_function(lambda: func(repo_path=repo_path), uv_project_dir=None, uv_with=["machineconfig[plot]>=8.14"])
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
def analyze_repo_development(repo_path: Annotated[str, typer.Argument(..., help="Path to the git repository")]):
|
|
@@ -92,7 +92,7 @@ def analyze_repo_development(repo_path: Annotated[str, typer.Argument(..., help=
|
|
|
92
92
|
from machineconfig.scripts.python.helpers_repos.repo_analyzer_2 import analyze_over_time
|
|
93
93
|
analyze_over_time(repo_path=repo_path)
|
|
94
94
|
from machineconfig.utils.code import run_lambda_function
|
|
95
|
-
run_lambda_function(lambda: func(repo_path=repo_path), uv_project_dir=None, uv_with=["machineconfig[plot]>=8.
|
|
95
|
+
run_lambda_function(lambda: func(repo_path=repo_path), uv_project_dir=None, uv_with=["machineconfig[plot]>=8.14"])
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
def gource_viz(
|
|
@@ -94,18 +94,26 @@ uv tool install --upgrade machineconfig
|
|
|
94
94
|
create_links_export.main_public_from_parser(method="copy", on_conflict="overwrite-default-path", which="all", interactive=False)
|
|
95
95
|
|
|
96
96
|
|
|
97
|
-
def install(
|
|
97
|
+
def install(copy_assets: Annotated[bool, typer.Option("--copy-assets/--no-assets-copy", "-a/-na", help="Copy (overwrite) assets to the machine after the update")] = True,
|
|
98
|
+
dev: Annotated[bool, typer.Option("--dev", "-d", help="Install from local development code instead of PyPI")] = False,
|
|
99
|
+
):
|
|
98
100
|
"""📋 CLONE machienconfig locally and incorporate to shell profile for faster execution and nightly updates."""
|
|
99
|
-
from machineconfig.utils.code import run_shell_script,
|
|
101
|
+
from machineconfig.utils.code import run_shell_script, get_uv_command
|
|
100
102
|
from pathlib import Path
|
|
101
103
|
import platform
|
|
102
|
-
|
|
104
|
+
if dev and not Path.home().joinpath("code/machineconfig").exists():
|
|
105
|
+
# clone: https://github.com/thisismygitrepo/machineconfig.git
|
|
106
|
+
import git
|
|
107
|
+
repo_parent = Path.home().joinpath("code")
|
|
108
|
+
repo_parent.mkdir(parents=True, exist_ok=True)
|
|
109
|
+
git.Repo.clone_from("https://github.com/thisismygitrepo/machineconfig.git", str(repo_parent.joinpath("machineconfig")))
|
|
110
|
+
uv_command = get_uv_command(platform=platform.system())
|
|
103
111
|
if Path.home().joinpath("code/machineconfig").exists():
|
|
104
|
-
run_shell_script(f""" {
|
|
112
|
+
run_shell_script(f""" {uv_command} tool install --upgrade --editable "{str(Path.home().joinpath("code/machineconfig"))}" """)
|
|
105
113
|
else:
|
|
106
|
-
run_shell_script(rf""" {
|
|
107
|
-
|
|
108
|
-
|
|
114
|
+
run_shell_script(rf""" {uv_command} tool install --upgrade "machineconfig>=8.14" """)
|
|
115
|
+
if copy_assets:
|
|
116
|
+
from machineconfig.profile.create_shell_profile import create_default_shell_profile
|
|
109
117
|
create_default_shell_profile() # involves copying assets too
|
|
110
118
|
|
|
111
119
|
|
|
@@ -128,7 +136,7 @@ def navigate():
|
|
|
128
136
|
path = Path(navigator.__file__).resolve().parent.joinpath("devops_navigator.py")
|
|
129
137
|
from machineconfig.utils.code import exit_then_run_shell_script
|
|
130
138
|
if Path.home().joinpath("code/machineconfig").exists(): executable = f"""--project "{str(Path.home().joinpath("code/machineconfig"))}" --with textual"""
|
|
131
|
-
else: executable = """--with "machineconfig>=8.
|
|
139
|
+
else: executable = """--with "machineconfig>=8.14,textual" """
|
|
132
140
|
exit_then_run_shell_script(f"""uv run {executable} {path}""")
|
|
133
141
|
|
|
134
142
|
def readme():
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
Recursively Searched Predefined Directories:
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
*
|
|
8
|
+
* 'private' : $HOME/dotfiles/scripts
|
|
9
9
|
|
|
10
|
-
*
|
|
10
|
+
* 'public' : $HOME/.config/machineconfig/scripts
|
|
11
11
|
|
|
12
|
-
*
|
|
12
|
+
* 'library' : $MACHINECONFIG_LIBRARY_ROOT/jobs/scripts
|
|
13
13
|
|
|
14
|
-
*
|
|
14
|
+
* 'dynamic' : fetched from GitHub repository on the fly (relies on latest commit, rather than the version currently installed)
|
|
15
|
+
|
|
16
|
+
* 'custom' : custom directories from comma separated entry 'scripts' under 'general' section @ ~/dotfiles/machineconfig/defaults.ini
|
|
15
17
|
|
|
16
18
|
"""
|
|
17
19
|
|
|
@@ -22,7 +24,7 @@ from typing import Annotated, Optional, Literal
|
|
|
22
24
|
|
|
23
25
|
|
|
24
26
|
def run_py_script(name: Annotated[str, typer.Argument(help="Name of script to run, e.g., 'a' for a.py, or command to execute")] = "",
|
|
25
|
-
where: Annotated[Literal["all", "a", "private", "p", "public", "b", "library", "l", "dynamic", "d"], typer.Option("--where", "-w", help="Where to look for the script")] = "all",
|
|
27
|
+
where: Annotated[Literal["all", "a", "private", "p", "public", "b", "library", "l", "dynamic", "d", "custom", "c"], typer.Option("--where", "-w", help="Where to look for the script")] = "all",
|
|
26
28
|
interactive: Annotated[bool, typer.Option(..., "--interactive", "-i", help="Interactive selection of scripts to run")] = False,
|
|
27
29
|
command: Annotated[Optional[bool], typer.Option(..., "--command", "-c", help="Run as command")] = False,
|
|
28
30
|
# use_machineconfig_env: Annotated[bool, typer.Option(..., "--use-machineconfig-env/--no-use-machineconfig-env", "-m/-nm", help="Whether to use the machineconfig python environment")] = False
|
|
@@ -45,15 +47,29 @@ def run_py_script(name: Annotated[str, typer.Argument(help="Name of script to ru
|
|
|
45
47
|
else:
|
|
46
48
|
raise RuntimeError(f"File '{name}' is not a python (.py) file.")
|
|
47
49
|
|
|
48
|
-
from machineconfig.utils.source_of_truth import CONFIG_ROOT, LIBRARY_ROOT
|
|
50
|
+
from machineconfig.utils.source_of_truth import CONFIG_ROOT, LIBRARY_ROOT, DEFAULTS_PATH
|
|
49
51
|
private_root = Path.home().joinpath("dotfiles/scripts") # local directory
|
|
50
52
|
public_root = CONFIG_ROOT.joinpath("scripts") # local machineconfig directory
|
|
51
53
|
library_root = LIBRARY_ROOT.joinpath("jobs", "scripts")
|
|
52
54
|
|
|
55
|
+
def get_custom_roots() -> list[Path]:
|
|
56
|
+
custom_roots: list[Path] = []
|
|
57
|
+
if DEFAULTS_PATH.is_file():
|
|
58
|
+
from configparser import ConfigParser
|
|
59
|
+
config = ConfigParser()
|
|
60
|
+
config.read(DEFAULTS_PATH)
|
|
61
|
+
if config.has_section("general") and config.has_option("general", "scripts"):
|
|
62
|
+
custom_dirs = config.get("general", "scripts").split(",")
|
|
63
|
+
for custom_dir in custom_dirs:
|
|
64
|
+
custom_path = Path(custom_dir.strip()).expanduser().resolve()
|
|
65
|
+
if custom_path.is_dir():
|
|
66
|
+
custom_roots.append(custom_path)
|
|
67
|
+
return custom_roots
|
|
68
|
+
|
|
53
69
|
roots: list[Path] = []
|
|
54
70
|
match where:
|
|
55
71
|
case "all" | "a":
|
|
56
|
-
roots = [private_root, public_root, library_root]
|
|
72
|
+
roots = [private_root, public_root, library_root] + get_custom_roots()
|
|
57
73
|
case "private" | "p":
|
|
58
74
|
roots = [private_root]
|
|
59
75
|
case "public" | "b":
|
|
@@ -62,42 +78,37 @@ def run_py_script(name: Annotated[str, typer.Argument(help="Name of script to ru
|
|
|
62
78
|
roots = [library_root]
|
|
63
79
|
case "dynamic" | "d":
|
|
64
80
|
roots = []
|
|
81
|
+
case "custom" | "c":
|
|
82
|
+
roots = get_custom_roots()
|
|
65
83
|
|
|
66
84
|
suffixes: list[str]
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
suffixes = [".py", ".bat", ".cmd", ".ps1"]
|
|
70
|
-
elif platform.system() == "Darwin" or platform.system() == "Linux":
|
|
71
|
-
suffixes = [".py", ".sh"]
|
|
85
|
+
if "." in name:
|
|
86
|
+
suffixes = [""]
|
|
72
87
|
else:
|
|
73
|
-
|
|
88
|
+
import platform
|
|
89
|
+
if platform.system() == "Windows":
|
|
90
|
+
suffixes = [".py", ".bat", ".cmd", ".ps1"]
|
|
91
|
+
elif platform.system() == "Darwin" or platform.system() == "Linux":
|
|
92
|
+
suffixes = [""] # files without suffix could be shell scripts, and that already cover files with .sh suffix without duplications
|
|
93
|
+
else:
|
|
94
|
+
suffixes = [".py"]
|
|
74
95
|
|
|
75
96
|
# Finding target file
|
|
76
97
|
target_file: Optional[Path] = None
|
|
77
98
|
potential_matches: list[Path] = []
|
|
78
99
|
for a_root in roots:
|
|
79
100
|
for a_suffix in suffixes:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if name != "":
|
|
87
|
-
candidates += [a_file for a_file in a_root.rglob(f"*{name}*") if a_file.is_file()]
|
|
88
|
-
# print(candidates)
|
|
89
|
-
if len(candidates) == 1 and candidates[0].stem == name.split(".")[0]: # perfect match with name at least.
|
|
90
|
-
target_file = candidates[0]
|
|
91
|
-
else:
|
|
92
|
-
potential_matches += candidates
|
|
93
|
-
# print(target_file)
|
|
94
|
-
|
|
95
|
-
if target_file is None and where in ["all", "dynamic"] and not interactive:
|
|
101
|
+
if a_root.joinpath(f"{name}{a_suffix}").is_file():
|
|
102
|
+
target_file = a_root.joinpath(f"{name}{a_suffix}")
|
|
103
|
+
break # perfect match
|
|
104
|
+
potential_matches += [a_file for a_file in a_root.rglob(f"*{name}*{a_suffix}") if a_file.is_file()]
|
|
105
|
+
|
|
106
|
+
if target_file is None and where in ["dynamic", "d"] and not interactive:
|
|
96
107
|
# src/machineconfig/jobs/scripts/python_scripts/a.py
|
|
97
108
|
if "." in name:
|
|
98
109
|
resolved_names: list[str] = [name]
|
|
99
110
|
else:
|
|
100
|
-
resolved_names = [f"{name}{a_suffix}" for a_suffix in
|
|
111
|
+
resolved_names = [f"{name}{a_suffix}" for a_suffix in [".py", ".sh", "", ".ps1", ".bat", ".cmd"]]
|
|
101
112
|
for a_resolved_name in resolved_names:
|
|
102
113
|
try:
|
|
103
114
|
url = f"""https://raw.githubusercontent.com/thisismygitrepo/machineconfig/refs/heads/main/src/machineconfig/jobs/scripts_dynamic/{a_resolved_name}"""
|
|
@@ -115,9 +126,11 @@ def run_py_script(name: Annotated[str, typer.Argument(help="Name of script to ru
|
|
|
115
126
|
pass
|
|
116
127
|
|
|
117
128
|
if target_file is None:
|
|
118
|
-
print(f"
|
|
129
|
+
print(f"Warning: Could not find script '{name}'. Checked {len(potential_matches)} candidate files, trying interactively:")
|
|
119
130
|
from machineconfig.utils.options import choose_from_options
|
|
120
|
-
options = ["/".join(p.parts[-3:]) for p in potential_matches]
|
|
131
|
+
# options = ["/".join(p.parts[-3:]) for p in potential_matches]
|
|
132
|
+
|
|
133
|
+
options = potential_matches
|
|
121
134
|
chosen_file_part = choose_from_options(options, multi=False, msg="Select the script to run:", tv=True)
|
|
122
135
|
for an_option, a_path in zip(options, potential_matches):
|
|
123
136
|
if chosen_file_part == an_option:
|
|
@@ -128,13 +141,12 @@ def run_py_script(name: Annotated[str, typer.Argument(help="Name of script to ru
|
|
|
128
141
|
|
|
129
142
|
print(f"✅ Found script at: {target_file}")
|
|
130
143
|
if target_file.suffix == ".py":
|
|
131
|
-
from machineconfig.utils.code import
|
|
132
|
-
|
|
133
|
-
shell_script, _shell_script_path = get_uv_command_executing_python_script(python_script=script_content, uv_project_dir=None, uv_with=None, prepend_print=False)
|
|
144
|
+
from machineconfig.utils.code import get_uv_command_executing_python_file, exit_then_run_shell_script
|
|
145
|
+
shell_script = get_uv_command_executing_python_file(python_file=str(target_file), uv_project_dir=None, uv_with=None, prepend_print=False)
|
|
134
146
|
exit_then_run_shell_script(script=shell_script)
|
|
135
147
|
else:
|
|
136
|
-
from machineconfig.utils.code import
|
|
137
|
-
|
|
148
|
+
from machineconfig.utils.code import run_shell_file
|
|
149
|
+
run_shell_file(script_path=str(target_file), clean_env=False)
|
|
138
150
|
|
|
139
151
|
|
|
140
152
|
def copy_script_to_local(name: Annotated[str, typer.Argument(help="Name of the temporary python script to copy, e.g., 'a' for a.py")],
|
|
@@ -105,7 +105,7 @@ git pull originEnc master
|
|
|
105
105
|
uv_project_dir = f"""{str(Path.home().joinpath("code/machineconfig"))}"""
|
|
106
106
|
uv_with = None
|
|
107
107
|
else:
|
|
108
|
-
uv_with = ["machineconfig>=8.
|
|
108
|
+
uv_with = ["machineconfig>=8.14"]
|
|
109
109
|
uv_project_dir = None
|
|
110
110
|
|
|
111
111
|
import tempfile
|
|
@@ -18,7 +18,7 @@ def tui_env(which: Annotated[Literal["PATH", "p", "ENV", "e"], typer.Argument(he
|
|
|
18
18
|
uv_with = ["textual"]
|
|
19
19
|
uv_project_dir = None
|
|
20
20
|
if not Path.home().joinpath("code/machineconfig").exists():
|
|
21
|
-
uv_with.append("machineconfig>=8.
|
|
21
|
+
uv_with.append("machineconfig>=8.14")
|
|
22
22
|
else:
|
|
23
23
|
uv_project_dir = str(Path.home().joinpath("code/machineconfig"))
|
|
24
24
|
run_shell_script(
|
|
@@ -147,10 +147,10 @@ class MachineSpecs(TypedDict):
|
|
|
147
147
|
def get_machine_specs() -> MachineSpecs:
|
|
148
148
|
"""Write print and return the local machine specs."""
|
|
149
149
|
import platform
|
|
150
|
-
from machineconfig.utils.code import
|
|
150
|
+
from machineconfig.utils.code import get_uv_command
|
|
151
151
|
|
|
152
|
-
|
|
153
|
-
command = f"""{
|
|
152
|
+
uv_cmd = get_uv_command(platform=platform.system()) # type: ignore
|
|
153
|
+
command = f"""{uv_cmd} run --with distro python -c "import distro; print(distro.name(pretty=True))" """
|
|
154
154
|
import subprocess
|
|
155
155
|
from pathlib import Path
|
|
156
156
|
import socket
|
|
@@ -12,7 +12,6 @@ for better user experience with checkbox selections.
|
|
|
12
12
|
# $res = ls
|
|
13
13
|
# $name = $res[0].Name
|
|
14
14
|
# mv $backup_folder $name
|
|
15
|
-
#
|
|
16
15
|
|
|
17
16
|
|
|
18
17
|
"""
|
|
@@ -71,6 +70,14 @@ def display_dotfiles_instructions() -> None:
|
|
|
71
70
|
header_text = Text("DOTFILES MIGRATION", style="bold yellow")
|
|
72
71
|
subtitle_text = Text("Configuration transfer options", style="italic yellow")
|
|
73
72
|
instructions = """
|
|
73
|
+
On remote, run:
|
|
74
|
+
rm ~/dotfiles.zip || true
|
|
75
|
+
ouch c ~/dotfiles dotfiles.zip
|
|
76
|
+
uvx wormhole-magic send ~/dotfiles.zip
|
|
77
|
+
On new machine, run:
|
|
78
|
+
cd $HOME; uvx wormhole-magic receive dotfiles.zip --accept-file
|
|
79
|
+
ouch d ~/dotfiles.zip
|
|
80
|
+
|
|
74
81
|
🖱️ [bold blue]Method 1: USING MOUSE WITHOUT KB OR BROWSER SHARE[/bold blue]
|
|
75
82
|
On original machine, run:
|
|
76
83
|
[dim]cd ~/dotfiles/creds/msc
|
|
@@ -85,8 +92,9 @@ def display_dotfiles_instructions() -> None:
|
|
|
85
92
|
|
|
86
93
|
☁️ [bold blue]Method 3: USING INTERNET SECURE SHARE[/bold blue]
|
|
87
94
|
[dim]cd ~
|
|
88
|
-
|
|
89
|
-
(requires symlinks to be created first)
|
|
95
|
+
cloud copy SHARE_URL . --config ss[/dim]
|
|
96
|
+
(requires symlinks to be created first)
|
|
97
|
+
"""
|
|
90
98
|
console.print(Panel(f"📂 {header_text}\n{subtitle_text}\n\n{instructions}", border_style="yellow", padding=(1, 2)))
|
|
91
99
|
|
|
92
100
|
|
|
@@ -122,7 +130,7 @@ def execute_installations(selected_options: list[str]) -> None:
|
|
|
122
130
|
if "install_machineconfig" in selected_options:
|
|
123
131
|
console.print(Panel("🐍 [bold green]PYTHON ENVIRONMENT[/bold green]\n[italic]Virtual environment setup[/italic]", border_style="green"))
|
|
124
132
|
from machineconfig.scripts.python.helpers_devops.cli_self import install
|
|
125
|
-
install()
|
|
133
|
+
install(copy_assets=True, dev=False)
|
|
126
134
|
|
|
127
135
|
if "install_ssh_server" in selected_options:
|
|
128
136
|
console.print(Panel("🔒 [bold red]SSH SERVER[/bold red]\n[italic]Remote access setup[/italic]", border_style="red"))
|
|
@@ -155,7 +163,7 @@ Set-Service -Name sshd -StartupType 'Automatic'"""
|
|
|
155
163
|
if "retrieve_repositories" in selected_options:
|
|
156
164
|
console.print(Panel("📚 [bold bright_magenta]REPOSITORIES[/bold bright_magenta]\n[italic]Project code retrieval[/italic]", border_style="bright_magenta"))
|
|
157
165
|
from machineconfig.scripts.python.helpers_devops import cli_repos
|
|
158
|
-
cli_repos.clone(directory=str(Path.home() / "code"), cloud=
|
|
166
|
+
cli_repos.clone(directory=str(Path.home() / "code"), cloud=None)
|
|
159
167
|
|
|
160
168
|
if "retrieve_data" in selected_options:
|
|
161
169
|
console.print(Panel("💾 [bold bright_cyan]DATA RETRIEVAL[/bold bright_cyan]\n[italic]Backup restoration[/italic]", border_style="bright_cyan"))
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
. <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_linux/uv.sh")
|
|
3
3
|
. <( curl -sSL "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/linux/wrap_mcfg")
|
|
4
4
|
|
|
5
|
-
alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
6
|
-
alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
7
|
-
alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
8
|
-
alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
9
|
-
alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
10
|
-
alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
11
|
-
alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
12
|
-
alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
13
|
-
alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
14
|
-
alias msearch='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.
|
|
5
|
+
alias devops='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" devops'
|
|
6
|
+
alias cloud='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" cloud'
|
|
7
|
+
alias agents='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" agents'
|
|
8
|
+
alias sessions='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" sessions'
|
|
9
|
+
alias ftpx='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" ftpx'
|
|
10
|
+
alias fire='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" fire'
|
|
11
|
+
alias croshell='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" croshell'
|
|
12
|
+
alias utils='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" utils'
|
|
13
|
+
alias terminal='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" terminal'
|
|
14
|
+
alias msearch='$HOME/.local/bin/uvx --python 3.14 --from "machineconfig>=8.14" msearch'
|
|
15
15
|
|
|
16
16
|
alias d='wrap_in_shell_script devops'
|
|
17
17
|
alias c='wrap_in_shell_script cloud'
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/setup_windows/uv.ps1").Content
|
|
4
4
|
iex (iwr "https://raw.githubusercontent.com/thisismygitrepo/machineconfig/main/src/machineconfig/scripts/windows/wrap_mcfg.ps1").Content
|
|
5
5
|
|
|
6
|
-
function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
7
|
-
function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
8
|
-
function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
9
|
-
function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
10
|
-
function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
11
|
-
function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
12
|
-
function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
13
|
-
function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
14
|
-
function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
15
|
-
function msearch { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.
|
|
6
|
+
function devops { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" devops $args }
|
|
7
|
+
function cloud { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" cloud $args }
|
|
8
|
+
function agents { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" agents $args }
|
|
9
|
+
function sessions { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" sessions $args }
|
|
10
|
+
function ftpx { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" ftpx $args }
|
|
11
|
+
function fire { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" fire $args }
|
|
12
|
+
function croshell { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" croshell $args }
|
|
13
|
+
function utils { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" utils $args }
|
|
14
|
+
function terminal { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" terminal $args }
|
|
15
|
+
function msearch { & "$HOME\.local\bin\uvx.exe" --python 3.14 --from "machineconfig>=8.14" msearch $args }
|
|
16
16
|
|
|
17
17
|
function d { wrap_in_shell_script devops @args }
|
|
18
18
|
function c { wrap_in_shell_script cloud @args }
|
machineconfig/utils/code.py
CHANGED
|
@@ -4,15 +4,15 @@ from machineconfig.utils.accessories import randstr
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
def
|
|
7
|
+
def get_uv_command(platform: str) -> str:
|
|
8
8
|
res = cast(Literal["Windows", "windows", "nt", "Linux", "linux", "Darwin", "darwin", "macos"], platform)
|
|
9
9
|
match res:
|
|
10
10
|
case "Windows" | "windows" | "nt":
|
|
11
|
-
return """& "$env:USERPROFILE/.local/bin/uv"
|
|
11
|
+
return """& "$env:USERPROFILE/.local/bin/uv" """
|
|
12
12
|
case "Linux" | "linux" | "Darwin" | "darwin" | "macos":
|
|
13
|
-
return """$HOME/.local/bin/uv
|
|
13
|
+
return """$HOME/.local/bin/uv """
|
|
14
14
|
case _:
|
|
15
|
-
return """$HOME/.local/bin/uv
|
|
15
|
+
return """$HOME/.local/bin/uv """
|
|
16
16
|
|
|
17
17
|
def print_code(code: str, lexer: str, desc: str, subtitle: str = ""):
|
|
18
18
|
import platform
|
|
@@ -35,19 +35,8 @@ def print_code(code: str, lexer: str, desc: str, subtitle: str = ""):
|
|
|
35
35
|
print(f"--- End of {desc} ---")
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
def
|
|
39
|
-
|
|
40
|
-
# python file
|
|
41
|
-
python_file = Path.home().joinpath("tmp_results", "tmp_scripts", "python", randstr() + ".py")
|
|
42
|
-
python_file.parent.mkdir(parents=True, exist_ok=True)
|
|
43
|
-
if prepend_print:
|
|
44
|
-
from machineconfig.utils.meta import lambda_to_python_script
|
|
45
|
-
print_code_string = lambda_to_python_script(lambda: print_code(code=python_script, lexer="python", desc="Temporary Python Script", subtitle="Executing via shell script"),
|
|
46
|
-
in_global=True, import_module=False)
|
|
47
|
-
python_file.write_text(print_code_string + "\n" + python_script, encoding="utf-8")
|
|
48
|
-
else:
|
|
49
|
-
python_file.write_text(python_script, encoding="utf-8")
|
|
50
|
-
|
|
38
|
+
def get_uv_command_executing_python_file(python_file: str, uv_with: Optional[list[str]], uv_project_dir: Optional[str],
|
|
39
|
+
prepend_print: bool = True, ) -> str:
|
|
51
40
|
# shell script
|
|
52
41
|
if uv_with is not None and len(uv_with) > 0:
|
|
53
42
|
if prepend_print: uv_with.append("rich")
|
|
@@ -62,9 +51,24 @@ def get_uv_command_executing_python_script(python_script: str, uv_with: Optional
|
|
|
62
51
|
else:
|
|
63
52
|
uv_project_dir_arg = ""
|
|
64
53
|
import platform
|
|
65
|
-
uv_run = get_uv_run_command(platform=platform.system())
|
|
66
|
-
shell_script = f"""{uv_run} {uv_with_arg} {uv_project_dir_arg} {str(python_file)} """
|
|
67
54
|
|
|
55
|
+
uv_command = get_uv_command(platform=platform.system())
|
|
56
|
+
shell_script = f"""{uv_command} run {uv_with_arg} {uv_project_dir_arg} {str(python_file)} """
|
|
57
|
+
return shell_script
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def get_uv_command_executing_python_script(python_script: str, uv_with: Optional[list[str]], uv_project_dir: Optional[str],
|
|
61
|
+
prepend_print: bool = True, ) -> tuple[str, Path]:
|
|
62
|
+
python_file = Path.home().joinpath("tmp_results", "tmp_scripts", "python", randstr() + ".py")
|
|
63
|
+
python_file.parent.mkdir(parents=True, exist_ok=True)
|
|
64
|
+
if prepend_print:
|
|
65
|
+
from machineconfig.utils.meta import lambda_to_python_script
|
|
66
|
+
print_code_string = lambda_to_python_script(lambda: print_code(code=python_script, lexer="python", desc="Temporary Python Script", subtitle="Executing via shell script"),
|
|
67
|
+
in_global=True, import_module=False)
|
|
68
|
+
python_file.write_text(print_code_string + "\n" + python_script, encoding="utf-8")
|
|
69
|
+
else:
|
|
70
|
+
python_file.write_text(python_script, encoding="utf-8")
|
|
71
|
+
shell_script = get_uv_command_executing_python_file(python_file=str(python_file), uv_with=uv_with, uv_project_dir=uv_project_dir, prepend_print=prepend_print)
|
|
68
72
|
return shell_script, python_file
|
|
69
73
|
|
|
70
74
|
|
|
@@ -95,35 +99,44 @@ uv run {requirements} marimo edit --host 0.0.0.0 marimo_nb.py
|
|
|
95
99
|
exit_then_run_shell_script(fire_line)
|
|
96
100
|
|
|
97
101
|
|
|
98
|
-
def
|
|
99
|
-
import tempfile
|
|
102
|
+
def run_shell_file(script_path: str, clean_env: bool):
|
|
100
103
|
import platform
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
env = {} if clean_env else None
|
|
105
|
+
if platform.system() == "Windows":
|
|
106
|
+
import subprocess
|
|
107
|
+
proc = subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{script_path}"', check=True, shell=True, env=env)
|
|
108
|
+
elif platform.system() == "Linux" or platform.system() == "Darwin":
|
|
109
|
+
import subprocess
|
|
110
|
+
proc = subprocess.run(f"bash {str(script_path)}", check=True, shell=True, env=env)
|
|
111
|
+
else:
|
|
112
|
+
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
113
|
+
return proc
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def run_shell_script(script: str, display_script: bool = True, clean_env: bool = False) -> Any:
|
|
104
117
|
|
|
118
|
+
import platform
|
|
105
119
|
if platform.system() == "Windows":
|
|
106
120
|
suffix = ".ps1"
|
|
107
121
|
lexer = "powershell"
|
|
108
122
|
else:
|
|
109
123
|
suffix = ".sh"
|
|
110
124
|
lexer = "bash"
|
|
125
|
+
|
|
126
|
+
import tempfile
|
|
111
127
|
with tempfile.NamedTemporaryFile(mode='w', suffix=suffix, delete=False, encoding='utf-8') as temp_file:
|
|
112
128
|
temp_file.write(script)
|
|
113
129
|
temp_shell_script_path = Path(temp_file.name)
|
|
130
|
+
|
|
131
|
+
from rich.panel import Panel
|
|
132
|
+
from rich.syntax import Syntax
|
|
133
|
+
from rich.console import Console
|
|
114
134
|
console = Console()
|
|
115
135
|
if display_script:
|
|
116
136
|
from rich.syntax import Syntax
|
|
117
137
|
console.print(Panel(Syntax(code=script, lexer=lexer), title=f"📄 shell script @ {temp_shell_script_path}", subtitle="shell script being executed"), style="bold red")
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
import subprocess
|
|
121
|
-
proc = subprocess.run(f'powershell -ExecutionPolicy Bypass -File "{temp_shell_script_path}"', check=True, shell=True, env=env)
|
|
122
|
-
elif platform.system() == "Linux" or platform.system() == "Darwin":
|
|
123
|
-
import subprocess
|
|
124
|
-
proc = subprocess.run(f"bash {str(temp_shell_script_path)}", check=True, shell=True, env=env)
|
|
125
|
-
else:
|
|
126
|
-
raise NotImplementedError(f"Platform {platform.system()} not supported.")
|
|
138
|
+
|
|
139
|
+
proc = run_shell_file(script_path=str(temp_shell_script_path), clean_env=clean_env)
|
|
127
140
|
# console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_script_path}[/blue]")
|
|
128
141
|
if proc.returncode != 0:
|
|
129
142
|
console.print(f"❌ [red]Script execution failed with return code {proc.returncode}:[/red] [blue]{temp_shell_script_path}[/blue]")
|
|
@@ -131,6 +144,7 @@ def run_shell_script(script: str, display_script: bool = True, clean_env: bool =
|
|
|
131
144
|
console.print(f"✅ [green]Script executed successfully:[/green] [blue]{temp_shell_script_path}[/blue]")
|
|
132
145
|
else:
|
|
133
146
|
console.print(f"⚠️ [yellow]Script executed with warnings (return code {proc.returncode}):[/yellow] [blue]{temp_shell_script_path}[/blue]")
|
|
147
|
+
|
|
134
148
|
temp_shell_script_path.unlink(missing_ok=True)
|
|
135
149
|
console.print(f"🗑️ [blue]Temporary script deleted:[/blue] [green]{temp_shell_script_path}[/green]")
|
|
136
150
|
return proc
|
machineconfig/utils/options.py
CHANGED
|
@@ -35,7 +35,7 @@ def choose_from_options[T](options: Iterable[T], msg: str, multi: bool, custom_i
|
|
|
35
35
|
# the interactive session completes. Do not capture_output or redirect
|
|
36
36
|
# stdin/stderr here so `tv` stays attached to the terminal.
|
|
37
37
|
tv_out_path = options_txt_path.with_name(options_txt_path.stem + "_out.txt")
|
|
38
|
-
tv_cmd = f"""cat {options_txt_path} | tv --ansi true --source-output "{{strip_ansi}}" > {tv_out_path}"""
|
|
38
|
+
tv_cmd = f"""cat {options_txt_path} | tv --preview-command "bat -n --color=always '{{}}'" --preview-size 30 --ansi true --source-output "{{strip_ansi}}" > {tv_out_path} """
|
|
39
39
|
res = subprocess.run(tv_cmd, shell=True)
|
|
40
40
|
|
|
41
41
|
# If tv returned a non-zero code and there is no output file, treat it as an error.
|
machineconfig/utils/ssh.py
CHANGED
|
@@ -3,7 +3,7 @@ import os
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
import platform
|
|
5
5
|
from machineconfig.scripts.python.helpers_utils.python import MachineSpecs
|
|
6
|
-
from machineconfig.utils.code import
|
|
6
|
+
from machineconfig.utils.code import get_uv_command
|
|
7
7
|
import rich.console
|
|
8
8
|
from machineconfig.utils.terminal import Response
|
|
9
9
|
from machineconfig.utils.accessories import pprint, randstr
|
|
@@ -273,12 +273,12 @@ class SSH:
|
|
|
273
273
|
with_clause += ""
|
|
274
274
|
match on:
|
|
275
275
|
case "local":
|
|
276
|
-
|
|
276
|
+
uv_cmd = get_uv_command(platform=self.local_specs["system"])
|
|
277
277
|
case "remote":
|
|
278
|
-
|
|
278
|
+
uv_cmd = get_uv_command(platform=self.remote_specs["system"])
|
|
279
279
|
case _:
|
|
280
280
|
raise ValueError(f"Invalid value for 'on': {on}. Must be 'local' or 'remote'")
|
|
281
|
-
uv_cmd = f"""{
|
|
281
|
+
uv_cmd = f"""{uv_cmd} run {with_clause} python {py_path.relative_to(Path.home())}"""
|
|
282
282
|
return uv_cmd
|
|
283
283
|
|
|
284
284
|
def run_py_remotely(
|
|
@@ -5,7 +5,7 @@ from pathlib import Path
|
|
|
5
5
|
from machineconfig.utils.accessories import randstr
|
|
6
6
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
7
7
|
from machineconfig.utils.ssh_utils.abc import DEFAULT_PICKLE_SUBDIR
|
|
8
|
-
from machineconfig.utils.code import
|
|
8
|
+
from machineconfig.utils.code import get_uv_command
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def copy_from_here(
|
|
@@ -96,7 +96,7 @@ def copy_from_here(
|
|
|
96
96
|
remote_tmp_py = tmp_py_file.relative_to(Path.home()).as_posix()
|
|
97
97
|
self.copy_from_here(source_path=str(tmp_py_file), target_rel2home=None, compress_with_zip=False, recursive=False, overwrite_existing=True)
|
|
98
98
|
self.run_shell_cmd_on_remote(
|
|
99
|
-
command=f"""{
|
|
99
|
+
command=f"""{get_uv_command(platform=self.remote_specs['system'])} run python {remote_tmp_py}""",
|
|
100
100
|
verbose_output=False,
|
|
101
101
|
description=f"UNZIPPING {target_rel2home}",
|
|
102
102
|
strict_stderr=True,
|
|
@@ -3,7 +3,7 @@ from pathlib import Path
|
|
|
3
3
|
from machineconfig.utils.accessories import randstr
|
|
4
4
|
from machineconfig.utils.meta import lambda_to_python_script
|
|
5
5
|
from machineconfig.utils.ssh_utils.abc import MACHINECONFIG_VERSION, DEFAULT_PICKLE_SUBDIR
|
|
6
|
-
from machineconfig.utils.code import
|
|
6
|
+
from machineconfig.utils.code import get_uv_command
|
|
7
7
|
from typing import Union
|
|
8
8
|
|
|
9
9
|
|
|
@@ -36,7 +36,7 @@ def create_dir_and_check_if_exists(self: "SSH", path_rel2home: str, overwrite_ex
|
|
|
36
36
|
tmp_remote_path = ".tmp_pyfile.py"
|
|
37
37
|
self.sftp.put(localpath=str(tmp_py_file), remotepath=str(Path(self.remote_specs["home_dir"]).joinpath(tmp_remote_path)))
|
|
38
38
|
resp = self.run_shell_cmd_on_remote(
|
|
39
|
-
command=f"""{
|
|
39
|
+
command=f"""{get_uv_command(platform=self.remote_specs['system'])} run python {tmp_remote_path}""",
|
|
40
40
|
verbose_output=False,
|
|
41
41
|
description=f"Creating target dir {path_rel2home}",
|
|
42
42
|
strict_stderr=True,
|
|
@@ -89,7 +89,6 @@ machineconfig/jobs/installer/python_scripts/winget.py,sha256=hxid9fWGLiTsqVqAFxM
|
|
|
89
89
|
machineconfig/jobs/installer/python_scripts/yazi.py,sha256=HyFIqQ5i5oeHzruQ3Ymrt6NB670n-2AQGwFiZkLbOjs,4331
|
|
90
90
|
machineconfig/jobs/scripts/bash_scripts/android.sh,sha256=gzep6bBhK7FCBvGcXK0fdJCtkSfBOftt0aFyDZq_eMs,68
|
|
91
91
|
machineconfig/jobs/scripts/bash_scripts/lid.sh,sha256=nUw870lc5p8GA8KT3JI29ob2wKSVKzCvOHIxEjoSTOA,864
|
|
92
|
-
machineconfig/jobs/scripts/bash_scripts/mint_keyboard_shortcuts.sh,sha256=F5dbg0n9RHsKGPn8fIdZMn3p0RrHEkb8rWBGsdVGbus,1207
|
|
93
92
|
machineconfig/jobs/scripts/bash_scripts/mount_drive,sha256=zemKofv7hOmRN_V3qK0q580GkfWw3VdikyVVQyiu8j8,3514
|
|
94
93
|
machineconfig/jobs/scripts/bash_scripts/mount_nfs,sha256=bgP0NmplFZowg48J0KMkUSqteHYGB2PNmhAYvtPJhHk,1756
|
|
95
94
|
machineconfig/jobs/scripts/bash_scripts/mount_nw_drive,sha256=BqjGBCbwe5ZAsZDO3L0zHhh_gJfZy1CYOcqXA4Y-WkQ,2262
|
|
@@ -102,7 +101,7 @@ machineconfig/jobs/scripts/powershell_scripts/docker.ps1,sha256=M8NfsSxH8YlmY92J
|
|
|
102
101
|
machineconfig/jobs/scripts/powershell_scripts/mount_nfs.ps1,sha256=XrAdzpxE6a4OccSmWJ7YWHJTnsZK8uXnFE5j9GOPA20,2026
|
|
103
102
|
machineconfig/jobs/scripts/powershell_scripts/mount_nw.ps1,sha256=puxcfZc3ZCJerm8pj8OZGVoTYkhzp-h7oV-MrksSqIE,454
|
|
104
103
|
machineconfig/jobs/scripts/powershell_scripts/mount_smb.ps1,sha256=PzYWpIO9BpwXjdWlUQL9pnMRnOGNSkxfh4bHukJFme8,69
|
|
105
|
-
machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1,sha256=
|
|
104
|
+
machineconfig/jobs/scripts/powershell_scripts/mount_ssh.ps1,sha256=10lTsDiCY6uGrBiZ1844NTJ_jKtqtezOZTlMBG6A6mU,490
|
|
106
105
|
machineconfig/jobs/scripts/powershell_scripts/obs.ps1,sha256=3SNCjvkaaWMaN6JJAHDMvbvOIHw_zaXF74KalRimnE4,114
|
|
107
106
|
machineconfig/jobs/scripts/powershell_scripts/power_options.ps1,sha256=c7Hn94jBD5GWF29CxMhmNpuM0hgXTQgVJmIRR_7sdcY,182
|
|
108
107
|
machineconfig/jobs/scripts/powershell_scripts/share_cloud.cmd,sha256=exD7JCdxw2LqVjw2MKCYHbVZlEqmelXtwnATng-dhJ4,1028
|
|
@@ -128,12 +127,12 @@ machineconfig/scripts/nu/wrap_mcfg.nu,sha256=9heiUHVkHjI_AMXT5QJJixk7ZK_hJNV_A8l
|
|
|
128
127
|
machineconfig/scripts/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
129
128
|
machineconfig/scripts/python/agents.py,sha256=n8Z40QeRFjuYnmF_4ayL3pVOP5vpAYKMG0ZLy0XflhI,12070
|
|
130
129
|
machineconfig/scripts/python/cloud.py,sha256=BddtWa8Rg5AF2U22ha4pQ4IvcrKvfeDrmnI3hb0D4Pk,1415
|
|
131
|
-
machineconfig/scripts/python/croshell.py,sha256=
|
|
130
|
+
machineconfig/scripts/python/croshell.py,sha256=ToGdGc5766SV9F_FknvqodFY5L9iTAi3GJk9Z9QMmro,8471
|
|
132
131
|
machineconfig/scripts/python/devops.py,sha256=vngpKJnRS9Gj3FLeHn4ShTEhZWnUXkiUiTmBdNsK54A,3100
|
|
133
132
|
machineconfig/scripts/python/devops_navigator.py,sha256=UeqkY9_c22Ce9b1ksFGq-lNwaGCMMHL1LikPhP-QDt8,154
|
|
134
133
|
machineconfig/scripts/python/fire_jobs.py,sha256=CLGoLBLJXOc1EPK_-w0BPYC2WZsvEvR1on__a8ZxkJ0,14215
|
|
135
134
|
machineconfig/scripts/python/ftpx.py,sha256=WPRq1HSDcYPCbF9T-pgdepIDj_5Q4fhz4h0Vf_GeXG8,11181
|
|
136
|
-
machineconfig/scripts/python/interactive.py,sha256=
|
|
135
|
+
machineconfig/scripts/python/interactive.py,sha256=fmr3gp-KsjUU7Uh0xnKfs0FccGjqEyL_LnznhZvsENg,11814
|
|
137
136
|
machineconfig/scripts/python/mcfg_entry.py,sha256=PE23iE4NdSOTjFqHzRA6yu48XeZTZM9vgxhk8BAON-g,2797
|
|
138
137
|
machineconfig/scripts/python/msearch.py,sha256=EXM2U5WgngwJhLx0RPKYnoZ7hxeQZ12pcI3lsHUVR9E,3646
|
|
139
138
|
machineconfig/scripts/python/sessions.py,sha256=kDopndSXi-wk3nGipNtf9S655FP9JvAEnz8uRk7kuaM,12797
|
|
@@ -172,9 +171,9 @@ machineconfig/scripts/python/ai/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
172
171
|
machineconfig/scripts/python/ai/utils/generate_files.py,sha256=gx39nVkmZZskR4FZRUtgUiHR2Pzej_yfvF_CjCHK1fI,14520
|
|
173
172
|
machineconfig/scripts/python/ai/utils/vscode_tasks.py,sha256=OF8q4oKu53lJy8u36h3alHx3XmMhqHaaXZ-T5nr7b18,1481
|
|
174
173
|
machineconfig/scripts/python/env_manager/__init__.py,sha256=E4LAHbU1wo2dLjE36ntv8U7QNTe8TasujUAYK9SLvWk,6
|
|
175
|
-
machineconfig/scripts/python/env_manager/env_manager_tui.py,sha256=
|
|
174
|
+
machineconfig/scripts/python/env_manager/env_manager_tui.py,sha256=eqgRiFMAS8KmpkRudSIP72pRXbi0zPS7XkQvg6aTIXI,7055
|
|
176
175
|
machineconfig/scripts/python/env_manager/path_manager_backend.py,sha256=ZVGlGJALhg7zNABDdwXxL7MFbL2BXPebObipXSLGbic,1552
|
|
177
|
-
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=
|
|
176
|
+
machineconfig/scripts/python/env_manager/path_manager_tui.py,sha256=pi3eoez_wkeqbmaRQKU4dviZqKs93aDDtTkOwrPeLy0,6932
|
|
178
177
|
machineconfig/scripts/python/helpers/ast_search.py,sha256=-BFLZfJpYyj2CjUVrRigWf6xdfdorBfScJ33S2j9O2I,2515
|
|
179
178
|
machineconfig/scripts/python/helpers/qr_code.py,sha256=DLZwRI9j8g6qV6XngHEoiStqVYKmXhPjuA_sSTgvf88,5150
|
|
180
179
|
machineconfig/scripts/python/helpers/repo_rag.py,sha256=WxSLC99SBpnbUyIQjKiuraGgFk0qGzQ1dC9zSUc88hc,13702
|
|
@@ -218,15 +217,15 @@ machineconfig/scripts/python/helpers_devops/cli_config.py,sha256=zli4KuUqFFkVjEX
|
|
|
218
217
|
machineconfig/scripts/python/helpers_devops/cli_config_dotfile.py,sha256=KFIBpAaBtRn-nP1ILXZmyGlgCi4olKRohoF-HdHORaQ,4034
|
|
219
218
|
machineconfig/scripts/python/helpers_devops/cli_data.py,sha256=79Xvx7YnbueruEnl69hrDg2AhVxf_zCUdlVcKfeMGyQ,1774
|
|
220
219
|
machineconfig/scripts/python/helpers_devops/cli_nw.py,sha256=1R7xxP4wO7wZUvIzjrbzwx4Fe8_UsVCY68xAxnXaYbI,11510
|
|
221
|
-
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=
|
|
222
|
-
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=
|
|
220
|
+
machineconfig/scripts/python/helpers_devops/cli_repos.py,sha256=5Sy-lc8gzdik1rgM2RQpeMRKTu46DfoCaE1RrlM-Htg,13925
|
|
221
|
+
machineconfig/scripts/python/helpers_devops/cli_self.py,sha256=gznbz6DPDMUQQWh2E4NERav5NVqVtc3p185RlbpOFBU,9431
|
|
223
222
|
machineconfig/scripts/python/helpers_devops/cli_share_file.py,sha256=dYZPSI39iDUH69dRYszLIun7Wfn5lCG7stc70YX5Ni8,6417
|
|
224
223
|
machineconfig/scripts/python/helpers_devops/cli_share_server.py,sha256=FzMEUvZXGLMkndcvox_RiVkUKAPj9ElHKORa8iJcNCE,6506
|
|
225
224
|
machineconfig/scripts/python/helpers_devops/cli_share_terminal.py,sha256=5G0-qtqcnbVEpKPvHl1mzp-3uEx9fww3CRrpGv1T-f8,6169
|
|
226
225
|
machineconfig/scripts/python/helpers_devops/devops_backup_retrieve.py,sha256=Tyfz5S1QfY_nOhg-ROTp9eILNqYx_i1ootth34frbv0,5540
|
|
227
226
|
machineconfig/scripts/python/helpers_devops/devops_status.py,sha256=4CXWhuD0h_0VGQLKCNUxVl7pZBboq9jrgZazit1LbWs,20314
|
|
228
227
|
machineconfig/scripts/python/helpers_devops/devops_update_repos.py,sha256=kSln8_-Wn7Qu0NaKdt-QTN_bBVyTIAWHH8xVYKK-vCM,10133
|
|
229
|
-
machineconfig/scripts/python/helpers_devops/run_script.py,sha256=
|
|
228
|
+
machineconfig/scripts/python/helpers_devops/run_script.py,sha256=6PJSMdUFm1p7egPD2I3A9nVrjkgqk3tgBg5EMSLaeSM,8590
|
|
230
229
|
machineconfig/scripts/python/helpers_devops/themes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
231
230
|
machineconfig/scripts/python/helpers_devops/themes/choose_pwsh_theme.ps1,sha256=58gFOeynADHLTdk8zqEnndBtyNGrln0jvpo76O0UWTw,3136
|
|
232
231
|
machineconfig/scripts/python/helpers_devops/themes/choose_starship_theme.bash,sha256=ajz1GSNU9xYVrFEDSz6Xwg7amWQ_yvW75tQa1ZvRIWc,3
|
|
@@ -264,7 +263,7 @@ machineconfig/scripts/python/helpers_network/wifi_conn.py,sha256=wnSs16kHwhELS7w
|
|
|
264
263
|
machineconfig/scripts/python/helpers_repos/action.py,sha256=8je051kpGZ7A_GRsQyWKhPZ8xVW7tSm4bnPu6VjxaXk,9755
|
|
265
264
|
machineconfig/scripts/python/helpers_repos/action_helper.py,sha256=XRCtkGkNrxauqUd9qkxtfJt02Mx2gejSYDLL0jyWn24,6176
|
|
266
265
|
machineconfig/scripts/python/helpers_repos/clone.py,sha256=9RZgs2OD2RUH6UiZKCuUvRyweDBomAm2lDG2qJmhry0,5436
|
|
267
|
-
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=
|
|
266
|
+
machineconfig/scripts/python/helpers_repos/cloud_repo_sync.py,sha256=gI5WlSdNbl6yhfBVhUNA9j66JK8E-S5m23-bPtcTc7A,11689
|
|
268
267
|
machineconfig/scripts/python/helpers_repos/entrypoint.py,sha256=eAM-7trZCPTeep0iTU3_HNqCkF0pYKqMMXNq3vLBsP8,2898
|
|
269
268
|
machineconfig/scripts/python/helpers_repos/grource.py,sha256=lHxyfsIQr4pbu71Ekqu-9nohR7LXbN2wufw7LPTyOgM,14639
|
|
270
269
|
machineconfig/scripts/python/helpers_repos/record.py,sha256=1PycYcW7VA-9n9iv1TJXub7qNIQ6I6Z9dEnvbdDm4TU,11099
|
|
@@ -276,7 +275,7 @@ machineconfig/scripts/python/helpers_sessions/__init__.py,sha256=47DEQpj8HBSa-_T
|
|
|
276
275
|
machineconfig/scripts/python/helpers_sessions/sessions_multiprocess.py,sha256=umimrBrLjGimfZzRlvxHgKdld5S-bRrFZTAk6OOZqq0,3221
|
|
277
276
|
machineconfig/scripts/python/helpers_utils/download.py,sha256=Yjooy8vwDJpqXAb-J47C8rPSazIEGUPVRR089TrW7iA,6730
|
|
278
277
|
machineconfig/scripts/python/helpers_utils/pdf.py,sha256=RHYuEJn_xUMj8jMDx0Gi0Xr1yjA_7BLnStGU4N1qV7M,5003
|
|
279
|
-
machineconfig/scripts/python/helpers_utils/python.py,sha256=
|
|
278
|
+
machineconfig/scripts/python/helpers_utils/python.py,sha256=1VH6pLEaaOhVbMgfTf2gu8LfbifPq6VCCrFmV0q_kDQ,7141
|
|
280
279
|
machineconfig/scripts/windows/wrap_mcfg.ps1,sha256=S6WuBYXdm4roQc1YPjSgWBmDFOgWD9hrRw6HHbHfpbE,2174
|
|
281
280
|
machineconfig/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
282
281
|
machineconfig/settings/broot/br.sh,sha256=7CCJflIAirkiuo1suDCT8BzhVzDdJWEfbAxNDG4VPSI,1455
|
|
@@ -433,7 +432,7 @@ machineconfig/setup_linux/__init__.py,sha256=-OGRER8JTu_qhXBHQl0noB6vkVW_y2JA8Bl
|
|
|
433
432
|
machineconfig/setup_linux/apps_desktop.sh,sha256=l1jvwK-0zxlcpn7ia7PMWmBr3OddKBmzkpUXwGl5czg,2769
|
|
434
433
|
machineconfig/setup_linux/apps_gui.sh,sha256=lFPYq7H2bRogPwW6QoEuSr9GnTjHS-jRM_eYg2rjOmM,2301
|
|
435
434
|
machineconfig/setup_linux/uv.sh,sha256=cyegPmMMB7B3OnVx9KxZiU1JQU3Z_oqboUgwzmW2W40,487
|
|
436
|
-
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=
|
|
435
|
+
machineconfig/setup_linux/web_shortcuts/interactive.sh,sha256=fC_yF3E4TuuaeJdpXbfS7veG6ZTYw0kRDXXeRC8VIeE,1605
|
|
437
436
|
machineconfig/setup_linux/web_shortcuts/live_from_github.sh,sha256=-zDKAzop3P9-XJ9qaRXCfkpcGHKykrTpzsXa6VPTsmQ,1159
|
|
438
437
|
machineconfig/setup_mac/__init__.py,sha256=PfdhwY4Ss-rfP7b4-9fvKwxCDtNAd-u1JdhFYnE7CwI,518
|
|
439
438
|
machineconfig/setup_mac/apps_gui.sh,sha256=3alvddg918oMlJB2aUWJWpGGoaq5atlxcaOwhnyXlRI,9517
|
|
@@ -443,17 +442,17 @@ machineconfig/setup_windows/__init__.py,sha256=V9kZaO4lrEygI3rxim_Mzq3TAAbG_Ok5G
|
|
|
443
442
|
machineconfig/setup_windows/uv.ps1,sha256=6IwoBSyvyeRBvpBRdzfuNNS5uNsVqYJEVlza-hyuxDc,761
|
|
444
443
|
machineconfig/setup_windows/ssh/add-sshkey.ps1,sha256=qfPdqCpd9KP3VhH4ifsUm1Xvec7c0QVl4Wt8JIAm9HQ,1653
|
|
445
444
|
machineconfig/setup_windows/ssh/openssh-server.ps1,sha256=SoE_WDK5bCwcgoHp4nl-kG1a8Q_ldgSNXDIzB0LW_tY,2584
|
|
446
|
-
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=
|
|
445
|
+
machineconfig/setup_windows/web_shortcuts/interactive.ps1,sha256=dZpYzy0AcmhVYXyB70oQgciZ1bA98iJ8aat0ZNHxv9Y,1939
|
|
447
446
|
machineconfig/setup_windows/web_shortcuts/live_from_github.ps1,sha256=03JtjjEfMxPN5V1-o5R6dvGpRVKLxq4Mx5VhRjPw5Dw,1402
|
|
448
447
|
machineconfig/setup_windows/web_shortcuts/quick_init.ps1,sha256=zMT67MFwq_J6gc6O1kIV4FSI9UDE2AUiZon3FBs4GOk,652
|
|
449
448
|
machineconfig/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
450
449
|
machineconfig/utils/accessories.py,sha256=4nkK6pjir5zV-t_DZiqaQVK7JrTdC6EkEYiMdz_NPcU,4407
|
|
451
|
-
machineconfig/utils/code.py,sha256=
|
|
450
|
+
machineconfig/utils/code.py,sha256=Y0FMyVc_VojT_GSIS_KcHpTFOGMfz3Oaoq3CDVCEnIE,9400
|
|
452
451
|
machineconfig/utils/io.py,sha256=6kXNd3t6FCHxZzmPOIKTCdXDRnSdHoy4IqcthwBbYGY,6456
|
|
453
452
|
machineconfig/utils/links.py,sha256=hmPi5Nfi_8mrLy5dVcRnJGQsqQTuuPtlwB-hrPK7tk0,25044
|
|
454
453
|
machineconfig/utils/meta.py,sha256=CLkBibpumQGQXJvOhsCeUQSU9-BVdapntTMLlV6RGx0,10528
|
|
455
454
|
machineconfig/utils/notifications.py,sha256=tuXIudcip0tEioG-bm8BbLr3FMDve4f6BktlznBhKxM,9013
|
|
456
|
-
machineconfig/utils/options.py,sha256=
|
|
455
|
+
machineconfig/utils/options.py,sha256=BbjeP4yLuNql15R9CFqHlN5NR7t20Tgnbuh4x_Nf5EY,8821
|
|
457
456
|
machineconfig/utils/options_tv.py,sha256=N_LaNlXkBU0tFQ1HvqYmEgJxJEo3ebRTsMGZjM77UcY,4133
|
|
458
457
|
machineconfig/utils/path_extended.py,sha256=7WprxKVo855pFGhM41ZFXaYpLqhG66JkyQ6KzgR6Si4,50851
|
|
459
458
|
machineconfig/utils/path_helper.py,sha256=RVis6gsJ9mEUPdh3tpyM7F2Ow8TruXpI1AoFqWInr7g,10368
|
|
@@ -461,7 +460,7 @@ machineconfig/utils/procs.py,sha256=hpavbXmcEZZaDkueqBnEeMLBjAxHMgNxrRJ5kaCEYms,
|
|
|
461
460
|
machineconfig/utils/scheduler.py,sha256=En7M9jgzC5PXDPC5Fq0_RtFf2WDg6fFmsyxYTsW-w6c,14099
|
|
462
461
|
machineconfig/utils/scheduling.py,sha256=vcJgajeJPSWkJNlarYJSmLvasdOuCtBM4druOAB1Nwc,11089
|
|
463
462
|
machineconfig/utils/source_of_truth.py,sha256=ZAnCRltiM07ig--P6g9_6nEAvNFC4X4ERFTVcvpIYsE,764
|
|
464
|
-
machineconfig/utils/ssh.py,sha256=
|
|
463
|
+
machineconfig/utils/ssh.py,sha256=BFMu2xanCIiHP-IaP3geFAMwYGWwvxRGa2LbTObmDog,17791
|
|
465
464
|
machineconfig/utils/terminal.py,sha256=7zi33CpnoEHFoopgzgtNtY1hDOCp0kxeFxzmjTmGo4k,4265
|
|
466
465
|
machineconfig/utils/tst.py,sha256=6u1GI49NdcpxH2BYGAusNfY5q9G_ytCGVzFM5b6HYpM,674
|
|
467
466
|
machineconfig/utils/upgrade_packages.py,sha256=zu5oswNQBBwfWCE52khCFEMBc99mC3fEorzRNk99ffw,7295
|
|
@@ -492,13 +491,13 @@ machineconfig/utils/schemas/fire_agents/fire_agents_input.py,sha256=d3pwhmE-EuHP
|
|
|
492
491
|
machineconfig/utils/schemas/installer/installer_types.py,sha256=QClRY61QaduBPJoSpdmTIdgS9LS-RvE-QZ-D260tD3o,1214
|
|
493
492
|
machineconfig/utils/schemas/layouts/layout_types.py,sha256=IV45Z_ZTw8S4V-wiZ_lpAVsUX6rSSfDCG7qm5Dk4Oog,1977
|
|
494
493
|
machineconfig/utils/schemas/repos/repos_types.py,sha256=ECVr-3IVIo8yjmYmVXX2mnDDN1SLSwvQIhx4KDDQHBQ,405
|
|
495
|
-
machineconfig/utils/ssh_utils/abc.py,sha256=
|
|
496
|
-
machineconfig/utils/ssh_utils/copy_from_here.py,sha256=
|
|
494
|
+
machineconfig/utils/ssh_utils/abc.py,sha256=vcbD1_xzaBgy4MQOYEu3q6eKR62HgLCJxOAC34F2sQ8,103
|
|
495
|
+
machineconfig/utils/ssh_utils/copy_from_here.py,sha256=KcajzrFIwBOARWIZc11amuItdbUnc0mKF7XYIkyCBnQ,5424
|
|
497
496
|
machineconfig/utils/ssh_utils/copy_to_here.py,sha256=ibDivdzzKC7-1sc6JQn4mzreSY8Tbm4etIsAZrbAZv8,13892
|
|
498
|
-
machineconfig/utils/ssh_utils/utils.py,sha256=
|
|
497
|
+
machineconfig/utils/ssh_utils/utils.py,sha256=O0dslCi2yjs0ToLJKg7O0nTC3e0_HMtdW4ga_GiYZZc,6322
|
|
499
498
|
machineconfig/utils/ssh_utils/wsl.py,sha256=nSzZnZ7M4d3mfW2z-57OQIwfVpa114bJVOf9tDLheLE,7865
|
|
500
|
-
machineconfig-8.
|
|
501
|
-
machineconfig-8.
|
|
502
|
-
machineconfig-8.
|
|
503
|
-
machineconfig-8.
|
|
504
|
-
machineconfig-8.
|
|
499
|
+
machineconfig-8.14.dist-info/METADATA,sha256=2zd5eD_sEAE5xQFwq7d2edUENrhatRJ6aTZPtWMwsmY,6299
|
|
500
|
+
machineconfig-8.14.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
501
|
+
machineconfig-8.14.dist-info/entry_points.txt,sha256=NpkZIzFVsNgyPe5EdUfY7QLuZovfpWxDQ2r2q3xSwvk,638
|
|
502
|
+
machineconfig-8.14.dist-info/top_level.txt,sha256=porRtB8qms8fOIUJgK-tO83_FeH6Bpe12oUVC670teA,14
|
|
503
|
+
machineconfig-8.14.dist-info/RECORD,,
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# ⌨️ Linux Mint Keyboard Shortcuts Configuration
|
|
3
|
-
|
|
4
|
-
# 🚀 Rofi Launcher Shortcut Settings
|
|
5
|
-
KEYBINDING_NAME='Launch Rofi'
|
|
6
|
-
KEYBINDING_COMMAND='rofi -show drun'
|
|
7
|
-
KEYBINDING_BINDING='<Control><Alt>p'
|
|
8
|
-
KEYBINDING_PATH='/org/cinnamon/desktop/keybindings/custom-keybindings/custom0/'
|
|
9
|
-
|
|
10
|
-
# 🔑 Configure Shortcut
|
|
11
|
-
# Set the name
|
|
12
|
-
gsettings set org.cinnamon.desktop.keybindings.custom-keybinding:$KEYBINDING_PATH name "$KEYBINDING_NAME"
|
|
13
|
-
# Set the command
|
|
14
|
-
gsettings set org.cinnamon.desktop.keybindings.custom-keybinding:$KEYBINDING_PATH command "$KEYBINDING_COMMAND"
|
|
15
|
-
# Set the binding
|
|
16
|
-
gsettings set org.cinnamon.desktop.keybindings.custom-keybinding:$KEYBINDING_PATH binding "['$KEYBINDING_BINDING']"
|
|
17
|
-
|
|
18
|
-
# 📋 Update Keybindings List
|
|
19
|
-
# Get the current list of custom keybindings
|
|
20
|
-
CURRENT_KEYBINDINGS=$(gsettings get org.cinnamon.desktop.keybindings custom-list)
|
|
21
|
-
|
|
22
|
-
# 🔄 Add new keybinding if not present
|
|
23
|
-
if [[ "$CURRENT_KEYBINDINGS" != *custom0* ]]; then
|
|
24
|
-
if [ "$CURRENT_KEYBINDINGS" = "@as []" ]; then
|
|
25
|
-
NEW_KEYBINDINGS="['custom0']"
|
|
26
|
-
else
|
|
27
|
-
NEW_KEYBINDINGS="${CURRENT_KEYBINDINGS%]*}, 'custom0']"
|
|
28
|
-
fi
|
|
29
|
-
gsettings set org.cinnamon.desktop.keybindings custom-list "$NEW_KEYBINDINGS"
|
|
30
|
-
fi
|
|
File without changes
|
|
File without changes
|
|
File without changes
|