Appearance
Window API
Control the game window.
Methods
setSize(width, height)
Set the window size.
javascript
await gemshell.window.setSize(1280, 720);Parameters:
width- Window width in pixels (number)height- Window height in pixels (number)
Returns: Promise<boolean>
getSize()
Get the current window size.
javascript
const { width, height } = await gemshell.window.getSize();
console.log(`Window: ${width}x${height}`);Returns: Promise<{ width: number, height: number }>
setTitle(title)
Set the window title.
javascript
await gemshell.window.setTitle('My Game - Level 5');Parameters:
title- Window title (string)
Returns: Promise<boolean>
getTitle()
Get the current window title.
javascript
const title = await gemshell.window.getTitle();Returns: Promise<string>
setFullscreen(enabled)
Enable or disable fullscreen mode.
javascript
await gemshell.window.setFullscreen(true);Parameters:
enabled- true for fullscreen, false for windowed (boolean)
Returns: Promise<boolean>
isFullscreen()
Check if window is in fullscreen mode.
javascript
const fullscreen = await gemshell.window.isFullscreen();Returns: Promise<boolean>
toggleFullscreen()
Toggle between fullscreen and windowed mode.
javascript
await gemshell.window.toggleFullscreen();Returns: Promise<boolean>
minimize()
Minimize the window.
javascript
await gemshell.window.minimize();Returns: Promise<boolean>
maximize()
Maximize the window (or unmaximize if already maximized).
javascript
await gemshell.window.maximize();Returns: Promise<boolean>
restore()
Restore window from minimized state.
javascript
await gemshell.window.restore();Returns: Promise<boolean>
focus()
Bring window to front and focus it.
javascript
await gemshell.window.focus();Returns: Promise<boolean>
center()
Center the window on screen.
javascript
await gemshell.window.center();Returns: Promise<boolean>
close()
Close the window (and quit the game).
javascript
await gemshell.window.close();Returns: Promise<boolean>
Examples
Resolution Settings
javascript
const RESOLUTIONS = [
{ name: '720p', width: 1280, height: 720 },
{ name: '1080p', width: 1920, height: 1080 },
{ name: '1440p', width: 2560, height: 1440 },
];
async function setResolution(index) {
const res = RESOLUTIONS[index];
await gemshell.window.setSize(res.width, res.height);
}Fullscreen Toggle
javascript
async function toggleFullscreen() {
await gemshell.window.toggleFullscreen();
const isFs = await gemshell.window.isFullscreen();
updateFullscreenButton(isFs);
}
// Or use the dedicated method
document.addEventListener('keydown', async (e) => {
if (e.key === 'F11') {
await gemshell.window.toggleFullscreen();
}
});Dynamic Title
javascript
async function updateTitle() {
const baseTitle = 'My Awesome Game';
const level = `Level ${currentLevel}`;
const score = `Score: ${playerScore}`;
await gemshell.window.setTitle(`${baseTitle} - ${level} - ${score}`);
}Window State Management
javascript
async function saveWindowState() {
const size = await gemshell.window.getSize();
const fullscreen = await gemshell.window.isFullscreen();
await gemshell.file.save('windowState', {
width: size.width,
height: size.height,
fullscreen
});
}
async function restoreWindowState() {
const state = await gemshell.file.load('windowState');
if (state) {
await gemshell.window.setSize(state.width, state.height);
await gemshell.window.setFullscreen(state.fullscreen);
}
}Prevent Too Small Window
javascript
async function initWindow() {
// Set minimum size to prevent UI breaking
await gemshell.window.setMinimumSize(800, 600);
}Quit Confirmation
javascript
async function quitGame() {
const confirmed = await gemshell.dialog.confirm('Quit Game?', 'Are you sure you want to quit?');
if (confirmed) {
await gemshell.window.close();
}
}