1<!DOCTYPE html> 2<html lang="en" class="dark"> 3 4<head> 5 <meta charset="UTF-8" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <title>Bottles - Run Windows Software on Linux</title> 8 <link rel="shortcut icon" href="/uploads/bottles.png" type="image/png" /> 9 <link rel="icon" type="image/png" href="/uploads/bottles.png" /> 10 <link rel="stylesheet" href="https://mastodon.online/custom.css" media="all" /> 11 <link href='https://mastodon.online/@usebottles.rss' rel='alternate' type='application/rss+xml'> 12 <link href='https://mastodon.online/users/usebottles' rel='alternate' type='application/activity+json'> 13 <meta content="profile" property="og:type"> 14 <meta content='81 Posts, 14 Following, 830 Followers · Run Windows software on Linux with Bottles.' 15 name='description'> 16 <meta content="https://mastodon.online/@usebottles" property="og:url"> 17 <meta content="Mastodon" property="og:site_name"> 18 <meta content="usebottles (@[email protected])" property="og:title"> 19 <meta content="81 Posts, 14 Following, 830 Followers · Run Windows software on Linux with Bottles." 20 property="og:description"> 21 <meta content="https://files.mastodon.online/accounts/avatars/108/200/697/004/152/142/original/b30e7d4b6fe0ad6e.png" 22 property="og:image"> 23 <meta content="400" property="og:image:width"> 24 <meta content="400" property="og:image:height"> 25 <meta content="summary" property="twitter:card"> 26 <meta content="[email protected]" property="profile:username"> 27
27<script src="https://cdn.tailwindcss.com"></script>
27 28 <link rel="preconnect" href="https://fonts.googleapis.com"> 29 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 30 <link 31 href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Merriweather:wght@300;400;700&display=swap" 32 rel="stylesheet"> 33
33<script> 34 tailwind.config = { 35 darkMode: 'class', 36 theme: { 37 extend: { 38 fontFamily: { 39 sans: ['Inter', 'sans-serif'], 40 serif: ['Merriweather', 'serif'], 41 }, 42 colors: { 43 background: 'rgb(var(--background) / <alpha-value>)', 44 foreground: 'rgb(var(--foreground) / <alpha-value>)', 45 surface: 'rgb(var(--surface) / <alpha-value>)', 46 border: 'rgb(var(--border) / <alpha-value>)', 47 }, 48 backgroundImage: { 49 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', 50 'hero-glow': 'conic-gradient(from 180deg at 50% 50%, #2a8af6 0deg, #a853ba 180deg, #e92a67 360deg)', 51 }, 52 animation: { 53 'float': 'float 6s ease-in-out infinite', 54 }, 55 keyframes: { 56 float: { 57 '0%, 100%': { transform: 'translateY(0)' }, 58 '50%': { transform: 'translateY(-20px)' }, 59 } 60 } 61 } 62 } 63 } 64 </script>
64 65 <style> 66 :root { 67 --background: 255 255 255; 68 --foreground: 9 9 11; 69 --surface: 244 244 245; 70 --border: 228 228 231; 71 --grid-color: rgba(0, 0, 0, 0.08); 72 } 73 74 .dark { 75 --background: 0 0 0; 76 --foreground: 255 255 255; 77 --surface: 9 9 11; 78 --border: 39 39 42; 79 --grid-color: rgba(255, 255, 255, 0.1); 80 } 81 82 body { 83 background-color: rgb(var(--background)); 84 color: rgb(var(--foreground)); 85 -webkit-font-smoothing: antialiased; 86 -moz-osx-font-smoothing: grayscale; 87 transition: background-color 0.3s, color 0.3s; 88 } 89 90 .bg-grid { 91 background-size: 40px 40px; 92 background-image: linear-gradient(to right, var(--grid-color) 1px, transparent 1px), 93 linear-gradient(to bottom, var(--grid-color) 1px, transparent 1px); 94 mask-image: linear-gradient(to bottom, black 60%, transparent 100%); 95 -webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%); 96 } 97 98 ::-webkit-scrollbar { 99 width: 8px; 100 } 101 102 ::-webkit-scrollbar-track { 103 background: rgb(var(--background)); 104 } 105 106 ::-webkit-scrollbar-thumb { 107 background: rgb(var(--border)); 108 border-radius: 4px; 109 } 110 111 ::-webkit-scrollbar-thumb:hover { 112 background: #71717a; 113 } 114 115 .prose h1 { 116 font-size: 2.25rem; 117 font-weight: 700; 118 margin-bottom: 1.5rem; 119 color: rgb(var(--foreground)); 120 letter-spacing: -0.025em; 121 } 122 123 .prose h2 { 124 font-size: 1.5rem; 125 font-weight: 600; 126 margin-top: 2.5rem; 127 margin-bottom: 1rem; 128 color: rgb(var(--foreground)); 129 letter-spacing: -0.025em; 130 } 131 132 .prose h3 { 133 font-size: 1.25rem; 134 font-weight: 600; 135 margin-top: 2rem; 136 margin-bottom: 0.75rem; 137 color: rgb(var(--foreground)); 138 } 139 140 .prose p { 141 margin-bottom: 1.25rem; 142 line-height: 1.75; 143 color: #71717a; 144 } 145 146 .prose a { 147 color: rgb(var(--foreground)); 148 text-decoration: underline; 149 text-decoration-color: #71717a; 150 text-underline-offset: 4px; 151 } 152 153 .prose a:hover { 154 color: #3b82f6; 155 text-decoration-color: #3b82f6; 156 } 157 158 .prose ul { 159 list-style-type: disc; 160 padding-left: 1.5rem; 161 margin-bottom: 1.25rem; 162 color: #71717a; 163 } 164 165 .prose li { 166 margin-bottom: 0.5rem; 167 } 168 169 .prose strong { 170 color: rgb(var(--foreground)); 171 font-weight: 600; 172 } 173 174 .prose blockquote { 175 border-left: 4px solid rgb(var(--border)); 176 padding-left: 1rem; 177 font-style: italic; 178 color: #71717a; 179 margin: 1.5rem 0; 180 } 181 182 .prose code { 183 background-color: rgb(var(--surface)); 184 padding: 0.2em 0.4em; 185 border-radius: 0.25rem; 186 font-size: 0.875em; 187 color: rgb(var(--foreground)); 188 font-family: monospace; 189 } 190 191 .prose pre { 192 margin: 1.75rem 0; 193 padding: 1.25rem 1.5rem; 194 overflow-x: auto; 195 background-color: #18181b; 196 border: 1px solid #3f3f46; 197 border-radius: 0.75rem; 198 color: #f4f4f5; 199 font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; 200 font-size: 0.875rem; 201 line-height: 1.65; 202 text-align: left; 203 tab-size: 2; 204 } 205 206 .prose pre code { 207 display: block; 208 padding: 0; 209 background: transparent; 210 border-radius: 0; 211 color: inherit; 212 font: inherit; 213 white-space: pre; 214 } 215 216 .dark .prose p { 217 color: #a1a1aa; 218 } 219 220 .dark .prose blockquote { 221 border-color: #27272a; 222 } 223 224 .dark .prose pre { 225 background-color: #09090b; 226 border-color: #27272a; 227 } 228 229 @media print { 230 @page { 231 margin: 2.5cm; 232 } 233 234 body { 235 background-color: white !important; 236 color: black !important; 237 } 238 239 nav, 240 footer, 241 button, 242 .no-print, 243 .fixed { 244 display: none !important; 245 } 246 247 .prose { 248 font-family: 'Merriweather', 'Georgia', serif !important; 249 color: black !important; 250 max-width: 100% !important; 251 font-size: 12pt !important; 252 line-height: 1.6 !important; 253 } 254 255 .prose h1 { 256 color: black !important; 257 font-size: 24pt !important; 258 border-bottom: 2px solid black; 259 padding-bottom: 10px; 260 margin-bottom: 30px; 261 text-align: center; 262 } 263 264 .prose h2, 265 .prose h3, 266 .prose strong { 267 color: black !important; 268 } 269 270 .prose p, 271 .prose ul, 272 .prose li { 273 color: #1a1a1a !important; 274 } 275 276 .prose a { 277 color: black !important; 278 text-decoration: underline !important; 279 } 280 281 .prose a[href^="http"]:after { 282 content: " (" attr(href) ")"; 283 font-size: 0.8em; 284 color: #555; 285 } 286 287 .prose code { 288 background-color: #f5f5f5 !important; 289 color: black !important; 290 border: 1px solid #ddd; 291 } 292 293 .prose pre { 294 background-color: #f5f5f5 !important; 295 color: black !important; 296 border: 1px solid #ddd; 297 white-space: pre-wrap; 298 } 299 300 .prose pre code { 301 border: 0; 302 white-space: inherit; 303 } 304 305 .print-only { 306 display: block !important; 307 } 308 } 309 310 .print-only { 311 display: none; 312 } 313 </style> 314 315
315<script type="module" crossorigin src="/assets/index-OuH8QUto.js"></script>
315 316</head> 317 318<body> 319 <div id="root"></div>
320<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"3b93a55400e349ac8cce5f973e9fb103","r":1,"spa":2}' crossorigin="anonymous"></script>
320 321</body> 322 323</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.