220 Commits
Author SHA1 Message Date
lemke_h e5231eefa9 cheatsheet_admin: point to the editor README for gitea/autodeploy access 2026-10-16 11:26:36 +02:00
lemke_h 4104fdb166 cheatsheet_admin: launcher-editor, its checkout, and what publishing to gitea needs 2026-10-16 11:18:31 +02:00
lemke_h dac7de43c1 Remove launcher_dev (obsolete: launcher-editor edits a personal clone with preview and publish) 2026-10-16 11:17:46 +02:00
lemke_h 484365da7d launcher-editor: on gac-* accounts, run as the person at the console via become
A shared account shouldn't publish launcher changes under its own name.
It now asks for the user name (zenity, like undulator-pointing), checks
it, and runs launcher-editor as that user with become in a terminal (the
password prompt needs one; the terminal stays open if login fails).
--live and --help still run as the shared account. Without
~/network_drives (where the gitea SSH key is) and with a terminal at hand,
it runs setup-network-drives before cloning/pulling.
2026-10-16 10:45:53 +02:00
lemke_h 99adf90c13 Rename launcher_editor to launcher-editor 2026-10-16 10:23:03 +02:00
lemke_h 9d28390951 launcher_editor: edit the Bernina launcher in ~/launcher_config with preview and publish
Without arguments it asks whether to edit the Bernina launcher: a personal
clone of the launcher config repo is created or fast-forwarded and opened,
with Preview running epics_launcher like the consoles do, and Publish
pushing (which deploys to /sf/bernina/config/launcher). Otherwise it opens
the plain editor. --live opens the deployed config read-only; other
arguments go to the editor unchanged.
2026-10-15 17:41:32 +02:00
lemke_h a99e578d28 launcher_editor: start the launcher config editor from /sf/bernina/applications in bpy-env 2026-10-15 17:26:55 +02:00
lemke_h d7ca8277b0 list_bin_commands: describe eco-dev-pull-new-version, refresh_home_links; drop deleted leftovers from EXCLUDE 2026-10-15 17:21:58 +02:00
lemke_h 505893b24a Merge origin/master (autodeploy workflow removed; bin is now pulled manually) 2026-10-15 17:12:38 +02:00
lemke_h 8ad76f9b82 Remove baked bpy-default.sh/bpy-dev.sh; prefer system pixi
bpy-default.sh and bpy-dev.sh were saved 'pixi shell-hook' output from
another host, with PIXI_EXE and PATH pointing into a personal home that
doesn't exist on the consoles. bpy-env.sh now runs the hook at runtime
(--as-is, ~0.2 s) for its shared-env fallback instead of sourcing
bpy-default.sh; nothing else used either file.

