[
  {
    "path": ".gitignore",
    "content": ".DS_Store\n"
  },
  {
    "path": "Makefile",
    "content": ".DEFAULT_GOAL := all\n\nall: clone patch build\n\nclone:\n\t@rm -rf iTerm2\n\tgit clone --depth=1 https://github.com/gnachman/iTerm2.git\n\nclean:\n\tcd iTerm2; git reset --hard HEAD; git clean -fd\n\npatch:\n\tcp -v icons/AppIcon.appiconset/* iTerm2/Media.xcassets/AppIcon.appiconset/\n\tcd iTerm2; patch -p1 < ../iTerm2-borderless.patch\n\nupdate-patch:\n\tcd iTerm2; git diff > ../iTerm2-borderless.patch\n\nbuild:\n\tcd iTerm2; xcodebuild -project iTerm2.xcodeproj -configuration Deployment -target iTerm2 -parallelizeTargets\n\topen iTerm2/build/Deployment\n\ninstall-prefs:\n\tcp ~/Library/Preferences/com.googlecode.iterm2.plist com.googlecode.iterm2.plist~`date +%s`\n\tcp com.googlecode.iterm2.plist ~/Library/Preferences/com.googlecode.iterm2.plist\n\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n<img width=\"72\" style=\"margin-bottom: -20px\" src=\"https://github.com/jasonwoodland/iTerm2-borderless/blob/master/icons/AppIcon.png?raw=true\">\n</p>\n<h1 align=\"center\">iTerm2 borderless</h1>\n<p align=\"center\">\n<img align=\"center\" width=\"794\" src=\"https://github.com/jasonwoodland/iTerm2-borderless/blob/master/Preview.png?raw=true\">\n</p>\n\nMy custom iTerm2 patch and build.\n\n**DEPRECATED:** Consider using the latest iTerm as most the changes in this patch have been added/improved upon upstream.\n\n* Hides the standard window title bar\n* Modified tab bar\n* Moved the close tab button and new-output indicator to left of the tab label\n* New title format which shows either the title *or* the job name\n* New advanced options found under *Preferences > Advanced*: (Search for *&ldquo;borderless&rdquo;*)\n  * ***Standard window buttons horizontal/vertical offset:*** Change the position of the window buttons and title bar.\n  * ***Window title format:*** Set a custom title format\n  * ***Set cursor foreground color:*** Set whether to change the cursor foreground color\n  * ***Duration before cursor starts blinking:*** Set a duration for when the cursor should start blinking after it has moved\n  * ~~***Vertical cursor width***~~ You can now change the cursor width by setting *Vertical bar cursor width*\n* ~~Extra window padding~~ You can now change the margins in *Preferences > Advanced > General*\n* ~~Reverted to slightly bolder font smoothing~~ Set *Preferences > Profiles > Text > Use thin strokes for anti-aliased text* to *Never*\n\nDownload the [latest release](https://github.com/jasonwoodland/iTerm2-borderless/releases/latest) and copy `iTerm2.app` to `/Applications`, or apply the patch yourself. (Open an issue if it fails so I can update the patch)\n\n## Patch it yourself\n\n### 1. Get iTerm2-borderless\n\n```sh\ngit clone --depth=1 https://github.com/jasonwoodland/iTerm2-borderless.git\n```\n\n### 2. Get iTerm2, patch and build\n\n```sh\ncd iTerm2-borderless\nmake\n```\n\nIf building fails, you might need to set the development team in Xcode. Open the Xcode project file with the open command below, and change the team under *General > Signing > Team*\n\n```sh\nopen iTerm2/iTerm2.xcodeproj\n```\n\nThen try building again:\n\n```sh\nmake build\n```\n\n### 3. Install\n\nMove the app to `/Applications`\n\n### 4. Set preferences\n\nIn the patched build, go to *Preferences > Appearance* and disable *Show line under title bar when the tab bar is not visible*\n\nNext, go to *Preferences > Advanced*\n\n#### Set the terminal margins\n\n* Height of top and bottom margins in terminal panes\n* Width of left and right margins in terminal panes\n\n#### Set the title bar margins\n\n* Standard window buttons horizontal offset\n* Standard window buttons vertical offset\n\n## Still having trouble?\n\nIf iTerm still doesn't look right, try copying over the sane plist file: (it creates a backup of your current prefs file)\n\n```sh\nmake install-prefs\n```\n\nThen restart iTerm.\n\n## To do\n\n- [ ] Override preferences which break the patch for people (also override margin: 0)\n- [ ] Fix dragging tabs appearance\n- [ ] Fix title bar bug in fullscreen\n- [ ] Fix tabs disappearing after fullscreen\n"
  },
  {
    "path": "iTerm2-borderless.patch",
    "content": "diff --git a/ThirdParty/PSMTabBarControl/source/PSMDarkTabStyle.m b/ThirdParty/PSMTabBarControl/source/PSMDarkTabStyle.m\nindex e197d37..4585eda 100644\n--- a/ThirdParty/PSMTabBarControl/source/PSMDarkTabStyle.m\n+++ b/ThirdParty/PSMTabBarControl/source/PSMDarkTabStyle.m\n@@ -17,14 +17,18 @@ - (NSString *)name {\n }\n \n + (NSColor *)tabBarColorWhenKeyAndActive:(BOOL)keyAndActive {\n+    // PATCH: (Added) transparent tab bar\n+    return [NSColor clearColor];\n     if (@available(macOS 10.14, *)) {\n-        return [NSColor colorWithSRGBRed:0 green:0 blue:0 alpha:0.25];\n+        return [NSColor colorWithSRGBRed:0 green:0 blue:0 alpha:0.0];\n     } else {\n-        return [NSColor colorWithCalibratedWhite:0.12 alpha:1.00];\n+        return [NSColor colorWithCalibratedWhite:0.12 alpha:0.00];\n     }\n }\n \n - (NSColor *)tabBarColor {\n+    // PATCH: (Added) transparent tab bar\n+    return [NSColor clearColor];\n     return [PSMDarkTabStyle tabBarColorWhenKeyAndActive:self.tabBar.window.isKeyWindow && [NSApp isActive]];\n }\n \n@@ -53,6 +57,8 @@ - (NSColor *)topLineColorSelected:(BOOL)selected {\n }\n \n - (NSColor *)bottomLineColorSelected:(BOOL)selected {\n+    // PATCH: (Added) transparent tab bar bottom line\n+    return [NSColor clearColor];\n     if (@available(macOS 10.14, *)) {\n         return [NSColor colorWithWhite:0 alpha:0.1];\n     } else {\n@@ -61,6 +67,8 @@ - (NSColor *)bottomLineColorSelected:(BOOL)selected {\n }\n \n - (NSColor *)verticalLineColorSelected:(BOOL)selected {\n+    // PATCH: (Added) transparent tab bar vertical line\n+    return [NSColor clearColor];\n     if (@available(macOS 10.14, *)) {\n         return [self topLineColorSelected:selected];\n     } else {\n@@ -69,6 +77,8 @@ - (NSColor *)verticalLineColorSelected:(BOOL)selected {\n }\n \n - (NSColor *)backgroundColorSelected:(BOOL)selected highlightAmount:(CGFloat)highlightAmount {\n+    // PATCH: (Added) transparent tab bar\n+    return [NSColor clearColor];\n     if (@available(macOS 10.14, *)) {\n         CGFloat colors[3];\n         if (self.tabBar.window.isKeyWindow && [NSApp isActive]) {\ndiff --git a/ThirdParty/PSMTabBarControl/source/PSMTabBarCell.m b/ThirdParty/PSMTabBarControl/source/PSMTabBarCell.m\nindex 0d83568..fa513b9 100644\n--- a/ThirdParty/PSMTabBarControl/source/PSMTabBarCell.m\n+++ b/ThirdParty/PSMTabBarControl/source/PSMTabBarCell.m\n@@ -400,6 +400,8 @@ - (CGFloat)highlightAmount {\n \n - (void)mouseEntered:(NSEvent *)theEvent {\n     // check for which tag\n+    // PATCH: (Added) Don't show close button if the indicator is visible\n+    if (self.hasIcon) return;\n     if ([theEvent trackingNumber] == _closeButtonTrackingTag) {\n         _closeButtonOver = YES;\n     }\ndiff --git a/ThirdParty/PSMTabBarControl/source/PSMTabBarControl.m b/ThirdParty/PSMTabBarControl/source/PSMTabBarControl.m\nindex 54b162d..1cdc983 100644\n--- a/ThirdParty/PSMTabBarControl/source/PSMTabBarControl.m\n+++ b/ThirdParty/PSMTabBarControl/source/PSMTabBarControl.m\n@@ -1858,9 +1858,7 @@ - (NSTabViewItem *)tabView:(NSTabView *)tabView unknownObjectWasDropped:(id <NSD\n \n - (NSString *)view:(NSView *)view stringForToolTip:(NSToolTipTag)tag point:(NSPoint)point userData:(void *)userData\n {\n-    if ([[self delegate] respondsToSelector:@selector(tabView:toolTipForTabViewItem:)]) {\n-        return [[self delegate] tabView:[self tabView] toolTipForTabViewItem:[[self cellForPoint:point cellFrame:nil] representedObject]];\n-    }\n+    // PATCH: (Removed) always return empty string for tab tooltips\n     return @\"\";\n }\n \ndiff --git a/ThirdParty/PSMTabBarControl/source/PSMYosemiteTabStyle.m b/ThirdParty/PSMTabBarControl/source/PSMYosemiteTabStyle.m\nindex 1fd9750..57fe2db 100644\n--- a/ThirdParty/PSMTabBarControl/source/PSMYosemiteTabStyle.m\n+++ b/ThirdParty/PSMTabBarControl/source/PSMYosemiteTabStyle.m\n@@ -162,12 +162,14 @@ - (void)dealloc {\n #pragma mark - Control Specific\n \n - (float)leftMarginForTabBarControl {\n-    return self.tabBar.insets.left;\n+    // PATCH: (Modified) make room for window controls\n+    return 70.0f;\n }\n \n - (float)rightMarginForTabBarControl {\n     // Leaves space for overflow control.\n-    return 24.0f;\n+    // PATCH: (Modified) equal left/right margins so single tab window titles are centered\n+    return 70.0f;\n }\n \n // For vertical orientation\n@@ -224,6 +226,11 @@ - (NSRect)closeButtonRectForTabCell:(PSMTabBarCell *)cell {\n     result.origin.x = cellFrame.origin.x + kSPMTabBarCellInternalXMargin;\n     result.origin.y = cellFrame.origin.y + floor((cellFrame.size.height - result.size.height) / 2.0);\n \n+    // PATCH: (Added) Move closeButtonRect to display on the left of the tab cell label\n+    result.origin.x += cellFrame.size.width / 2 - result.size.width - 13;\n+    result.origin.x -= cell.attributedStringValue.size.width / 2;\n+    result.origin.y += 1;\n+    \n     return result;\n }\n \n@@ -459,7 +466,8 @@ - (NSAttributedString *)attributedStringValueForTabCell:(PSMTabBarCell *)cell {\n     // graphic\n     NSImage *graphic = [(id)[[cell representedObject] identifier] psmTabGraphic];\n \n-    NSFont *font = [NSFont systemFontOfSize:self.fontSize];\n+    // PATCH: (Modified) larger font size for tab label\n+    NSFont *font = [NSFont systemFontOfSize:NSFont.systemFontSize];\n     NSDictionary *attributes = @{ NSFontAttributeName: font,\n                                   NSForegroundColorAttributeName: [self textColorForCell:cell],\n                                   NSParagraphStyleAttributeName: truncatingTailParagraphStyle };\n@@ -923,6 +931,8 @@ - (void)drawInteriorWithTabCell:(PSMTabBarCell *)cell\n \n     // icon\n     NSRect iconRect = NSZeroRect;\n+    // PATCH: (Moved) we need to access this property later on\n+    NSImage *icon = [(id)[[cell representedObject] identifier] icon];\n     if ([cell hasIcon]) {\n         iconRect = [self iconRectForTabCell:cell];\n         NSImage *icon = [(id)[[cell representedObject] identifier] icon];\n@@ -935,12 +945,8 @@ - (void)drawInteriorWithTabCell:(PSMTabBarCell *)cell\n             iconRect.origin.y -= (kPSMTabBarIconWidth - [icon size].height)/2.0;\n         }\n \n-        [icon drawInRect:iconRect\n-                fromRect:NSZeroRect\n-               operation:NSCompositingOperationSourceOver\n-                fraction:1.0\n-          respectFlipped:YES\n-                   hints:nil];\n+        // PATCH: (Removed) Don't draw the icon yet,\n+        // we need to mess with tht eframe first, see bottom of this method\n     }\n \n     // object counter\n@@ -957,16 +963,12 @@ - (void)drawInteriorWithTabCell:(PSMTabBarCell *)cell\n \n     // label rect\n     NSAttributedString *attributedString = [cell attributedStringValue];\n+    // PATCH: (Moved) we need to access this property later on\n+    NSRect labelRect;\n     if (attributedString.length > 0) {\n-        NSRect labelRect;\n         labelRect.origin.x = labelPosition;\n         labelRect.size.width = cellFrame.size.width - (labelRect.origin.x - cellFrame.origin.x) - kPSMTabBarCellPadding;\n-        if ([cell hasIcon]) {\n-            // Reduce size of label if there is an icon or activity indicator\n-            labelRect.size.width -= iconRect.size.width + kPSMTabBarCellIconPadding;\n-        } else if (![[cell indicator] isHidden]) {\n-            labelRect.size.width -= cell.indicator.frame.size.width + kPSMTabBarCellIconPadding;\n-        }\n+        // PATCH: (Removed) Don't mmove the label to the left if the indicator is visible\n         labelRect.size.height = cellFrame.size.height;\n \n         if ([cell count] > 0) {\n@@ -989,6 +991,19 @@ - (void)drawInteriorWithTabCell:(PSMTabBarCell *)cell\n \n         [attributedString drawInRect:labelRect];\n     }\n+    \n+    // PATCH: (Added) modify the icon frame and draw it\n+    if ([cell hasIcon]) {\n+        iconRect.origin.x -= labelRect.size.width / 2 + attributedString.size.width / 2 - 13;\n+        iconRect.origin.x -= iconRect.size.width; // Remove if we don't move the label over;\n+        iconRect.origin.y += 1;\n+        [icon drawInRect:iconRect\n+                fromRect:NSZeroRect\n+               operation:NSCompositingOperationSourceOver\n+                fraction:1.0\n+          respectFlipped:YES\n+                   hints:nil];\n+    }\n }\n \n - (NSColor *)tabBarColor {\n@@ -1105,8 +1120,9 @@ - (void)drawTabBar:(PSMTabBarControl *)bar\n     } else {\n         insetRect = clipRect;\n     }\n-    [self drawHorizontalLineInFrame:NSIntersectionRect(clipRect, insetRect) y:0];\n-\n+    \n+    // PATCH: (Removed) Don't draw horizontal lines for tabview\n+    \n     // no tab view == not connected\n     if (![bar tabView]) {\n         NSRect labelRect = rect;\ndiff --git a/iTerm2.xcodeproj/project.pbxproj b/iTerm2.xcodeproj/project.pbxproj\nindex 78ef8f4..0ee299e 100644\n--- a/iTerm2.xcodeproj/project.pbxproj\n+++ b/iTerm2.xcodeproj/project.pbxproj\n@@ -9529,7 +9529,8 @@\n \t\t\t\t\t\tDevelopmentTeam = H7V7XYVQ7D;\n \t\t\t\t\t};\n \t\t\t\t\t874206460564169600CFC3F1 = {\n-\t\t\t\t\t\tProvisioningStyle = Manual;\n+\t\t\t\t\t\tDevelopmentTeam = 4688J3MK2P;\n+\t\t\t\t\t\tProvisioningStyle = Automatic;\n \t\t\t\t\t\tSystemCapabilities = {\n \t\t\t\t\t\t\tcom.apple.HardenedRuntime = {\n \t\t\t\t\t\t\t\tenabled = 0;\n@@ -11972,11 +11973,11 @@\n \t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n \t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n \t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n-\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n-\t\t\t\tCODE_SIGN_STYLE = Manual;\n+\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n+\t\t\t\tCODE_SIGN_STYLE = Automatic;\n \t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n \t\t\t\tCOPY_PHASE_STRIP = YES;\n-\t\t\t\tDEVELOPMENT_TEAM = \"\";\n+\t\t\t\tDEVELOPMENT_TEAM = 4688J3MK2P;\n \t\t\t\tENABLE_HARDENED_RUNTIME = NO;\n \t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -12112,7 +12113,7 @@\n \t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n \t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n \t\t\t\tCOPY_PHASE_STRIP = YES;\n-\t\t\t\tDEVELOPMENT_TEAM = H7V7XYVQ7D;\n+\t\t\t\tDEVELOPMENT_TEAM = 4688J3MK2P;\n \t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"$(SRCROOT)\",\n@@ -12603,11 +12604,11 @@\n \t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n \t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n \t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n-\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n-\t\t\t\tCODE_SIGN_STYLE = Manual;\n+\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n+\t\t\t\tCODE_SIGN_STYLE = Automatic;\n \t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n \t\t\t\tCOPY_PHASE_STRIP = YES;\n-\t\t\t\tDEVELOPMENT_TEAM = \"\";\n+\t\t\t\tDEVELOPMENT_TEAM = 4688J3MK2P;\n \t\t\t\tENABLE_HARDENED_RUNTIME = NO;\n \t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -12779,7 +12780,7 @@\n \t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n \t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n \t\t\t\tCOPY_PHASE_STRIP = YES;\n-\t\t\t\tDEVELOPMENT_TEAM = H7V7XYVQ7D;\n+\t\t\t\tDEVELOPMENT_TEAM = 4688J3MK2P;\n \t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n \t\t\t\t\t\"$(inherited)\",\n \t\t\t\t\t\"$(SRCROOT)\",\n@@ -13644,12 +13645,12 @@\n \t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n \t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n \t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n-\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n-\t\t\t\tCODE_SIGN_STYLE = Manual;\n+\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n+\t\t\t\tCODE_SIGN_STYLE = Automatic;\n \t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n \t\t\t\tCOPY_PHASE_STRIP = NO;\n \t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n-\t\t\t\tDEVELOPMENT_TEAM = \"\";\n+\t\t\t\tDEVELOPMENT_TEAM = 4688J3MK2P;\n \t\t\t\tENABLE_HARDENED_RUNTIME = NO;\n \t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n \t\t\t\t\t\"$(inherited)\",\n@@ -13721,11 +13722,11 @@\n \t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n \t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n \t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n-\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n-\t\t\t\tCODE_SIGN_STYLE = Manual;\n+\t\t\t\tCODE_SIGN_IDENTITY = \"Mac Developer\";\n+\t\t\t\tCODE_SIGN_STYLE = Automatic;\n \t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n \t\t\t\tCOPY_PHASE_STRIP = YES;\n-\t\t\t\tDEVELOPMENT_TEAM = \"\";\n+\t\t\t\tDEVELOPMENT_TEAM = 4688J3MK2P;\n \t\t\t\tENABLE_HARDENED_RUNTIME = NO;\n \t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n \t\t\t\t\t\"$(inherited)\",\ndiff --git a/plists/iTerm2.plist b/plists/iTerm2.plist\nindex bc2fc2b..7e80879 100644\n--- a/plists/iTerm2.plist\n+++ b/plists/iTerm2.plist\n@@ -2,24 +2,6 @@\n <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n <plist version=\"1.0\">\n <dict>\n-\t<key>NSAppTransportSecurity</key>  \n-\t<dict>  \n-\t    <key>NSExceptionDomains</key>  \n-\t    <dict>  \n-\t\t<key>127.0.0.1</key>  \n-\t\t<dict>  \n-\t\t    <key>NSExceptionAllowsInsecureHTTPLoads</key>  \n-\t\t    <true/>  \n-\t\t</dict>  \n-\t\t<key>localhost</key>  \n-\t\t<dict>  \n-\t\t    <key>NSExceptionAllowsInsecureHTTPLoads</key>  \n-\t\t    <true/>  \n-\t\t</dict>  \n-\t    </dict>  \n-\t</dict> \n-\t<key>NSHumanReadableCopyright</key>\n-\t<string>GPL v2</string>\n \t<key>CFBundleDevelopmentRegion</key>\n \t<string>English</string>\n \t<key>CFBundleDocumentTypes</key>\n@@ -42,12 +24,12 @@\n \t\t\t<string>Editor</string>\n \t\t</dict>\n \t\t<dict>\n+\t\t\t<key>CFBundleTypeName</key>\n+\t\t\t<string>Folders</string>\n \t\t\t<key>CFBundleTypeOSTypes</key>\n \t\t\t<array>\n \t\t\t\t<string>fold</string>\n \t\t\t</array>\n-\t\t\t<key>CFBundleTypeName</key>\n-\t\t\t<string>Folders</string>\n \t\t\t<key>CFBundleTypeRole</key>\n \t\t\t<string>Editor</string>\n \t\t</dict>\n@@ -84,65 +66,6 @@\n \t\t\t</array>\n \t\t</dict>\n \t</array>\n-        <key>NSAppleEventsUsageDescription</key>\n-        <string>An application in iTerm2 wants to use AppleScript.</string>\n-        <key>NSCalendarsUsageDescription</key>\n-        <string>An application in iTerm2 wants to use Calendar data.</string>\n-        <key>NSCameraUsageDescription</key>\n-        <string>An application in iTerm2 wants to use the camera.</string>\n-        <key>NSContactsUsageDescription</key>\n-        <string>An application in iTerm2 wants to use your contacts.</string>\n-        <key>NSLocationAlwaysUsageDescription</key>\n-        <string>An application in iTerm2 wants to use your location information, even in the background.</string>\n-        <key>NSLocationUsageDescription</key>\n-        <string>An application in iTerm2 wants to use your location information.</string>\n-        <key>NSLocationWhenInUseUsageDescription</key>\n-        <string>An application in iTerm2 wants to use your location information while active.</string>\n-        <key>NSMicrophoneUsageDescription</key>\n-        <string>An application in iTerm2 wants to use your microphone.</string>\n-        <key>NSRemindersUsageDescription</key>\n-        <string>An application in iTerm2 wants to use your reminders.</string>\n-\t<key>NSServices</key>\n-\t<array>\n-\t\t<dict>\n-\t\t\t<key>NSMenuItem</key>\n-\t\t\t<dict>\n-\t\t\t\t<key>default</key>\n-\t\t\t\t<string>New iTerm2 Tab Here</string>\n-\t\t\t</dict>\n-\t\t\t<key>NSMessage</key>\n-\t\t\t<string>openTab</string>\n-\t\t\t<key>NSRequiredContext</key>\n-\t\t\t<dict>\n-\t\t\t\t<key>NSTextContent</key>\n-\t\t\t\t<string>FilePath</string>\n-\t\t\t</dict>\n-\t\t\t<key>NSSendTypes</key>\n-\t\t\t<array>\n-\t\t\t\t<string>NSFilenamesPboardType</string>\n-\t\t\t\t<string>public.plain-text</string>\n-\t\t\t</array>\n-\t\t</dict>\n-\t\t<dict>\n-\t\t\t<key>NSMenuItem</key>\n-\t\t\t<dict>\n-\t\t\t\t<key>default</key>\n-\t\t\t\t<string>New iTerm2 Window Here</string>\n-\t\t\t</dict>\n-\t\t\t<key>NSMessage</key>\n-\t\t\t<string>openWindow</string>\n-\t\t\t<key>NSRequiredContext</key>\n-\t\t\t<dict>\n-\t\t\t\t<key>NSTextContent</key>\n-\t\t\t\t<string>FilePath</string>\n-\t\t\t</dict>\n-\t\t\t<key>NSSendTypes</key>\n-\t\t\t<array>\n-\t\t\t\t<string>NSFilenamesPboardType</string>\n-\t\t\t\t<string>public.plain-text</string>\n-\t\t\t</array>\n-\t\t</dict>\n-\t</array>\n \t<key>CFBundleExecutable</key>\n \t<string>iTerm2</string>\n \t<key>CFBundleGetInfoString</key>\n@@ -154,7 +77,7 @@\n \t<key>CFBundleIconFile</key>\n \t<string>iTerm2.icns</string>\n \t<key>CFBundleIdentifier</key>\n-\t<string>com.googlecode.iterm2</string>\n+\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n \t<key>CFBundleInfoDictionaryVersion</key>\n \t<string>6.0</string>\n \t<key>CFBundleName</key>\n@@ -268,25 +191,102 @@\n \t<string>unknown</string>\n \t<key>LSApplicationCategoryType</key>\n \t<string>public.app-category.utilities</string>\n+\t<key>NSAppTransportSecurity</key>\n+\t<dict>\n+\t\t<key>NSExceptionDomains</key>\n+\t\t<dict>\n+\t\t\t<key>127.0.0.1</key>\n+\t\t\t<dict>\n+\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n+\t\t\t\t<true/>\n+\t\t\t</dict>\n+\t\t\t<key>localhost</key>\n+\t\t\t<dict>\n+\t\t\t\t<key>NSExceptionAllowsInsecureHTTPLoads</key>\n+\t\t\t\t<true/>\n+\t\t\t</dict>\n+\t\t</dict>\n+\t</dict>\n+\t<key>NSAppleEventsUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use AppleScript.</string>\n \t<key>NSAppleScriptEnabled</key>\n \t<string>YES</string>\n-\t<key>OSAScriptingDefinition</key>\n-\t<string>iTerm2.sdef</string>\n+\t<key>NSCalendarsUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use Calendar data.</string>\n+\t<key>NSCameraUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use the camera.</string>\n+\t<key>NSContactsUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use your contacts.</string>\n \t<key>NSExtensions</key>\n \t<dict/>\n+\t<key>NSHumanReadableCopyright</key>\n+\t<string>GPL v2</string>\n+\t<key>NSLocationAlwaysUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use your location information, even in the background.</string>\n+\t<key>NSLocationUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use your location information.</string>\n+\t<key>NSLocationWhenInUseUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use your location information while active.</string>\n \t<key>NSMainNibFile</key>\n \t<string>MainMenu</string>\n+\t<key>NSMicrophoneUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use your microphone.</string>\n \t<key>NSPrincipalClass</key>\n \t<string>iTermApplication</string>\n-\t<key>SUPublicDSAKeyFile</key>\n-\t<string>dsa_pub.pem</string>\n+\t<key>NSRemindersUsageDescription</key>\n+\t<string>An application in iTerm2 wants to use your reminders.</string>\n+\t<key>NSServices</key>\n+\t<array>\n+\t\t<dict>\n+\t\t\t<key>NSMenuItem</key>\n+\t\t\t<dict>\n+\t\t\t\t<key>default</key>\n+\t\t\t\t<string>New iTerm2 Tab Here</string>\n+\t\t\t</dict>\n+\t\t\t<key>NSMessage</key>\n+\t\t\t<string>openTab</string>\n+\t\t\t<key>NSRequiredContext</key>\n+\t\t\t<dict>\n+\t\t\t\t<key>NSTextContent</key>\n+\t\t\t\t<string>FilePath</string>\n+\t\t\t</dict>\n+\t\t\t<key>NSSendTypes</key>\n+\t\t\t<array>\n+\t\t\t\t<string>NSFilenamesPboardType</string>\n+\t\t\t\t<string>public.plain-text</string>\n+\t\t\t</array>\n+\t\t</dict>\n+\t\t<dict>\n+\t\t\t<key>NSMenuItem</key>\n+\t\t\t<dict>\n+\t\t\t\t<key>default</key>\n+\t\t\t\t<string>New iTerm2 Window Here</string>\n+\t\t\t</dict>\n+\t\t\t<key>NSMessage</key>\n+\t\t\t<string>openWindow</string>\n+\t\t\t<key>NSRequiredContext</key>\n+\t\t\t<dict>\n+\t\t\t\t<key>NSTextContent</key>\n+\t\t\t\t<string>FilePath</string>\n+\t\t\t</dict>\n+\t\t\t<key>NSSendTypes</key>\n+\t\t\t<array>\n+\t\t\t\t<string>NSFilenamesPboardType</string>\n+\t\t\t\t<string>public.plain-text</string>\n+\t\t\t</array>\n+\t\t</dict>\n+\t</array>\n \t<key>NSSupportsAutomaticGraphicsSwitching</key>\n \t<true/>\n-\t<key>SUFeedURLForTesting</key>\n-\t<string>https://iterm2.com/appcasts/testing.xml</string>\n+\t<key>OSAScriptingDefinition</key>\n+\t<string>iTerm2.sdef</string>\n+\t<key>SUFeedURL</key>\n+\t<string>https://iterm2.com/appcasts/final.xml</string>\n \t<key>SUFeedURLForFinal</key>\n \t<string>https://iterm2.com/appcasts/final.xml</string>\n-        <key>SUFeedURL</key>\n-        <string>https://iterm2.com/appcasts/final.xml</string>\n+\t<key>SUFeedURLForTesting</key>\n+\t<string>https://iterm2.com/appcasts/testing.xml</string>\n+\t<key>SUPublicDSAKeyFile</key>\n+\t<string>dsa_pub.pem</string>\n </dict>\n </plist>\ndiff --git a/sources/PTYSession.m b/sources/PTYSession.m\nindex 624603c..2494f98 100644\n--- a/sources/PTYSession.m\n+++ b/sources/PTYSession.m\n@@ -3583,7 +3583,9 @@ - (void)setPreferencesFromAddressBookEntry:(NSDictionary *)aePrefs {\n                                                        inBookmark:aDict]];\n \n     // transparency\n-    [self setTransparency:[iTermProfilePreferences floatForKey:KEY_TRANSPARENCY inProfile:aDict]];\n+    // PATCH: (Modified) now the window appears semi-transparent, not the terminal\n+    // So if it's not opaque, make the terminal fully transparent\n+    [self setTransparency:[iTermProfilePreferences floatForKey:KEY_TRANSPARENCY inProfile:aDict] == 0 ? 0 : 1];\n     [self setBlend:[iTermProfilePreferences floatForKey:KEY_BLEND inProfile:aDict]];\n     [self setTransparencyAffectsOnlyDefaultBackgroundColor:[iTermProfilePreferences floatForKey:KEY_TRANSPARENCY_AFFECTS_ONLY_DEFAULT_BACKGROUND_COLOR inProfile:aDict]];\n \n@@ -3981,10 +3983,7 @@ - (float)transparency\n \n - (void)setTransparency:(float)transparency\n {\n-    // Limit transparency because fully transparent windows can't be clicked on.\n-    if (transparency > 0.9) {\n-        transparency = 0.9;\n-    }\n+    // PATCH: (Removed) ignore limit, make terminal fully transparent, they can still be clicked\n     [_textview setTransparency:transparency];\n     [self useTransparencyDidChange];\n     [self.view setNeedsDisplay:YES];\ndiff --git a/sources/PTYTab.m b/sources/PTYTab.m\nindex 54ddef3..95197c4 100644\n--- a/sources/PTYTab.m\n+++ b/sources/PTYTab.m\n@@ -557,6 +557,16 @@ - (void)setState:(NSUInteger)flagsToSet reset:(NSUInteger)flagsToReset {\n }\n \n - (void)updateIcon {\n+    NSArray *commands = [[iTermAdvancedSettingsModel disabledNewOutputIndicatorCommands] componentsSeparatedByString:@\",\"];\n+    for (id command in commands) {\n+        NSString *trimmedCommand = [command stringByTrimmingCharactersInSet:\n+                                    [NSCharacterSet whitespaceAndNewlineCharacterSet]];\n+        if ([[self.activeSession.childJobNames lastObject] isEqualToString:trimmedCommand]) {\n+            [self setIcon:nil];\n+            return;\n+        }\n+    }\n+    \n     if (_state & kPTYTabDeadState) {\n         [self setIcon:[PTYTab deadImageWithAppearance:self.realParentWindow.window.effectiveAppearance]];\n     } else if (_state & kPTYTabBellState) {\n@@ -572,6 +582,30 @@ - (void)updateIcon {\n     }\n }\n \n+/*- (void)updateIcon {\n+    if (_state & kPTYTabDeadState) {\n+        [self setIcon:[PTYTab deadImageWithAppearance:self.realParentWindow.window.effectiveAppearance]];\n+    } else if (_state & kPTYTabBellState) {\n+        if ([iTermAdvancedSettingsModel showNewOutputIndicatorForBell]) {\n+            [self setIcon:[PTYTab imageForNewOutputWithAppearance:self.realParentWindow.window.effectiveAppearance]];\n+            [self setState:kPTYTabNewOutputState reset:kPTYTabBellState];\n+            [self updateIcon];\n+        } else {\n+            [self setIcon:[PTYTab bellImage]];\n+        }\n+    } else if ([iTermPreferences boolForKey:kPreferenceKeyShowNewOutputIndicator] &&\n+               (_state & (kPTYTabNewOutputState))) {\n+        if (![iTermAdvancedSettingsModel showNewOutputIndicatorForBell]) {\n+            [self setIcon:[PTYTab imageForNewOutputWithAppearance:self.realParentWindow.window.effectiveAppearance]];\n+        }\n+    } else if ([iTermPreferences boolForKey:kPreferenceKeyShowNewOutputIndicator] &&\n+               (_state & kPTYTabIdleState)) {\n+        [self setIcon:[PTYTab idleImageWithAppearance:self.realParentWindow.window.effectiveAppearance]];\n+    } else {\n+        [self setIcon:nil];\n+    }\n+}*/\n+\n - (void)loadTitleFromSession {\n     tabViewItem_.label = self.activeSession.name;\n }\n@@ -584,7 +618,8 @@ - (void)nameOfSession:(PTYSession *)session didChangeTo:(NSString*)newName {\n \n - (void)updateTabTitleForCurrentSessionName:(NSString *)newName {\n     NSString *value = (self.evaluatedTitleOverride ?: newName) ?: @\" \";\n-    [tabViewItem_ setLabel:value];  // PSM uses bindings to bind the label to its title\n+    // PATCH: (Modified) set tab view label to the window title if it's set\n+    [tabViewItem_ setLabel:self.activeSession.windowTitle.length != 0 ? self.activeSession.windowTitle : value];  // PSM uses bindings to bind the label to its title\n     [self.realParentWindow tabTitleDidChange:self];\n }\n \ndiff --git a/sources/PTYTextView.m b/sources/PTYTextView.m\nindex 3359c5a..f3a6aaa 100644\n--- a/sources/PTYTextView.m\n+++ b/sources/PTYTextView.m\n@@ -587,7 +587,8 @@ - (BOOL)isFlipped\n \n - (BOOL)isOpaque\n {\n-    return YES;\n+    // PATCH: (Modified) transparent so we can see our semi-transparent window\n+    return NO;\n }\n \n - (void)setHighlightCursorLine:(BOOL)highlightCursorLine {\ndiff --git a/sources/PseudoTerminal.m b/sources/PseudoTerminal.m\nindex 04262b2..dea52c2 100644\n--- a/sources/PseudoTerminal.m\n+++ b/sources/PseudoTerminal.m\n@@ -404,12 +404,12 @@ + (void)registerSessionsInArrangement:(NSDictionary *)arrangement {\n }\n \n + (void)updateDecorationsOfWindow:(NSWindow *)myWindow forType:(iTermWindowType)windowType {\n-    const BOOL isCompact = (windowType == WINDOW_TYPE_COMPACT);\n-    [myWindow setHasShadow:(windowType == WINDOW_TYPE_NORMAL ||\n-                            isCompact)];\n-    // Chrome doesn't change titleVisibility so neither do we.\n-    // Some truly dreadful hacks are used instead. See PTYWindow.m.\n-    myWindow.titlebarAppearsTransparent = isCompact;\n+    // PATCH: (Modified) Native macOS window shadow\n+    [myWindow setHasShadow:YES];\n+    [myWindow setTitleVisibility:NSWindowTitleHidden];\n+    \n+    // PATCH: (Modified) Hides title bar strip for our tab view instead\n+    myWindow.titlebarAppearsTransparent = YES;\n }\n \n + (NSInteger)styleMaskForWindowType:(iTermWindowType)windowType\n@@ -418,6 +418,10 @@ + (NSInteger)styleMaskForWindowType:(iTermWindowType)windowType\n     if (hotkeyWindowType == iTermHotkeyWindowTypeFloatingPanel) {\n         mask = NSWindowStyleMaskNonactivatingPanel;\n     }\n+    \n+    // PATCH: (Added) Always use full size content view\n+    mask |= NSWindowStyleMaskFullSizeContentView;\n+    \n     switch (windowType) {\n         case WINDOW_TYPE_TOP:\n         case WINDOW_TYPE_BOTTOM:\n@@ -1853,7 +1857,8 @@ - (void)setWindowTitle {\n     if (self.isShowingTransientTitle) {\n         PTYSession *session = self.currentSession;\n         NSString *aTitle;\n-        if (self.window.frame.size.width < 250) {\n+        // PATCH: (Modified) check tab width for displaying size when resizing\n+        if (self.window.frame.size.width / (self.tabs.count) < 200) {\n             aTitle = [NSString stringWithFormat:@\"%d✕%d\", session.columns, session.rows];\n         } else {\n             aTitle = [NSString stringWithFormat:@\"%@ \\u2014 %d✕%d\",\n@@ -3549,12 +3554,8 @@ - (NSEdgeInsets)tabBarInsets {\n }\n \n - (BOOL)tabBarAlwaysVisible {\n-    if (@available(macOS 10.14, *)) {\n-        if (togglingLionFullScreen_ || [self lionFullScreen]) {\n-            return YES;\n-        }\n-    }\n-    return ![iTermPreferences boolForKey:kPreferenceKeyHideTabBar];\n+    // PATCH: (Added) always show tab bar\n+    return YES;\n }\n \n - (BOOL)anyFullScreen\n@@ -4157,8 +4158,7 @@ - (void)toggleTraditionalFullScreenMode {\n         }\n         PtyLog(@\"toggleFullScreenMode - allocate new terminal\");\n     }\n-    [self.window setHasShadow:(windowType_ == WINDOW_TYPE_NORMAL ||\n-                               windowType_ == WINDOW_TYPE_COMPACT)];\n+    [self.window setHasShadow:YES]; // PATCH: (Modified) always set window shadow\n \n     if (!_fullScreen &&\n         [iTermPreferences boolForKey:kPreferenceKeyDisableFullscreenTransparencyByDefault]) {\n@@ -4277,7 +4277,7 @@ - (void)updateWindowShadow {\n         if ([iTermAdvancedSettingsModel disableWindowShadowWhenTransparencyOnMojave]) {\n             const BOOL haveTransparency = [self anySessionInCurrentTabHasTransparency];\n             DLog(@\"%@: have transparency = %@ for sessions %@ in tab %@\", self, @(haveTransparency), self.currentTab.sessions, self.currentTab);\n-            self.window.hasShadow = !haveTransparency;\n+            self.window.hasShadow = YES; // PATCH: (Modified) always has window shadow\n         }\n     }\n }\n@@ -5611,9 +5611,10 @@ - (void)updateTabColors {\n         [_contentView.tabBarControl setTabColor:color forTabViewItem:tabViewItem];\n         if ([_contentView.tabView selectedTabViewItem] == tabViewItem) {\n             NSColor* newTabColor = [_contentView.tabBarControl tabColorForTabViewItem:tabViewItem];\n-            if ([_contentView.tabView numberOfTabViewItems] == 1 &&\n-                [iTermPreferences boolForKey:kPreferenceKeyHideTabBar] &&\n-                newTabColor) {\n+            if (YES) { // PATCH: (Modified) always use the tab color\n+                // PATCH: (Added) set window title background so it renders properly\n+                //NSTextView *titleView = [self.contentView.window standardWindowButton:NSWindowCloseButton].superview.subviews[3];\n+                //titleView.backgroundColor = [aSession.colorMap colorForKey:kColorMapBackground];\n                 [self setBackgroundColor:newTabColor];\n \n                 [_contentView setColor:newTabColor];\n@@ -5656,7 +5657,11 @@ - (void)setMojaveBackgroundColor:(nullable NSColor *)backgroundColor NS_AVAILABL\n             self.window.appearance = [NSAppearance appearanceNamed:NSAppearanceNameDarkAqua];\n             break;\n     }\n-    self.window.backgroundColor = self.anyPaneIsTransparent ? [NSColor clearColor] : [NSColor windowBackgroundColor];\n+    // PATCH: (Modified) set window background color so our transparent title bar doesn't show behind the window\n+    backgroundColor = [self.currentSession.colorMap colorForKey:kColorMapBackground];\n+    backgroundColor = [backgroundColor colorWithAlphaComponent:1 - [iTermProfilePreferences floatForKey:KEY_TRANSPARENCY inProfile:self.currentSession.profile]];\n+    \n+    self.window.backgroundColor = backgroundColor;\n     self.window.titlebarAppearsTransparent = NO;  // Keep it from showing content from other windows behind it. Issue 7108.\n }\n \n@@ -5695,6 +5700,10 @@ - (void)setLegacyBackgroundColor:(nullable NSColor *)backgroundColor {\n         }\n         darkAppearance = (backgroundColor != nil && backgroundColor.perceivedBrightness < 0.5);\n     }\n+    \n+    // PATCH: (Added) set window background color to terminal background color\n+    backgroundColor = [self.currentSession.colorMap colorForKey:kColorMapBackground];\n+    \n     [self.window setBackgroundColor:backgroundColor];\n     if (darkAppearance) {\n         self.window.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];\ndiff --git a/sources/iTermAdvancedSettingsModel.h b/sources/iTermAdvancedSettingsModel.h\nindex f515a97..afca0be 100644\n--- a/sources/iTermAdvancedSettingsModel.h\n+++ b/sources/iTermAdvancedSettingsModel.h\n@@ -189,6 +189,14 @@ extern NSString *const iTermAdvancedSettingsDidChange;\n + (int)slowPasteBytesPerCall;\n + (double)slowPasteDelayBetweenCalls;\n \n+// PATCH: (Added) iTerm2-borderless Features\n++ (double)timeBeforeBlinks;\n++ (BOOL)setCursorForegroundColor;\n++ (NSString *)windowTitleFormat;\n++ (int)standardWindowButtonsHorizontalOffset;\n++ (int)standardWindowButtonsVerticalOffset;\n++ (NSString *)disabledNewOutputIndicatorCommands;\n+\n // The cursor's background goes to the \"most different\" color from its neighbors if the difference\n // in brightness between the proposed background color and the neighbors' background color is less\n // than this threshold.\ndiff --git a/sources/iTermAdvancedSettingsModel.m b/sources/iTermAdvancedSettingsModel.m\nindex a1bfd21..b14a593 100644\n--- a/sources/iTermAdvancedSettingsModel.m\n+++ b/sources/iTermAdvancedSettingsModel.m\n@@ -271,6 +271,19 @@ + (void)enumerateDictionaries:(void (^)(NSDictionary *))block {\n //   `-----'  :      :\n DEFINE_FLOAT(fractionOfCharacterSelectingNextNeighbor, 0.35, SECTION_MOUSE @\"Fraction of character’s width on its right side that can be used to select the character to its right.\");\n \n+// PATCH: (Added) iTerm2-borderless Features\n+\n+#pragma mark iTerm2-borderless Features\n+\n+#define SECTION_BORDERLESS @\"iTerm2-borderless Features: \"\n+\n+DEFINE_FLOAT(timeBeforeBlinks, 0.5, SECTION_BORDERLESS @\"Duration before cursor starts blinking after a keypress.\");\n+DEFINE_BOOL(setCursorForegroundColor, YES, SECTION_BORDERLESS @\"Set cursor foreground color.\");\n+//DEFINE_STRING(windowTitleFormat, @\"%@\", SECTION_BORDERLESS @\"Window title format\\n“%@” represents the current session name, e.g. 'Terminal - %@'\")\n+DEFINE_INT(standardWindowButtonsHorizontalOffset, 17, SECTION_BORDERLESS @\"Standard window buttons horizontal offset\")\n+DEFINE_INT(standardWindowButtonsVerticalOffset, 8, SECTION_BORDERLESS @\"Standard window buttons vertical offset\")\n+DEFINE_STRING(disabledNewOutputIndicatorCommands, @\"vi,vim,top,htop\", SECTION_BORDERLESS @\"Comma-seperated list of commands to not show new-output indicator\");\n+\n #pragma mark Terminal\n \n #define SECTION_TERMINAL @\"Terminal: \"\ndiff --git a/sources/iTermCursor.m b/sources/iTermCursor.m\nindex a38fd56..c944dd6 100644\n--- a/sources/iTermCursor.m\n+++ b/sources/iTermCursor.m\n@@ -209,9 +209,10 @@ - (void)drawWithRect:(NSRect)rect\n                                      coord:coord];\n         } else {\n             // Non-smart\n+            // PATCH: (Modified) Set cursor foreground color\n             [self.delegate cursorDrawCharacterAt:coord\n                                      doubleWidth:doubleWidth\n-                                   overrideColor:foregroundColor\n+                                   overrideColor:[iTermAdvancedSettingsModel setCursorForegroundColor] == YES ? foregroundColor : nil\n                                          context:ctx\n                                  backgroundColor:backgroundColor];\n         }\ndiff --git a/sources/iTermRootTerminalView.m b/sources/iTermRootTerminalView.m\nindex b1d5a10..8d050c1 100644\n--- a/sources/iTermRootTerminalView.m\n+++ b/sources/iTermRootTerminalView.m\n@@ -136,7 +136,7 @@ - (instancetype)initWithFrame:(NSRect)frameRect\n                 [self setTabBarControlAutoresizingMask:(NSViewHeightSizable | NSViewMaxXMargin)];\n                 break;\n         }\n-        if (@available(macOS 10.14, *)) {\n+        if (NO) {\n             [self addSubview:_tabBarBacking];\n             [_tabBarBacking addSubview:_tabBarControl];\n         } else {\n@@ -695,7 +695,8 @@ - (void)layoutSubviewsTopTabBarVisible:(BOOL)topTabBarVisible forWindow:(NSWindo\n }\n \n - (void)setTabBarFrame:(NSRect)frame {\n-    if (@available(macOS 10.14, *)) {\n+    frame.origin.y -= 10;\n+    if (NO) {\n         assert(!_tabBarControlOnLoan);\n         _tabBarBacking.frame = frame;\n         self.tabBarControl.frame = _tabBarBacking.bounds;\ndiff --git a/sources/iTermTabBarControlView.m b/sources/iTermTabBarControlView.m\nindex 4be80cf..b4014de 100644\n--- a/sources/iTermTabBarControlView.m\n+++ b/sources/iTermTabBarControlView.m\n@@ -13,7 +13,7 @@\n #import \"NSObject+iTerm.h\"\n #import \"NSView+iTerm.h\"\n \n-CGFloat iTermTabBarControlViewDefaultHeight = 24;\n+CGFloat iTermTabBarControlViewDefaultHeight = 22; // PATCH: (Modified) hide tab bar\n \n @interface NSView (Private)\n - (NSRect)_opaqueRectForWindowMoveWhenInTitlebar;\n@@ -49,8 +49,8 @@ - (instancetype)initWithFrame:(NSRect)frameRect {\n \n - (void)drawRect:(NSRect)dirtyRect {\n     if (@available(macOS 10.14, *)) { } else {\n-        [[NSColor windowBackgroundColor] set];\n-        NSRectFill(dirtyRect);\n+        [[NSColor clearColor] set];\n+        //NSRectFill(dirtyRect);\n     }\n \n     [super drawRect:dirtyRect];\n@@ -245,7 +245,8 @@ - (void)setFlashState:(iTermTabBarFlashState)flashState {\n #pragma mark - Window Dragging\n \n - (BOOL)mouseDownCanMoveWindow {\n-    return [self.itermTabBarDelegate iTermTabBarCanDragWindow] ? NO : [super mouseDownCanMoveWindow];\n+    // PATCH: (Modified) make it easier to drag the window without the tab bar getting in the way\n+    return YES;\n }\n \n - (NSRect)_opaqueRectForWindowMoveWhenInTitlebar {\ndiff --git a/sources/iTermTextDrawingHelper.m b/sources/iTermTextDrawingHelper.m\nindex 49bbd96..9977aac 100644\n--- a/sources/iTermTextDrawingHelper.m\n+++ b/sources/iTermTextDrawingHelper.m\n@@ -2586,10 +2586,11 @@ - (NSColor *)backgroundColorForCursor {\n }\n \n - (BOOL)shouldShowCursor {\n+    // PATCH: (Modified) Blink delay after moving the cursor\n     if (_cursorBlinking &&\n         self.isInKeyWindow &&\n         _textViewIsActiveSession &&\n-        [NSDate timeIntervalSinceReferenceDate] - _lastTimeCursorMoved > 0.5) {\n+        [NSDate timeIntervalSinceReferenceDate] - _lastTimeCursorMoved > [iTermAdvancedSettingsModel timeBeforeBlinks]) {\n         // Allow the cursor to blink if it is configured, the window is key, this session is active\n         // in the tab, and the cursor has not moved for half a second.\n         return _blinkingItemsVisible;\ndiff --git a/sources/iTermWindowImpl.m b/sources/iTermWindowImpl.m\nindex 235077c..bc66a5c 100644\n--- a/sources/iTermWindowImpl.m\n+++ b/sources/iTermWindowImpl.m\n@@ -60,6 +60,48 @@ - (void)iterm_dealloc {\n \n }\n \n+// PATCH: (Added) Modify standard title bar\n+- (void)layoutIfNeeded {\n+    NSButton *closeButton = [self.contentView.window standardWindowButton:NSWindowCloseButton];\n+    NSButton *miniaturizeButton = [self.contentView.window standardWindowButton:NSWindowMiniaturizeButton];\n+    NSButton *fullscreenButton = [self.contentView.window standardWindowButton:NSWindowZoomButton];\n+    \n+    int horizOff = [iTermAdvancedSettingsModel standardWindowButtonsHorizontalOffset];\n+    int vertOff = [iTermAdvancedSettingsModel standardWindowButtonsVerticalOffset] + 20;\n+    \n+    [closeButton setFrameOrigin:NSMakePoint(0 + horizOff, 3)];\n+    [miniaturizeButton setFrameOrigin:NSMakePoint(20 + horizOff, 3)];\n+    [fullscreenButton setFrameOrigin:NSMakePoint(40 + horizOff, 3)];\n+    \n+    NSView *lights = closeButton.superview.superview;\n+    if (lights) {\n+        NSRect newFrame = lights.frame;\n+        newFrame.origin.y = self.contentView.frame.size.height - vertOff;\n+        lights.frame = newFrame;\n+    }\n+    \n+    \n+    self.titlebarAppearsTransparent = true;\n+    \n+    \n+    if (@available(macOS 10.14, *)) {\n+        NSView *decorationView = closeButton.superview.superview.subviews[1];\n+        decorationView.layer.opacity = 0.0;\n+    }\n+    \n+    /*\n+    NSTextView *titleView = closeButton.superview.subviews[3];\n+    titleView.font = [NSFont systemFontOfSize:13];\n+    [titleView removeConstraints:titleView.constraints];\n+    CGRect frame = titleView.frame;\n+    frame.size.width = 200;\n+    frame.origin.y = 3;\n+    titleView.frame = frame;\n+    titleView.drawsBackground = true;\n+ */\n+    [super layoutIfNeeded];\n+}\n+\n - (BOOL)titleChangedRecently {\n     NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];\n     return (now > _timeOfLastWindowTitleChange && now - _timeOfLastWindowTitleChange < iTermWindowTitleChangeMinimumInterval);\n"
  },
  {
    "path": "icons/generate.sh",
    "content": "#!/usr/bin/env bash\n\nsource=\"AppIcon.png\"\ndest=\"AppIcon.appiconset\"\n\nmkdir $dest\nsips -z 16 16  \"$source\" --out \"$dest/icon_16x16.png\"\nsips -z 32 32  \"$source\" --out \"$dest/icon_16x16@2x.png\"\nsips -z 32 32  \"$source\" --out \"$dest/icon_32x32.png\"\nsips -z 64 64  \"$source\" --out \"$dest/icon_32x32@2x.png\"\nsips -z 128 128  \"$source\" --out \"$dest/icon_128x128.png\"\nsips -z 256 256  \"$source\" --out \"$dest/icon_128x128@2x.png\"\nsips -z 256 256  \"$source\" --out \"$dest/icon_256x256.png\"\nsips -z 512 512  \"$source\" --out \"$dest/icon_256x256@2x.png\"\nsips -z 512 512  \"$source\" --out \"$dest/icon_512x512.png\"\ncp \"$source\" \"$dest/icon_512x512@2x.png\"\niconutil -c icns \"$dest\"\n"
  }
]