Configuration
- Configuration file
- Presentation roots
- Slide defaults
- Remote sessions
- Runtime precedence
- Themes
- Highlighting
- Fonts
Configuration file
SlideWire stores its configuration in config/slidewire.php.
The main sections are:
presentation_rootsslidesremotethemesfonts
Presentation roots
presentation_roots defines the directories where SlideWire looks for presentation files.
'presentation_roots' => [
resource_path('views/pages/slides'),
],
The first configured root is also used by make:slidewire when generating new files.
Slide defaults
slides is a SlidesConfig DTO that defines the default runtime behavior for decks.
use Phiki\Theme\Theme;
use WendellAdriel\SlideWire\DTOs\HighlightConfig;
use WendellAdriel\SlideWire\DTOs\SlidesConfig;
use WendellAdriel\SlideWire\Enums\SlideTransition;
use WendellAdriel\SlideWire\Enums\SlideTransitionSpeed;
'slides' => new SlidesConfig(
theme: 'default',
showControls: true,
showProgress: true,
showFullscreenButton: true,
keyboard: true,
touch: true,
transition: SlideTransition::Slide,
transitionDuration: 350,
transitionSpeed: SlideTransitionSpeed::Default,
autoSlide: 0,
autoSlidePauseOnInteraction: true,
highlight: new HighlightConfig(
enabled: true,
theme: Theme::CatppuccinMocha,
font: 'JetBrainsMono',
fontSize: 'text-base',
),
),
Remote sessions
The remote section defines defaults for remote presenter sessions:
use WendellAdriel\SlideWire\DTOs\RemoteConfig;
'remote' => new RemoteConfig(
ttl: '2h',
pollInterval: '2s',
viewerControls: false,
cacheStore: null,
),
ttl accepts positive whole numbers with an m, h, or d suffix. pollInterval accepts positive whole numbers with an ms or s suffix. The slidewire:remote command may override these values for a new session with --ttl and --poll.
viewerControls determines whether viewers may browse freely when a session starts. The presenter may change this for all viewers using the session lock toggle.
cacheStore selects a named Laravel cache store. When null, SlideWire uses the application's default store. Remote sessions need a persistent store with atomic lock support, accessible to both the Artisan command and web requests. Do not use the array store for sessions created from the command line.
See Remote presenter control for the full session workflow and cache requirements.
Runtime precedence
Most runtime settings are resolved using a three-level chain:
- slide metadata
- deck metadata
- configured defaults
This applies to values such as:
themetransitiontransition_speedtransition_durationauto_slideauto_slide_pause_on_interaction
Deck-level settings are the practical place to configure controls, progress, fullscreen visibility, and explicit highlight theme behavior for a whole presentation.
The keyboard and touch keys exist in the configuration DTO, but the current deck runtime binds keyboard and touch navigation by default. Treat those values as configuration metadata unless you have customized the deck view.
Themes
SlideWire ships with these built-in themes:
defaultblackwhiteaurorasunsetneonsolarized
Each theme is a ThemeConfig DTO with background and typography settings:
use Phiki\Theme\Theme;
use WendellAdriel\SlideWire\DTOs\ThemeConfig;
use WendellAdriel\SlideWire\DTOs\ThemeFont;
'themes' => [
'corporate' => new ThemeConfig(
background: 'bg-slate-900 text-slate-100',
highlightTheme: Theme::GithubDark,
title: new ThemeFont('Inter', 'text-slate-100', 'text-4xl'),
text: new ThemeFont('Inter', 'text-slate-300', 'text-lg'),
),
],
Apply the theme by name on a deck or slide:
<x-slidewire::slide theme="corporate">
<h2>Quarterly Review</h2>
</x-slidewire::slide>
Highlighting
Highlighting is configured through the nested highlight DTO inside slides.
Highlight theme resolution follows this order:
- explicit highlight theme
- active presentation theme's
highlightTheme - configured default highlight theme
If Phiki is unavailable or highlighting fails, SlideWire falls back to a plain escaped code block.
In practice, explicit highlight theme overrides are most useful on the deck component or directly on the code component.
Fonts
The fonts array maps font family names to their loading strategy.
use WendellAdriel\SlideWire\DTOs\FontConfig;
use WendellAdriel\SlideWire\Enums\FontSource;
'fonts' => [
'Inter' => new FontConfig(FontSource::Google, [400, 600, 700]),
'JetBrainsMono' => new FontConfig(FontSource::Google, [400, 700]),
'Georgia' => new FontConfig(FontSource::System),
],
Google fonts are automatically injected into the rendered deck. System fonts are used without additional asset loading.