yt-dlp Desktop App UI Configuration

By A Clusy user · Published July 29, 2026

Helper notebook for updating MainWindow.axaml UI components in YTDLnisDesktop application, including sidebar navigation and button layout fixes.

  • dotnet
  • desktop-app
  • ui-development
  • avalonia
  • migration
  • xaml
  • configuration
2 cells1 experiment7 views1 forks

Inside this notebook

# Helper: Update MainWindow.axaml with Files page and other features
import re

with open('/home/user/YTDLnisDesktop/src/YTDLnisDesktop.App/Views/MainWindow.axaml', 'r', encoding='utf-8') as f:
    content = f.read()

# Add Files to sidebar (after Observe item)
observe_pattern = '''\n                    <ListBoxItem Classes="sidebar-item">\n                        <Grid ColumnDefinitions="Auto,*">\n                            <TextBlock Grid.Column="0" Text="\uD83D\uDC41\uFE0F" Classes="nav-icon"/>\n                            <TextBlock Grid.Column="1" Text="Observe"/>\n                        </Grid>\n                    </ListBoxItem>'''
files_after_observe = observe_pattern + '''\n                    <ListBoxItem Classes="sidebar-item">\n                        <Grid ColumnDefinitions="Auto,*">\n                            <TextBlock Grid.Column="0" Text="\uD83D\uDCC2" Classes="nav-icon"/>\n                            <TextBlock Grid.Column="1" Text="Files"/>\n                        </Grid>\n                    </ListBoxItem>'''
content = content.replace(observe_pattern, files_after_observe)

# Add Auto-Select button and grid column shift
content = content.replace(
    'Content="\uD83D\uDD04 Fetch Formats" Command="{Binding FetchFormatsCommand}" Classes="primary small" IsEnabled="{Binding IsFormatsLoading, Converter={StaticResource InverseBoolConverter}}"',
    'Content="\uD83C\uDFAF Auto Select" Command="{Binding AutoSelectFormatCommand}" Classes="small" Grid.Column="2"'
)
content = content.replace(
    'Command="{Binding FetchFormatsCommand}" Classes="primary small" IsEnabled=',
…
Done - MainWindow.axaml updated
Lines: 573
# Fix the duplicate Grid.Column issue in MainWindow.axaml
import re

with open('/home/user/YTDLnisDesktop/src/YTDLnisDesktop.App/Views/MainWindow.axaml', 'r', encoding='utf-8') as f:
    content = f.read()

# Fix: remove duplicate Grid.Column from the Fetch Formats button
# The button currently has "Grid.Column="2" Content="🔄..." Grid.Column="3""
# We need to remove the first Grid.Column="2" 
content = content.replace(
    'Button Grid.Column="2" Content="\U0001F504 Fetch Formats" Command="{Binding FetchFormatsCommand}" Classes="primary small" Grid.Column="3" IsEnabled=',
    'Button Content="\U0001F504 Fetch Formats" Command="{Binding FetchFormatsCommand}" Classes="primary small" Grid.Column="2" IsEnabled='
)

with open('/home/user/YTDLnisDesktop/src/YTDLnisDesktop.App/Views/MainWindow.axaml', 'w', encoding='utf-8') as f:
    f.write(content)

print("Fixed duplicate Grid.Column")
Fixed duplicate Grid.Column