Free-placement desktop icons with context menu. This extension accesses the system clipboard to support cut, copy, and paste of files between the desktop and other applications. Known limitation: cut/paste and drag&drop of files between the desktop and Nautilus (Files) are not fully supported yet.
Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.
EGO-X-004 warning
extensions should avoid synchronous file IO in shell code
Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.
extension.js:1312
file.load_contents(null)
EGO-A-005 manual_review
extensions should not access the clipboard directly
Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.
extension.js:861
St.Clipboard.get_default()
extension.js:932
St.Clipboard.get_default()
extension.js:1872
St.Clipboard.get_default()
extension.js:1879
St.Clipboard.get_default()
extension.js:1886
St.Clipboard.get_default()
extension.js:1917
St.Clipboard.get_default()
extension.js:1923
St.Clipboard.get_default()
EGO-P-003 error
GSettings schema XML must be present in package
Extension appears to use GSettings but no `.gschema.xml` file is included in the package.
EGO-L-002 warning
objects created by extension should be destroyed in disable()
Objects assigned in `enable()` are missing matching `.destroy()` calls in `disable()` or its helper methods.
extension.js:51
this.menuManager = new PopupMenu.PopupMenuManager(Main.layoutManager.dummyCursor || Main.uiGroup)
extension.js:266
this.selectionBox = new St.Widget({
style: "background-color: rgba(53, 132, 228, 0.25); border: 1px solid #3584e4; border-radius: 2px;",
visible: false
})
EGO-L-005 warning
owned object references should be released in disable()
Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.
extension.js:51
this.menuManager = new PopupMenu.PopupMenuManager(Main.layoutManager.dummyCursor || Main.uiGroup)
extension.js:266
this.selectionBox = new St.Widget({
style: "background-color: rgba(53, 132, 228, 0.25); border: 1px solid #3584e4; border-radius: 2px;",
visible: false
})
EGO-L-003 warning
signals connected by extension should be disconnected in disable()
Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.
extension.js:1835
clutterText.connect('activate', () => {
applyRename();
})
extension.js:1838
clutterText.connect('key-press-event', (actor, event) => {
let key = event.get_key_symbol();
let state = event.get_state();
let ctrl = (state & Clutter.ModifierType.CONTROL_MASK) !== 0;
if (key === Clutter.KEY_Escape) {
committ
extension.js:275
this.desktopLayer.connect('button-press-event', (actor, event) => {
let button = event.get_button();
if (button === 3) {
this._showDesktopContextMenu(event);
return Clutter.EVENT_STOP;
}
if (button === 1) {
extension.js:317
this.desktopLayer.connect('button-release-event', (actor, event) => {
if (this._isMarqueeSelecting && event.get_button() === 1) {
this._isMarqueeSelecting = false;
this.selectionBox.hide();
return Clutter.EVENT_STOP;
}
extension.js:302
this.desktopLayer.connect('motion-event', (actor, event) => {
if (this._isMarqueeSelecting) {
let [cx, cy] = event.get_coords();
let x = Math.min(this._marqueeStartX, cx);
let y = Math.min(this._marqueeStartY, cy);
l
EGO-L-004 warning
main loop sources should be removed in disable()
Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.
extension.js:1145
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
try {
let monitor = Main.layoutManager.primaryMonitor;
let [pw, ph] = panel.get_size();
let x = monitor.x + Math.max(0, Math.floor((monitor.width - pw) / 2));
extension.js:1804
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
global.stage.set_key_focus(clutterText);
clutterText.set_selection(0, clutterText.get_text().length);
return GLib.SOURCE_REMOVE;
})
extension.js:479
GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50, () => {
dummySource.destroy();
return GLib.SOURCE_REMOVE;
})
| Version | Status |
|---|---|
| 6 | Unreviewed |
| 5 | Rejected |
| 4 | Rejected |
| 3 | Rejected |
| 2 | Rejected |
| 1 | Rejected |
Where is the git URL? Is this code generated by AI? If so, we have a rule for that: [EGO Review Guidelines: AI](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#extensions-must-not-be-ai-generated)
"Hello JustPerfection, thank you for the review. To be honest, I used AI as an assistant to help me structure some parts of the code since I am still learning. I was not fully aware of the strict rule regarding AI-generated code. I don't have a public Git URL yet. Please reject this version so I can review the code line-by-line, clean it up manually according to the guidelines, and submit a proper Version 2 soon."
Hi! Ok. Please read [Extension Best Practices Guidelines](https://gjs.guide/extensions/review-guidelines/best-practices.html). And also add the repo before sending it here: [EGO Review Guidelines: url](https://gjs.guide/extensions/review-guidelines/review-guidelines.html#metadata-json-must-be-well-formed) If you need any help with your extension you can ask us on: - [GNOME Extensions Matrix Channel](https://matrix.to/#/#extensions:gnome.org) - IRC Bridge: irc://irc.gimpnet.org/shell-extensions
Thank you very much for your guidance and for providing these helpful links! I will carefully read the Extension Best Practices Guidelines and make sure to clean up the code properly. I will also set up a public Git repository and include the URL in the metadata for Version 2. I truly appreciate your patience and help as I learn the correct process.