Files

20 KiB
Raw Permalink Blame History

Bernina Terminal Cheat Sheet

Shortcuts and Compose sequences set up by startup_bernina_terminal. Super+F1 shows this as a floating overlay panel (cheatsheet_overlay, a standalone GTK script -- no gnome-shell extension involved), built fresh from this file's own headings and tables every time it's shown (via cheatsheet_to_shortcuts_json). For this full detailed view with prose/notes included, run cheatsheet in a terminal instead.

Navigation in this viewer: ↑/↓/j/k scroll, g/home top, G/end bottom, b/pgup and f/pgdn page up/down, /pattern then n/N to search and jump between matches (e.g. /Greek), q to quit.

Table of contents

(Links above are for viewing this file in an editor/browser that supports Markdown anchors, e.g. VS Code or GitHub/GitLab — the terminal viewer doesn't follow them; use / search instead, see above.)

Other cheat sheets

In the Super+F1 overlay, the entry below is clickable: it loads and shows that file in place of this one, with a "← Back" link to return. The "Search all sheets" checkbox next to the search box instead searches this sheet and everything linked from it (however deep) all at once.

Sheet Description
Admin & Account Setup One-time/occasional account and host setup tasks — gopass onboarding, personal dirs, PSI home-sync

Application & window shortcuts

Shortcut Action Runs
Alt+Ctrl+J / Super+HomePage Open eco terminal gnome-terminal -- eco
HomePage Launcher launcher
Alt+Ctrl+B Browser firefox
Alt+Ctrl+A Aramis synoptic (caqtdm) caqtdm ... Aramis.ui
Alt+Ctrl+S SwissFEL OP overview (caqtdm) caqtdm ... S_OP_overview_for_photonics.ui
Alt+Ctrl+T New terminal gnome-terminal
Alt+Ctrl+Shift+B Browser (alternate account) firefox_as
Alt+Ctrl+Shift+T Terminal (alternate account) gnome-terminal_as
Alt+Ctrl+Shift+W Windows terminal winterm
Super+F1 This cheat sheet (overlay panel) cheatsheet_overlay
Print Screenshot (Flameshot) flameshot gui
Ctrl+Alt+D Blank/turn off screens xset dpms force off

The Calculator, Email, Home, Screenshot and Help media-key defaults are explicitly unbound at login so they're free for the reassignments above and below (they'd otherwise launch a calculator app, GNOME Help, etc. — Super+F1 is normally GNOME's built-in Help shortcut).

Primary controls terminal only

Only wired up on saresb-cons-03/04/05/08/09/10; other hosts print "no primary controls terminal" and skip this block.

Shortcut Action Runs
Calculator Stop FEL feloff
Super+Calculator Start/open FEL felon
Mail Stop laser laseroff
Super+Mail Start/open laser laseron

Window tiling (gTile)

gTile is served from the shared /sf/bernina/applications tree (via XDG_DATA_DIRS, set up once per account by this script) rather than copied per-account, so it's always present without an install step. Super+Enter/Super+Return (gTile's own default, not set by this script) opens the grid overlay for manual selection; the two preset sets below give one-key shortcuts straight to a specific shape, tuned for 4K screens.

