Skip to content

Latest commit

 

History

History
120 lines (111 loc) · 3.57 KB

gnome-shell.org

File metadata and controls

120 lines (111 loc) · 3.57 KB

gnome-shell 调试总结

1 Notification bubble出来位置的改动

目标: 将fedora gnome-shell的notification通知由底部移动至顶部。

  .
|-- altTab.js
|-- appDisplay.js
|-- appFavorites.js
|-- automountManager.js
|-- autorunManager.js
|-- boxpointer.js
|-- bubblePlace.txt
|-- calendar.js
|-- checkBox.js
|-- contactDisplay.js
|-- ctrlAltTab.js
|-- dash.js
|-- dateMenu.js
|-- dnd.js
|-- endSessionDialog.js
|-- environment.js
|-- extensionSystem.js
|-- flashspot.js
|-- iconGrid.js
|-- keyboard.js
|-- keyringPrompt.js
|-- layout.js
|-- lightbox.js
|-- link.js
|-- lookingGlass.js
|-- magnifierDBus.js
|-- magnifier.js
|-- main.js
|-- messageTray.js
|-- modalDialog.js
|-- networkAgent.js
|-- notificationDaemon.js
|-- overview.js
|-- panel.js
|-- panelMenu.js
|-- placeDisplay.js
|-- polkitAuthenticationAgent.js
|-- popupMenu.js
|-- positionChange.txt
|-- remoteSearch.js
|-- runDialog.js
|-- scripting.js
|-- searchDisplay.js
|-- search.js
|-- shellDBus.js
|-- shellEntry.js
|-- shellMountOperation.js
|-- status
|   |-- accessibility.js
|   |-- bluetooth.js
|   |-- keyboard.js
|   |-- network.js
|   |-- power.js
|   `-- volume.js
|-- statusIconDispatcher.js
|-- telepathyClient.js
|-- tweener.js
|-- userMenu.js
|-- viewSelector.js
|-- wanda.js
|-- windowAttentionHandler.js
|-- windowManager.js
|-- workspace.js
|-- workspacesView.js
|-- workspaceSwitcherPopup.js
|-- workspaceThumbnail.js
`-- xdndHandler.js

UI中的文件如上列表所示,调试过程中主要用到的工具有: grep -rni , find, vim filename +linenumber 通过这三个工具实现对目标文件的锁定。

1.1 make it fail && change oneplace at a time

实现初步定位后,根据调试九法的初始步骤,一步一步的进行精确定位,直至定位到目标行。

相关对象: this._notificationBin 这个对象设置了通知消息的初始位置(y坐标) 相关函数: _showNotification / this._updateShowingNotification

if (!this._notification.expanded)
    tweenParams.y = -(Main.laffyoutManager.primaryMonitor.height - Main.panel.actor.height * 2 - 10);

改变动画的目标坐标, 将坐标设在屏幕上方。

1.2 测试

发现expanded的notification还是在底下,跟踪发现还是走的 _showNotification 函数,所以跟下去,最终确认在 _onNotificationExpanded 函数中更改_notificationBin.y的坐标。继续测试, done!

2 怎样将notification bubble 调整至屏幕左下角,右下角,

gnome-shell默认是出现在中间,hacking一段,找到结果,作如下修改可以实现。

messageTray.js中的MessageTray的初始化函数中有这么一句:
this._notificationBin = new St.Bin();
如若是想让其出现在左边,则修改成如下:
this._notificationBin = new St.Bin({x_align: St.Align.START});
出现在右下角?
this._notificationBin = new St.Bin({x_align: St.Align.END});