12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- const St = imports.gi.St;
- const Main = imports.ui.main;
- const ExtensionUtils = imports.misc.extensionUtils;
- const Me = imports.misc.extensionUtils.getCurrentExtension();
- const Webkit = imports.gi.WebKit2;
- const Gtk = imports.gi.Gtk;
- const Gio = imports.gi.Gio;
- let button;
- function init() {
- button = new St.Bin({ style_class: 'panel-button',
- reactive: true,
- can_focus: true,
- x_expand: true,
- y_expand: false,
- track_hover: true });
- //set menubar icon
- let gicon = Gio.icon_new_for_string(Me.path + "/icons/chatgpt_icon.png");
- icon = new St.Icon({ gicon });
- button.set_child(icon);
- button.connect('button-press-event', _handleClick);
- }
- // Open GTK Window when the menubar button is clicked.
- let window, webView;
- function _handleClick() {
- if (!window) {
- //set window style- in this case TOPLEVEL
- window = new Gtk.Window({ type: Gtk.WindowType.TOPLEVEL });
- //remove window interaction buttons
- window.decorated = false;
- //set the size of the window
- window.set_default_size(350, 550);
- //set the border radius of the window
-
- //make the window non resizeable
- window.resizable = false;
- //enable scrolling inside the window
- scrolled_window = new Gtk.ScrolledWindow();
- //open the website
- webView = new Webkit.WebView();
- scrolled_window.add(webView);
- //load the URL and add it to WebView
- webView.load_uri('https://chat.openai.com/chat');
- window.add(scrolled_window);
- //window positioning
- window.set_position(Gtk.WindowPosition.MOUSE);
- //skip showing in the taskbar
- window.set_skip_taskbar_hint(true);
- //open the window
- window.show_all();
- //check if the window is open, if yes, close it after clicking the menubar button
- } else if (window.get_visible()) {
- window.hide();
- } else {
- window.show_all();
- }
- }
- function enable() {
- Main.panel._rightBox.insert_child_at_index(button, 0);
- }
- function disable() {
- Main.panel._rightBox.remove_child(button);
- }
- function main() {
- init();
- enable();
- }
|