[{"data":1,"prerenderedAt":350},["ShallowReactive",2],{"\u002Fblog\u002F2026\u002Fi-ported-gnome-files-to-macos":3},{"id":4,"title":5,"body":6,"date":335,"description":336,"draft":337,"extension":338,"meta":339,"navigation":340,"path":341,"seo":342,"stem":343,"summary":344,"tags":345,"__hash__":349},"blog\u002Fblog\u002F2026\u002F05.i-ported-gnome-files-to-macos.md","I ported GNOME Files to MacOS",{"type":7,"value":8,"toc":317},"minimark",[9,13,16,19,24,27,30,33,36,41,44,47,51,54,65,72,76,79,82,85,88,92,95,107,110,114,117,120,124,127,146,150,167,171,174,177,180,183,187,196,221,224,252,261,265,273,276,285,289,292,295,302,310,313],[10,11,12],"p",{},"Hi there.",[10,14,15],{},"I ported GNOME Files (you may know it as Nautilus) to MacOS. It's called Miles,\nit's free and open source, and you can install it today.",[10,17,18],{},"This is a short announcement, for anyone looking for a free and open source\nalternative to the Finder app that comes with a Mac.",[20,21,23],"h2",{"id":22},"motivation","Motivation",[10,25,26],{},"I switched from Linux, with the GNOME desktop and its apps, to a Mac because\nwork required it.",[10,28,29],{},"I loved GNOME's interface: its consistency, its speed, and how easy it is to\nuse. So I was pretty disappointed when I switched over. Managing windows and\nfolders on the Mac never felt right to me.",[10,31,32],{},"What did I miss from Files? Everything, honestly. The consistency, the way\nthings are organized, and how it looks.",[10,34,35],{},"After two years, I decided it was time to port Files (again).",[37,38,40],"h3",{"id":39},"were-there-other-options","Were there other options?",[10,42,43],{},"I tried other file managers, but most of them are paid and I couldn't afford\nto pay. The ones I tried also didn't look as good to me as Files does.",[10,45,46],{},"Homebrew didn't have a build of Nautilus either. I tried building it myself\nback then, but libraries that only exist on Linux were the blocker. That's the\n\"again\" from earlier :)",[20,48,50],{"id":49},"what-is-miles","What is Miles?",[10,52,53],{},"Mac + Files. MacFiles. So, Miles.",[10,55,56,57,64],{},"It looks and works the way Files does on GNOME, and follows MacOS wherever the\nMac has its own way of doing things. It's based on\n",[58,59,63],"a",{"href":60,"rel":61},"https:\u002F\u002Fgitlab.gnome.org\u002FGNOME\u002Fnautilus\u002F-\u002Ftree\u002F51.0.1",[62],"nofollow","Files 51.0.1",".",[10,66,67],{},[68,69],"img",{"alt":70,"src":71},"The Utilities folder of MacOS in Miles, in the dark appearance","\u002Fimages\u002Fmiles\u002Futilities-dark.png",[37,73,75],{"id":74},"what-am-i-happy-about","What am I happy about?",[10,77,78],{},"Search, first. It had always been broken for me on the Mac. Simple queries\ndidn't work for me in Finder, only in Spotlight, and that wasn't very reliable\neither. In Miles, search finds files by name, with no index to wait for.",[10,80,81],{},"Then uninstall. Dragging an app to the Trash, away from the folder it's\nalready in, is bad UX to me. In Miles, you right-click an app and pick\nUninstall. It moves the app to the Trash, and it can take the settings and\ndata the app left in your Library along with it.",[10,83,84],{},"Network folders work too. Servers on your local network show up by\nthemselves, and you can connect to SFTP, WebDAV, FTP, and AFP servers by\naddress.",[10,86,87],{},"And theming. I've used Yaru before and I loved it (nostalgia), so Miles uses\nthe Yaru icon theme. Folders take the accent colour you picked in System\nSettings, and they change with the light and dark appearance.",[37,89,91],{"id":90},"why-not-spotlight","Why not Spotlight?",[10,93,94],{},"Files on GNOME searches with an indexer (a service that keeps a list of your\nfiles ready, so searching is quick). That indexer doesn't exist on a Mac, so I\nhad to switch it for something else.",[10,96,97,98,102,103,106],{},"Spotlight is the index MacOS already has, so it was the first thing to reach\nfor. But it has never just worked for me, from day one. Searching by\nextension, like ",[99,100,101],"code",{},".png"," or ",[99,104,105],{},".dmg",", was hit and miss. And the port shouldn't be\nslow.",[10,108,109],{},"So Miles goes through your folders itself. Once that turned out to be the\nbetter option, Spotlight wasn't needed anymore. The price is searching inside\nthe contents of files, which only an index gives you.",[37,111,113],{"id":112},"why-does-miles-start-its-own-d-bus","Why does Miles start its own D-Bus?",[10,115,116],{},"Network folders, the Trash, and Recent come from a part of GNOME called gvfs.\nIt talks to Files over D-Bus, which is how apps and services on a Linux\ndesktop send messages to each other.",[10,118,119],{},"A Mac doesn't have that the way Linux does, so Miles starts a private one when\nit opens, and stops it when you quit.",[20,121,123],{"id":122},"where-does-it-differ-from-gnome-files","Where does it differ from GNOME Files?",[10,125,126],{},"For consistency, things need to work the way the Mac already handles them. So:",[128,129,130,134,137,140,143],"ul",{},[131,132,133],"li",{},"The Trash is the Trash of MacOS. What you delete in Miles is there in Finder\ntoo.",[131,135,136],{},"An app shows as a single item with the icon Finder gives it, and a\ndouble-click opens it.",[131,138,139],{},"When MacOS hasn't allowed Miles into a folder, it says so and gives you a\nbutton to the right page of System Settings.",[131,141,142],{},"iCloud Drive, Google Drive, and OneDrive show up in the sidebar once their\napps are set up.",[131,144,145],{},"Preferences opens with Command-comma. Every other shortcut uses Control, as\non GNOME.",[20,147,149],{"id":148},"what-is-missing","What is missing?",[128,151,152,155,158,161,164],{},[131,153,154],{},"Extensions, and with them Open in Terminal. I can't allow them, since\nsomeone would install something custom and break their app.",[131,156,157],{},"Saved passwords for servers. That's for the future.",[131,159,160],{},"Opening a folder as administrator. Not an intended use yet.",[131,162,163],{},"Thumbnails. Pictures and documents show the icon of their type for now,\nsorry :(",[131,165,166],{},"Searching inside the contents of files.",[20,168,170],{"id":169},"where-did-claude-come-in","Where did Claude come in?",[10,172,173],{},"All the commits were made by Claude. The architecture was already there,\ndesigned by the people who build Files at GNOME, so the port only extends it.",[10,175,176],{},"I know the Linux community is not very happy about AI being used to write\ncode. In my defense, I don't know C well enough to make changes to such a\nlarge codebase, and I don't have the time to. And inconvenience is such a big\nmotivator.",[10,178,179],{},"All the decisions were mine: the design, the architecture, the code style,\nwhich modules to patch, and the icon. Claude did the code writing.",[10,181,182],{},"Do I trust code I didn't type? Not that much, honestly. I know a little C and\nhow to read code, and I read most of it. But install the app at your own risk.",[20,184,186],{"id":185},"how-can-you-try-it","How can you try it?",[10,188,189,190,195],{},"With ",[58,191,194],{"href":192,"rel":193},"https:\u002F\u002Fbrew.sh",[62],"Homebrew",", on a Mac with Apple silicon:",[197,198,203],"pre",{"className":199,"code":200,"language":201,"meta":202,"style":202},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","brew install astraldev\u002Ftap\u002Fmiles\n","bash","",[99,204,205],{"__ignoreMap":202},[206,207,210,214,218],"span",{"class":208,"line":209},"line",1,[206,211,213],{"class":212},"sBMFI","brew",[206,215,217],{"class":216},"sfazB"," install",[206,219,220],{"class":216}," astraldev\u002Ftap\u002Fmiles\n",[10,222,223],{},"Then open it, and keep it in the Dock to find it again:",[197,225,227],{"className":199,"code":226,"language":201,"meta":202,"style":202},"open \"$(brew --prefix miles)\u002FMiles.app\"\n",[99,228,229],{"__ignoreMap":202},[206,230,231,234,238,240,243,246,249],{"class":208,"line":209},[206,232,233],{"class":212},"open",[206,235,237],{"class":236},"sMK4o"," \"$(",[206,239,213],{"class":212},[206,241,242],{"class":216}," --prefix miles",[206,244,245],{"class":236},")",[206,247,248],{"class":216},"\u002FMiles.app",[206,250,251],{"class":236},"\"\n",[10,253,254,255,260],{},"There is also a disk image on the\n",[58,256,259],{"href":257,"rel":258},"https:\u002F\u002Fgithub.com\u002Fastraldev\u002FMiles\u002Freleases",[62],"releases page",". It needs MacOS 15\nor newer, and since the app isn't signed, MacOS warns you the first time you\nopen it.",[20,262,264],{"id":263},"licensing-and-credits","Licensing and credits",[10,266,267,268,64],{},"Miles is free software under the GNU General Public License, version 3 or\nlater, the same as Files. The source is on\n",[58,269,272],{"href":270,"rel":271},"https:\u002F\u002Fgithub.com\u002Fastraldev\u002FMiles",[62],"GitHub",[10,274,275],{},"It is unofficial. It isn't made, endorsed, or supported by the GNOME Project or\nby Apple.",[10,277,278,279,284],{},"The icons are ",[58,280,283],{"href":281,"rel":282},"https:\u002F\u002Fgithub.com\u002Fubuntu\u002Fyaru",[62],"Yaru"," by the Ubuntu community,\nbundled with the app under CC BY-SA 4.0.",[20,286,288],{"id":287},"future-improvements","Future improvements",[10,290,291],{},"Thumbnails, since there are none yet.",[10,293,294],{},"A signed app, one that opens without the warning, will only be possible with\nthe help of donations, since the app is free.",[10,296,297,298,64],{},"How can you help? Bug reports. If something breaks for you, open an issue on\n",[58,299,272],{"href":300,"rel":301},"https:\u002F\u002Fgithub.com\u002Fastraldev\u002FMiles\u002Fissues",[62],[10,303,304,305,309],{},"Miles also has ",[58,306,308],{"href":307},"\u002Fprojects\u002Fmiles","its own page"," on this site, with more\nscreenshots.",[10,311,312],{},"Thank you for taking the time to read! :)",[314,315,316],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":202,"searchDepth":318,"depth":318,"links":319},2,[320,324,329,330,331,332,333,334],{"id":22,"depth":318,"text":23,"children":321},[322],{"id":39,"depth":323,"text":40},3,{"id":49,"depth":318,"text":50,"children":325},[326,327,328],{"id":74,"depth":323,"text":75},{"id":90,"depth":323,"text":91},{"id":112,"depth":323,"text":113},{"id":122,"depth":318,"text":123},{"id":148,"depth":318,"text":149},{"id":169,"depth":318,"text":170},{"id":185,"depth":318,"text":186},{"id":263,"depth":318,"text":264},{"id":287,"depth":318,"text":288},"2026-10-05","Miles is an unofficial port of GNOME Files (Nautilus) to MacOS. What works, what is missing, how to install it, and where Claude came in.",false,"md",{},true,"\u002Fblog\u002F2026\u002Fi-ported-gnome-files-to-macos",{"title":5,"description":336},"blog\u002F2026\u002F05.i-ported-gnome-files-to-macos","I moved from GNOME to a Mac for work, and I never stopped missing Files (Nautilus). So after two years I ported it. It's called Miles, it's free and open source, and here's what works, what's missing, and how you can try it.",[346,347,348],"gnome","macos","gtk","RuzIsm3uygJ2l_rguSX872Ud9Mu8z6jLRwzzveOJldc",1791209266017]