mirror of
				https://gitlab.com/thebiblelover7/dotfiles.git
				synced 2025-10-31 06:33:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // gpl v3
 | |
| // Based on:
 | |
| // https://github.com/maoschanz/Move-OSD-Windows-GNOME-Extension/issues/2 --> Thank you @maoschanz
 | |
| // https://discourse.gnome.org/t/how-can-i-move-the-workspace-switcher-popup-to-the-right/6940 --> Thank you @GdH
 | |
| 
 | |
| const Main = imports.ui.main;
 | |
| const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
 | |
| 
 | |
| const ExtensionUtils = imports.misc.extensionUtils;
 | |
| const Me = ExtensionUtils.getCurrentExtension();
 | |
| const Convenience = Me.imports.convenience;
 | |
| 
 | |
| let initWSP;
 | |
| 
 | |
| function init() {
 | |
| 	Convenience.initTranslations();
 | |
| 	initWSP = WorkspaceSwitcherPopup.WorkspaceSwitcherPopup.prototype._show;
 | |
| }
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| function injectToFunction(parent, name, func) {
 | |
| 	let origin = parent[name];
 | |
| 	parent[name] = function() {
 | |
| 		let ret;
 | |
| 		ret = origin.apply(this, arguments);
 | |
| 			if (ret === undefined)
 | |
| 				ret = func.apply(this, arguments);
 | |
| 			return ret;
 | |
| 		}
 | |
| 	return origin;
 | |
| }
 | |
| 
 | |
| function removeInjection(object, injection, name) {
 | |
| 	if (injection[name] === undefined)
 | |
| 		delete object[name];
 | |
| 	else
 | |
| 		object[name] = injection[name];
 | |
| }
 | |
| 
 | |
| let injections=[];
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| function enable() {
 | |
| 	let settings = Convenience.getSettings('org.gnome.shell.extensions.move-workspaceSwitcherPopup');
 | |
| 
 | |
| 	injections['_redisplay'] = injectToFunction(
 | |
| 		WorkspaceSwitcherPopup.WorkspaceSwitcherPopup.prototype, '_redisplay', function() {
 | |
| 			
 | |
| 			if(settings.get_boolean('hide')) {
 | |
| 				WorkspaceSwitcherPopup.WorkspaceSwitcherPopup.prototype._show = function() { return false };
 | |
| 			} else {
 | |
| 				WorkspaceSwitcherPopup.WorkspaceSwitcherPopup.prototype._show = initWSP;
 | |
| 				let workArea = Main.layoutManager.getWorkAreaForMonitor(Main.layoutManager.primaryIndex);
 | |
| 				let [, containerNatHeight] = this._container.get_preferred_height(global.screen_width);
 | |
| 				let [, containerNatWidth] = this._container.get_preferred_width(containerNatHeight);
 | |
| 				let h_percent = settings.get_int('horizontal');
 | |
| 				let v_percent = settings.get_int('vertical');
 | |
| 
 | |
| 				this._container.x = workArea.x + Math.floor((workArea.width - containerNatWidth) * (h_percent/100));
 | |
| 				this._container.y = workArea.y + Math.floor((workArea.height - containerNatHeight) * (v_percent/100));				
 | |
| 			}
 | |
| 		}
 | |
| 	);
 | |
| }
 | |
| 
 | |
| function disable() {
 | |
| 	WorkspaceSwitcherPopup.WorkspaceSwitcherPopup.prototype._show = initWSP;
 | |
| 	removeInjection(WorkspaceSwitcherPopup.WorkspaceSwitcherPopup.prototype, injections, '_redisplay');
 | |
| }
 |