Scripts that call pixi now prefer the system /usr/bin/pixi and fall back
to /sf/bernina/bin/pixi (e.g. on ra, which has no system pixi).
2026-10-15 17:11:39 +02:00
lemke_h 5a8015a4a0 pixi: update fallback binary 0.67.2 -> 0.81.0 (same as the consoles' system pixi) 2026-10-15 17:11:39 +02:00
Henrik Till Lemke 0513d6005b firefox_shared_profile: wait for ~/network_drives/home before touching it
firefox_as ssh's to localhost, which can start a new session; the old
mkdir -p then ran before mount-user-cifs-shares linked
~/network_drives/home, created a local tmpfs dir there (the mount
script's ln -sf then put its link inside it), and Firefox got a fresh
empty profile - and gopass broke for that session too.

Now: refuse if home is a plain directory (with repair hint), otherwise
wait up to 20s for the link (starting the mount service), and fail
with a message instead of creating a local profile. Also drop the
blank line before the shebang.
2026-10-15 13:10:59 +02:00
Henrik Till Lemke 5b8a93d808 setup-network-drives: link PSI's mount tool into bin, document it
Run it first when ~/network_drives/home is missing (gopass not
initialized, firefox_shared_profile creating a fresh empty profile).
2026-10-15 13:06:36 +02:00
ebner 26097be83e Delete .gitea/workflows/autodeploy.yml 2026-09-28 08:59:24 +02:00
lemke_h 8efa32dc1c create-python-install: renamed from pixi_pgroup_install; -J for JupyterHub
- Renamed to create-python-install.
- No longer edits ~/.condarc during the install. Each install ends by
  printing the command for you and collaborators to run once on ra:
  create-python-install -J <exp|pgroup|path>, which only adds the
  folder's conda_envs to envs_dirs in ~/.condarc and lists the kernels.
  Replaces -C.
2026-09-25 16:16:24 +02:00
lemke_h 0eea66bec1 pixi_pgroup_install: keep pgroup changes, add -a/-A, -u, -P
- Re-runs keep the pgroup's own pixi.toml/pixi.lock when they differ
  from the shared ones (e.g. packages added), so a colleague running it
  to get the JupyterHub kernels no longer resets the env. -u resets to
  the shared files explicitly (backups kept).
- -a pkg / -A pkg: add conda-forge / PyPI packages (pixi add, install,
  group permissions, pgroup cache).
- -P: only make your own files in the install group-writable.
2026-09-25 16:06:35 +02:00
lemke_h 76b985975a robot_server: use /sf/controls/bin/pshell
Local change found uncommitted in the deployed working copy; committed
so the next deploy doesn't overwrite it. The old /opt/gfa call is kept
as a comment.
2026-09-25 15:58:23 +02:00
lemke_h 224c68e90b bin: consistent naming, pixi_pgroup_install, git cleanup
- Commands lose their .sh extension (create_personal_dir,
  gopass_bernina_setup, gopass_bernina_service_setup,
  kerberos_ticket_renew, migrate_to_network_drive, pixi_local_sync,
  pixi_rebuild_local, sync_personal_config); .sh now only marks files
  that are sourced. kerberos_ticket_renew.sh and pixi_local_sync.sh stay
  as links, since they are started at login.
- Sourced files gain .sh (bpy-env, anaconda_env, anaconda_bernina_env,
  mm_bernina); the old names stay as links.
- All references in scripts, the .desktop file and the docs updated;
  cheatsheet.md regenerated via list_bin_commands.
- New pixi_pgroup_install: installs the shared bernina pixi env into a
  pgroup work folder (group-shared, with its own package cache) and
  makes it visible in JupyterHub as bernina-<exp>-<env>.
- Fix '#/bin/bash' first lines (missing '!') in 11 scripts.
- Stop tracking clutter (.nfs placeholders, __pycache__, vim swap file,
  .bak/_bak/~ copies, delme_*, empty 'me'); add .gitignore.
2026-09-25 15:48:11 +02:00
lemke_h 22006c0676 few fixes new manual
Autodeploy / autodeploy (push) Successful in 10s
2026-09-19 10:32:18 +02:00
lemke_h 3a9e71b16b timing fix
Autodeploy / autodeploy (push) Successful in 10s
2026-09-16 21:16:12 +02:00
lemke_handClaude Sonnet 5 665c59261d Remove obsolete eco startup variants, hide two niche ones from cheatsheet
Autodeploy / autodeploy (push) Successful in 12s
Deletes 9 legacy/alternate eco-launcher scripts superseded by eco and
eco-dev: eco-in, eco-notlazy, eco-test, eco_historic, eco_mm_env,
eco_new, eco_noenv, eco_old, ecotest.

eco_bams_bpms and eco_roman stay (still useful for BAM/BPM and robot
work respectively) but are marked "cheatsheet: hide" and dropped from
list_bin_commands' COMMANDS dict, so they no longer show up in the
generated cheat sheet -- reach for them directly by name instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 15:19:42 +02:00
lemke_h e11d873c8d am 2026-09-09 14:57:01 +02:00
lemke_handClaude Sonnet 5 e4ec4376ee Add sub-sheet navigation and cross-sheet search to the cheat sheet overlay
cheatsheet_to_shortcuts_json now recognizes a markdown link in a table's
first column (e.g. [Admin & Account Setup](cheatsheet_admin.md) in a
Command/Shortcut/Sheet table) and emits it as a navigable entry instead
of a literal shortcut.

cheatsheet_overlay renders such entries as clickable links; clicking one
loads and displays that file in place of the current one (path resolved
relative to the linking file, arbitrary depth, cycle-safe), with a
"< Back" affordance to return. A new "Search all sheets" checkbox
instead discovers and combines every sheet reachable from the root into
one filterable view. Everything reloads fresh from disk at the moment
it's needed (no caching across a click or toggle), so editing any of
these .md files takes effect on the very next use, same as the existing
per-invocation freshness for the root sheet.

Adds cheatsheet_admin.md as the first real sub-sheet: one-time/occasional
account and host setup tasks (personal dirs, gopass onboarding, PSI
home-sync) pulled out of the main operational reference, linked from a
new "Other cheat sheets" section in cheatsheet.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 14:55:25 +02:00
lemke_handClaude Sonnet 5 9c4b29ee76 Document Tactile shortcuts in cheatsheet.md, refresh gTile's section
Adds a "Window tiling (Tactile)" section (Super+T grid, tile-select
keys, layout switching) alongside gTile's, and updates gTile's own
section: documents the right-hand-block preset set that was missing
from the cheatsheet, and drops the stale "installed/updated on login"
note now that both extensions are served from the shared
/sf/bernina/applications tree via XDG_DATA_DIRS instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 14:30:25 +02:00
lemke_handClaude Sonnet 5 dad91aaf3a Set Tactile's default layout on all 6 possible monitors, not just 2
Tactile's schema supports monitor-0-layout through monitor-5-layout;
only setting 0/1 left consoles with 3+ screens (or a monitor enumerated
at a higher index) stuck on Tactile's own default layout instead of ours.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 14:28:35 +02:00
lemke_handClaude Sonnet 5 61adad4553 Customize Tactile to a 4x4 grid matching gTile's key layout
Bumps Tactile's grid to 4 rows (grid-cols already defaults to 4), remaps
its tile-activation keys to the same "row of keys top to bottom -> row of
screen quarters top to bottom" spatial layout already used for gTile's
right-hand-block preset set (7890 / uiop / jkl; / m,./), disables
maximize-on-select, extends layout-4 to use all 4 rows, and defaults both
monitors to layout-4 so the customized grid shows up without needing to
press 4 first.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 14:04:11 +02:00
lemke_handClaude Sonnet 5 a7bef287fc Fix gTile/Tactile never loading: work around broken user-extension scan
Autodeploy / autodeploy (push) Successful in 12s
Root cause (confirmed via strings on libgnome-shell.so): gnome-shell's
extension directory resolution walks GLib.get_system_data_dirs() (i.e.
XDG_DATA_DIRS) gated by an includeUserDir flag that's false for
extensions on this RHEL9 build -- so ~/.local/share/gnome-shell/extensions
is never scanned at all, no matter how correctly install_gtile/
install_tactile populated it or how correct enabled-extensions was.
Confirmed live on saresb-cons-04 via Looking Glass:
Main.extensionManager.lookup() stayed undefined until
createExtensionObject()+loadExtension() were called by hand.

Fix: serve both extensions from the existing shared
/sf/bernina/applications/{gTile@vibou,tactile@lundal.io} via a new
/sf/bernina/applications/gnome-shell/extensions/ symlink tree, and have
startup_bernina_terminal self-heal a per-account
~/.config/environment.d/98-bernina-extensions.conf that prepends that
tree to XDG_DATA_DIRS. This uses the same (working) system-extension scan
path as gnome-shell's own stock extensions, so no per-account copy step
is needed anymore.

Removes install_gtile/install_tactile/install_gnome_extension (the
now-unnecessary rsync-to-~/.local approach) and the
user-extension-loader@bernina.psi.ch workaround extension explored along
the way, superseded by this simpler fix. Cleaned up the resulting stale
doc entries in list_bin_commands/cheatsheet.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 09:38:57 +02:00
lemke_h 4cc22a4c03 fix for saresb-cons-03
Autodeploy / autodeploy (push) Successful in 12s
2026-09-07 17:06:02 +02:00
lemke_handClaude Sonnet 5 fddc40f1d2 Fix silently-broken gTile keybindings and add Tactile extension
gsettings set/reset against org.gnome.shell.extensions.* schemas fails
with "No such schema" from a plain shell (the schema is bundled inside
the extension, never registered system-wide) -- this was silently
no-op'ing all 16 preset-resize-1..16 keybindings plus the preset-resize-21
self-heal in startup_bernina_terminal on every single run. Switched all of
these to dconf write/reset, which operates on the raw key store and needs
no schema.

Also hardened install_gtile against transient failures at login (no
retry, no logging previously made intermittent skips undiagnosable) by
extracting the shared logic into install_gnome_extension and adding
retries + a log file, then reused it for a new install_tactile, wiring
the Tactile extension (tactile@lundal.io, vetted against gnome-shell 40)
into startup_bernina_terminal alongside gTile.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 16:01:24 +02:00
lemke_handClaude Sonnet 5 2d8b6e046f Recover work lost in this morning's autodeploy re-clone
Autodeploy / autodeploy (push) Successful in 13s
The 07:44 autodeploy pull of this repo re-cloned from scratch and wiped
everything that wasn't committed. Restored from the 07:05 hourly NFS
snapshot (.snapshot/hourly.2026-09-07_0705), the last one taken before
the wipe:

- eco-status-server, eco-status-server-install-user-service: switch from
  tracked copies to symlinks into the canonical eco repo checkout at
  /sf/bernina/code/gac-bernina/eco/scripts/, so edits there take effect
  immediately without a redeploy step.
- eco-dev-pull-new-version: small helper to update that eco checkout.
- refresh_home_links: interactive helper to clear local files blocking
  linux_home_links.yaml link:/copy: targets before restarting
  create-automatic-links-in-home.service.
- .vscode/settings.json: restore local Peacock/color-theme customization.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-07 13:20:07 +02:00
lemke_h 3693565fde gTile 4x4 keyboard-row presets, mutter workspaces-only-on-primary, fix flameshot detach quoting bug, add flameshot daemon autostart, cheatsheet_overlay search (Ctrl+F)
Autodeploy / autodeploy (push) Successful in 10s
2026-09-05 16:02:18 +02:00
lemke_h f677ec82cf additionas
Autodeploy / autodeploy (push) Successful in 9s
2026-09-05 13:08:27 +02:00
lemke_h da4f047c37 fix
Autodeploy / autodeploy (push) Successful in 9s
2026-08-28 18:18:31 +02:00
lemke_h 67e979c591 scripts adding
Autodeploy / autodeploy (push) Successful in 9s
2026-08-28 09:43:12 +02:00
lemke_h 9b524b75f6 fix
Autodeploy / autodeploy (push) Successful in 9s
2026-08-24 16:20:30 +02:00
lemke_h 5a3268df3e fix
Autodeploy / autodeploy (push) Successful in 9s
2026-08-21 22:40:34 +02:00
lemke_handClaude Sonnet 5 14b136b0f4 Add git-push script to force SSH origin before pushing
Autodeploy / autodeploy (push) Successful in 9s
Something in this environment periodically rewrites origin back to an
https URL with an embedded token; this script switches it to SSH
before every push so pushes don't depend on that token.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-21 16:25:05 +02:00
lemke_h 15e603c743 fixes
Autodeploy / autodeploy (push) Successful in 10s
2026-08-21 16:19:21 +02:00
lemke_h e834170725 am 2026-08-20 12:43:47 +02:00
lemke_h cd9fa4c5b8 script fixes for rhel9 2026-08-20 12:43:39 +02:00
lemke_h f2617ec020 am 2026-08-17 13:08:04 +02:00
lemke_h 6dd02270b1 added scripts 2026-08-16 00:24:18 +02:00
lemke_h 042e308997 bernina jup on new env 2026-07-05 21:59:23 +02:00
lemke_h 41f1da4040 eco dev 2026-06-16 17:21:49 +02:00
lemke_h a7e61ac890 bpy-select script 2026-06-12 19:01:12 +02:00
lemke_h 6721ae5df0 new personal firefox starter 2026-06-03 13:27:55 +02:00
lemke_h 07f80df6ae new personal firefox starter 2026-06-03 13:23:41 +02:00
lemke_h 52cad9d811 launcher redef
Autodeploy / autodeploy (push) Successful in 5s
2026-05-29 14:37:05 +02:00
lemke_h 660313d8b8 eco link changes
Autodeploy / autodeploy (push) Successful in 5s
2026-05-26 15:26:38 +02:00
lemke_h 7e94bf8eb8 slurm helper line 2026-05-07 13:51:44 +02:00