Shortcut Action
Super+Enter (Super+Return also works) Open the gTile grid overlay for manual selection
Super+Shift+KP_1 … KP_9 Numpad preset set: cycle through 9 column-width presets (repeated presses of the same key step through that preset's shapes)
Super+Shift+7/8/9/0, u/i/o/p, j/k/l/;, m/,/.// Right-hand-block preset set: a 4x4 grid laid out to spatially match the keyboard (top row of keys → top row of screen quarters, and so on); each key cycles its exact cell → 2x2 quadrant → half-screen → full-screen on repeated presses

Window tiling (Tactile)

Tactile is a second, simpler grid-tiling extension alongside gTile, served the same way (shared tree + XDG_DATA_DIRS). Unlike gTile's presets above, its tile keys are only active while the grid overlay is showing — press Super+T first, then a tile key (or two, to span a region).

Shortcut Action
Super+T Show the tile grid (a 4x4 grid, customized from Tactile's own smaller default)
Escape Hide the grid without moving anything
7/8/9/0, u/i/o/p, j/k/l/;, m/,/.// (while the grid is showing) Select a tile — press one to move the active window there, or two different ones to span that region (same key twice also works)
1/2/3/4 (while the grid is showing) Switch to one of Tactile's 4 stored layouts — not usually needed, since every monitor already defaults to layout 4 (the customized 4x4 grid)

The tile keys use the same spatial layout as gTile's right-hand-block preset set above (top row of keys → top row of screen quarters, etc.), so the two extensions' shortcuts line up with each other.

Compose key — accents & Greek letters

Compose key = Caps Lock. Press Caps Lock, then the sequence below (Greek letters work in either order: Space, letter or letter, Space).

Greek letters — CapsLock Space <letter>

Key Lower Name Upper Key Lower Name Upper
a α alpha Α n ν nu Ν
b β beta Β o ο omicron Ο
c ξ xi Ξ p π pi Π
d δ delta Δ q ψ psi Ψ
e ε epsilon Ε r ρ rho Ρ
f φ phi Φ s σ sigma Σ
g γ gamma Γ t τ tau Τ
h θ theta Θ u υ upsilon Υ
i ι iota Ι v ς final sigma —
k κ kappa Κ w ω omega Ω
l λ lambda Λ x χ chi Χ
m μ mu Μ y η eta Η
z ζ zeta Ζ

Letters were reassigned where the Greek name collides with another letter already taken: h=theta, y=eta, c=xi, x=chi, q=psi, w=omega, v=final sigma.

A few useful built-in sequences (system default Compose file)

Sequence Result Meaning
CapsLock ' e é acute accent
CapsLock grave e è grave accent
CapsLock " u ü diaeresis / umlaut
CapsLock ~ n ñ tilde
CapsLock , c ç cedilla
CapsLock o c © copyright
CapsLock o r ® registered
CapsLock C = € Euro sign
CapsLock m u µ micro sign
CapsLock s o § section sign
CapsLock o o ° degree sign

~/.XCompose is rewritten on every login (so it self-heals if missing or accidentally edited); defaults come from /usr/share/X11/locale/en_US.UTF-8/Compose.

Screen & session behavior

  • Desktop background, terminal profile, and workspace-on-primary-only are set on every login.
  • Screen lock: enabled with a 180s delay only on saresb-cons-08; disabled (and idle-delay set to never) everywhere else.
  • The Kerberos ticket (gac-bernina) is kept alive in the background for the session (kerberos_ticket_renew).
  • The local pixi Python env in ~/bpy is kept in sync with the shared env in the background (pixi_local_sync).

Scripts in this directory

Every script in /sf/bernina/bin, grouped by topic. Generated by list_bin_commands from the actual directory contents -- re-run it after adding/removing scripts to keep this in sync.

Cheat sheet & help

Command Description
cheatsheet Show this cheat sheet in a terminal (glow + less, full detail)
cheatsheet_overlay Show this cheat sheet as a floating overlay panel (bound to Super+F1)
cheatsheet_to_shortcuts_json Regenerate the overlay's JSON from this file's headings/tables
check_kerberos_renewal Diagnose why the Kerberos ticket renewer might be renewing/prompting too often
useful_commands Show the older, plain-text useful-commands reference

EPICS / eco environment

Command Description
eco Start eco, the beamline's Python control environment
eco-dev Start eco from the development checkout (symlink into the eco repo)
eco-dev-pull-new-version git pull the shared eco checkout in /sf/bernina/code/gac-bernina/eco
eco-status-server Start/stop/check the eco status server (namespace mode)
eco-status-server-install-user-service Install the eco status server as a systemd --user service

Python, conda & pixi environments

Command Description
anaconda_bernina_env.sh Conda init hook for the bernina anaconda env (source this)
anaconda_env.sh Activate a named anaconda environment
anaconda_manual Show the anaconda environment manual (rendered markdown)
anaconda_testenv Activate the anaconda test environment
bpy Activate a named bpy (pixi) environment
bpy-env.sh Activate the Bernina pixi Python env -- local per-host mirror if in sync, else shared (source this)
bpy-select Interactively pick/switch the active bpy pixi environment
create-python-install Install the bernina pixi env into a pgroup work folder and show it in JupyterHub
micromamba micromamba package manager
mm_bernina.sh Micromamba shell-init hook for bernina (source this)
mm_bernina_env Activate a named micromamba environment
pixi pixi package manager
pixi_local_sync Keep the local per-host pixi env mirror in sync (runs in background at login)
pixi_rebuild_local Rebuild the bernina pixi env in an isolated local sandbox, for testing

Jupyter & notebooks

Command Description
bernina-jupyter Start JupyterLab in the bernina-scripts config dir (bpy env)
ipylab Start an ipylab session in a chosen anaconda environment
jupyter-notebook-on-ra Open a Jupyter Notebook on a remote-access host, for a given user
jupyterlab-on-ra Open JupyterLab on a remote-access host, for a given user

Browsers

Command Description
chrome Open Chrome with a per-host profile
chromeAs Open another user's Chrome profile from your own desktop (older variant)
chrome_as Open another user's Chrome profile from your own desktop
firefox Open Firefox with a per-host profile
firefox-create-hostprofile Create a fresh per-host Firefox profile
firefox-hostprofile Open Firefox with the per-host profile (alt entrypoint)
firefox_as Open another user's default Firefox profile from your own desktop
firefox_default Default Firefox profile launcher (symlink to firefox_shared_profile)
firefox_shared_profile Open Firefox using a shared/synced profile
google-chrome Open Chrome with a per-host profile (alt entrypoint)

Displays & control panels

Command Description
Aramis Open the Aramis overview display (mydm/medm)
alarms_caqtdm Open the EPICS alarms caQtDM panel
aramis-home Open the Aramis photonics overview caQtDM panel
bernina-home Open the esbMaster caQtDM panel
cams_sf Open the SwissFEL cameras caQtDM panel
diffractometer-config Open the diffractometer motor IOC configuration tool
motion-home Open the ZamofingMaster motion caQtDM panel
screen_panel Open the SF controls screen panel
screenpanel Open the screen panel (uses screenpanel-sf if available)
sf_archiver_panel Open the SwissFEL archiver viewer panel
strip_chart Open the PShell strip chart viewer
swissfelStatus Open the SwissFEL OP overview caQtDM panel
thc_angles Open the THC angles bokeh app in Firefox
thc_stripchart Open the THC temperature strip chart
timetool_online_plot Open the timetool online plot (voila notebook)

Cameras

Command Description
bernina-cam-mobile1 View the mobile1 camera feed (VLC)
bernina-cam-n View the north camera feed (VLC)
bernina-cam-s View the south camera feed (VLC)
bernina-cam-w View the west camera feed (VLC)
bernina-cam-wideangle1 View wide-angle camera 1 feed (VLC)
bernina-cam-wideangle2 View wide-angle camera 2 feed (VLC)
bernina-cam-wideangle3 View wide-angle camera 3 feed (VLC)
bernina-cam-wideangle4 View wide-angle camera 4 feed (VLC)
bernina-cams-fix Launch the fixed multi-camera mosaic view (VLC)
monitoring_cameras Open the monitoring cameras panel (pshell-based)
record_camera Record a camera feed to file

FEL & laser control

Command Description
feloff Stop/block the FEL beam and announce it
felon Open/enable the FEL beam and announce it
laseroff Block the laser shutter and announce it
laseron Open the laser shutter and announce it

pshell & robot control

Command Description
pshell_be Start the PShell Workbench for the main Bernina beamline environment
pshell_correlation Open the correlation panel
pshell_default Default pshell entrypoint (symlink to pshell_be)
robot_server Start the PShell Workbench for the Bernina robot -- needs a new binary, /opt/gfa/pshell is gone (see chat history: /sf/controls/bin/pshell -wb is the likely replacement, blocked on a dataFormat=null config issue)

Desktop & window management

Command Description
code Launch VS Code
darkscreens Blank/turn off the screens (xset dpms)
flameshot Take a screenshot
gnome-terminal_as Open a GNOME Terminal as another user
launcher Main Bernina application launcher
launcher-editor Edit the Bernina launcher in your own copy (~/launcher_config), preview it (F5) and publish it live; --live views the deployed one read-only
launcher_lca Open the launcher on the machine/LCA network, for a given user
launcher_legacy Legacy application launcher (python 3.5 environment)
rdpWater RDP into the WaterLab Windows machine
remoteDesktop RDP into an arbitrary PSI Windows host
sf-launcher Open the launcher on the sf network, for a given user
termAs Open a terminal as another user
terminalAs Open a terminal as another user (alt entrypoint)
window_arrange.py Arrange/tile windows helper script
winterm Open a Windows-side terminal session

Applications & viewers

Command Description
hdfview Open HDFView (HDF5 file viewer)
jungfrau_console Open the Jungfrau detector console
ncdu Disk usage analyzer
paraview Open ParaView
pycharm Open PyCharm Community
pylote Open Pylote
vesta Open VESTA (crystal structure viewer)

Login session & keybinding setup

Command Description
create-links-in-home Force-apply PSI's Partially Shared Home symlinks now
gogh Gogh terminal color-scheme installer (legacy -- upstream download is broken, see install_terminal_profiles)
install_terminal_profiles Install Solarized/Spacedust GNOME Terminal profiles, set Spacedust default (runs at login)
kerberos_ticket_renew Keep the Kerberos ticket cache alive for the login session (runs in background)
migrate_to_network_drive Move a local dotfile onto PSI's Partially Shared Home and register it for sync
refresh_home_links Like create-links-in-home, but first clears local files that block the links (shows a diff, then delete or copy back)
set_gnome_keyboard_shortcut Register one GNOME custom keyboard shortcut (used by startup_bernina_terminal)
setup-network-drives Mount ~/network_drives (PSI home etc.) now, running kinit first if needed -- run this first when gopass/shared Firefox profile/home links fail (link to PSI's /usr/local/bin/setup-network-drives)
startup_bernina_terminal Full per-login setup for a Bernina console -- runs automatically at login
sync_personal_config Seed .ipython/.condarc onto PSI's Partially Shared Home for cross-host sync

gopass secrets & git

Command Description
git-push git push, forcing the origin remote to SSH first
gopass Bernina gopass secrets store CLI
gopass.py Minimal Python interface to the Bernina gopass store
gopass_bernina_service_setup One-shot setup: give a service account (gac-bernina) access to the gopass store
gopass_bernina_setup One-shot onboarding for a human PSI account joining the gopass store

Personal dirs & data

Command Description
create_data_symlinks (Re)create the ~/bernina_data convenience symlink
create_personal_dir Create/verify a personal working directory under /sf/bernina/config/personal/ (your username)
name2pgroups Look up p-group(s) for a given user name
pgroup2name Look up the user name for a given p-group
quotas-bernina Show Bernina's storage quota usage

Beamline status & monitoring

Command Description
chiller_flowrate Query the JF16 chiller flowrate over telnet
feedbacks_bernina Open the undulator/feedbacks control tool, for a given user
get_bernina_PVs_alive Check whether a set of Bernina PVs are alive
go2daq SSH to the SwissFEL DAQ host (sf-daq-3)
ioc-control-bernina Open the IOC process monitor (PBMonitor)
ioc-finder Find/locate an EPICS IOC
is_control Check whether a given hostname is a primary controls terminal
phonebook Show the Bernina phone list
remaining-slurm-job-time Show remaining time for a SLURM job
restart_service Restart a systemd service as the dbe account (sudo)
run-and-position.py Run-and-position helper script
saythis Speak given text aloud
set_bs_pvs Configure the SLAAR21 beam-synchronous PVs
slurm_resources Show SLURM partition resource usage
undulator-pointing Open the undulator pointing control tool, for a given user

Desktop entries (.desktop files)

Command Description
Bernina.desktop Bernina launcher desktop icon (runs launcher)
bernifox.desktop Bernina-branded Firefox launcher (per-host profile), set as default browser
kerberos-ticket-renew.desktop Autostart entry for the Kerberos ticket renewer