Pi Personalization / Selection / copy

Select the content, not the chrome.

The same actual Pi selection is rendered with the extension off and on.

01 / Native selection

Frame borders and padding are included in the inverse-video selection.

pi / public demoFICTIONAL DATA
╭─ TOOL read ✓ ─ [ 35 ] ─ 01/15 10:30:00 ──────────────────╮
│ read │
│ │
│ { │
│ "path": "src/hello.ts" │
│ } │
│ export function greet(name: string): string { │
│ return `Hello, ${name}!`; │
│ } │
│ │
│ ├─ src/ │
│ │ └─ hello.ts │
│ └─ README.md │
╰────────────────────────────────────────────────────── 5s ╯

02 / Clean selection

Decorations remain drawn, but only real content is highlighted and copied.

pi / public demoFICTIONAL DATA
╭─ TOOL read ✓ ─ [ 35 ] ─ 01/15 10:30:00 ──────────────────╮
│ read │
│ │
│ { │
│ "path": "src/hello.ts" │
│ } │
│ export function greet(name: string): string { │
│ return `Hello, ${name}!`; │
│ } │
│ │
│ ├─ src/ │
│ │ └─ hello.ts │
│ └─ README.md │
╰────────────────────────────────────────────────────── 5s ╯
TOOL read ✓ ─ [ 35 ] ─ 01/15 10:30:00
 read

 {
   "path": "src/hello.ts"
 }
 export function greet(name: string): string {
   return `Hello, ${name}!`;
 }

 ├─ src/
 │  └─ hello.ts
 └─ README.md
5s
The copied text above comes from getActiveSelectionText(), not a hand-written approximation. Code indentation and literal directory-tree glyphs are retained. This controls Pi fullscreen selection, not terminal-owned Shift selection.