Page 1 of 1

Firefox not closing properly at logout/shutdown

Posted: Tue May 13, 2014 10:57 am
by dnc40085
Having a little past experience with Linux I recently decided to install Lubuntu 14.04 LTS to try and get away from windows and after much trial and tribulation I got most everything working except one thing so far... I have set Firefox to "Show my windows and tabs from last time" and that works just fine as long as I remember to close Firefox before I shutdown or restart, but if I forget, the next time I start Firefox 9/10 times it says that Firefox was not closed properly and sometimes forgets my tabs I had open.

I thought to try and see if there was logout script for lxde so I can maybe add a command such as "sleep 1" to delay logout for a second to allow Firefox to close properly, in my Google searches the only solution I could find that was close was Firefox not closed properly when logging out and I tried the solution suggested in that and couldn't get it to work and figured the reason why was because the solution was for gnome as opposed to lxde

So my question is, How can I add a delay during logout/shutdown to allow Firefox(or any other programs) to exit properly before continuing with logout/shutdown?

If there is already a solution to this issue, I apologize for not searching hard enough.

Re: Firefox not closing properly at logout/shutdown

Posted: Tue May 13, 2014 5:41 pm
by seppalta
I have occassionaly used the following script (withot the sleep entry) to shutdown:

Code: Select all

#!/bin/bash
sleep 2s &&
xdotool key "super+t" &
sleep 1
xdotool key type "sudo shutdown -h 0" &
sleep 1
xdotool key "Return" &
sleep 1
xdotool key type "password" &
sleep 1
xdotool key "Return" &
fi
It requires xdotool be installed, the keybind "super+t" to launch your terminal and "password" in the script replaced with "your password".

Re: Firefox not closing properly at logout/shutdown

Posted: Thu May 15, 2014 1:25 am
by dnc40085
Thank you seppalta I'll give that a try.
if i'm not able to modify what happens during the execution of lxsession-logout, is there a way to make my own GUI menu with shutdown, reboot, logout, switch user, etc. that takes place of lxsession-logout simply?

I would modify the source code or write my own program to achieve my goal but I wouldn't know where to start, since I only have basic programming experience that's limited to microcontrollers via the Arduino IDE which is based on C++.

Re: Firefox not closing properly at logout/shutdown

Posted: Thu May 15, 2014 7:16 am
by drooly
there's some simple scripts around, one of them crunchbang's cb-exit; i have tweaked it succesfully in the past.
here it is:

Code: Select all

#!/usr/bin/env python2.7

import pygtk
pygtk.require('2.0')
import gtk
import os
import getpass

class cb_exit:
	def disable_buttons(self):
		self.cancel.set_sensitive(False)
		self.logout.set_sensitive(False)
		self.suspend.set_sensitive(False)
		self.reboot.set_sensitive(False)
		self.shutdown.set_sensitive(False)

	def cancel_action(self,btn):
		self.disable_buttons()
		gtk.main_quit()

	def logout_action(self,btn):
		self.disable_buttons()
		self.status.set_label("Exiting Openbox, please standby...")
		os.system("openbox --exit")

	def suspend_action(self,btn):
		self.disable_buttons()
		self.status.set_label("Suspending, please standby...")
		os.system("systemctl suspend")
		gtk.main_quit()

	def reboot_action(self,btn):
		self.disable_buttons()
		self.status.set_label("Rebooting, please standby...")
		os.system("systemctl reboot")

	def shutdown_action(self,btn):
		self.disable_buttons()
		self.status.set_label("Shutting down, please standby...")
		os.system("systemctl poweroff")

	def create_window(self):
		self.window = gtk.Window()
		title = "Log out " + getpass.getuser() + "? Choose an option:"
		self.window.set_title(title)
		self.window.set_border_width(5)
		self.window.set_size_request(500, 80)
		self.window.set_resizable(False)
		self.window.set_keep_above(True)
		self.window.stick
		self.window.set_position(1)
		self.window.connect("delete_event", gtk.main_quit)
		windowicon = self.window.render_icon(gtk.STOCK_QUIT, gtk.ICON_SIZE_MENU)
		self.window.set_icon(windowicon)

		
		#Create HBox for buttons
		self.button_box = gtk.HBox()
		self.button_box.show()
		
		#Cancel button
		self.cancel = gtk.Button("_Cancel")
		self.cancel.set_border_width(4)
		self.cancel.connect("clicked", self.cancel_action)
		self.button_box.pack_start(self.cancel)
		self.cancel.show()
		
		#Logout button
		self.logout = gtk.Button("_Log out")
		self.logout.set_border_width(4)
		self.logout.connect("clicked", self.logout_action)
		self.button_box.pack_start(self.logout)
		self.logout.show()
		
		#Suspend button
		self.suspend = gtk.Button("_Suspend")
		self.suspend.set_border_width(4)
		self.suspend.connect("clicked", self.suspend_action)
		self.button_box.pack_start(self.suspend)
		self.suspend.show()
		
		#Reboot button
		self.reboot = gtk.Button("_Reboot")
		self.reboot.set_border_width(4)
		self.reboot.connect("clicked", self.reboot_action)
		self.button_box.pack_start(self.reboot)
		self.reboot.show()
		
		#Shutdown button
		self.shutdown = gtk.Button("_Power off")
		self.shutdown.set_border_width(4)
		self.shutdown.connect("clicked", self.shutdown_action)
		self.button_box.pack_start(self.shutdown)
		self.shutdown.show()
		
		#Create HBox for status label
		self.label_box = gtk.HBox()
		self.label_box.show()
		self.status = gtk.Label()
		self.status.show()
		self.label_box.pack_start(self.status)
		
		#Create VBox and pack the above HBox's
		self.vbox = gtk.VBox()
		self.vbox.pack_start(self.button_box)
		self.vbox.pack_start(self.label_box)
		self.vbox.show()
		
		self.window.add(self.vbox)
		self.window.show()
		
	def __init__(self):
		self.create_window()


def main():
    gtk.main()

if __name__ == "__main__":
    go = cb_exit()
    main()