├── demo1.gif
├── demo2.gif
├── PasteBoardFinderExtension
├── PasteBoard 2021-03-10 20-46-08
│ └── PasteBoard.app
│ │ └── Contents
│ │ ├── PkgInfo
│ │ ├── MacOS
│ │ └── PasteBoard
│ │ ├── Resources
│ │ ├── Assets.car
│ │ ├── AppIcon.icns
│ │ └── Main.storyboardc
│ │ │ ├── Info.plist
│ │ │ └── MainMenu.nib
│ │ ├── PlugIns
│ │ └── PasteBoardFinderExtension.appex
│ │ │ └── Contents
│ │ │ ├── Resources
│ │ │ └── Assets.car
│ │ │ ├── MacOS
│ │ │ └── PasteBoardFinderExtension
│ │ │ ├── Info.plist
│ │ │ └── _CodeSignature
│ │ │ └── CodeResources
│ │ ├── Info.plist
│ │ └── _CodeSignature
│ │ └── CodeResources
├── Media.xcassets
│ ├── Contents.json
│ └── toolbar-icon.imageset
│ │ ├── paste (10).png
│ │ ├── paste (9).png
│ │ ├── paste (10)-1.png
│ │ ├── paste (10)-2.png
│ │ ├── paste (9)-1.png
│ │ ├── paste (9)-2.png
│ │ └── Contents.json
├── PasteBoardFinderExtension.entitlements
├── Utils.swift
├── Info.plist
└── FinderSync.swift
├── PasteBoard
├── Assets.xcassets
│ ├── Contents.json
│ ├── AppIcon.appiconset
│ │ ├── 128@1x.png
│ │ ├── 128@2x.png
│ │ ├── 16@1x.png
│ │ ├── 16@2x.png
│ │ ├── 256@1x.png
│ │ ├── 256@2x.png
│ │ ├── 32@1x.png
│ │ ├── 32@2x.png
│ │ ├── 512@1x.png
│ │ ├── 512@2x.png
│ │ └── Contents.json
│ ├── menubar-icon.imageset
│ │ ├── paste (9).png
│ │ ├── paste (10).png
│ │ ├── paste (9)-1.png
│ │ ├── paste (9)-2.png
│ │ ├── paste (10)-1.png
│ │ ├── paste (10)-2.png
│ │ └── Contents.json
│ └── AccentColor.colorset
│ │ └── Contents.json
├── PasteBoard.entitlements
├── Utils.swift
├── Info.plist
├── AppDelegate.swift
└── Main.storyboard
├── PasteBoard.xcodeproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── xcuserdata
│ └── stevenselcuk.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
└── project.pbxproj
└── README.md
/demo1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/demo1.gif
--------------------------------------------------------------------------------
/demo2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/demo2.gif
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/128@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/128@1x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/128@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/128@2x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/16@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/16@1x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/16@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/16@2x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/256@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/256@1x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/256@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/256@2x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/32@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/32@1x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/32@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/32@2x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/512@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/512@1x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/512@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/AppIcon.appiconset/512@2x.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (9).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (9).png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (10).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (10).png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (9)-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (9)-1.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (9)-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (9)-2.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (10)-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (10)-1.png
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (10)-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoard/Assets.xcassets/menubar-icon.imageset/paste (10)-2.png
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (10).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (10).png
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (9).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (9).png
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (10)-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (10)-1.png
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (10)-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (10)-2.png
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (9)-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (9)-1.png
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (9)-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/paste (9)-2.png
--------------------------------------------------------------------------------
/PasteBoard.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/MacOS/PasteBoard:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/MacOS/PasteBoard
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/Assets.car:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/Assets.car
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/AppIcon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/AppIcon.icns
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/Main.storyboardc/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/Main.storyboardc/Info.plist
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/Main.storyboardc/MainMenu.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Resources/Main.storyboardc/MainMenu.nib
--------------------------------------------------------------------------------
/PasteBoard.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/PlugIns/PasteBoardFinderExtension.appex/Contents/Resources/Assets.car:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/PlugIns/PasteBoardFinderExtension.appex/Contents/Resources/Assets.car
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/PlugIns/PasteBoardFinderExtension.appex/Contents/MacOS/PasteBoardFinderExtension:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stevenselcuk/PasteBoard/HEAD/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/PlugIns/PasteBoardFinderExtension.appex/Contents/MacOS/PasteBoardFinderExtension
--------------------------------------------------------------------------------
/PasteBoard/PasteBoard.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.application-groups
8 |
9 | group.org.tabbycatllc.PasteBoard
10 |
11 | com.apple.security.files.user-selected.read-only
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoardFinderExtension.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.application-groups
8 |
9 | group.org.tabbycatllc.PasteBoard
10 |
11 | com.apple.security.files.user-selected.read-only
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/PasteBoard.xcodeproj/xcuserdata/stevenselcuk.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | PasteBoard.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 1
11 |
12 | PasteBoardFinderExtension.xcscheme_^#shared#^_
13 |
14 | orderHint
15 | 0
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/PasteBoard/Utils.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Utils.swift
3 | // PasteBoard
4 | //
5 | // Created by Steven J. Selcuk on 11.03.2021.
6 | //
7 |
8 | import Cocoa
9 |
10 | extension String {
11 | enum TruncationPosition {
12 | case head
13 | case middle
14 | case tail
15 | }
16 |
17 | func truncated(limit: Int, position: TruncationPosition = .tail, leader: String = "...") -> String {
18 | guard count > limit else { return self }
19 |
20 | switch position {
21 | case .head:
22 | return leader + suffix(limit)
23 | case .middle:
24 | let headCharactersCount = Int(ceil(Float(limit - leader.count) / 2.0))
25 |
26 | let tailCharactersCount = Int(floor(Float(limit - leader.count) / 2.0))
27 |
28 | return "\(prefix(headCharactersCount))\(leader)\(suffix(tailCharactersCount))"
29 | case .tail:
30 | return prefix(limit) + leader
31 | }
32 | }
33 | }
34 |
35 |
36 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Utils.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Utils.swift
3 | // PasteBoardFinderExtension
4 | //
5 | // Created by Steven J. Selcuk on 10.03.2021.
6 | //
7 |
8 | import Cocoa
9 |
10 | // I found on SO. no time for it.
11 | extension String {
12 | enum TruncationPosition {
13 | case head
14 | case middle
15 | case tail
16 | }
17 |
18 | func truncated(limit: Int, position: TruncationPosition = .tail, leader: String = "...") -> String {
19 | guard count > limit else { return self }
20 |
21 | switch position {
22 | case .head:
23 | return leader + suffix(limit)
24 | case .middle:
25 | let headCharactersCount = Int(ceil(Float(limit - leader.count) / 2.0))
26 |
27 | let tailCharactersCount = Int(floor(Float(limit - leader.count) / 2.0))
28 |
29 | return "\(prefix(headCharactersCount))\(leader)\(suffix(tailCharactersCount))"
30 | case .tail:
31 | return prefix(limit) + leader
32 | }
33 | }
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/PasteBoard/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSApplicationCategoryType
24 | public.app-category.productivity
25 | LSMinimumSystemVersion
26 | $(MACOSX_DEPLOYMENT_TARGET)
27 | NSMainStoryboardFile
28 | Main
29 | LSUIElement
30 |
31 | NSPrincipalClass
32 | NSApplication
33 |
34 |
35 |
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/menubar-icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "paste (9).png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "paste (10).png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "paste (9)-1.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "paste (10)-1.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "paste (9)-2.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "paste (10)-2.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Media.xcassets/toolbar-icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "paste (9).png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "paste (10).png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "paste (9)-1.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "paste (10)-1.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "paste (9)-2.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "paste (10)-2.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | PasteBoard Finder Extension
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | LSUIElement
26 |
27 | NSExtension
28 |
29 | NSExtensionAttributes
30 |
31 | NSExtensionPointIdentifier
32 | com.apple.FinderSync
33 | NSExtensionPrincipalClass
34 | $(PRODUCT_MODULE_NAME).FinderSync
35 |
36 | NSPrincipalClass
37 | NSApplication
38 |
39 |
40 |
--------------------------------------------------------------------------------
/PasteBoard/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "16@1x.png",
5 | "idiom" : "mac",
6 | "scale" : "1x",
7 | "size" : "16x16"
8 | },
9 | {
10 | "filename" : "16@2x.png",
11 | "idiom" : "mac",
12 | "scale" : "2x",
13 | "size" : "16x16"
14 | },
15 | {
16 | "filename" : "32@1x.png",
17 | "idiom" : "mac",
18 | "scale" : "1x",
19 | "size" : "32x32"
20 | },
21 | {
22 | "filename" : "32@2x.png",
23 | "idiom" : "mac",
24 | "scale" : "2x",
25 | "size" : "32x32"
26 | },
27 | {
28 | "filename" : "128@1x.png",
29 | "idiom" : "mac",
30 | "scale" : "1x",
31 | "size" : "128x128"
32 | },
33 | {
34 | "filename" : "128@2x.png",
35 | "idiom" : "mac",
36 | "scale" : "2x",
37 | "size" : "128x128"
38 | },
39 | {
40 | "filename" : "256@1x.png",
41 | "idiom" : "mac",
42 | "scale" : "1x",
43 | "size" : "256x256"
44 | },
45 | {
46 | "filename" : "256@2x.png",
47 | "idiom" : "mac",
48 | "scale" : "2x",
49 | "size" : "256x256"
50 | },
51 | {
52 | "filename" : "512@1x.png",
53 | "idiom" : "mac",
54 | "scale" : "1x",
55 | "size" : "512x512"
56 | },
57 | {
58 | "filename" : "512@2x.png",
59 | "idiom" : "mac",
60 | "scale" : "2x",
61 | "size" : "512x512"
62 | }
63 | ],
64 | "info" : {
65 | "author" : "xcode",
66 | "version" : 1
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 20C69
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | PasteBoard
11 | CFBundleIconFile
12 | AppIcon
13 | CFBundleIconName
14 | AppIcon
15 | CFBundleIdentifier
16 | org.tabbycatllc.PasteBoard
17 | CFBundleInfoDictionaryVersion
18 | 6.0
19 | CFBundleName
20 | PasteBoard
21 | CFBundlePackageType
22 | APPL
23 | CFBundleShortVersionString
24 | 1.0
25 | CFBundleSupportedPlatforms
26 |
27 | MacOSX
28 |
29 | CFBundleVersion
30 | 1
31 | DTCompiler
32 | com.apple.compilers.llvm.clang.1_0
33 | DTPlatformBuild
34 | 12E5244e
35 | DTPlatformName
36 | macosx
37 | DTPlatformVersion
38 | 11.3
39 | DTSDKBuild
40 | 20E5196d
41 | DTSDKName
42 | macosx11.3
43 | DTXcode
44 | 1250
45 | DTXcodeBuild
46 | 12E5244e
47 | LSApplicationCategoryType
48 | public.app-category.productivity
49 | LSMinimumSystemVersion
50 | 10.15
51 | NSMainStoryboardFile
52 | Main
53 | NSPrincipalClass
54 | NSApplication
55 |
56 |
57 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |

3 |
📋 PasteBoard • Pasteboard history on your menubar + Finder toolbar •
4 |
5 |
6 |
7 |
8 |
9 |
10 |
16 |
22 |
23 |
24 |
25 |
26 | ## About 📋 PasteBoard
27 |
28 | PasteBoard is clipboard history manager app with Finder extension that lists your recently copied text items.
29 |
30 |
31 | ### Main Features:
32 |
33 | - Menubar app
34 | - Finder extension for toolbar
35 | - Collects copied texts
36 | - 10 item limit
37 | - Clear PasteBoard
38 | - One-click copy items on demand
39 | - Nothing fancy. Keep it simple.
40 |
41 |
42 | ## Minimum Requirements 🤔
43 |
44 | `macOS >= 10.5`
45 |
46 | ## Download 🚀
47 |
48 | [📋v.1.0.0 App](https://github.com/stevenselcuk/PasteBoard/releases/download/v.1.0.0/PasteBoard.zip) | [📋v.1.0.0 Dmg](https://github.com/stevenselcuk/PasteBoard/releases/download/v.1.0.0/PasteBoard.1.0.dmg)
49 |
50 | ## Roadmap 🗺
51 |
52 | - [X] Initial Release
53 |
54 |
55 | ## Change log 🧠
56 |
57 | ### 🏷 v1.0 : Initial Release
58 |
59 |
60 | ## Notes and Credits 🍍
61 |
62 | Some of icons made by Freepik from www.flaticon.com
63 |
64 | ## Do you like it? 🙌
65 |
66 | [](https://www.buymeacoffee.com/stevenselcuk)
67 |
68 |
69 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/PlugIns/PasteBoardFinderExtension.appex/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 20C69
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleDisplayName
10 | PasteBoard Finder Extension
11 | CFBundleExecutable
12 | PasteBoardFinderExtension
13 | CFBundleIdentifier
14 | org.tabbycatllc.PasteBoard.PasteBoardFinderExtension
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | PasteBoardFinderExtension
19 | CFBundlePackageType
20 | XPC!
21 | CFBundleShortVersionString
22 | 1.0
23 | CFBundleSupportedPlatforms
24 |
25 | MacOSX
26 |
27 | CFBundleVersion
28 | 1
29 | DTCompiler
30 | com.apple.compilers.llvm.clang.1_0
31 | DTPlatformBuild
32 | 12E5244e
33 | DTPlatformName
34 | macosx
35 | DTPlatformVersion
36 | 11.3
37 | DTSDKBuild
38 | 20E5196d
39 | DTSDKName
40 | macosx11.3
41 | DTXcode
42 | 1250
43 | DTXcodeBuild
44 | 12E5244e
45 | LSMinimumSystemVersion
46 | 11.1
47 | LSUIElement
48 |
49 | NSExtension
50 |
51 | NSExtensionAttributes
52 |
53 | NSExtensionPointIdentifier
54 | com.apple.FinderSync
55 | NSExtensionPrincipalClass
56 | PasteBoardFinderExtension.FinderSync
57 |
58 | NSPrincipalClass
59 | NSApplication
60 |
61 |
62 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/PlugIns/PasteBoardFinderExtension.appex/Contents/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | Resources/Assets.car
8 |
9 | vDgfBuyajx4sxZIIANJGk4LlgSA=
10 |
11 |
12 | files2
13 |
14 | Resources/Assets.car
15 |
16 | hash2
17 |
18 | 7ih/56IEuWHk/lBubpDAXeyVE4MrF1cob6kTiRBy7eo=
19 |
20 |
21 |
22 | rules
23 |
24 | ^Resources/
25 |
26 | ^Resources/.*\.lproj/
27 |
28 | optional
29 |
30 | weight
31 | 1000
32 |
33 | ^Resources/.*\.lproj/locversion.plist$
34 |
35 | omit
36 |
37 | weight
38 | 1100
39 |
40 | ^Resources/Base\.lproj/
41 |
42 | weight
43 | 1010
44 |
45 | ^version.plist$
46 |
47 |
48 | rules2
49 |
50 | .*\.dSYM($|/)
51 |
52 | weight
53 | 11
54 |
55 | ^(.*/)?\.DS_Store$
56 |
57 | omit
58 |
59 | weight
60 | 2000
61 |
62 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
63 |
64 | nested
65 |
66 | weight
67 | 10
68 |
69 | ^.*
70 |
71 | ^Info\.plist$
72 |
73 | omit
74 |
75 | weight
76 | 20
77 |
78 | ^PkgInfo$
79 |
80 | omit
81 |
82 | weight
83 | 20
84 |
85 | ^Resources/
86 |
87 | weight
88 | 20
89 |
90 | ^Resources/.*\.lproj/
91 |
92 | optional
93 |
94 | weight
95 | 1000
96 |
97 | ^Resources/.*\.lproj/locversion.plist$
98 |
99 | omit
100 |
101 | weight
102 | 1100
103 |
104 | ^Resources/Base\.lproj/
105 |
106 | weight
107 | 1010
108 |
109 | ^[^/]+$
110 |
111 | nested
112 |
113 | weight
114 | 10
115 |
116 | ^embedded\.provisionprofile$
117 |
118 | weight
119 | 20
120 |
121 | ^version\.plist$
122 |
123 | weight
124 | 20
125 |
126 |
127 |
128 |
129 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/PasteBoard 2021-03-10 20-46-08/PasteBoard.app/Contents/_CodeSignature/CodeResources:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | files
6 |
7 | Resources/AppIcon.icns
8 |
9 | +4GyDTDus5oyTyggKGYb/ucxnlo=
10 |
11 | Resources/Assets.car
12 |
13 | /o3v+jlb9uQ0b9e7kLmpSHM16Mo=
14 |
15 | Resources/Main.storyboardc/Info.plist
16 |
17 | M1rS+Tcas1ZdM4/iibTlduTJ22M=
18 |
19 | Resources/Main.storyboardc/MainMenu.nib
20 |
21 | 3FoUkYYQixl7T2MjvZnw2CjCVlc=
22 |
23 |
24 | files2
25 |
26 | PlugIns/PasteBoardFinderExtension.appex
27 |
28 | cdhash
29 |
30 | 6S06nOzALYxNrn06TxtmHGSmnNc=
31 |
32 | requirement
33 | identifier "org.tabbycatllc.PasteBoard.PasteBoardFinderExtension" and anchor apple generic and certificate leaf[subject.CN] = "Apple Development: Selcuk Dolapci (4LG4QX2LRG)" and certificate 1[field.1.2.840.113635.100.6.2.1] /* exists */
34 |
35 | Resources/AppIcon.icns
36 |
37 | hash2
38 |
39 | LqUBkbXkFTYr2S3DiDGy8VfMn5yhRDLUa67g+OYL6zY=
40 |
41 |
42 | Resources/Assets.car
43 |
44 | hash2
45 |
46 | 3Inxphs1G5Wd2JeeOsatk5YzG71ET8Zc2/C4mK0Zxwk=
47 |
48 |
49 | Resources/Main.storyboardc/Info.plist
50 |
51 | hash2
52 |
53 | 6/2HagpKuzGhxFgQU55Lc/bxgR30qm5eqHSV+p9e4/4=
54 |
55 |
56 | Resources/Main.storyboardc/MainMenu.nib
57 |
58 | hash2
59 |
60 | 0WA7A6M4EovAiBcwxg2/4qyWSJ8VoyZEEMQawewURv8=
61 |
62 |
63 |
64 | rules
65 |
66 | ^Resources/
67 |
68 | ^Resources/.*\.lproj/
69 |
70 | optional
71 |
72 | weight
73 | 1000
74 |
75 | ^Resources/.*\.lproj/locversion.plist$
76 |
77 | omit
78 |
79 | weight
80 | 1100
81 |
82 | ^Resources/Base\.lproj/
83 |
84 | weight
85 | 1010
86 |
87 | ^version.plist$
88 |
89 |
90 | rules2
91 |
92 | .*\.dSYM($|/)
93 |
94 | weight
95 | 11
96 |
97 | ^(.*/)?\.DS_Store$
98 |
99 | omit
100 |
101 | weight
102 | 2000
103 |
104 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
105 |
106 | nested
107 |
108 | weight
109 | 10
110 |
111 | ^.*
112 |
113 | ^Info\.plist$
114 |
115 | omit
116 |
117 | weight
118 | 20
119 |
120 | ^PkgInfo$
121 |
122 | omit
123 |
124 | weight
125 | 20
126 |
127 | ^Resources/
128 |
129 | weight
130 | 20
131 |
132 | ^Resources/.*\.lproj/
133 |
134 | optional
135 |
136 | weight
137 | 1000
138 |
139 | ^Resources/.*\.lproj/locversion.plist$
140 |
141 | omit
142 |
143 | weight
144 | 1100
145 |
146 | ^Resources/Base\.lproj/
147 |
148 | weight
149 | 1010
150 |
151 | ^[^/]+$
152 |
153 | nested
154 |
155 | weight
156 | 10
157 |
158 | ^embedded\.provisionprofile$
159 |
160 | weight
161 | 20
162 |
163 | ^version\.plist$
164 |
165 | weight
166 | 20
167 |
168 |
169 |
170 |
171 |
--------------------------------------------------------------------------------
/PasteBoard/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // PasteBoard
4 | //
5 | // Created by Steven J. Selcuk on 10.03.2021.
6 | //
7 |
8 | import Cocoa
9 | import FinderSync
10 | @main
11 | class AppDelegate: NSObject, NSApplicationDelegate {
12 | var statusBarItem: NSStatusItem!
13 | let defaults = UserDefaults(suiteName: "group.org.tabbycatllc.PasteBoard")!
14 | var timer: Timer!
15 | var savedItems: [String] = UserDefaults(suiteName: "group.org.tabbycatllc.PasteBoard")!.stringArray(forKey: "SavedPasteBoardItems") ?? [String]()
16 | var lastChangeCount: Int = 0
17 | let pasteboard: NSPasteboard = .general
18 | var selectedItemIndex: Int = 0
19 | func applicationDidFinishLaunching(_ aNotification: Notification) {
20 | // Awesome menubar item. I love menubar apps. I am menubar app.
21 | statusBarItem = NSStatusBar.system.statusItem(withLength: CGFloat(NSStatusItem.variableLength))
22 |
23 | if let button = statusBarItem.button {
24 | button.image = NSImage(named: "menubar-icon")
25 | button.action = #selector(togglePopover(_:))
26 | button.sendAction(on: [.leftMouseUp, .rightMouseUp])
27 | }
28 |
29 | timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { [self] _ in
30 | //Finder Extension running we should sync them
31 | savedItems = UserDefaults(suiteName: "group.org.tabbycatllc.PasteBoard")!.stringArray(forKey: "SavedPasteBoardItems")!
32 | if self.lastChangeCount != self.pasteboard.changeCount {
33 | self.lastChangeCount = self.pasteboard.changeCount
34 |
35 | let pasteItems = self.pasteboard.pasteboardItems
36 |
37 | for case let pasteItem? in pasteItems ?? [] {
38 | // I let only 10 items, IDK why
39 | if self.savedItems.count >= 11 {
40 | // If you reach 10, delete first one.
41 | self.savedItems.removeFirst(1)
42 | }
43 |
44 | if !self.savedItems.contains(pasteItem.string(forType: .string)!) {
45 | // Plop it baby
46 | NSSound(named: "Pop")?.play()
47 | self.savedItems.append(pasteItem.string(forType: .string)!.trimmingCharacters(in: .whitespacesAndNewlines))
48 | defaults.set(self.savedItems, forKey: "SavedPasteBoardItems")
49 | defaults.synchronize()
50 | }
51 | }
52 | }
53 | }
54 | }
55 |
56 | @objc func togglePopover(_ sender: AnyObject?) {
57 | let event = NSApp.currentEvent!
58 |
59 | // Catch click on our menubar
60 | if event.type == NSEvent.EventType.leftMouseUp {
61 | let menu = NSMenu()
62 |
63 | // Create menu items, in according with, sexy array
64 | for (index, item) in savedItems.enumerated().reversed() {
65 | let menuItem = NSMenuItem(title: item.truncated(limit: 40, position: .tail, leader: "..."), action: #selector(copyAction(_:)), keyEquivalent: "\(index + 1)")
66 | menu.addItem(menuItem)
67 | }
68 |
69 | menu.addItem(NSMenuItem.separator())
70 | if savedItems.count > 0 {
71 | menu.addItem(withTitle: "🧹 Clear PasteBoard", action: #selector(clear(_:)), keyEquivalent: "c")
72 | }
73 |
74 | // Promote our awesome Finder Extension
75 | menu.addItem(withTitle: "Activate Finder Extension", action: #selector(activateExt), keyEquivalent: "e")
76 | // Obviously users can quit app
77 | menu.addItem(withTitle: "Quit App", action: #selector(quit), keyEquivalent: "q")
78 |
79 | statusBarItem.menu = menu
80 | statusBarItem.button?.performClick(nil)
81 | statusBarItem.menu = nil
82 | }
83 | }
84 |
85 | @objc func activateExt(_ sender: AnyObject?) {
86 | // Trigger Ext. section of settings
87 | FIFinderSyncController.showExtensionManagementInterface()
88 | }
89 |
90 | // Same as Finder Extension
91 | @objc func clear(_ sender: AnyObject?) {
92 | savedItems = []
93 | NSPasteboard.general.clearContents()
94 | defaults.set(self.savedItems, forKey: "SavedPasteBoardItems")
95 | defaults.synchronize()
96 | }
97 |
98 | @objc func copyAction(_ sender: NSMenuItem?) {
99 | let pasteboard = NSPasteboard.general
100 | pasteboard.clearContents()
101 | selectedItemIndex = Int(sender!.keyEquivalent)!
102 | if self.savedItems.count >= selectedItemIndex {
103 | pasteboard.setString(self.savedItems[selectedItemIndex - 1], forType: NSPasteboard.PasteboardType.string)
104 | }
105 | NSSound(named: "Pop")?.play()
106 | }
107 |
108 | @objc func quit() {
109 | NSApp.terminate(self)
110 | }
111 |
112 | func applicationWillTerminate(_ aNotification: Notification) {
113 | timer.invalidate()
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/PasteBoardFinderExtension/FinderSync.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FinderSync.swift
3 | // PasteBoardFinderExtension
4 | //
5 | // Created by Steven J. Selcuk on 10.03.2021.
6 | //
7 |
8 | import Cocoa
9 | import FinderSync
10 |
11 | class FinderSync: FIFinderSync {
12 | // App groups. We like it.
13 | let defaults = UserDefaults(suiteName: "group.org.tabbycatllc.PasteBoard")!
14 | var timer: Timer!
15 | var savedItems: [String] = UserDefaults(suiteName: "group.org.tabbycatllc.PasteBoard")!.stringArray(forKey: "SavedPasteBoardItems") ?? [String]()
16 | var lastChangeCount: Int = 0
17 | let pasteboard: NSPasteboard = .general
18 | var selectedItemIndex: Int = 0
19 |
20 | override init() {
21 | super.init()
22 | timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [self] _ in
23 | // Check if menubar app running, if yes sync Finder extension
24 | if (NSWorkspace.shared.runningApplications.contains { $0.bundleIdentifier == "org.tabbycatllc.PasteBoard" }) {
25 | savedItems = UserDefaults(suiteName: "group.org.tabbycatllc.PasteBoard")!.stringArray(forKey: "SavedPasteBoardItems")!
26 | } else {
27 | // Otherwise user wants to run extension as standalone app.
28 | // Our classic tactic is here
29 | if self.lastChangeCount != self.pasteboard.changeCount {
30 | self.lastChangeCount = self.pasteboard.changeCount
31 |
32 | let pasteItems = self.pasteboard.pasteboardItems
33 |
34 | for case let pasteItem? in pasteItems ?? [] {
35 | if self.savedItems.count >= 11 {
36 | self.savedItems.removeFirst(1)
37 | }
38 |
39 | if !self.savedItems.contains(pasteItem.string(forType: .string)!) {
40 | // Plop sound when something copied
41 | NSSound(named: "Pop")?.play()
42 | // Add copied text to our sexy array
43 | self.savedItems.append(pasteItem.string(forType: .string)!.trimmingCharacters(in: .whitespacesAndNewlines))
44 | // Save it universal storage
45 | defaults.set(self.savedItems, forKey: "SavedPasteBoardItems")
46 | defaults.synchronize()
47 | }
48 | }
49 | }
50 | }
51 | }
52 | }
53 | // This things for toolbars
54 | override var toolbarItemName: String {
55 | return "PasteBoard"
56 | }
57 |
58 | // This things for toolbars, show only on hover
59 | override var toolbarItemToolTip: String {
60 | return "PasteBoard: Right in your toolbar"
61 | }
62 |
63 | // Our nice icon for toolbar
64 | override var toolbarItemImage: NSImage {
65 | return NSImage(named: "toolbar-icon")!
66 | }
67 |
68 | override func menu(for menuKind: FIMenuKind) -> NSMenu {
69 | let menu = NSMenu(title: "")
70 | // Get current pasteboard items
71 | for item in savedItems.reversed() {
72 | // Create menu items
73 | let menuItem = NSMenuItem(title: item.truncated(limit: 30, position: .tail, leader: "..."), action: #selector(copyAction(_:)), keyEquivalent: "")
74 | // Add them to our menu object
75 | menu.addItem(menuItem)
76 | }
77 |
78 | // No item, no need to clear
79 | if savedItems.count > 0 {
80 | // Run clear func
81 | menu.addItem(withTitle: "🧹 Clear PasteBoard", action: #selector(clear(_:)), keyEquivalent: "")
82 | } else {
83 | // Create menu item
84 | let disabledMenuItem = NSMenuItem(title: "No items found.", action: nil, keyEquivalent: "")
85 | // Than disable it
86 | disabledMenuItem.isEnabled = false
87 | // After than register it
88 | menu.addItem(disabledMenuItem)
89 | }
90 |
91 | // Return it
92 | return menu
93 | }
94 |
95 | @objc func clear(_ sender: AnyObject?) {
96 | // Zero items in sexy array
97 | savedItems = []
98 | // Clear macOS pasteboard
99 | NSPasteboard.general.clearContents()
100 | // Zero saved items in defaults
101 | defaults.set(savedItems, forKey: "SavedPasteBoardItems")
102 | // Sync it
103 | defaults.synchronize()
104 | }
105 |
106 | @objc func copyAction(_ sender: NSMenuItem?) {
107 | let pasteboard = NSPasteboard.general
108 | pasteboard.clearContents()
109 | // We are using key equi thing as index number. But it's text. damn.
110 | selectedItemIndex = Int(sender!.keyEquivalent)!
111 | // We found which item user wants
112 | // Unnecassary check but
113 | if savedItems.count >= selectedItemIndex {
114 | // Save it to clipboard
115 | pasteboard.setString(savedItems[selectedItemIndex - 1], forType: NSPasteboard.PasteboardType.string)
116 | }
117 | // A plop again
118 | NSSound(named: "Pop")?.play()
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/PasteBoard.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 0A65B46925F9315600FB2DD4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A65B46825F9315600FB2DD4 /* AppDelegate.swift */; };
11 | 0A65B46D25F9315800FB2DD4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0A65B46C25F9315800FB2DD4 /* Assets.xcassets */; };
12 | 0A65B47F25F9318100FB2DD4 /* FinderSync.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A65B47E25F9318100FB2DD4 /* FinderSync.swift */; };
13 | 0A65B48425F9318100FB2DD4 /* PasteBoardFinderExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 0A65B47C25F9318100FB2DD4 /* PasteBoardFinderExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
14 | 0A65B48A25F931DD00FB2DD4 /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0A65B48925F931DD00FB2DD4 /* Media.xcassets */; };
15 | 0A65B48C25F9326200FB2DD4 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A65B48B25F9326200FB2DD4 /* Utils.swift */; };
16 | 0AB29AE525FA8D5F00667C7D /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AB29AE425FA8D5F00667C7D /* Utils.swift */; };
17 | 0ACF11CE25F9399600AAA8D4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0ACF11CD25F9399600AAA8D4 /* Main.storyboard */; };
18 | /* End PBXBuildFile section */
19 |
20 | /* Begin PBXContainerItemProxy section */
21 | 0A65B48225F9318100FB2DD4 /* PBXContainerItemProxy */ = {
22 | isa = PBXContainerItemProxy;
23 | containerPortal = 0A65B45D25F9315500FB2DD4 /* Project object */;
24 | proxyType = 1;
25 | remoteGlobalIDString = 0A65B47B25F9318100FB2DD4;
26 | remoteInfo = PasteBoardFinderExtension;
27 | };
28 | /* End PBXContainerItemProxy section */
29 |
30 | /* Begin PBXCopyFilesBuildPhase section */
31 | 0A65B48825F9318100FB2DD4 /* Embed App Extensions */ = {
32 | isa = PBXCopyFilesBuildPhase;
33 | buildActionMask = 2147483647;
34 | dstPath = "";
35 | dstSubfolderSpec = 13;
36 | files = (
37 | 0A65B48425F9318100FB2DD4 /* PasteBoardFinderExtension.appex in Embed App Extensions */,
38 | );
39 | name = "Embed App Extensions";
40 | runOnlyForDeploymentPostprocessing = 0;
41 | };
42 | /* End PBXCopyFilesBuildPhase section */
43 |
44 | /* Begin PBXFileReference section */
45 | 0A65B46525F9315600FB2DD4 /* PasteBoard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PasteBoard.app; sourceTree = BUILT_PRODUCTS_DIR; };
46 | 0A65B46825F9315600FB2DD4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
47 | 0A65B46C25F9315800FB2DD4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
48 | 0A65B47125F9315800FB2DD4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
49 | 0A65B47225F9315800FB2DD4 /* PasteBoard.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = PasteBoard.entitlements; sourceTree = ""; };
50 | 0A65B47C25F9318100FB2DD4 /* PasteBoardFinderExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = PasteBoardFinderExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
51 | 0A65B47E25F9318100FB2DD4 /* FinderSync.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FinderSync.swift; sourceTree = ""; };
52 | 0A65B48025F9318100FB2DD4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
53 | 0A65B48125F9318100FB2DD4 /* PasteBoardFinderExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = PasteBoardFinderExtension.entitlements; sourceTree = ""; };
54 | 0A65B48925F931DD00FB2DD4 /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = ""; };
55 | 0A65B48B25F9326200FB2DD4 /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; };
56 | 0AB29AE425FA8D5F00667C7D /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; };
57 | 0ACF11CD25F9399600AAA8D4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; };
58 | /* End PBXFileReference section */
59 |
60 | /* Begin PBXFrameworksBuildPhase section */
61 | 0A65B46225F9315600FB2DD4 /* Frameworks */ = {
62 | isa = PBXFrameworksBuildPhase;
63 | buildActionMask = 2147483647;
64 | files = (
65 | );
66 | runOnlyForDeploymentPostprocessing = 0;
67 | };
68 | 0A65B47925F9318100FB2DD4 /* Frameworks */ = {
69 | isa = PBXFrameworksBuildPhase;
70 | buildActionMask = 2147483647;
71 | files = (
72 | );
73 | runOnlyForDeploymentPostprocessing = 0;
74 | };
75 | /* End PBXFrameworksBuildPhase section */
76 |
77 | /* Begin PBXGroup section */
78 | 0A65B45C25F9315500FB2DD4 = {
79 | isa = PBXGroup;
80 | children = (
81 | 0A65B46725F9315600FB2DD4 /* PasteBoard */,
82 | 0A65B47D25F9318100FB2DD4 /* PasteBoardFinderExtension */,
83 | 0A65B46625F9315600FB2DD4 /* Products */,
84 | );
85 | sourceTree = "";
86 | };
87 | 0A65B46625F9315600FB2DD4 /* Products */ = {
88 | isa = PBXGroup;
89 | children = (
90 | 0A65B46525F9315600FB2DD4 /* PasteBoard.app */,
91 | 0A65B47C25F9318100FB2DD4 /* PasteBoardFinderExtension.appex */,
92 | );
93 | name = Products;
94 | sourceTree = "";
95 | };
96 | 0A65B46725F9315600FB2DD4 /* PasteBoard */ = {
97 | isa = PBXGroup;
98 | children = (
99 | 0A65B46825F9315600FB2DD4 /* AppDelegate.swift */,
100 | 0A65B46C25F9315800FB2DD4 /* Assets.xcassets */,
101 | 0A65B47125F9315800FB2DD4 /* Info.plist */,
102 | 0ACF11CD25F9399600AAA8D4 /* Main.storyboard */,
103 | 0A65B47225F9315800FB2DD4 /* PasteBoard.entitlements */,
104 | 0AB29AE425FA8D5F00667C7D /* Utils.swift */,
105 | );
106 | path = PasteBoard;
107 | sourceTree = "";
108 | };
109 | 0A65B47D25F9318100FB2DD4 /* PasteBoardFinderExtension */ = {
110 | isa = PBXGroup;
111 | children = (
112 | 0A65B47E25F9318100FB2DD4 /* FinderSync.swift */,
113 | 0A65B48025F9318100FB2DD4 /* Info.plist */,
114 | 0A65B48125F9318100FB2DD4 /* PasteBoardFinderExtension.entitlements */,
115 | 0A65B48925F931DD00FB2DD4 /* Media.xcassets */,
116 | 0A65B48B25F9326200FB2DD4 /* Utils.swift */,
117 | );
118 | path = PasteBoardFinderExtension;
119 | sourceTree = "";
120 | };
121 | /* End PBXGroup section */
122 |
123 | /* Begin PBXNativeTarget section */
124 | 0A65B46425F9315600FB2DD4 /* PasteBoard */ = {
125 | isa = PBXNativeTarget;
126 | buildConfigurationList = 0A65B47525F9315800FB2DD4 /* Build configuration list for PBXNativeTarget "PasteBoard" */;
127 | buildPhases = (
128 | 0A65B46125F9315600FB2DD4 /* Sources */,
129 | 0A65B46225F9315600FB2DD4 /* Frameworks */,
130 | 0A65B46325F9315600FB2DD4 /* Resources */,
131 | 0A65B48825F9318100FB2DD4 /* Embed App Extensions */,
132 | );
133 | buildRules = (
134 | );
135 | dependencies = (
136 | 0A65B48325F9318100FB2DD4 /* PBXTargetDependency */,
137 | );
138 | name = PasteBoard;
139 | productName = PasteBoard;
140 | productReference = 0A65B46525F9315600FB2DD4 /* PasteBoard.app */;
141 | productType = "com.apple.product-type.application";
142 | };
143 | 0A65B47B25F9318100FB2DD4 /* PasteBoardFinderExtension */ = {
144 | isa = PBXNativeTarget;
145 | buildConfigurationList = 0A65B48525F9318100FB2DD4 /* Build configuration list for PBXNativeTarget "PasteBoardFinderExtension" */;
146 | buildPhases = (
147 | 0A65B47825F9318100FB2DD4 /* Sources */,
148 | 0A65B47925F9318100FB2DD4 /* Frameworks */,
149 | 0A65B47A25F9318100FB2DD4 /* Resources */,
150 | );
151 | buildRules = (
152 | );
153 | dependencies = (
154 | );
155 | name = PasteBoardFinderExtension;
156 | productName = PasteBoardFinderExtension;
157 | productReference = 0A65B47C25F9318100FB2DD4 /* PasteBoardFinderExtension.appex */;
158 | productType = "com.apple.product-type.app-extension";
159 | };
160 | /* End PBXNativeTarget section */
161 |
162 | /* Begin PBXProject section */
163 | 0A65B45D25F9315500FB2DD4 /* Project object */ = {
164 | isa = PBXProject;
165 | attributes = {
166 | LastSwiftUpdateCheck = 1250;
167 | LastUpgradeCheck = 1250;
168 | TargetAttributes = {
169 | 0A65B46425F9315600FB2DD4 = {
170 | CreatedOnToolsVersion = 12.5;
171 | };
172 | 0A65B47B25F9318100FB2DD4 = {
173 | CreatedOnToolsVersion = 12.5;
174 | };
175 | };
176 | };
177 | buildConfigurationList = 0A65B46025F9315500FB2DD4 /* Build configuration list for PBXProject "PasteBoard" */;
178 | compatibilityVersion = "Xcode 9.3";
179 | developmentRegion = en;
180 | hasScannedForEncodings = 0;
181 | knownRegions = (
182 | en,
183 | Base,
184 | );
185 | mainGroup = 0A65B45C25F9315500FB2DD4;
186 | productRefGroup = 0A65B46625F9315600FB2DD4 /* Products */;
187 | projectDirPath = "";
188 | projectRoot = "";
189 | targets = (
190 | 0A65B46425F9315600FB2DD4 /* PasteBoard */,
191 | 0A65B47B25F9318100FB2DD4 /* PasteBoardFinderExtension */,
192 | );
193 | };
194 | /* End PBXProject section */
195 |
196 | /* Begin PBXResourcesBuildPhase section */
197 | 0A65B46325F9315600FB2DD4 /* Resources */ = {
198 | isa = PBXResourcesBuildPhase;
199 | buildActionMask = 2147483647;
200 | files = (
201 | 0A65B46D25F9315800FB2DD4 /* Assets.xcassets in Resources */,
202 | 0ACF11CE25F9399600AAA8D4 /* Main.storyboard in Resources */,
203 | );
204 | runOnlyForDeploymentPostprocessing = 0;
205 | };
206 | 0A65B47A25F9318100FB2DD4 /* Resources */ = {
207 | isa = PBXResourcesBuildPhase;
208 | buildActionMask = 2147483647;
209 | files = (
210 | 0A65B48A25F931DD00FB2DD4 /* Media.xcassets in Resources */,
211 | );
212 | runOnlyForDeploymentPostprocessing = 0;
213 | };
214 | /* End PBXResourcesBuildPhase section */
215 |
216 | /* Begin PBXSourcesBuildPhase section */
217 | 0A65B46125F9315600FB2DD4 /* Sources */ = {
218 | isa = PBXSourcesBuildPhase;
219 | buildActionMask = 2147483647;
220 | files = (
221 | 0A65B46925F9315600FB2DD4 /* AppDelegate.swift in Sources */,
222 | 0AB29AE525FA8D5F00667C7D /* Utils.swift in Sources */,
223 | );
224 | runOnlyForDeploymentPostprocessing = 0;
225 | };
226 | 0A65B47825F9318100FB2DD4 /* Sources */ = {
227 | isa = PBXSourcesBuildPhase;
228 | buildActionMask = 2147483647;
229 | files = (
230 | 0A65B47F25F9318100FB2DD4 /* FinderSync.swift in Sources */,
231 | 0A65B48C25F9326200FB2DD4 /* Utils.swift in Sources */,
232 | );
233 | runOnlyForDeploymentPostprocessing = 0;
234 | };
235 | /* End PBXSourcesBuildPhase section */
236 |
237 | /* Begin PBXTargetDependency section */
238 | 0A65B48325F9318100FB2DD4 /* PBXTargetDependency */ = {
239 | isa = PBXTargetDependency;
240 | target = 0A65B47B25F9318100FB2DD4 /* PasteBoardFinderExtension */;
241 | targetProxy = 0A65B48225F9318100FB2DD4 /* PBXContainerItemProxy */;
242 | };
243 | /* End PBXTargetDependency section */
244 |
245 | /* Begin XCBuildConfiguration section */
246 | 0A65B47325F9315800FB2DD4 /* Debug */ = {
247 | isa = XCBuildConfiguration;
248 | buildSettings = {
249 | ALWAYS_SEARCH_USER_PATHS = NO;
250 | CLANG_ANALYZER_NONNULL = YES;
251 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
252 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
253 | CLANG_CXX_LIBRARY = "libc++";
254 | CLANG_ENABLE_MODULES = YES;
255 | CLANG_ENABLE_OBJC_ARC = YES;
256 | CLANG_ENABLE_OBJC_WEAK = YES;
257 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
258 | CLANG_WARN_BOOL_CONVERSION = YES;
259 | CLANG_WARN_COMMA = YES;
260 | CLANG_WARN_CONSTANT_CONVERSION = YES;
261 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
262 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
263 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
264 | CLANG_WARN_EMPTY_BODY = YES;
265 | CLANG_WARN_ENUM_CONVERSION = YES;
266 | CLANG_WARN_INFINITE_RECURSION = YES;
267 | CLANG_WARN_INT_CONVERSION = YES;
268 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
269 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
270 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
271 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
272 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
273 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
274 | CLANG_WARN_STRICT_PROTOTYPES = YES;
275 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
276 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
277 | CLANG_WARN_UNREACHABLE_CODE = YES;
278 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
279 | COPY_PHASE_STRIP = NO;
280 | DEBUG_INFORMATION_FORMAT = dwarf;
281 | ENABLE_STRICT_OBJC_MSGSEND = YES;
282 | ENABLE_TESTABILITY = YES;
283 | GCC_C_LANGUAGE_STANDARD = gnu11;
284 | GCC_DYNAMIC_NO_PIC = NO;
285 | GCC_NO_COMMON_BLOCKS = YES;
286 | GCC_OPTIMIZATION_LEVEL = 0;
287 | GCC_PREPROCESSOR_DEFINITIONS = (
288 | "DEBUG=1",
289 | "$(inherited)",
290 | );
291 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
292 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
293 | GCC_WARN_UNDECLARED_SELECTOR = YES;
294 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
295 | GCC_WARN_UNUSED_FUNCTION = YES;
296 | GCC_WARN_UNUSED_VARIABLE = YES;
297 | MACOSX_DEPLOYMENT_TARGET = 11.1;
298 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
299 | MTL_FAST_MATH = YES;
300 | ONLY_ACTIVE_ARCH = YES;
301 | SDKROOT = macosx;
302 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
303 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
304 | };
305 | name = Debug;
306 | };
307 | 0A65B47425F9315800FB2DD4 /* Release */ = {
308 | isa = XCBuildConfiguration;
309 | buildSettings = {
310 | ALWAYS_SEARCH_USER_PATHS = NO;
311 | CLANG_ANALYZER_NONNULL = YES;
312 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
313 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
314 | CLANG_CXX_LIBRARY = "libc++";
315 | CLANG_ENABLE_MODULES = YES;
316 | CLANG_ENABLE_OBJC_ARC = YES;
317 | CLANG_ENABLE_OBJC_WEAK = YES;
318 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
319 | CLANG_WARN_BOOL_CONVERSION = YES;
320 | CLANG_WARN_COMMA = YES;
321 | CLANG_WARN_CONSTANT_CONVERSION = YES;
322 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
323 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
324 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
325 | CLANG_WARN_EMPTY_BODY = YES;
326 | CLANG_WARN_ENUM_CONVERSION = YES;
327 | CLANG_WARN_INFINITE_RECURSION = YES;
328 | CLANG_WARN_INT_CONVERSION = YES;
329 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
330 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
331 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
332 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
333 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
334 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
335 | CLANG_WARN_STRICT_PROTOTYPES = YES;
336 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
337 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
338 | CLANG_WARN_UNREACHABLE_CODE = YES;
339 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
340 | COPY_PHASE_STRIP = NO;
341 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
342 | ENABLE_NS_ASSERTIONS = NO;
343 | ENABLE_STRICT_OBJC_MSGSEND = YES;
344 | GCC_C_LANGUAGE_STANDARD = gnu11;
345 | GCC_NO_COMMON_BLOCKS = YES;
346 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
347 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
348 | GCC_WARN_UNDECLARED_SELECTOR = YES;
349 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
350 | GCC_WARN_UNUSED_FUNCTION = YES;
351 | GCC_WARN_UNUSED_VARIABLE = YES;
352 | MACOSX_DEPLOYMENT_TARGET = 11.1;
353 | MTL_ENABLE_DEBUG_INFO = NO;
354 | MTL_FAST_MATH = YES;
355 | SDKROOT = macosx;
356 | SWIFT_COMPILATION_MODE = wholemodule;
357 | SWIFT_OPTIMIZATION_LEVEL = "-O";
358 | };
359 | name = Release;
360 | };
361 | 0A65B47625F9315800FB2DD4 /* Debug */ = {
362 | isa = XCBuildConfiguration;
363 | buildSettings = {
364 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
365 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
366 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
367 | CODE_SIGN_ENTITLEMENTS = PasteBoard/PasteBoard.entitlements;
368 | CODE_SIGN_STYLE = Automatic;
369 | COMBINE_HIDPI_IMAGES = YES;
370 | DEVELOPMENT_TEAM = 9937MYTBBA;
371 | ENABLE_HARDENED_RUNTIME = YES;
372 | INFOPLIST_FILE = PasteBoard/Info.plist;
373 | LD_RUNPATH_SEARCH_PATHS = (
374 | "$(inherited)",
375 | "@executable_path/../Frameworks",
376 | );
377 | MACOSX_DEPLOYMENT_TARGET = 10.15;
378 | PRODUCT_BUNDLE_IDENTIFIER = org.tabbycatllc.PasteBoard;
379 | PRODUCT_NAME = "$(TARGET_NAME)";
380 | SWIFT_VERSION = 5.0;
381 | };
382 | name = Debug;
383 | };
384 | 0A65B47725F9315800FB2DD4 /* Release */ = {
385 | isa = XCBuildConfiguration;
386 | buildSettings = {
387 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
388 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
389 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
390 | CODE_SIGN_ENTITLEMENTS = PasteBoard/PasteBoard.entitlements;
391 | CODE_SIGN_STYLE = Automatic;
392 | COMBINE_HIDPI_IMAGES = YES;
393 | DEVELOPMENT_TEAM = 9937MYTBBA;
394 | ENABLE_HARDENED_RUNTIME = YES;
395 | INFOPLIST_FILE = PasteBoard/Info.plist;
396 | LD_RUNPATH_SEARCH_PATHS = (
397 | "$(inherited)",
398 | "@executable_path/../Frameworks",
399 | );
400 | MACOSX_DEPLOYMENT_TARGET = 10.15;
401 | PRODUCT_BUNDLE_IDENTIFIER = org.tabbycatllc.PasteBoard;
402 | PRODUCT_NAME = "$(TARGET_NAME)";
403 | SWIFT_VERSION = 5.0;
404 | };
405 | name = Release;
406 | };
407 | 0A65B48625F9318100FB2DD4 /* Debug */ = {
408 | isa = XCBuildConfiguration;
409 | buildSettings = {
410 | CODE_SIGN_ENTITLEMENTS = PasteBoardFinderExtension/PasteBoardFinderExtension.entitlements;
411 | CODE_SIGN_STYLE = Automatic;
412 | COMBINE_HIDPI_IMAGES = YES;
413 | DEVELOPMENT_TEAM = 9937MYTBBA;
414 | ENABLE_HARDENED_RUNTIME = YES;
415 | INFOPLIST_FILE = PasteBoardFinderExtension/Info.plist;
416 | LD_RUNPATH_SEARCH_PATHS = (
417 | "$(inherited)",
418 | "@executable_path/../Frameworks",
419 | "@executable_path/../../../../Frameworks",
420 | );
421 | PRODUCT_BUNDLE_IDENTIFIER = org.tabbycatllc.PasteBoard.PasteBoardFinderExtension;
422 | PRODUCT_NAME = "$(TARGET_NAME)";
423 | SKIP_INSTALL = YES;
424 | SWIFT_VERSION = 5.0;
425 | };
426 | name = Debug;
427 | };
428 | 0A65B48725F9318100FB2DD4 /* Release */ = {
429 | isa = XCBuildConfiguration;
430 | buildSettings = {
431 | CODE_SIGN_ENTITLEMENTS = PasteBoardFinderExtension/PasteBoardFinderExtension.entitlements;
432 | CODE_SIGN_STYLE = Automatic;
433 | COMBINE_HIDPI_IMAGES = YES;
434 | DEVELOPMENT_TEAM = 9937MYTBBA;
435 | ENABLE_HARDENED_RUNTIME = YES;
436 | INFOPLIST_FILE = PasteBoardFinderExtension/Info.plist;
437 | LD_RUNPATH_SEARCH_PATHS = (
438 | "$(inherited)",
439 | "@executable_path/../Frameworks",
440 | "@executable_path/../../../../Frameworks",
441 | );
442 | PRODUCT_BUNDLE_IDENTIFIER = org.tabbycatllc.PasteBoard.PasteBoardFinderExtension;
443 | PRODUCT_NAME = "$(TARGET_NAME)";
444 | SKIP_INSTALL = YES;
445 | SWIFT_VERSION = 5.0;
446 | };
447 | name = Release;
448 | };
449 | /* End XCBuildConfiguration section */
450 |
451 | /* Begin XCConfigurationList section */
452 | 0A65B46025F9315500FB2DD4 /* Build configuration list for PBXProject "PasteBoard" */ = {
453 | isa = XCConfigurationList;
454 | buildConfigurations = (
455 | 0A65B47325F9315800FB2DD4 /* Debug */,
456 | 0A65B47425F9315800FB2DD4 /* Release */,
457 | );
458 | defaultConfigurationIsVisible = 0;
459 | defaultConfigurationName = Release;
460 | };
461 | 0A65B47525F9315800FB2DD4 /* Build configuration list for PBXNativeTarget "PasteBoard" */ = {
462 | isa = XCConfigurationList;
463 | buildConfigurations = (
464 | 0A65B47625F9315800FB2DD4 /* Debug */,
465 | 0A65B47725F9315800FB2DD4 /* Release */,
466 | );
467 | defaultConfigurationIsVisible = 0;
468 | defaultConfigurationName = Release;
469 | };
470 | 0A65B48525F9318100FB2DD4 /* Build configuration list for PBXNativeTarget "PasteBoardFinderExtension" */ = {
471 | isa = XCConfigurationList;
472 | buildConfigurations = (
473 | 0A65B48625F9318100FB2DD4 /* Debug */,
474 | 0A65B48725F9318100FB2DD4 /* Release */,
475 | );
476 | defaultConfigurationIsVisible = 0;
477 | defaultConfigurationName = Release;
478 | };
479 | /* End XCConfigurationList section */
480 | };
481 | rootObject = 0A65B45D25F9315500FB2DD4 /* Project object */;
482 | }
483 |
--------------------------------------------------------------------------------
/PasteBoard/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
682 |
683 |
684 |
685 |
--------------------------------------------------------------------------------