qwen-code/packages/cli/src/ui/hooks/useTerminalSize.ts

34 lines
788 B
TypeScript

/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { useEffect, useState } from 'react';
/**
* Returns the actual terminal size without any padding adjustments.
* Components should handle their own margins/padding as needed.
*/
export function useTerminalSize(): { columns: number; rows: number } {
const [size, setSize] = useState({
columns: process.stdout.columns || 80,
rows: process.stdout.rows || 24,
});
useEffect(() => {
function updateSize() {
setSize({
columns: process.stdout.columns || 80,
rows: process.stdout.rows || 24,
});
}
process.stdout.on('resize', updateSize);
return () => {
process.stdout.off('resize', updateSize);
};
}, []);
return size;
}