This guide will get your back /forward mouse buttons working in Firefox. If you are looking for more functionality, I have made this guide, which uses the evdev driver and xbindkeys for mapping buttons and includes info about the mx610 indicator lights.\n\nPreface\nThanks to all of the Ubuntu forum posts that help me figure Stuff out.\nNew linux user notice: You will be editing the xorg.conf file. If something with this file goes wrong when you reboot, Ubuntu will not load correctly, and you will need to revert to a backup of xorg.conf from a command line. Instructions for backing up xorg.conf will follow in this guide.\n\nThe Quick & Easy Guide\n\n1. Backup your xorg.conf file\n\nCode:\n\nsudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.good #(think: Copy Source Destination)\n\n\nnow you have a good version (xorg.conf.good) of the file to fall back on if something goes wrong. If, after rebooting, you wind up at a text prompt, type in your username and pass. Then type:\nWrite this down!\nCode:\n\nsudo cp /etc/X11/xorg.conf.good /etc/X11/xorg.conf startx # this command will load Xorg (the GUI)\n\n2. Edit your xorg.conf file\nOpen up your xorg.conf file in a text editor from a console command:\n\nCode:\n\nsudo gedit /etc/X11/xorg.conf\n\n(replace gedit with kate in kubuntu)\n\nfind the section that looks like this:\nCode:\n\nSection "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ExplorerPS/2" Option "ZAxisMapping" "4 5" EndSection\n\nThen edit it like so:\n\nCode:\n\nSection "InputDevice" Identifier "Configured Mouse" Driver "mouse" option "CorePointer" option "Emulate3Buttons" "no" option "Device" "/dev/input/mice" option "Protocol" "ExplorerPS/2" option "ZAxisMapping" "4 5" option "ButtonMapping" "1 2 3 6 7" option "Resolution" "800" EndSection\n\nThis will map your back (6) and forward (7) buttons! ( Also try 8 & 9 if 6 & 7 does not work for your mouse )\n\n3. Save and Reboot\nNow save the file, and restart the computer. Remember: if the xorg.conf file is not edited properly (ie typos) you will need to revert to the backup as explained above.\n\n[[Source|http://ubuntuforums.org/showthread.php?t=327131&highlight=logitech+mouse]]
sudo fdisk -l\n
apt-cache search “program”\nsudo apt-get install “program”\nsudo apt-get -f install ?.....will fix an install
APT HOWTO\nChapter 3 - Managing packages\n3.1 Updating the list of available packages\n\nThe packaging system uses a private database to keep track of which packages are installed, which are not installed and which are available for installation. The apt-get program uses this database to find out how to install packages requested by the user and to find out which additional packages are needed in order for a selected package to work properly.\n\nTo update this list, you would use the command apt-get update. This command looks for the package lists in the archives found in /etc/apt/sources.list; see The /etc/apt/sources.list file, Section 2.1 for more information about this file.\n\nIt's a good idea to run this command regularly to keep yourself and your system informed about possible package updates, particularly security updates.\n3.2 Installing packages\n\nFinally, the process you've all been waiting for! With your sources.list ready and your list of available packages up to date, all you have to do is run apt-get to get your desired package installed. For example, you can run:\n\n # apt-get install xchat\n\nAPT will search it's database for the most recent version of this package and will retrieve it from the corresponding archive as specified in sources.list. In the event that this package depends on another -- as is the case here -- APT will check the dependencies and install the needed packages. See this example:\n\n # apt-get install nautilus\n Reading Package Lists... Done\n Building Dependency Tree... Done\n The following extra packages will be installed:\n bonobo libmedusa0 libnautilus0 \n The following NEW packages will be installed:\n bonobo libmedusa0 libnautilus0 nautilus \n 0 packages upgraded, 4 newly installed, 0 to remove and 1 not upgraded.\n Need to get 8329kB of archives. After unpacking 17.2MB will be used.\n Do you want to continue? [Y/n]\n\nThe package nautilus depends on the shared libraries cited, therefore APT will get them from the archive. If you had specified the names of these libraries on the apt-get command line, APT would not have asked if you wanted to continue; it would automatically accept that you wanted to install all of those packages.\n\nThis means that APT only asks for confirmation when it needs to install packages which weren't specified on the command line.\n\nThe following options to apt-get may be useful:\n\n -h This help text.\n -d Download only - do NOT install or unpack archives\n -f Attempt to continue if the integrity check fails\n -s No-act. Perform ordering simulation\n -y Assume Yes to all queries and do not prompt\n -u Show a list of upgraded packages as well\n\nMultiple packages may be selected for installation in one line. Files downloaded from the network are placed in the directory /var/cache/apt/archives for later installation.\n\nYou can specify packages to be removed on the same command line, as well. Just put a '-' immediately after the name of the package to be removed, like this:\n\n # apt-get install nautilus gnome-panel- \n Reading Package Lists... Done\n Building Dependency Tree... Done\n The following extra packages will be installed:\n bonobo libmedusa0 libnautilus0 \n The following packages will be REMOVED:\n gnome-applets gnome-panel gnome-panel-data gnome-session \n The following NEW packages will be installed:\n bonobo libmedusa0 libnautilus0 nautilus \n 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded.\n Need to get 8329kB of archives. After unpacking 2594kB will be used.\n Do you want to continue? [Y/n]\n\nSee section Removing packages, Section 3.3 for more details on package removal.\n\nIf you somehow damage an installed package, or simply want the files of a package to be reinstalled with the newest version that is available, you can use the --reinstall option like so:\n\n # apt-get --reinstall install gdm\n Reading Package Lists... Done\n Building Dependency Tree... Done\n 0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1 not upgraded.\n Need to get 0B/182kB of archives. After unpacking 0B will be used.\n Do you want to continue? [Y/n]\n\n3.3 Removing packages\n\nIf you no longer want to use a package, you can remove it from your system using APT. To do this just type: apt-get remove package. For example:\n\n # apt-get remove gnome-panel\n Reading Package Lists... Done\n Building Dependency Tree... Done\n The following packages will be REMOVED:\n gnome-applets gnome-panel gnome-panel-data gnome-session \n 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded.\n Need to get 0B of archives. After unpacking 14.6MB will be freed.\n Do you want to continue? [Y/n]\n\nAs you can see in the above example, APT also takes care of removing packages which depend on the package you have asked to remove. There is no way to remove a package using APT without also removing those packages that depend on it.\n\nRunning apt-get as above will cause the packages to be removed but their configuration files, if any, will remain intact on the system. For a complete removal of the package, run:\n\n # apt-get --purge remove gnome-panel\n Reading Package Lists... Done\n Building Dependency Tree... Done\n The following packages will be REMOVED:\n gnome-applets* gnome-panel* gnome-panel-data* gnome-session* \n 0 packages upgraded, 0 newly installed, 4 to remove and 1 not upgraded.\n Need to get 0B of archives. After unpacking 14.6MB will be freed.\n Do you want to continue? [Y/n]\n\nNote the '*' after the names. This indicates that the configuration files for each of these packages will also be removed.\n\nJust as in the case of the install method, you can use a symbol with remove to invert the meaning for a particular package. In the case of removing, if you add a '+' right after the package name, the package will be installed instead of being removed.\n\n # apt-get --purge remove gnome-panel nautilus+\n Reading Package Lists... Done\n Building Dependency Tree... Done\n The following extra packages will be installed:\n bonobo libmedusa0 libnautilus0 nautilus \n The following packages will be REMOVED:\n gnome-applets* gnome-panel* gnome-panel-data* gnome-session* \n The following NEW packages will be installed:\n bonobo libmedusa0 libnautilus0 nautilus \n 0 packages upgraded, 4 newly installed, 4 to remove and 1 not upgraded.\n Need to get 8329kB of archives. After unpacking 2594kB will be used.\n Do you want to continue? [Y/n]\n\nNote that apt-get lists the extra packages which will be installed (that is, the packages whose installation is needed for the proper functioning of the package whose installation has been requested), those which will be removed, and those which will be installed (including the extra packages again).\n3.4 Upgrading packages\n\nPackage upgrades are a great success of the APT system. They can be achieved with a single command: apt-get upgrade. You can use this command to upgrade packages within the same distribution, as well as to upgrade to a new distribution, although for the latter the command apt-get dist-upgrade is preferred; see section Upgrading to a new release, Section 3.5 for more details.\n\nIt's useful to run this command with the -u option. This option causes APT to show the complete list of packages which will be upgraded. Without it, you'll be upgrading blindly. APT will download the latest versions of each package and will install them in the proper order. It's important to always run apt-get update before you try this. See section Updating the list of available packages, Section 3.1. Look at this example:\n\n # apt-get -u upgrade\n Reading Package Lists... Done\n Building Dependency Tree... Done\n The following packages have been kept back\n cpp gcc lilo \n The following packages will be upgraded\n adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent\n ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev\n libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0\n libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc \n 29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.\n Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.\n Do you want to continue? [Y/n]\n\nThe process is very simple. Note that in the first few lines, apt-get says that some packages were kept back. This means that there are new versions of these packages which will not be installed for some reason. Possible reasons are broken dependencies (a package on which it depends doesn't have a version available for download) or new dependencies (the package has come to depend on new packages since the last version).\n\nThere's no clean solution for this first case. For the second case, it's sufficient to run apt-get install for the specific package in question, as this will download the dependencies. An even cleaner solution is to use dist-upgrade. See section Upgrading to a new release, Section 3.5.\n3.5 Upgrading to a new release\n\nThis feature of APT allows you to upgrade an entire Debian system at once, either through the Internet or from a new CD (purchased or downloaded as an ISO image).\n\nIt is also used when changes are made to the relationships between installed packages. With apt-get upgrade, these packages would be kept untouched (kept back).\n\nFor example, suppose that you're using revision 0 of the stable version of Debian and you buy a CD with revision 3. You can use APT to upgrade your system from this new CD. To do this, use apt-cdrom (see section Adding a CD-ROM to the sources.list file, Section 2.4) to add the CD to your /etc/apt/sources.list and run apt-get dist-upgrade.\n\nIt's important to note that APT always looks for the most recent versions of packages. Therefore, if your /etc/apt/sources.list were to list an archive that had a more recent version of a package than the version on the CD, APT would download the package from there.\n\nIn the example shown in section Upgrading packages, Section 3.4, we saw that some packages were kept back. We'll solve this problem now with the dist-upgrade method:\n\n # apt-get -u dist-upgrade\n Reading Package Lists... Done\n Building Dependency Tree... Done\n Calculating Upgrade... Done\n The following NEW packages will be installed:\n cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1\n libpcre2 logrotate mailx \n The following packages have been kept back\n lilo \n The following packages will be upgraded\n adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc\n indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0\n libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev\n liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit\n procps psmisc \n 31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.\n Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.\n Do you want to continue? [Y/n]\n\nNote now that the packages will be upgraded, and new packages will also be installed (the new dependencies of the packages). Note too that lilo is still being kept back. It probably has a more serious problem than a new dependency. We can find out by running:\n\n # apt-get -u install lilo\n Reading Package Lists... Done\n Building Dependency Tree... Done\n The following extra packages will be installed:\n cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2\n logrotate mailx \n The following packages will be REMOVED:\n debconf-tiny \n The following NEW packages will be installed:\n cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2\n logrotate mailx \n The following packages will be upgraded\n lilo \n 1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.\n Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.\n Do you want to continue? [Y/n]\n\nAs noted in the above, lilo has a new conflict with the package debconf-tiny, which means it couldn't be installed (or upgraded) without removing debconf-tiny.\n\nTo know what's keeping or removing a package you may use:\n\n # apt-get -o Debug::pkgProblemResolver=yes dist-upgrade\n Reading Package Lists... Done\n Building Dependency Tree... Done\n Calculating Upgrade... Starting\n Starting 2\n Investigating python1.5\n Package python1.5 has broken dep on python1.5-base\n Considering python1.5-base 0 as a solution to python1.5 0\n Holding Back python1.5 rather than change python1.5-base\n Investigating python1.5-dev\n Package python1.5-dev has broken dep on python1.5\n Considering python1.5 0 as a solution to python1.5-dev 0\n Holding Back python1.5-dev rather than change python1.5\n Try to Re-Instate python1.5-dev\n Done\n Done\n The following packages have been kept back\n gs python1.5-dev \n 0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded.\n\nThis way, it's easy to notice that the python1.5-dev package cannot be installed because of an unsatisfied dependency: python1.5.\n3.6 Removing unused package files: apt-get clean and autoclean\n\nWhen you install a package APT retrieves the needed files from the hosts listed in /etc/apt/sources.list, stores them in a local repository (/var/cache/apt/archives/), and then proceeds with installation, see Installing packages, Section 3.2.\n\nIn time the local repository can grow and occupy a lot of disk space. Fortunately, APT provides tools for managing its local repository: apt-get's clean and autoclean methods.\n\napt-get clean removes everything except lock files from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/. Thus, if you need to reinstall a package APT should retrieve it again.\n\napt-get autoclean removes only package files that can no longer be downloaded.\n\nThe following example show how apt-get autoclean works:\n\n # ls /var/cache/apt/archives/logrotate* /var/cache/apt/archives/gpm*\n logrotate_3.5.9-7_i386.deb\n logrotate_3.5.9-8_i386.deb\n gpm_1.19.6-11_i386.deb\n\nIn /var/cache/apt/archives there are two files for the package logrotate and one for the package gpm.\n\n # apt-show-versions -p logrotate\n logrotate/stable uptodate 3.5.9-8\n # apt-show-versions -p gpm\n gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12\n\napt-show-versions shows that logrotate_3.5.9-8_i386.deb provides the up to date version of logrotate, so logrotate_3.5.9-7_i386.deb is useless. Also gpm_1.19.6-11_i386.deb is useless because a more recent version of the package can be retrieved.\n\n # apt-get autoclean\n Reading Package Lists... Done\n Building Dependency Tree... Done\n Del gpm 1.19.6-11 [145kB]\n Del logrotate 3.5.9-7 [26.5kB]\n\nFinally, apt-get autoclean removes only the old files. See How to upgrade packages from specific versions of Debian, Section 3.9 for more information on apt-show-versions. \n\n[[Source|http://wiki.linuxquestions.org/wiki/Apt-get]]
{{{apt-get remove --purge <package>}}}
First of all, we have to make ad hoc connection between two laptops, then we will consider to bridge the two wired and wireless adapters at windows side to perform Internet sharing.\n\nStep 1, Ad hoc wireless setup.\nGo to your windows Network connection setting, click start -> Connection to, and show all connections OR Right on the Ethernet status icon at the right down corner of the screen and choose Open Network Connections.\n\nEnable wireless adapter, then right click on the icon and go to properties, select Wireless Network tab, add an adhoc point, make sure it is less hustle, connection setting we choose open Newtork Authentication and Disable data encryption. Pick a simple name, a simple IP and gateway. ( don’t conflict with the network of your LAN, if your router gateway is 192.168.0.254, then uses 192.168.1.0/24 for wireless LAN). Okay I set 192.168.1.2 for here, netmask 255.255.255.0 and gateway doesn’t matter much, I put 192.168.1.1.\n\nAt Linux side, make sure nm-applet is loaded, click on it and select New Wireless Network Connection, type the same name as the one at windows side. At the same time, type this\n\nsudo ifconfig eth1 192.168.1.3 netmask 255.255.255.0\n\nTry to get connected at both side, if it doesn’t at the first time. Prepare your command line above, click nm-applet to connect again and consequently run the command line again. Incompetent nm-applet do not allow you to configure static IP, it always assume you are connecting to a wireless router that can assign you IP. You can hack it by running command line stated above. For windows side it should be easy to get connected to Ad hoc.\n\nMake sure nm-applet gives you green light, to check whether you are connected, try to ping.\n\nping -I eth1 192.168.1.2\n\nAnd you also can check your wireless status, by this\n\niwconfig eth1\n\nThe output should looks likes bellow:\n\n\neth1 IEEE 802.11b ESSID:"zion2"\n Mode:Ad-Hoc Frequency:2.462 GHz Cell: 02:04:23:CC:F2:59\n Bit Rate:11 Mb/s Tx-Power=20 dBm Sensitivity=8/0\n Retry limit:7 RTS thr:off Fragment thr:off\n Power Management:off\n Link Quality=72/100 Signal level=-56 dBm Noise level=-85 dBm\n Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0\n Tx excessive retries:1 Invalid misc:3 Missed beacon:0\n\nStep 2. Bridging wireless and wired Ethernet\nAt the same Network Connection panel in windows, hold down control key, click on wireless and wired icon and right click, select “Bridge Connections”.\nAfter Bridging, you need to set IP for the bridge, right click on the bridge icon created and set a static IP to connect to Router gateway at TCP/IP Properties.\n\nOkay in my case it is 192.168.0.2 netmask 255.255.255.0 gateway puts router’s IP(let say 192.168.0.254). Fire up your Internet browser and see whether you still can online. Cannot? right click on bridge icon, disable and enable it back and check again with your browser.\n\nAt Linux side, run ifconfig again to set to a IP in the same subnet as router and the bridge.\n\nsudo ifconfig eth1 192.168.0.3 netmask 255.255.255.0\n\nOh! don’t forget to add a default route for it to point to router gateway too\n\nsudo route add default gw 192.168.0.254\n\nCheck with your firefox! If you get online, congratulation!
How To - Backup to Amazon S3 using JetS3t\nI love my new digital camera. It does both still photos and movies. A side effect of this is that I now have a ton of data, and I would have a mental episode if I were to lose it.\n\nBack when I was running Windows, I utilized a utility call S3 Backup. It was a very clean, simple way to back up my data to the Amazon Simple Storage Service, or S3 for short. The Amazon S3 provides a very inexpensive and extremely flexible means of storing data. Pricing details can be found here.\n\nBut as the S3 Backup utility did not have a Linux port, I was still looking with a good alternative to use with Ubuntu. Thats when I came across JetS3t. JetS3t is a free, open-source Java toolkit and application suite for the Amazon Simple Storage Service.\n\nUsing the synchronize utility, I can schedule backups to Amazon. Here is how I went about setting it up.\n\n1) Download the JetS3t toolkit from here:\nhttps://jets3t.dev.java.net/releases/jets3t-0.5.0.zip\n\n2) Create a directory called jetS3t in the /opt directory:\nCode:\n\nsudo mkdir /opt/jets3t\n\n3) Unzip the contents into the /opt directory:\nCode:\n\nunzip jets3t-0.5.0.zip -d /opt/jets3t\n\n4) Make the shell scripts in the bin directory executable:\nCode:\n\nchmod 755 /opt/jets3t/bin/cockpit.sh\nchmod 755 /opt/jets3t/bin/synchronize.sh\nchmod 755 /opt/jets3t/bin/uploader.sh\n\n5) Set the JETS3T_HOME environment variable:\nCode:\n\nexport JETS3T_HOME=/opt/jets3t\n\nNOTE: To have this done automatically at startup, add the above line to the end of the ~/.bashrc file.\nCode:\n\ngedit ~/.bashrc\n\n6) Add your Amazon S3 Credentials to the /opt/jets3t/config/synchronize.properties file\nCode:\n\n sudo gedit synchronize.properties\n\n7) Run the synchronize script. In the following example, I am UPloading the contents of the /media/server1/HomeMovies/ to the HomeMovies Bucket:\n\nCode:\n\n/opt/jets3t/bin/synchronize.sh UP HomeMovies /media/server1/HomeMovies/\n\n8) Use the cockpit utility to confirm the data is residing on the Amazon S3 server.\nCode:\n\n/opt/jets3t/bin/cockpit.sh\n\nFor full documentation on the Jet Toolkit, click the link below:\nhttp://jets3t.s3.amazonaws.com/toolk...iguration.html\n\n[[Source|http://ubuntuforums.org/showthread.php?t=524811]]
1) Go and download Autofs in synaptic or Adept for Kubuntu. \n\n2) Also you will need to install smbfs\n\n3) kdesu kate /etc/auto.master sudo edit aut.master with your text editor\n\nThis is what I have there:\n\n\n# Sample auto.master file\n# This is an automounter map and it has the following format\n# key [ -mount-options-separated-by-comma ] location\n# For details of the format look at autofs(5).\n/media/battlestation /etc/auto.battle --timeout=60 --ghost\n \n\nThis all you need to care about as the rest is commented out.\n\nMake sure to put something close to -60 as I tried -4 seconds and that created a problem via wireless connection. I could not access the folders upon booting and automatically connecting to the wireless network. The -ghost makes a it so that the location of the folders is remembered, meaning you can access the files without autofs mounting the folders.\n\n2)auto.battle is where you specify what you want to mount. (note that auto.battle is the an empty text file I have created myself)\n\nHere is what is in mine:\n\n\nG -fstype=cifs,noperm,iocharset=utf8,guest,file_mode=0777,dir_mode=0777 ://192.168.1.7/G\nF -fstype=cifs,noperm,iocharset=utf8,guest,file_mode=0777,dir_mod e=0777 ://192.168.1.7/F\nG -fstype=cifs,noperm,iocharset=utf8,guest,file_mode=0777,dir_mod e=0777 ://192.168.1.7/G\n\n\nNote that the above uses cifs file system and 0777 gives full read and write access. Reason I use cifs instead of smbfs is because Amarok works with cifs better and with smbfs I would get collection scan errors. See official Amarok samba wiki.\n\nYou can also use smbfs, it would look like this:\n\nG -fstype=smbfs,noperm,iocharset=utf8,guest,fmode=777 ,dmode=777 ://192.168.1.7/G\n\nWhere noperm, will make it so that Linux will not need to change permission on files on windows box as it does nto exist there.\n\nfile_mode=0777 means full read and write access\n\nfstype=cifs means file system mode = cifs\n\n\nThat is it, just also go to terminal and do this\n\n\nsudo /etc/init.d/autofs restart and your network folders are now auto mounted and will be when you boot next time. \n\n[[Source|http://ubuntuforums.org/showthread.php?p=2068304]]\n
\nFollowing files/dirs are required for traditional Linux user management:\n* /etc/passwd - contains various pieces of information for each user account\n\n* /etc/shadow - contains the encrypted password information for user’s accounts and optional the password aging information.\n\n* /etc/group - defines the groups to which users belong\n\n* /etc/gshadow - group shadow file (contains the encrypted password for group)\n\n* /var/spool/mail - Generally user emails are stored here.\n\n* /home - All Users data is stored here\n\n
chmod nnn filename\n\nNumber Read (R) Write (W) Execute (X)\n0 No No No\n1 No No Yes\n2 No Yes No\n3 No Yes Yes\n4 Yes No No\n5 Yes No Yes\n6 Yes Yes No\n7 Yes Yes Yes\n\nSo, for example:\n\n777 is the same as rwxrwxrwx\n\n755 is the same as rwxr-xr-x\n\n666 is the same as rw-rw-rw-\n\n744 is the same as rwxr--r--\n\n[[Source|http://www.elated.com/articles/understanding-permissions/]]
chgrp -R [groupname] /media/disk ?\n\nthat _should_ do it, yes... but you have to add the specified group first, of course\n\nand add the users to that group :)
@@''Easy way: man e2label''@@\n\nis there any way I can rename how the drive is labeled? it automatically mounts (it is an external ahrd drive via usb) as /media/disk-1 I want it to be called instead of disk-1 to be MediaDrive how can I do it ?\n\nyou need to add a line for it in /etc/fstab\n\nbut it is not an internal drive, meaning it can change its name next time I add another external drive and then add this one it will be mounted at a different locaiton\n\nyou use the uuid. type blkid in a terminal to find it's uuid\n\nwhat happens when I know the uuid ?\n\nyou can add a line for the drive in /etc/fstab. Something like: UUID=theuuid /media/MediaDisk ext3 defaults 0 2\n\nthen it should be mounted to MediaDisk instead of disk-1\n\nwhat does this mean ? "defaults 0 2"\n\ndefault mount options, the first 0 means it shouldn't be dumped, the 2 means it should be checked when mounting\n\n"man fstab" will explain more detailed\n\n* you add something like this in /etc/fstab: UUID=theuuid /media/MediaDrive ext3 defaults 0 2\n\nthen you can just 'mount /media/MediaDrive"\n
<slyfox> What can I use to limit access to a computer for certain users at certain times ? \n<jojoman02> slyfox: ok first thing are you on the pc that you want to set this up on? \n<slyfox> jojoman02: yes \n<slyfox> Not at the moment htough \n<jojoman02> can you get on it now? \n<jojoman02> or write this down \n<slyfox> jojoman02: yes, let me write it down \n<jojoman02> to install the program type: --> sudo apt-get install timeoutd \n<jojoman02> make sure to include the d \n<slyfox> ok \n<jojoman02> that will install the program \n<jojoman02> now there will be a file you need to edit called /etc/timeouts \n<slyfox> ok \n<jojoman02> you do this by type the following: sudo gedit /etc/timeouts \n<slyfox> ok \n<jojoman02> then a file will pop up and it has some basic instructions \n<jojoman02> if you tell me the username and time you want to set it up on i can tell you what to type in \n<jojoman02> make sure you don't delete any of the lines starting with # \n<slyfox> user name: user and say weekdays from 6am till 10pm \n<jojoman02> and add the line i give you below the lines starting with # sign \n<jojoman02> slyfox: so sat and sun unlimited access (meaning all day & night?) \n<slyfox> jojoman02: untill 1am \n<jojoman02> slyfox: lemme do the first, i'm not sure how to set up the second access time \n<slyfox> jojoman02: let me install timeoutd on my laptop I want to see waht thsi file looks like \n<jojoman02> or maybe never mind i think we can make 2 lines for same users one sec \n<slyfox> I see 2: timeout and timeoutd what is the difference ? \n<jojoman02> ohh btw if you type man timeouts in a terminal it will give you instructions on editing the file \n<jojoman02> u know about the terminal right? \n<slyfox> yes \n<jojoman02> 6am-10pm mon-fri right? \n<slyfox> yes \n<jojoman02> do you want to set a maximum number of minutes/hours they can log on per day \n<jojoman02> like from 6-10 i want only 5 hours of computer time?? \n<slyfox> jojoman02: yes, say 2.5 hours ? \n<jojoman02> kk \n<jojoman02> it's in min so 150 min \n<slyfox> ok \n<jojoman02> how long u want a warning before logging the user off? \n<jojoman02> 10 min? \n<jojoman02> Wk0600-2200:*:user:*:*:150:150:10 \n[15:39] <jojoman02> you put that line it \n[15:40] <jojoman02> change the user line of the username is diff :) \n[15:40] <slyfox> 10min \n[15:40] <jojoman02> to make another line for Sa and Su you do the same except for the first thing u put \n[15:40] <jojoman02> SaSu0600-2200:*:user blah blah blah \n[15:40] <slyfox> aha, got it Wk Sa Su are the days \n[15:41] <jojoman02> those 150:150 is how long users are allowed to login for the day \n[15:41] <jojoman02> yeah it's all explained in --> man timeouts \n[15:41] <jojoman02> and man timeoutd \n[15:41] <jojoman02> man means manual \n[15:41] <slyfox> why is it twice? 150:150 not jsut 150 ? \n[15:41] <jojoman02> once per session \n[15:41] <jojoman02> lets say you want only 30 min per login \n[15:41] <jojoman02> but 90 min per day \n[15:41] <slyfox> ahhh \n[15:41] <slyfox> got it \n[15:42] <slyfox> Wonder why or how would that be used ? \n[15:42] <slyfox> To make the user take breaks ? \n[15:42] <jojoman02> with idle times \n[15:42] <jojoman02> it's all in the manual \n[15:42] <slyfox> aha \n[15:42] <jojoman02> just takes a while to figure out \n[15:42] <jojoman02> the time is in army time (24 hours time) \n[15:42] <jojoman02> as u figured \n[15:42] <jojoman02> one user can have multiple rules \n[15:42] <jojoman02> so make another rule for sat/sun limits \n[15:42] <jojoman02> or any other users u need \n[15:42] <slyfox> interesting \n[15:43] <slyfox> I think I got the basics of it \n[15:43] <jojoman02> the timeoutd runs at startup and monitors the rules file every min \n[15:43] <slyfox> I will read more in the manual \n[15:43] <jojoman02> to check if anyone is logged in that is not supposed to be \n[15:43] <jojoman02> so even if they can login within a min they will get forcefully logged out, on the min :) \n[15:43] <slyfox> what is the difference between timeout and timeoutd ? \n[15:43] <jojoman02> timeout is the program that sends the shutdown command \n[15:44] <jojoman02> and timeoutd is the program that monitors \n[15:44] <jojoman02> like lets say u were running a server and wanted to kick off a certain user that you didn't make a rule for, you would use timeout to do it \n[15:44] <jojoman02> sort of temporarily \n[15:44] <slyfox> so both need to be installed ? \n[15:44] <jojoman02> if it was a weekly/daily thing u would need a deamon \n[15:45] <jojoman02> yes \n[15:45] <jojoman02> but timeoutd installs timeout \n[15:45] <jojoman02> it's a dependancy \n[15:45] <slyfox> Excellent., \n[15:45] <jojoman02> cuz timeoutd sends the command to timeout automatically based on the rules file /etc/timeouts \n[15:45] <jojoman02> :) \n[15:45] <jojoman02> u know how to edit files right? \n[15:46] <jojoman02> make sure the user that you are talking about does not have ability of sudo'ing \n[15:46] <jojoman02> cuz then he can modify the /etc/timeouts file \n[15:47] <jojoman02> you do taht in system-> administration -> users \n[15:48] <slyfox> yeah \n[15:48] <jojoman02> uncheck administer the system in privelages \n[15:48] <slyfox> one otehr question \n[15:48] <jojoman02> kk \n[15:49] <jojoman02> shoot \n[15:49] <slyfox> when some other user is lgged in and I come in and want to do some administratror commands or wahtever, can I do that? becasue when I type in sudo osmething and it asks me for the password and I enter mine, it tell me that the apssword is wrong \n[15:49] <jojoman02> when you are logged in as another user \n[15:50] <slyfox> yes \n[15:50] <slyfox> but that user is not an admin user \n[15:50] <jojoman02> u either need to switch users \n[15:50] <jojoman02> or use a virtual terminal (ctrl+alt+f1) \n[15:51] <slyfox> like start a new session you mean \n[15:51] <jojoman02> f1 through f7 will work \n[15:51] <slyfox> Cool \n[15:51] <jojoman02> f7 is the desktop \n[15:51] <jojoman02> actually \n[15:51] <jojoman02> it's running on vt7 \n[15:51] <slyfox> so f1 should work \n[15:51] <jojoman02> ctrl+alt+f1 \n[15:51] <jojoman02> use your username and login \n[15:51] <jojoman02> you could even run a session \n[15:51] <jojoman02> but that is a little more complex \n[15:52] <jojoman02> and u can't run gui tasks in a virtual terminal \n[15:52] <jojoman02> but u can sudo anything \n[15:52] <jojoman02> or use nano to edit files \n[15:52] <slyfox> jojoman02: sudo would be enough for now \n[15:52] <jojoman02> it takes some getting used to \n[15:52] <jojoman02> better to just tell them to wait and you switch users, login and admin what you need to then logout and log back into their accounts \n[15:53] <slyfox> Ok, thank you very much for all you help. I will write all of this down. I have a learned today.|
/***\n| Name|CloseOnCancelPlugin|\n| Description|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\nmerge(config.commands.cancelTiddler,{\n\n handler_orig_closeUnsaved: config.commands.cancelTiddler.handler,\n\n handler: function(event,src,title) {\n this.handler_orig_closeUnsaved(event,src,title);\n if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))\n story.closeTiddler(title,true);\n return false;\n }\n\n});\n\n//}}}\n\n
How do I change the color of the to do categories ?\n\nSettings -> Configure Calendar -> Colors
[[A list of commands I put together for my new to *buntu Friends|http://www.ubuntux.org/a-list-of-commands-i-put-together-for-my-new-to-buntu-friends]]
//{{{\nconfig.options.chkHttpReadOnly = false; // means web visitors can experiment with your site by clicking edit\nconfig.options.chkInsertTabs = true; // tab inserts a tab when editing a tiddler\nconfig.views.wikified.defaultText = ""; // don't need message when a tiddler doesn't exist\nconfig.views.editor.defaultText = ""; // don't need message when creating a new tiddler \n//}}}\n
Find your mobile's bluetooth address\nIf you cut and paste this during pairing then you are all set - no need to do anything further.\n\nOtherwise you can run the following command:\n\nNote: you need to make sure that your phones visibility is: "Shown to all"\n\nYou should see the following:\n$ hcitool scan\nScanning ...\nxx:xx:xx:xx:xx:xx Nokia 73\n\nYou can turn the phones visibility back to "Hidden" once this step is complete. \n\n\nonfirm you can connect to your mobile\n\nModify the file: /etc/bluetooth/rfcomm.conf\nrfcomm0 {\n# # Automatically bind the device at startup\nbind yes;\n#\n# # Bluetooth address of the device\ndevice xx:xx:xx:xx:xx:xx;\n#\n# # RFCOMM channel for the connection\nchannel 2;\n#\n# # Description of the connection\ncomment "Nokia N73";\n}\n\n\nThen enter the following (ignoring the comments - i.e. after the #):\nrfcomm release 0 # make sure is it not already connected\nrfcomm connect 0 # create a connection to rfcomm device 0\nAnd you should see:\nPress CTRL-C for hangup\n\nNote - the "0 here relates to the rfcomm device number that was set in rfcomm.conf. If you're using /dev/rfcomm2, for instance, you should use "2" instead.\n\n
Cron comes from the word chronos, the Greek word for time. Cron is a utility that can help with automating certain tasks in Linux. For example if you would like to create backups of certain files or directories each night while you are sleeping, you can use Cron to automate this.\n\nCron stores it's enteries in the crontab (cron table) file. This is generally located in your /etc directory. As well, each user on your system can have their own crontab which would be stored in /var/spool/cron/. To edit a users crontab entry, simply log into your system for that particular user and type crontab -e. The default editor for the 'crontab -e' command is vi. If you are not familiar with VI you can change the default editor by running the following command export VISUAL='editor'. Of course you must replace editor with your favorite text editor (nano, pico, joe etc). Or you could always learn how to use VI ;)\n\nBelow are 2 entries in my /etc/crontab file. The first one is used to back up my /etc directory nightly. The second entry is to run the Analog program to calculate the web server stats for linuxhelp.ca.\n\n12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1\n52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1\n\nBelow is a table of what each field does.\n\nField Meaning\n1 Minute (0-59)\n2 Hour (2-24)\n3 Day of month (1-31)\n4 Month (1-12, Jan, Feb, etc)\n5 Day of week (0-6) 0 = Sunday, 1 = Monday etc or Sun, Mon, etc)\n6 User that the command will run as\n7 Command to execute\n\nSo using one of our original examples:\n\n12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1\n\nThis will run tar czvf /usr/local/backups/daily/etc.tar.gz /etc at 3:12am every day. The >> /dev/null 2>&1 part means to send any standard output to /dev/null (the linux trash can) and to redirect standard error (2) to the same place as the standard output (1). Basically it runs the command without any output to a terminal etc.\n\nAnother example of a more complex entry would be:\n\n30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1\n\nThis will run tar czvf /usr/local/backups/daily/etc.tar.gz /etc on Monday June 13th at 3:30pm\nYou could also use the following to achieve the same results\n\n30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1\n\nIf you wanted to run a command as user joey 15 minutes after every hour regardless of the date you could add the following entry:\n\n15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1\n\n\nThe astrix '*' in the example above is a wildcard meaning that cron will ignore the field.\n\nIf you wanted to run a command every 2 hours you could enter in */2 for the hour field. This would run the specified command at 2am, 4am, 6am, 8am, 10am, 12pm, 2pm, and so on. An example of this type of entry would be:\n\n0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1\n\nYou can also use commas to specify more than one time per entry. For instance if you wanted to run a command at 15 and 30 past each hour you would enter in 15,30 for the minute field. An example of this type of entry would be:\n\n15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1\n\nIf you wanted to run a command every day at a certain time for the first week of the month you would enter in 1-7 for the day field. An example of this type of entry would be:\n\n15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1\n\nThis would run somecommand every 2 hours at the 15's and 30's (2:15, 2:30, 4:15, 4:30 etc) for the first 7 days of the month.\n\nIf you want cron to execute a bunch of scripts at 4:18pm every day you could put all of the scripts in one directory (for example, /home/username/cron) and add the following line to your crontab:\n\n18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1\n\nIf you wanted to save the output of a certain command you can replace the >> /dev/null 2>&1 with >> /home/user/somecommand.log 2>&1\n\nAfter you've added all your entries you can use the command crontab -l to list them.\n\nIf you wanted to remove your crontab file you could run crontab -r to delete it.\n\nTo edit a users crontab file as root you can run crontab -e -u username\n\nSo as you can see, Cron is very configurable and is a great tool for every system administrator to automate tasks.\n\n[[Source|http://www.linuxhelp.net/guides/cron/]]
Task: Start corn service\n\nTo start the cron service, use:\n# /etc/init.d/cron start\nOR\n$ sudo /etc/init.d/cron start\nTask: Stop corn service\n\nTo stop the cron service, use:\n# /etc/init.d/cron stop\nOR\n$ sudo /etc/init.d/cron stop\nTask: Restart corn service\n\nTo restart the cron service, use:\n# /etc/init.d/cron restart\nOR\n$ sudo /etc/init.d/cron restart\nTask : Start the cron service at boot time\n\nIt is recommended that you start the service at boot time so that job can run w/o problems.\n\nIf you are using Redhat (RHEL)/Fedora Core/Cent OS Linux use the following commands to ensure that the service remains enabled after a reboot:\n# chkconfig crond on\nYou can use text based GUI tool called ntsysv:\n# ntsysv\n\nIf you are using Debian or Ubuntu Linux use the following commands to ensure that the service remains enabled after a reboot:\n# rcconf\nOPR\n$ sudo rcconf\nYou can use command line tool update-rc.d:\n# update-rc.d cron defaults\nOR\n$ sudo update-rc.d cron defaults\n\n[[Source|http://www.cyberciti.biz/faq/howto-linux-unix-start-restart-cron/]]
[[MptwEditTemplate]]\n
/***\n| Name:|ExtentTagButtonPlugin|\n| Description:|Adds a New tiddler button in the tag drop down|\n| Version:|3.0 ($Rev: 1845 $)|\n| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source:|http://mptw.tiddlyspot.com/#ExtendTagButtonPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\n\n// can't hijack a click handler. must redefine this entirely.\n// would be good to refactor in the core...\n// this version copied from 2.1.3 core\n\n// Event handler for clicking on a tiddler tag\nfunction onClickTag(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = Popup.create(this);\n var tag = this.getAttribute("tag");\n var title = this.getAttribute("tiddler");\n if(popup && tag)\n {\n var tagged = store.getTaggedTiddlers(tag);\n var titles = [];\n var li,r;\n for(r=0;r<tagged.length;r++)\n if(tagged[r].title != title)\n titles.push(tagged[r].title);\n var lingo = config.views.wikified.tag;\n\n wikify("<<newTiddler label:'New tiddler' tag:"+tag+">>",createTiddlyElement(popup,"li")); // <---- the only modification\n\n if(titles.length > 0)\n {\n var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);\n openAll.setAttribute("tag",tag);\n createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");\n for(r=0; r<titles.length; r++)\n {\n createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);\n }\n }\n else\n createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));\n createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");\n var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);\n createTiddlyText(h,lingo.openTag.format([tag]));\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n\n//}}}\n\n
Like most wikis, TiddlyWiki supports a range of simplified character formatting:\n| !To get | !Type this |h\n| ''Bold'' | {{{''Bold''}}} |\n| --Strikethrough-- | {{{--Strikethrough--}}} |\n| __Underline__ | {{{__Underline__}}} (that's two underline characters) |\n| //Italic// | {{{//Italic//}}} |\n| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@highlight@@ | {{{@@highlight@@}}} |\n<<<\nThe highlight can also accept CSS syntax to directly style the text:\n@@color:green;green coloured@@\n@@background-color:#ff0000;color:#ffffff;red coloured@@\n@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@\n<<<\n\n//For backwards compatibility, the following highlight syntax is also accepted://\n{{{\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n}}}\n@@bgcolor(#ff0000):color(#ffffff):red coloured@@\n\n\n\n\n\n{{{\nAnother Example If I need to quote something\n}}}\n\n{{{Or like this}}}
If you want to extract a particular archive in a particular directory you don't have to move the archive to that particular directory and chdir to that directory and extract the archive this can be done easily by using command like this : -\n\nExample : to extract file newfile.tar.gz to directory Temp/a/b use following command\n\ntar xvf -C Temp/a/b newfile.tar.gz
tar -zvxf file.tar.gz\ntar -jxvf file.bz2\nunzip file.zip
Enable the spellchecker for inputfields and textareas (default is textareas only):\n\nI.e. go to "about:config" and set "layout.spellcheckDefault=2".\n\nOTOH, I don't like to need to be told tips & tricks, nor to explore "about:config". The important user preferences should be accessible in a configuration dialog.\n\nOtherwise, "Firefox Tips" will be the next "Undocumented Windows".
{{{\n[global]\n ; General server settings\n netbios name = YOUR_HOSTNAME\n \n workgroup = DOMISHE\n announce version = 5.0\n socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192\n\n passdb backend = tdbsam\n security = share\n null passwords = true\n username map = /etc/samba/smbusers\n name resolve order = hosts wins bcast\n\n wins support = yes\n\n printing = CUPS\n printcap name = CUPS\n\n syslog = 1\n syslog only = yes\n\n; NOTE: If you need access to the user home directories uncomment the\n; lines below and adjust the settings to your hearts content.\n;[homes]\n ;valid users = %S\n ;create mode = 0600\n ;directory mode = 0755\n ;browseable = no\n ;read only = no\n ;veto files = /*.{*}/.*/mail/bin/\n\n; NOTE: Only needed if you run samba as a primary domain controller.\n; Not needed as this config doesn't cover that matter.\n;[netlogon]\n ;path = /var/lib/samba/netlogon\n ;admin users = Administrator\n ;valid users = %U\n ;read only = no\n\n; NOTE: Again - only needed if you're running a primary domain controller.\n;[Profiles]\n ;path = /var/lib/samba/profiles\n ;valid users = %U\n ;create mode = 0600\n ;directory mode = 0700\n ;writeable = yes\n ;browseable = no\n\n; NOTE: Inside this place you may build a printer driver repository for\n; Windows - I'll cover this topic in another HOWTO.\n[print$]\n path = /var/lib/samba/printers\n browseable = yes\n guest ok = yes\n read only = yes\n write list = root\n create mask = 0664\n directory mask = 0775\n\n[printers]\n path = /tmp\n printable = yes\n guest ok = yes\n browseable = no\n\n; Uncomment if you need to share your CD-/DVD-ROM Drive\n;[DVD-ROM Drive]\n ;path = /media/cdrom\n ;browseable = yes\n ;read only = yes\n ;guest ok = yes\n}}}\n\n\n\n[[Source|http://ubuntuforums.org/showthread.php?t=202605]]
Rip cds\n\nGetting The Software\n\nLets start off by enabling the "Multiverse" repos by going to System->Administration->Synaptic Package Manager.\n\nOnce up, go to Settings->Repositories.\n\nOn the "Ubuntu 6.10" tab make sure the Universe and Multiverse repos are checked. Hit the "Close" button then hit the "Reload" button in the upper-left of Synaptic.\n\nAfter the refresh we're gonna go to the terminal just to switch it up on ya.\n(Skip the above step if your using Ubuntu 7.04 and above.)\n\nOpen a terminal and type:\nCode:\n\nsudo apt-get install grip lame\n\nThis will get the Grip and LAME packages needed.\n\nOr use this to get Grip plus extra codecs.\nCode:\n\nsudo apt-get install grip lame faac flac vorbis-tools\n\nConfiguring The Encoder\nWe'll use .mp3's as the example.\n\nGo to Applications->Sound & Video->Grip to launch Grip.\nOnce Grip is up click on the "Config" tab then the "Encode" tab. This is where we will do most of our work.\n\nYou should see this at first:\n\n\nOK. Heres where it got all confusing for me and where I'm really gonna help you.\n\nChange the the "Encoder" drop-down menu options to look like:\n\n * Encoder: lame\n * Encoder executable: /usr/bin/lame\n * Encoder command-line: -h -b %b %w %m\n * Encode file extension: mp3\n * Encode file format ~/mp3s/%A/%d/%n.%x\n\n\n\nLet me explain 2 things. Anything with a - in front of it, like, -h is a option passed to the Encoder. Anything with a % is a option passed to Grip.\n\nSo this; -h -b %b %w %m means.\n\n * -h High quality.\n * -b Specified minimum allowed bitrate (8,16,24,...,320. ie: -b 320).\n * %b The bitrate that files are being encoded at.\n\n-These 2 below shouldn't be messed with unless you know what you are doing.-\n\n * %w The filename of the wave file being ripped.\n * %m The filename of the file being encoded.\n\n\nAll that will result in a Joint Stereo, 128kbps CBR 44.1khz.mp3\n\nMy Settings\n\n\nMy "Encoder command-line" looks like, -h -V 3 %w %m.\n\n * -h High quality.\n * -V 3 Variable Bitrate switch with a quality level of 3. The "space" in between the capital "V" and the "3" are needed.\n [See the LAME commandline switches links above for more options.\n\n-These 2 below shouldn't be messed with unless you know what you are doing.-\n\n * %w The filename of the wave file being ripped.\n * %m The filename of the file being encoded.\n\n\nOther Examples\n\nSay you wanted a really normal standard like a High-quality, Stereo, CBR 192.mp3\n-h -b 192 -m s %w %m would be your "Encoder command-line" setting.\n\n Note - Anything not strictly defined will revert to defaults. ie: If you wanted a 48kHz sampling rate for your .mp3 and didn't define it it will be created at 44.1kHz.\n\nCode:\n\nMP3 - Needs the "lame" package from the repos. (these are my current settings)\n-V 3 --vbr-new %w %m\n\nFLAC - Needs the "flac" package from the repos.\n-V --best -T TITLE=%n -T ALBUM=%d -T TRACKNUMBER=%t -T ARTIST=%a -T GENRE=%G -T DATE=%y -o %m %w\n\nOGG - Needs the "vorbis-tools" package from the repos.\n-q 6 -a %a -l %d -t %n -d %y -N %t -G %G -b %b -o %m %w\n\nFAAC - Needs the "faac" package from the repos.\n-w -q 192 --artist "%A" --track "%t" --title "%n" --album "%d" --year "%y" --genre "%G" -o %m %w\n\n\n Note - Make sure you have your Universe and Multiverse repos open to get the appropriate codecs if you're using Ubuntu 6.10 and below.\n\n\nSo hopefully this will help anyone wanting to use Grip. Remember to read through my references. They will really help once you get your head around how arguments are passed. Use whats best for you.\n\nRevisions planned\n\n * Adding a section for cdparanoia. (need help on this one)\n * Clean up grammer, spelling and structure.\n\n[[Source|http://ubuntuforums.org/showthread.php?t=183125&highlight=grip]]
sudo chown <user name> /media/<hard drive location>
/***\n| Name|HideWhenPlugin|\n| Description|Allows conditional inclusion/exclusion in templates|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://mptw.tiddlyspot.com/#HideWhenPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\nFor use in ViewTemplate and EditTemplate. Example usage:\n{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}\n{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}\n***/\n//{{{\n\nwindow.removeElementWhen = function(test,place) {\n if (test) {\n removeChildren(place);\n place.parentNode.removeChild(place);\n }\n};\n\nmerge(config.macros,{\n\n hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( eval(paramString), place);\n }},\n\n showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !eval(paramString), place);\n }},\n\n hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAny(params), place);\n }},\n\n showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAny(params), place);\n }},\n\n hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);\n }},\n\n showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);\n }}\n\n});\n\n//}}}\n\n
Here is my situation:\n\n1)I Installed Ubuntu Feisty 7.04\n\nSome time late decided I still need windows for gaming, so I inserted Gparted live cd and resized my /home partition and created a 20 gig Primary NTFS partition.\n\n2) Install windows on to the new 20 gig partition. Now windows is the only thing that boots.\n\n3)To get my Ubuntu back and Windows as dual boot, I did this:\n\nBoot with gparted live cd. Issue this:\n\nsu\ngrub (enter)\nfind /boot/grub/stage1\nroot (hd0,0)\nsetup (hd0)\nquite\n\nThinking that that is it, I rebooted only to find out that Ubuntu is the only things that boots and in the grub only Ubuntu is listed.\n\n5)I inserted windows cd and went to Fix installation console menu: FIXMBR and FIXBOOT\n\n6) Now Windows XP is the only thing that boots, I repeated step 3 and I am back to Ubuntu being the only thing that boots.\n\nYou could try adding an entry to your menu.lst to boot Windows...open a terminal, determine which is your Window's partition with:\nCode:\n\nsudo fdisk -l\n\n-l is a small "L"\n\nThen to add an entry to your menu.lst:\nCode:\n\nBoot ubuntu, edit you /boot/grub/menu.lst, and add windows to the list of operating systems. These are the lines you should add:\n\nadd your Window's entry to the very end of the file...for example if Windows is on /dev/sda3, you entry would be:\nCode:\n\ntitle Windows XP\nroot (hd0,2)\nsavedefault\nmakeactive\nchainloader +1\n\nquit & save\n\n/dev/sda4 = (hd0,3)\n/dev/sda6 = (hd0,5)\n\nNumbering for these things starts at 0, not 1.\n\nSo hd0 is your first (and maybe only) hard disk. 0 is the first partition.\n\nSo /dev/sda4 is (hd0,3).\n\n{{{\nOne more thing that I needed to do was\n\nchange\n\n## hiddenmenu\n# Hides the menu by default (press ESC to see the menu)\nhiddenmenu\n\n\nto\n\n## hiddenmenu\n# Hides the menu by default (press ESC to see the menu)\n#hiddenmenu\n\nAs after all the changes the menu still was not appearing.\n}}}\n\n[[Source|http://ubuntuforums.org/showthread.php?p=2924301&posted=1#post2924301]]
1. In a blank tab, type about:config. You will be shown a page with a list of Firefox's configuration variables.\n\n2. In the filter field, type network.protocol-handler. This will show a list of protocols handled by Firefox. You may or may not see the webcal protocol in the list. If it's there, it would look something like network.protocol-handler.external.webcal. The protocol is probably not there, though, in which case you'll need to add it.\n\n3. To create the configuration setting, right-click on any item in the list and select New > Boolean. In the preference name, type network.protocol-handler.external.webcal, and set the value to true. This tells Firefox to use an external program to handle the webcal:// protocol.\n\n4. Next, create a new string item by right-clicking anywhere on the list and selecting New > String. In the preference name, type network.protocol-handler.app.webcal, and in the value field, type the path to the program you want to use for that protocol (e.g. c:\sProgram Files\sMicrosoft Office\sOffice\sOutlook.exe).
How to mount/unmount Image (ISO) files without burning\n\n \nsudo mkdir /media/iso\nsudo modprobe loop\nsudo mount file.iso /media/iso/ -t iso9660 -o loop\n\n[[Source|http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_mount.2Funmount_Image_.28ISO.29_files_without_burning]]\n
which “program” ?.....search for installed program executable\nfind -mtime 0 ?.....shows recent files edited\nsudo hdparm -d1 /dev/hda ?.....check for dma on cdrom\nlsusb ?.....shows usb connected devices\nksystemlog ?..... like eventvwr.msc\nfree -m ?.....shows memory usage On a linux system, the memory is used to “cache” data that is used by the CPU. The idea behind caching is that it takes longer for your CPU to access data on the hard drive than it does to access data that is present in the main memory. So caching using the main memory effectively speeds up the system. On a windows system, there is no such optimization, so free memory is wasted as it does not get used. Now when an application really needs all the memory that is used for caching, Linux pops out the cached data and makes the required memory available. As a last option, if all of the main memory is used up, then the memory you set aside in your swap partition is used too.\ncat /etc/issue ?.....version of ubuntu you are using\nlsb_release -a ?.....version of ubuntu you are using\napropos “program” ?.....brief description of program\ndf -h ?.....shows disk usage report\ntop ?.....shows system resources\nuname -a ?.....shows kernel version\nifconfig ?.....shows network status, and info\nps ?.....shows user process also try with AUXWW\nfdisk -1 ?.....view partition info\nfdisk -l|grep NTFS ........view ntfs drives, particularly external usb drive
Jobs\ntype jobs to see list of running jobs\nto kill type kill %1
How to search for programs via commands line:\n\napt-cache search program name
The workaround to view only specifics categories is kind of a nasty thing, I have to manually create filters for what can be already in Korganizer as a Toolbar.\nMeaning "View Category" Toolbar to make it quick and easy to switch among to dos relating to specific categories. View filters should be used for all other options and tweaks.\n\nThere needs to be a simple way to sort out by Category.\n\n\n------- Additional Comment #1 From Robert 2007-02-07 18:31 -------\nThis also creates a big problem when viewing the Calendar. Say I am looking at my Calendar and on the elft I have my list of To Dos, I want to drag and drop my To Do to the calendar to Organize my Day. Problem is, if I View by Filter, say Work To DO items, this means that everything is gone from my Calendar's view but work. Say I drag and drop an item to my 3PM Monday, but I did not know that there was already a Personal to do item there as Filter View does not allow me to do this.\n\nPoint is, we just need to be able to collapse like a tree all To Do items relating to a specific Category. Or something just to view specific Category To Dos but without filtering out the other To Do items from the Calendar.\n\nView Filter only creates a problem.\n\n\n------- Additional Comment #2 From Robert 2007-02-24 19:18 -------\nOk, Here is the workaround I have found with the help of few people:\n\n1) Go to Manage Categories and do necessary changed to your needs.\n\n2) Create a new To Do item and call is say @Work "@" is optional. I just use it to specify @=context Work taken from the GTD system. Next label it with Work category.\n\n3) No right click on the @Work and select Create a new Sub To Do and enter whatever you want that relates to the @Work context. It will be automatically tagged with the Work category.\n\nThis way you can have nice collapsible lists and sublists and categories and all without the need to use View Filters. \n\n[[Source|http://bugs.kde.org/show_bug.cgi?id=141348]]
mount /dev/hdd1 /mnt/data -t vfat\nmount at boot /dev/hdd1 /mnt/data vfat iocharset=utf8,umask=000 0 0\nmount -a /media/usb ?.....100gb drive\n\nUSB drive\nsudo mount -a /media/extusb also install ntfs-3g for easy rw to ntfs partition:\nafter installation of ntfs-3g you need to edit /etc/fstab and add the\nfollowing line “/dev/sda1 /media/extusb ntfs-3g\ndefaults,locale=en_US.utf8 0 0” Where extusb is a directory created in\n/media/ and can be renamed. To view usb drives .. see INFO
<<tag [[Backup]]>>\n<<tag [[Commands]]>>\n<<tag [[RemoteControl]]>>\n<<tag [[Video]]>>\n<<tag [[KDE]]>>\n<<tag [[Network]]>>\n<<tag [[Hardware]]>>\n<<tag [[Software]]>>\n<<tag [[UbuntuFeisty]]>>\n<<tag [[Other]]>>\nExtendedFormatting
*nix command line tip - man is your friend by Peter\n\nThe command line is great. When you know how to use it properly, it can be the fastest way to achieve a task and it is endlessly extensible.\n\nThe problem is, commands and their syntax can be really tricky to remember. Sometimes you just can’t remember what a particular switch does, or what switch you need to perform a particular task. My common one until recently was always forgetting which way round you use ln (I’ve taught myself that it’s target, link name).\n\nThankfully, help is at hand, thanks to man. Short for manual, if you invoke the man command followed by the name of the command you’re looking for help with, you’ll get a rather geeky, but still often helpful manual page.\n\nFor example,\n\n $ man ls
ipulating directories in Linux - 2.0 >\n\nHow to create, move, and delete directories in Linux with the mkdir, mv, and rmdir commands. You'll also learn how to copy a directory recursively and how to remove a directory that is not empty.\n\nThis tuXfile teaches you how to manipulate directories in Linux. If you'd like to learn how to manipulate files, check out the Manipulating files in Linux tuXfile.\n\nAuthor: Nana Långstedt < nana.langstedt at gmail.com >\ntuXfile created: 20 December 2001\nLast modified: 22 September 2005\n\ncontents\n\n * Creating directories\n * Removing directories\n * Copying and moving directories\n * What next?\n\n\nback to\n\n * File systems and directories\n * Linux help\n * tuXfiles home\n\n\n< Creating directories >\n\nCreating a new, empty directory is very easy. You use the mkdir command:\n$ mkdir dir1\n\nThat's it. It's really that easy!\n\n< Removing directories >\n\nThere are two commands you can use for removing directories. If the directory is empty, you can use rmdir:\n$ rmdir dir1\n\nYou can use rmdir only if the directory is empty. If you want to remove a directory with all its contents, you can use rm with the -r option. The -r option tells rm to remove a directory recursively:\n$ rm -r dir1\n\nIt goes without saying that you can cause a lot of trouble with rm -r if you're not careful! In some cases it might be a good thing to use the -i option when deleting a directory with its contents so that you'd be prompted before each file in the directory gets deleted:\n$ rm -ir dir1\n\n< Copying and moving directories >\n\nFor copying and moving directories you can use the cp and mv commands just like you use them with files. Yeah, I know. If you've already tried to copy a directory with cp, you've probably noticed that cp just complains at you. Probably it says something like cp: omitting directory yadda yadda. You see, the cp command wants you to use the -r option if you want to copy a directory with its contents. The -r means "copy recursively":\n$ cp -r dir1 dir2\n\nThe above creates a directory named dir2 whose contents will be identical to dir1. However, if dir2 already exists, nothing will be overwritten: the directory dir1 will be copied into the dir2 directory under the name dir2/dir1.\n\nWhen renaming directories, you use the mv command exactly the same way as with files:\n$ mv dir1 dir2\n\nWhen dealing with directories, mv works a bit like cp does. If dir2 doesn't exist, the above will rename dir1 to dir2, but if dir2 exists, the directory dir1 will be moved into the dir2 directory under the name dir2/dir1.\n\n< What next? >\n\nIf you've been reading through the tutorials in the Linux command line basics section, congratulations! You now have the very basic, essential skills for using the Linux command line. However, although you can tolerate the command line at this point, you still haven't learned the neat little tricks that actually make the Linux command line a lot better than MS-DOS.\n\nRelated tuXfiles\n\n * Automatic file name completion\n The next tutorial in the Linux command line basics series. Learn a great little trick that makes the command line a lot easier to use.\n\n\n[[Source|http://www.tuxfiles.org/linuxhelp/dirman.html]]
how do you have mouse gestures ?!\n\nkcontrol -> regional & accessibility -> input actions... any app in KDE can have mouse gestures\n\nGestures Settings
/***\n| Name|MptwLayoutPlugin|\n| Description|A package containing templates and css for the MonkeyPirateTiddlyWiki layout|\n| Version|3.0 ($Rev: 1845 $)|\n| Source|http://mptw.tiddlyspot.com/#MptwLayoutPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n!Notes\nPresumes you have TagglyTaggingPlugin installed. To enable this you should have a PageTemplate containing {{{[[MptwPageTemplate]]}}} and similar for ViewTemplate and EditTemplate.\n***/\n//{{{\n// used in MptwViewTemplate\nconfig.mptwDateFormat = 'DD/MM/YY';\nconfig.mptwJournalFormat = 'Journal DD/MM/YY';\n//config.mptwDateFormat = 'MM/0DD/YY';\n//config.mptwJournalFormat = 'Journal MM/0DD/YY';\n\nconfig.shadowTiddlers.GettingStarted += "\sn\snSee also MonkeyPirateTiddlyWiki.";\n\n//}}}\n\n//{{{\nmerge(config.shadowTiddlers,{\n\n'MptwEditTemplate':[\n "<!--{{{-->",\n "<!--- http://mptw.tiddlyspot.com/#MptwEditTemplate ($Rev: 1829 $) --->",\n "<div class=\s"toolbar\s" macro=\s"toolbar +saveTiddler saveCloseTiddler closeOthers -cancelTiddler cancelCloseTiddler deleteTiddler\s"></div>",\n "<div class=\s"title\s" macro=\s"view title\s"></div>",\n "<div class=\s"editLabel\s">Title</div><div class=\s"editor\s" macro=\s"edit title\s"></div>",\n "<div class=\s"editLabel\s">Tags</div><div class=\s"editor\s" macro=\s"edit tags\s"></div>",\n "<div class=\s"editorFooter\s"><span macro=\s"message views.editor.tagPrompt\s"></span><span macro=\s"tagChooser\s"></span></div>",\n "<div macro=\s"showWhenExists EditPanelTemplate\s">[[EditPanelTemplate]]</div>",\n "<div class=\s"editor\s" macro=\s"edit text\s"></div>",\n "<!--}}}-->",\n ""\n].join("\sn"),\n\n'MptwPageTemplate':[\n "<!--{{{-->",\n "<!-- http://mptw.tiddlyspot.com/#MptwPageTemplate ($Rev: 1829 $) -->",\n "<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>",\n " <div class='headerShadow'>",\n " <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;",\n " <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>",\n " </div>",\n " <div class='headerForeground'>",\n " <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;",\n " <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>",\n " </div>",\n "</div>",\n "<!-- horizontal MainMenu -->",\n "<div id='topMenu' refresh='content' tiddler='MainMenu'></div>",\n "<!-- original MainMenu menu -->",\n "<!-- <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> -->",\n "<div id='sidebar'>",\n " <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>",\n " <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>",\n "</div>",\n "<div id='displayArea'>",\n " <div id='messageArea'></div>",\n " <div id='tiddlerDisplay'></div>",\n "</div>",\n "<!--}}}-->",\n ""\n].join("\sn"),\n\n'MptwStyleSheet':[\n "/*{{{*/",\n "/* http://mptw.tiddlyspot.com/#MptwStyleSheet ($Rev: 1860 $) */",\n "",\n "/* a contrasting background so I can see where one tiddler ends and the other begins */",\n "body {",\n " background: [[ColorPalette::TertiaryLight]];",\n "}",\n "",\n "/* sexy colours and font for the header */",\n ".headerForeground {",\n " color: [[ColorPalette::PrimaryPale]];",\n "}",\n ".headerShadow, .headerShadow a {",\n " color: [[ColorPalette::PrimaryMid]];",\n "}",\n "",\n "/* separate the top menu parts */",\n ".headerForeground, .headerShadow {",\n " padding: 1em 1em 0;",\n "}",\n "",\n ".headerForeground, .headerShadow {",\n " font-family: 'Trebuchet MS' sans-serif;",\n " font-weight:bold;",\n "}",\n ".headerForeground .siteSubtitle {",\n " color: [[ColorPalette::PrimaryLight]];",\n "}",\n ".headerShadow .siteSubtitle {",\n " color: [[ColorPalette::PrimaryMid]];",\n "}",\n "",\n "/* make shadow go and down right instead of up and left */",\n ".headerShadow {",\n " left: 1px;",\n " top: 1px;",\n "}",\n "",\n "/* prefer monospace for editing */",\n ".editor textarea {",\n " font-family: 'Consolas' monospace;",\n "}",\n "",\n "/* sexy tiddler titles */",\n ".title {",\n " font-size: 250%;",\n " color: [[ColorPalette::PrimaryLight]];",\n " font-family: 'Trebuchet MS' sans-serif;",\n "}",\n "",\n "/* more subtle tiddler subtitle */",\n ".subtitle {",\n " padding:0px;",\n " margin:0px;",\n " padding-left:0.5em;",\n " font-size: 90%;",\n " color: [[ColorPalette::TertiaryMid]];",\n "}",\n ".subtitle .tiddlyLink {",\n " color: [[ColorPalette::TertiaryMid]];",\n "}",\n "",\n "/* a little bit of extra whitespace */",\n ".viewer {",\n " padding-bottom:3px;",\n "}",\n "",\n "/* don't want any background color for headings */",\n "h1,h2,h3,h4,h5,h6 {",\n " background: [[ColorPalette::Background]];",\n " color: [[ColorPalette::Foreground]];",\n "}",\n "",\n "/* give tiddlers 3d style border and explicit background */",\n ".tiddler {",\n " background: [[ColorPalette::Background]];",\n " border-right: 2px [[ColorPalette::TertiaryMid]] solid;",\n " border-bottom: 2px [[ColorPalette::TertiaryMid]] solid;",\n " margin-bottom: 1em;",\n " padding-bottom: 2em;",\n "}",\n "",\n "/* make options slider look nicer */",\n "#sidebarOptions .sliderPanel {",\n " border:solid 1px [[ColorPalette::PrimaryLight]];",\n "}",\n "",\n "/* the borders look wrong with the body background */",\n "#sidebar .button {",\n " border-style: none;",\n "}",\n "",\n "/* this means you can put line breaks in SidebarOptions for readability */",\n "#sidebarOptions br {",\n " display:none;",\n "}",\n "/* undo the above in OptionsPanel */",\n "#sidebarOptions .sliderPanel br {",\n " display:inline;",\n "}",\n "",\n "/* horizontal main menu stuff */",\n "#displayArea {",\n " margin: 1em 15.7em 0em 1em; /* use the freed up space */",\n "}",\n "#topMenu br {",\n " display: none;",\n "}",\n "#topMenu {",\n " background: [[ColorPalette::PrimaryMid]];",\n " color:[[ColorPalette::PrimaryPale]];",\n "}",\n "#topMenu {",\n " padding:2px;",\n "}",\n "#topMenu .button, #topMenu .tiddlyLink, #topMenu a {",\n " margin-left: 0.5em;",\n " margin-right: 0.5em;",\n " padding-left: 3px;",\n " padding-right: 3px;",\n " color: [[ColorPalette::PrimaryPale]];",\n " font-size: 115%;",\n "}",\n "#topMenu .button:hover, #topMenu .tiddlyLink:hover {",\n " background: [[ColorPalette::PrimaryDark]];",\n "}",\n "",\n "/* for Tagger Plugin, thanks sb56637 */",\n ".popup li a {",\n " display:inline;",\n "}",\n "",\n "/* make it print a little cleaner */",\n "@media print {",\n " #topMenu {",\n " display: none ! important;",\n " }",\n " /* not sure if we need all the importants */",\n " .tiddler {",\n " border-style: none ! important;",\n " margin:0px ! important;",\n " padding:0px ! important;",\n " padding-bottom:2em ! important;",\n " }",\n " .tagglyTagging .button, .tagglyTagging .hidebutton {",\n " display: none ! important;",\n " }",\n " .headerShadow {",\n " visibility: hidden ! important;",\n " }",\n " .tagglyTagged .quickopentag, .tagged .quickopentag {",\n " border-style: none ! important;",\n " }",\n " .quickopentag a.button, .miniTag {",\n " display: none ! important;",\n " }",\n "}",\n "/*}}}*/",\n ""\n].join("\sn"),\n\n'MptwViewTemplate':[\n "<!--{{{-->",\n "<!--- http://mptw.tiddlyspot.com/#MptwViewTemplate ($Rev: 1830 $) --->",\n "",\n "<div class='toolbar'>",\n " <span macro=\s"showWhenTagged systemConfig\s">",\n " <span macro=\s"toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'\s"></span>",\n " </span>",\n " <span style=\s"padding:1em;\s"></span>",\n " <span macro='toolbar closeTiddler closeOthers +editTiddler deleteTiddler undoChanges permalink references jump'></span>",\n " <span macro='newHere label:\s"new here\s"'></span>",\n " <span macro='newJournalHere {{config.mptwJournalFormat?config.mptwJournalFormat:\s"MM/0DD/YY\s"}}'></span>",\n "</div>",\n "",\n "<div class=\s"tagglyTagged\s" macro=\s"tags\s"></div>",\n "",\n "<div class='titleContainer'>",\n " <span class='title' macro='view title'></span>",\n " <span macro=\s"miniTag\s"></span>",\n "</div>",\n "",\n "<div class='subtitle'>",\n " <span macro='view modifier link'></span>,",\n " <span macro='view modified date {{config.mptwDateFormat?config.mptwDateFormat:\s"MM/0DD/YY\s"}}'></span>",\n " (<span macro='message views.wikified.createdPrompt'></span>",\n " <span macro='view created date {{config.mptwDateFormat?config.mptwDateFormat:\s"MM/0DD/YY\s"}}'></span>)",\n "</div>",\n "",\n "<div macro=\s"showWhenExists ViewPanelTemplate\s">[[ViewPanelTemplate]]</div>",\n "",\n "<div macro=\s"hideWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')\s">",\n " <div class='viewer' macro='view text wikified'></div>",\n "</div>",\n "<div macro=\s"showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')\s">",\n " <div class='viewer'><pre macro='view text'></pre></div>",\n "</div>",\n "",\n "<div macro=\s"showWhenExists ViewDashboardTemplate\s">[[ViewDashboardTemplate]]</div>",\n "",\n "<div class=\s"tagglyTagging\s" macro=\s"tagglyTagging\s"></div>",\n "",\n "<!--}}}-->",\n ""\n].join("\sn")\n\n});\n//}}}\n
For upgrading directly from tiddlyspot. See [[ImportTiddlers]].\nURL: /proxy/mptw.tiddlyspot.com/upgrade.html\n
For upgrading. See [[ImportTiddlers]].\nURL: http://mptw.tiddlyspot.com/upgrade.html\n
NFS, Network File System, is a file sharing protocol in a UNIX network. It is the de facto UNIX standard. It is strongly associated with UNIX systems, though it can be used on any platform such as Macintosh and Microsoft Windows operating systems.\n\n the de facto UNIX standard\n\nInstallation and configuration.\n\n\nI will be doing this whole set-up through terminal seeing the shares-admin Ubuntu package gave up after a little tweaking.\n\nFirst install the necessary packages from your local repository. Aptitude may be switch with apt-get for a _less then modern_ installation.\n\n 1. sudo aptitude -P install nfs-kernel-server nfs-common portmap\n\nWhen configuring portmap do =not= bind loopback. If you do you can either edit /etc/default/portmap by hand or run:\n\n 1. sudo dpkg-reconfigure portmap\n\nIf you have edited the file by hand you can restart portmap via:\n\n 1. sudo /etc/init.d/portmap restart\n\nSharing Local Folders\nTo specify a folder you will need to edit /etc/exports, which can be done like (replace vi for your favorite editor):\n\n 1. sudo vi /etc/exports\n\nFor an example I will share, with full read/write and privileges, my temporary directory. This directory will be broad casted to every local IP from 192.168.1.1 through 192.168.1.255.\n\n 1. /home/czar/tmp 192.168.1.1/24(rw,no_root_squash,async)\n\nTo share a read only drive, for example on a Windows NTFS drive, you can use something like the following:\n\n 1. /media/hdc5/music 192.168.1.1/24(ro,async)\n 2. sudo /etc/init.d/nfs-kernel-server restart\n\nAfter making changes to /etc/export you can make the shares effect by issuing the:\n\n 1. sudo exportfs -a\n\nUse on the _Other_ PC\nLast you will need to mount the volume on the other computer. So, ether shift screens or SSH to lab2 and open a terminal. You can only mount into another folder which must be created.\n\n 1. sudo mkdir ~/music\n\nNow mount music from lab1 into ~/music at lab2.\n\n 1. sudo mount 192.168.1.2:/media/hdc5/music ~/music\n\nThat's it!\nHopefully everything went well and you can now browse to ~/music locally on lab2. If you encounter errors, do not worry and read them carefully. To mount my first NFS volume felt as if it took weeks. NFS simply owns in a LAN UNIX environment. However I have seen warnings not to share via TCP/IP unless you are on a nice secured BSD system.\n\n[[Source|http://czarism.com/easy-peasy-ubuntu-linux-nfs-file-sharing]]
Installing ntfs-3g\n\nntfs-3g this is necessary if you have a ntfs drive in your computer ( Usually Windows XP installs on NTFS drive) and you want to read and write data to the drive you have to install this .\n\nThis can be installed as following type the following at the command prompt\n\nsudo apt-get update\nsudo apt-get upgrade\n\n\nsudo apt-get install ntfs-config\n\n\nThen type the following command\n\ngksu ntfs-config\n\n\nThis is automatic configuration of ntfs-3g , enable read , write support and it should be configured.\n\n\nthese commands would back up fstab file if configuration goes wrong.\n\nsudo cp /etc/fstab /etc/fstab.bak\ngksu gedit /etc/fstab\n\nNow one more thing you want your windows (NTFS) drive to be mounted automatically add the following entries to /etc/fstab\n\n/dev/ /media/ ntfs-3g defaults,locale=en_US.utf8 0 0\n\n\nWhere /dev/partition is the partition which is NTFS drive , in my case /dev/hda1\n/media/ this is just the directory you want to use as a mount point where windows drive would be mounted , you can very well use any drive you like.\n\n\nnow Restart ubuntu your windows partition should be working well.\n\n[[Source|http://linuxondesktop.blogspot.com/2007/02/13-things-to-do-immediately-after.html]]
It can happen that Ubuntu will take a long time because it tries to load network interfaces during boot. Comment out those which you do not need to speed up things:\n\nauto lo\niface lo inet loopback\n\n''#auto eth1''\n''#iface eth1 inet dhcp''\n\n''#auto eth2''\n''#iface eth2 inet dhcp''\n\nauto ath0\niface ath0 inet dhcp\n\nauto wlan0\niface wlan0 inet dhcp\n\n[[Reference|http://ubuntuforums.org/showthread.php?p=2874661#post2874661]]
/***\n| Name:|NewHerePlugin|\n| Description:|Creates the new here and new journal macros|\n| Version:|3.0 ($Rev: 1845 $)|\n| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source:|http://mptw.tiddlyspot.com/#NewHerePlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\nmerge(config.macros, {\n newHere: {\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);\n }\n },\n newJournalHere: {\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);\n }\n }\n});\n\n//}}}\n\n
What needs to be done:\n\n 1. Open a terminal\n\n 2. Install needed files:\n Code:\n\n sudo apt-get install python-dev python-twisted unrar par2\n\n 3. Download hellanzb to your userdir: http://www.hellanzb.com/trac/\n \n\n 4. Unpack:\n Code:\n\n sudo tar -xzvf hellanzb-.wahtever the version is \n\n 5. Cd to directory:\n Code:\n\n cd hellanzb-.wahtever the version is \n\n 6. Run install script:\n Code:\n\n python setup.py install\n\n 7. Copy config file:\n Code:\n\n sudo cp /usr/etc/hellanzb.conf.sample /usr/etc/hellanzb.conf\n\n 8. Configure settings:\n Code:\n\n gksudo gedit /usr/etc/hellanzb.conf\n\n Look for: defineServer and change the account settings to your usenet account settings.\n Change the PREFIX dir to:\n Code:\n\n /home/your-user-name/\n\n You can change the other directories to your preference but it is not needed. There are also a lot of other options in the config file, change if needed.\n 9. Run the program:\n Code:\n\n hellanzb.py\n\n 10. Download a NZB file and place it in:\n Code:\n\n /home/your-user-dir/nzb/daemon.queue/\n\n or whatever directory you choose in the config file.\n 11. Finished files will be in:\n Code:\n\n /home/your-user-dir/usenet/\n\n or whatever directory you choose in the config file.\n\n\nPar2 files will only be downloaded from the server if needed for repair. This will save bandwidth \n \n\n\nOther notes:\n\nI was having the same problem with hellanzb installed from source on a fresh install of Feisty. Here is how I fixed it:\n\nhellanzb is now in the repositories.\n\nFirst, I got rid of the copy of hellanzb that I installed:\nCode:\n\n$ sudo rm /usr/bin/hellanzb.py\n$ sudo rm -rf /usr/lib/python2.5/site-packages/Hellanzb/\n$ sudo rm /usr/etc/hellanzb.*\n\nI then installed hellanzb from the repos. Note that if you are doing a fresh install from the repos, you also need unrar and par2.\n\nCode:\n\n$ sudo aptitude install hellanzb unrar par2\n\nI then executed hellanzb from a command line\n\nCode:\n\n$ hellanzb\n\nand it worked. After that, I killed hellanzb and configured it. Note that your configuration file is now /etc/hellanzb.conf instead of /usr/etc/hellanzb.conf\n\nNow I use this command to start hellanzb using screen whenever I log into Gnome:\n\nCode:\n\nscreen -S hellanzb -d -m hellanzb\n\nand I use this shortcut in Gnome to connect to that screen (make a custom shortcut with type 'Application in Terminal'):\n\nCode:\n\nscreen -R hellanzb\n\n[[Source|http://ubuntuforums.org/showthread.php?t=169749&highlight=hellanzb&page=16]]
I've been using hella since last august\n I usually bother pjenvey instead of solving the problem myself, but perhaps I could help you\n<callidusfox> Thasp: how do I make it so that if I am downloading somehting and I want t odownload something else right now, how do I move that new nzb to the top of the list ?\n lets say that I have a specific nzb named music.nzb in my qoue folder. How do I move it up? hellanzb.py -next music\n<Thasp> type hellanzb.py status\n what number is it in the queue?\n<callidusfox> Thasp: this? Queued: (3) spiderman [23 MB]\n<Thasp> hellanzb.py force 3\n does that work?\n<callidusfox> Thasp: I think it does !\n Thasp: Thank you :-)\n<Thasp> if you want to move something to the top of the queueu\n type hellanzb.py force queuenumber\n if you want to push what is downloading now down, and replace it with something in the queue\n type hellanzb.py force queeunumber\n<callidusfox> Thasp: I was trying before hellanzb.py force spiderman that is not correct ?\n<Thasp> Yes. Use the number, not the name. \n see the 3 next to spiderman\n on the left of the name of the nzb is the number\n<callidusfox> yeah\n got it, strange as i thought that the nzb ID means the nzb name or nzb actual bumber liek 24354563
As is mentioned in another thread here, one way to get rid of this message is to edit menu.lst in /boot/grub and change the line,\n\n# defoptions=quiet splash\n\nto\n\n# defoptions=quiet splash noresume\n\nand then run,\n\nsudo update-grub\n\n\nAfter doing this, I no longer get this message. Hope this helps.\n\n[[Source|http://ubuntuforums.org/showthread.php?t=422875&highlight=kinit]]
[[MptwPageTemplate]]\n
/***\n| Name|QuickOpenTagPlugin|\n| Description|Changes tag links to make it easier to open tags as tiddlers|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n***/\n//{{{\nconfig.quickOpenTag = {\n\n dropdownChar: (document.all ? "\su25bc" : "\su25be"), // the little one doesn't work in IE?\n\n createTagButton: function(place,tag,excludeTiddler) {\n // little hack so we can to <<tag PrettyTagName|RealTagName>>\n var splitTag = tag.split("|");\n var pretty = tag;\n if (splitTag.length == 2) {\n tag = splitTag[1];\n pretty = splitTag[0];\n }\n \n var sp = createTiddlyElement(place,"span",null,"quickopentag");\n createTiddlyText(createTiddlyLink(sp,tag,false),pretty);\n \n var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,\n config.views.wikified.tag.tooltip.format([tag]),onClickTag);\n theTag.setAttribute("tag",tag);\n if (excludeTiddler)\n theTag.setAttribute("tiddler",excludeTiddler);\n return(theTag);\n },\n\n miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {\n var tagged = store.getTaggedTiddlers(tiddler.title);\n if (tagged.length > 0) {\n var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,\n config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);\n theTag.setAttribute("tag",tiddler.title);\n theTag.className = "miniTag";\n }\n },\n\n allTagsHandler: function(place,macroName,params) {\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul");\n if(tags.length == 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++) {\n var theListItem = createTiddlyElement(theDateList,"li");\n var theLink = createTiddlyLink(theListItem,tags[t][0],true);\n var theCount = " (" + tags[t][1] + ")";\n theLink.appendChild(document.createTextNode(theCount));\n var theDropDownBtn = createTiddlyButton(theListItem," " +\n config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);\n theDropDownBtn.setAttribute("tag",tags[t][0]);\n }\n },\n\n // todo fix these up a bit\n styles: [\n"/*{{{*/",\n"/* created by QuickOpenTagPlugin */",\n".tagglyTagged .quickopentag, .tagged .quickopentag ",\n" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",\n".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",\n".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",\n"/* extra specificity to make it work right */",\n"#displayArea .viewer .quickopentag a.button, ",\n"#displayArea .viewer .quickopentag a.tiddyLink, ",\n"#mainMenu .quickopentag a.tiddyLink, ",\n"#mainMenu .quickopentag a.tiddyLink ",\n" { border:0px solid black; }",\n"#displayArea .viewer .quickopentag a.button, ",\n"#mainMenu .quickopentag a.button ",\n" { margin-left:0px; padding-left:2px; }",\n"#displayArea .viewer .quickopentag a.tiddlyLink, ",\n"#mainMenu .quickopentag a.tiddlyLink ",\n" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",\n"a.miniTag {font-size:150%;} ",\n"#mainMenu .quickopentag a.button ",\n" /* looks better in right justified main menus */",\n" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }", \n"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",\n"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",\n"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",\n"/*}}}*/",\n ""].join("\sn"),\n\n init: function() {\n // we fully replace these builtins. can't hijack them easily\n window.createTagButton = this.createTagButton;\n config.macros.allTags.handler = this.allTagsHandler;\n config.macros.miniTag = { handler: this.miniTagHandler };\n config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;\n store.addNotification("QuickOpenTagStyles",refreshStyles);\n }\n}\n\nconfig.quickOpenTag.init();\n\n//}}}\n
-f, --force\sn ignore nonexistent files, never prompt\n-r, -R, --recursive\sn remove directories and their contents recursively
/***\n| Name:|RenameTagsPlugin|\n| Description:|Allows you to easily rename or delete tags across multiple tiddlers|\n| Version:|3.0 ($Rev: 1845 $)|\n| Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\nRename a tag and you will be prompted to rename it in all its tagged tiddlers.\n***/\n//{{{\nconfig.renameTags = {\n\n prompts: {\n rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",\n remove: "Remove the tag '%0' from %1 tidder%2?"\n },\n\n removeTag: function(tag,tiddlers) {\n store.suspendNotifications();\n for (var i=0;i<tiddlers.length;i++) {\n store.setTiddlerTag(tiddlers[i].title,false,tag);\n }\n store.resumeNotifications();\n store.notifyAll();\n },\n\n renameTag: function(oldTag,newTag,tiddlers) {\n store.suspendNotifications();\n for (var i=0;i<tiddlers.length;i++) {\n store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old\n store.setTiddlerTag(tiddlers[i].title,true,newTag); // add new\n }\n store.resumeNotifications();\n store.notifyAll();\n },\n\n storeMethods: {\n\n saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,\n\n saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields) {\n if (title != newTitle) {\n var tagged = this.getTaggedTiddlers(title);\n if (tagged.length > 0) {\n // then we are renaming a tag\n if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))\n config.renameTags.renameTag(title,newTitle,tagged);\n\n if (!this.tiddlerExists(title) && newBody == "")\n // dont create unwanted tiddler\n return null;\n }\n }\n return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields);\n },\n\n removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,\n\n removeTiddler: function(title) {\n var tagged = this.getTaggedTiddlers(title);\n if (tagged.length > 0)\n if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))\n config.renameTags.removeTag(title,tagged);\n return this.removeTiddler_orig_renameTags(title);\n }\n\n },\n\n init: function() {\n merge(TiddlyWiki.prototype,this.storeMethods);\n }\n}\n\nconfig.renameTags.init();\n\n//}}}\n\n
Does anyone know hot can I give my ip to someone if I am connected via router? I mean My ip is 192.168.1.2 but that is local area ip address, how can someone coonecte to me via internet? What is my full address ?\n\ncheck in your router for a DMZ setting\n\nthen you can forward the ports to that computer\n\nto get your actual ip address (for the router) try www.whatismyipaddress.com
My approach is: I just back up my data files. These live under /home/yourusername. In fact, I only selectively back up documents and my .evolution folder there. Obviously, if you have other data you know about, such as your server data, you will want to back these up as well.\n\nWith megabite USB disks getting cheap these days, I back up using rsync. The great thing of rsync is that it only copies the changed files. Backups therefore are a matter of seconds to minutes. Moreover, rsync can delete files on the backup that do not anymore exist on the source, making it possible to maintain a perfect replica of your data.\n\nYou can use rsync to "synchronise'local data, and no root rights are needed. However, you can also syncronize over an ssh connection. Also, yo can syncronise any network connection that you can mount as a local folder.\n\nThe basic usage for "mirroring" is\n{{{\nrsync -a /path/source /path/destination\n}}}\n\nTo delete files in the destination that do not anymore exist in the source, use --delete. To make the proces a bit less tacitus, add -v for "verbose. Thus, you get my favourite line:\n{{{\nrsync -av --delete /path/source /path/destination\n}}}\n[[Source|http://ubuntuforums.org/showthread.php?t=451627&highlight=rsync+backup]]
kdesu “program” or sudo “program”
To share files with windows, edit gksudo gedit /etc/samba/smb.conf\n\nChange ;security = user to security = share\n\nThis is also the place to edit which folders you want to share\n\nThen sudo /etc/init.d/samba restart
/***\n| Name|SaveCloseTiddlerPlugin|\n| Description|Provides two extra toolbar commands, saveCloseTiddler and cancelCloseTiddler|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://mptw.tiddlyspot.com/#SaveCloseTiddlerPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\nTo use these you must add them to the tool bar in your EditTemplate\n***/\n//{{{\nmerge(config.commands,{\n\n saveCloseTiddler: {\n text: 'done/close',\n tooltip: 'Undo changes to this tiddler and close it',\n handler: function(e,src,title) {\n config.commands.saveTiddler.handler(e,src,title);\n config.commands.closeTiddler.handler(e,src,title);\n return false;\n }\n },\n\n cancelCloseTiddler: {\n text: 'cancel/close',\n tooltip: 'Save changes to this tiddler and close it',\n handler: function(e,src,title) {\n config.commands.cancelTiddler.handler(e,src,title);\n config.commands.closeTiddler.handler(e,src,title);\n return false;\n }\n }\n\n});\n\n//}}}\n\n
Enter "about:config" (less the ") into the url field of fx, this will bring up the config & perf data for your browser. Right click on open space and select New -> String. This opens up a name box and entry field where you put;\n\n"network.protocol-handler.app.mailto" (less the ")\n\nThen after you hit enter, it opens up the string box were you will now put;\n\n"kmailservice" (less the ")\n\nThen restart your browser.\n\nI know it very similar, however as a sys-admin asking people to hand-bomb files without understanding what they are really doing is a door to disaster. The facilities exist in the browser so it should be used as the development team designed it.\n\nBy the way this will work if Kontact, Kmail is running or not, even if you use kwallet. Very nice. Also you can click directly on the mailto link without any problems or need to got to File -> Send Link.
I use this program and it has to be run via Terminal: xtightvncviewer 192.168.1.7 this is the program to remotley connect to windows. Is there any way to make like an executable bin bash or soemthing so that I can click on it and it will do it automatically ?\n\nHow we start it depends on if you need to keep the konsole windows to stay open or not.\n\nyes, it need to be open\n\nCreate a text file, name it anything you want, and put this into it:\n\n''#!/bin/sh\n\nxtightvncviewer 192.168.1.7''\n\nhow did you name it? ''windows''\nok, now we make it executable. Open a konsole, goto the directory where the script lies, and type: chmod 755 windows\n\nNow you can test it. Type: ./windows and observe if everything works as it should.\n\nwhat is the difference between #!/bin/bash and #!/bin/sh ? \n\n/bin/sh is a link to /bin/bash, so it's the same for us. I think /bin/sh is more general, will work anywhere and link to the shell that's in use on the given system.\n\nIf the script is ok, we are not done yet, because I would like to show you something further.\n\n\nIf you want the command 'windows' to be accessible from everywhere, you can put it to /usr/local/bin. This is the location where custom binaries and command scripts should reside, that are not under the government of the package manager.\n\nI just wanted to show you what you can do, if you want to just be able to type 'windows'\n\n\n\n
firefox:\n\n ctrl-k : firefox search field\n\n ctrl-l : firefox address bar\n\n ctrl-pgup : next tab (left to right)\n\n ctrl-pgdn : previous tab (right to left)\n\n ctrl-t : new tab\n\n ctrl-r / f5: reload page\n\n ctrl-u : view page source
We can use "xvkbd" and "xbindkeys" to bind the side mouse buttons to "ALT + LEFT" and "ALT + RIGHT" so they work as forward and backwards in Nautilus.\n\n1. xvkbd and xbindkeys\n\nLets install "xvkbd" and "xbindkeys":\n\nCode:\n\nsudo apt-get install xvkbd xbindkeys\n\nNext we need to create the configuration for them:\n\nCode:\n\ngedit ~/.xbindkeysrc\n\nNow paste the following (for MX500, MX510, MX518, MX700):\n\nCode:\n\n'' "/usr/bin/xvkbd -xsendevent -text "\s[Alt_L]\s[Left]""\n m:0x0 + b:6\n"/usr/bin/xvkbd -xsendevent -text "\s[Alt_L]\s[Right]""\n m:0x0 + b:7 ''\n\nFor mice with a tilt wheel (such as the MX1000), you would most likely change b:6 to b:8 and b:7 to b:9.\n\nMake sure you keep the quote marks, save the file and run "xbindkeys" in the terminal. It runs as a daemon in the background. You should now be able to test if it works in Nautilus by using the side buttons it also works in Epiphany if you use it.\n\nNote: Same as before, if you have different mouse buttons use xev to find out what number they are and change the "b:6" and "b:7" in the above to the correct numbers.\n\n\n*Adding it to your session\n\n Now it's working open up the gnome sessions settings "System > Preferences > Sessions" click on the "Startup Programs" tab, click "Add" and enter "xbindkeys". This makes sure it's run each time you log in, you should probably test it by logging out and back in now. If you aren't running GNOME, you will need to do it another way, e.g. in XFCE, go to Xfce Menu -> Settings -> Autostarted Applications.\n\n In KDE (Thanks to msak007), you create a startup script:\n Code:\n\n kedit ~/.kde/Autostart/start-xbindkeys\n\n Insert this into it:\n Code:\n\n #!/bin/sh xbindkeys\n\n Make it executable:\n Code:\n\n chmod +x ~/.kde/Autostart/start-xbindkeys\n\n
Everything about Linux
My Linux Wiki
[[MptwStyleSheet]]\n
Symbolic links if you have used windows is way of making short cuts in linux , now using a symbolic link you can refer to any file or directory by another file name in different directory .\nTo create symbolic links : -\nln -s [Path of script , folder file] [path where to create shortcut/name of shortcut]\n\nexample : to create symbolic link of folder /windows type ln -s /windows /home/amXXX/win\nCreates link of folder /windows at /home/amXXX with name win.\n\n\n7. Creating Directories and subdirectories quickly\n\nDirectories and sub-directories can be created quickly with a single statement saving some of your time. For example if you want to create the following directory structure\n\nTemp -> a ->(b -> c) , d->(e->f->g),h,i,j\n\nyou can do this with the following commands\n\nmkdir temp\ncd a\nmkdir b\nmkdir c\n........ (and so on)\n\nor you can reduce the number of commands typed by using a statement like this : -\n\nmkdir -p Temp/{a/b/c,d/e/f/g,h,i,j}\n\nThis would create all the directories in single line without you having to type a lot of mkdir and chdir.\n
The packages you need are:\nkitchensync-opensync, libopensync-plugin-kdepim, libopensync-plugin-syncml, libqopensync0, msynctool, opensyncutils.\n\nAlso make sure you have a functioning bluetooth stack (although I think it can work over usb/serial instead).\n\nNow when you start Kitchensync, it will be based on an OpenSync backend. I still find it is less error prone to use the command line tool however (msynctool).\n\nPoke around the OpenSync website for instructions (http://www.opensync.org/) and see how you go. \n\n\n\nExample of my syncml-obex-client config using multisync-gui program:\n\n{{{<config> <username></username> <password></password> <type>2</type> <bluetooth_address>00:19:69:DD:FF:4C</bluetooth_address> <bluetooth_channel>10</bluetooth_channel> <interface>0</interface> <version>1</version> <identifier>PC Suite</identifier> <wbxml>1</wbxml> <recvLimit>0</recvLimit> <maxObjSize>0</maxObjSize> <usestringtable>0</usestringtable> <onlyreplace>0</onlyreplace> <contact_db>Contacts</contact_db> <calendar_db>Calendar</calendar_db> <note_db>Notes</note_db> </config>}}}\n\n\nTo find out what channel you need, use this sdptool browse 00:19:78:DD:FF:4B <-- your phone ID \n\nUsing this command I sync:\n\n{{{msynctool --sync test --filter-objtype todo --filter-objtype event --filter-objtype note --slow-sync contact}}}
/***\n| Name|TagglyTaggingPlugin|\n| Description|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|\n| Version|3.0 ($Rev: 2101 $)|\n| Date|$Date: 2007-04-20 00:24:20 +1000 (Fri, 20 Apr 2007) $|\n| Source|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n!Notes\nSee http://mptw.tiddlyspot.com/#TagglyTagging\n***/\n//{{{\nconfig.taggly = {\n\n // for translations\n lingo: {\n labels: {\n asc: "\su2191", // down arrow\n desc: "\su2193", // up arrow\n title: "title",\n modified: "modified",\n created: "created",\n show: "+",\n hide: "-",\n normal: "normal",\n group: "group",\n commas: "commas",\n sitemap: "sitemap",\n numCols: "cols\su00b1", // plus minus sign\n label: "Tagged as '%0':",\n excerpts: "excerpts",\n noexcerpts: "no excerpts"\n },\n\n tooltips: {\n title: "Click to sort by title",\n modified: "Click to sort by modified date",\n created: "Click to sort by created date",\n show: "Click to show tagging list",\n hide: "Click to hide tagging list",\n normal: "Click to show a normal ungrouped list",\n group: "Click to show list grouped by tag",\n sitemap: "Click to show a sitemap style list",\n commas: "Click to show a comma separated list",\n numCols: "Click to change number of columns"\n }\n },\n\n config: {\n showTaggingCounts: true,\n listOpts: {\n // the first one will be the default\n sortBy: ["title","modified","created"],\n sortOrder: ["asc","desc"],\n hideState: ["show","hide"],\n listMode: ["normal","group","sitemap","commas"],\n numCols: ["1","2","3","4","5","6"],\n excerpts: ["noexcerpts","excerpts"]\n },\n valuePrefix: "taggly.",\n excludeTags: ["excludeLists","excludeTagging"],\n excerptSize: 50,\n excerptMarker: "/%"+"%/"\n },\n\n getTagglyOpt: function(title,opt) {\n var val = store.getValue(title,this.config.valuePrefix+opt);\n return val ? val : this.config.listOpts[opt][0];\n },\n\n setTagglyOpt: function(title,opt,value) {\n if (!store.tiddlerExists(title))\n // create it silently\n store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),null);\n // if value is default then remove it to save space\n return store.setValue(title,\n this.config.valuePrefix+opt,\n value == this.config.listOpts[opt][0] ? null : value);\n },\n\n getNextValue: function(title,opt) {\n var current = this.getTagglyOpt(title,opt);\n var pos = this.config.listOpts[opt].indexOf(current);\n // a little usability enhancement. actually it doesn't work right for grouped or sitemap\n var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);\n var newPos = (pos + 1) % limit;\n return this.config.listOpts[opt][newPos];\n },\n\n toggleTagglyOpt: function(title,opt) {\n var newVal = this.getNextValue(title,opt);\n this.setTagglyOpt(title,opt,newVal);\n }, \n\n createListControl: function(place,title,type) {\n var lingo = config.taggly.lingo;\n var label;\n var tooltip;\n var onclick;\n\n if ((type == "title" || type == "modified" || type == "created")) {\n // "special" controls. a little tricky. derived from sortOrder and sortBy\n label = lingo.labels[type];\n tooltip = lingo.tooltips[type];\n\n if (this.getTagglyOpt(title,"sortBy") == type) {\n label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];\n onclick = function() {\n config.taggly.toggleTagglyOpt(title,"sortOrder");\n return false;\n }\n }\n else {\n onclick = function() {\n config.taggly.setTagglyOpt(title,"sortBy",type);\n config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);\n return false;\n }\n }\n }\n else {\n // "regular" controls, nice and simple\n label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];\n tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];\n onclick = function() {\n config.taggly.toggleTagglyOpt(title,type);\n return false;\n }\n }\n\n // hide button because commas don't have columns\n if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))\n createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");\n },\n\n makeColumns: function(orig,numCols) {\n var listSize = orig.length;\n var colSize = listSize/numCols;\n var remainder = listSize % numCols;\n\n var upperColsize = colSize;\n var lowerColsize = colSize;\n\n if (colSize != Math.floor(colSize)) {\n // it's not an exact fit so..\n upperColsize = Math.floor(colSize) + 1;\n lowerColsize = Math.floor(colSize);\n }\n\n var output = [];\n var c = 0;\n for (var j=0;j<numCols;j++) {\n var singleCol = [];\n var thisSize = j < remainder ? upperColsize : lowerColsize;\n for (var i=0;i<thisSize;i++) \n singleCol.push(orig[c++]);\n output.push(singleCol);\n }\n\n return output;\n },\n\n drawTable: function(place,columns,theClass) {\n var newTable = createTiddlyElement(place,"table",null,theClass);\n var newTbody = createTiddlyElement(newTable,"tbody");\n var newTr = createTiddlyElement(newTbody,"tr");\n for (var j=0;j<columns.length;j++) {\n var colOutput = "";\n for (var i=0;i<columns[j].length;i++) \n colOutput += columns[j][i];\n var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class\n wikify(colOutput,newTd);\n }\n return newTable;\n },\n\n createTagglyList: function(place,title) {\n switch(this.getTagglyOpt(title,"listMode")) {\n case "group": return this.createTagglyListGrouped(place,title); break;\n case "normal": return this.createTagglyListNormal(place,title,false); break;\n case "commas": return this.createTagglyListNormal(place,title,true); break;\n case "sitemap":return this.createTagglyListSiteMap(place,title); break;\n }\n },\n\n getTaggingCount: function(title) {\n // thanks to Doug Edmunds\n if (this.config.showTaggingCounts) {\n var tagCount = store.getTaggedTiddlers(title).length;\n if (tagCount > 0)\n return " ("+tagCount+")";\n }\n return "";\n },\n\n getExcerpt: function(inTiddlerTitle,title) {\n if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "excerpts") {\n var t = store.getTiddler(title);\n if (t) {\n var text = t.text.replace(/\sn/," ");\n var marker = text.indexOf(this.config.excerptMarker);\n if (marker != -1) {\n return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";\n }\n else if (text.length < this.config.excerptSize) {\n return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";\n }\n else {\n return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";\n }\n }\n }\n return "";\n },\n\n notHidden: function(t,inTiddler) {\n if (typeof t == "string") \n t = store.getTiddler(t);\n return (!t || !t.tags.containsAny(this.config.excludeTags) ||\n (inTiddler && this.config.excludeTags.contains(inTiddler)));\n },\n\n // this is for normal and commas mode\n createTagglyListNormal: function(place,title,useCommas) {\n\n var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));\n\n if (this.getTagglyOpt(title,"sortOrder") == "desc")\n list = list.reverse();\n\n var output = [];\n var first = true;\n for (var i=0;i<list.length;i++) {\n if (this.notHidden(list[i],title)) {\n var countString = this.getTaggingCount(list[i].title);\n var excerpt = this.getExcerpt(title,list[i].title);\n if (useCommas)\n output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);\n else\n output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\sn");\n\n first = false;\n }\n }\n\n return this.drawTable(place,\n this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),\n useCommas ? "commas" : "normal");\n },\n\n // this is for the "grouped" mode\n createTagglyListGrouped: function(place,title) {\n var sortBy = this.getTagglyOpt(title,"sortBy");\n var sortOrder = this.getTagglyOpt(title,"sortOrder");\n\n var list = store.getTaggedTiddlers(title,sortBy);\n\n if (sortOrder == "desc")\n list = list.reverse();\n\n var leftOvers = []\n for (var i=0;i<list.length;i++)\n leftOvers.push(list[i].title);\n\n var allTagsHolder = {};\n for (var i=0;i<list.length;i++) {\n for (var j=0;j<list[i].tags.length;j++) {\n\n if (list[i].tags[j] != title) { // not this tiddler\n\n if (this.notHidden(list[i].tags[j],title)) {\n\n if (!allTagsHolder[list[i].tags[j]])\n allTagsHolder[list[i].tags[j]] = "";\n\n if (this.notHidden(list[i],title)) {\n allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"\n + this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\sn";\n\n leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers\n\n }\n }\n }\n }\n }\n\n var allTags = [];\n for (var t in allTagsHolder)\n allTags.push(t);\n\n var sortHelper = function(a,b) {\n if (a == b) return 0;\n if (a < b) return -1;\n return 1;\n };\n\n allTags.sort(function(a,b) {\n var tidA = store.getTiddler(a);\n var tidB = store.getTiddler(b);\n if (sortBy == "title") return sortHelper(a,b);\n else if (!tidA && !tidB) return 0;\n else if (!tidA) return -1;\n else if (!tidB) return +1;\n else return sortHelper(tidA[sortBy],tidB[sortBy]);\n });\n\n var leftOverOutput = "";\n for (var i=0;i<leftOvers.length;i++)\n if (this.notHidden(leftOvers[i],title))\n leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\sn";\n\n var output = [];\n\n if (sortOrder == "desc")\n allTags.reverse();\n else if (leftOverOutput != "")\n // leftovers first...\n output.push(leftOverOutput);\n\n for (var i=0;i<allTags.length;i++)\n if (allTagsHolder[allTags[i]] != "")\n output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\sn" + allTagsHolder[allTags[i]]);\n\n if (sortOrder == "desc" && leftOverOutput != "")\n // leftovers last...\n output.push(leftOverOutput);\n\n return this.drawTable(place,\n this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),\n "grouped");\n\n },\n\n // used to build site map\n treeTraverse: function(title,depth,sortBy,sortOrder) {\n\n var list = store.getTaggedTiddlers(title,sortBy);\n if (sortOrder == "desc")\n list.reverse();\n\n var indent = "";\n for (var j=0;j<depth;j++)\n indent += "*"\n\n var childOutput = "";\n for (var i=0;i<list.length;i++)\n if (list[i].title != title)\n if (this.notHidden(list[i].title,this.config.inTiddler))\n childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);\n\n if (depth == 0)\n return childOutput;\n else\n return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title) + "\sn" + childOutput;\n },\n\n // this if for the site map mode\n createTagglyListSiteMap: function(place,title) {\n this.config.inTiddler = title; // nasty. should pass it in to traverse probably\n var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));\n return this.drawTable(place,\n this.makeColumns(output.split(/(?=^\s*\s[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic\n "sitemap"\n );\n },\n\n macros: {\n tagglyTagging: {\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n var refreshContainer = createTiddlyElement(place,"div");\n // do some refresh magic to make it keep the list fresh - thanks Saq\n refreshContainer.setAttribute("refresh","macro");\n refreshContainer.setAttribute("macroName",macroName);\n refreshContainer.setAttribute("title",tiddler.title);\n this.refresh(refreshContainer);\n },\n\n refresh: function(place) {\n var title = place.getAttribute("title");\n removeChildren(place);\n if (store.getTaggedTiddlers(title).length > 0) {\n var lingo = config.taggly.lingo;\n config.taggly.createListControl(place,title,"hideState");\n if (config.taggly.getTagglyOpt(title,"hideState") == "show") {\n createTiddlyElement(place,"span",null,"tagglyLabel",lingo.labels.label.format([title]));\n config.taggly.createListControl(place,title,"title");\n config.taggly.createListControl(place,title,"modified");\n config.taggly.createListControl(place,title,"created");\n config.taggly.createListControl(place,title,"listMode");\n config.taggly.createListControl(place,title,"excerpts");\n config.taggly.createListControl(place,title,"numCols");\n config.taggly.createTagglyList(place,title);\n }\n }\n }\n }\n },\n\n // todo fix these up a bit\n styles: [\n"/*{{{*/",\n"/* created by TagglyTaggingPlugin */",\n".tagglyTagging { padding-top:0.5em; }",\n".tagglyTagging li.listTitle { display:none; }",\n".tagglyTagging ul {",\n" margin-top:0px; padding-top:0.5em; padding-left:2em;",\n" margin-bottom:0px; padding-bottom:0px;",\n"}",\n".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",\n".tagglyTagging table { margin:0px; padding:0px; }",\n".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",\n".tagglyTagging .button, .tagglyTagging .hidebutton {",\n" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",\n" border:0px; padding-left:0.3em;padding-right:0.3em;",\n"}",\n".tagglyTagging .button:hover, .hidebutton:hover, ",\n".tagglyTagging .button:active, .hidebutton:active {",\n" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",\n"}",\n".selected .tagglyTagging .button { visibility:visible; }",\n".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",\n".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",\n".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",\n".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",\n".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",\n".tagglyTagging ul ul li {margin-left:0.5em; }",\n".editLabel { font-size:90%; padding-top:0.5em; }",\n".tagglyTagging .commas { padding-left:1.8em; }",\n"/* not technically tagglytagging but will put them here anyway */",\n".tagglyTagged li.listTitle { display:none; }",\n".tagglyTagged li { display: inline; font-size:90%; }",\n".tagglyTagged ul { margin:0px; padding:0px; }",\n".excerpt { color:[[ColorPalette::TertiaryMid]]; }",\n"div.tagglyTagging table,",\n"div.tagglyTagging table tr,",\n"td.tagglyTagging",\n" {border-style:none!important; }",\n"/*}}}*/",\n ""].join("\sn"),\n\n init: function() {\n merge(config.macros,this.macros);\n config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;\n store.addNotification("TagglyTaggingStyles",refreshStyles);\n }\n};\n\nconfig.taggly.init();\n\n//}}}\n\n
nano ?.....text editor\npico ?.....text editor\ncat ?.....file viewer\nless ?.....file viewer able to move up and down best for larger files\n\nInstall tweaks\nK3b mp3 support install “k3b-mp3” thru adept
/***\n| Name|ToggleTagPlugin|\n| Description|Makes a checkbox which toggles a tag in a tiddler|\n| Version|3.0 ($Rev: 1845 $)|\n| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|\n| Source|http://tiddlyspot.com/mptw/#ToggleTagMacro|\n| Author|Simon Baird <simon.baird@gmail.com>|\n| License|http://mptw.tiddlyspot.com/#TheBSDLicense|\n!Usage\n{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}\n* TagName - the tag to be toggled, default value "checked"\n* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler\n* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'\n(If a parameter is '.' then the default will be used)\n\nExamples:\n\n|Code|Description|Example|h\n|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|\n|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|\n|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|\n|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|\n|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|\nNotes:\n* If TiddlerName doesn't exist it will be silently created\n* Set label to '-' to specify no label\n* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2\n\n!Known issues\n* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing\n\n***/\n//{{{\n\nmerge(config.macros,{\n\n toggleTag: {\n\n doRefreshAll: true,\n createIfRequired: true,\n shortLabel: "[[%0]]",\n longLabel: "[[%0]] [[%1]]",\n\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n var tag = (params[0] && params[0] != '.') ? params[0] : "checked";\n var title = (params[1] && params[1] != '.') ? params[1] : tiddler.title;\n var defaultLabel = (title == tiddler.title ? this.shortLabel : this.longLabel);\n var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;\n label = (label == '-' ? '' : label);\n var theTiddler = title == tiddler.title ? tiddler : store.getTiddler(title);\n var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {\n if (!store.tiddlerExists(title)) {\n if (config.macros.toggleTag.createIfRequired) {\n var content = store.getTiddlerText(title); // just in case it's a shadow\n store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);\n }\n else \n return false;\n }\n store.setTiddlerTag(title,this.checked,tag);\n return true;\n });\n }\n }\n});\n\n//}}}\n\n
The following options have to be changed or added in about:config. Those tweaks can of course be achieved through extensions, but by setting them directly you can abandon some extensions and hopefully conserve some memory.\n\nIn order to open a bookmark-folder with mid-click in tabs without overwriting the current tabs change:\n\nbrowser.tabs.loadFolderAndReplace=false\n\nTo remove the close buttons on the tabs (they still can be closed by mid-clicking on them):\n\nbrowser.tabs.closeButtons=2\n\nEnable the spellchecker for inputfields and textareas (default is textareas only):\n\nlayout.spellcheckDefault=2\n\nTo override the useragent string:\n\ngeneral.useragent.override=foobrowser\n\nAnd the last one really made my day: Open lastfm://-links directly in amarok:\n\nnetwork.protocol-handler.app.lastfm=amarok\nnetwork.protocol-handler.external.lastfm=true\n\nBTW: Shouldn’t firef*cough* iceweasel open the composer of your mailclient when clicking on mailto-links?
user rights adm, admin, audio, cdrom, dialout, dip, floppy, lpadmin, plugdev, scanner, video
sudo apt-get update\n\nsudo apt-get upgrade\n\nsudo aptitude dist-upgrade or sudo apt-get dist-upgrad\n\nYou use apt-cache to search for packages, dpkg -S to search for files in the packages.\n\nsudo apt-get update && apt-get upgrade
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 13/2/2007 12:24:17 | Ivan | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 13/2/2007 12:29:42 | Ivan | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/2/2007 11:2:39 | Ivan | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 15/2/2007 10:55:31 | Ivan | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 22/2/2007 21:29:49 | YourName | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/2/2007 21:44:3 | YourName | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html#ShellScripting]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/2/2007 21:48:56 | YourName | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html#ShellScripting]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/3/2007 0:44:23 | Ivan | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html#%5B%5BSync%20with%20Mobile%5D%5D]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/3/2007 0:46:14 | Ivan | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html#%5B%5BSync%20with%20Mobile%5D%5D]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 3/3/2007 10:6:10 | SlyFox | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 3/3/2007 10:40:31 | SlyFox | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/3/2007 21:14:55 | YourName | [[Clean%20Monkey%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/Clean%20Monkey%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 10/3/2007 1:33:30 | Ivan | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/4/2007 11:10:8 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 14/4/2007 11:10:26 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/4/2007 8:17:16 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/4/2007 8:22:6 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/5/2007 9:40:30 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 5/6/2007 11:51:9 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 19/6/2007 13:20:29 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 27/6/2007 16:24:21 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/9/2007 20:48:57 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 17/9/2007 20:49:9 | YourName | [[My%20Linux%20Wiki.html|file:///home/slyfox/Documents/Wiki/Linux/My%20Linux%20Wiki.html]] | [[store.cgi|http://slyfox.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***\n|''Name:''|UploadPlugin|\n|''Description:''|Save to web a TiddlyWiki|\n|''Version:''|3.4.4|\n|''Date:''|Sep 30, 2006|\n|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|\n|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|\n|''Author:''|BidiX (BidiX (at) bidix (dot) info)|\n|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|\n|''~CoreVersion:''|2.0.0|\n|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|\n|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|\n|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 4, revision: 4, \n date: new Date(2006,8,30),\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',\n author: 'BidiX (BidiX (at) bidix (dot) info',\n license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',\n coreVersion: '2.0.0',\n browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 1}, \n date: new Date(2006,8,19)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) \n {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.className = "txtOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "pasOptionInput "+opt;\n place.appendChild(c);\n c.value = config.options[opt];\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n c.className = "chkOptionInput "+opt;\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n backupFileStored: "Previous file backuped in %0",\n crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileLocked: "Files is locked: You are not allowed to Upload",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n passwordEmpty: "Unable to upload, your password is empty",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.toRootUrl = function (storeUrl, username)\n{\n return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));\n}\nconfig.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)\n{\n var root = this.toRootUrl(storeUrl, username);\n if (uploadDir && uploadDir != '.')\n root = root + '/' + uploadDir;\n return root;\n}\nconfig.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)\n{\n return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;\n}\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n if (!password || password === '') {\n alert(config.macros.upload.messages.passwordEmpty);\n return;\n }\n if (storeUrl === '') {\n storeUrl = config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n // Check that file is not locked\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {\n alert(config.macros.upload.messages.fileLocked);\n return;\n }\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);\n displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [toFileUrl]), toFileUrl);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n if (responseText.indexOf("destfile:") > 0) {\n var destfile = responseText.substring(responseText.indexOf("destfile:")+9, \n responseText.indexOf("\sn", responseText.indexOf("destfile:")));\n toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;\n }\n else {\n toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [toFileUrl]), toFileUrl);\n if (backupDir && responseText.indexOf("backupfile:") > 0) {\n var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11, \n responseText.indexOf("\sn", responseText.indexOf("backupfile:")));\n toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;\n displayMessage(config.macros.upload.messages.backupFileStored.format(\n [toBackupUrl]), toBackupUrl);\n }\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n // erase local lock\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n BidiX.GroupAuthoring.lock.eraseLock();\n // change mtime with new mtime after upload\n var mtime = responseText.substr(responseText.indexOf("mtime:")+6);\n BidiX.GroupAuthoring.lock.mtime = mtime;\n }\n \n \n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) {}\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir;\n // add lock attributes to sheader\n if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {\n var l = BidiX.GroupAuthoring.lock.myLock;\n sheader += ";lockuser=" + l.user\n + ";mtime=" + l.mtime\n + ";locktime=" + l.locktime;\n }\n sheader += ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n //strailer = "--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n try {\n request.open("POST", storeUrl, true); \n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent + "\snStatus: "+request.status.statusText);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n try {\n request.open("GET", document.location.toString(), true);\n }\n catch(e) {\n alert(config.macros.upload.messages.crossDomain + "\snError:" +e);\n exit;\n }\n \n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]) + "\snStatus: "+request.status.statusText);\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nsetStylesheet(\n ".pasOptionInput {width: 11em;}\sn"+\n ".txtOptionInput.txtUploadStoreUrl {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadFilename {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadDir {width: 25em;}\sn"+\n ".txtOptionInput.txtUploadBackupDir {width: 25em;}\sn"+\n "",\n "UploadOptionsStyles");\nconfig.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\sn"; \nconfig.options.chkAutoSave = false; saveOptionCookie('chkAutoSave');\n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n};\n\n//}}}\n////===\n
Fedora Core 6: Controlling Logins By Time\nFiled under: Fedora Core 6, Linux — Scott Kindley @ 8:11 am\n\nI have a solution for anyone needing to control when a user can login to Linux machine based on time and day of the week. In this excercise I’ll illustrate how this can be done using PAM (Pluggable Authentication Modules). I’ll also take my solution one step further and explain how to automatically log the user off at a predetermined time.\n\nThis idea came to me when I was looking for a solution to limit the time my teenage kids spend on their Linux desktop computers in their rooms. In my example I will be using Fedora Core 6 as the desktop OS, but any PAM’able Linux distro should work.\n\nBasic Restriction Example\n\nThe user we will use in this excercise is “jordan”.\n\nAs root edit /etc/security/time.conf and add\n\nlogin|gdm;*;jordan;Al0800-1800\n\nto the end of the file.\n\nThis line specifies that the console login and the graphical login are the affected services for the user named jordan on any tty on every day of the week from 8am until 6pm. There are other options for days of the week including excluding certain days while allowing others. You can read up on those option by reading the man time.conf manpage.\n\nNext edit the /etc/pam.d/gdm file and add\n\naccount required pam_time.so\n\njust below the auth entries.\n\nNow edit /etc/pam.d/login file and add\n\naccount required pam_time.so\n\njust below the auth entries there as well.\n\nThats it! Now the user “jordan” will only be able to login between 8AM and 6PM 7 days a week.\n\nForced Logoff\n\nIf user jordan is logged in when 6PM comes around nothing will happen until she logs out. After she logs out she will not be permitted to log back in as per our PAM entries.\n\nTo setup a simple automatic logout procedure I will use a basic cron entry to force the logoff at a predetermined time. I will give a 15 minute “grace” period past the 6PM restriction.\n\nAs root I’ll enter crontab -e and edit the file to contain this line:\n\n15 18 * * * /usr/bin/skill -KILL -u jordan\n\nNow every day at 6:15PM the user “jordan” will be logged off forcefully without warning.\n\nMake sure to restart the cron dameon with service crond restart after each cron change.\n\nAdvanced Example\n\nLets make our time restrictions a little more realistic for my teenager and and give a popup warning dialog box that computer time is over 15 minutes prior to a forced logoff event.\n\nAs root edit /etc/security/time.conf and change the entry as such:\n\nlogin|gdm;*;jordan;Wk1630-2000 | Wd0800-2230&!1200-1500\n\nThis means user “jordan” can login weekdays 4:30PM to 8PM and on weekends from 8AM till 10:30PM except between the hours of Noon and 3PM.\n\nTo make the forced logoff events happen as planned we need to put the commands for the logoffs into root’s crontab. As root issue crontab -e and place the following entries in root’s crontab replacing the earlier example we used.\n\n15 12 * * 6-7 /usr/bin/skill -KILL -u jordan\n45 22 * * 6-7 /usr/bin/skill -KILL -u jordan\n15 20 * * 1-5 /usr/bin/skill -KILL -u jordan\n\nThe first line is a forced logoff event for jordan at 12:15PM on Saturdays and Sundays.\nThe second line is a forced logoff event for jordan at 10:45PM on Saturdays and Sundays.\nThe third line is a forced logoff event for jordan at 8:15PM Monday through Friday.\n\nNow to give a warning dialog popup 15 minutes before forced logoff happens create a file as root nano /etc/jordan_zanity and place in it the warning text you desire. Save and close the file.\n\nNext we’ll enter a couple more cron jobs to have to popups execute 15 minutes prior to a forced logoff. As root enter crontab -u jordan -e and edit the users crontab entry. It has to be the users crontab that will be receiving the popups.\n\nWe will need to add three lines to “jordans” crontab (each entry is one long line):\n\n45 11 * * 6-7 /usr/bin/zenity –text-info –title=’Times Up’ –width=474 –height=400 –display=:0 –filename=/etc/jordan_zanity &\n\n15 22 * * 6-7 /usr/bin/zenity –text-info –title=’Times Up’ –width=474 –height=400 –display=:0 –filename=/etc/jordan_zanity &\n\n45 19 * * 1-5 /usr/bin/zenity –text-info –title=’Times Up’ –width=474 –height=400 –display=:0 –filename=/etc/jordan_zanity &\n\nThe first entry pops up the warning on Saturdays and Sundays at 11:45 AM, 15 minutes before the Noon forced logoff event that will take place at 12:15PM.\n\nThe second entry pops up the warning on Saturdays and Sundays at 10:15PM, 15 minutes before the 10:30PM forced logoff event that will occur at 22:45PM.\n\nThe last entry pops up the warning Monday through Friday at 7:45PM, 15 minutes before the 8PM forced logoff event that will occur at 8:15PM.\n\nMake sure to restart the cron dameon with service crond restart after each cron change.\n\nConclusion\n\nThis method of restricting and controlling time spent on a Linux desktop machine running Fedora Core 6 seems to work well for my home lan. Even though the process to set this up is a bit time consuming it is well worth the piece of mind knowing that my teenagers are not online behind the closed door of their bedroom at 3AM.\n\nI truely hope this helps other parents restrict and manage how much time their children spend on their Linux computers. I am very interested in hearing back from anyone who implements this solution.\n\nEnjoy!\nScott\n\n[[Source|http://skindley.wordpress.com/2006/12/11/fedora-core-6-controlling-logins-by-time/]]
To see which X or XGl you are running:\n\nconsoel command: ps auwwx |Grep
[[MptwViewTemplate]]
HOWTO: Wireless Security - WPA1, WPA2, LEAP, etc.\nSince it appears that very few people take wireless security seriously, I'd like to come up with my first howto and explain how I was able to configure a secure home network using WPA2, the latest encryption & authentication standard. There are also other types of configuration (WPA1, mixed mode, LEAP, PEAP, DHCP, etc.) shown in the appendix. Feedback is much appreciated.\n\nANNOUNCEMENTS:\n1. User SquibT is kindly supporting me in maintaining this thread. My personal thanks to him.\n2. This also works for a number of other wireless adapters & chipsets that do not make use of "ndiswrapper". See section further below for more details.\n3. Thanks to user Usererror for testing & validating the configuration for EAP-LEAP.\n4. Thanks to user Mjbruder for testing & validating the configuration for EAP-PEAP.\n\nCommon stumbling blocks - Make sure that:\n1. Ethernet cable is unplugged.\n2. No firewall & configuration tool is running (e.g. Firestarter).\n3. MAC filtering is disabled.\n4. NetworkManager, Wifi-Radar & similar wireless configuration tools are disabled/not installed.\n\nMy Requirements:\n1. WPA2 / RSN\n2. AES / CCMP\n3. Hidden ESSID (no broadcast)\n4. Static IP (because I use port forwarding & firewall, etc.)\n5. Pre-shared key (no EAP)\n\nIf you want to know more about WPA / RSN & 802.11i security specification, I recommend this site.\n\nNow let's get started:\n0. Install "wpa-supplicant":\nQuote:\nsudo apt-get install wpasupplicant\n1. Verify that your network device ("wlan0"?) is working & your wireless network is detected:\nQuote:\niwconfig\nQuote:\niwlist scan\nYour network device & wireless network should appear here.\n\n2. Open "/etc/network/interfaces":\nQuote:\nsudo gedit /etc/network/interfaces\nThe content should look similar to this:\nQuote:\nauto lo\niface lo inet loopback\n\nauto wlan0\niface wlan0 inet dhcp\n3. Now replace the last 2 lines with the following using your own network settings (the sequence in which the lines appear is crucial):\nQuote:\nauto wlan0\niface wlan0 inet static\naddress 192.168.168.40\nnetmask 255.255.255.0\nnetwork 192.168.168.0\nbroadcast 192.168.168.255\ngateway 192.168.168.230\ndns-nameservers 192.168.168.230\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 2\nwpa-proto RSN\nwpa-pairwise CCMP\nwpa-group CCMP\nwpa-key-mgmt WPA-PSK\nwpa-psk <your_hex_key> [IMPORTANT: See "WPA-PSK key generation"]\n\n * auto wlan0:\n Your network interface (e.g. wlan0, eth1, rausb0, ra0, etc.).\n\n * iface wlan0 inet static:\n Self-explanatory... I am using a Static IP instead of DHCP. "iface wlan0" must correspond to your network interface (see above).\n\n * address, netmask, [..], dns-nameservers:\n Also self-explanatory... Be aware that "broadcast" needs to end with ".255" for negotiation with the router. These lines need to be according to your own (static) network settings. For DHCP see further below.\n\n * wpa-driver:\n That's the wpa-driver for your card ('wext' is a generic driver that is applicable when using "ndiswrapper"). Leave it as it is. Other drivers are:\n Quote:\n hostap = Host AP driver (Intersil Prism2/2.5/3)\n atmel = ATMEL AT76C5XXx (USB, PCMCIA)\n wext = Linux wireless extensions (generic)\n madwifi = Atheros\n wired = wpa_supplicant wired Ethernet driver\n\n * wpa-conf:\n Leave it as it is ("managed").\n\n * wpa-ssid:\n Your network's ESSID (no quotes "").\n\n * wpa-ap-scan:\n "1" = Broadcast of ESSID.\n "2" = Hidden broadcast of ESSID.\n\n * wpa-proto:\n "RSN" = WPA(2)\n "WPA" = WPA(1)\n\n * wpa-pairwise & wpa-group:\n "CCMP" = AES cipher as part of WPA(2) standard.\n "TKIP" = TKIP cipher as part of WPA(1) standard.\n\n * wpa-key-mgmt:\n "WPA-PSK" = Authentication via pre-shared key (see 'key generation' further below).\n "WPA-EAP" = Authentication via enterprise authentication server.\n\nVERY IMPORTANT:\nAs for WPA-PSK key generation, type the following command in a terminal (' ' single quotes required):\nQuote:\nwpa_passphrase 'your_essid' 'your_ascii_key'\nResulting in an output like...\nQuote:\nnetwork={\nssid="test"\n#psk="12345678"\npsk=fe727aa8b64ac9b3f54c72432da14faed933ea511ecab1 5bbc6c52e7522f709a\n}\nCopy the "hex_key" (next to "psk=...") and replace <your_hex_key> in the "interfaces" files with it. Then save the file and restart your network:\nQuote:\nsudo /etc/init.d/networking restart\nYou should be connecting to your router now... However, I figured that a restart is sometimes necessary so that's what I usually do (I know this sounds a bit clumsy - see post #2 for startup script).\n\n\n*****************************Revoking read-permission from 'others'*********************************\nQuote:\nsudo chmod o=-r /etc/network/interfaces\n*****************************Revoking read-permission from 'others'*********************************\n\n*****************************Sample configuration WPA2 & DHCP, ESSID broadcast enabled***************\nQuote:\nauto wlan0\niface wlan0 inet dhcp\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 1\nwpa-proto RSN\nwpa-pairwise CCMP\nwpa-group CCMP\nwpa-key-mgmt WPA-PSK\nwpa-psk <your_hex_key> [IMPORTANT: See "WPA-PSK key generation"]\n*****************************Sample configuration WPA2 & DHCP, ESSID broadcast enabled***************\n\n*****************************Sample configuration WPA1 & DHCP, ESSID broadcast enabled***************\nQuote:\nauto wlan0\niface wlan0 inet dhcp\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 1\nwpa-proto WPA\nwpa-pairwise TKIP\nwpa-group TKIP\nwpa-key-mgmt WPA-PSK\nwpa-psk <your_hex_key> [IMPORTANT: See "WPA-PSK key generation"]\n*****************************Sample configuration WPA1 & DHCP, ESSID broadcast enabled***************\n\n****************************Sample configuration mixed mode (WPA1, WPA2) & DHCP, ESSID broadcast*****\nQuote:\nauto wlan0\niface wlan0 inet dhcp\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 1\nwpa-proto WPA RSN\nwpa-pairwise TKIP CCMP\nwpa-group TKIP CCMP\nwpa-key-mgmt WPA-PSK\nwpa-psk <your_hex_key> [IMPORTANT: See "WPA-PSK key generation"]\n****************************Sample configuration mixed mode (WPA1, WPA2) & DHCP, ESSID broadcast*****\n\n****************************Sample conf. LEAP, WEP, DHCP, ESSID broadcast***************************\nQuote:\nauto wlan0\niface wlan0 inet dhcp\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 1\nwpa-eap LEAP\nwpa-key-mgmt IEEE8021X\nwpa-identity <your_user_name>\nwpa-password <your_password>\n****************************Sample conf. LEAP, WEP, DHCP, ESSID broadcast***************************\n\n****************************Sample conf. PEAP, AES, DHCP, ESSID broadcast***************************\nQuote:\nauto wlan0\niface wlan0 inet dhcp\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 1\nwpa-proto RSN\nwpa-pairwise CCMP\nwpa-group CCMP\nwpa-eap PEAP\nwpa-key-mgmt WPA-EAP\nwpa-identity <your_identity>\nwpa-password <your_password>\n****************************Sample conf. PEAP, AES, DHCP, ESSID broadcast***************************\n\n*****************************NOT TESTED: Sample conf. TTLS, WEP, DHCP, ESSID broadcast**************\nQuote:\nauto wlan0\niface wlan0 inet dhcp\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 1\nwpa-eap TTLS\nwpa-key-mgmt IEEE8021X\nwpa-anonymous-identity <anonymous_identity>\nwpa-identity <your_identity>\nwpa-password <your_password>\nwpa-phase2 auth=PAP [Also: CHAP, MSCHAP, MSCHAPV2]\n*****************************NOT TESTED: Sample conf. TTLS, WEP, DHCP, ESSID broadcast**************\n\n*****************************NOT TESTED: Sample conf. EAP-FAST, WPA1/WPA2, DHCP, ESSID broadcast****\nQuote:\nauto wlan0\niface wlan0 inet dhcp\nwpa-driver wext\nwpa-conf managed\nwpa-ssid <your_essid>\nwpa-ap-scan 1\nwpa-proto RSN WPA\nwpa-pairwise CCMP TKIP\nwpa-group CCMP TKIP\nwpa-key-mgmt WPA-EAP\nwpa-eap FAST\nwpa-identity <your_user_name>\nwpa-password <your_password>\nwpa-phase1 fast_provisioning=1\nwpa-pac-file /path/to/eap-pac-file\n*****************************NOT TESTED: Sample conf. EAP-FAST, WPA1/WPA2, DHCP, ESSID broadcast****\n\n*****************************Tested adapters****************************************** *********\nQuote:\n1. Linksys WUSB54G V4 (ndiswrapper; wpa-driver = wext)\n2. Intel IPW2200 (Linux driver; wpa-driver = wext)\n3. Linksys WPC54G (ndiswrapper; wpa-driver = wext)\n4. D-Link WNA-2330 (Linux driver; wpa-driver = madwifi)\n5. Linksys WMP54G V2 (ndiswrapper; wpa-driver = wext)\n6. D-Link WDA-2320 (Linux driver; wpa-driver = madwifi)\n*****************************Tested adapters****************************************** *********\n\n*****************************Post this if you are stumped******************************************\nQuote:\n# uname -a\n# ifconfig -a\n# route -n\n# iwconfig\n# ifconfig\n# lsmod\n# iwlist scan\n# cat /etc/network/interfaces\n# cat /etc/modprobe.d/ndiswrapper\n# cat /etc/resolv.conf\n*****************************Post this if you are stumped******************************************\n\n*****************************Other useful commands****************************************** ***\nQuote:\n# Ubuntu version & kernel >> uname -a\n# Root file access >> alt F2 then 'gksudo nautilus' in cli\n# Get IP Address or Renew >> sudo dhclient wlan0 [or whatever your wl adapter is]\n# Get wireless info >> iwconfig\n# Get AP info >> iwlist scan\n# Get wireless info >> iwlist (lots of options will list)\n# Routes if wlan0 working >> route\n# DNS resolving via eth1 >> cat /etc/resolv.conf\n# List devices/modules >> lspci, lsusb, lshw, lsmod\n# Restart network >> sudo /etc/init.d/networking restart\n# Boot messages >> dmesg\n# Kill NWM >> sudo killall NetworkManager\n# Events from your wl >> iwevent\n# Restart all daemons >> sudo /etc/init.d/dbus restart\n# Restart network >> sudo /etc/init.d/networking restart\n\n\n[[Source|http://www.ubuntuforums.org/showthread.php?t=202834]]
Burning Xbox 360 games in Linux\nMichael Cowan @ http://blog.reloadsystems.net/2007/02/02/burning-xbox-360-games-in-linux/\n\nAfter recently flashing my Xbox 360 DVD drive, I set about burning images using my Fedora Core 6 linux box. There are many guides available on how to burn games (mostly for Windows) but there is so much mystery and superstition surrounding the process, that it is hard to seperate fact from fiction and come up with suitable Linux equivalents. Well, one week and nine very expensive coasters later I have my solution.\n\nYou will need\n\n * Dual layer DVD burner and DVD+R DL media\n * A downloaded image (and ss.bin etc if required)\n * growisofs\n * imgbpatch.jar\n\nThe first hurdle comes when you realise that not all images are created the same way. Most noticable is a rip that is not pre patched with the security sector (ss.bin). It should be noted however, that most images already contain the security sector and this step should be skipped. To merge ss.bin and game.iso into a file called IMAGE.000, the following command can be used:\n\ndd if=/dev/zero of=blank.iso bs=2048 count=129823 && cat blank.iso ss.bin game.iso> IMAGE.000\n\nThis will create an image consisting of 265877504 blank bytes, the security sector and finally the game image. The final size of IMAGE.000 should be 7572881408 bytes.\n\nTo actually burn the image, the iso must be made compatible with growisofs. This is something that CloneCD users do not need to do and is a cause of great confusion for those using other software. Again, many images are already pre prepared and do not require patching but unlike the merge doing so with a pre patched image will not break it. This is carried out using a neat little java app called imgbpatch.jar (catchy, isn't it?). To use it the following command can be used:\n\njava -jar imgbpatch.jar IMAGE.000\n\nNow you have a workable image, the next step is the burn which is carried out using growisofs. There are a lot of threads around that claim only a Pioneer 111D with Verbatim +R media will work, which I have found to be complete hocus pocus. I use both LiteOn? and Samsung drives with Memorex and Mr. DVD media and not had any problems. The burn command is a very neat one and carries out everything you need. The important things are the speed (slow, to increase the chances of a solid burn), the line break (1913760 for 360 games) and the DVD compatability flag (burns DVD+R data as DVD-ROM to increase the media's compatability with non PC hardware). To do all this the following command is used:\n\ngrowisofs -use-the-force-luke=dao -use-the-force-luke=break:1913760 -dvd-compat -speed=2 -Z /dev/dvd=IMAGE.000\n\nOf course /dev/dvd can be replaced with any DVD DL drive and IMAGE.000 with any image filename. Not all DVD burners will support the speed setting but it should still slow things down e.g. on my LiteOn? drive, a setting of 2 results is 4x speed!?! The burn process can take anywhere up to about 40mins.\n\nAnother handy ability is being able to verify the burn. An MD5SUM of the DVD can be calculated using the following command:\n\ndd if=IMAGE.000 bs=2048 count=3697696 | md5sum\n
zip /source/filename NameOfHowYouWantTheZipTobeCalled -e for password\n\n[[Source|http://www.die.net/doc/linux/man/man1/zip.1.html]]
When the TS component is installed, but DISABLED (in most cases) you can enable it (in windows XP):\nRightclick on My Computer -> Properties -> Remote -> Check the 2nd box\n\nhttp://www.governmentsecurity.org/archive/t10869.html\n\nrdesktop -> http://www.hostingtech.com/?m=show&id=870
This is a quick howto on using rdiff-backup (available in official repositories as package rdiff-backup) on Ubuntu. rdiff-backup lets you make backups of your files, and conserves disk space by storing only the differences between new and old files. See the homepage of rdiff-backup here: http://www.nongnu.org/rdiff-backup/\n\nThis howto will show you how to quickly make backups to an external usb disk (rdiff-backup is also capable of making backups over the net, through ssh, but that is not what I do, and I figure that will hold for desktop users.)\n\n1. Install rdiff-backup by running commands:\nCode:\n\nsudo aptitude update sudo aptitude install rdiff-backup\n\n2. Create an rdiff-backup script that will store your options, for ease of use (and for possible automation). My script is as follows:\nCode:\n{{{#!/bin/bash sudo /usr/bin/rdiff-backup --exclude /tmp --exclude /var/log --exclude /mnt --exclude /media --exclude /proc --exclude /sys --exclude /var/cache/apt --exclude /home/dfolkins/.Trash --exclude /data/.Trash-dfolkins --exclude /data/Documents / /media/usbdisk/dfolkins_backup/}}}\n\nLets look at the details of the command. First comes sudo (because i am backing up everything, not just my user files), then comes rdiff-backup itself. Then, we have a bunch of {{{--exclude statements,\n}}} that exclude the directories you don't want to back up. The only one that you really need to exclude is /proc, everything else i just exclude because i don't need it. after that, comes your source dir (just / for me), and your destination dir (/media/usbdisk/dfolkins_backup for me). so it will take everytihng from /, and shove it onto that usbdisk, with the exception of the directories that are excluded.\n\n3. Name the text file something like "rdiff-backup-script.sh", save it somewhere, say in your home directory, and make it executable by running\nCode:\n\nchmod u+x rdiff-backup-script.sh\n\n4. Preparing the usb disk. Usually a new drive (or an old one) will be formatted with fat32. The problem with fat32 is that it has no capability to store permissions, so rdiff-backup may give you errors. If you are just backing up your personal data files, and not the whole system, fat32 may be ok, but for whole-system backups, you need to create an ext3 partition on your disk. If the disk currently has no data on it, you can just resize or delete the fat32 partition, and make an ext3 (using, for example, gparted partition editor, which you can install from the repositories.) If you already have data on your disk that you don't want to lose, then you have to be careful about moving things around (look around on these forums about repartitioning hard drives).\n\nThe next thing to do with the disk is to create a directory that you will use as the target for your backups, and make sure your user can write to it (give it the right permissions).\n\n5. now, just run the command with\nCode:\n\n./rdiff-backup-script.sh\n\nand sit back and wait. The first time around it will take you longer, since it copies everything over. subsequent backups will take much less time, since it only copies the diffs.\n\n[[Source|http://www.ubuntuforums.org/showthread.php?t=210249]]
''Backing Up Personal Files''\nrsync is what I use for backing up personal files. I used to copy and paste files using the file manager, but that would involve taking about an hour to back up all my music and erase all the old copies. rsync gives me the ability to copy over only the files that have been modified or added since the last time I backed up. Now, backups take me only about fifteen seconds a week.\n\nThe most basic way to use rsync is like this (command goes into the terminal):\n''rsync -av /path/to/source/directory /path/to/target/directory''\nFor example, let's say your username is alice and you wanted to back up your home directory to your external hard drive that mounts at /media/usbdrive, you would use the command\n''rsync -av /home/alice /media/usbdrive''\n\nIf rsync doesn't seem sophisticated enough for you, you can type\n''man rsync''\n\n[[Source|http://www.psychocats.net/ubuntu/backup]]\n\n\n[[rsync home page|http://samba.anu.edu.au/ftp/rsync/rsync.html]]
Most often you find Tar and Gzip used in concert to create "gzipped archives" with .tar.gz extensions (or its abbreviated form, .tgz). While you can obviously use the commands separately, tar's -z option feeds the archive through gzip after packing and before unpacking, Thus:\n\n% tar -czvf archive.tar.gz file1 file2 dir/\n\nCreates a gzipped archive, archive.tar.gz.\n\n% tar -xzvf archive.tar.gz \n\n\n*You might try using the good old "tar" utility. Usually tar archives are compressed, but they don't have to be. You'll need to do some research on the various options to make sure that everything is saved and restored the way you expect. (mainly you need the "--same-permissions --same-owner" options when restoring)\n\nTo create a backup: sudo tar cvf /mnt/backup/nas/yyyymmdd-home-backup.tar /home\n(you may want to leave off the 'v' verbose option, unless you like watching the filenames scroll by )\n\nTo restore a backup: sudo tar xvf /mnt/backup/nas/yyyymmdd-home-backup.tar -C /\n(again, you can leave off the 'v' if you like)
| tiddlyspot password:|<<option pasUploadPassword>>|\n| site management:|<<upload http://slyfox.tiddlyspot.com/store.cgi index.html . . slyfox>>//(requires tiddlyspot password)//<<br>>[[control panel|http://slyfox.tiddlyspot.com/controlpanel]], [[download (go offline)|http://slyfox.tiddlyspot.com/download]]|\n| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|