             NotificationCenter.default.addObserver(self, selector: #selector(self.handleLyricsDisplay), name: .lyricsShouldDisplay, object: nil)
             NotificationCenter.default.addObserver(self, selector: #selector(self.handleLyricsDisplay), name: .currentLyricsChange, object: nil)
         }
-        
-        NSWorkspace.shared.notificationCenter.addObserver(self, selector: #selector(updateWindowFrame), name: NSWorkspace.activeSpaceDidChangeNotification, object: nil)
-    }
-    
-    @objc func updateWindowFrame() {
-        guard let mainScreen = NSScreen.main else {
-            return
-        }
-        let frame = isFullScreen() == true ? mainScreen.frame : mainScreen.visibleFrame
-        window?.setFrame(frame, display: true, animate: true)
-    }
-    
-    func isFullScreen() -> Bool? {
-        guard let windowInfoList = CGWindowListCopyWindowInfo(.optionOnScreenOnly, kCGNullWindowID) as? [[String: Any]] else {
-            return nil
-        }
-        for info in windowInfoList {
-            if info[kCGWindowOwnerName as String] as? String == "Window Server",
-                info[kCGWindowName as String] as? String == "Menubar" {
-                return false
-            }
-        }
-        return true
     }
     
     private func addObserver() {
-        
         lyricsView.bind(NSBindingName("textColor"), to: defaults, withDefaultName: .DesktopLyricsColor)
         lyricsView.bind(NSBindingName("shadowColor"), to: defaults, withDefaultName: .DesktopLyricsShadowColor)
         lyricsView.bind(NSBindingName("fillColor"), to: defaults, withDefaultName: .DesktopLyricsBackgroundColor)

        
        window?.contentView?.bind(.hidden, to: defaults, withDefaultName: .DesktopLyricsEnabled, options: [.valueTransformerName: NSValueTransformerName.negateBooleanTransformerName])
        
        defaultObservations += [defaults.observe(.DisableLyricsWhenSreenShot, options: [.new, .initial]) { [weak self] defaults, change in
            switch change.newValue {
            case true?: self?.window?.sharingType = .none
            case false?: self?.window?.sharingType = .readOnly
            case nil: break
            }
        }]
        
        defaultObservations += [defaults.observe(keys: [
            .DesktopLyricsFontName,
            .DesktopLyricsFontSize,
            .DesktopLyricsFontNameFallback
        ], options: [.initial]) { [weak self] in
            self?.lyricsView.font = defaults.desktopLyricsFont
        }]
        
        defaultObservations += [defaults.observe(.ChineseConversionIndex, options: [.new]) { [weak self] _, change in
            switch change.newValue {
            case 1?:
                self?.chineseConverter = ChineseConverter(option: [.simplify])
            case 2?:
                self?.chineseConverter = ChineseConverter(option: [.traditionalize])
            default:
                self?.chineseConverter = nil
            }
        }]
        
        defaultObservations += [defaults.observe(keys: [
            .DesktopLyricsInsetTopEnabled,
            .DesktopLyricsInsetBottomEnabled,
            .DesktopLyricsInsetLeftEnabled,
            .DesktopLyricsInsetRightEnabled,
            .DesktopLyricsInsetTop,
            .DesktopLyricsInsetBottom,
            .DesktopLyricsInsetLeft,
            .DesktopLyricsInsetRight,
            ], options: []) { [weak self] in
                NSAnimationContext.runAnimationGroup({ context in
                    context.duration = 0.2
                    context.allowsImplicitAnimation = true
                    context.timingFunction = .mystery
                    self?.makeConstraints()
                    self?.window?.layoutIfNeeded()
                })
        }]
    }
    

    var currentLineIndex: Int?
    
    var defaultObservations: [UserDefaults.KeyValueObservation] = []
    var notifications: [NSObjectProtocol] = []
    
    override func windowDidLoad() {
        window?.do {
